Jean LE QUELLEC 3 лет назад
Родитель
Сommit
7c3ef280b2
2 измененных файлов с 5 добавлено и 12 удалено
  1. 3 1
      i2csniffer.c
  2. 2 11
      i2ctools.c

+ 3 - 1
i2csniffer.c

@@ -89,6 +89,8 @@ i2cSniffer* i2c_sniffer_alloc() {
 
 
 void i2c_sniffer_free(i2cSniffer* i2c_sniffer) {
 void i2c_sniffer_free(i2cSniffer* i2c_sniffer) {
     furi_assert(i2c_sniffer);
     furi_assert(i2c_sniffer);
-    furi_check(i2c_sniffer->started == false);
+    if(i2c_sniffer->started) {
+        stop_interrupts();
+    }
     free(i2c_sniffer);
     free(i2c_sniffer);
 }
 }

+ 2 - 11
i2ctools.c

@@ -345,21 +345,14 @@ int32_t i2ctools_app(void* p) {
     FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(InputEvent));
     FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(InputEvent));
 
 
     i2cTools* i2ctools = malloc(sizeof(i2cTools));
     i2cTools* i2ctools = malloc(sizeof(i2cTools));
-    i2cSniffer* sniffer = malloc(sizeof(i2cSniffer));
     ValueMutex i2ctools_mutex;
     ValueMutex i2ctools_mutex;
     if(!init_mutex(&i2ctools_mutex, i2ctools, sizeof(i2cTools))) {
     if(!init_mutex(&i2ctools_mutex, i2ctools, sizeof(i2cTools))) {
         FURI_LOG_E(APP_NAME, "cannot create mutex\r\n");
         FURI_LOG_E(APP_NAME, "cannot create mutex\r\n");
         free(i2ctools);
         free(i2ctools);
         return -1;
         return -1;
     }
     }
-    ValueMutex sniffer_mutex;
-    if(!init_mutex(&sniffer_mutex, sniffer, sizeof(sniffer))) {
-        FURI_LOG_E(APP_NAME, "cannot create mutex\r\n");
-        free(sniffer);
-        return -1;
-    }
 
 
-    i2ctools->sniffer = sniffer;
+    i2ctools->sniffer = i2c_sniffer_alloc();
 
 
     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_mutex);
@@ -371,8 +364,6 @@ int32_t i2ctools_app(void* p) {
 
 
     InputEvent event;
     InputEvent event;
 
 
-    clear_sniffer_buffers(i2ctools->sniffer);
-    i2ctools->sniffer->started = false;
     i2ctools->sniffer->menu_index = 0;
     i2ctools->sniffer->menu_index = 0;
 
 
     i2ctools->scanner.menu_index = 0;
     i2ctools->scanner.menu_index = 0;
@@ -494,8 +485,8 @@ int32_t i2ctools_app(void* p) {
     gui_remove_view_port(gui, i2ctools->view_port);
     gui_remove_view_port(gui, i2ctools->view_port);
     view_port_free(i2ctools->view_port);
     view_port_free(i2ctools->view_port);
     furi_message_queue_free(event_queue);
     furi_message_queue_free(event_queue);
+    i2c_sniffer_free(i2ctools->sniffer);
     free(i2ctools);
     free(i2ctools);
-    free(sniffer);
     furi_record_close(RECORD_GUI);
     furi_record_close(RECORD_GUI);
     return 0;
     return 0;
 }
 }