void byte_to_str( char* buf, uint8_t val ) { buf[ 0 ]= '0'+ ( ( val / 10 ) % 10 ); buf[ 1 ]= '0'+ ( val % 10 ); } void byte_to_hexstr( char* buf, uint16_t val ) { ++buf; uint16_t i= 0; for( ; i < 2; ++i ) { uint8_t t= val & 0x000f; if( t < 10 ) *buf= '0' + t; else *buf= ( 'A' - 10 ) + t; --buf; val>>= 4; } } // .............................................. void PostSnifferPacket( frameInfo_t *pFrame ) { static char tbuf[ ]= "size:XX DEST:XX XX XX XX SRC:XX XX XX XX PORT:0xXX\r\nPayload:XX XX XX XX XX XX XX XX XX XX XX XX XX "; uint8_t size= *(uint8_t*)&pFrame->mrfiPkt; if( size > 22 ) { uart_tx_string( "buffer size greater than 22\r\n" ); return; } //count byte_to_str( tbuf + 5, pFrame->mrfiPkt.frame[ 0 ] ); //dest byte_to_hexstr( tbuf + 14, pFrame->mrfiPkt.frame[ 1 ] ); byte_to_hexstr( tbuf + 17, pFrame->mrfiPkt.frame[ 2 ] ); byte_to_hexstr( tbuf + 20, pFrame->mrfiPkt.frame[ 3 ] ); byte_to_hexstr( tbuf + 23, pFrame->mrfiPkt.frame[ 4 ] ); //source byte_to_hexstr( tbuf + 31, pFrame->mrfiPkt.frame[ 5 ] ); byte_to_hexstr( tbuf + 34, pFrame->mrfiPkt.frame[ 6 ] ); byte_to_hexstr( tbuf + 37, pFrame->mrfiPkt.frame[ 7 ] ); byte_to_hexstr( tbuf + 40, pFrame->mrfiPkt.frame[ 8 ] ); //port byte_to_hexstr( tbuf + 51, pFrame->mrfiPkt.frame[ 9 ] ); uint8_t pos= 10; uint8_t* p= tbuf + 63; for( ; pos <= size; ++pos ) { byte_to_hexstr( p, pFrame->mrfiPkt.frame[ pos ] ); p+= 3; } *p++= '\r'; *p++= '\n'; *p++= '\r'; *p++= '\n'; *p= '\0'; uart_state= UART_TX_STOPNULL | UART_TX_NOCHECKSUM; p_uart_tx= tbuf; U0TXBUF= *p_uart_tx; }