Explorar o código

Update to furi_mutex.

Aaron Mavrinac %!s(int64=2) %!d(string=hai) anos
pai
achega
43c08c8917
Modificáronse 1 ficheiros con 12 adicións e 12 borrados
  1. 12 12
      bpm.c

+ 12 - 12
bpm.c

@@ -97,6 +97,7 @@ typedef struct {
     uint32_t last_stamp;
     uint32_t interval;
     queue *tap_queue;
+    FuriMutex* mutex;
 } BPMTapper;
 
 static void show_hello() {
@@ -131,10 +132,9 @@ static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queu
 static void render_callback(Canvas* const canvas, void* ctx) {
     string_t tempStr;
 
-    const BPMTapper* bpm_state = acquire_mutex((ValueMutex*)ctx, 25);
-    if (bpm_state == NULL) {
-      return;
-    }
+    const BPMTapper* bpm_state = ctx;
+    furi_mutex_acquire(bpm_state->mutex, FuriWaitForever);
+
     // border
     //canvas_draw_frame(canvas, 0, 0, 128, 64);
     canvas_set_font(canvas, FontPrimary);
@@ -164,7 +164,7 @@ static void render_callback(Canvas* const canvas, void* ctx) {
 
     string_clear(tempStr);
 
-    release_mutex((ValueMutex*)ctx, bpm_state);
+    furi_mutex_release(bpm_state->mutex);
 }
 
 
@@ -177,6 +177,7 @@ static void bpm_state_init(BPMTapper* const plugin_state) {
   q = malloc(sizeof(queue));
   init_queue(q);
   plugin_state->tap_queue = q;
+  plugin_state->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
 }
 
 int32_t bpm_tapper_app(void* p) {
@@ -187,9 +188,8 @@ int32_t bpm_tapper_app(void* p) {
   BPMTapper* bpm_state = malloc(sizeof(BPMTapper));
   // setup
   bpm_state_init(bpm_state);
-  
-  ValueMutex state_mutex;
-  if (!init_mutex(&state_mutex, bpm_state, sizeof(bpm_state))) {
+
+  if (!bpm_state->mutex) {
       FURI_LOG_E("BPM-Tapper", "cannot create mutex\r\n");
       free(bpm_state);
       return 255;
@@ -200,7 +200,7 @@ int32_t bpm_tapper_app(void* p) {
 
   // Set system callbacks
   ViewPort* view_port = view_port_alloc(); 
-  view_port_draw_callback_set(view_port, render_callback, &state_mutex);
+  view_port_draw_callback_set(view_port, render_callback, bpm_state);
   view_port_input_callback_set(view_port, input_callback, event_queue);
   
   // Open GUI and register view_port
@@ -210,7 +210,7 @@ int32_t bpm_tapper_app(void* p) {
   PluginEvent event;
   for (bool processing = true; processing;) {
     FuriStatus event_status = furi_message_queue_get(event_queue, &event, 100);
-    BPMTapper* bpm_state = (BPMTapper*)acquire_mutex_block(&state_mutex);
+    furi_mutex_acquire(bpm_state->mutex, FuriWaitForever);
     if(event_status == FuriStatusOk) {
       // press events
       if(event.type == EventTypeKey) {
@@ -248,16 +248,16 @@ int32_t bpm_tapper_app(void* p) {
     // event timeout
     }
     view_port_update(view_port);
-    release_mutex(&state_mutex, bpm_state);
+    furi_mutex_release(bpm_state->mutex);
   }
   view_port_enabled_set(view_port, false);
   gui_remove_view_port(gui, view_port);
   furi_record_close("gui");
   view_port_free(view_port);
   furi_message_queue_free(event_queue);
-  delete_mutex(&state_mutex);
   queue *q = bpm_state->tap_queue;
   free(q);
+  furi_mutex_free(bpm_state->mutex);
   free(bpm_state);
 
   return 0;