From 7457ba1b71ea6322c7f5a2719623f8a6a28e9704 Mon Sep 17 00:00:00 2001 From: Fu Hanxi Date: Mon, 26 Jan 2026 12:57:16 +0100 Subject: [PATCH] fix: prevent multi-stage tests from passing when earlier stages fail --- .../pytest_embedded_idf/unity_tester.py | 86 +- pytest-embedded-qemu/tests/test_qemu.py | 10 +- .../unit_test_app_qemu/CMakeLists.txt | 7 + .../build/bootloader/bootloader.bin | Bin 0 -> 26288 bytes .../build/case_tester_example.bin | Bin 0 -> 142112 bytes .../build/config/sdkconfig.json | 1239 +++++++++++++++++ .../build/flasher_args.json | 24 + .../build/partition_table/partition-table.bin | Bin 0 -> 3072 bytes .../unit_test_app_qemu/main/CMakeLists.txt | 5 + .../main/case_tester_example.c | 110 ++ .../unit_test_app_qemu/main/test_app_main.c | 40 + 11 files changed, 1492 insertions(+), 29 deletions(-) create mode 100644 tests/fixtures/unit_test_app_qemu/CMakeLists.txt create mode 100644 tests/fixtures/unit_test_app_qemu/build/bootloader/bootloader.bin create mode 100644 tests/fixtures/unit_test_app_qemu/build/case_tester_example.bin create mode 100644 tests/fixtures/unit_test_app_qemu/build/config/sdkconfig.json create mode 100644 tests/fixtures/unit_test_app_qemu/build/flasher_args.json create mode 100644 tests/fixtures/unit_test_app_qemu/build/partition_table/partition-table.bin create mode 100644 tests/fixtures/unit_test_app_qemu/main/CMakeLists.txt create mode 100644 tests/fixtures/unit_test_app_qemu/main/case_tester_example.c create mode 100644 tests/fixtures/unit_test_app_qemu/main/test_app_main.c diff --git a/pytest-embedded-idf/pytest_embedded_idf/unity_tester.py b/pytest-embedded-idf/pytest_embedded_idf/unity_tester.py index 47373979..658d7349 100644 --- a/pytest-embedded-idf/pytest_embedded_idf/unity_tester.py +++ b/pytest-embedded-idf/pytest_embedded_idf/unity_tester.py @@ -262,11 +262,15 @@ def _hard_reset(self) -> None: self._ignore_first_ready_pattern = True pass - def _get_ready(self, timeout: float = 30) -> None: + def _get_ready(self, timeout: float = 30, *, return_before: bool = False) -> bytes | None: if self._ignore_first_ready_pattern: self._ignore_first_ready_pattern = False else: self.expect_exact(READY_PATTERN_LIST, timeout=timeout) + if return_before: + return self.pexpect_proc.before + + return None @property def test_menu(self) -> list[UnittestMenuCase]: @@ -301,6 +305,11 @@ def _analyze_test_case_result( self._add_test_case_to_suite(attrs) return + attrs = self._read_result_and_parse_attrs(case, start_time, timeout) + + self._add_test_case_to_suite(attrs) + + def _read_result_and_parse_attrs(self, case: UnittestMenuCase, start_time: float, timeout: float) -> dict: log = '' try: remaining_timeout = timeout - (time.perf_counter() - start_time) @@ -311,16 +320,39 @@ def _analyze_test_case_result( pass else: # result block exists log = remove_asci_color_code(self.pexpect_proc.before) - finally: - attrs = _parse_unity_test_output(log, case.name, self.pexpect_proc.buffer_debug_str) - attrs.update( - { - 'app_path': self.app.app_path, - 'time': round(time.perf_counter() - start_time, 3), - } - ) - self._add_test_case_to_suite(attrs) + attrs = _parse_unity_test_output(log, case.name, self.pexpect_proc.buffer_debug_str) + attrs.update( + { + 'app_path': self.app.app_path, + 'time': round(time.perf_counter() - start_time, 3), + } + ) + return attrs + + def _prepare_and_start_case(self, case: UnittestMenuCase, reset: bool, timeout: float) -> float: + if reset: + self._hard_reset() + + _start_at = time.perf_counter() + self._get_ready(timeout) + self.confirm_write(case.index, expect_str=f'Running {case.name}...') + return _start_at + + def _squash_failed_subcases(self, failed_subcases: list[dict], start_time: float) -> dict: + squashed_attrs = failed_subcases[0].copy() + if len(failed_subcases) > 1: + for key in ('stdout', 'message'): + if key in squashed_attrs: + squashed_attrs[key] = '\n---\n'.join(f.get(key, '') for f in failed_subcases) + + squashed_attrs.update( + { + 'app_path': self.app.app_path, + 'time': round(time.perf_counter() - start_time, 3), + } + ) + return squashed_attrs def _run_normal_case( self, @@ -345,12 +377,7 @@ def _run_normal_case( return try: - if reset: - self._hard_reset() - - _start_at = time.perf_counter() - self._get_ready(timeout) - self.confirm_write(case.index, expect_str=f'Running {case.name}...') + _start_at = self._prepare_and_start_case(case, reset, timeout) except Exception as e: self._analyze_test_case_result(case, e) else: @@ -379,19 +406,22 @@ def _run_multi_stage_case( return try: - if reset: - self._hard_reset() - - _start_at = time.perf_counter() - self._get_ready(timeout) - self.confirm_write(case.index, expect_str=f'Running {case.name}...') + _start_at = self._prepare_and_start_case(case, reset, timeout) except Exception as e: self._analyze_test_case_result(case, e) else: + failed_subcases = [] try: for sub_case in case.subcases: if sub_case != case.subcases[0]: - self._get_ready(timeout) + ready_before = self._get_ready(timeout, return_before=True) + if ready_before and UNITY_SUMMARY_LINE_REGEX.search(ready_before): + attrs = _parse_unity_test_output( + remove_asci_color_code(ready_before), case.name, self.pexpect_proc.buffer_debug_str + ) + if attrs['result'] == 'FAIL': + failed_subcases.append(attrs) + self.confirm_write(case.index, expect_str=f'Running {case.name}...') self.write(str(sub_case['index'])) @@ -400,7 +430,15 @@ def _run_multi_stage_case( # We'll stop sending commands and let the result recorder handle the failure. pass finally: - self._analyze_test_case_result(case, None, start_time=_start_at, timeout=timeout) + attrs = self._read_result_and_parse_attrs(case, _start_at, timeout) + + if attrs['result'] == 'FAIL': + failed_subcases.append(attrs) + + if failed_subcases: + self._add_test_case_to_suite(self._squash_failed_subcases(failed_subcases, _start_at)) + else: + self._add_test_case_to_suite(attrs) def run_single_board_case(self, name: str, reset: bool = False, timeout: float = 30) -> None: for case in self.test_menu: diff --git a/pytest-embedded-qemu/tests/test_qemu.py b/pytest-embedded-qemu/tests/test_qemu.py index b39959a8..e4acd8c9 100644 --- a/pytest-embedded-qemu/tests/test_qemu.py +++ b/pytest-embedded-qemu/tests/test_qemu.py @@ -201,7 +201,7 @@ def test_qemu_use_idf_mixin_methods(testdir): import pytest def test_qemu_use_idf_mixin_methods(dut): - dut.run_all_single_board_cases(timeout=10) + dut.run_all_single_board_cases(timeout=3) """) result = testdir.runpytest( @@ -209,7 +209,7 @@ def test_qemu_use_idf_mixin_methods(dut): '--embedded-services', 'idf,qemu', '--app-path', - f'{os.path.join(testdir.tmpdir, "unit_test_app_esp32")}', + f'{os.path.join(testdir.tmpdir, "unit_test_app_qemu")}', '--junitxml', 'report.xml', ) @@ -219,6 +219,6 @@ def test_qemu_use_idf_mixin_methods(dut): junit_report = ET.parse('report.xml').getroot()[0] assert junit_report.attrib['errors'] == '0' - assert junit_report.attrib['failures'] == '2' - assert junit_report.attrib['skipped'] == '2' - assert junit_report.attrib['tests'] == '1' + assert junit_report.attrib['failures'] == '5' + assert junit_report.attrib['skipped'] == '0' + assert junit_report.attrib['tests'] == '3' diff --git a/tests/fixtures/unit_test_app_qemu/CMakeLists.txt b/tests/fixtures/unit_test_app_qemu/CMakeLists.txt new file mode 100644 index 00000000..383d5157 --- /dev/null +++ b/tests/fixtures/unit_test_app_qemu/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.16) + +set(EXTRA_COMPONENT_DIRS + "$ENV{IDF_PATH}/tools/test_apps/components") + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(case_tester_example) diff --git a/tests/fixtures/unit_test_app_qemu/build/bootloader/bootloader.bin b/tests/fixtures/unit_test_app_qemu/build/bootloader/bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..bcf9279ea459c46ea2d55b858ae5661b09f67338 GIT binary patch literal 26288 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/unit_test_app_qemu/build/config/sdkconfig.json b/tests/fixtures/unit_test_app_qemu/build/config/sdkconfig.json new file mode 100644 index 00000000..2a9d127a --- /dev/null +++ b/tests/fixtures/unit_test_app_qemu/build/config/sdkconfig.json @@ -0,0 +1,1239 @@ +{ + "ADC_CALI_EFUSE_TP_ENABLE": true, + "ADC_CALI_EFUSE_VREF_ENABLE": true, + "ADC_CALI_LUT_ENABLE": true, + "ADC_CONTINUOUS_ISR_IRAM_SAFE": false, + "ADC_DISABLE_DAC_OUTPUT": true, + "ADC_ENABLE_DEBUG_LOG": false, + "ADC_ONESHOT_CTRL_FUNC_IN_IRAM": false, + "APP_BUILD_BOOTLOADER": true, + "APP_BUILD_GENERATE_BINARIES": true, + "APP_BUILD_TYPE_APP_2NDBOOT": true, + "APP_BUILD_TYPE_RAM": false, + "APP_BUILD_USE_FLASH_SECTIONS": true, + "APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS": false, + "APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS": false, + "APP_COMPILE_TIME_DATE": true, + "APP_EXCLUDE_PROJECT_NAME_VAR": false, + "APP_EXCLUDE_PROJECT_VER_VAR": false, + "APP_NO_BLOBS": false, + "APP_PROJECT_VER_FROM_CONFIG": false, + "APP_REPRODUCIBLE_BUILD": false, + "APP_RETRIEVE_LEN_ELF_SHA": 9, + "BLE_LOG_ENABLED": false, + "BOOTLOADER_APP_ROLLBACK_ENABLE": false, + "BOOTLOADER_APP_TEST": false, + "BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG": false, + "BOOTLOADER_COMPILER_OPTIMIZATION_PERF": false, + "BOOTLOADER_COMPILER_OPTIMIZATION_SIZE": true, + "BOOTLOADER_COMPILE_TIME_DATE": true, + "BOOTLOADER_CPU_CLK_FREQ_MHZ": 80, + "BOOTLOADER_CUSTOM_RESERVE_RTC": false, + "BOOTLOADER_FACTORY_RESET": false, + "BOOTLOADER_FLASH_DC_AWARE": false, + "BOOTLOADER_FLASH_XMC_SUPPORT": true, + "BOOTLOADER_LOG_COLORS": false, + "BOOTLOADER_LOG_LEVEL": 3, + "BOOTLOADER_LOG_LEVEL_DEBUG": false, + "BOOTLOADER_LOG_LEVEL_ERROR": false, + "BOOTLOADER_LOG_LEVEL_INFO": true, + "BOOTLOADER_LOG_LEVEL_NONE": false, + "BOOTLOADER_LOG_LEVEL_VERBOSE": false, + "BOOTLOADER_LOG_LEVEL_WARN": false, + "BOOTLOADER_LOG_MODE_TEXT": true, + "BOOTLOADER_LOG_MODE_TEXT_EN": true, + "BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS": true, + "BOOTLOADER_LOG_VERSION": 1, + "BOOTLOADER_LOG_VERSION_1": true, + "BOOTLOADER_OFFSET_IN_FLASH": 4096, + "BOOTLOADER_PROJECT_VER": 1, + "BOOTLOADER_REGION_PROTECTION_ENABLE": true, + "BOOTLOADER_RESERVE_RTC_SIZE": 0, + "BOOTLOADER_SKIP_VALIDATE_ALWAYS": false, + "BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP": false, + "BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON": false, + "BOOTLOADER_VDDSDIO_BOOST_1_8V": false, + "BOOTLOADER_VDDSDIO_BOOST_1_9V": true, + "BOOTLOADER_WDT_DISABLE_IN_USER_CODE": false, + "BOOTLOADER_WDT_ENABLE": true, + "BOOTLOADER_WDT_TIME_MS": 9000, + "BT_BLE_LOG_SPI_OUT_ENABLED": false, + "BT_BLE_LOG_UHCI_OUT_ENABLED": false, + "BT_ENABLED": false, + "BT_LE_USED_MEM_STATISTICS_ENABLED": false, + "COMPILER_ASSERT_NDEBUG_EVALUATE": false, + "COMPILER_CXX_EXCEPTIONS": false, + "COMPILER_CXX_GLIBCXX_CONSTEXPR_COLD": false, + "COMPILER_CXX_GLIBCXX_CONSTEXPR_COLD_CONSTEXPR": false, + "COMPILER_CXX_GLIBCXX_CONSTEXPR_NO_CHANGE": true, + "COMPILER_CXX_RTTI": false, + "COMPILER_DISABLE_DEFAULT_ERRORS": false, + "COMPILER_DISABLE_GCC12_WARNINGS": false, + "COMPILER_DISABLE_GCC13_WARNINGS": false, + "COMPILER_DISABLE_GCC14_WARNINGS": false, + "COMPILER_DISABLE_GCC15_WARNINGS": false, + "COMPILER_DUMP_RTL_FILES": false, + "COMPILER_FLOAT_LIB_FROM_GCCLIB": true, + "COMPILER_HIDE_PATHS_MACROS": true, + "COMPILER_NO_MERGE_CONSTANTS": false, + "COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE": false, + "COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE": true, + "COMPILER_OPTIMIZATION_ASSERTIONS_SILENT": false, + "COMPILER_OPTIMIZATION_ASSERTION_LEVEL": 2, + "COMPILER_OPTIMIZATION_CHECKS_SILENT": false, + "COMPILER_OPTIMIZATION_DEBUG": true, + "COMPILER_OPTIMIZATION_NONE": false, + "COMPILER_OPTIMIZATION_PERF": false, + "COMPILER_OPTIMIZATION_SIZE": false, + "COMPILER_ORPHAN_SECTIONS_ERROR": true, + "COMPILER_ORPHAN_SECTIONS_PLACE": false, + "COMPILER_ORPHAN_SECTIONS_WARNING": false, + "COMPILER_RT_LIB_GCCLIB": true, + "COMPILER_RT_LIB_NAME": "gcc", + "COMPILER_STACK_CHECK_MODE_ALL": false, + "COMPILER_STACK_CHECK_MODE_NONE": true, + "COMPILER_STACK_CHECK_MODE_NORM": false, + "COMPILER_STACK_CHECK_MODE_STRONG": false, + "COMPILER_STATIC_ANALYZER": false, + "COMPILER_WARN_WRITE_STRINGS": false, + "CONSOLE_SORTED_HELP": false, + "DAC_CTRL_FUNC_IN_IRAM": false, + "DAC_DMA_AUTO_16BIT_ALIGN": true, + "DAC_ENABLE_DEBUG_LOG": false, + "DAC_ISR_IRAM_SAFE": false, + "EFUSE_CODE_SCHEME_COMPAT_3_4": true, + "EFUSE_CODE_SCHEME_COMPAT_NONE": false, + "EFUSE_CODE_SCHEME_COMPAT_REPEAT": false, + "EFUSE_CUSTOM_TABLE": false, + "EFUSE_MAX_BLK_LEN": 192, + "EFUSE_VIRTUAL": false, + "ESP32_DISABLE_BASIC_ROM_CONSOLE": false, + "ESP32_REV_MAX_FULL": 399, + "ESP32_REV_MIN": 0, + "ESP32_REV_MIN_0": true, + "ESP32_REV_MIN_1": false, + "ESP32_REV_MIN_1_1": false, + "ESP32_REV_MIN_2": false, + "ESP32_REV_MIN_3": false, + "ESP32_REV_MIN_3_1": false, + "ESP32_REV_MIN_FULL": 0, + "ESP32_TRACEMEM_RESERVE_DRAM": 0, + "ESP32_TRAX": false, + "ESP32_UNIVERSAL_MAC_ADDRESSES": 4, + "ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR": true, + "ESP32_UNIVERSAL_MAC_ADDRESSES_TWO": false, + "ESP32_USE_FIXED_STATIC_RAM_SIZE": false, + "ESPHID_TASK_SIZE_BLE": 4096, + "ESPHID_TASK_SIZE_BT": 2048, + "ESPTOOLPY_AFTER": "hard-reset", + "ESPTOOLPY_AFTER_NORESET": false, + "ESPTOOLPY_AFTER_RESET": true, + "ESPTOOLPY_BEFORE": "default-reset", + "ESPTOOLPY_BEFORE_NORESET": false, + "ESPTOOLPY_BEFORE_RESET": true, + "ESPTOOLPY_FLASHFREQ": "40m", + "ESPTOOLPY_FLASHFREQ_20M": false, + "ESPTOOLPY_FLASHFREQ_26M": false, + "ESPTOOLPY_FLASHFREQ_40M": true, + "ESPTOOLPY_FLASHFREQ_80M": false, + "ESPTOOLPY_FLASHMODE": "dio", + "ESPTOOLPY_FLASHMODE_DIO": true, + "ESPTOOLPY_FLASHMODE_DOUT": false, + "ESPTOOLPY_FLASHMODE_QIO": false, + "ESPTOOLPY_FLASHMODE_QOUT": false, + "ESPTOOLPY_FLASHSIZE": "2MB", + "ESPTOOLPY_FLASHSIZE_128MB": false, + "ESPTOOLPY_FLASHSIZE_16MB": false, + "ESPTOOLPY_FLASHSIZE_1MB": false, + "ESPTOOLPY_FLASHSIZE_2MB": true, + "ESPTOOLPY_FLASHSIZE_32MB": false, + "ESPTOOLPY_FLASHSIZE_4MB": false, + "ESPTOOLPY_FLASHSIZE_64MB": false, + "ESPTOOLPY_FLASHSIZE_8MB": false, + "ESPTOOLPY_FLASH_SAMPLE_MODE_STR": true, + "ESPTOOLPY_HEADER_FLASHSIZE_UPDATE": false, + "ESPTOOLPY_MONITOR_BAUD": 115200, + "ESPTOOLPY_NO_STUB": false, + "ESP_BROWNOUT_DET": true, + "ESP_BROWNOUT_DET_LVL": 0, + "ESP_BROWNOUT_DET_LVL_SEL_0": true, + "ESP_BROWNOUT_DET_LVL_SEL_1": false, + "ESP_BROWNOUT_DET_LVL_SEL_2": false, + "ESP_BROWNOUT_DET_LVL_SEL_3": false, + "ESP_BROWNOUT_DET_LVL_SEL_4": false, + "ESP_BROWNOUT_DET_LVL_SEL_5": false, + "ESP_BROWNOUT_DET_LVL_SEL_6": false, + "ESP_BROWNOUT_DET_LVL_SEL_7": false, + "ESP_BROWNOUT_USE_INTR": true, + "ESP_COEX_ENABLED": true, + "ESP_COEX_GPIO_DEBUG": false, + "ESP_CONSOLE_NONE": false, + "ESP_CONSOLE_ROM_SERIAL_PORT_NUM": 0, + "ESP_CONSOLE_UART": true, + "ESP_CONSOLE_UART_BAUDRATE": 115200, + "ESP_CONSOLE_UART_CUSTOM": false, + "ESP_CONSOLE_UART_DEFAULT": true, + "ESP_CONSOLE_UART_NUM": 0, + "ESP_COREDUMP_ENABLE_TO_FLASH": false, + "ESP_COREDUMP_ENABLE_TO_NONE": true, + "ESP_COREDUMP_ENABLE_TO_UART": false, + "ESP_DEBUG_OCDAWARE": true, + "ESP_DEBUG_STUBS_ENABLE": false, + "ESP_DEFAULT_CPU_FREQ_MHZ": 160, + "ESP_DEFAULT_CPU_FREQ_MHZ_160": true, + "ESP_DEFAULT_CPU_FREQ_MHZ_240": false, + "ESP_DEFAULT_CPU_FREQ_MHZ_80": false, + "ESP_EFUSE_BLOCK_REV_MAX_FULL": 99, + "ESP_EFUSE_BLOCK_REV_MIN_FULL": 0, + "ESP_ERR_TO_NAME_LOOKUP": true, + "ESP_EVENT_LOOP_PROFILING": false, + "ESP_EVENT_POST_FROM_IRAM_ISR": true, + "ESP_EVENT_POST_FROM_ISR": true, + "ESP_GDBSTUB_ENABLED": true, + "ESP_GDBSTUB_MAX_TASKS": 32, + "ESP_GDBSTUB_SUPPORT_TASKS": true, + "ESP_HTTPS_OTA_ALLOW_HTTP": false, + "ESP_HTTPS_OTA_DECRYPT_CB": false, + "ESP_HTTPS_OTA_ENABLE_PARTIAL_DOWNLOAD": false, + "ESP_HTTPS_OTA_EVENT_POST_TIMEOUT": 2000, + "ESP_HTTPS_SERVER_CERT_SELECT_HOOK": false, + "ESP_HTTPS_SERVER_ENABLE": false, + "ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT": 2000, + "ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH": false, + "ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT": false, + "ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH": false, + "ESP_HTTP_CLIENT_ENABLE_GET_CONTENT_RANGE": false, + "ESP_HTTP_CLIENT_ENABLE_HTTPS": true, + "ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT": 2000, + "ESP_HW_SUPPORT_FUNC_IN_IRAM": true, + "ESP_INTR_IN_IRAM": true, + "ESP_INT_WDT": true, + "ESP_INT_WDT_CHECK_CPU1": true, + "ESP_INT_WDT_TIMEOUT_MS": 300, + "ESP_IPC_ENABLE": true, + "ESP_IPC_ISR_ENABLE": true, + "ESP_IPC_TASK_STACK_SIZE": 1024, + "ESP_IPC_USES_CALLERS_PRIORITY": true, + "ESP_MAC_ADDR_UNIVERSE_BT": true, + "ESP_MAC_ADDR_UNIVERSE_ETH": true, + "ESP_MAC_ADDR_UNIVERSE_WIFI_AP": true, + "ESP_MAC_ADDR_UNIVERSE_WIFI_STA": true, + "ESP_MAC_IGNORE_MAC_CRC_ERROR": false, + "ESP_MAC_UNIVERSAL_MAC_ADDRESSES": 4, + "ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR": true, + "ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC": false, + "ESP_MAIN_TASK_AFFINITY": 0, + "ESP_MAIN_TASK_AFFINITY_CPU0": true, + "ESP_MAIN_TASK_AFFINITY_CPU1": false, + "ESP_MAIN_TASK_AFFINITY_NO_AFFINITY": false, + "ESP_MAIN_TASK_STACK_SIZE": 3584, + "ESP_MINIMAL_SHARED_STACK_SIZE": 2048, + "ESP_NETIF_BRIDGE_EN": false, + "ESP_NETIF_IP_LOST_TIMER_INTERVAL": 120, + "ESP_NETIF_L2_TAP": false, + "ESP_NETIF_LOOPBACK": false, + "ESP_NETIF_LOST_IP_TIMER_ENABLE": true, + "ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION": false, + "ESP_NETIF_RECEIVE_REPORT_ERRORS": true, + "ESP_NETIF_REPORT_DATA_TRAFFIC": true, + "ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF": false, + "ESP_NETIF_TCPIP_LWIP": true, + "ESP_NETIF_USES_TCPIP_WITH_BSD_API": true, + "ESP_PANIC_HANDLER_IRAM": false, + "ESP_PERIPH_CTRL_FUNC_IN_IRAM": true, + "ESP_PHY_CALIBRATION_AND_DATA_STORAGE": true, + "ESP_PHY_CALIBRATION_MODE": 0, + "ESP_PHY_DEBUG": false, + "ESP_PHY_ENABLED": true, + "ESP_PHY_ENABLE_CERT_TEST": false, + "ESP_PHY_INIT_DATA_IN_PARTITION": false, + "ESP_PHY_IRAM_OPT": true, + "ESP_PHY_MAX_TX_POWER": 20, + "ESP_PHY_MAX_WIFI_TX_POWER": 20, + "ESP_PHY_PLL_TRACK_DEBUG": false, + "ESP_PHY_PLL_TRACK_PERIOD_MS": 1000, + "ESP_PHY_RECORD_USED_TIME": false, + "ESP_PHY_REDUCE_TX_POWER": false, + "ESP_PHY_RF_CAL_FULL": false, + "ESP_PHY_RF_CAL_NONE": false, + "ESP_PHY_RF_CAL_PARTIAL": true, + "ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION": true, + "ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0": false, + "ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1": false, + "ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2": true, + "ESP_REGI2C_CTRL_FUNC_IN_IRAM": true, + "ESP_REV_MAX_FULL": 399, + "ESP_REV_MIN_FULL": 0, + "ESP_ROM_HAS_CRC_BE": true, + "ESP_ROM_HAS_CRC_LE": true, + "ESP_ROM_HAS_JPEG_DECODE": true, + "ESP_ROM_HAS_MZ_CRC32": true, + "ESP_ROM_HAS_NEWLIB": true, + "ESP_ROM_HAS_NEWLIB_32BIT_TIME": true, + "ESP_ROM_HAS_NEWLIB_NANO_FORMAT": true, + "ESP_ROM_HAS_OUTPUT_PUTC_FUNC": true, + "ESP_ROM_HAS_SW_FLOAT": true, + "ESP_ROM_HAS_UART_BUF_SWITCH": true, + "ESP_ROM_NEEDS_SWSETUP_WORKAROUND": true, + "ESP_ROM_PRINT_IN_IRAM": true, + "ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB": true, + "ESP_ROM_USB_OTG_NUM": -1, + "ESP_ROM_USB_SERIAL_DEVICE_NUM": -1, + "ESP_SLEEP_CACHE_SAFE_ASSERTION": false, + "ESP_SLEEP_DEBUG": false, + "ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND": true, + "ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS": true, + "ESP_SLEEP_GPIO_RESET_WORKAROUND": false, + "ESP_SLEEP_MSPI_NEED_ALL_IO_PU": false, + "ESP_SLEEP_POWER_DOWN_FLASH": false, + "ESP_SLEEP_RTC_BUS_ISO_WORKAROUND": true, + "ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY": 2000, + "ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM": true, + "ESP_SYSTEM_CHECK_INT_LEVEL_4": true, + "ESP_SYSTEM_CHECK_INT_LEVEL_5": false, + "ESP_SYSTEM_ESP32_SRAM1_REGION_AS_IRAM": false, + "ESP_SYSTEM_EVENT_QUEUE_SIZE": 32, + "ESP_SYSTEM_EVENT_TASK_STACK_SIZE": 2304, + "ESP_SYSTEM_GDBSTUB_RUNTIME": false, + "ESP_SYSTEM_IN_IRAM": true, + "ESP_SYSTEM_PANIC_GDBSTUB": false, + "ESP_SYSTEM_PANIC_PRINT_HALT": false, + "ESP_SYSTEM_PANIC_PRINT_REBOOT": true, + "ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS": 0, + "ESP_SYSTEM_PANIC_SILENT_REBOOT": false, + "ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0": true, + "ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1": true, + "ESP_TASK_WDT_EN": true, + "ESP_TASK_WDT_INIT": true, + "ESP_TASK_WDT_PANIC": false, + "ESP_TASK_WDT_TIMEOUT_S": 5, + "ESP_TIMER_IMPL_TG0_LAC": true, + "ESP_TIMER_INTERRUPT_LEVEL": 1, + "ESP_TIMER_IN_IRAM": true, + "ESP_TIMER_ISR_AFFINITY_CPU0": true, + "ESP_TIMER_PROFILING": false, + "ESP_TIMER_SHOW_EXPERIMENTAL": false, + "ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD": false, + "ESP_TIMER_TASK_AFFINITY": 0, + "ESP_TIMER_TASK_AFFINITY_CPU0": true, + "ESP_TIMER_TASK_STACK_SIZE": 3584, + "ESP_TIME_FUNCS_USE_ESP_TIMER": true, + "ESP_TIME_FUNCS_USE_RTC_TIMER": true, + "ESP_TLS_CLIENT_SESSION_TICKETS": false, + "ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED": true, + "ESP_TLS_INSECURE": false, + "ESP_TLS_PSK_VERIFICATION": false, + "ESP_TLS_SERVER_CERT_SELECT_HOOK": false, + "ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL": false, + "ESP_TLS_SERVER_SESSION_TICKETS": false, + "ESP_TLS_USE_SECURE_ELEMENT": false, + "ESP_TLS_USING_MBEDTLS": true, + "ESP_TRACE_LIB_EXTERNAL": false, + "ESP_TRACE_LIB_NAME": "none", + "ESP_TRACE_LIB_NONE": true, + "ESP_TRACE_TRANSPORT_APPTRACE": false, + "ESP_TRACE_TRANSPORT_NAME": "none", + "ESP_TRACE_TRANSPORT_NONE": true, + "ESP_WIFI_11KV_SUPPORT": false, + "ESP_WIFI_11R_SUPPORT": false, + "ESP_WIFI_AMPDU_RX_ENABLED": true, + "ESP_WIFI_AMPDU_TX_ENABLED": true, + "ESP_WIFI_BSS_MAX_IDLE_SUPPORT": false, + "ESP_WIFI_CSI_ENABLED": false, + "ESP_WIFI_DEBUG_PRINT": false, + "ESP_WIFI_DPP_SUPPORT": false, + "ESP_WIFI_DYNAMIC_RX_BUFFER_NUM": 32, + "ESP_WIFI_DYNAMIC_RX_MGMT_BUF": 0, + "ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER": false, + "ESP_WIFI_DYNAMIC_TX_BUFFER": true, + "ESP_WIFI_DYNAMIC_TX_BUFFER_NUM": 32, + "ESP_WIFI_ENABLED": true, + "ESP_WIFI_ENABLE_SAE_H2E": true, + "ESP_WIFI_ENABLE_SAE_PK": true, + "ESP_WIFI_ENABLE_WPA3_OWE_STA": true, + "ESP_WIFI_ENABLE_WPA3_SAE": true, + "ESP_WIFI_ENTERPRISE_SUPPORT": true, + "ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER": false, + "ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM": 7, + "ESP_WIFI_EXTRA_IRAM_OPT": false, + "ESP_WIFI_GMAC_SUPPORT": true, + "ESP_WIFI_IRAM_OPT": true, + "ESP_WIFI_MBEDTLS_CRYPTO": true, + "ESP_WIFI_MBEDTLS_TLS_CLIENT": true, + "ESP_WIFI_MBO_SUPPORT": false, + "ESP_WIFI_MGMT_SBUF_NUM": 32, + "ESP_WIFI_NAN_SYNC_ENABLE": false, + "ESP_WIFI_NVS_ENABLED": true, + "ESP_WIFI_RX_BA_WIN": 6, + "ESP_WIFI_RX_IRAM_OPT": true, + "ESP_WIFI_RX_MGMT_BUF_NUM_DEF": 5, + "ESP_WIFI_SLP_BEACON_LOST_OPT": false, + "ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME": 10, + "ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME": 50, + "ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME": 15, + "ESP_WIFI_SLP_IRAM_OPT": false, + "ESP_WIFI_SOFTAP_BEACON_MAX_LEN": 752, + "ESP_WIFI_SOFTAP_SAE_SUPPORT": true, + "ESP_WIFI_SOFTAP_SUPPORT": true, + "ESP_WIFI_STATIC_RX_BUFFER_NUM": 10, + "ESP_WIFI_STATIC_RX_MGMT_BUFFER": true, + "ESP_WIFI_STATIC_TX_BUFFER": false, + "ESP_WIFI_STA_DISCONNECTED_PM_ENABLE": true, + "ESP_WIFI_TASK_PINNED_TO_CORE_0": true, + "ESP_WIFI_TASK_PINNED_TO_CORE_1": false, + "ESP_WIFI_TX_BA_WIN": 6, + "ESP_WIFI_TX_BUFFER_TYPE": 1, + "ESP_WIFI_WAPI_PSK": false, + "ESP_WIFI_WPA3_COMPATIBLE_SUPPORT": true, + "ESP_WIFI_WPS_PASSPHRASE": false, + "ESP_WIFI_WPS_RECONNECT_ON_FAIL": false, + "ESP_WIFI_WPS_SOFTAP_REGISTRAR": false, + "ESP_WIFI_WPS_STRICT": false, + "ETH_DMA_BUFFER_SIZE": 512, + "ETH_DMA_RX_BUFFER_NUM": 10, + "ETH_DMA_TX_BUFFER_NUM": 10, + "ETH_ENABLED": true, + "ETH_IRAM_OPTIMIZATION": false, + "ETH_TRANSMIT_MUTEX": false, + "ETH_USE_ESP32_EMAC": true, + "ETH_USE_OPENETH": false, + "ETH_USE_SPI_ETHERNET": true, + "FATFS_API_ENCODING_ANSI_OEM": true, + "FATFS_API_ENCODING_UTF_8": false, + "FATFS_CODEPAGE": 437, + "FATFS_CODEPAGE_437": true, + "FATFS_CODEPAGE_720": false, + "FATFS_CODEPAGE_737": false, + "FATFS_CODEPAGE_771": false, + "FATFS_CODEPAGE_775": false, + "FATFS_CODEPAGE_850": false, + "FATFS_CODEPAGE_852": false, + "FATFS_CODEPAGE_855": false, + "FATFS_CODEPAGE_857": false, + "FATFS_CODEPAGE_860": false, + "FATFS_CODEPAGE_861": false, + "FATFS_CODEPAGE_862": false, + "FATFS_CODEPAGE_863": false, + "FATFS_CODEPAGE_864": false, + "FATFS_CODEPAGE_865": false, + "FATFS_CODEPAGE_866": false, + "FATFS_CODEPAGE_869": false, + "FATFS_CODEPAGE_932": false, + "FATFS_CODEPAGE_936": false, + "FATFS_CODEPAGE_949": false, + "FATFS_CODEPAGE_950": false, + "FATFS_CODEPAGE_DYNAMIC": false, + "FATFS_DONT_TRUST_FREE_CLUSTER_CNT": 0, + "FATFS_DONT_TRUST_LAST_ALLOC": 0, + "FATFS_FS_LOCK": 0, + "FATFS_IMMEDIATE_FSYNC": false, + "FATFS_LFN_HEAP": true, + "FATFS_LFN_NONE": false, + "FATFS_LFN_STACK": false, + "FATFS_LINK_LOCK": true, + "FATFS_MAX_LFN": 255, + "FATFS_PER_FILE_CACHE": true, + "FATFS_SECTOR_4096": true, + "FATFS_SECTOR_512": false, + "FATFS_TIMEOUT_MS": 10000, + "FATFS_USE_DYN_BUFFERS": true, + "FATFS_USE_FASTSEEK": false, + "FATFS_USE_LABEL": false, + "FATFS_USE_STRFUNC_NONE": true, + "FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV": false, + "FATFS_USE_STRFUNC_WITH_CRLF_CONV": false, + "FATFS_VFS_FSTAT_BLKSIZE": 0, + "FATFS_VOLUME_COUNT": 2, + "FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER": true, + "FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE": false, + "FREERTOS_CHECK_STACKOVERFLOW_CANARY": true, + "FREERTOS_CHECK_STACKOVERFLOW_NONE": false, + "FREERTOS_CHECK_STACKOVERFLOW_PTRVAL": false, + "FREERTOS_CORETIMER_0": true, + "FREERTOS_CORETIMER_1": false, + "FREERTOS_DEBUG_OCDAWARE": true, + "FREERTOS_ENABLE_BACKWARD_COMPATIBILITY": false, + "FREERTOS_FPU_IN_ISR": false, + "FREERTOS_GENERATE_RUN_TIME_STATS": false, + "FREERTOS_HZ": 100, + "FREERTOS_IDLE_TASK_STACKSIZE": 1536, + "FREERTOS_INTERRUPT_BACKTRACE": true, + "FREERTOS_IN_IRAM": false, + "FREERTOS_ISR_STACKSIZE": 1536, + "FREERTOS_MAX_TASK_NAME_LEN": 16, + "FREERTOS_NO_AFFINITY": 2147483647, + "FREERTOS_NUMBER_OF_CORES": 2, + "FREERTOS_PORT": true, + "FREERTOS_QUEUE_REGISTRY_SIZE": 0, + "FREERTOS_SMP": false, + "FREERTOS_SUPPORT_STATIC_ALLOCATION": true, + "FREERTOS_SYSTICK_USES_CCOUNT": true, + "FREERTOS_TASK_FUNCTION_WRAPPER": true, + "FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES": 1, + "FREERTOS_TASK_PRE_DELETION_HOOK": false, + "FREERTOS_THREAD_LOCAL_STORAGE_POINTERS": 1, + "FREERTOS_TICK_SUPPORT_CORETIMER": true, + "FREERTOS_TIMER_QUEUE_LENGTH": 10, + "FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY": 2147483647, + "FREERTOS_TIMER_SERVICE_TASK_NAME": "Tmr Svc", + "FREERTOS_TIMER_TASK_AFFINITY_CPU0": false, + "FREERTOS_TIMER_TASK_AFFINITY_CPU1": false, + "FREERTOS_TIMER_TASK_NO_AFFINITY": true, + "FREERTOS_TIMER_TASK_PRIORITY": 1, + "FREERTOS_TIMER_TASK_STACK_DEPTH": 2048, + "FREERTOS_TLSP_DELETION_CALLBACKS": true, + "FREERTOS_UNICORE": false, + "FREERTOS_USE_APPLICATION_TASK_TAG": false, + "FREERTOS_USE_IDLE_HOOK": false, + "FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES": false, + "FREERTOS_USE_TICK_HOOK": false, + "FREERTOS_USE_TIMERS": true, + "FREERTOS_USE_TRACE_FACILITY": false, + "FREERTOS_WATCHPOINT_END_OF_STACK": false, + "GPIO_CTRL_FUNC_IN_IRAM": false, + "GPTIMER_CTRL_FUNC_IN_IRAM": false, + "GPTIMER_ENABLE_DEBUG_LOG": false, + "GPTIMER_ISR_CACHE_SAFE": false, + "GPTIMER_ISR_HANDLER_IN_IRAM": true, + "GPTIMER_OBJ_CACHE_SAFE": true, + "HAL_ASSERTION_DISABLE": false, + "HAL_ASSERTION_ENABLE": false, + "HAL_ASSERTION_EQUALS_SYSTEM": true, + "HAL_ASSERTION_SILENT": false, + "HAL_DEFAULT_ASSERTION_LEVEL": 2, + "HAL_GPIO_USE_ROM_IMPL": true, + "HEAP_ABORT_WHEN_ALLOCATION_FAILS": false, + "HEAP_HAS_EXEC_HEAP": true, + "HEAP_PLACE_FUNCTION_INTO_FLASH": false, + "HEAP_POISONING_COMPREHENSIVE": false, + "HEAP_POISONING_DISABLED": true, + "HEAP_POISONING_LIGHT": false, + "HEAP_TASK_TRACKING": false, + "HEAP_TRACING_OFF": true, + "HEAP_TRACING_STANDALONE": false, + "HEAP_TRACING_TOHOST": false, + "HEAP_USE_HOOKS": false, + "HTTPD_ERR_RESP_NO_DELAY": true, + "HTTPD_LOG_PURGE_DATA": false, + "HTTPD_MAX_REQ_HDR_LEN": 1024, + "HTTPD_MAX_URI_LEN": 512, + "HTTPD_PURGE_BUF_LEN": 32, + "HTTPD_QUEUE_WORK_BLOCKING": false, + "HTTPD_SERVER_EVENT_POST_TIMEOUT": 2000, + "HTTPD_WS_SUPPORT": false, + "I2C_ENABLE_DEBUG_LOG": false, + "I2C_ISR_IRAM_SAFE": false, + "I2C_MASTER_ISR_HANDLER_IN_IRAM": true, + "I2C_SKIP_LEGACY_CONFLICT_CHECK": false, + "I2C_SUPPRESS_DEPRECATE_WARN": false, + "I2S_CTRL_FUNC_IN_IRAM": false, + "I2S_ENABLE_DEBUG_LOG": false, + "I2S_ISR_IRAM_SAFE": false, + "I3C_MASTER_ENABLE_DEBUG_LOG": false, + "I3C_MASTER_ISR_CACHE_SAFE": false, + "I3C_MASTER_ISR_HANDLER_IN_IRAM": false, + "IDF_CMAKE": true, + "IDF_EXPERIMENTAL_FEATURES": false, + "IDF_FIRMWARE_CHIP_ID": 0, + "IDF_INIT_VERSION": "6.0.0", + "IDF_TARGET": "esp32", + "IDF_TARGET_ARCH": "xtensa", + "IDF_TARGET_ARCH_XTENSA": true, + "IDF_TARGET_ESP32": true, + "IDF_TOOLCHAIN": "gcc", + "IDF_TOOLCHAIN_GCC": true, + "LCD_ENABLE_DEBUG_LOG": false, + "LEDC_CTRL_FUNC_IN_IRAM": false, + "LIBC_ASSERT_BUFFER_SIZE": 200, + "LIBC_LOCKS_PLACE_IN_IRAM": true, + "LIBC_MISC_IN_IRAM": true, + "LIBC_NEWLIB": false, + "LIBC_PICOLIBC": true, + "LIBC_PICOLIBC_NEWLIB_COMPATIBILITY": true, + "LIBC_STDIN_LINE_ENDING_CR": true, + "LIBC_STDIN_LINE_ENDING_CRLF": false, + "LIBC_STDIN_LINE_ENDING_LF": false, + "LIBC_STDOUT_LINE_ENDING_CR": false, + "LIBC_STDOUT_LINE_ENDING_CRLF": true, + "LIBC_STDOUT_LINE_ENDING_LF": false, + "LIBC_TIME_SYSCALL_USE_HRT": false, + "LIBC_TIME_SYSCALL_USE_NONE": false, + "LIBC_TIME_SYSCALL_USE_RTC": false, + "LIBC_TIME_SYSCALL_USE_RTC_HRT": true, + "LOG_COLORS": false, + "LOG_DEFAULT_LEVEL": 3, + "LOG_DEFAULT_LEVEL_DEBUG": false, + "LOG_DEFAULT_LEVEL_ERROR": false, + "LOG_DEFAULT_LEVEL_INFO": true, + "LOG_DEFAULT_LEVEL_NONE": false, + "LOG_DEFAULT_LEVEL_VERBOSE": false, + "LOG_DEFAULT_LEVEL_WARN": false, + "LOG_DYNAMIC_LEVEL_CONTROL": true, + "LOG_IN_IRAM": true, + "LOG_MASTER_LEVEL": false, + "LOG_MAXIMUM_EQUALS_DEFAULT": true, + "LOG_MAXIMUM_LEVEL": 3, + "LOG_MAXIMUM_LEVEL_DEBUG": false, + "LOG_MAXIMUM_LEVEL_VERBOSE": false, + "LOG_MODE_TEXT": true, + "LOG_MODE_TEXT_EN": true, + "LOG_TAG_LEVEL_CACHE_ARRAY": false, + "LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP": true, + "LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST": true, + "LOG_TAG_LEVEL_IMPL_CACHE_SIZE": 31, + "LOG_TAG_LEVEL_IMPL_LINKED_LIST": false, + "LOG_TAG_LEVEL_IMPL_NONE": false, + "LOG_TIMESTAMP_SOURCE_RTOS": true, + "LOG_TIMESTAMP_SOURCE_SYSTEM": false, + "LOG_VERSION": 1, + "LOG_VERSION_1": true, + "LOG_VERSION_2": false, + "LWIP_AUTOIP": false, + "LWIP_BRIDGEIF_MAX_PORTS": 7, + "LWIP_BROADCAST_PING": false, + "LWIP_CHECKSUM_CHECK_ICMP": true, + "LWIP_CHECKSUM_CHECK_IP": false, + "LWIP_CHECKSUM_CHECK_UDP": false, + "LWIP_CHECK_THREAD_SAFETY": false, + "LWIP_DEBUG": false, + "LWIP_DHCPS": true, + "LWIP_DHCPS_LEASE_UNIT": 60, + "LWIP_DHCPS_MAX_HOSTNAME_LEN": 64, + "LWIP_DHCPS_MAX_STATION_NUM": 8, + "LWIP_DHCPS_REPORT_CLIENT_HOSTNAME": true, + "LWIP_DHCPS_STATIC_ENTRIES": true, + "LWIP_DHCP_COARSE_TIMER_SECS": 1, + "LWIP_DHCP_DISABLE_CLIENT_ID": false, + "LWIP_DHCP_DISABLE_VENDOR_CLASS_ID": true, + "LWIP_DHCP_DOES_ACD_CHECK": false, + "LWIP_DHCP_DOES_ARP_CHECK": true, + "LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP": false, + "LWIP_DHCP_GET_NTP_SRV": false, + "LWIP_DHCP_OPTIONS_LEN": 69, + "LWIP_DHCP_RESTORE_LAST_IP": false, + "LWIP_DNS_MAX_HOST_IP": 1, + "LWIP_DNS_MAX_SERVERS": 3, + "LWIP_DNS_SETSERVER_WITH_NETIF": false, + "LWIP_DNS_SUPPORT_MDNS_QUERIES": true, + "LWIP_ENABLE": true, + "LWIP_ESP_GRATUITOUS_ARP": true, + "LWIP_ESP_LWIP_ASSERT": true, + "LWIP_ESP_MLDV6_REPORT": true, + "LWIP_EXTRA_IRAM_OPTIMIZATION": false, + "LWIP_FALLBACK_DNS_SERVER_SUPPORT": false, + "LWIP_FORCE_ROUTER_FORWARDING": false, + "LWIP_GARP_TMR_INTERVAL": 60, + "LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM": false, + "LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT": false, + "LWIP_HOOK_DHCP_EXTRA_OPTION_NONE": true, + "LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM": false, + "LWIP_HOOK_DNS_EXT_RESOLVE_NONE": true, + "LWIP_HOOK_IP6_INPUT_CUSTOM": false, + "LWIP_HOOK_IP6_INPUT_DEFAULT": true, + "LWIP_HOOK_IP6_INPUT_NONE": false, + "LWIP_HOOK_IP6_ROUTE_CUSTOM": false, + "LWIP_HOOK_IP6_ROUTE_DEFAULT": false, + "LWIP_HOOK_IP6_ROUTE_NONE": true, + "LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM": false, + "LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT": false, + "LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE": true, + "LWIP_HOOK_ND6_GET_GW_CUSTOM": false, + "LWIP_HOOK_ND6_GET_GW_DEFAULT": false, + "LWIP_HOOK_ND6_GET_GW_NONE": true, + "LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM": false, + "LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT": false, + "LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE": true, + "LWIP_HOOK_TCP_ISN_CUSTOM": false, + "LWIP_HOOK_TCP_ISN_DEFAULT": true, + "LWIP_HOOK_TCP_ISN_NONE": false, + "LWIP_ICMP": true, + "LWIP_IP4_FRAG": true, + "LWIP_IP4_REASSEMBLY": false, + "LWIP_IP6_FRAG": true, + "LWIP_IP6_REASSEMBLY": false, + "LWIP_IPV4": true, + "LWIP_IPV6": true, + "LWIP_IPV6_AUTOCONFIG": false, + "LWIP_IPV6_DUP_DETECT_ATTEMPTS": 1, + "LWIP_IPV6_FORWARD": false, + "LWIP_IPV6_MEMP_NUM_ND6_QUEUE": 3, + "LWIP_IPV6_ND6_NUM_DESTINATIONS": 10, + "LWIP_IPV6_ND6_NUM_NEIGHBORS": 5, + "LWIP_IPV6_ND6_NUM_PREFIXES": 5, + "LWIP_IPV6_ND6_NUM_ROUTERS": 3, + "LWIP_IPV6_ND6_ROUTE_INFO_OPTION_SUPPORT": false, + "LWIP_IPV6_NUM_ADDRESSES": 3, + "LWIP_IP_DEFAULT_TTL": 64, + "LWIP_IP_FORWARD": false, + "LWIP_IP_REASS_MAX_PBUFS": 10, + "LWIP_IRAM_OPTIMIZATION": false, + "LWIP_L2_TO_L3_COPY": false, + "LWIP_LOCAL_HOSTNAME": "espressif", + "LWIP_LOOPBACK_MAX_PBUFS": 8, + "LWIP_MAX_ACTIVE_TCP": 16, + "LWIP_MAX_LISTENING_TCP": 16, + "LWIP_MAX_RAW_PCBS": 16, + "LWIP_MAX_SOCKETS": 10, + "LWIP_MAX_UDP_PCBS": 16, + "LWIP_MLDV6_TMR_INTERVAL": 40, + "LWIP_MULTICAST_PING": false, + "LWIP_ND6": true, + "LWIP_NETBUF_RECVINFO": false, + "LWIP_NETIF_LINK_CALLBACK": false, + "LWIP_NETIF_LOOPBACK": true, + "LWIP_NETIF_STATUS_CALLBACK": false, + "LWIP_NUM_NETIF_CLIENT_DATA": 0, + "LWIP_PPP_SUPPORT": false, + "LWIP_SLIP_SUPPORT": false, + "LWIP_SNTP_MAXIMUM_STARTUP_DELAY": 5000, + "LWIP_SNTP_MAX_SERVERS": 1, + "LWIP_SNTP_STARTUP_DELAY": true, + "LWIP_SNTP_UPDATE_DELAY": 3600000, + "LWIP_SO_LINGER": false, + "LWIP_SO_RCVBUF": false, + "LWIP_SO_REUSE": true, + "LWIP_SO_REUSE_RXTOALL": true, + "LWIP_STATS": false, + "LWIP_TCPIP_CORE_LOCKING": false, + "LWIP_TCPIP_RECVMBOX_SIZE": 32, + "LWIP_TCPIP_TASK_AFFINITY": 2147483647, + "LWIP_TCPIP_TASK_AFFINITY_CPU0": false, + "LWIP_TCPIP_TASK_AFFINITY_CPU1": false, + "LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY": true, + "LWIP_TCPIP_TASK_PRIO": 18, + "LWIP_TCPIP_TASK_STACK_SIZE": 3072, + "LWIP_TCP_ACCEPTMBOX_SIZE": 6, + "LWIP_TCP_FIN_WAIT_TIMEOUT": 20000, + "LWIP_TCP_HIGH_SPEED_RETRANSMISSION": true, + "LWIP_TCP_MAXRTX": 12, + "LWIP_TCP_MSL": 60000, + "LWIP_TCP_MSS": 1440, + "LWIP_TCP_OOSEQ_MAX_PBUFS": 4, + "LWIP_TCP_OOSEQ_TIMEOUT": 6, + "LWIP_TCP_OVERSIZE_DISABLE": false, + "LWIP_TCP_OVERSIZE_MSS": true, + "LWIP_TCP_OVERSIZE_QUARTER_MSS": false, + "LWIP_TCP_QUEUE_OOSEQ": true, + "LWIP_TCP_RECVMBOX_SIZE": 6, + "LWIP_TCP_RTO_TIME": 1500, + "LWIP_TCP_SACK_OUT": false, + "LWIP_TCP_SND_BUF_DEFAULT": 5760, + "LWIP_TCP_SYNMAXRTX": 12, + "LWIP_TCP_TMR_INTERVAL": 250, + "LWIP_TCP_WND_DEFAULT": 5760, + "LWIP_TIMERS_ONDEMAND": true, + "LWIP_UDP_RECVMBOX_SIZE": 6, + "LWIP_USE_ESP_GETADDRINFO": false, + "LWIP_USE_ONLY_LWIP_SELECT": false, + "MBEDTLS_AES_C": true, + "MBEDTLS_AES_FEWER_TABLES": false, + "MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH": false, + "MBEDTLS_AES_ROM_TABLES": true, + "MBEDTLS_AES_SOFT_FALLBACK": false, + "MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION": false, + "MBEDTLS_ARIA_C": true, + "MBEDTLS_ASN1_PARSE_C": true, + "MBEDTLS_ASN1_WRITE_C": true, + "MBEDTLS_ASYMMETRIC_CONTENT_LEN": true, + "MBEDTLS_ATCA_HW_ECDSA_SIGN": false, + "MBEDTLS_ATCA_HW_ECDSA_VERIFY": false, + "MBEDTLS_BASE64_C": true, + "MBEDTLS_BIGNUM_C": true, + "MBEDTLS_CAMELLIA_C": false, + "MBEDTLS_CCM_C": true, + "MBEDTLS_CERTIFICATE_BUNDLE": true, + "MBEDTLS_CERTIFICATE_BUNDLE_CROSS_SIGNED_VERIFY": false, + "MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN": false, + "MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL": true, + "MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE": false, + "MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST": false, + "MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS": 200, + "MBEDTLS_CHACHA20_C": false, + "MBEDTLS_CIPHER_MODE_CBC": true, + "MBEDTLS_CIPHER_MODE_CFB": true, + "MBEDTLS_CIPHER_MODE_CTR": true, + "MBEDTLS_CIPHER_MODE_OFB": true, + "MBEDTLS_CIPHER_MODE_XTS": true, + "MBEDTLS_CLIENT_SSL_SESSION_TICKETS": true, + "MBEDTLS_CMAC_C": true, + "MBEDTLS_COMPILER_OPTIMIZATION_NONE": false, + "MBEDTLS_COMPILER_OPTIMIZATION_PERF": false, + "MBEDTLS_COMPILER_OPTIMIZATION_SIZE": true, + "MBEDTLS_CTR_DRBG_C": true, + "MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE": false, + "MBEDTLS_CUSTOM_MEM_ALLOC": false, + "MBEDTLS_DEBUG": false, + "MBEDTLS_DEFAULT_MEM_ALLOC": false, + "MBEDTLS_DES_C": false, + "MBEDTLS_DHM_C": false, + "MBEDTLS_DYNAMIC_BUFFER": false, + "MBEDTLS_ECDH_C": true, + "MBEDTLS_ECDSA_C": true, + "MBEDTLS_ECDSA_DETERMINISTIC": true, + "MBEDTLS_ECJPAKE_C": false, + "MBEDTLS_ECP_C": true, + "MBEDTLS_ECP_DP_BP256R1_ENABLED": true, + "MBEDTLS_ECP_DP_BP384R1_ENABLED": true, + "MBEDTLS_ECP_DP_BP512R1_ENABLED": true, + "MBEDTLS_ECP_DP_CURVE25519_ENABLED": true, + "MBEDTLS_ECP_DP_SECP256K1_ENABLED": true, + "MBEDTLS_ECP_DP_SECP256R1_ENABLED": true, + "MBEDTLS_ECP_DP_SECP384R1_ENABLED": true, + "MBEDTLS_ECP_DP_SECP521R1_ENABLED": true, + "MBEDTLS_ECP_FIXED_POINT_OPTIM": false, + "MBEDTLS_ECP_NIST_OPTIM": true, + "MBEDTLS_ECP_RESTARTABLE": false, + "MBEDTLS_ENTROPY_FORCE_SHA256": false, + "MBEDTLS_ERROR_STRINGS": true, + "MBEDTLS_FS_IO": true, + "MBEDTLS_GCM_C": true, + "MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER": true, + "MBEDTLS_HARDWARE_AES": true, + "MBEDTLS_HARDWARE_MPI": true, + "MBEDTLS_HARDWARE_SHA": true, + "MBEDTLS_HAVE_TIME": true, + "MBEDTLS_HAVE_TIME_DATE": false, + "MBEDTLS_HMAC_DRBG_C": true, + "MBEDTLS_INTERNAL_MEM_ALLOC": true, + "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA": true, + "MBEDTLS_KEY_EXCHANGE_ECDHE_RSA": true, + "MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE": true, + "MBEDTLS_KEY_EXCHANGE_RSA": true, + "MBEDTLS_LARGE_KEY_SOFTWARE_MPI": true, + "MBEDTLS_MD5_C": true, + "MBEDTLS_MD_C": true, + "MBEDTLS_NIST_KW_C": false, + "MBEDTLS_PEM_PARSE_C": true, + "MBEDTLS_PEM_WRITE_C": true, + "MBEDTLS_PKCS1_V15": true, + "MBEDTLS_PKCS1_V21": true, + "MBEDTLS_PKCS5_C": true, + "MBEDTLS_PKCS7_C": true, + "MBEDTLS_PK_C": true, + "MBEDTLS_PK_PARSE_C": true, + "MBEDTLS_PK_PARSE_EC_COMPRESSED": true, + "MBEDTLS_PK_PARSE_EC_EXTENDED": true, + "MBEDTLS_PK_WRITE_C": true, + "MBEDTLS_PLATFORM_TIME_ALT": false, + "MBEDTLS_POLY1305_C": false, + "MBEDTLS_PSK_MODES": false, + "MBEDTLS_RIPEMD160_C": false, + "MBEDTLS_ROM_MD5": true, + "MBEDTLS_RSA_C": true, + "MBEDTLS_SELF_TEST": true, + "MBEDTLS_SERVER_SSL_SESSION_TICKETS": true, + "MBEDTLS_SHA1_C": true, + "MBEDTLS_SHA224_C": false, + "MBEDTLS_SHA256_C": true, + "MBEDTLS_SHA384_C": true, + "MBEDTLS_SHA3_C": true, + "MBEDTLS_SHA512_C": true, + "MBEDTLS_SSL_ALL_ALERT_MESSAGES": true, + "MBEDTLS_SSL_ALPN": true, + "MBEDTLS_SSL_CACHE_C": true, + "MBEDTLS_SSL_CONTEXT_SERIALIZATION": false, + "MBEDTLS_SSL_IN_CONTENT_LEN": 16384, + "MBEDTLS_SSL_KEEP_PEER_CERTIFICATE": false, + "MBEDTLS_SSL_KEYING_MATERIAL_EXPORT": false, + "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH": true, + "MBEDTLS_SSL_OUT_CONTENT_LEN": 4096, + "MBEDTLS_SSL_PROTO_DTLS": false, + "MBEDTLS_SSL_PROTO_GMTSSL1_1": false, + "MBEDTLS_SSL_PROTO_TLS1_2": true, + "MBEDTLS_SSL_PROTO_TLS1_3": false, + "MBEDTLS_SSL_RENEGOTIATION": true, + "MBEDTLS_SSL_SERVER_NAME_INDICATION": true, + "MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH": false, + "MBEDTLS_THREADING_C": false, + "MBEDTLS_TLS_CLIENT": true, + "MBEDTLS_TLS_CLIENT_ONLY": false, + "MBEDTLS_TLS_DISABLED": false, + "MBEDTLS_TLS_ENABLED": true, + "MBEDTLS_TLS_SERVER": true, + "MBEDTLS_TLS_SERVER_AND_CLIENT": true, + "MBEDTLS_TLS_SERVER_ONLY": false, + "MBEDTLS_VERSION_C": true, + "MBEDTLS_VERSION_FEATURES": false, + "MBEDTLS_VER_4_X_SUPPORT": true, + "MBEDTLS_X509_CREATE_C": false, + "MBEDTLS_X509_CRL_PARSE_C": true, + "MBEDTLS_X509_CRT_PARSE_C": true, + "MBEDTLS_X509_CSR_PARSE_C": true, + "MBEDTLS_X509_REMOVE_INFO": false, + "MBEDTLS_X509_RSASSA_PSS_SUPPORT": true, + "MBEDTLS_X509_TRUSTED_CERT_CALLBACK": false, + "MBEDTLS_X509_USE_C": true, + "MCPWM_CTRL_FUNC_IN_IRAM": false, + "MCPWM_ENABLE_DEBUG_LOG": false, + "MCPWM_ISR_CACHE_SAFE": false, + "MCPWM_ISR_HANDLER_IN_IRAM": true, + "MCPWM_OBJ_CACHE_SAFE": true, + "MMU_PAGE_MODE": "64KB", + "MMU_PAGE_SIZE": 65536, + "MMU_PAGE_SIZE_64KB": true, + "NVS_ASSERT_ERROR_CHECK": false, + "NVS_BDL_STACK": false, + "NVS_LEGACY_DUP_KEYS_COMPATIBILITY": false, + "OPENTHREAD_DEBUG": false, + "OPENTHREAD_ENABLED": false, + "OPENTHREAD_SPINEL_ONLY": false, + "PARTITION_TABLE_CUSTOM": false, + "PARTITION_TABLE_CUSTOM_FILENAME": "partitions.csv", + "PARTITION_TABLE_FILENAME": "partitions_singleapp.csv", + "PARTITION_TABLE_MD5": true, + "PARTITION_TABLE_OFFSET": 32768, + "PARTITION_TABLE_SINGLE_APP": true, + "PARTITION_TABLE_SINGLE_APP_LARGE": false, + "PARTITION_TABLE_TWO_OTA": false, + "PARTITION_TABLE_TWO_OTA_LARGE": false, + "PCNT_CTRL_FUNC_IN_IRAM": false, + "PCNT_ENABLE_DEBUG_LOG": false, + "PCNT_ISR_IRAM_SAFE": false, + "PM_ENABLE": false, + "PM_SLEEP_FUNC_IN_IRAM": false, + "PM_SLP_IRAM_OPT": false, + "PTHREAD_DEFAULT_CORE_0": false, + "PTHREAD_DEFAULT_CORE_1": false, + "PTHREAD_DEFAULT_CORE_NO_AFFINITY": true, + "PTHREAD_STACK_MIN": 768, + "PTHREAD_TASK_CORE_DEFAULT": -1, + "PTHREAD_TASK_NAME_DEFAULT": "pthread", + "PTHREAD_TASK_PRIO_DEFAULT": 5, + "PTHREAD_TASK_STACK_SIZE_DEFAULT": 3072, + "RINGBUF_IN_IRAM": false, + "RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH": false, + "RMT_ENABLE_DEBUG_LOG": false, + "RMT_ENCODER_FUNC_IN_IRAM": true, + "RMT_ISR_IRAM_SAFE": false, + "RMT_OBJ_CACHE_SAFE": true, + "RMT_RECV_FUNC_IN_IRAM": false, + "RMT_RX_ISR_CACHE_SAFE": false, + "RMT_RX_ISR_HANDLER_IN_IRAM": true, + "RMT_TX_ISR_CACHE_SAFE": false, + "RMT_TX_ISR_HANDLER_IN_IRAM": true, + "RTC_CLK_CAL_CYCLES": 1024, + "RTC_CLK_FUNC_IN_IRAM": true, + "RTC_CLK_SRC_EXT_CRYS": false, + "RTC_CLK_SRC_EXT_OSC": false, + "RTC_CLK_SRC_INT_8MD256": false, + "RTC_CLK_SRC_INT_RC": true, + "RTC_TIME_FUNC_IN_IRAM": true, + "SDM_CTRL_FUNC_IN_IRAM": false, + "SDM_ENABLE_DEBUG_LOG": false, + "SD_ENABLE_SDIO_SUPPORT": true, + "SD_HOST_SDMMC_ISR_CACHE_SAFE": false, + "SECURE_BOOT": false, + "SECURE_BOOT_V1_SUPPORTED": true, + "SECURE_FLASH_ENC_ENABLED": false, + "SECURE_SIGNED_APPS_NO_SECURE_BOOT": false, + "SOC_ADC_ATTEN_NUM": 4, + "SOC_ADC_DIGI_CONTROLLER_NUM": 2, + "SOC_ADC_DIGI_DATA_BYTES_PER_CONV": 4, + "SOC_ADC_DIGI_MAX_BITWIDTH": 12, + "SOC_ADC_DIGI_MIN_BITWIDTH": 9, + "SOC_ADC_DIGI_MONITOR_NUM": 0, + "SOC_ADC_DIGI_RESULT_BYTES": 2, + "SOC_ADC_DIG_CTRL_SUPPORTED": true, + "SOC_ADC_DMA_SUPPORTED": true, + "SOC_ADC_MAX_CHANNEL_NUM": 10, + "SOC_ADC_PATT_LEN_MAX": 16, + "SOC_ADC_PERIPH_NUM": 2, + "SOC_ADC_RTC_CTRL_SUPPORTED": true, + "SOC_ADC_RTC_MAX_BITWIDTH": 12, + "SOC_ADC_RTC_MIN_BITWIDTH": 9, + "SOC_ADC_SAMPLE_FREQ_THRES_HIGH": 2000000, + "SOC_ADC_SAMPLE_FREQ_THRES_LOW": 20000, + "SOC_ADC_SHARED_POWER": true, + "SOC_ADC_SUPPORTED": true, + "SOC_AES_SUPPORTED": true, + "SOC_AES_SUPPORT_AES_128": true, + "SOC_AES_SUPPORT_AES_192": true, + "SOC_AES_SUPPORT_AES_256": true, + "SOC_BLE_MESH_SUPPORTED": true, + "SOC_BLE_MULTI_CONN_OPTIMIZATION": true, + "SOC_BLE_SUPPORTED": true, + "SOC_BLUFI_SUPPORTED": true, + "SOC_BOD_SUPPORTED": true, + "SOC_BROWNOUT_RESET_SUPPORTED": true, + "SOC_BT_CLASSIC_SUPPORTED": true, + "SOC_BT_H2C_ENC_KEY_CTRL_ENH_VSC_SUPPORTED": true, + "SOC_BT_SUPPORTED": true, + "SOC_CAPS_ECO_VER_MAX": 301, + "SOC_CCOMP_TIMER_SUPPORTED": true, + "SOC_CLK_APLL_SUPPORTED": true, + "SOC_CLK_LP_FAST_SUPPORT_XTAL_D4": true, + "SOC_CLK_RC_FAST_D256_SUPPORTED": true, + "SOC_CLK_RC_FAST_SUPPORT_CALIBRATION": true, + "SOC_CLK_TREE_SUPPORTED": true, + "SOC_CLK_XTAL32K_SUPPORTED": true, + "SOC_CONFIGURABLE_VDDSDIO_SUPPORTED": true, + "SOC_CPU_BREAKPOINTS_NUM": 2, + "SOC_CPU_CORES_NUM": 2, + "SOC_CPU_HAS_FPU": true, + "SOC_CPU_INTR_NUM": 32, + "SOC_CPU_WATCHPOINTS_NUM": 2, + "SOC_CPU_WATCHPOINT_MAX_REGION_SIZE": 64, + "SOC_DAC_CHAN_NUM": 2, + "SOC_DAC_DMA_16BIT_ALIGN": true, + "SOC_DAC_RESOLUTION": 8, + "SOC_DAC_SUPPORTED": true, + "SOC_DEEP_SLEEP_SUPPORTED": true, + "SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL": 5, + "SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS": 1, + "SOC_EFUSE_SUPPORTED": true, + "SOC_EMAC_RMII_CLK_OUT_INTERNAL_LOOPBACK": true, + "SOC_EMAC_SUPPORTED": true, + "SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX": 32, + "SOC_FLASH_ENC_SUPPORTED": true, + "SOC_GPIO_CLOCKOUT_BY_IO_MUX": true, + "SOC_GPIO_CLOCKOUT_CHANNEL_NUM": 3, + "SOC_GPIO_IN_RANGE_MAX": 39, + "SOC_GPIO_OUT_RANGE_MAX": 33, + "SOC_GPIO_PIN_COUNT": 40, + "SOC_GPIO_PORT": 1, + "SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK": 15667178, + "SOC_GPIO_VALID_GPIO_MASK": 1099511627775, + "SOC_GPSPI_SUPPORTED": true, + "SOC_GPTIMER_SUPPORTED": true, + "SOC_HP_CPU_HAS_MULTIPLE_CORES": true, + "SOC_HP_I2C_NUM": 2, + "SOC_I2C_CMD_REG_NUM": 16, + "SOC_I2C_FIFO_LEN": 32, + "SOC_I2C_NUM": 2, + "SOC_I2C_STOP_INDEPENDENT": true, + "SOC_I2C_SUPPORTED": true, + "SOC_I2C_SUPPORT_10BIT_ADDR": true, + "SOC_I2C_SUPPORT_APB": true, + "SOC_I2C_SUPPORT_SLAVE": true, + "SOC_I2S_HW_VERSION_1": true, + "SOC_I2S_I80_LCD_SUPPORTED": true, + "SOC_I2S_PDM_MAX_RX_LINES": 1, + "SOC_I2S_PDM_MAX_TX_LINES": 1, + "SOC_I2S_SUPPORTED": true, + "SOC_I2S_SUPPORTS_APLL": true, + "SOC_I2S_SUPPORTS_PCM2PDM": true, + "SOC_I2S_SUPPORTS_PDM": true, + "SOC_I2S_SUPPORTS_PDM2PCM": true, + "SOC_I2S_SUPPORTS_PDM_RX": true, + "SOC_I2S_SUPPORTS_PDM_TX": true, + "SOC_IDCACHE_PER_CORE": true, + "SOC_LCD_I80_SUPPORTED": true, + "SOC_LEDC_CHANNEL_NUM": 8, + "SOC_LEDC_HAS_TIMER_SPECIFIC_MUX": true, + "SOC_LEDC_SUPPORTED": true, + "SOC_LEDC_SUPPORT_APB_CLOCK": true, + "SOC_LEDC_SUPPORT_HS_MODE": true, + "SOC_LEDC_SUPPORT_REF_TICK": true, + "SOC_LEDC_TIMER_BIT_WIDTH": 20, + "SOC_LEDC_TIMER_NUM": 4, + "SOC_LIGHT_SLEEP_SUPPORTED": true, + "SOC_LP_PERIPH_SHARE_INTERRUPT": true, + "SOC_LP_TIMER_BIT_WIDTH_HI": 16, + "SOC_LP_TIMER_BIT_WIDTH_LO": 32, + "SOC_MCPWM_SUPPORTED": true, + "SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED": true, + "SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED": true, + "SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED": true, + "SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED": true, + "SOC_MMU_LINEAR_ADDRESS_REGION_NUM": 3, + "SOC_MMU_PERIPH_NUM": 2, + "SOC_MPI_MEM_BLOCKS_NUM": 4, + "SOC_MPI_OPERATIONS_NUM": 1, + "SOC_MPI_SUPPORTED": true, + "SOC_MPU_MIN_REGION_SIZE": 536870912, + "SOC_MPU_REGIONS_MAX_NUM": 8, + "SOC_MPU_SUPPORTED": true, + "SOC_PCNT_SUPPORTED": true, + "SOC_PHY_COMBO_MODULE": true, + "SOC_PHY_DIG_REGS_MEM_SIZE": 21, + "SOC_PHY_SUPPORTED": true, + "SOC_PM_MODEM_PD_BY_SW": true, + "SOC_PM_SUPPORTED": true, + "SOC_PM_SUPPORT_EXT0_WAKEUP": true, + "SOC_PM_SUPPORT_EXT1_WAKEUP": true, + "SOC_PM_SUPPORT_EXT_WAKEUP": true, + "SOC_PM_SUPPORT_MODEM_PD": true, + "SOC_PM_SUPPORT_RC_FAST_PD": true, + "SOC_PM_SUPPORT_RTC_FAST_MEM_PD": true, + "SOC_PM_SUPPORT_RTC_PERIPH_PD": true, + "SOC_PM_SUPPORT_RTC_SLOW_MEM_PD": true, + "SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP": true, + "SOC_PM_SUPPORT_VDDSDIO_PD": true, + "SOC_RMT_MEM_WORDS_PER_CHANNEL": 64, + "SOC_RMT_SUPPORTED": true, + "SOC_RNG_SUPPORTED": true, + "SOC_RSA_MAX_BIT_LEN": 4096, + "SOC_RTCIO_HOLD_SUPPORTED": true, + "SOC_RTCIO_INPUT_OUTPUT_SUPPORTED": true, + "SOC_RTCIO_PIN_COUNT": 18, + "SOC_RTCIO_WAKE_SUPPORTED": true, + "SOC_RTC_FAST_MEM_SUPPORTED": true, + "SOC_RTC_MEM_SUPPORTED": true, + "SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256": true, + "SOC_RTC_SLOW_MEM_SUPPORTED": true, + "SOC_SDIO_SLAVE_SUPPORTED": true, + "SOC_SDMMC_DATA_WIDTH_MAX": 8, + "SOC_SDMMC_HOST_SUPPORTED": true, + "SOC_SDMMC_NUM_SLOTS": 2, + "SOC_SDMMC_USE_IOMUX": true, + "SOC_SDM_SUPPORTED": true, + "SOC_SECURE_BOOT_SUPPORTED": true, + "SOC_SECURE_BOOT_V1": true, + "SOC_SHARED_IDCACHE_SUPPORTED": true, + "SOC_SHA_ENDIANNESS_BE": true, + "SOC_SHA_SUPPORTED": true, + "SOC_SHA_SUPPORT_PARALLEL_ENG": true, + "SOC_SHA_SUPPORT_SHA1": true, + "SOC_SHA_SUPPORT_SHA256": true, + "SOC_SHA_SUPPORT_SHA384": true, + "SOC_SHA_SUPPORT_SHA512": true, + "SOC_SPIRAM_SUPPORTED": true, + "SOC_SPI_AS_CS_SUPPORTED": true, + "SOC_SPI_DMA_CHAN_NUM": 2, + "SOC_SPI_FLASH_SUPPORTED": true, + "SOC_SPI_HD_BOTH_INOUT_SUPPORTED": true, + "SOC_SPI_MAXIMUM_BUFFER_SIZE": 64, + "SOC_SPI_MAX_CS_NUM": 3, + "SOC_SPI_MAX_PRE_DIVIDER": 8192, + "SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE": true, + "SOC_SPI_PERIPH_NUM": 3, + "SOC_SPI_SUPPORT_CLK_APB": true, + "SOC_SUPPORT_COEXISTENCE": true, + "SOC_TOUCH_MAX_CHAN_ID": 9, + "SOC_TOUCH_MIN_CHAN_ID": 0, + "SOC_TOUCH_SAMPLE_CFG_NUM": 1, + "SOC_TOUCH_SENSOR_SUPPORTED": true, + "SOC_TOUCH_SENSOR_VERSION": 1, + "SOC_TOUCH_SUPPORT_SLEEP_WAKEUP": true, + "SOC_TWAI_CONTROLLER_NUM": 1, + "SOC_TWAI_MASK_FILTER_NUM": 1, + "SOC_TWAI_SUPPORTED": true, + "SOC_UART_BITRATE_MAX": 5000000, + "SOC_UART_FIFO_LEN": 128, + "SOC_UART_HP_NUM": 3, + "SOC_UART_NUM": 3, + "SOC_UART_SUPPORTED": true, + "SOC_UART_SUPPORT_APB_CLK": true, + "SOC_UART_SUPPORT_REF_TICK": true, + "SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE": true, + "SOC_ULP_FSM_SUPPORTED": true, + "SOC_ULP_HAS_ADC": true, + "SOC_ULP_SUPPORTED": true, + "SOC_WDT_SUPPORTED": true, + "SOC_WIFI_CSI_SUPPORT": true, + "SOC_WIFI_MESH_SUPPORT": true, + "SOC_WIFI_NAN_SUPPORT": true, + "SOC_WIFI_SUPPORTED": true, + "SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW": true, + "SOC_WIFI_WAPI_SUPPORT": true, + "SOC_XTAL_SUPPORT_26M": true, + "SOC_XTAL_SUPPORT_40M": true, + "SPIFFS_API_DBG": false, + "SPIFFS_CACHE": true, + "SPIFFS_CACHE_DBG": false, + "SPIFFS_CACHE_STATS": false, + "SPIFFS_CACHE_WR": true, + "SPIFFS_CHECK_DBG": false, + "SPIFFS_DBG": false, + "SPIFFS_FOLLOW_SYMLINKS": false, + "SPIFFS_GC_DBG": false, + "SPIFFS_GC_MAX_RUNS": 10, + "SPIFFS_GC_STATS": false, + "SPIFFS_MAX_PARTITIONS": 3, + "SPIFFS_META_LENGTH": 4, + "SPIFFS_OBJ_NAME_LEN": 32, + "SPIFFS_PAGE_CHECK": true, + "SPIFFS_PAGE_SIZE": 256, + "SPIFFS_TEST_VISUALISATION": false, + "SPIFFS_USE_MAGIC": true, + "SPIFFS_USE_MAGIC_LENGTH": true, + "SPIFFS_USE_MTIME": true, + "SPIRAM": false, + "SPI_FLASH_BROWNOUT_RESET": true, + "SPI_FLASH_BROWNOUT_RESET_XMC": true, + "SPI_FLASH_BYPASS_BLOCK_ERASE": false, + "SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED": false, + "SPI_FLASH_DANGEROUS_WRITE_ABORTS": true, + "SPI_FLASH_DANGEROUS_WRITE_ALLOWED": false, + "SPI_FLASH_DANGEROUS_WRITE_FAILS": false, + "SPI_FLASH_ENABLE_COUNTERS": false, + "SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE": true, + "SPI_FLASH_ERASE_YIELD_DURATION_MS": 20, + "SPI_FLASH_ERASE_YIELD_TICKS": 1, + "SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND": false, + "SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND": false, + "SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST": false, + "SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM": true, + "SPI_FLASH_SHARE_SPI1_BUS": false, + "SPI_FLASH_SIZE_OVERRIDE": false, + "SPI_FLASH_SUPPORT_BOYA_CHIP": false, + "SPI_FLASH_SUPPORT_GD_CHIP": true, + "SPI_FLASH_SUPPORT_ISSI_CHIP": true, + "SPI_FLASH_SUPPORT_MXIC_CHIP": true, + "SPI_FLASH_SUPPORT_TH_CHIP": false, + "SPI_FLASH_SUPPORT_WINBOND_CHIP": true, + "SPI_FLASH_SUSPEND_TSUS_VAL_US": 50, + "SPI_FLASH_VENDOR_GD_SUPPORT_ENABLED": true, + "SPI_FLASH_VENDOR_ISSI_SUPPORT_ENABLED": true, + "SPI_FLASH_VENDOR_MXIC_SUPPORT_ENABLED": true, + "SPI_FLASH_VENDOR_WINBOND_SUPPORT_ENABLED": true, + "SPI_FLASH_VENDOR_XMC_SUPPORT_ENABLED": true, + "SPI_FLASH_VERIFY_WRITE": false, + "SPI_FLASH_WRITE_CHUNK_SIZE": 8192, + "SPI_FLASH_YIELD_DURING_ERASE": true, + "SPI_MASTER_ISR_IN_IRAM": true, + "SPI_SLAVE_IN_IRAM": false, + "SPI_SLAVE_ISR_IN_IRAM": true, + "TOUCH_CTRL_FUNC_IN_IRAM": false, + "TOUCH_ENABLE_DEBUG_LOG": false, + "TOUCH_ISR_IRAM_SAFE": false, + "TOUCH_SKIP_FSM_CHECK": false, + "TOUCH_SKIP_LEGACY_CONFLICT_CHECK": false, + "TOUCH_SUPPRESS_DEPRECATE_WARN": false, + "TWAI_ENABLE_DEBUG_LOG": false, + "TWAI_IO_FUNC_IN_IRAM": false, + "TWAI_ISR_CACHE_SAFE": false, + "TWAI_ISR_IN_IRAM": false, + "TWAI_ISR_IN_IRAM_LEGACY": false, + "TWAI_SKIP_LEGACY_CONFLICT_CHECK": false, + "TWAI_SUPPRESS_DEPRECATE_WARN": false, + "UART_ISR_IN_IRAM": false, + "UHCI_ENABLE_DEBUG_LOG": false, + "UHCI_ISR_CACHE_SAFE": false, + "UHCI_ISR_HANDLER_IN_IRAM": false, + "ULP_COPROC_ENABLED": false, + "UNITY_CRITICAL_LEAK_LEVEL_GENERAL": 1200, + "UNITY_CRITICAL_LEAK_LEVEL_LWIP": 4095, + "UNITY_ENABLE_64BIT": false, + "UNITY_ENABLE_BACKTRACE_ON_FAIL": false, + "UNITY_ENABLE_COLOR": false, + "UNITY_ENABLE_DOUBLE": true, + "UNITY_ENABLE_FIXTURE": false, + "UNITY_ENABLE_FLOAT": true, + "UNITY_ENABLE_IDF_TEST_RUNNER": true, + "UNITY_FREERTOS_CPU": 0, + "UNITY_FREERTOS_PRIORITY": 5, + "UNITY_FREERTOS_STACK_SIZE": 8192, + "UNITY_IGNORE_PERFORMANCE_TESTS": false, + "UNITY_WARN_LEAK_LEVEL_GENERAL": 255, + "VFS_INITIALIZE_DEV_NULL": true, + "VFS_MAX_COUNT": 8, + "VFS_SELECT_IN_RAM": false, + "VFS_SEMIHOSTFS_MAX_MOUNT_POINTS": 1, + "VFS_SUPPORT_DIR": true, + "VFS_SUPPORT_IO": true, + "VFS_SUPPORT_SELECT": true, + "VFS_SUPPORT_TERMIOS": false, + "VFS_SUPPRESS_SELECT_DEBUG_OUTPUT": true, + "WL_SECTOR_SIZE": 4096, + "WL_SECTOR_SIZE_4096": true, + "WL_SECTOR_SIZE_512": false, + "WS_BUFFER_SIZE": 1024, + "WS_DYNAMIC_BUFFER": false, + "WS_TRANSPORT": true, + "XTAL_FREQ": 40, + "XTAL_FREQ_26": false, + "XTAL_FREQ_32": false, + "XTAL_FREQ_40": true, + "XTAL_FREQ_AUTO": false +} \ No newline at end of file diff --git a/tests/fixtures/unit_test_app_qemu/build/flasher_args.json b/tests/fixtures/unit_test_app_qemu/build/flasher_args.json new file mode 100644 index 00000000..8d9caf48 --- /dev/null +++ b/tests/fixtures/unit_test_app_qemu/build/flasher_args.json @@ -0,0 +1,24 @@ +{ + "write_flash_args" : [ "--flash-mode", "dio", + "--flash-size", "2MB", + "--flash-freq", "40m" ], + "flash_settings" : { + "flash_mode": "dio", + "flash_size": "2MB", + "flash_freq": "40m" + }, + "flash_files" : { + "0x1000" : "bootloader/bootloader.bin", + "0x8000" : "partition_table/partition-table.bin", + "0x10000" : "case_tester_example.bin" + }, + "bootloader" : { "offset" : "0x1000", "file" : "bootloader/bootloader.bin", "encrypted" : "false" }, + "partition-table" : { "offset" : "0x8000", "file" : "partition_table/partition-table.bin", "encrypted" : "false" }, + "app" : { "offset" : "0x10000", "file" : "case_tester_example.bin", "encrypted" : "false" }, + "extra_esptool_args" : { + "after" : "hard-reset", + "before" : "default-reset", + "stub" : true, + "chip" : "esp32" + } +} diff --git a/tests/fixtures/unit_test_app_qemu/build/partition_table/partition-table.bin b/tests/fixtures/unit_test_app_qemu/build/partition_table/partition-table.bin new file mode 100644 index 0000000000000000000000000000000000000000..b8fa03b4b3536b1f4d0def4c1fed550e8fc2acc7 GIT binary patch literal 3072 zcmZ1#z{tcffq{V`fq@~ftQg2Z1*-xW85uqR#RM1_3Nk9=GxIV_kX5V-0Pz^X3epmj zOY(~ +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_chip_info.h" +#include "hal/rtc_cntl_ll.h" +#include "unity.h" +#include "test_utils.h" +#include "esp_log.h" + + +/* +The ideal test result of `run_all_single_board_cases` should be: + normal_case_pass: pass + normal_case_fail: fail + + +*/ + +TEST_CASE("normal_case_pass", "[normal_case]") +{ + TEST_ASSERT(true); +} + +TEST_CASE("normal_case_fail", "[normal_case]") +{ + TEST_ASSERT(false); +} + +void multi1_stage1(void) +{ + TEST_ASSERT_EQUAL(1, 2); +} + +void multi1_stage2(void) +{ + TEST_ASSERT_EQUAL(1, 1); +} + +void multi1_stage3(void) +{ + TEST_ASSERT_EQUAL(1, 1); +} + +TEST_CASE_MULTIPLE_STAGES("multi_stage_fail_first", "[multi_stage]", + multi1_stage1, multi1_stage2, multi1_stage3); + +void multi2_stage1(void) +{ + TEST_ASSERT(true); +} + +void multi2_stage2(void) +{ + TEST_ASSERT(false); +} + +void multi2_stage3(void) +{ + TEST_ASSERT_EQUAL(1, 1); +} + +TEST_CASE_MULTIPLE_STAGES("multi_stage_fail_middle", "[multi_stage]", + multi2_stage1, multi2_stage2, multi2_stage3); + +void multi3_stage1(void) +{ + TEST_ASSERT(true); + TEST_ASSERT(true); +} + +void multi3_stage2(void) +{ + TEST_ASSERT_EQUAL(1, 1); +} + +void multi3_stage3(void) +{ + TEST_ASSERT(false); +} + +TEST_CASE_MULTIPLE_STAGES("multi_stage_fail_last", "[multi_stage]", + multi3_stage1, multi3_stage2, multi3_stage3); + +void multi4_stage1(void) +{ + TEST_ASSERT(true); +} + +void multi4_stage2(void) +{ + int temp = 1; // no assert +} + +void multi4_stage3(void) +{ + TEST_ASSERT(true); +} + +TEST_CASE_MULTIPLE_STAGES("multi_stage_pass", "[multi_stage]", + multi4_stage1, multi4_stage2, multi4_stage3); + +TEST_CASE("normal_case_pass2", "[normal_case]") +{ + int temp = 1; // no assert +} + +TEST_CASE("normal_case_fail2", "[normal_case]") +{ + TEST_ASSERT(false); +} diff --git a/tests/fixtures/unit_test_app_qemu/main/test_app_main.c b/tests/fixtures/unit_test_app_qemu/main/test_app_main.c new file mode 100644 index 00000000..896caa32 --- /dev/null +++ b/tests/fixtures/unit_test_app_qemu/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(); +}