From f9b167103f3f7d0d8d8a162659adf5c4f2fadcb3 Mon Sep 17 00:00:00 2001 From: Chen Yi Qun Date: Tue, 11 Aug 2020 15:19:20 +0800 Subject: [PATCH] bugfix(ut): fix rtcio pullup/pulldown and rtcio hold unit test --- components/driver/test/test_rtcio.c | 98 ++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 22 deletions(-) diff --git a/components/driver/test/test_rtcio.c b/components/driver/test/test_rtcio.c index 42b9c69d52..7e84ea9563 100644 --- a/components/driver/test/test_rtcio.c +++ b/components/driver/test/test_rtcio.c @@ -22,6 +22,56 @@ #define TEST_COUNT 10 static const char *TAG = "rtcio_test"; +#ifdef CONFIG_IDF_TARGET_ESP32 +#define TEST_GPIO_PIN_COUNT 16 +const int s_test_map[TEST_GPIO_PIN_COUNT] = { + // GPIO_NUM_0, //GPIO0 // Workaround: GPIO0 is strap pin, can not be used pullup/pulldown test. + GPIO_NUM_2, //GPIO2 + GPIO_NUM_4, //GPIO4 + // GPIO_NUM_12, //GPIO12 // Workaround: GPIO12 is strap pin, can not be used pullup/pulldown test. + GPIO_NUM_13, //GPIO13 + GPIO_NUM_14, //GPIO14 + GPIO_NUM_15, //GPIO15 + GPIO_NUM_25, //GPIO25 + GPIO_NUM_26, //GPIO26 + GPIO_NUM_27, //GPIO27 + GPIO_NUM_32, //GPIO32 + GPIO_NUM_33, //GPIO33 + GPIO_NUM_34, //GPIO34 + GPIO_NUM_35, //GPIO35 + GPIO_NUM_36, //GPIO36 + GPIO_NUM_37, //GPIO37 + GPIO_NUM_38, //GPIO38 + GPIO_NUM_39, //GPIO39 +}; +#elif defined CONFIG_IDF_TARGET_ESP32S2 +#define TEST_GPIO_PIN_COUNT 20 +const int s_test_map[TEST_GPIO_PIN_COUNT] = { + // GPIO_NUM_0, //GPIO0 // Workaround: GPIO0 is strap pin, can not be used pullup/pulldown test. + GPIO_NUM_1, //GPIO1 + GPIO_NUM_2, //GPIO2 + GPIO_NUM_3, //GPIO3 + GPIO_NUM_4, //GPIO4 + GPIO_NUM_5, //GPIO5 + GPIO_NUM_6, //GPIO6 + GPIO_NUM_7, //GPIO7 + GPIO_NUM_8, //GPIO8 + GPIO_NUM_9, //GPIO9 + GPIO_NUM_10, //GPIO10 + GPIO_NUM_11, //GPIO11 + GPIO_NUM_12, //GPIO12 + GPIO_NUM_13, //GPIO13 + GPIO_NUM_14, //GPIO14 + GPIO_NUM_15, //GPIO15 + GPIO_NUM_16, //GPIO16 + GPIO_NUM_17, //GPIO17 + // GPIO_NUM_18, //GPIO18 // Workaround: IO18 is pullup outside in ESP32S2-Saola Runner. + GPIO_NUM_19, //GPIO19 + GPIO_NUM_20, //GPIO20 + GPIO_NUM_21, //GPIO21 +}; +#endif + /* * Test output/input function. */ @@ -71,33 +121,33 @@ TEST_CASE("RTCIO pullup/pulldown test", "[rtcio]") { ESP_LOGI(TAG, "RTCIO pullup/pulldown test"); // init rtcio - for (int i = 0; i < GPIO_PIN_COUNT; i++) { - int num = rtc_io_number_get(i); - if (rtc_gpio_is_valid_gpio(i) && num > 0 && rtc_io_desc[num].pullup != 0) { - RTCIO_CHECK( rtc_gpio_init(i) ); - RTCIO_CHECK( rtc_gpio_set_direction(i, RTC_GPIO_MODE_INPUT_ONLY) ); - RTCIO_CHECK( rtc_gpio_pullup_dis(i) ); - RTCIO_CHECK( rtc_gpio_pulldown_dis(i) ); - ESP_LOGI(TAG, "gpio %d init", i); + for (int i = 0; i < TEST_GPIO_PIN_COUNT; i++) { + int num = rtc_io_number_get(s_test_map[i]); + if (rtc_gpio_is_valid_gpio(s_test_map[i]) && num > 0 && rtc_io_desc[num].pullup != 0) { + RTCIO_CHECK( rtc_gpio_init(s_test_map[i]) ); + RTCIO_CHECK( rtc_gpio_set_direction(s_test_map[i], RTC_GPIO_MODE_INPUT_ONLY) ); + RTCIO_CHECK( rtc_gpio_pullup_dis(s_test_map[i]) ); + RTCIO_CHECK( rtc_gpio_pulldown_dis(s_test_map[i]) ); + ESP_LOGI(TAG, "gpio %d init", s_test_map[i]); } } for (int cnt = 0; cnt < TEST_COUNT; cnt++) { uint32_t level = cnt % 2; ESP_LOGI(TAG, "RTCIO pull level %d", level); - for (int i = 0; i < GPIO_PIN_COUNT; i++) { - int num = rtc_io_number_get(i); - if (rtc_gpio_is_valid_gpio(i) && num > 0 && rtc_io_desc[num].pullup != 0) { + for (int i = 0; i < TEST_GPIO_PIN_COUNT; i++) { + int num = rtc_io_number_get(s_test_map[i]); + if (rtc_gpio_is_valid_gpio(s_test_map[i]) && num > 0 && rtc_io_desc[num].pullup != 0) { if (level) { - RTCIO_CHECK( rtc_gpio_pulldown_dis(i) ); - RTCIO_CHECK( rtc_gpio_pullup_en(i) ); + RTCIO_CHECK( rtc_gpio_pulldown_dis(s_test_map[i]) ); + RTCIO_CHECK( rtc_gpio_pullup_en(s_test_map[i]) ); } else { - RTCIO_CHECK( rtc_gpio_pullup_dis(i) ); - RTCIO_CHECK( rtc_gpio_pulldown_en(i) ); + RTCIO_CHECK( rtc_gpio_pullup_dis(s_test_map[i]) ); + RTCIO_CHECK( rtc_gpio_pulldown_en(s_test_map[i]) ); } vTaskDelay(20 / portTICK_RATE_MS); - if (rtc_gpio_get_level(i) != level) { - ESP_LOGE(TAG, "RTCIO pullup/pulldown test err, gpio%d", i); + if (rtc_gpio_get_level(s_test_map[i]) != level) { + ESP_LOGE(TAG, "RTCIO pullup/pulldown test err, gpio%d", s_test_map[i]); } } } @@ -105,10 +155,10 @@ TEST_CASE("RTCIO pullup/pulldown test", "[rtcio]") } // Deinit rtcio - for (int i = 0; i < GPIO_PIN_COUNT; i++) { - int num = rtc_io_number_get(i); - if (rtc_gpio_is_valid_gpio(i) && num > 0 && rtc_io_desc[num].pullup != 0) { - RTCIO_CHECK( rtc_gpio_deinit(i) ); + for (int i = 0; i < TEST_GPIO_PIN_COUNT; i++) { + int num = rtc_io_number_get(s_test_map[i]); + if (rtc_gpio_is_valid_gpio(s_test_map[i]) && num > 0 && rtc_io_desc[num].pullup != 0) { + RTCIO_CHECK( rtc_gpio_deinit(s_test_map[i]) ); } } ESP_LOGI(TAG, "RTCIO pullup/pulldown test over"); @@ -188,7 +238,11 @@ TEST_CASE("RTCIO output hold test", "[rtcio]") } //unhold all rtcio. - rtc_gpio_force_hold_dis_all(); + for (int i = 0; i < GPIO_PIN_COUNT; i++) { + if (GPIO_IS_VALID_OUTPUT_GPIO(i) && rtc_gpio_is_valid_gpio(i)) { + RTCIO_CHECK( rtc_gpio_hold_dis(i) ); + } + } // check the unhold status for (int cnt = 0; cnt < 4; cnt++) {