Преглед изворни кода

Merge pull request #4 from Samuelrmlink/main

Update to work with newer Furi API.
Jean LE QUELLEC пре 2 година
родитељ
комит
3315c3279b
3 измењених фајлова са 10 додато и 11 уклоњено
  1. 2 2
      application.fam
  2. 7 9
      i2ctools.c
  3. 1 0
      i2ctools_i.h

+ 2 - 2
application.fam

@@ -1,7 +1,7 @@
 App(
 App(
     appid="i2cTools",
     appid="i2cTools",
     name="i2c Tools",
     name="i2c Tools",
-    apptype=FlipperAppType.EXTERNAL,
+    apptype=FlipperAppType.PLUGIN,
     entry_point="i2ctools_app",
     entry_point="i2ctools_app",
     cdefines=["APP_I2CTOOLS"],
     cdefines=["APP_I2CTOOLS"],
     requires=["gui"],
     requires=["gui"],
@@ -10,4 +10,4 @@ App(
     fap_icon="i2ctools.png",
     fap_icon="i2ctools.png",
     fap_category="GPIO",
     fap_category="GPIO",
     fap_icon_assets="images",
     fap_icon_assets="images",
-)
+)

+ 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;