From 5e4ab6481fa5086dc802b82e759773e615a6fcc2 Mon Sep 17 00:00:00 2001 From: wangyuanze Date: Tue, 2 Aug 2022 19:01:40 +0800 Subject: [PATCH] touch_sensor: move unit tests to test_app --- components/driver/.build-test-rules.yml | 8 ++++ components/driver/test/CMakeLists.txt | 4 +- .../test_apps/touch_sensor_v1/CMakeLists.txt | 5 +++ .../test_apps/touch_sensor_v1/README.md | 2 + .../touch_sensor_v1/main/CMakeLists.txt | 3 ++ .../touch_sensor_v1/main/test_app_main.c | 40 +++++++++++++++++ .../touch_sensor_v1/main}/test_touch_v1.c | 29 ++++++++----- .../touch_sensor_v1/pytest_touch_sensor_v1.py | 12 ++++++ .../touch_sensor_v1/sdkconfig.defaults | 2 + .../test_apps/touch_sensor_v2/CMakeLists.txt | 5 +++ .../test_apps/touch_sensor_v2/README.md | 2 + .../touch_sensor_v2/main/CMakeLists.txt | 3 ++ .../touch_sensor_v2/main/test_app_main.c | 41 ++++++++++++++++++ .../touch_sensor_v2/main}/test_touch_v2.c | 43 ++++++++----------- .../touch_sensor_v2/main}/touch_scope.c | 2 +- .../touch_sensor_v2/main}/touch_scope.h | 2 +- .../touch_sensor_v2/pytest_touch_sensor_v2.py | 13 ++++++ .../touch_sensor_v2/sdkconfig.defaults | 2 + 18 files changed, 178 insertions(+), 40 deletions(-) create mode 100644 components/driver/test_apps/touch_sensor_v1/CMakeLists.txt create mode 100644 components/driver/test_apps/touch_sensor_v1/README.md create mode 100644 components/driver/test_apps/touch_sensor_v1/main/CMakeLists.txt create mode 100644 components/driver/test_apps/touch_sensor_v1/main/test_app_main.c rename components/driver/{test/touch_sensor_test => test_apps/touch_sensor_v1/main}/test_touch_v1.c (94%) create mode 100644 components/driver/test_apps/touch_sensor_v1/pytest_touch_sensor_v1.py create mode 100644 components/driver/test_apps/touch_sensor_v1/sdkconfig.defaults create mode 100644 components/driver/test_apps/touch_sensor_v2/CMakeLists.txt create mode 100644 components/driver/test_apps/touch_sensor_v2/README.md create mode 100644 components/driver/test_apps/touch_sensor_v2/main/CMakeLists.txt create mode 100644 components/driver/test_apps/touch_sensor_v2/main/test_app_main.c rename components/driver/{test/touch_sensor_test => test_apps/touch_sensor_v2/main}/test_touch_v2.c (97%) rename components/driver/{test/touch_sensor_test => test_apps/touch_sensor_v2/main}/touch_scope.c (98%) rename components/driver/{test/touch_sensor_test/include => test_apps/touch_sensor_v2/main}/touch_scope.h (89%) create mode 100644 components/driver/test_apps/touch_sensor_v2/pytest_touch_sensor_v2.py create mode 100644 components/driver/test_apps/touch_sensor_v2/sdkconfig.defaults diff --git a/components/driver/.build-test-rules.yml b/components/driver/.build-test-rules.yml index 69fef02250..a2f4dbc567 100644 --- a/components/driver/.build-test-rules.yml +++ b/components/driver/.build-test-rules.yml @@ -43,3 +43,11 @@ components/driver/test_apps/sdm: components/driver/test_apps/temperature_sensor: disable: - if: SOC_TEMP_SENSOR_SUPPORTED != 1 + +components/driver/test_apps/touch_sensor_v1: + disable: + - if: SOC_TOUCH_VERSION_1 != 1 + +components/driver/test_apps/touch_sensor_v2: + disable: + - if: SOC_TOUCH_VERSION_2 != 1 diff --git a/components/driver/test/CMakeLists.txt b/components/driver/test/CMakeLists.txt index d428eb0b32..ae79c8d854 100644 --- a/components/driver/test/CMakeLists.txt +++ b/components/driver/test/CMakeLists.txt @@ -1,5 +1,5 @@ -idf_component_register(SRC_DIRS . param_test touch_sensor_test dac_dma_test - PRIV_INCLUDE_DIRS include param_test/include touch_sensor_test/include +idf_component_register(SRC_DIRS . param_test dac_dma_test + PRIV_INCLUDE_DIRS include param_test/include PRIV_REQUIRES cmock test_utils driver nvs_flash esp_serial_slave_link esp_timer esp_adc esp_event esp_wifi) target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format") diff --git a/components/driver/test_apps/touch_sensor_v1/CMakeLists.txt b/components/driver/test_apps/touch_sensor_v1/CMakeLists.txt new file mode 100644 index 0000000000..9cabb5df76 --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v1/CMakeLists.txt @@ -0,0 +1,5 @@ +# This is the project CMakeLists.txt file for the test subproject +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(touch_sensor_v1_test) diff --git a/components/driver/test_apps/touch_sensor_v1/README.md b/components/driver/test_apps/touch_sensor_v1/README.md new file mode 100644 index 0000000000..f708a1985a --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v1/README.md @@ -0,0 +1,2 @@ +| Supported Targets | ESP32 | +| ----------------- | ----- | diff --git a/components/driver/test_apps/touch_sensor_v1/main/CMakeLists.txt b/components/driver/test_apps/touch_sensor_v1/main/CMakeLists.txt new file mode 100644 index 0000000000..c13250644d --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v1/main/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "test_app_main.c" "test_touch_v1.c" + WHOLE_ARCHIVE +) diff --git a/components/driver/test_apps/touch_sensor_v1/main/test_app_main.c b/components/driver/test_apps/touch_sensor_v1/main/test_app_main.c new file mode 100644 index 0000000000..896caa3200 --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v1/main/test_app_main.c @@ -0,0 +1,40 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "unity.h" +#include "unity_test_runner.h" +#include "esp_heap_caps.h" + +#define TEST_MEMORY_LEAK_THRESHOLD (-200) + +static size_t before_free_8bit; +static size_t before_free_32bit; + +static void check_leak(size_t before_free, size_t after_free, const char *type) +{ + ssize_t delta = after_free - before_free; + printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta); + TEST_ASSERT_MESSAGE(delta >= TEST_MEMORY_LEAK_THRESHOLD, "memory leak"); +} + +void setUp(void) +{ + before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); +} + +void tearDown(void) +{ + size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); + check_leak(before_free_8bit, after_free_8bit, "8BIT"); + check_leak(before_free_32bit, after_free_32bit, "32BIT"); +} + +void app_main(void) +{ + unity_run_menu(); +} diff --git a/components/driver/test/touch_sensor_test/test_touch_v1.c b/components/driver/test_apps/touch_sensor_v1/main/test_touch_v1.c similarity index 94% rename from components/driver/test/touch_sensor_test/test_touch_v1.c rename to components/driver/test_apps/touch_sensor_v1/main/test_touch_v1.c index ba734317d6..350c550b47 100644 --- a/components/driver/test/touch_sensor_test/test_touch_v1.c +++ b/components/driver/test_apps/touch_sensor_v1/main/test_touch_v1.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,7 +8,6 @@ Tests for the touch sensor device driver for ESP32 */ #include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32 #include "esp_system.h" #include "driver/touch_pad.h" @@ -17,8 +16,6 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_log.h" -#include "nvs_flash.h" -#include "test_utils.h" #include "soc/rtc_cntl_reg.h" #include "soc/rtc_cntl_struct.h" #include "soc/sens_reg.h" @@ -28,6 +25,9 @@ #include "soc/rtc_io_reg.h" #include "soc/rtc_io_struct.h" #include "esp_rom_sys.h" +#if CONFIG_PM_ENABLE +#include "esp_pm.h" +#endif static const char *TAG = "test_touch"; @@ -40,9 +40,9 @@ static const char *TAG = "test_touch"; TEST_ASSERT_EQUAL_UINT32(REG_GET_FIELD(RTC_IO_DATE_REG, RTC_IO_IO_DATE), RTCIO.date.date); \ }) -#define TOUCH_READ_ERROR (100) -#define TEST_TOUCH_COUNT_NUM (10) -#define TEST_TOUCH_CHANNEL (3) +#define TOUCH_READ_ERROR_THRESH (0.1) // 10% error +#define TEST_TOUCH_COUNT_NUM (10) +#define TEST_TOUCH_CHANNEL (3) static touch_pad_t touch_list[TEST_TOUCH_CHANNEL] = { // TOUCH_PAD_NUM0, // TOUCH_PAD_NUM1 is GPIO0, for download. @@ -158,7 +158,7 @@ static esp_err_t test_touch_timer_read(void) for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) { TEST_ESP_OK( touch_pad_read(touch_list[i], &touch_temp[i]) ); TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_temp[i]); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]); } vTaskDelay(50 / portTICK_PERIOD_MS); } @@ -192,7 +192,7 @@ static esp_err_t test_touch_filtered_read(void) TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_value); TEST_ESP_OK( touch_pad_read_filtered(touch_list[i], &touch_temp) ); TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_temp); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value); printf("T%d:[%4d] ", touch_list[i], touch_value); } vTaskDelay(50 / portTICK_PERIOD_MS); @@ -207,11 +207,20 @@ static esp_err_t test_touch_filtered_read(void) // test the basic configuration function with right parameters and error parameters TEST_CASE("Touch Sensor all channel read test", "[touch]") { +#if CONFIG_PM_ENABLE + esp_pm_lock_handle_t pm_lock; + esp_pm_lock_create(ESP_PM_NO_LIGHT_SLEEP, 0, "test_touch", &pm_lock); + esp_pm_lock_acquire(pm_lock); +#endif TOUCH_REG_BASE_TEST(); test_touch_sw_read_test_runner(); TEST_ESP_OK( test_touch_sw_read() ); TEST_ESP_OK( test_touch_timer_read() ); TEST_ESP_OK( test_touch_filtered_read() ); +#if CONFIG_PM_ENABLE + esp_pm_lock_release(pm_lock); + esp_pm_lock_delete(pm_lock); +#endif } static int test_touch_parameter(touch_pad_t pad_num, int meas_time, int slp_time, int vol_h, int vol_l, int vol_a, int slope) @@ -367,5 +376,3 @@ TEST_CASE("Touch Sensor interrupt test", "[touch]") { TEST_ESP_OK( test_touch_interrupt() ); } - -#endif // CONFIG_IDF_TARGET_ESP32 diff --git a/components/driver/test_apps/touch_sensor_v1/pytest_touch_sensor_v1.py b/components/driver/test_apps/touch_sensor_v1/pytest_touch_sensor_v1.py new file mode 100644 index 0000000000..86edab8560 --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v1/pytest_touch_sensor_v1.py @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Unlicense OR CC0-1.0 +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32 +@pytest.mark.generic +def test_touch_sensor_v1(dut: Dut) -> None: + dut.expect_exact('Press ENTER to see the list of tests') + dut.write('*') + dut.expect_unity_test_output(timeout=60) diff --git a/components/driver/test_apps/touch_sensor_v1/sdkconfig.defaults b/components/driver/test_apps/touch_sensor_v1/sdkconfig.defaults new file mode 100644 index 0000000000..b308cb2ddd --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v1/sdkconfig.defaults @@ -0,0 +1,2 @@ +CONFIG_FREERTOS_HZ=1000 +CONFIG_ESP_TASK_WDT=n diff --git a/components/driver/test_apps/touch_sensor_v2/CMakeLists.txt b/components/driver/test_apps/touch_sensor_v2/CMakeLists.txt new file mode 100644 index 0000000000..59a612d92c --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v2/CMakeLists.txt @@ -0,0 +1,5 @@ +# This is the project CMakeLists.txt file for the test subproject +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(touch_sensor_v2_test) diff --git a/components/driver/test_apps/touch_sensor_v2/README.md b/components/driver/test_apps/touch_sensor_v2/README.md new file mode 100644 index 0000000000..af8190f914 --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v2/README.md @@ -0,0 +1,2 @@ +| Supported Targets | ESP32-S2 | ESP32-S3 | +| ----------------- | -------- | -------- | diff --git a/components/driver/test_apps/touch_sensor_v2/main/CMakeLists.txt b/components/driver/test_apps/touch_sensor_v2/main/CMakeLists.txt new file mode 100644 index 0000000000..ef5f0d8fa2 --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v2/main/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "test_app_main.c" "test_touch_v2.c" "touch_scope.c" + WHOLE_ARCHIVE +) diff --git a/components/driver/test_apps/touch_sensor_v2/main/test_app_main.c b/components/driver/test_apps/touch_sensor_v2/main/test_app_main.c new file mode 100644 index 0000000000..0ea01c452c --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v2/main/test_app_main.c @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "unity.h" +#include "unity_test_runner.h" +#include "esp_heap_caps.h" + +// que_touch may be created in any case and reused among all cases so we can't free it, the threshold is left for that +#define TEST_MEMORY_LEAK_THRESHOLD (-500) + +static size_t before_free_8bit; +static size_t before_free_32bit; + +static void check_leak(size_t before_free, size_t after_free, const char *type) +{ + ssize_t delta = after_free - before_free; + printf("MALLOC_CAP_%s: Before %u bytes free, After %u bytes free (delta %d)\n", type, before_free, after_free, delta); + TEST_ASSERT_MESSAGE(delta >= TEST_MEMORY_LEAK_THRESHOLD, "memory leak"); +} + +void setUp(void) +{ + before_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + before_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); +} + +void tearDown(void) +{ + size_t after_free_8bit = heap_caps_get_free_size(MALLOC_CAP_8BIT); + size_t after_free_32bit = heap_caps_get_free_size(MALLOC_CAP_32BIT); + check_leak(before_free_8bit, after_free_8bit, "8BIT"); + check_leak(before_free_32bit, after_free_32bit, "32BIT"); +} + +void app_main(void) +{ + unity_run_menu(); +} diff --git a/components/driver/test/touch_sensor_test/test_touch_v2.c b/components/driver/test_apps/touch_sensor_v2/main/test_touch_v2.c similarity index 97% rename from components/driver/test/touch_sensor_test/test_touch_v2.c rename to components/driver/test_apps/touch_sensor_v2/main/test_touch_v2.c index 5ddd7cbe4a..928cb09971 100644 --- a/components/driver/test/touch_sensor_test/test_touch_v2.c +++ b/components/driver/test_apps/touch_sensor_v2/main/test_touch_v2.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,7 +8,6 @@ Tests for the touch sensor device driver for ESP32-S2 & ESP32-S3 */ #include "sdkconfig.h" -#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 #include #include @@ -21,7 +20,6 @@ #include "freertos/semphr.h" #include "freertos/queue.h" #include "esp_log.h" -#include "test_utils.h" #include "soc/rtc_cntl_reg.h" #include "soc/rtc_cntl_struct.h" #include "soc/sens_reg.h" @@ -60,7 +58,7 @@ void test_pxp_deinit_io(void) #endif #define TOUCH_READ_INVALID_VAL (SOC_TOUCH_PAD_THRESHOLD_MAX) -#define TOUCH_READ_ERROR (100) +#define TOUCH_READ_ERROR_THRESH (0.1) // 10% error #define TOUCH_INTR_THRESHOLD (0.1) #define TOUCH_EXCEED_TIME_MS (1000) @@ -235,7 +233,7 @@ esp_err_t test_touch_sw_read(void) /* Check the stable of reading. */ for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) { if (touch_temp[i]) { - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]); } touch_temp[i] = touch_value[i]; } @@ -304,7 +302,7 @@ esp_err_t test_touch_timer_read(void) printf("\n"); for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) { if (touch_temp[i]) { - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]); } touch_temp[i] = touch_value[i]; } @@ -369,10 +367,10 @@ esp_err_t test_touch_filtered_read(void) TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_value[i]); TEST_ESP_OK( touch_pad_read_raw_data(touch_list[i], &touch_temp[i]) ); TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_temp[i]); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]); TEST_ESP_OK( touch_pad_filter_read_smooth(touch_list[i], &touch_temp[i]) ); TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_temp[i]); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]); } printf("touch filter init value:\n"); printf_touch_hw_read("raw "); @@ -386,13 +384,13 @@ esp_err_t test_touch_filtered_read(void) for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) { TEST_ESP_OK( touch_pad_read_raw_data(touch_list[i], &touch_value[i]) ); TEST_ESP_OK( touch_pad_read_benchmark(touch_list[i], &touch_temp[i]) ); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]); TEST_ESP_OK( touch_pad_filter_read_smooth(touch_list[i], &touch_temp[i]) ); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]); } for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) { if (touch_temp[i]) { - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp[i], touch_value[i]); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp[i]*TOUCH_READ_ERROR_THRESH), touch_temp[i], touch_value[i]); } touch_temp[i] = touch_value[i]; } @@ -461,15 +459,15 @@ int test_touch_base_parameter(touch_pad_t pad_num, int meas_time, int slp_time, /* Correctness of reading. Ideal: benchmark == raw data == smooth data. */ TEST_ESP_OK( touch_pad_read_raw_data(pad_num, &touch_value) ); TEST_ESP_OK( touch_pad_read_benchmark(pad_num, &touch_filter) ); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_filter, touch_value); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_filter*TOUCH_READ_ERROR_THRESH), touch_filter, touch_value); TEST_ESP_OK( touch_pad_filter_read_smooth(pad_num, &touch_filter) ); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_filter, touch_value); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_filter*TOUCH_READ_ERROR_THRESH), touch_filter, touch_value); /* Stable of reading */ TEST_ESP_OK( touch_pad_read_raw_data(pad_num, &touch_value) ); TEST_ASSERT_NOT_EQUAL(TOUCH_READ_INVALID_VAL, touch_value); if (touch_temp) { - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value); } touch_temp = touch_value; @@ -764,7 +762,6 @@ static void test_touch_intr_cb(void *arg) evt.pad_num = touch_pad_get_current_meas_channel(); if (!evt.intr_mask) { - esp_rom_printf("."); return; } if (evt.intr_mask & TOUCH_PAD_INTR_MASK_SCAN_DONE) { @@ -778,7 +775,6 @@ static void test_touch_intr_cb(void *arg) } if (evt.intr_mask & TOUCH_PAD_INTR_MASK_TIMEOUT) { s_touch_timeout_mask |= (BIT(evt.pad_num)); - esp_rom_printf("-%dtout-", SENS.sar_touch_status0.touch_scan_curr); } xQueueSendFromISR(que_touch, &evt, &task_awoken); @@ -1668,13 +1664,13 @@ esp_err_t test_touch_sleep_reading_stable(touch_pad_t sleep_pad) for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) { TEST_ESP_OK( touch_pad_sleep_channel_read_data(sleep_pad, &touch_value) ); TEST_ESP_OK( touch_pad_sleep_channel_read_benchmark(sleep_pad, &touch_temp) ); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value); TEST_ESP_OK( touch_pad_sleep_channel_read_smooth(sleep_pad, &touch_temp) ); - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value); } for (int i = 0; i < TEST_TOUCH_CHANNEL; i++) { if (touch_temp) { - TEST_ASSERT_UINT32_WITHIN(TOUCH_READ_ERROR, touch_temp, touch_value); + TEST_ASSERT_UINT32_WITHIN((uint32_t)((float)touch_temp*TOUCH_READ_ERROR_THRESH), touch_temp, touch_value); } touch_temp = touch_value; } @@ -1929,6 +1925,8 @@ esp_err_t test_touch_sleep_pad_interrupt_wakeup_deep_sleep(touch_pad_t sleep_pad return ESP_OK; } +#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3) //TODO: IDF-5218 + #include #include "esp_sleep.h" @@ -1979,10 +1977,6 @@ static void test_deep_sleep_init(void) TEST_CASE("Touch Sensor sleep pad wakeup deep sleep test", "[touch][ignore]") { -//TODO: IDF-5218 -#if TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2) - abort(); -#endif //TEMPORARY_DISABLED_FOR_TARGETS(..) test_deep_sleep_init(); /* Change the work duty of touch sensor to reduce current. */ @@ -1997,6 +1991,7 @@ TEST_CASE("Touch Sensor sleep pad wakeup deep sleep test", "[touch][ignore]") esp_deep_sleep_start(); } +#endif //TEMPORARY_DISABLED_FOR_TARGETS(..) #include "touch_scope.h" /* @@ -2140,5 +2135,3 @@ void test_touch_slope_debug(int pad_num) #endif TEST_ESP_OK( touch_pad_deinit() ); } - -#endif // CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 diff --git a/components/driver/test/touch_sensor_test/touch_scope.c b/components/driver/test_apps/touch_sensor_v2/main/touch_scope.c similarity index 98% rename from components/driver/test/touch_sensor_test/touch_scope.c rename to components/driver/test_apps/touch_sensor_v2/main/touch_scope.c index f9f995077e..94e30a131e 100644 --- a/components/driver/test/touch_sensor_test/touch_scope.c +++ b/components/driver/test_apps/touch_sensor_v2/main/touch_scope.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ diff --git a/components/driver/test/touch_sensor_test/include/touch_scope.h b/components/driver/test_apps/touch_sensor_v2/main/touch_scope.h similarity index 89% rename from components/driver/test/touch_sensor_test/include/touch_scope.h rename to components/driver/test_apps/touch_sensor_v2/main/touch_scope.h index d95647af1f..79993ea470 100644 --- a/components/driver/test/touch_sensor_test/include/touch_scope.h +++ b/components/driver/test_apps/touch_sensor_v2/main/touch_scope.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ diff --git a/components/driver/test_apps/touch_sensor_v2/pytest_touch_sensor_v2.py b/components/driver/test_apps/touch_sensor_v2/pytest_touch_sensor_v2.py new file mode 100644 index 0000000000..f21311808c --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v2/pytest_touch_sensor_v2.py @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Unlicense OR CC0-1.0 +import pytest +from pytest_embedded import Dut + + +@pytest.mark.esp32s2 +@pytest.mark.esp32s3 +@pytest.mark.generic +def test_touch_sensor_v2(dut: Dut) -> None: + dut.expect_exact('Press ENTER to see the list of tests') + dut.write('*') + dut.expect_unity_test_output(timeout=120) diff --git a/components/driver/test_apps/touch_sensor_v2/sdkconfig.defaults b/components/driver/test_apps/touch_sensor_v2/sdkconfig.defaults new file mode 100644 index 0000000000..b308cb2ddd --- /dev/null +++ b/components/driver/test_apps/touch_sensor_v2/sdkconfig.defaults @@ -0,0 +1,2 @@ +CONFIG_FREERTOS_HZ=1000 +CONFIG_ESP_TASK_WDT=n