@@ -601,8 +601,6 @@ z_result_t _z_open_serial_from_dev(_z_sys_net_socket_t *sock, char *dev, uint32_
601
601
QueueHandle_t uart_queue ;
602
602
uart_driver_install (sock -> _serial , uart_buffer_size , 0 , 100 , & uart_queue , 0 );
603
603
uart_flush_input (sock -> _serial );
604
- sock -> tmp_buf = (uint8_t * )z_malloc (_Z_SERIAL_MFS_SIZE );
605
- sock -> raw_buf = (uint8_t * )z_malloc (_Z_SERIAL_MAX_COBS_BUF_SIZE );
606
604
607
605
return _z_connect_serial (* sock );
608
606
}
@@ -636,22 +634,21 @@ void _z_close_serial(_z_sys_net_socket_t *sock) {
636
634
uart_wait_tx_done (sock -> _serial , 1000 );
637
635
uart_flush (sock -> _serial );
638
636
uart_driver_delete (sock -> _serial );
639
- z_free (sock -> tmp_buf );
640
- z_free (sock -> raw_buf );
641
637
}
642
638
643
639
size_t _z_read_serial_internal (const _z_sys_net_socket_t sock , uint8_t * header , uint8_t * ptr , size_t len ) {
640
+ uint8_t * raw_buf = z_malloc (_Z_SERIAL_MAX_COBS_BUF_SIZE );
644
641
size_t rb = 0 ;
645
642
while (rb < _Z_SERIAL_MAX_COBS_BUF_SIZE ) {
646
- int r = uart_read_bytes (sock ._serial , & sock . raw_buf [rb ], 1 , 1000 );
643
+ int r = uart_read_bytes (sock ._serial , & raw_buf [rb ], 1 , 1000 );
647
644
if (r == 0 ) {
648
645
_Z_DEBUG ("Timeout reading from serial" );
649
646
if (rb == 0 ) {
650
647
return SIZE_MAX ;
651
648
}
652
649
} else if (r == 1 ) {
653
650
rb = rb + (size_t )1 ;
654
- if (sock . raw_buf [rb - 1 ] == (uint8_t )0x00 ) {
651
+ if (raw_buf [rb - 1 ] == (uint8_t )0x00 ) {
655
652
break ;
656
653
}
657
654
} else {
@@ -660,22 +657,33 @@ size_t _z_read_serial_internal(const _z_sys_net_socket_t sock, uint8_t *header,
660
657
}
661
658
}
662
659
663
- return _z_serial_msg_deserialize (sock .raw_buf , rb , ptr , len , header , sock .tmp_buf , _Z_SERIAL_MFS_SIZE );
660
+ uint8_t * tmp_buf = z_malloc (_Z_SERIAL_MFS_SIZE );
661
+ size_t ret = _z_serial_msg_deserialize (raw_buf , rb , ptr , len , header , tmp_buf , _Z_SERIAL_MFS_SIZE );
662
+
663
+ z_free (raw_buf );
664
+ z_free (tmp_buf );
665
+
666
+ return ret ;
664
667
}
665
668
666
669
size_t _z_send_serial_internal (const _z_sys_net_socket_t sock , uint8_t header , const uint8_t * ptr , size_t len ) {
667
- size_t ret = _z_serial_msg_serialize (sock .raw_buf , _Z_SERIAL_MAX_COBS_BUF_SIZE , ptr , len , header , sock .tmp_buf ,
668
- _Z_SERIAL_MFS_SIZE );
670
+ uint8_t * tmp_buf = (uint8_t * )z_malloc (_Z_SERIAL_MFS_SIZE );
671
+ uint8_t * raw_buf = (uint8_t * )z_malloc (_Z_SERIAL_MAX_COBS_BUF_SIZE );
672
+ size_t ret =
673
+ _z_serial_msg_serialize (raw_buf , _Z_SERIAL_MAX_COBS_BUF_SIZE , ptr , len , header , tmp_buf , _Z_SERIAL_MFS_SIZE );
669
674
670
675
if (ret == SIZE_MAX ) {
671
676
return ret ;
672
677
}
673
678
674
- ssize_t wb = uart_write_bytes (sock ._serial , sock . raw_buf , ret );
679
+ ssize_t wb = uart_write_bytes (sock ._serial , raw_buf , ret );
675
680
if (wb != (ssize_t )ret ) {
676
681
ret = SIZE_MAX ;
677
682
}
678
683
684
+ z_free (raw_buf );
685
+ z_free (tmp_buf );
686
+
679
687
return len ;
680
688
}
681
689
#endif
0 commit comments