// ****************************************************************** // ***** BepiColombo MMO: CCSDS Binary File Read (1st EIC/MIC test) // ***** stdin: TLM Binary data // ***** stdout: TLM ASCII data // ***** Ver.1.0 2011.8.19 Y. Kasaba // ****************************************************************** #include #include #include // ***************** MAIN ******************* int main( int argc, char **argv ) { int i; int i_linkout = 0; int i_numData = 0; int i_PacSize = 0; int i_APID1, i_APID2; unsigned char uc_dat[0x2000]; // ***APID*** // ----------------------------------------------------------- if ( argc != 3 ) { fprintf(stderr, "[usage] ql_dump_fm (APID1) (APID2)¥n"); fprintf(stderr, "¥tinput: stdin¥n"); fprintf(stderr, "¥toutput: stdout¥n"); exit(0); } i_APID1 = strtol(argv[1], NULL, 16); i_APID2 = strtol(argv[2], NULL, 16); printf( "[APID] %02X%02X¥n", i_APID1, i_APID2); // ----------------------------------------------------------- // ***MAIN*** while (1) { uc_dat[i_numData] = fgetc(stdin); i_numData ++; if (i_numData == 1) { if ( uc_dat[0] != i_APID1 ) { i_linkout ++; i_numData = 0; } } else if (i_numData == 2) { if ( uc_dat[1] != i_APID2 ) { i_numData = 0; } } else if (i_numData == 6) { i_PacSize = uc_dat[4] * 0x100 + uc_dat[5]; } else if (i_numData == 14) { if ( uc_dat[13] != 0x00 ) { fprintf(stderr, "%d:%02X¥n", i_numData, uc_dat[i_numData]); i_numData = 0; } } else if (i_numData == i_PacSize+7) { printf ("¥n[HEADER] " ); for (i=0; i<14; i++) printf ("%02X ", uc_dat[i] ); printf ("¥n[DATA ] " ); for (i=14; i 10000) break; } }