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

ir_protocol: fix ir example timeout issue

More detail see https://esp32.com/viewtopic.php?f=25&t=18204
morris пре 5 година
родитељ
комит
138c1e278f
1 измењених фајлова са 3 додато и 4 уклоњено
  1. 3 4
      examples/peripherals/rmt/ir_protocols/main/ir_protocols_main.c

+ 3 - 4
examples/peripherals/rmt/ir_protocols/main/ir_protocols_main.c

@@ -47,10 +47,11 @@ static void example_ir_rx_task(void *arg)
 
     //get RMT RX ringbuffer
     rmt_get_ringbuf_handle(example_rx_channel, &rb);
+    assert(rb != NULL);
     // Start receive
     rmt_rx_start(example_rx_channel, true);
-    while (rb) {
-        items = (rmt_item32_t *) xRingbufferReceive(rb, &length, 1000);
+    while (1) {
+        items = (rmt_item32_t *) xRingbufferReceive(rb, &length, portMAX_DELAY);
         if (items) {
             length /= 4; // one RMT = 4 Bytes
             if (ir_parser->input(ir_parser, items, length) == ESP_OK) {
@@ -60,8 +61,6 @@ static void example_ir_rx_task(void *arg)
             }
             //after parsing the data, return spaces to ringbuffer.
             vRingbufferReturnItem(rb, (void *) items);
-        } else {
-            break;
         }
     }
     ir_parser->del(ir_parser);