]> granicus.if.org Git - esp-idf/commitdiff
rmt test: add case test test the bug of re-install problem
authorhouchenyao <houchenyao@espressif.com>
Thu, 6 Sep 2018 04:00:36 +0000 (12:00 +0800)
committerhouchenyao <houchenyao@espressif.com>
Thu, 6 Sep 2018 11:43:30 +0000 (19:43 +0800)
add pending bug case:rmt_tx_stop function cause the re-install fail when rmt_config_t.tx_config.loop_en==true

components/driver/test/test_rmt.c

index de48e3284c4678696bb75525786e21ed3731f705..8ac5cbbe7073a7ae2479c36c0a835feb27b12390 100644 (file)
@@ -710,4 +710,61 @@ TEST_CASE("RMT TX stop test", "[rmt][test_env=UT_T1_RMT]")
     TEST_ESP_OK(rmt_driver_uninstall(RMT_RX_CHANNEL));
 }
 
+TEST_CASE("RMT loop_en test", "[rmt][test_env=UT_T1_RMT][ignore]")
+{
+    rmt_tx_config_t tx_cfg = {
+        .loop_en = true,  // set it as true
+        .carrier_duty_percent = 50,
+        .carrier_freq_hz = 38000,
+        .carrier_level = 1,
+        .carrier_en = RMT_TX_CARRIER_EN,
+        .idle_level = 0,
+        .idle_output_en = true,
+    };
+    rmt_config_t rmt_tx = {
+        .channel = RMT_TX_CHANNEL,
+        .gpio_num = RMT_TX_GPIO_NUM,
+        .mem_block_num = 1,
+        .clk_div = RMT_CLK_DIV,
+        .tx_config = tx_cfg,
+        .rmt_mode = 0,
+    };
+    rmt_config(&rmt_tx);
+    rmt_driver_install(rmt_tx.channel, 0, 0);
+    TEST_ESP_OK(rmt_driver_uninstall(RMT_TX_CHANNEL));
+
+    int rx_channel = RMT_RX_CHANNEL;
+    rx_init();
+    RingbufHandle_t rb = NULL;
+    rmt_get_ringbuf_handle(rx_channel, &rb);
+    rmt_rx_start(rx_channel, 1);
+    vTaskDelay(10);
+    tx_init();
+    int tx_channel = RMT_TX_CHANNEL;
+    int tx_num = RMT_TX_DATA_NUM;
+
+    ESP_LOGI(TAG, "RMT TX DATA");
+    size_t size = (sizeof(rmt_item32_t) * DATA_ITEM_NUM * tx_num);
+    rmt_item32_t* item = (rmt_item32_t*) malloc(size);
+    int item_num = DATA_ITEM_NUM * tx_num;
+    memset((void*) item, 0, size);
+    int offset = 0;
+    uint16_t cmd = 0x0;
+    uint16_t addr = 0x11;
+
+    // send data
+    set_tx_data(tx_channel, cmd, addr, item_num, item, offset);
+    rmt_write_items(tx_channel, item, item_num, 0);
+    vTaskDelay(1000 / portTICK_PERIOD_MS);
+    rmt_tx_stop(tx_channel);
+    free(item);
+
+    // receive data
+    uint16_t tmp = get_rx_data(rb);
+    TEST_ASSERT(tmp < 100);
+
+    TEST_ESP_OK(rmt_driver_uninstall(RMT_TX_CHANNEL));
+    TEST_ESP_OK(rmt_driver_uninstall(RMT_RX_CHANNEL));
+}
+