Skip to content

Commit 822dfe6

Browse files
committed
merge fixes pt1
by Willy-JL
1 parent 25919b0 commit 822dfe6

File tree

5 files changed

+88
-83
lines changed

5 files changed

+88
-83
lines changed

base_pack/camera_suite/views/camera_suite_view_camera.c

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ static bool camera_suite_view_camera_input(InputEvent* event, void* context) {
196196
UNUSED(model);
197197

198198
// Stop camera stream.
199-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'s'}, 1);
199+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'s'}, 1);
200200
furi_delay_ms(50);
201201

202202
// Go back to the main menu.
@@ -217,13 +217,13 @@ static bool camera_suite_view_camera_input(InputEvent* event, void* context) {
217217

218218
if(model->is_inverted) {
219219
// Camera: Set invert to false on the ESP32-CAM.
220-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'i'}, 1);
220+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'i'}, 1);
221221
furi_delay_ms(50);
222222

223223
model->is_inverted = false;
224224
} else {
225225
// Camera: Set invert to true on the ESP32-CAM.
226-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'I'}, 1);
226+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'I'}, 1);
227227
furi_delay_ms(50);
228228

229229
model->is_inverted = true;
@@ -246,13 +246,13 @@ static bool camera_suite_view_camera_input(InputEvent* event, void* context) {
246246

247247
if(model->is_dithering_enabled) {
248248
// Camera: Disable dithering.
249-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'d'}, 1);
249+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'d'}, 1);
250250
furi_delay_ms(50);
251251

252252
model->is_dithering_enabled = false;
253253
} else {
254254
// Camera: Enable dithering.
255-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'D'}, 1);
255+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'D'}, 1);
256256
furi_delay_ms(50);
257257

258258
model->is_dithering_enabled = true;
@@ -276,7 +276,7 @@ static bool camera_suite_view_camera_input(InputEvent* event, void* context) {
276276
camera_suite_led_set_rgb(instance->context, 0, 0, 255);
277277

278278
// Camera: Increase contrast.
279-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'C'}, 1);
279+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'C'}, 1);
280280
furi_delay_ms(50);
281281

282282
instance->callback(CameraSuiteCustomEventSceneCameraUp, instance->context);
@@ -297,7 +297,7 @@ static bool camera_suite_view_camera_input(InputEvent* event, void* context) {
297297
camera_suite_led_set_rgb(instance->context, 0, 0, 255);
298298

299299
// Camera: Reduce contrast.
300-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'c'}, 1);
300+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'c'}, 1);
301301
furi_delay_ms(50);
302302

303303
instance->callback(CameraSuiteCustomEventSceneCameraDown, instance->context);
@@ -316,7 +316,7 @@ static bool camera_suite_view_camera_input(InputEvent* event, void* context) {
316316
camera_suite_led_set_rgb(instance->context, 0, 0, 255);
317317

318318
// @todo - Save picture directly to ESP32-CAM.
319-
// furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'P'}, 1);
319+
// furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'P'}, 1);
320320

321321
// Save currently displayed image to the Flipper Zero SD card.
322322
save_image_to_flipper_sd_card(model);
@@ -349,22 +349,22 @@ static void camera_suite_view_camera_enter(void* context) {
349349
CameraSuite* instance_context = instance->context;
350350

351351
// Start camera stream.
352-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'S'}, 1);
352+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'S'}, 1);
353353
furi_delay_ms(50);
354354

355355
// Get/set dither type.
356356
uint8_t dither_type = instance_context->dither;
357-
furi_hal_uart_tx(FuriHalUartIdUSART1, &dither_type, 1);
357+
furi_hal_serial_tx(instance->serial_handle, &dither_type, 1);
358358
furi_delay_ms(50);
359359

360360
// Make sure the camera is not inverted.
361-
furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'i'}, 1);
361+
furi_hal_serial_tx(instance->serial_handle, (uint8_t[]){'i'}, 1);
362362
furi_delay_ms(50);
363363

364364
// Toggle flash on or off based on the current state. If the user has this
365365
// on the flash will stay on the entire time the user is in the camera view.
366366
uint8_t flash_state = instance_context->flash ? 'F' : 'f';
367-
furi_hal_uart_tx(FuriHalUartIdUSART1, &flash_state, 1);
367+
furi_hal_serial_tx(instance->serial_handle, &flash_state, 1);
368368
furi_delay_ms(50);
369369

