Przeglądaj źródła

Updated to use the newer Furi mutex api.

Samuel H 2 lat temu
rodzic
commit
2d1d151566
2 zmienionych plików z 8 dodań i 9 usunięć
  1. 7 9
      i2ctools.c
  2. 1 0
      i2ctools_i.h

+ 7 - 9
i2ctools.c

@@ -1,7 +1,10 @@
 #include "i2ctools_i.h"
 #include "i2ctools_i.h"
 
 
 void i2ctools_draw_callback(Canvas* canvas, void* ctx) {
 void i2ctools_draw_callback(Canvas* canvas, void* ctx) {
-    i2cTools* i2ctools = acquire_mutex((ValueMutex*)ctx, 25);
+    i2cTools* i2ctools = ctx;
+    if(furi_mutex_acquire(i2ctools->mutex, 200) != FuriStatusOk) {
+        return;
+    }
 
 
     switch(i2ctools->main_view->current_view) {
     switch(i2ctools->main_view->current_view) {
     case MAIN_VIEW:
     case MAIN_VIEW:
@@ -23,7 +26,7 @@ void i2ctools_draw_callback(Canvas* canvas, void* ctx) {
     default:
     default:
         break;
         break;
     }
     }
-    release_mutex((ValueMutex*)ctx, i2ctools);
+    furi_mutex_release(i2ctools->mutex);
 }
 }
 
 
 void i2ctools_input_callback(InputEvent* input_event, void* ctx) {
 void i2ctools_input_callback(InputEvent* input_event, void* ctx) {
@@ -38,16 +41,11 @@ int32_t i2ctools_app(void* p) {
 
 
     // Alloc i2ctools
     // Alloc i2ctools
     i2cTools* i2ctools = malloc(sizeof(i2cTools));
     i2cTools* i2ctools = malloc(sizeof(i2cTools));
-    ValueMutex i2ctools_mutex;
-    if(!init_mutex(&i2ctools_mutex, i2ctools, sizeof(i2cTools))) {
-        FURI_LOG_E(APP_NAME, "cannot create mutex\r\n");
-        free(i2ctools);
-        return -1;
-    }
+    i2ctools->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
 
 
     // Alloc viewport
     // Alloc viewport
     i2ctools->view_port = view_port_alloc();
     i2ctools->view_port = view_port_alloc();
-    view_port_draw_callback_set(i2ctools->view_port, i2ctools_draw_callback, &i2ctools_mutex);
+    view_port_draw_callback_set(i2ctools->view_port, i2ctools_draw_callback, i2ctools);
     view_port_input_callback_set(i2ctools->view_port, i2ctools_input_callback, event_queue);
     view_port_input_callback_set(i2ctools->view_port, i2ctools_input_callback, event_queue);
 
 
     // Register view port in GUI
     // Register view port in GUI

+ 1 - 0
i2ctools_i.h

@@ -13,6 +13,7 @@
 
 
 // App datas
 // App datas
 typedef struct {
 typedef struct {
+    FuriMutex* mutex;
     ViewPort* view_port;
     ViewPort* view_port;
     i2cMainView* main_view;
     i2cMainView* main_view;