void incoming_packet_handler( us_rawnet_multi_t *self, int ethernet_port, void *context, uint8_t *buf, uint16_t len ) { bool was_log=false; char text[4096] = ""; struct timeval tv; us_gettimeofday( &tv ); struct jdksavdecc_printer print; (void)ethernet_port; (void)context; jdksavdecc_printer_init( &print, text, sizeof( text ) ); if ( option_jdkslog == 1 && buf[JDKSAVDECC_FRAME_HEADER_LEN + 0] == 0x80 + JDKSAVDECC_SUBTYPE_AECP ) { was_log = jdksavdecc_logger_print_jdkslog_frame( &print, &tv, buf, len ); } else if ( option_acmp == 1 && buf[JDKSAVDECC_FRAME_HEADER_LEN + 0] == 0x80 + JDKSAVDECC_SUBTYPE_ACMP ) { jdksavdecc_logger_print_acmp_frame( &print, &tv, buf, len ); } else if ( option_adp == 1 && buf[JDKSAVDECC_FRAME_HEADER_LEN + 0] == 0x80 + JDKSAVDECC_SUBTYPE_ADP ) { jdksavdecc_logger_print_adp_frame( &print, &tv, buf, len ); } if ( !was_log && option_aecp == 1 && buf[JDKSAVDECC_FRAME_HEADER_LEN + 0] == 0x80 + JDKSAVDECC_SUBTYPE_AECP ) { jdksavdecc_logger_print_aecp_frame( &print, &tv, buf, len ); } if ( *text != 0 ) { fprintf( stdout, "%d.%06d:%s\n", (int)tv.tv_sec, (int)tv.tv_usec, text ); } }
inline std::ostream &operator<<( std::ostream &o, jdksavdecc_eui64 const &v ) { jdksavdecc_printer p; char buf[128]; jdksavdecc_printer_init( &p, buf, sizeof( buf ) ); jdksavdecc_printer_print_eui64( &p, v ); o << buf; return o; }
void adp_print( FILE *s, const struct jdksavdecc_frame *frame, const struct jdksavdecc_adpdu *adpdu ) { struct jdksavdecc_printer p; char buf[10240]; jdksavdecc_printer_init( &p, buf, sizeof( buf ) ); avdecc_cmd_print_frame_header( &p, frame ); jdksavdecc_adpdu_print( &p, adpdu ); fprintf( s, "%s", buf ); }