|
|
@@ -18,11 +18,8 @@ typedef struct
|
|
|
|
|
|
static void render_callback(Canvas* const canvas, void* context)
|
|
|
{
|
|
|
- const GpsUart* gps_uart = acquire_mutex((ValueMutex*)context, 25);
|
|
|
- if (gps_uart == NULL)
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
+ const GpsUart* gps_uart = context;
|
|
|
+ furi_mutex_acquire(gps_uart->mutex, FuriWaitForever);
|
|
|
|
|
|
canvas_set_font(canvas, FontPrimary);
|
|
|
canvas_draw_str_aligned(canvas, 32, 8, AlignCenter, AlignBottom, "Latitude");
|
|
|
@@ -51,7 +48,7 @@ static void render_callback(Canvas* const canvas, void* context)
|
|
|
gps_uart->status.time_seconds);
|
|
|
canvas_draw_str_aligned(canvas, 96, 62, AlignCenter, AlignBottom, buffer);
|
|
|
|
|
|
- release_mutex((ValueMutex*)context, gps_uart);
|
|
|
+ furi_mutex_release(gps_uart->mutex);
|
|
|
}
|
|
|
|
|
|
static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue)
|
|
|
@@ -70,8 +67,7 @@ int32_t gps_app(void* p)
|
|
|
|
|
|
GpsUart* gps_uart = gps_uart_enable();
|
|
|
|
|
|
- ValueMutex gps_uart_mutex;
|
|
|
- if (!init_mutex(&gps_uart_mutex, gps_uart, sizeof(GpsUart)))
|
|
|
+ if (!gps_uart->mutex)
|
|
|
{
|
|
|
FURI_LOG_E("GPS", "cannot create mutex\r\n");
|
|
|
free(gps_uart);
|
|
|
@@ -80,7 +76,7 @@ int32_t gps_app(void* p)
|
|
|
|
|
|
// set system callbacks
|
|
|
ViewPort* view_port = view_port_alloc();
|
|
|
- view_port_draw_callback_set(view_port, render_callback, &gps_uart_mutex);
|
|
|
+ view_port_draw_callback_set(view_port, render_callback, &gps_uart);
|
|
|
view_port_input_callback_set(view_port, input_callback, event_queue);
|
|
|
|
|
|
// open GUI and register view_port
|
|
|
@@ -92,7 +88,7 @@ int32_t gps_app(void* p)
|
|
|
{
|
|
|
FuriStatus event_status = furi_message_queue_get(event_queue, &event, 100);
|
|
|
|
|
|
- GpsUart* gps_uart = (GpsUart*)acquire_mutex_block(&gps_uart_mutex);
|
|
|
+ furi_mutex_acquire(gps_uart->mutex, FuriWaitForever);
|
|
|
|
|
|
if (event_status == FuriStatusOk)
|
|
|
{
|
|
|
@@ -118,7 +114,7 @@ int32_t gps_app(void* p)
|
|
|
}
|
|
|
|
|
|
view_port_update(view_port);
|
|
|
- release_mutex(&gps_uart_mutex, gps_uart);
|
|
|
+ furi_mutex_release(gps_uart->mutex);
|
|
|
}
|
|
|
|
|
|
view_port_enabled_set(view_port, false);
|
|
|
@@ -126,7 +122,7 @@ int32_t gps_app(void* p)
|
|
|
furi_record_close("gui");
|
|
|
view_port_free(view_port);
|
|
|
furi_message_queue_free(event_queue);
|
|
|
- delete_mutex(&gps_uart_mutex);
|
|
|
+ furi_mutex_free(gps_uart->mutex);
|
|
|
gps_uart_disable(gps_uart);
|
|
|
|
|
|
return 0;
|