/* ============== Includes ============== */ # include /* ============ Definitions ============= */ # define HELP_SCREEN_SIZE 20 # define MAX_HELP_LINES 9 # define MAX_FLAG_VALUE 0x1000 typedef enum { False=0, True=1 } BOOLEAN; /* ======== Function Prototypes ========= */ void PrintHelpScreen(void); /* ============== Functions ============= */ void PrintHelpScreen(void) { int line; char *HelpScreen[MAX_HELP_LINES] = { "---------------------------------------------", "QFdecode Decodes UVI KPGS quality flag values", "", "Usage: QFdecode flag" , "", "Params: flag -> Quality Flag from UVI KPGS", "", "Examples: QFdecode 835", "---------------------------------------------" }; for (line=0; line < MAX_HELP_LINES; ) { printf("%s\n", HelpScreen[line++]); if ( !(line % HELP_SCREEN_SIZE) ) { printf("Press ENTER to continue: "); getchar(); } } } /* PrintHelpScreen */ int main( int argc, char *argv[] ) { int i; int QFcode=-1; /* check for input arguments */ if(argc < 2) { PrintHelpScreen(); exit(1); } sscanf(argv[1],"%d", &QFcode); printf("\nQuality Flag: %d\n\n",QFcode); if(QFcode == 0) { printf("No quality conditions are flagged.\n"); } else { printf("The following quality conditions are flagged:\n\n"); if((QFcode & 0x01) != 0) printf("QF_SFDU_ERROR: \n"); if((QFcode & 0x02) != 0) printf("QF_TIME_OUT_OF_BOUNDS: \n"); if((QFcode & 0x04) != 0) printf("QF_MINOR_FILL: \n"); if((QFcode & 0x08) != 0) printf("QF_MINOR_SYNC: \n"); if((QFcode & 0x10) != 0) printf("QF_UNK_INTEGRATION: \n"); if((QFcode & 0x20) != 0) printf("QF_DSP_MOTION: \n"); if((QFcode & 0x40) != 0) printf("QF_POINTING: \n"); if((QFcode & 0x80) != 0) printf("QF_BAD_TIME: \n"); if((QFcode & 0x100) != 0) printf("QF_BAD_STAR: \n"); if((QFcode & 0x200) != 0) printf("QF_LZ_GAP: \n"); if((QFcode & 0x400) != 0) printf("QF_CALIBRATION:\n"); if((QFcode & 0x800) != 0) printf("QF_MISSING_BKG_IMAGE: \n"); if((QFcode & 0x1000) != 0) printf("QF_MISSING_KP_IMAGE: \n"); if(QFcode > MAX_FLAG_VALUE) printf("UNKNOWN ERROR: \n"); } printf("\n"); } /* main */