@@ -31,11 +31,16 @@ void slip_send_packet(const uint8_t* data, uint16_t data_len, uint8_t cmd, void
3131 hdr .length = (uint16_t )data_len ;
3232 hdr .crc = crc16_ccitt_false (data , data_len );
3333 hdr .cmd = (slip_cmd_t )cmd ;
34- hdr .id = packet_count ++ ;
34+
35+ /* Check if payload length exceeds buffer size */
36+ if (data_len > SLIP_MAX_PAYLOAD_LEN ) { return ; }
3537
3638 /* Write header to buffer */
3739 uint8_t * buffer = (uint8_t * )& hdr ;
38- for (uint16_t i = 0 ; i < sizeof (hdr ); i ++ ) { send_byte (buffer [i ]); }
40+ for (uint16_t byte = 0 ; byte < sizeof (hdr ); byte ++ ) { send_byte (buffer [byte ]); }
41+
42+ /* Update packet count */
43+ packet_count ++ ;
3944
4045 /* SLIP-encode the payload */
4146 for (uint16_t i = 0 ; i < data_len ; i ++ ) {
@@ -84,12 +89,12 @@ uint16_t crc16_ccitt_false(const uint8_t* data, uint16_t len) {
8489void slip_receive_packet (uint8_t input_byte , slip_packet_t * decoded_packet , uint8_t (* read_byte )(void )) {
8590 if (!decoded_packet || !read_byte ) { return ; }
8691
87- /* Read header fields */
88- decoded_packet -> header . length = read_byte () | ( read_byte () << 8 ) ;
89- decoded_packet -> header . crc = read_byte () | ( read_byte () << 8 );
90- decoded_packet -> header . cmd = ( slip_cmd_t ) read_byte ();
91- packet_count = decoded_packet -> header . id = read_byte () | ( read_byte () << 8 );
92- packet_count ++ ;
92+ /* Read header from buffer */
93+ uint8_t * buffer = ( uint8_t * ) decoded_packet ;
94+ for ( uint16_t byte = 0 ; byte < sizeof ( * decoded_packet ); byte ++ ) { buffer [ byte ] = read_byte (); }
95+
96+ /* Update packet count */
97+ packet_count = decoded_packet -> header . id + 1 ;
9398
9499 /* Check if payload length exceeds buffer size */
95100 if (decoded_packet -> header .length > SLIP_MAX_PAYLOAD_LEN ) {
0 commit comments