Procházet zdrojové kódy

Merge pull request #8 from jamisonderek/jamisonderek/singlehit

Clear IR queue when user is hit.
RocketGod před 1 rokem
rodič
revize
85e43b1b5e
1 změnil soubory, kde provedl 12 přidání a 1 odebrání
  1. 12 1
      infrared_controller.c

+ 12 - 1
infrared_controller.c

@@ -59,6 +59,16 @@ void update_infrared_board_status(InfraredController* controller) {
     }
 }
 
+static int32_t infrared_reset(void* context) {
+    InfraredController* controller = (InfraredController*)context;
+    // furi_stream_buffer_reset(instance->stream) not exposed to the API.
+    // infrared_worker_rx_stop calls it internally.
+    infrared_worker_rx_stop(controller->worker);
+    infrared_worker_rx_start(controller->worker);
+    controller->processing_signal = false;
+    return 0;
+}
+
 static void infrared_rx_callback(void* context, InfraredWorkerSignal* received_signal) {
     FURI_LOG_I(TAG, "RX callback triggered");
 
@@ -99,7 +109,8 @@ static void infrared_rx_callback(void* context, InfraredWorkerSignal* received_s
     }
 
     FURI_LOG_I(TAG, "RX callback completed");
-    controller->processing_signal = false;
+    FuriThread* thread = furi_thread_alloc_ex("InfraredReset", 512, infrared_reset, controller);
+    furi_thread_start(thread);
 }
 
 InfraredController* infrared_controller_alloc() {