@@ -412,7 +412,7 @@ int index = 0;
412412 struct datablock_plot dbp ;
413413
414414 memset (& dbp , 0 , sizeof (struct datablock_plot ));
415- // log_printf(LOG_NORMAL, "fspec %02X\n", ptr_raw[0]);
415+ log_printf (LOG_NORMAL , "a)CAT01] fspec %02X\n" , ptr_raw [0 ]);
416416
417417 sizeFSPEC = ast_get_size_FSPEC (ptr_raw , size_datablock );
418418 dbp .cat = CAT_01 ;
@@ -442,13 +442,13 @@ int index = 0;
442442 }
443443 if ( ptr_raw [0 ] & 64 ) { //I001/010
444444 if ( ptr_raw [j ] & 128 ) { // track
445- // log_printf(LOG_NORMAL, "type %02X TRACK\n", ptr_raw[j]);
445+ log_printf (LOG_NORMAL , "b)CAT01] type %02X TRACK\n" , ptr_raw [j ]);
446446 dbp .available |= IS_TRACK ;
447447 size_current = size_datablock - 3 ; //exit without further decompression
448448
449449 } else { // plot
450450 dbp .available |= IS_TYPE ;
451- // log_printf(LOG_NORMAL, "type %02X\n", ptr_raw[j]);
451+ log_printf (LOG_NORMAL , "c)CAT01] type %02X\n" , ptr_raw [j ]);
452452
453453 if ( (!(ptr_raw [j ] & 32 )) && (!(ptr_raw [j ] & 16 )) ) {
454454 dbp .type = NO_DETECTION ;
@@ -522,11 +522,11 @@ int index = 0;
522522 }
523523 }
524524 }
525- // ast_output_datablock(ptr_raw, j , dbp.id, dbp.index);
525+ ast_output_datablock (ptr_raw , j , dbp .id , dbp .index );
526526// if ( (dbp.available & IS_TYPE) && (dbp.available & IS_TOD) ) {
527527 if ( dbp .available & IS_TYPE ) {
528- /* log_printf(LOG_NORMAL, "%3.3f %3.3f %3.3f\n", dbp.tod_stamp, dbp.tod, dbp.tod_stamp - dbp.tod);
529- if ((dbp.tod_stamp - dbp.tod < 0) || ((dbp.tod_stamp - dbp.tod > 5)) ) {
528+ log_printf (LOG_NORMAL , "%3.3f %3.3f %3.3f\n" , dbp .tod_stamp , dbp .tod , dbp .tod_stamp - dbp .tod );
529+ /* if ((dbp.tod_stamp - dbp.tod < 0) || ((dbp.tod_stamp - dbp.tod > 5)) ) {
530530 log_printf(LOG_NORMAL, "%3.3f %3.3f %3.3f\n", dbp.tod_stamp, dbp.tod, dbp.tod_stamp - dbp.tod);
531531 exit(EXIT_FAILURE);
532532 }
@@ -548,58 +548,66 @@ int index = 0;
548548}
549549
550550int ast_procesarCAT02 (unsigned char * ptr_raw , ssize_t size_datablock , unsigned long id , bool enviar ) {
551- int sizeFSPEC = 0 , pos = 0 ;
552- struct datablock_plot dbp ;
553551
552+ // do
553+ {
554554
555- memset (& dbp , 0 , sizeof (struct datablock_plot ));
556- dbp .plot_type = IS_ERROR ;
557- dbp .tod_stamp = current_time_today ;
558- dbp .flag_test = 0 ;
559- dbp .id = id ;
560- dbp .index = 0 ;
561- sizeFSPEC = ast_get_size_FSPEC (ptr_raw , size_datablock );
555+ int sizeFSPEC = 0 , pos = 0 ;
556+ struct datablock_plot dbp ;
562557
563- // log_printf(LOG_ERROR, "a)CAT02] (%d) %02X %02X\n", sizeFSPEC, ptr_raw[sizeFSPEC], ptr_raw[sizeFSPEC+1] );
558+ memset (& dbp , 0 , sizeof (struct datablock_plot ));
559+ dbp .plot_type = IS_ERROR ;
560+ dbp .tod_stamp = current_time_today ;
561+ dbp .flag_test = 0 ;
562+ dbp .id = id ;
563+ dbp .index = 0 ;
564+ sizeFSPEC = ast_get_size_FSPEC (ptr_raw , size_datablock );
564565
565- if ( (ptr_raw [0 ] & 128 ) && // sac/sic
566- (ptr_raw [0 ] & 64 ) && // msg type
567- (ptr_raw [0 ] & 16 ) ) { // timeofday
568-
569- // log_printf(LOG_ERROR, "b)CAT02] (%d) %02X %02X \n", sizeFSPEC, ptr_raw[sizeFSPEC], ptr_raw[sizeFSPEC+1] );
566+ log_printf (LOG_ERROR , "a)CAT02] (%d) %02X %02X\n" , sizeFSPEC , ptr_raw [sizeFSPEC ], ptr_raw [sizeFSPEC + 1 ] );
570567
571- if (ptr_raw [0 ] & 32 ) pos ++ ;
568+ if ( (ptr_raw [0 ] & 128 ) && // sac/sic
569+ (ptr_raw [0 ] & 64 ) && // msg type
570+ (ptr_raw [0 ] & 16 ) ) { // timeofday
571+
572+ log_printf (LOG_ERROR , "b)CAT02] (%d) %02X %02X \n" , sizeFSPEC , ptr_raw [sizeFSPEC ], ptr_raw [sizeFSPEC + 1 ] );
573+ if (ptr_raw [0 ] & 32 ) pos ++ ;
572574
573- pos += sizeFSPEC + 3 ; //FSPEC SACSIC MSGTYPE
575+ pos += sizeFSPEC + 3 ; //FSPEC SACSIC MSGTYPE
574576
575- // log_printf(LOG_ERROR, "c)CAT02] (%d) %02X %02X \n", sizeFSPEC, ptr_raw[sizeFSPEC], ptr_raw[sizeFSPEC+1] );
577+ log_printf (LOG_ERROR , "c)CAT02] (%d) %02X %02X \n" , sizeFSPEC , ptr_raw [sizeFSPEC ], ptr_raw [sizeFSPEC + 1 ] );
576578
577- ttod_put_full (ptr_raw [sizeFSPEC ], ptr_raw [sizeFSPEC + 1 ], ptr_raw + pos );
579+ ttod_put_full (ptr_raw [sizeFSPEC ], ptr_raw [sizeFSPEC + 1 ], ptr_raw + pos );
578580
579- dbp .cat = CAT_02 ;
580- dbp .sac = ptr_raw [sizeFSPEC ]; dbp .sic = ptr_raw [sizeFSPEC + 1 ];
581- dbp .available = IS_TOD | IS_TYPE | IS_SACSIC ;
582- dbp .tod = ((float )(ptr_raw [pos ]* 256 * 256 + ptr_raw [pos + 1 ]* 256 + ptr_raw [pos + 2 ]))/128.0 ;
583- //if (dbp.sac == 1 && dbp.sic==1) {
584- // ast_output_datablock(ptr_raw, size_datablock - 3, dbp.id, dbp.index);
585- //}
586- switch (ptr_raw [sizeFSPEC + 2 ]) {
587- case 1 : dbp .type = TYPE_C2_NORTH_MARKER ; break ;
588- case 2 : dbp .type = TYPE_C2_SECTOR_CROSSING ; break ;
589- case 3 : dbp .type = TYPE_C2_SOUTH_MARKER ; break ;
590- case 8 : dbp .type = TYPE_C2_START_BLIND_ZONE_FILTERING ; break ;
591- case 9 : dbp .type = TYPE_C2_STOP_BLIND_ZONE_FILTERING ; break ;
592- default : dbp .type = NO_DETECTION ; break ;
593- }
594- if (enviar ) {
595- usleep (10 );
596- if (sendto (s_output_multicast , & dbp , sizeof (dbp ), 0 , (struct sockaddr * ) & srvaddr , sizeof (srvaddr )) < 0 ) { // CAT002
597- log_printf (LOG_ERROR , "ERROR sendto: %s\n" , strerror (errno ));
581+ dbp .cat = CAT_02 ;
582+ dbp .sac = ptr_raw [sizeFSPEC ]; dbp .sic = ptr_raw [sizeFSPEC + 1 ];
583+ dbp .available = IS_TOD | IS_TYPE | IS_SACSIC ;
584+ dbp .tod = ((float )(ptr_raw [pos ]* 256 * 256 + ptr_raw [pos + 1 ]* 256 + ptr_raw [pos + 2 ]))/128.0 ;
585+ if (dbp .sac == 104 && dbp .sic == 1 ) {
586+ log_printf (LOG_ERROR , "d)CAT02] datablock follows:\n" );
587+ ast_output_datablock (ptr_raw , size_datablock - 3 , dbp .id , dbp .index );
598588 }
599- } else {
589+ switch (ptr_raw [sizeFSPEC + 2 ]) {
590+ case 1 : dbp .type = TYPE_C2_NORTH_MARKER ; break ;
591+ case 2 : dbp .type = TYPE_C2_SECTOR_CROSSING ; break ;
592+ case 3 : dbp .type = TYPE_C2_SOUTH_MARKER ; break ;
593+ case 8 : dbp .type = TYPE_C2_START_BLIND_ZONE_FILTERING ; break ;
594+ case 9 : dbp .type = TYPE_C2_STOP_BLIND_ZONE_FILTERING ; break ;
595+ default : dbp .type = NO_DETECTION ; break ;
596+ }
597+ log_printf (LOG_ERROR , "e)CAT02] dbp.type(%d) db.tod(%3.3f) dbp.available(%d)\n" , dbp .type , dbp .tod , dbp .available );
598+ if (enviar ) {
599+ usleep (10 );
600+ if (sendto (s_output_multicast , & dbp , sizeof (dbp ), 0 , (struct sockaddr * ) & srvaddr , sizeof (srvaddr )) < 0 ) { // CAT002
601+ log_printf (LOG_ERROR , "ERROR sendto: %s\n" , strerror (errno ));
602+ }
603+ } else {
600604 update_calculations (& dbp );
601- }
605+ }
606+ }
607+
602608 }
609+ // while ((size_current + 3) < size_datablock);
610+
603611 return T_OK ;
604612}
605613
0 commit comments