370370
with_view_model(
@@ -374,17 +374,18 @@ static void camera_suite_view_camera_enter(void* context) {
374374
true);
375375
}
376376

377-
static void camera_on_irq_cb(UartIrqEvent uartIrqEvent, uint8_t data, void* context) {
378-
furi_assert(uartIrqEvent);
379-
furi_assert(data);
377+
static void
378+
camera_on_irq_cb(FuriHalSerialHandle* handle, FuriHalSerialRxEvent event, void* context) {
379+
furi_assert(handle);
380380
furi_assert(context);
381381

382382
// Cast `context` to `CameraSuiteViewCamera*` and store it in `instance`.
383383
CameraSuiteViewCamera* instance = context;
384384

385385
// If `uartIrqEvent` is `UartIrqEventRXNE`, send the data to the
386386
// `rx_stream` and set the `WorkerEventRx` flag.
387-
if(uartIrqEvent == UartIrqEventRXNE) {
387+
if(event == FuriHalSerialRxEventData) {
388+
uint8_t data = furi_hal_serial_async_rx(handle);
388389
furi_stream_buffer_send(instance->rx_stream, &data, 1, 0);
389390
furi_thread_flags_set(furi_thread_get_id(instance->worker_thread), WorkerEventRx);
390391
}
@@ -512,32 +513,31 @@ CameraSuiteViewCamera* camera_suite_view_camera_alloc() {
512513
instance->worker_thread = thread;
513514
furi_thread_start(instance->worker_thread);
514515

515-
// Enable uart listener
516-
furi_hal_console_disable();
517-
518516
// 115200 is the default baud rate for the ESP32-CAM.
519-
furi_hal_uart_set_br(FuriHalUartIdUSART1, 230400);
517+
instance->serial_handle = furi_hal_serial_control_acquire(UART_CH);
518+
furi_check(instance->serial_handle);
519+
furi_hal_serial_init(instance->serial_handle, 230400);
520520

521521
// Enable UART1 and set the IRQ callback.
522-
furi_hal_uart_set_irq_cb(FuriHalUartIdUSART1, camera_on_irq_cb, instance);
522+
furi_hal_serial_async_rx_start(instance->serial_handle, camera_on_irq_cb, instance, false);
523523

524524
return instance;
525525
}
526526

527527
void camera_suite_view_camera_free(CameraSuiteViewCamera* instance) {
528528
furi_assert(instance);
529529

530-
// Remove the IRQ callback.
531-
furi_hal_uart_set_irq_cb(FuriHalUartIdUSART1, NULL, NULL);
532-
533530
// Free the worker thread.
531+
furi_thread_flags_set(furi_thread_get_id(instance->worker_thread), WorkerEventStop);
532+
furi_thread_join(instance->worker_thread);
534533
furi_thread_free(instance->worker_thread);
535534

536535
// Free the allocated stream buffer.
537536
furi_stream_buffer_free(instance->rx_stream);
538537

539538
// Re-enable the console.
540-
// furi_hal_console_enable();
539+
furi_hal_serial_deinit(instance->serial_handle);
540+
furi_hal_serial_control_release(instance->serial_handle);
541541

542542
with_view_model(
543543
instance->view, UartDumpModel * model, { UNUSED(model); }, true);

base_pack/camera_suite/views/camera_suite_view_camera.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
#include <furi.h>
44
#include <furi_hal.h>
5-
#include <furi_hal_console.h>
6-
#include <furi_hal_uart.h>
5+
#include <furi_hal_serial_control.h>
6+
#include <furi_hal_serial.h>
77
#include <gui/elements.h>
88
#include <gui/gui.h>
99
#include <gui/icon_i.h>
@@ -19,6 +19,8 @@
1919

2020
#include <camera_suite_icons.h>
2121

22+
#define UART_CH (FuriHalSerialIdUsart)
23+
2224
#define BITMAP_HEADER_LENGTH 62
2325
#define FRAME_BIT_DEPTH 1
2426
#define FRAME_BUFFER_LENGTH 1024
@@ -49,6 +51,7 @@ typedef void (*CameraSuiteViewCameraCallback)(CameraSuiteCustomEvent event, void
4951
typedef struct CameraSuiteViewCamera {
5052
CameraSuiteViewCameraCallback callback;
5153
FuriStreamBuffer* rx_stream;
54+
FuriHalSerialHandle* serial_handle;
5255
FuriThread* worker_thread;
5356
NotificationApp* notification;
5457
View* view;

base_pack/dap_link/dap_link.c

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
#include <furi.h>
33
#include <furi_hal_version.h>
44
#include <furi_hal_gpio.h>
5-
#include <furi_hal_uart.h>
6-
#include <furi_hal_console.h>
5+
#include <furi_hal_serial_control.h>
6+
#include <furi_hal_serial.h>
77
#include <furi_hal_resources.h>
88
#include <furi_hal_power.h>
99
#include <stm32wbxx_ll_usart.h>
@@ -275,14 +275,15 @@ typedef enum {
275275
typedef struct {
276276
FuriStreamBuffer* rx_stream;
277277
FuriThreadId thread_id;
278-
FuriHalUartId uart_id;
278+
FuriHalSerialHandle* serial_handle;
279279
struct usb_cdc_line_coding line_coding;
280280
} CDCProcess;
281281

282-
static void cdc_uart_irq_cb(UartIrqEvent ev, uint8_t data, void* ctx) {
282+
static void cdc_uart_irq_cb(FuriHalSerialHandle* handle, FuriHalSerialRxEvent event, void* ctx) {
283283
CDCProcess* app = ctx;
284284

285-
if(ev == UartIrqEventRXNE) {
285+
if(event == FuriHalSerialRxEventData) {
286+
uint8_t data = furi_hal_serial_async_rx(handle);
286287
furi_stream_buffer_send(app->rx_stream, &data, 1, 0);
287288
furi_thread_flags_set(app->thread_id, CdcThreadEventUartRx);
288289
}
@@ -316,54 +317,52 @@ static void cdc_usb_config_callback(struct usb_cdc_line_coding* config, void* co
316317
furi_thread_flags_set(app->thread_id, CdcThreadEventCdcConfig);
317318
}
318319

319-
static FuriHalUartId cdc_init_uart(
320+
static void cdc_init_uart(
321+
CDCProcess* app,
320322
DapUartType type,
321323
DapUartTXRX swap,
322324
uint32_t baudrate,
323-
void (*cb)(UartIrqEvent ev, uint8_t data, void* ctx),
325+
void (*cb)(FuriHalSerialHandle* handle, FuriHalSerialRxEvent event, void* ctx),
324326
void* ctx) {
325-
FuriHalUartId uart_id = FuriHalUartIdUSART1;
326327
if(baudrate == 0) baudrate = 115200;
327328

328329
switch(type) {
329330
case DapUartTypeUSART1:
330-
uart_id = FuriHalUartIdUSART1;
331-
furi_hal_console_disable();
332-
furi_hal_uart_deinit(uart_id);
331+
app->serial_handle = furi_hal_serial_control_acquire(FuriHalSerialIdUsart);
332+
furi_check(app->serial_handle);
333333
if(swap == DapUartTXRXSwap) {
334334
LL_USART_SetTXRXSwap(USART1, LL_USART_TXRX_SWAPPED);
335335
} else {
336336
LL_USART_SetTXRXSwap(USART1, LL_USART_TXRX_STANDARD);
337337
}
338-
furi_hal_uart_init(uart_id, baudrate);
339-
furi_hal_uart_set_irq_cb(uart_id, cb, ctx);
338+
furi_hal_serial_init(app->serial_handle, baudrate);
339+
furi_hal_serial_async_rx_start(app->serial_handle, cb, ctx, false);
340340
break;
341341
case DapUartTypeLPUART1:
342-
uart_id = FuriHalUartIdLPUART1;
343-
furi_hal_uart_deinit(uart_id);
342+
app->serial_handle = furi_hal_serial_control_acquire(FuriHalSerialIdLpuart);
343+
furi_check(app->serial_handle);
344344
if(swap == DapUartTXRXSwap) {
345345
LL_LPUART_SetTXRXSwap(LPUART1, LL_LPUART_TXRX_SWAPPED);
346346
} else {
347347
LL_LPUART_SetTXRXSwap(LPUART1, LL_LPUART_TXRX_STANDARD);
348348
}
349-
furi_hal_uart_init(uart_id, baudrate);
350-
furi_hal_uart_set_irq_cb(uart_id, cb, ctx);
349+
furi_hal_serial_init(app->serial_handle, baudrate);
350+
furi_hal_serial_async_rx_start(app->serial_handle, cb, ctx, false);
351351
break;
352352
}
353-
354-
return uart_id;
355353
}
356354

357-
static void cdc_deinit_uart(DapUartType type) {
355+
static void cdc_deinit_uart(CDCProcess* app, DapUartType type) {
358356
switch(type) {
359357
case DapUartTypeUSART1:
360-
furi_hal_uart_deinit(FuriHalUartIdUSART1);
358+
furi_hal_serial_deinit(app->serial_handle);
361359
LL_USART_SetTXRXSwap(USART1, LL_USART_TXRX_STANDARD);
362-
furi_hal_console_init();
360+
furi_hal_serial_control_release(app->serial_handle);
363361
break;
364362
case DapUartTypeLPUART1:
365-
furi_hal_uart_deinit(FuriHalUartIdLPUART1);
363+
furi_hal_serial_deinit(app->serial_handle);
366364
LL_LPUART_SetTXRXSwap(LPUART1, LL_LPUART_TXRX_STANDARD);
365+
furi_hal_serial_control_release(app->serial_handle);
367366
break;
368367
}
369368
}
@@ -385,8 +384,8 @@ static int32_t dap_cdc_process(void* p) {
385384
const uint8_t rx_buffer_size = 64;
386385
uint8_t* rx_buffer = malloc(rx_buffer_size);
387386

388-
app->uart_id = cdc_init_uart(
389-
uart_pins_prev, uart_swap_prev, dap_state->cdc_baudrate, cdc_uart_irq_cb, app);
387+
cdc_init_uart(
388+
app, uart_pins_prev, uart_swap_prev, dap_state->cdc_baudrate, cdc_uart_irq_cb, app);
390389

391390
dap_cdc_usb_set_context(app);
392391
dap_cdc_usb_set_rx_callback(cdc_usb_rx_callback);
@@ -405,7 +404,7 @@ static int32_t dap_cdc_process(void* p) {
405404
if(dap_state->cdc_baudrate != app->line_coding.dwDTERate) {
406405
dap_state->cdc_baudrate = app->line_coding.dwDTERate;
407406
if(dap_state->cdc_baudrate > 0) {
408-
furi_hal_uart_set_br(app->uart_id, dap_state->cdc_baudrate);
407+
furi_hal_serial_set_br(app->serial_handle, dap_state->cdc_baudrate);
409408
}
410409
}
411410
}
@@ -424,18 +423,19 @@ static int32_t dap_cdc_process(void* p) {
424423
if(events & CdcThreadEventCdcRx) {
425424
size_t len = dap_cdc_usb_rx(rx_buffer, rx_buffer_size);
426425
if(len > 0) {
427-
furi_hal_uart_tx(app->uart_id, rx_buffer, len);
426+
furi_hal_serial_tx(app->serial_handle, rx_buffer, len);
428427
}
429428
dap_state->cdc_tx_counter += len;
430429
}
431430

432431
if(events & CdcThreadEventApplyConfig) {
433432
if(uart_pins_prev != dap_app->config.uart_pins ||
434433
uart_swap_prev != dap_app->config.uart_swap) {
435-
cdc_deinit_uart(uart_pins_prev);
434+
cdc_deinit_uart(app, uart_pins_prev);
436435
uart_pins_prev = dap_app->config.uart_pins;
437436
uart_swap_prev = dap_app->config.uart_swap;
438-
app->uart_id = cdc_init_uart(
437+
cdc_init_uart(
438+
app,
439439
uart_pins_prev,
440440
uart_swap_prev,
441441
dap_state->cdc_baudrate,
@@ -456,7 +456,7 @@ static int32_t dap_cdc_process(void* p) {
456456
}
457457
}
458458

459-
cdc_deinit_uart(uart_pins_prev);
459+
cdc_deinit_uart(app, uart_pins_prev);
460460
free(rx_buffer);
461461
furi_stream_buffer_free(app->rx_stream);
462462
free(app);

0 commit comments

Comments
 (0)