mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-09 05:49:09 -07:00
Improve furi_hal_serial API
This commit is contained in:
@@ -61,9 +61,14 @@ static void expansion_worker_serial_rx_callback(
|
||||
|
||||
ExpansionWorker* instance = context;
|
||||
|
||||
if(event == FuriHalSerialRxEventData) {
|
||||
const uint8_t data = furi_hal_serial_async_rx(handle);
|
||||
furi_stream_buffer_send(instance->rx_buf, &data, sizeof(data), 0);
|
||||
if(event & (FuriHalSerialRxEventNoiseError | FuriHalSerialRxEventFrameError |
|
||||
FuriHalSerialRxEventOverrunError)) {
|
||||
furi_thread_flags_set(furi_thread_get_id(instance->thread), ExpansionWorkerFlagError);
|
||||
} else if(event & FuriHalSerialRxEventData) {
|
||||
while(furi_hal_serial_async_rx_available(handle)) {
|
||||
const uint8_t data = furi_hal_serial_async_rx(handle);
|
||||
furi_stream_buffer_send(instance->rx_buf, &data, sizeof(data), 0);
|
||||
}
|
||||
furi_thread_flags_set(furi_thread_get_id(instance->thread), ExpansionWorkerFlagData);
|
||||
}
|
||||
}
|
||||
@@ -341,7 +346,7 @@ static int32_t expansion_worker(void* context) {
|
||||
furi_hal_serial_init(instance->serial_handle, EXPANSION_PROTOCOL_DEFAULT_BAUD_RATE);
|
||||
|
||||
furi_hal_serial_async_rx_start(
|
||||
instance->serial_handle, expansion_worker_serial_rx_callback, instance, false);
|
||||
instance->serial_handle, expansion_worker_serial_rx_callback, instance, true);
|
||||
|
||||
if(expansion_worker_send_heartbeat(instance)) {
|
||||
expansion_worker_state_machine(instance);
|
||||
|
||||
@@ -189,6 +189,12 @@ bool rpc_pb_stream_read(pb_istream_t* istream, pb_byte_t* buf, size_t count) {
|
||||
furi_assert(session);
|
||||
furi_assert(istream->bytes_left);
|
||||
|
||||
/* TODO FL-3768 this function may be called after
|
||||
marking the worker for termination */
|
||||
if(session->terminate) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32_t flags = 0;
|
||||
size_t bytes_received = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user