|
|
@@ -47,7 +47,7 @@ static void
|
|
|
Uart* uart = (Uart*)context;
|
|
|
UNUSED(handle);
|
|
|
|
|
|
- if(event & (FuriHalSerialRxEventData | FuriHalSerialRxEventIdle)) {
|
|
|
+ if(event == FuriHalSerialRxEventData) {
|
|
|
uint8_t data = furi_hal_serial_async_rx(handle);
|
|
|
furi_stream_buffer_send(uart->rx_stream, &data, 1, 0);
|
|
|
furi_thread_flags_set(furi_thread_get_id(uart->rx_thread), WorkerEvtRxDone);
|
|
|
@@ -183,12 +183,13 @@ Uart* lp_uart_init(void* app) {
|
|
|
void uart_free(Uart* uart) {
|
|
|
furi_assert(uart);
|
|
|
|
|
|
+ furi_hal_serial_async_rx_stop(uart->serial_handle);
|
|
|
+ furi_hal_serial_deinit(uart->serial_handle);
|
|
|
+ furi_hal_serial_control_release(uart->serial_handle);
|
|
|
+
|
|
|
furi_thread_flags_set(furi_thread_get_id(uart->rx_thread), WorkerEvtStop);
|
|
|
furi_thread_join(uart->rx_thread);
|
|
|
furi_thread_free(uart->rx_thread);
|
|
|
|
|
|
- furi_hal_serial_deinit(uart->serial_handle);
|
|
|
- furi_hal_serial_control_release(uart->serial_handle);
|
|
|
-
|
|
|
free(uart);
|
|
|
}
|