From f9188b694e0bda9c670391ccfb820a0e5b160b1d Mon Sep 17 00:00:00 2001 From: Pi User Date: Wed, 1 Oct 2025 22:56:24 +1300 Subject: [PATCH] ESP32 SPI/ESP-NOW working; add watch scripts; sender colors RGB --- Pipfile | 5 +- esp32/build/.bin_timestamp | 2 +- esp32/build/.ninja_deps | Bin 653788 -> 657260 bytes esp32/build/.ninja_log | 2179 +- esp32/build/CMakeCache.txt | 2 + esp32/build/CMakeFiles/git-data/HEAD | 2 +- esp32/build/CMakeFiles/git-data/head-ref | 2 +- esp32/build/bootloader/.ninja_log | 42 + esp32/build/build.ninja | 2010 +- esp32/build/compile_commands.json | 2 +- esp32/build/config/kconfig_menus.json | 2160 +- .../esp_app_desc.c.obj | Bin 27540 -> 27540 bytes .../esp_app_format/libesp_app_format.a | Bin 27848 -> 27848 bytes .../main/CMakeFiles/__idf_main.dir/main.c.obj | Bin 71872 -> 73604 bytes esp32/build/esp-idf/main/libmain.a | Bin 72018 -> 73750 bytes esp32/build/log/idf_py_stderr_output_49005 | 52 + esp32/build/log/idf_py_stderr_output_51157 | 1 + esp32/build/log/idf_py_stderr_output_51801 | 0 esp32/build/log/idf_py_stderr_output_52778 | 1 + esp32/build/log/idf_py_stderr_output_53858 | 0 esp32/build/log/idf_py_stderr_output_54604 | 0 esp32/build/log/idf_py_stderr_output_59313 | 1 + esp32/build/log/idf_py_stderr_output_59682 | 1 + esp32/build/log/idf_py_stderr_output_60221 | 0 esp32/build/log/idf_py_stderr_output_63871 | 1 + esp32/build/log/idf_py_stderr_output_65520 | 1 + esp32/build/log/idf_py_stderr_output_65969 | 1 + esp32/build/log/idf_py_stderr_output_66289 | 1 + esp32/build/log/idf_py_stderr_output_66767 | 1 + esp32/build/log/idf_py_stderr_output_67342 | 1 + esp32/build/log/idf_py_stderr_output_67482 | 0 esp32/build/log/idf_py_stderr_output_69389 | 12 + esp32/build/log/idf_py_stderr_output_70605 | 1 + esp32/build/log/idf_py_stderr_output_71050 | 1 + esp32/build/log/idf_py_stderr_output_71533 | 0 esp32/build/log/idf_py_stderr_output_73045 | 1 + esp32/build/log/idf_py_stderr_output_74201 | 1 + esp32/build/log/idf_py_stderr_output_74699 | 0 esp32/build/log/idf_py_stderr_output_78221 | 1 + esp32/build/log/idf_py_stderr_output_79323 | 0 esp32/build/log/idf_py_stderr_output_83775 | 0 esp32/build/log/idf_py_stderr_output_85052 | 1 + esp32/build/log/idf_py_stderr_output_85420 | 1 + esp32/build/log/idf_py_stderr_output_85598 | 0 esp32/build/log/idf_py_stderr_output_87956 | 1 + esp32/build/log/idf_py_stderr_output_89033 | 1 + esp32/build/log/idf_py_stderr_output_89365 | 0 esp32/build/log/idf_py_stdout_output_10934 | 314 +- esp32/build/log/idf_py_stdout_output_49005 | 57 + esp32/build/log/idf_py_stdout_output_51157 | 51 + esp32/build/log/idf_py_stdout_output_51801 | 0 esp32/build/log/idf_py_stdout_output_52778 | 51 + esp32/build/log/idf_py_stdout_output_53858 | 0 esp32/build/log/idf_py_stdout_output_54604 | 0 esp32/build/log/idf_py_stdout_output_59313 | 8 + esp32/build/log/idf_py_stdout_output_59682 | 51 + esp32/build/log/idf_py_stdout_output_60221 | 0 esp32/build/log/idf_py_stdout_output_63871 | 21 + esp32/build/log/idf_py_stdout_output_65520 | 1 + esp32/build/log/idf_py_stdout_output_65969 | 1 + esp32/build/log/idf_py_stdout_output_66289 | 1 + esp32/build/log/idf_py_stdout_output_66767 | 1 + esp32/build/log/idf_py_stdout_output_67342 | 51 + esp32/build/log/idf_py_stdout_output_67482 | 0 esp32/build/log/idf_py_stdout_output_69389 | 34 + esp32/build/log/idf_py_stdout_output_70605 | 8 + esp32/build/log/idf_py_stdout_output_71050 | 51 + esp32/build/log/idf_py_stdout_output_71533 | 0 esp32/build/log/idf_py_stdout_output_73045 | 21 + esp32/build/log/idf_py_stdout_output_74201 | 51 + esp32/build/log/idf_py_stdout_output_74699 | 0 esp32/build/log/idf_py_stdout_output_78221 | 64 + esp32/build/log/idf_py_stdout_output_79323 | 127 + esp32/build/log/idf_py_stdout_output_83775 | 0 esp32/build/log/idf_py_stdout_output_85052 | 30 + esp32/build/log/idf_py_stdout_output_85420 | 30 + esp32/build/log/idf_py_stdout_output_85598 | 0 esp32/build/log/idf_py_stdout_output_87956 | 21 + esp32/build/log/idf_py_stdout_output_89033 | 51 + esp32/build/log/idf_py_stdout_output_89365 | 120 + esp32/build/project_description.json | 2 +- esp32/build/spi_slave.bin | Bin 775104 -> 775232 bytes esp32/build/spi_slave.elf | Bin 9340184 -> 9340312 bytes esp32/build/spi_slave.map | 22483 ++++++++-------- esp32/main/main.c | 13 +- test/quick_test.py | 10 +- test/send_json.py | 106 +- 87 files changed, 15115 insertions(+), 15204 deletions(-) create mode 100644 esp32/build/log/idf_py_stderr_output_49005 create mode 100644 esp32/build/log/idf_py_stderr_output_51157 create mode 100644 esp32/build/log/idf_py_stderr_output_51801 create mode 100644 esp32/build/log/idf_py_stderr_output_52778 create mode 100644 esp32/build/log/idf_py_stderr_output_53858 create mode 100644 esp32/build/log/idf_py_stderr_output_54604 create mode 100644 esp32/build/log/idf_py_stderr_output_59313 create mode 100644 esp32/build/log/idf_py_stderr_output_59682 create mode 100644 esp32/build/log/idf_py_stderr_output_60221 create mode 100644 esp32/build/log/idf_py_stderr_output_63871 create mode 100644 esp32/build/log/idf_py_stderr_output_65520 create mode 100644 esp32/build/log/idf_py_stderr_output_65969 create mode 100644 esp32/build/log/idf_py_stderr_output_66289 create mode 100644 esp32/build/log/idf_py_stderr_output_66767 create mode 100644 esp32/build/log/idf_py_stderr_output_67342 create mode 100644 esp32/build/log/idf_py_stderr_output_67482 create mode 100644 esp32/build/log/idf_py_stderr_output_69389 create mode 100644 esp32/build/log/idf_py_stderr_output_70605 create mode 100644 esp32/build/log/idf_py_stderr_output_71050 create mode 100644 esp32/build/log/idf_py_stderr_output_71533 create mode 100644 esp32/build/log/idf_py_stderr_output_73045 create mode 100644 esp32/build/log/idf_py_stderr_output_74201 create mode 100644 esp32/build/log/idf_py_stderr_output_74699 create mode 100644 esp32/build/log/idf_py_stderr_output_78221 create mode 100644 esp32/build/log/idf_py_stderr_output_79323 create mode 100644 esp32/build/log/idf_py_stderr_output_83775 create mode 100644 esp32/build/log/idf_py_stderr_output_85052 create mode 100644 esp32/build/log/idf_py_stderr_output_85420 create mode 100644 esp32/build/log/idf_py_stderr_output_85598 create mode 100644 esp32/build/log/idf_py_stderr_output_87956 create mode 100644 esp32/build/log/idf_py_stderr_output_89033 create mode 100644 esp32/build/log/idf_py_stderr_output_89365 create mode 100644 esp32/build/log/idf_py_stdout_output_49005 create mode 100644 esp32/build/log/idf_py_stdout_output_51157 create mode 100644 esp32/build/log/idf_py_stdout_output_51801 create mode 100644 esp32/build/log/idf_py_stdout_output_52778 create mode 100644 esp32/build/log/idf_py_stdout_output_53858 create mode 100644 esp32/build/log/idf_py_stdout_output_54604 create mode 100644 esp32/build/log/idf_py_stdout_output_59313 create mode 100644 esp32/build/log/idf_py_stdout_output_59682 create mode 100644 esp32/build/log/idf_py_stdout_output_60221 create mode 100644 esp32/build/log/idf_py_stdout_output_63871 create mode 100644 esp32/build/log/idf_py_stdout_output_65520 create mode 100644 esp32/build/log/idf_py_stdout_output_65969 create mode 100644 esp32/build/log/idf_py_stdout_output_66289 create mode 100644 esp32/build/log/idf_py_stdout_output_66767 create mode 100644 esp32/build/log/idf_py_stdout_output_67342 create mode 100644 esp32/build/log/idf_py_stdout_output_67482 create mode 100644 esp32/build/log/idf_py_stdout_output_69389 create mode 100644 esp32/build/log/idf_py_stdout_output_70605 create mode 100644 esp32/build/log/idf_py_stdout_output_71050 create mode 100644 esp32/build/log/idf_py_stdout_output_71533 create mode 100644 esp32/build/log/idf_py_stdout_output_73045 create mode 100644 esp32/build/log/idf_py_stdout_output_74201 create mode 100644 esp32/build/log/idf_py_stdout_output_74699 create mode 100644 esp32/build/log/idf_py_stdout_output_78221 create mode 100644 esp32/build/log/idf_py_stdout_output_79323 create mode 100644 esp32/build/log/idf_py_stdout_output_83775 create mode 100644 esp32/build/log/idf_py_stdout_output_85052 create mode 100644 esp32/build/log/idf_py_stdout_output_85420 create mode 100644 esp32/build/log/idf_py_stdout_output_85598 create mode 100644 esp32/build/log/idf_py_stdout_output_87956 create mode 100644 esp32/build/log/idf_py_stdout_output_89033 create mode 100644 esp32/build/log/idf_py_stdout_output_89365 diff --git a/Pipfile b/Pipfile index 7efcd83..dacc15b 100644 --- a/Pipfile +++ b/Pipfile @@ -28,5 +28,8 @@ dev-ui = 'watchfiles "python src/ui_client.py" src' dev-control = 'watchfiles "python src/control_server.py" src' install = "pipenv install" install-system = "bash -c 'sudo apt-get update && sudo apt-get install -y python3-spidev python3-pip python3-dev portaudio19-dev libasound2-dev'" -monitor-esp32 = "bash -c 'source $HOME/esp/esp-idf/export.sh && cd esp32 && idf.py monitor'" +monitor-esp32 = "bash -c 'source $HOME/esp/esp-idf/export.sh && cd esp32 && idf.py -p ${ESPPORT:-/dev/ttyACM0} monitor'" +build-esp32 = "bash -c 'source $HOME/esp/esp-idf/export.sh && cd esp32 && idf.py build'" +flash-esp32 = "bash -c 'source $HOME/esp/esp-idf/export.sh && cd esp32 && idf.py -p $ESPPORT -b ${ESPSPEED:-460800} flash'" +watch-esp32 = "watchfiles 'bash -c \"source $HOME/esp/esp-idf/export.sh && cd esp32 && idf.py -p ${ESPPORT:-/dev/ttyACM0} -b ${ESPSPEED:-460800} flash monitor\"' esp32/main" send-json = "python test/send_json.py" diff --git a/esp32/build/.bin_timestamp b/esp32/build/.bin_timestamp index b58f8a5..fe3c85a 100644 --- a/esp32/build/.bin_timestamp +++ b/esp32/build/.bin_timestamp @@ -1 +1 @@ -bfdf03904487258468f9d4f4e0446182 /home/pi/lighting-controller/esp32/build/spi_slave.bin +cb516dfdf9bb990670f3d92bb1eb2c4b /home/pi/lighting-controller/esp32/build/spi_slave.bin diff --git a/esp32/build/.ninja_deps b/esp32/build/.ninja_deps index 93271efb6319ea6364b4446e7f9e2e9f5beb0a26..7451efeb1c0a89643cd0a9d95bbc29ca68a00056 100644 GIT binary patch delta 313 zcmccfS^Z6)Mnel@3sVbo3rh=Y3tJ0&3&$4DJ3j?o7#SLvxEUCjdh)kr24zVwPgl(4 z%$~ksBgYv*4km_%6+8?Key5~%faF$ASFGV|pWbklLt%PCBzwYi1!2~V>1%#)_P~{f sI_mz(3nofw{ztbJhlo=e|J45DKjM_W6};>m5JHp#mKmk*eT-Kr06_n3!T", + "depends_on": "!IDF_TARGET_LINUX && && ", "help": null, "id": "APP_BUILD_TYPE_APP_2NDBOOT", "name": "APP_BUILD_TYPE_APP_2NDBOOT", @@ -3115,7 +3115,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "APP_BUILD_TYPE_RAM", "name": "APP_BUILD_TYPE_RAM", @@ -3384,7 +3384,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_COMPILER_OPTIMIZATION_SIZE", "name": "BOOTLOADER_COMPILER_OPTIMIZATION_SIZE", @@ -3394,7 +3394,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG", "name": "BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG", @@ -3404,7 +3404,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_COMPILER_OPTIMIZATION_PERF", "name": "BOOTLOADER_COMPILER_OPTIMIZATION_PERF", @@ -3426,7 +3426,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_VERSION_1", "name": "BOOTLOADER_LOG_VERSION_1", @@ -3436,7 +3436,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_VERSION_2", "name": "BOOTLOADER_LOG_VERSION_2", @@ -3466,7 +3466,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_LEVEL_NONE", "name": "BOOTLOADER_LOG_LEVEL_NONE", @@ -3476,7 +3476,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_LEVEL_ERROR", "name": "BOOTLOADER_LOG_LEVEL_ERROR", @@ -3486,7 +3486,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_LEVEL_WARN", "name": "BOOTLOADER_LOG_LEVEL_WARN", @@ -3496,7 +3496,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_LEVEL_INFO", "name": "BOOTLOADER_LOG_LEVEL_INFO", @@ -3506,7 +3506,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_LEVEL_DEBUG", "name": "BOOTLOADER_LOG_LEVEL_DEBUG", @@ -3516,7 +3516,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_LEVEL_VERBOSE", "name": "BOOTLOADER_LOG_LEVEL_VERBOSE", @@ -3568,7 +3568,7 @@ "children": [ { "children": [], - "depends_on": "BOOTLOADER_LOG_VERSION_2 && ", + "depends_on": "BOOTLOADER_LOG_VERSION_2 && && ", "help": null, "id": "BOOTLOADER_LOG_TIMESTAMP_SOURCE_NONE", "name": "BOOTLOADER_LOG_TIMESTAMP_SOURCE_NONE", @@ -3578,7 +3578,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS", "name": "BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS", @@ -3636,7 +3636,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Enables text-based logging, where log messages are stored in a human-readable format.\nThis mode is useful for development and debugging, as it allows logs to be easily\nread and interpreted without additional processing.", "id": "BOOTLOADER_LOG_MODE_TEXT", "name": "BOOTLOADER_LOG_MODE_TEXT", @@ -3646,7 +3646,7 @@ }, { "children": [], - "depends_on": "BOOTLOADER_LOG_VERSION_2 && ", + "depends_on": "BOOTLOADER_LOG_VERSION_2 && && ", "help": "Enables binary logging with host-side format string expansion. In this mode, the\nformat argument of ESP_LOGx, ESP_EARLY_LOG, and ESP_DRAM_LOG macros is stored in a\nNOLOAD section, not included in the final binary file. This reduces flash usage by\napproximately 10% - 35%. The esp_log() function uses the binary log handler to output\nmessages. Instead of sending the full log string, the chip transmits only the\naddresses of these strings (if present in the ELF file). If the format string\ncannot be found in the ELF file, the chip sends the entire string. The host-side\nmonitor tool, which has access to the ELF file, reconstructs the log message using\nthe format string.\nThis reduces firmware size by eliminating format strings from\nflash memory and removing the usage of printf-like functions, potentially freeing up\na few kilobytes of space. To further reduce firmware size, wrap string data with ESP_LOG_ATTR_STR.", "id": "BOOTLOADER_LOG_MODE_BINARY", "name": "BOOTLOADER_LOG_MODE_BINARY", @@ -3786,7 +3786,7 @@ "children": [ { "children": [], - "depends_on": "!ESPTOOLPY_FLASHFREQ_80M && ", + "depends_on": "!ESPTOOLPY_FLASHFREQ_80M && && ", "help": null, "id": "BOOTLOADER_VDDSDIO_BOOST_1_8V", "name": "BOOTLOADER_VDDSDIO_BOOST_1_8V", @@ -3796,7 +3796,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BOOTLOADER_VDDSDIO_BOOST_1_9V", "name": "BOOTLOADER_VDDSDIO_BOOST_1_9V", @@ -4191,7 +4191,7 @@ "children": [ { "children": [], - "depends_on": "SECURE_BOOT_V1_SUPPORTED && (SECURE_SIGNED_APPS_NO_SECURE_BOOT || SECURE_BOOT_V1_ENABLED) && ", + "depends_on": "SECURE_BOOT_V1_SUPPORTED && (SECURE_SIGNED_APPS_NO_SECURE_BOOT || SECURE_BOOT_V1_ENABLED) && && ", "help": "Embeds the ECDSA public key in the bootloader and signs the application with an ECDSA key.\nRefer to the documentation before enabling.", "id": "SECURE_SIGNED_APPS_ECDSA_SCHEME", "name": "SECURE_SIGNED_APPS_ECDSA_SCHEME", @@ -4201,7 +4201,7 @@ }, { "children": [], - "depends_on": "SECURE_BOOT_V2_RSA_SUPPORTED && (SECURE_SIGNED_APPS_NO_SECURE_BOOT || SECURE_BOOT_V2_ENABLED) && !(IDF_TARGET_ESP32C5 && ESP32C5_REV_MIN_FULL < 1) && ", + "depends_on": "SECURE_BOOT_V2_RSA_SUPPORTED && (SECURE_SIGNED_APPS_NO_SECURE_BOOT || SECURE_BOOT_V2_ENABLED) && !(IDF_TARGET_ESP32C5 && ESP32C5_REV_MIN_FULL < 1) && && ", "help": "Appends the RSA-3072 based Signature block to the application.\nRefer to before enabling.", "id": "SECURE_SIGNED_APPS_RSA_SCHEME", "name": "SECURE_SIGNED_APPS_RSA_SCHEME", @@ -4211,7 +4211,7 @@ }, { "children": [], - "depends_on": "SECURE_BOOT_V2_ECC_SUPPORTED && (SECURE_SIGNED_APPS_NO_SECURE_BOOT || SECURE_BOOT_V2_ENABLED) && ", + "depends_on": "SECURE_BOOT_V2_ECC_SUPPORTED && (SECURE_SIGNED_APPS_NO_SECURE_BOOT || SECURE_BOOT_V2_ENABLED) && && ", "help": "For Secure boot V2 (e.g., ESP32-C2 SoC), appends ECDSA based signature block to the application.\nRefer to documentation before enabling.", "id": "SECURE_SIGNED_APPS_ECDSA_V2_SCHEME", "name": "SECURE_SIGNED_APPS_ECDSA_V2_SCHEME", @@ -4231,7 +4231,7 @@ "children": [ { "children": [], - "depends_on": "SECURE_SIGNED_APPS_ECDSA_V2_SCHEME && ", + "depends_on": "SECURE_SIGNED_APPS_ECDSA_V2_SCHEME && && ", "help": null, "id": "SECURE_BOOT_ECDSA_KEY_LEN_192_BITS", "name": "SECURE_BOOT_ECDSA_KEY_LEN_192_BITS", @@ -4241,7 +4241,7 @@ }, { "children": [], - "depends_on": "SECURE_SIGNED_APPS_ECDSA_V2_SCHEME && ", + "depends_on": "SECURE_SIGNED_APPS_ECDSA_V2_SCHEME && && ", "help": null, "id": "SECURE_BOOT_ECDSA_KEY_LEN_256_BITS", "name": "SECURE_BOOT_ECDSA_KEY_LEN_256_BITS", @@ -4251,7 +4251,7 @@ }, { "children": [], - "depends_on": "SECURE_SIGNED_APPS_ECDSA_V2_SCHEME && SOC_ECDSA_SUPPORT_CURVE_P384 && ", + "depends_on": "SECURE_SIGNED_APPS_ECDSA_V2_SCHEME && SOC_ECDSA_SUPPORT_CURVE_P384 && && ", "help": null, "id": "SECURE_BOOT_ECDSA_KEY_LEN_384_BITS", "name": "SECURE_BOOT_ECDSA_KEY_LEN_384_BITS", @@ -4332,7 +4332,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "On first boot, the bootloader will generate a key which is not readable externally or by software. A\ndigest is generated from the bootloader image itself. This digest will be verified on each subsequent\nboot.\n\nEnabling this option means that the bootloader cannot be changed after the first time it is booted.", "id": "SECURE_BOOTLOADER_ONE_TIME_FLASH", "name": "SECURE_BOOTLOADER_ONE_TIME_FLASH", @@ -4342,7 +4342,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Generate a reusable secure bootloader key, derived (via SHA-256) from the secure boot signing key.\n\nThis allows the secure bootloader to be re-flashed by anyone with access to the secure boot signing\nkey.\n\nThis option is less secure than one-time flash, because a leak of the digest key from one device\nallows reflashing of any device that uses it.", "id": "SECURE_BOOTLOADER_REFLASHABLE", "name": "SECURE_BOOTLOADER_REFLASHABLE", @@ -4423,7 +4423,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SECURE_BOOTLOADER_KEY_ENCODING_256BIT", "name": "SECURE_BOOTLOADER_KEY_ENCODING_256BIT", @@ -4433,7 +4433,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SECURE_BOOTLOADER_KEY_ENCODING_192BIT", "name": "SECURE_BOOTLOADER_KEY_ENCODING_192BIT", @@ -4753,7 +4753,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "If set, during startup the app will burn an eFuse bit to permanently disable the UART ROM\nDownload Mode. This prevents any future use of esptool.py, espefuse.py and similar tools.\n\nOnce disabled, if the SoC is booted with strapping pins set for ROM Download Mode\nthen an error is printed instead.\n\nIt is recommended to enable this option in any production application where Flash\nEncryption and/or Secure Boot is enabled and access to Download Mode is not required.\n\nIt is also possible to permanently disable Download Mode by calling\nesp_efuse_disable_rom_download_mode() at runtime.", "id": "SECURE_DISABLE_ROM_DL_MODE", "name": "SECURE_DISABLE_ROM_DL_MODE", @@ -4763,7 +4763,7 @@ }, { "children": [], - "depends_on": "SOC_SUPPORTS_SECURE_DL_MODE && ", + "depends_on": "SOC_SUPPORTS_SECURE_DL_MODE && && ", "help": "If set, during startup the app will burn an eFuse bit to permanently switch the UART ROM\nDownload Mode into a separate Secure Download mode. This option can only work if\nDownload Mode is not already disabled by eFuse.\n\nSecure Download mode limits the use of Download Mode functions to update SPI config,\nchanging baud rate, basic flash write and a command to return a summary of currently\nenabled security features (`get_security_info`).\n\nSecure Download mode is not compatible with the esptool.py flasher stub feature,\nespefuse.py, read/writing memory or registers, encrypted download, or any other\nfeatures that interact with unsupported Download Mode commands.\n\nSecure Download mode should be enabled in any application where Flash Encryption\nand/or Secure Boot is enabled. Disabling this option does not immediately cancel\nthe benefits of the security features, but it increases the potential \"attack\nsurface\" for an attacker to try and bypass them with a successful physical attack.\n\nIt is also possible to enable secure download mode at runtime by calling\nesp_efuse_enable_rom_secure_download_mode()\n\nNote: Secure Download mode is not available for ESP32.", "id": "SECURE_ENABLE_SECURE_ROM_DL_MODE", "name": "SECURE_ENABLE_SECURE_ROM_DL_MODE", @@ -4773,7 +4773,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This is a potentially insecure option.\nEnabling this option will allow the full UART download mode to stay enabled.\nThis option SHOULD NOT BE ENABLED for production use cases.", "id": "SECURE_INSECURE_ALLOW_DL_MODE", "name": "SECURE_INSECURE_ALLOW_DL_MODE", @@ -5133,7 +5133,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Always print ROM logs, this is the default behavior.", "id": "BOOT_ROM_LOG_ALWAYS_ON", "name": "BOOT_ROM_LOG_ALWAYS_ON", @@ -5143,7 +5143,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Don't print ROM logs.", "id": "BOOT_ROM_LOG_ALWAYS_OFF", "name": "BOOT_ROM_LOG_ALWAYS_OFF", @@ -5153,7 +5153,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Print ROM logs when GPIO level is high during start up.\nThe GPIO number is chip dependent,\ne.g. on ESP32-S2, the control GPIO is GPIO46.", "id": "BOOT_ROM_LOG_ON_GPIO_HIGH", "name": "BOOT_ROM_LOG_ON_GPIO_HIGH", @@ -5163,7 +5163,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Print ROM logs when GPIO level is low during start up.\nThe GPIO number is chip dependent,\ne.g. on ESP32-S2, the control GPIO is GPIO46.", "id": "BOOT_ROM_LOG_ON_GPIO_LOW", "name": "BOOT_ROM_LOG_ON_GPIO_LOW", @@ -5189,7 +5189,7 @@ "children": [ { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "The flasher tool sends a precompiled download stub first by default. That stub allows things\nlike compressed downloads and more. Usually you should not need to disable that feature", "id": "ESPTOOLPY_NO_STUB", "name": "ESPTOOLPY_NO_STUB", @@ -5199,7 +5199,7 @@ }, { "children": [], - "depends_on": "SOC_SPI_MEM_SUPPORT_FLASH_OPI_MODE && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "SOC_SPI_MEM_SUPPORT_FLASH_OPI_MODE && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "ESPTOOLPY_OCT_FLASH", "name": "ESPTOOLPY_OCT_FLASH", @@ -5209,7 +5209,7 @@ }, { "children": [], - "depends_on": "SOC_SPI_MEM_SUPPORT_FLASH_OPI_MODE && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "SOC_SPI_MEM_SUPPORT_FLASH_OPI_MODE && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This config option helps decide whether flash is Quad or Octal, but please note some limitations:\n\n1. If the flash chip is an Octal one, even if one of \"QIO\", \"QOUT\", \"DIO\", \"DOUT\" options is\n selected in `ESPTOOLPY_FLASHMODE`, our code will automatically change the\n mode to \"OPI\" and the sample mode will be STR.\n2. If the flash chip is a Quad one, even if \"OPI\" is selected in `ESPTOOLPY_FLASHMODE`, our code will\n automatically change the mode to \"DIO\".\n3. This option is mainly to improve the out-of-box experience of developers. It doesn't guarantee\n the feature-complete. Some code still rely on `ESPTOOLPY_OCT_FLASH`. Please do not rely on this option\n when you are pretty sure that you are using Octal flash.\n In this case, please enable `ESPTOOLPY_OCT_FLASH` option, then you can choose `DTR` sample mode\n in `ESPTOOLPY_FLASH_SAMPLE_MODE`. Otherwise, only `STR` mode is available.\n4. Enabling this feature reduces available internal RAM size (around 900 bytes).\n If your IRAM space is insufficient and you're aware of your flash type,\n disable this option and select corresponding flash type options.", "id": "ESPTOOLPY_FLASH_MODE_AUTO_DETECT", "name": "ESPTOOLPY_FLASH_MODE_AUTO_DETECT", @@ -5221,7 +5221,7 @@ "children": [ { "children": [], - "depends_on": "!ESPTOOLPY_OCT_FLASH && ", + "depends_on": "!ESPTOOLPY_OCT_FLASH && && ", "help": null, "id": "ESPTOOLPY_FLASHMODE_QIO", "name": "ESPTOOLPY_FLASHMODE_QIO", @@ -5231,7 +5231,7 @@ }, { "children": [], - "depends_on": "!ESPTOOLPY_OCT_FLASH && ", + "depends_on": "!ESPTOOLPY_OCT_FLASH && && ", "help": null, "id": "ESPTOOLPY_FLASHMODE_QOUT", "name": "ESPTOOLPY_FLASHMODE_QOUT", @@ -5241,7 +5241,7 @@ }, { "children": [], - "depends_on": "!ESPTOOLPY_OCT_FLASH && ", + "depends_on": "!ESPTOOLPY_OCT_FLASH && && ", "help": null, "id": "ESPTOOLPY_FLASHMODE_DIO", "name": "ESPTOOLPY_FLASHMODE_DIO", @@ -5251,7 +5251,7 @@ }, { "children": [], - "depends_on": "!ESPTOOLPY_OCT_FLASH && ", + "depends_on": "!ESPTOOLPY_OCT_FLASH && && ", "help": null, "id": "ESPTOOLPY_FLASHMODE_DOUT", "name": "ESPTOOLPY_FLASHMODE_DOUT", @@ -5261,7 +5261,7 @@ }, { "children": [], - "depends_on": "ESPTOOLPY_OCT_FLASH && ", + "depends_on": "ESPTOOLPY_OCT_FLASH && && ", "help": null, "id": "ESPTOOLPY_FLASHMODE_OPI", "name": "ESPTOOLPY_FLASHMODE_OPI", @@ -5270,7 +5270,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Mode the flash chip is flashed in, as well as the default mode for the\nbinary to run in.", "id": "serial-flasher-config-flash-spi-mode-home-pi-esp-esp-idf-components-esptool_py-Kconfig.projbuild-39", "name": "ESPTOOLPY_FLASHMODE", @@ -5281,7 +5281,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASH_SAMPLE_MODE_STR", "name": "ESPTOOLPY_FLASH_SAMPLE_MODE_STR", @@ -5291,7 +5291,7 @@ }, { "children": [], - "depends_on": "ESPTOOLPY_OCT_FLASH && ", + "depends_on": "ESPTOOLPY_OCT_FLASH && && ", "help": null, "id": "ESPTOOLPY_FLASH_SAMPLE_MODE_DTR", "name": "ESPTOOLPY_FLASH_SAMPLE_MODE_DTR", @@ -5300,7 +5300,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "serial-flasher-config-flash-sampling-mode-home-pi-esp-esp-idf-components-esptool_py-Kconfig.projbuild-64", "name": "ESPTOOLPY_FLASH_SAMPLE_MODE", @@ -5309,7 +5309,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "ESPTOOLPY_FLASHMODE", "name": "ESPTOOLPY_FLASHMODE", @@ -5321,7 +5321,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHFREQ_80M", "name": "ESPTOOLPY_FLASHFREQ_80M", @@ -5331,7 +5331,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHFREQ_40M", "name": "ESPTOOLPY_FLASHFREQ_40M", @@ -5341,7 +5341,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHFREQ_26M", "name": "ESPTOOLPY_FLASHFREQ_26M", @@ -5351,7 +5351,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHFREQ_20M", "name": "ESPTOOLPY_FLASHFREQ_20M", @@ -5360,7 +5360,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "serial-flasher-config-flash-spi-speed-home-pi-esp-esp-idf-components-esptool_py-..-spi_flash-esp32c3-Kconfig.flash_freq-1", "name": "ESPTOOLPY_FLASHFREQ", @@ -5369,7 +5369,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "ESPTOOLPY_FLASHFREQ", "name": "ESPTOOLPY_FLASHFREQ", @@ -5381,7 +5381,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHSIZE_1MB", "name": "ESPTOOLPY_FLASHSIZE_1MB", @@ -5391,7 +5391,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHSIZE_2MB", "name": "ESPTOOLPY_FLASHSIZE_2MB", @@ -5401,7 +5401,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHSIZE_4MB", "name": "ESPTOOLPY_FLASHSIZE_4MB", @@ -5411,7 +5411,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHSIZE_8MB", "name": "ESPTOOLPY_FLASHSIZE_8MB", @@ -5421,7 +5421,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHSIZE_16MB", "name": "ESPTOOLPY_FLASHSIZE_16MB", @@ -5431,7 +5431,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHSIZE_32MB", "name": "ESPTOOLPY_FLASHSIZE_32MB", @@ -5441,7 +5441,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHSIZE_64MB", "name": "ESPTOOLPY_FLASHSIZE_64MB", @@ -5451,7 +5451,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_FLASHSIZE_128MB", "name": "ESPTOOLPY_FLASHSIZE_128MB", @@ -5460,7 +5460,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "SPI flash size, in megabytes", "id": "serial-flasher-config-flash-size-home-pi-esp-esp-idf-components-esptool_py-Kconfig.projbuild-112", "name": "ESPTOOLPY_FLASHSIZE", @@ -5469,7 +5469,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "ESPTOOLPY_FLASHSIZE", "name": "ESPTOOLPY_FLASHSIZE", @@ -5479,7 +5479,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "If this option is set, flashing the project will automatically detect\nthe flash size of the target chip and update the bootloader image\nbefore it is flashed.\n\nEnabling this option turns off the image protection against corruption\nby a SHA256 digest. Updating the bootloader image before flashing would\ninvalidate the digest.", "id": "ESPTOOLPY_HEADER_FLASHSIZE_UPDATE", "name": "ESPTOOLPY_HEADER_FLASHSIZE_UPDATE", @@ -5491,7 +5491,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_BEFORE_RESET", "name": "ESPTOOLPY_BEFORE_RESET", @@ -5501,7 +5501,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_BEFORE_NORESET", "name": "ESPTOOLPY_BEFORE_NORESET", @@ -5510,7 +5510,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Configure whether esptool.py should reset the ESP32 before flashing.\n\nAutomatic resetting depends on the RTS & DTR signals being\nwired from the serial port to the ESP32. Most USB development\nboards do this internally.", "id": "serial-flasher-config-before-flashing-home-pi-esp-esp-idf-components-esptool_py-Kconfig.projbuild-159", "name": "ESPTOOLPY_BEFORE", @@ -5519,7 +5519,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "ESPTOOLPY_BEFORE", "name": "ESPTOOLPY_BEFORE", @@ -5531,7 +5531,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_AFTER_RESET", "name": "ESPTOOLPY_AFTER_RESET", @@ -5541,7 +5541,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESPTOOLPY_AFTER_NORESET", "name": "ESPTOOLPY_AFTER_NORESET", @@ -5550,7 +5550,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Configure whether esptool.py should reset the ESP32 after flashing.\n\nAutomatic resetting depends on the RTS & DTR signals being\nwired from the serial port to the ESP32. Most USB development\nboards do this internally.", "id": "serial-flasher-config-after-flashing-home-pi-esp-esp-idf-components-esptool_py-Kconfig.projbuild-180", "name": "ESPTOOLPY_AFTER", @@ -5559,7 +5559,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "ESPTOOLPY_AFTER", "name": "ESPTOOLPY_AFTER", @@ -5569,7 +5569,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "ESPTOOLPY_MONITOR_BAUD", "name": "ESPTOOLPY_MONITOR_BAUD", @@ -5589,7 +5589,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This is the default partition table, designed to fit into a 2MB or\nlarger flash with a single 1MB app partition.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_singleapp.csv\n\nThis partition table is not suitable for an app that needs OTA\n(over the air update) capability.", "id": "PARTITION_TABLE_SINGLE_APP", "name": "PARTITION_TABLE_SINGLE_APP", @@ -5599,7 +5599,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This is a variation of the default partition table, that expands\nthe 1MB app partition size to 1.5MB to fit more code.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_singleapp_large.csv\n\nThis partition table is not suitable for an app that needs OTA\n(over the air update) capability.", "id": "PARTITION_TABLE_SINGLE_APP_LARGE", "name": "PARTITION_TABLE_SINGLE_APP_LARGE", @@ -5609,7 +5609,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This is a basic OTA-enabled partition table with a factory app\npartition plus two OTA app partitions. All are 1MB, so this\npartition table requires 4MB or larger flash size.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_two_ota.csv", "id": "PARTITION_TABLE_TWO_OTA", "name": "PARTITION_TABLE_TWO_OTA", @@ -5619,7 +5619,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This is a basic OTA-enabled partition table with\ntwo OTA app partitions. Both app partition sizes are 1700K,\nso this partition table requires 4MB or larger flash size.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_two_ota_large.csv", "id": "PARTITION_TABLE_TWO_OTA_LARGE", "name": "PARTITION_TABLE_TWO_OTA_LARGE", @@ -5629,7 +5629,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Specify the path to the partition table CSV to use for your project.\n\nConsult the Partition Table section in the ESP-IDF Programmers Guide\nfor more information.", "id": "PARTITION_TABLE_CUSTOM", "name": "PARTITION_TABLE_CUSTOM", @@ -5639,7 +5639,7 @@ }, { "children": [], - "depends_on": "!ESP32_COREDUMP_ENABLE_TO_FLASH && NVS_SEC_KEY_PROTECT_USING_FLASH_ENC && ", + "depends_on": "!ESP32_COREDUMP_ENABLE_TO_FLASH && NVS_SEC_KEY_PROTECT_USING_FLASH_ENC && && ", "help": "This is a variation of the default \"Single factory app, no OTA\" partition table\nthat supports encrypted NVS when using flash encryption. See the Flash Encryption section\nin the ESP-IDF Programmers Guide for more information.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_singleapp_encr_nvs.csv", "id": "PARTITION_TABLE_SINGLE_APP_ENCRYPTED_NVS", "name": "PARTITION_TABLE_SINGLE_APP_ENCRYPTED_NVS", @@ -5649,7 +5649,7 @@ }, { "children": [], - "depends_on": "!ESP32_COREDUMP_ENABLE_TO_FLASH && NVS_SEC_KEY_PROTECT_USING_FLASH_ENC && ", + "depends_on": "!ESP32_COREDUMP_ENABLE_TO_FLASH && NVS_SEC_KEY_PROTECT_USING_FLASH_ENC && && ", "help": "This is a variation of the \"Single factory app (large), no OTA\" partition table\nthat supports encrypted NVS when using flash encryption. See the Flash Encryption section\nin the ESP-IDF Programmers Guide for more information.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_singleapp_large_encr_nvs.csv", "id": "PARTITION_TABLE_SINGLE_APP_LARGE_ENC_NVS", "name": "PARTITION_TABLE_SINGLE_APP_LARGE_ENC_NVS", @@ -5659,7 +5659,7 @@ }, { "children": [], - "depends_on": "!ESP_COREDUMP_ENABLE_TO_FLASH && NVS_SEC_KEY_PROTECT_USING_FLASH_ENC && ", + "depends_on": "!ESP_COREDUMP_ENABLE_TO_FLASH && NVS_SEC_KEY_PROTECT_USING_FLASH_ENC && && ", "help": "This is a variation of the \"Factory app, two OTA definitions\" partition table\nthat supports encrypted NVS when using flash encryption. See the Flash Encryption section\nin the ESP-IDF Programmers Guide for more information.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_two_ota_encr_nvs.csv", "id": "PARTITION_TABLE_TWO_OTA_ENCRYPTED_NVS", "name": "PARTITION_TABLE_TWO_OTA_ENCRYPTED_NVS", @@ -5669,7 +5669,7 @@ }, { "children": [], - "depends_on": "SECURE_ENABLE_TEE && ", + "depends_on": "SECURE_ENABLE_TEE && && ", "help": "This is a variation of the default \"Single factory app, no OTA\" partition table\nthat supports the ESP-TEE framework. See the Trusted Execution Environment (TEE) section\nin the ESP-IDF Programmers Guide for more information.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_singleapp_tee.csv", "id": "PARTITION_TABLE_SINGLE_APP_TEE", "name": "PARTITION_TABLE_SINGLE_APP_TEE", @@ -5679,7 +5679,7 @@ }, { "children": [], - "depends_on": "SECURE_ENABLE_TEE && ", + "depends_on": "SECURE_ENABLE_TEE && && ", "help": "This is a basic OTA-enabled partition table with two OTA app partitions each\nfor the TEE and the user (REE) application. The user app partition sizes are 1536K,\nso this partition table requires 4MB or larger flash size. See the\nTrusted Execution Environment (TEE) section in the ESP-IDF Programmers Guide\nfor more information.\n\nThe corresponding CSV file in the IDF directory is\ncomponents/partition_table/partitions_two_ota_tee.csv", "id": "PARTITION_TABLE_TWO_OTA_TEE", "name": "PARTITION_TABLE_TWO_OTA_TEE", @@ -5747,7 +5747,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_OPTIMIZATION_DEBUG", "name": "COMPILER_OPTIMIZATION_DEBUG", @@ -5757,7 +5757,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_OPTIMIZATION_SIZE", "name": "COMPILER_OPTIMIZATION_SIZE", @@ -5767,7 +5767,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_OPTIMIZATION_PERF", "name": "COMPILER_OPTIMIZATION_PERF", @@ -5777,7 +5777,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_OPTIMIZATION_NONE", "name": "COMPILER_OPTIMIZATION_NONE", @@ -5797,7 +5797,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Enable assertions. Assertion content and line number will be printed on failure.", "id": "COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE", "name": "COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE", @@ -5807,7 +5807,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Enable silent assertions. Failed assertions will abort(), user needs to\nuse the aborting address to find the line number with the failed assertion.", "id": "COMPILER_OPTIMIZATION_ASSERTIONS_SILENT", "name": "COMPILER_OPTIMIZATION_ASSERTIONS_SILENT", @@ -5817,7 +5817,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "If assertions are disabled, -DNDEBUG is added to CPPFLAGS.", "id": "COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE", "name": "COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE", @@ -5847,7 +5847,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_FLOAT_LIB_FROM_GCCLIB", "name": "COMPILER_FLOAT_LIB_FROM_GCCLIB", @@ -5857,7 +5857,7 @@ }, { "children": [], - "depends_on": "ESP_ROM_HAS_RVFPLIB && ", + "depends_on": "ESP_ROM_HAS_RVFPLIB && && ", "help": null, "id": "COMPILER_FLOAT_LIB_FROM_RVFPLIB", "name": "COMPILER_FLOAT_LIB_FROM_RVFPLIB", @@ -5940,7 +5940,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_STACK_CHECK_MODE_NONE", "name": "COMPILER_STACK_CHECK_MODE_NONE", @@ -5950,7 +5950,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_STACK_CHECK_MODE_NORM", "name": "COMPILER_STACK_CHECK_MODE_NORM", @@ -5960,7 +5960,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_STACK_CHECK_MODE_STRONG", "name": "COMPILER_STACK_CHECK_MODE_STRONG", @@ -5970,7 +5970,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "COMPILER_STACK_CHECK_MODE_ALL", "name": "COMPILER_STACK_CHECK_MODE_ALL", @@ -6090,7 +6090,7 @@ "children": [ { "children": [], - "depends_on": "!IDF_TARGET_LINUX && ", + "depends_on": "!IDF_TARGET_LINUX && && ", "help": null, "id": "COMPILER_RT_LIB_GCCLIB", "name": "COMPILER_RT_LIB_GCCLIB", @@ -6100,7 +6100,7 @@ }, { "children": [], - "depends_on": "IDF_TOOLCHAIN_CLANG && !IDF_TARGET_LINUX && ", + "depends_on": "IDF_TOOLCHAIN_CLANG && !IDF_TARGET_LINUX && && ", "help": null, "id": "COMPILER_RT_LIB_CLANGRT", "name": "COMPILER_RT_LIB_CLANGRT", @@ -6110,7 +6110,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_LINUX && ", + "depends_on": "IDF_TARGET_LINUX && && ", "help": null, "id": "COMPILER_RT_LIB_HOST", "name": "COMPILER_RT_LIB_HOST", @@ -6140,7 +6140,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Fails the link step with an error if orphan sections are detected.", "id": "COMPILER_ORPHAN_SECTIONS_ERROR", "name": "COMPILER_ORPHAN_SECTIONS_ERROR", @@ -6150,7 +6150,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Places orphan sections with a warning message.", "id": "COMPILER_ORPHAN_SECTIONS_WARNING", "name": "COMPILER_ORPHAN_SECTIONS_WARNING", @@ -6160,7 +6160,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Places orphan sections without a warning/error message.", "id": "COMPILER_ORPHAN_SECTIONS_PLACE", "name": "COMPILER_ORPHAN_SECTIONS_PLACE", @@ -6190,7 +6190,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Use default _GLIBCXX20_CONSTEXPR and _GLIBCXX23_CONSTEXPR defined in libstdc++", "id": "COMPILER_CXX_GLIBCXX_CONSTEXPR_NO_CHANGE", "name": "COMPILER_CXX_GLIBCXX_CONSTEXPR_NO_CHANGE", @@ -6200,7 +6200,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Define _GLIBCXX20_CONSTEXPR=__attribute__((cold)) constexpr\nDefine _GLIBCXX23_CONSTEXPR=__attribute__((cold)) constexpr", "id": "COMPILER_CXX_GLIBCXX_CONSTEXPR_COLD_CONSTEXPR", "name": "COMPILER_CXX_GLIBCXX_CONSTEXPR_COLD_CONSTEXPR", @@ -6210,7 +6210,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Define _GLIBCXX20_CONSTEXPR=__attribute__((cold)).\nDefine _GLIBCXX23_CONSTEXPR=__attribute__((cold)).", "id": "COMPILER_CXX_GLIBCXX_CONSTEXPR_COLD", "name": "COMPILER_CXX_GLIBCXX_CONSTEXPR_COLD", @@ -6240,7 +6240,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "APPTRACE_DEST_JTAG", "name": "APPTRACE_DEST_JTAG", @@ -6250,7 +6250,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "APPTRACE_DEST_NONE", "name": "APPTRACE_DEST_NONE", @@ -6270,7 +6270,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "APPTRACE_DEST_UART", "name": "APPTRACE_DEST_UART", @@ -6280,7 +6280,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "APPTRACE_DEST_UART_NONE", "name": "APPTRACE_DEST_UART_NONE", @@ -6484,7 +6484,7 @@ "type": "choice" } ], - "depends_on": "APPTRACE_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables support for SEGGER SystemView tracing functionality.", "id": "APPTRACE_SV_ENABLE", "name": "APPTRACE_SV_ENABLE", @@ -6496,7 +6496,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Send SEGGER SystemView events for Pro CPU.", "id": "APPTRACE_SV_DEST_CPU_0", "name": "APPTRACE_SV_DEST_CPU_0", @@ -6506,7 +6506,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Send SEGGER SystemView events for App CPU.", "id": "APPTRACE_SV_DEST_CPU_1", "name": "APPTRACE_SV_DEST_CPU_1", @@ -6515,7 +6515,7 @@ "type": "bool" } ], - "depends_on": "APPTRACE_SV_DEST_UART && !ESP_SYSTEM_SINGLE_CORE_MODE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_DEST_UART && !ESP_SYSTEM_SINGLE_CORE_MODE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Define the CPU to trace by SystemView.", "id": "component-config-application-level-tracing-freertos-systemview-tracing-cpu-to-trace-home-pi-esp-esp-idf-components-app_trace-Kconfig-202", "name": "APPTRACE_SV_CPU", @@ -6526,7 +6526,7 @@ "children": [ { "children": [], - "depends_on": "ESP_SYSTEM_SINGLE_CORE_MODE && !PM_ENABLE && !IDF_TARGET_ESP32C3 && ", + "depends_on": "ESP_SYSTEM_SINGLE_CORE_MODE && !PM_ENABLE && !IDF_TARGET_ESP32C3 && && ", "help": null, "id": "APPTRACE_SV_TS_SOURCE_CCOUNT", "name": "APPTRACE_SV_TS_SOURCE_CCOUNT", @@ -6536,7 +6536,7 @@ }, { "children": [], - "depends_on": "!PM_ENABLE && !IDF_TARGET_ESP32C3 && ", + "depends_on": "!PM_ENABLE && !IDF_TARGET_ESP32C3 && && ", "help": null, "id": "APPTRACE_SV_TS_SOURCE_GPTIMER", "name": "APPTRACE_SV_TS_SOURCE_GPTIMER", @@ -6546,7 +6546,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "APPTRACE_SV_TS_SOURCE_ESP_TIMER", "name": "APPTRACE_SV_TS_SOURCE_ESP_TIMER", @@ -6555,7 +6555,7 @@ "type": "bool" } ], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "SystemView needs to use a hardware timer as the source of timestamps\nwhen tracing. This option selects the timer for it.", "id": "component-config-application-level-tracing-freertos-systemview-tracing-timer-to-use-as-timestamp-source-home-pi-esp-esp-idf-components-app_trace-Kconfig-222", "name": "APPTRACE_SV_TS_SOURCE", @@ -6564,7 +6564,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Configures maximum supported tasks in sysview debug", "id": "APPTRACE_SV_MAX_TASKS", "name": "APPTRACE_SV_MAX_TASKS", @@ -6574,7 +6574,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Configures timeout (in us) to wait for free space in trace buffer.\nSet to -1 to wait forever and avoid lost events.", "id": "APPTRACE_SV_BUF_WAIT_TMO", "name": "APPTRACE_SV_BUF_WAIT_TMO", @@ -6584,7 +6584,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Trace Buffer Overflow\" event.", "id": "APPTRACE_SV_EVT_OVERFLOW_ENABLE", "name": "APPTRACE_SV_EVT_OVERFLOW_ENABLE", @@ -6594,7 +6594,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"ISR Enter\" event.", "id": "APPTRACE_SV_EVT_ISR_ENTER_ENABLE", "name": "APPTRACE_SV_EVT_ISR_ENTER_ENABLE", @@ -6604,7 +6604,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"ISR Exit\" event.", "id": "APPTRACE_SV_EVT_ISR_EXIT_ENABLE", "name": "APPTRACE_SV_EVT_ISR_EXIT_ENABLE", @@ -6614,7 +6614,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"ISR to Scheduler\" event.", "id": "APPTRACE_SV_EVT_ISR_TO_SCHED_ENABLE", "name": "APPTRACE_SV_EVT_ISR_TO_SCHED_ENABLE", @@ -6624,7 +6624,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Task Start Execution\" event.", "id": "APPTRACE_SV_EVT_TASK_START_EXEC_ENABLE", "name": "APPTRACE_SV_EVT_TASK_START_EXEC_ENABLE", @@ -6634,7 +6634,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Task Stop Execution\" event.", "id": "APPTRACE_SV_EVT_TASK_STOP_EXEC_ENABLE", "name": "APPTRACE_SV_EVT_TASK_STOP_EXEC_ENABLE", @@ -6644,7 +6644,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Task Start Ready State\" event.", "id": "APPTRACE_SV_EVT_TASK_START_READY_ENABLE", "name": "APPTRACE_SV_EVT_TASK_START_READY_ENABLE", @@ -6654,7 +6654,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Task Stop Ready State\" event.", "id": "APPTRACE_SV_EVT_TASK_STOP_READY_ENABLE", "name": "APPTRACE_SV_EVT_TASK_STOP_READY_ENABLE", @@ -6664,7 +6664,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Task Create\" event.", "id": "APPTRACE_SV_EVT_TASK_CREATE_ENABLE", "name": "APPTRACE_SV_EVT_TASK_CREATE_ENABLE", @@ -6674,7 +6674,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Task Terminate\" event.", "id": "APPTRACE_SV_EVT_TASK_TERMINATE_ENABLE", "name": "APPTRACE_SV_EVT_TASK_TERMINATE_ENABLE", @@ -6684,7 +6684,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"System Idle\" event.", "id": "APPTRACE_SV_EVT_IDLE_ENABLE", "name": "APPTRACE_SV_EVT_IDLE_ENABLE", @@ -6694,7 +6694,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Timer Enter\" event.", "id": "APPTRACE_SV_EVT_TIMER_ENTER_ENABLE", "name": "APPTRACE_SV_EVT_TIMER_ENTER_ENABLE", @@ -6704,7 +6704,7 @@ }, { "children": [], - "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE", + "depends_on": "APPTRACE_SV_ENABLE && APPTRACE_ENABLE && APPTRACE_ENABLE", "help": "Enables \"Timer Exit\" event.", "id": "APPTRACE_SV_EVT_TIMER_EXIT_ENABLE", "name": "APPTRACE_SV_EVT_TIMER_EXIT_ENABLE", @@ -6811,7 +6811,7 @@ "children": [ { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This select btc task stack size", "id": "BT_BTC_TASK_STACK_SIZE", "name": "BT_BTC_TASK_STACK_SIZE", @@ -6823,7 +6823,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_BLUEDROID_PINNED_TO_CORE_0", "name": "BT_BLUEDROID_PINNED_TO_CORE_0", @@ -6833,7 +6833,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ", + "depends_on": "!FREERTOS_UNICORE && && ", "help": null, "id": "BT_BLUEDROID_PINNED_TO_CORE_1", "name": "BT_BLUEDROID_PINNED_TO_CORE_1", @@ -6842,7 +6842,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !FREERTOS_UNICORE && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !FREERTOS_UNICORE && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Which the cpu core to run Bluedroid. Can choose core0 and core1.\nCan not specify no-affinity.", "id": "component-config-bluetooth-bluedroid-options-the-cpu-core-which-bluedroid-run-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-8", "name": "BT_BLUEDROID_PINNED_TO_CORE_CHOICE", @@ -6851,7 +6851,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_BLUEDROID_PINNED_TO_CORE", "name": "BT_BLUEDROID_PINNED_TO_CORE", @@ -6861,7 +6861,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This select btu task stack size", "id": "BT_BTU_TASK_STACK_SIZE", "name": "BT_BTU_TASK_STACK_SIZE", @@ -6871,7 +6871,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Bluedroid memory debug", "id": "BT_BLUEDROID_MEM_DEBUG", "name": "BT_BLUEDROID_MEM_DEBUG", @@ -6881,7 +6881,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enable Espressif Vendor-specific HCI commands for coexist status configuration", "id": "BT_BLUEDROID_ESP_COEX_VSC", "name": "BT_BLUEDROID_ESP_COEX_VSC", @@ -7207,7 +7207,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && ((BT_CONTROLLER_ENABLED && SOC_BT_CLASSIC_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && ((BT_CONTROLLER_ENABLED && SOC_BT_CLASSIC_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "For now this option needs \"SMP_ENABLE\" to be set to yes", "id": "BT_CLASSIC_ENABLED", "name": "BT_CLASSIC_ENABLED", @@ -7454,7 +7454,7 @@ "type": "menu" } ], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This enables Bluetooth Low Energy", "id": "BT_BLE_ENABLED", "name": "BT_BLE_ENABLED", @@ -7464,7 +7464,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This select can save the rodata code size", "id": "BT_STACK_NO_LOG", "name": "BT_STACK_NO_LOG", @@ -7478,7 +7478,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HCI_TRACE_LEVEL_NONE", "name": "BT_LOG_HCI_TRACE_LEVEL_NONE", @@ -7488,7 +7488,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HCI_TRACE_LEVEL_ERROR", "name": "BT_LOG_HCI_TRACE_LEVEL_ERROR", @@ -7498,7 +7498,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HCI_TRACE_LEVEL_WARNING", "name": "BT_LOG_HCI_TRACE_LEVEL_WARNING", @@ -7508,7 +7508,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HCI_TRACE_LEVEL_API", "name": "BT_LOG_HCI_TRACE_LEVEL_API", @@ -7518,7 +7518,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HCI_TRACE_LEVEL_EVENT", "name": "BT_LOG_HCI_TRACE_LEVEL_EVENT", @@ -7528,7 +7528,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HCI_TRACE_LEVEL_DEBUG", "name": "BT_LOG_HCI_TRACE_LEVEL_DEBUG", @@ -7538,7 +7538,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HCI_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_HCI_TRACE_LEVEL_VERBOSE", @@ -7547,7 +7547,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for HCI layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-hci-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-475", "name": "BT_LOG_HCI_TRACE_LEVEL", @@ -7556,7 +7556,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_HCI_TRACE_LEVEL", "name": "BT_LOG_HCI_TRACE_LEVEL", @@ -7568,7 +7568,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTM_TRACE_LEVEL_NONE", "name": "BT_LOG_BTM_TRACE_LEVEL_NONE", @@ -7578,7 +7578,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTM_TRACE_LEVEL_ERROR", "name": "BT_LOG_BTM_TRACE_LEVEL_ERROR", @@ -7588,7 +7588,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTM_TRACE_LEVEL_WARNING", "name": "BT_LOG_BTM_TRACE_LEVEL_WARNING", @@ -7598,7 +7598,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTM_TRACE_LEVEL_API", "name": "BT_LOG_BTM_TRACE_LEVEL_API", @@ -7608,7 +7608,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTM_TRACE_LEVEL_EVENT", "name": "BT_LOG_BTM_TRACE_LEVEL_EVENT", @@ -7618,7 +7618,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTM_TRACE_LEVEL_DEBUG", "name": "BT_LOG_BTM_TRACE_LEVEL_DEBUG", @@ -7628,7 +7628,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTM_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_BTM_TRACE_LEVEL_VERBOSE", @@ -7637,7 +7637,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for BTM layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-btm-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-510", "name": "BT_LOG_BTM_TRACE_LEVEL", @@ -7646,7 +7646,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_BTM_TRACE_LEVEL", "name": "BT_LOG_BTM_TRACE_LEVEL", @@ -7658,7 +7658,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_L2CAP_TRACE_LEVEL_NONE", "name": "BT_LOG_L2CAP_TRACE_LEVEL_NONE", @@ -7668,7 +7668,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_L2CAP_TRACE_LEVEL_ERROR", "name": "BT_LOG_L2CAP_TRACE_LEVEL_ERROR", @@ -7678,7 +7678,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_L2CAP_TRACE_LEVEL_WARNING", "name": "BT_LOG_L2CAP_TRACE_LEVEL_WARNING", @@ -7688,7 +7688,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_L2CAP_TRACE_LEVEL_API", "name": "BT_LOG_L2CAP_TRACE_LEVEL_API", @@ -7698,7 +7698,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_L2CAP_TRACE_LEVEL_EVENT", "name": "BT_LOG_L2CAP_TRACE_LEVEL_EVENT", @@ -7708,7 +7708,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_L2CAP_TRACE_LEVEL_DEBUG", "name": "BT_LOG_L2CAP_TRACE_LEVEL_DEBUG", @@ -7718,7 +7718,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_L2CAP_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_L2CAP_TRACE_LEVEL_VERBOSE", @@ -7727,7 +7727,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for L2CAP layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-l2cap-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-545", "name": "BT_LOG_L2CAP_TRACE_LEVEL", @@ -7736,7 +7736,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_L2CAP_TRACE_LEVEL", "name": "BT_LOG_L2CAP_TRACE_LEVEL", @@ -7748,7 +7748,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_RFCOMM_TRACE_LEVEL_NONE", "name": "BT_LOG_RFCOMM_TRACE_LEVEL_NONE", @@ -7758,7 +7758,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_RFCOMM_TRACE_LEVEL_ERROR", "name": "BT_LOG_RFCOMM_TRACE_LEVEL_ERROR", @@ -7768,7 +7768,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_RFCOMM_TRACE_LEVEL_WARNING", "name": "BT_LOG_RFCOMM_TRACE_LEVEL_WARNING", @@ -7778,7 +7778,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_RFCOMM_TRACE_LEVEL_API", "name": "BT_LOG_RFCOMM_TRACE_LEVEL_API", @@ -7788,7 +7788,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_RFCOMM_TRACE_LEVEL_EVENT", "name": "BT_LOG_RFCOMM_TRACE_LEVEL_EVENT", @@ -7798,7 +7798,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_RFCOMM_TRACE_LEVEL_DEBUG", "name": "BT_LOG_RFCOMM_TRACE_LEVEL_DEBUG", @@ -7808,7 +7808,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_RFCOMM_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_RFCOMM_TRACE_LEVEL_VERBOSE", @@ -7817,7 +7817,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for RFCOMM layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-rfcomm-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-580", "name": "BT_LOG_RFCOMM_TRACE_LEVEL", @@ -7826,7 +7826,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_RFCOMM_TRACE_LEVEL", "name": "BT_LOG_RFCOMM_TRACE_LEVEL", @@ -7838,7 +7838,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SDP_TRACE_LEVEL_NONE", "name": "BT_LOG_SDP_TRACE_LEVEL_NONE", @@ -7848,7 +7848,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SDP_TRACE_LEVEL_ERROR", "name": "BT_LOG_SDP_TRACE_LEVEL_ERROR", @@ -7858,7 +7858,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SDP_TRACE_LEVEL_WARNING", "name": "BT_LOG_SDP_TRACE_LEVEL_WARNING", @@ -7868,7 +7868,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SDP_TRACE_LEVEL_API", "name": "BT_LOG_SDP_TRACE_LEVEL_API", @@ -7878,7 +7878,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SDP_TRACE_LEVEL_EVENT", "name": "BT_LOG_SDP_TRACE_LEVEL_EVENT", @@ -7888,7 +7888,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SDP_TRACE_LEVEL_DEBUG", "name": "BT_LOG_SDP_TRACE_LEVEL_DEBUG", @@ -7898,7 +7898,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SDP_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_SDP_TRACE_LEVEL_VERBOSE", @@ -7907,7 +7907,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for SDP layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-sdp-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-615", "name": "BT_LOG_SDP_TRACE_LEVEL", @@ -7916,7 +7916,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_SDP_TRACE_LEVEL", "name": "BT_LOG_SDP_TRACE_LEVEL", @@ -7928,7 +7928,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GAP_TRACE_LEVEL_NONE", "name": "BT_LOG_GAP_TRACE_LEVEL_NONE", @@ -7938,7 +7938,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GAP_TRACE_LEVEL_ERROR", "name": "BT_LOG_GAP_TRACE_LEVEL_ERROR", @@ -7948,7 +7948,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GAP_TRACE_LEVEL_WARNING", "name": "BT_LOG_GAP_TRACE_LEVEL_WARNING", @@ -7958,7 +7958,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GAP_TRACE_LEVEL_API", "name": "BT_LOG_GAP_TRACE_LEVEL_API", @@ -7968,7 +7968,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GAP_TRACE_LEVEL_EVENT", "name": "BT_LOG_GAP_TRACE_LEVEL_EVENT", @@ -7978,7 +7978,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GAP_TRACE_LEVEL_DEBUG", "name": "BT_LOG_GAP_TRACE_LEVEL_DEBUG", @@ -7988,7 +7988,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GAP_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_GAP_TRACE_LEVEL_VERBOSE", @@ -7997,7 +7997,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for GAP layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-gap-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-650", "name": "BT_LOG_GAP_TRACE_LEVEL", @@ -8006,7 +8006,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_GAP_TRACE_LEVEL", "name": "BT_LOG_GAP_TRACE_LEVEL", @@ -8018,7 +8018,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BNEP_TRACE_LEVEL_NONE", "name": "BT_LOG_BNEP_TRACE_LEVEL_NONE", @@ -8028,7 +8028,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BNEP_TRACE_LEVEL_ERROR", "name": "BT_LOG_BNEP_TRACE_LEVEL_ERROR", @@ -8038,7 +8038,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BNEP_TRACE_LEVEL_WARNING", "name": "BT_LOG_BNEP_TRACE_LEVEL_WARNING", @@ -8048,7 +8048,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BNEP_TRACE_LEVEL_API", "name": "BT_LOG_BNEP_TRACE_LEVEL_API", @@ -8058,7 +8058,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BNEP_TRACE_LEVEL_EVENT", "name": "BT_LOG_BNEP_TRACE_LEVEL_EVENT", @@ -8068,7 +8068,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BNEP_TRACE_LEVEL_DEBUG", "name": "BT_LOG_BNEP_TRACE_LEVEL_DEBUG", @@ -8078,7 +8078,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BNEP_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_BNEP_TRACE_LEVEL_VERBOSE", @@ -8087,7 +8087,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for BNEP layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-bnep-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-685", "name": "BT_LOG_BNEP_TRACE_LEVEL", @@ -8096,7 +8096,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_BNEP_TRACE_LEVEL", "name": "BT_LOG_BNEP_TRACE_LEVEL", @@ -8108,7 +8108,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_PAN_TRACE_LEVEL_NONE", "name": "BT_LOG_PAN_TRACE_LEVEL_NONE", @@ -8118,7 +8118,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_PAN_TRACE_LEVEL_ERROR", "name": "BT_LOG_PAN_TRACE_LEVEL_ERROR", @@ -8128,7 +8128,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_PAN_TRACE_LEVEL_WARNING", "name": "BT_LOG_PAN_TRACE_LEVEL_WARNING", @@ -8138,7 +8138,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_PAN_TRACE_LEVEL_API", "name": "BT_LOG_PAN_TRACE_LEVEL_API", @@ -8148,7 +8148,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_PAN_TRACE_LEVEL_EVENT", "name": "BT_LOG_PAN_TRACE_LEVEL_EVENT", @@ -8158,7 +8158,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_PAN_TRACE_LEVEL_DEBUG", "name": "BT_LOG_PAN_TRACE_LEVEL_DEBUG", @@ -8168,7 +8168,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_PAN_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_PAN_TRACE_LEVEL_VERBOSE", @@ -8177,7 +8177,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for PAN layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-pan-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-720", "name": "BT_LOG_PAN_TRACE_LEVEL", @@ -8186,7 +8186,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_PAN_TRACE_LEVEL", "name": "BT_LOG_PAN_TRACE_LEVEL", @@ -8198,7 +8198,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_A2D_TRACE_LEVEL_NONE", "name": "BT_LOG_A2D_TRACE_LEVEL_NONE", @@ -8208,7 +8208,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_A2D_TRACE_LEVEL_ERROR", "name": "BT_LOG_A2D_TRACE_LEVEL_ERROR", @@ -8218,7 +8218,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_A2D_TRACE_LEVEL_WARNING", "name": "BT_LOG_A2D_TRACE_LEVEL_WARNING", @@ -8228,7 +8228,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_A2D_TRACE_LEVEL_API", "name": "BT_LOG_A2D_TRACE_LEVEL_API", @@ -8238,7 +8238,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_A2D_TRACE_LEVEL_EVENT", "name": "BT_LOG_A2D_TRACE_LEVEL_EVENT", @@ -8248,7 +8248,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_A2D_TRACE_LEVEL_DEBUG", "name": "BT_LOG_A2D_TRACE_LEVEL_DEBUG", @@ -8258,7 +8258,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_A2D_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_A2D_TRACE_LEVEL_VERBOSE", @@ -8267,7 +8267,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for A2D layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-a2d-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-755", "name": "BT_LOG_A2D_TRACE_LEVEL", @@ -8276,7 +8276,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_A2D_TRACE_LEVEL", "name": "BT_LOG_A2D_TRACE_LEVEL", @@ -8288,7 +8288,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVDT_TRACE_LEVEL_NONE", "name": "BT_LOG_AVDT_TRACE_LEVEL_NONE", @@ -8298,7 +8298,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVDT_TRACE_LEVEL_ERROR", "name": "BT_LOG_AVDT_TRACE_LEVEL_ERROR", @@ -8308,7 +8308,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVDT_TRACE_LEVEL_WARNING", "name": "BT_LOG_AVDT_TRACE_LEVEL_WARNING", @@ -8318,7 +8318,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVDT_TRACE_LEVEL_API", "name": "BT_LOG_AVDT_TRACE_LEVEL_API", @@ -8328,7 +8328,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVDT_TRACE_LEVEL_EVENT", "name": "BT_LOG_AVDT_TRACE_LEVEL_EVENT", @@ -8338,7 +8338,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVDT_TRACE_LEVEL_DEBUG", "name": "BT_LOG_AVDT_TRACE_LEVEL_DEBUG", @@ -8348,7 +8348,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVDT_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_AVDT_TRACE_LEVEL_VERBOSE", @@ -8357,7 +8357,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for AVDT layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-avdt-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-790", "name": "BT_LOG_AVDT_TRACE_LEVEL", @@ -8366,7 +8366,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_AVDT_TRACE_LEVEL", "name": "BT_LOG_AVDT_TRACE_LEVEL", @@ -8378,7 +8378,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVCT_TRACE_LEVEL_NONE", "name": "BT_LOG_AVCT_TRACE_LEVEL_NONE", @@ -8388,7 +8388,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVCT_TRACE_LEVEL_ERROR", "name": "BT_LOG_AVCT_TRACE_LEVEL_ERROR", @@ -8398,7 +8398,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVCT_TRACE_LEVEL_WARNING", "name": "BT_LOG_AVCT_TRACE_LEVEL_WARNING", @@ -8408,7 +8408,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVCT_TRACE_LEVEL_API", "name": "BT_LOG_AVCT_TRACE_LEVEL_API", @@ -8418,7 +8418,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVCT_TRACE_LEVEL_EVENT", "name": "BT_LOG_AVCT_TRACE_LEVEL_EVENT", @@ -8428,7 +8428,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVCT_TRACE_LEVEL_DEBUG", "name": "BT_LOG_AVCT_TRACE_LEVEL_DEBUG", @@ -8438,7 +8438,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVCT_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_AVCT_TRACE_LEVEL_VERBOSE", @@ -8447,7 +8447,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for AVCT layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-avct-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-825", "name": "BT_LOG_AVCT_TRACE_LEVEL", @@ -8456,7 +8456,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_AVCT_TRACE_LEVEL", "name": "BT_LOG_AVCT_TRACE_LEVEL", @@ -8468,7 +8468,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVRC_TRACE_LEVEL_NONE", "name": "BT_LOG_AVRC_TRACE_LEVEL_NONE", @@ -8478,7 +8478,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVRC_TRACE_LEVEL_ERROR", "name": "BT_LOG_AVRC_TRACE_LEVEL_ERROR", @@ -8488,7 +8488,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVRC_TRACE_LEVEL_WARNING", "name": "BT_LOG_AVRC_TRACE_LEVEL_WARNING", @@ -8498,7 +8498,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVRC_TRACE_LEVEL_API", "name": "BT_LOG_AVRC_TRACE_LEVEL_API", @@ -8508,7 +8508,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVRC_TRACE_LEVEL_EVENT", "name": "BT_LOG_AVRC_TRACE_LEVEL_EVENT", @@ -8518,7 +8518,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVRC_TRACE_LEVEL_DEBUG", "name": "BT_LOG_AVRC_TRACE_LEVEL_DEBUG", @@ -8528,7 +8528,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_AVRC_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_AVRC_TRACE_LEVEL_VERBOSE", @@ -8537,7 +8537,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for AVRC layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-avrc-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-860", "name": "BT_LOG_AVRC_TRACE_LEVEL", @@ -8546,7 +8546,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_AVRC_TRACE_LEVEL", "name": "BT_LOG_AVRC_TRACE_LEVEL", @@ -8558,7 +8558,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_MCA_TRACE_LEVEL_NONE", "name": "BT_LOG_MCA_TRACE_LEVEL_NONE", @@ -8568,7 +8568,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_MCA_TRACE_LEVEL_ERROR", "name": "BT_LOG_MCA_TRACE_LEVEL_ERROR", @@ -8578,7 +8578,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_MCA_TRACE_LEVEL_WARNING", "name": "BT_LOG_MCA_TRACE_LEVEL_WARNING", @@ -8588,7 +8588,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_MCA_TRACE_LEVEL_API", "name": "BT_LOG_MCA_TRACE_LEVEL_API", @@ -8598,7 +8598,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_MCA_TRACE_LEVEL_EVENT", "name": "BT_LOG_MCA_TRACE_LEVEL_EVENT", @@ -8608,7 +8608,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_MCA_TRACE_LEVEL_DEBUG", "name": "BT_LOG_MCA_TRACE_LEVEL_DEBUG", @@ -8618,7 +8618,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_MCA_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_MCA_TRACE_LEVEL_VERBOSE", @@ -8627,7 +8627,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for MCA layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-mca-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-895", "name": "BT_LOG_MCA_TRACE_LEVEL", @@ -8636,7 +8636,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_MCA_TRACE_LEVEL", "name": "BT_LOG_MCA_TRACE_LEVEL", @@ -8648,7 +8648,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HID_TRACE_LEVEL_NONE", "name": "BT_LOG_HID_TRACE_LEVEL_NONE", @@ -8658,7 +8658,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HID_TRACE_LEVEL_ERROR", "name": "BT_LOG_HID_TRACE_LEVEL_ERROR", @@ -8668,7 +8668,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HID_TRACE_LEVEL_WARNING", "name": "BT_LOG_HID_TRACE_LEVEL_WARNING", @@ -8678,7 +8678,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HID_TRACE_LEVEL_API", "name": "BT_LOG_HID_TRACE_LEVEL_API", @@ -8688,7 +8688,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HID_TRACE_LEVEL_EVENT", "name": "BT_LOG_HID_TRACE_LEVEL_EVENT", @@ -8698,7 +8698,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HID_TRACE_LEVEL_DEBUG", "name": "BT_LOG_HID_TRACE_LEVEL_DEBUG", @@ -8708,7 +8708,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_HID_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_HID_TRACE_LEVEL_VERBOSE", @@ -8717,7 +8717,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for HID layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-hid-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-930", "name": "BT_LOG_HID_TRACE_LEVEL", @@ -8726,7 +8726,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_HID_TRACE_LEVEL", "name": "BT_LOG_HID_TRACE_LEVEL", @@ -8738,7 +8738,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_APPL_TRACE_LEVEL_NONE", "name": "BT_LOG_APPL_TRACE_LEVEL_NONE", @@ -8748,7 +8748,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_APPL_TRACE_LEVEL_ERROR", "name": "BT_LOG_APPL_TRACE_LEVEL_ERROR", @@ -8758,7 +8758,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_APPL_TRACE_LEVEL_WARNING", "name": "BT_LOG_APPL_TRACE_LEVEL_WARNING", @@ -8768,7 +8768,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_APPL_TRACE_LEVEL_API", "name": "BT_LOG_APPL_TRACE_LEVEL_API", @@ -8778,7 +8778,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_APPL_TRACE_LEVEL_EVENT", "name": "BT_LOG_APPL_TRACE_LEVEL_EVENT", @@ -8788,7 +8788,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_APPL_TRACE_LEVEL_DEBUG", "name": "BT_LOG_APPL_TRACE_LEVEL_DEBUG", @@ -8798,7 +8798,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_APPL_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_APPL_TRACE_LEVEL_VERBOSE", @@ -8807,7 +8807,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for APPL layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-appl-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-965", "name": "BT_LOG_APPL_TRACE_LEVEL", @@ -8816,7 +8816,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_APPL_TRACE_LEVEL", "name": "BT_LOG_APPL_TRACE_LEVEL", @@ -8828,7 +8828,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GATT_TRACE_LEVEL_NONE", "name": "BT_LOG_GATT_TRACE_LEVEL_NONE", @@ -8838,7 +8838,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GATT_TRACE_LEVEL_ERROR", "name": "BT_LOG_GATT_TRACE_LEVEL_ERROR", @@ -8848,7 +8848,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GATT_TRACE_LEVEL_WARNING", "name": "BT_LOG_GATT_TRACE_LEVEL_WARNING", @@ -8858,7 +8858,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GATT_TRACE_LEVEL_API", "name": "BT_LOG_GATT_TRACE_LEVEL_API", @@ -8868,7 +8868,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GATT_TRACE_LEVEL_EVENT", "name": "BT_LOG_GATT_TRACE_LEVEL_EVENT", @@ -8878,7 +8878,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GATT_TRACE_LEVEL_DEBUG", "name": "BT_LOG_GATT_TRACE_LEVEL_DEBUG", @@ -8888,7 +8888,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_GATT_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_GATT_TRACE_LEVEL_VERBOSE", @@ -8897,7 +8897,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for GATT layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-gatt-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-1000", "name": "BT_LOG_GATT_TRACE_LEVEL", @@ -8906,7 +8906,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_GATT_TRACE_LEVEL", "name": "BT_LOG_GATT_TRACE_LEVEL", @@ -8918,7 +8918,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SMP_TRACE_LEVEL_NONE", "name": "BT_LOG_SMP_TRACE_LEVEL_NONE", @@ -8928,7 +8928,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SMP_TRACE_LEVEL_ERROR", "name": "BT_LOG_SMP_TRACE_LEVEL_ERROR", @@ -8938,7 +8938,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SMP_TRACE_LEVEL_WARNING", "name": "BT_LOG_SMP_TRACE_LEVEL_WARNING", @@ -8948,7 +8948,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SMP_TRACE_LEVEL_API", "name": "BT_LOG_SMP_TRACE_LEVEL_API", @@ -8958,7 +8958,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SMP_TRACE_LEVEL_EVENT", "name": "BT_LOG_SMP_TRACE_LEVEL_EVENT", @@ -8968,7 +8968,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SMP_TRACE_LEVEL_DEBUG", "name": "BT_LOG_SMP_TRACE_LEVEL_DEBUG", @@ -8978,7 +8978,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_SMP_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_SMP_TRACE_LEVEL_VERBOSE", @@ -8987,7 +8987,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for SMP layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-smp-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-1035", "name": "BT_LOG_SMP_TRACE_LEVEL", @@ -8996,7 +8996,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_SMP_TRACE_LEVEL", "name": "BT_LOG_SMP_TRACE_LEVEL", @@ -9008,7 +9008,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTIF_TRACE_LEVEL_NONE", "name": "BT_LOG_BTIF_TRACE_LEVEL_NONE", @@ -9018,7 +9018,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTIF_TRACE_LEVEL_ERROR", "name": "BT_LOG_BTIF_TRACE_LEVEL_ERROR", @@ -9028,7 +9028,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTIF_TRACE_LEVEL_WARNING", "name": "BT_LOG_BTIF_TRACE_LEVEL_WARNING", @@ -9038,7 +9038,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTIF_TRACE_LEVEL_API", "name": "BT_LOG_BTIF_TRACE_LEVEL_API", @@ -9048,7 +9048,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTIF_TRACE_LEVEL_EVENT", "name": "BT_LOG_BTIF_TRACE_LEVEL_EVENT", @@ -9058,7 +9058,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTIF_TRACE_LEVEL_DEBUG", "name": "BT_LOG_BTIF_TRACE_LEVEL_DEBUG", @@ -9068,7 +9068,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTIF_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_BTIF_TRACE_LEVEL_VERBOSE", @@ -9077,7 +9077,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for BTIF layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-btif-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-1070", "name": "BT_LOG_BTIF_TRACE_LEVEL", @@ -9086,7 +9086,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_BTIF_TRACE_LEVEL", "name": "BT_LOG_BTIF_TRACE_LEVEL", @@ -9098,7 +9098,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTC_TRACE_LEVEL_NONE", "name": "BT_LOG_BTC_TRACE_LEVEL_NONE", @@ -9108,7 +9108,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTC_TRACE_LEVEL_ERROR", "name": "BT_LOG_BTC_TRACE_LEVEL_ERROR", @@ -9118,7 +9118,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTC_TRACE_LEVEL_WARNING", "name": "BT_LOG_BTC_TRACE_LEVEL_WARNING", @@ -9128,7 +9128,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTC_TRACE_LEVEL_API", "name": "BT_LOG_BTC_TRACE_LEVEL_API", @@ -9138,7 +9138,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTC_TRACE_LEVEL_EVENT", "name": "BT_LOG_BTC_TRACE_LEVEL_EVENT", @@ -9148,7 +9148,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTC_TRACE_LEVEL_DEBUG", "name": "BT_LOG_BTC_TRACE_LEVEL_DEBUG", @@ -9158,7 +9158,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BTC_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_BTC_TRACE_LEVEL_VERBOSE", @@ -9167,7 +9167,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for BTC layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-btc-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-1105", "name": "BT_LOG_BTC_TRACE_LEVEL", @@ -9176,7 +9176,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_BTC_TRACE_LEVEL", "name": "BT_LOG_BTC_TRACE_LEVEL", @@ -9188,7 +9188,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_OSI_TRACE_LEVEL_NONE", "name": "BT_LOG_OSI_TRACE_LEVEL_NONE", @@ -9198,7 +9198,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_OSI_TRACE_LEVEL_ERROR", "name": "BT_LOG_OSI_TRACE_LEVEL_ERROR", @@ -9208,7 +9208,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_OSI_TRACE_LEVEL_WARNING", "name": "BT_LOG_OSI_TRACE_LEVEL_WARNING", @@ -9218,7 +9218,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_OSI_TRACE_LEVEL_API", "name": "BT_LOG_OSI_TRACE_LEVEL_API", @@ -9228,7 +9228,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_OSI_TRACE_LEVEL_EVENT", "name": "BT_LOG_OSI_TRACE_LEVEL_EVENT", @@ -9238,7 +9238,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_OSI_TRACE_LEVEL_DEBUG", "name": "BT_LOG_OSI_TRACE_LEVEL_DEBUG", @@ -9248,7 +9248,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_OSI_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_OSI_TRACE_LEVEL_VERBOSE", @@ -9257,7 +9257,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for OSI layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-osi-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-1140", "name": "BT_LOG_OSI_TRACE_LEVEL", @@ -9266,7 +9266,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_OSI_TRACE_LEVEL", "name": "BT_LOG_OSI_TRACE_LEVEL", @@ -9278,7 +9278,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BLUFI_TRACE_LEVEL_NONE", "name": "BT_LOG_BLUFI_TRACE_LEVEL_NONE", @@ -9288,7 +9288,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BLUFI_TRACE_LEVEL_ERROR", "name": "BT_LOG_BLUFI_TRACE_LEVEL_ERROR", @@ -9298,7 +9298,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BLUFI_TRACE_LEVEL_WARNING", "name": "BT_LOG_BLUFI_TRACE_LEVEL_WARNING", @@ -9308,7 +9308,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BLUFI_TRACE_LEVEL_API", "name": "BT_LOG_BLUFI_TRACE_LEVEL_API", @@ -9318,7 +9318,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BLUFI_TRACE_LEVEL_EVENT", "name": "BT_LOG_BLUFI_TRACE_LEVEL_EVENT", @@ -9328,7 +9328,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BLUFI_TRACE_LEVEL_DEBUG", "name": "BT_LOG_BLUFI_TRACE_LEVEL_DEBUG", @@ -9338,7 +9338,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_LOG_BLUFI_TRACE_LEVEL_VERBOSE", "name": "BT_LOG_BLUFI_TRACE_LEVEL_VERBOSE", @@ -9347,7 +9347,7 @@ "type": "bool" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Define BT trace level for BLUFI layer", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-blufi-layer-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-1175", "name": "BT_LOG_BLUFI_TRACE_LEVEL", @@ -9356,7 +9356,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_LOG_BLUFI_TRACE_LEVEL", "name": "BT_LOG_BLUFI_TRACE_LEVEL", @@ -9365,14 +9365,14 @@ "type": "int" } ], - "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && !BT_STACK_NO_LOG && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "id": "component-config-bluetooth-bluedroid-options-bt-debug-log-level-home-pi-esp-esp-idf-components-bt-host-bluedroid-Kconfig.in-472", "title": "BT DEBUG LOG LEVEL", "type": "menu" }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Maximum BT/BLE connection count. The ESP32-C3/S3 chip supports a maximum of 10 instances,\nincluding ADV, SCAN and connections. The ESP32-C3/S3 chip can connect up to 9 devices if\nADV or SCAN uses only one. If ADV and SCAN are both used, The ESP32-C3/S3 chip is connected\nto a maximum of 8 devices. Because Bluetooth cannot reclaim used instances once ADV or SCAN\nis used.", "id": "BT_ACL_CONNECTIONS", "name": "BT_ACL_CONNECTIONS", @@ -9382,7 +9382,7 @@ }, { "children": [], - "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enable this option if there are multiple connections", "id": "BT_MULTI_CONNECTION_ENBALE", "name": "BT_MULTI_CONNECTION_ENBALE", @@ -9392,7 +9392,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This select can save the internal RAM if there have the PSRAM", "id": "BT_ALLOCATION_FROM_SPIRAM_FIRST", "name": "BT_ALLOCATION_FROM_SPIRAM_FIRST", @@ -9402,7 +9402,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This select can make the allocation of memory will become more flexible", "id": "BT_BLE_DYNAMIC_ENV_MEMORY", "name": "BT_BLE_DYNAMIC_ENV_MEMORY", @@ -9412,7 +9412,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": null, "id": "BT_SMP_ENABLE", "name": "BT_SMP_ENABLE", @@ -9422,7 +9422,7 @@ }, { "children": [], - "depends_on": "BT_SMP_ENABLE && BT_BLUEDROID_ENABLED", + "depends_on": "BT_SMP_ENABLE && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "The number of security records for peer devices.", "id": "BT_SMP_MAX_BONDS", "name": "BT_SMP_MAX_BONDS", @@ -9432,7 +9432,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLE_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLE_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Originally, when doing BLE active scan, Bluedroid will not report adv to application layer\nuntil receive scan response. This option is used to disable the behavior. When enable this option,\nBluedroid will report adv data or scan response to application layer immediately.\n\n# Memory reserved at start of DRAM for Bluetooth stack", "id": "BT_BLE_ACT_SCAN_REP_ADV_SCAN", "name": "BT_BLE_ACT_SCAN_REP_ADV_SCAN", @@ -9442,7 +9442,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Bluetooth Device name length shall be no larger than 248 octets, If the broadcast data cannot contain\nthe complete device name, then only the shortname will be displayed, the rest parts that can't fit in\nwill be truncated.", "id": "BT_MAX_DEVICE_NAME_LEN", "name": "BT_MAX_DEVICE_NAME_LEN", @@ -9452,7 +9452,7 @@ }, { "children": [], - "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This set RPA timeout of Controller and Host.\nDefault is 900 s (15 minutes). Range is 1 s to 1 hour (3600 s).", "id": "BT_BLE_RPA_TIMEOUT", "name": "BT_BLE_RPA_TIMEOUT", @@ -9515,7 +9515,7 @@ "type": "bool" } ], - "depends_on": "BT_BLE_ENABLED && ((BT_CONTROLLER_ENABLED && SOC_BLE_50_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_ENABLED && ((BT_CONTROLLER_ENABLED && SOC_BLE_50_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enabling this option activates BLE 5.0 features.\nThis option is universally supported in chips that support BLE, except for ESP32.\nBLE 4.2 and BLE 5.0 cannot be used simultaneously.", "id": "BT_BLE_50_FEATURES_SUPPORTED", "is_menuconfig": true, @@ -9526,7 +9526,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLE_50_PERIODIC_ADV_EN && ((BT_CONTROLLER_ENABLED && SOC_ESP_NIMBLE_CONTROLLER) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLE_50_PERIODIC_ADV_EN && ((BT_CONTROLLER_ENABLED && SOC_ESP_NIMBLE_CONTROLLER) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This enables BLE periodic advertising sync transfer feature", "id": "BT_BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER", "name": "BT_BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER", @@ -9536,7 +9536,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLE_50_PERIODIC_ADV_EN && ((BT_CONTROLLER_ENABLED && SOC_ESP_NIMBLE_CONTROLLER) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLE_50_PERIODIC_ADV_EN && ((BT_CONTROLLER_ENABLED && SOC_ESP_NIMBLE_CONTROLLER) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enable the periodic advertising enhancements", "id": "BT_BLE_FEAT_PERIODIC_ADV_ENH", "name": "BT_BLE_FEAT_PERIODIC_ADV_ENH", @@ -9546,7 +9546,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLE_50_EXTEND_SYNC_EN && ((BT_CONTROLLER_ENABLED && SOC_ESP_NIMBLE_CONTROLLER) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLE_50_EXTEND_SYNC_EN && ((BT_CONTROLLER_ENABLED && SOC_ESP_NIMBLE_CONTROLLER) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enable the create sync enhancements", "id": "BT_BLE_FEAT_CREATE_SYNC_ENH", "name": "BT_BLE_FEAT_CREATE_SYNC_ENH", @@ -9587,7 +9587,7 @@ "type": "bool" } ], - "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This enables BLE 4.2 features.\nThis option is universally supported by all ESP chips with BLE capabilities.\nBLE 4.2 and BLE 5.0 cannot be used simultaneously.", "id": "BT_BLE_42_FEATURES_SUPPORTED", "is_menuconfig": true, @@ -9699,7 +9699,7 @@ "type": "choice" } ], - "depends_on": "BT_BLE_50_FEATURES_SUPPORTED && ((BT_CONTROLLER_ENABLED && SOC_BLE_AUDIO_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_50_FEATURES_SUPPORTED && ((BT_CONTROLLER_ENABLED && SOC_BLE_AUDIO_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enable BLE 5.2 iso", "id": "BT_BLE_FEAT_ISO_EN", "is_menuconfig": true, @@ -9731,7 +9731,7 @@ "type": "bool" } ], - "depends_on": "BT_BLE_50_FEATURES_SUPPORTED && ((BT_CONTROLLER_ENABLED && SOC_BLE_CTE_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_50_FEATURES_SUPPORTED && ((BT_CONTROLLER_ENABLED && SOC_BLE_CTE_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enable BLE 5.1 CTE", "id": "BT_BLE_FEAT_CTE_EN", "is_menuconfig": true, @@ -9742,7 +9742,7 @@ }, { "children": [], - "depends_on": "BT_BLE_50_FEATURES_SUPPORTED && ((BT_CONTROLLER_ENABLED && SOC_BLE_POWER_CONTROL_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_50_FEATURES_SUPPORTED && ((BT_CONTROLLER_ENABLED && SOC_BLE_POWER_CONTROL_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enable BLE power control feature", "id": "BT_BLE_FEAT_POWER_CONTROL", "name": "BT_BLE_FEAT_POWER_CONTROL", @@ -9752,7 +9752,7 @@ }, { "children": [], - "depends_on": "BT_BLE_50_FEATURES_SUPPORTED && ((BT_CONTROLLER_ENABLED && SOC_BLE_SUBRATE_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_50_FEATURES_SUPPORTED && ((BT_CONTROLLER_ENABLED && SOC_BLE_SUBRATE_SUPPORTED) || BT_CONTROLLER_DISABLED) && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "Enable BLE connection subrating feature", "id": "BT_BLE_FEAT_CONN_SUBRATING", "name": "BT_BLE_FEAT_CONN_SUBRATING", @@ -9762,7 +9762,7 @@ }, { "children": [], - "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This enables BLE vendor HCI command and event", "id": "BT_BLE_VENDOR_HCI_EN", "name": "BT_BLE_VENDOR_HCI_EN", @@ -9772,7 +9772,7 @@ }, { "children": [], - "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLE_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This enable BLE high duty advertising interval feature", "id": "BT_BLE_HIGH_DUTY_ADV_INTERVAL", "name": "BT_BLE_HIGH_DUTY_ADV_INTERVAL", @@ -9782,7 +9782,7 @@ }, { "children": [], - "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", + "depends_on": "BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED && BT_BLUEDROID_ENABLED", "help": "This enables abort when memory allocation fails", "id": "BT_ABORT_WHEN_ALLOCATION_FAILS", "name": "BT_ABORT_WHEN_ALLOCATION_FAILS", @@ -9802,7 +9802,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL", "name": "BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL", @@ -9812,7 +9812,7 @@ }, { "children": [], - "depends_on": "(SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC) && ", + "depends_on": "(SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC) && && ", "help": null, "id": "BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL", "name": "BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL", @@ -9822,7 +9822,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT", "name": "BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT", @@ -9832,7 +9832,7 @@ }, { "children": [], - "depends_on": "ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY && ", + "depends_on": "ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY && && ", "help": "Allows to use IRAM memory region as 8bit accessible region.\n\nEvery unaligned (8bit or 16bit) access will result in an exception\nand incur penalty of certain clock cycles per unaligned read/write.", "id": "BT_NIMBLE_MEM_ALLOC_MODE_IRAM_8BIT", "name": "BT_NIMBLE_MEM_ALLOC_MODE_IRAM_8BIT", @@ -9841,7 +9841,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Allocation strategy for NimBLE host stack, essentially provides ability to\nallocate all required dynamic allocations from,\n\n- Internal DRAM memory only\n- External SPIRAM memory only\n- Either internal or external memory based on default malloc()\n behavior in ESP-IDF\n- Internal IRAM memory wherever applicable else internal DRAM", "id": "component-config-bluetooth-nimble-options-memory-allocation-strategy-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-2", "name": "BT_NIMBLE_MEM_ALLOC_MODE", @@ -9852,7 +9852,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_NIMBLE_LOG_LEVEL_NONE", "name": "BT_NIMBLE_LOG_LEVEL_NONE", @@ -9862,7 +9862,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_NIMBLE_LOG_LEVEL_ERROR", "name": "BT_NIMBLE_LOG_LEVEL_ERROR", @@ -9872,7 +9872,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_NIMBLE_LOG_LEVEL_WARNING", "name": "BT_NIMBLE_LOG_LEVEL_WARNING", @@ -9882,7 +9882,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_NIMBLE_LOG_LEVEL_INFO", "name": "BT_NIMBLE_LOG_LEVEL_INFO", @@ -9892,7 +9892,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_NIMBLE_LOG_LEVEL_DEBUG", "name": "BT_NIMBLE_LOG_LEVEL_DEBUG", @@ -9901,7 +9901,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Select NimBLE log level. Please make a note that the selected NimBLE log\nverbosity can not exceed the level set in \"Component config --> Log output\n--> Default log verbosity\".", "id": "component-config-bluetooth-nimble-options-nimble-host-log-verbosity-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-36", "name": "BT_NIMBLE_LOG_LEVEL", @@ -9910,7 +9910,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": null, "id": "BT_NIMBLE_LOG_LEVEL", "name": "BT_NIMBLE_LOG_LEVEL", @@ -9920,7 +9920,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Defines maximum number of concurrent BLE connections. For ESP32, user\nis expected to configure BTDM_CTRL_BLE_MAX_CONN from controller menu\nalong with this option. Similarly for ESP32-C3 or ESP32-S3, user is expected to\nconfigure BT_CTRL_BLE_MAX_ACT from controller menu.\nFor ESP32C2, ESP32C6 and ESP32H2, each connection will take about 1k DRAM.", "id": "BT_NIMBLE_MAX_CONNECTIONS", "name": "BT_NIMBLE_MAX_CONNECTIONS", @@ -9930,7 +9930,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Defines maximum number of bonds to save for peer security and our security", "id": "BT_NIMBLE_MAX_BONDS", "name": "BT_NIMBLE_MAX_BONDS", @@ -9940,7 +9940,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Defines maximum number of CCC descriptors to save", "id": "BT_NIMBLE_MAX_CCCDS", "name": "BT_NIMBLE_MAX_CCCDS", @@ -9950,7 +9950,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Defines maximum number of BLE Connection Oriented Channels. When set to (0), BLE COC is not compiled in", "id": "BT_NIMBLE_L2CAP_COC_MAX_NUM", "name": "BT_NIMBLE_L2CAP_COC_MAX_NUM", @@ -9960,7 +9960,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_L2CAP_COC_MAX_NUM >= 1 && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_L2CAP_COC_MAX_NUM >= 1 && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Enhanced Credit Based Flow Control Mode", "id": "BT_NIMBLE_L2CAP_ENHANCED_COC", "name": "BT_NIMBLE_L2CAP_ENHANCED_COC", @@ -9972,7 +9972,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_NIMBLE_PINNED_TO_CORE_0", "name": "BT_NIMBLE_PINNED_TO_CORE_0", @@ -9982,7 +9982,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ", + "depends_on": "!FREERTOS_UNICORE && && ", "help": null, "id": "BT_NIMBLE_PINNED_TO_CORE_1", "name": "BT_NIMBLE_PINNED_TO_CORE_1", @@ -9991,7 +9991,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_ENABLED && !FREERTOS_UNICORE && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && !FREERTOS_UNICORE && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "The CPU core on which NimBLE host will run. You can choose Core 0 or Core 1.\nCannot specify no-affinity", "id": "component-config-bluetooth-nimble-options-the-cpu-core-on-which-nimble-host-will-run-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-111", "name": "BT_NIMBLE_PINNED_TO_CORE_CHOICE", @@ -10000,7 +10000,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": null, "id": "BT_NIMBLE_PINNED_TO_CORE", "name": "BT_NIMBLE_PINNED_TO_CORE", @@ -10010,7 +10010,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This configures stack size of NimBLE host task", "id": "BT_NIMBLE_HOST_TASK_STACK_SIZE", "name": "BT_NIMBLE_HOST_TASK_STACK_SIZE", @@ -10020,7 +10020,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enables central role", "id": "BT_NIMBLE_ROLE_CENTRAL", "name": "BT_NIMBLE_ROLE_CENTRAL", @@ -10030,7 +10030,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable peripheral role", "id": "BT_NIMBLE_ROLE_PERIPHERAL", "name": "BT_NIMBLE_ROLE_PERIPHERAL", @@ -10040,7 +10040,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enables broadcaster role", "id": "BT_NIMBLE_ROLE_BROADCASTER", "name": "BT_NIMBLE_ROLE_BROADCASTER", @@ -10050,7 +10050,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enables observer role", "id": "BT_NIMBLE_ROLE_OBSERVER", "name": "BT_NIMBLE_ROLE_OBSERVER", @@ -10060,7 +10060,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ROLE_CENTRAL && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ROLE_CENTRAL && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enables support for GATT Client", "id": "BT_NIMBLE_GATT_CLIENT", "name": "BT_NIMBLE_GATT_CLIENT", @@ -10070,7 +10070,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ROLE_PERIPHERAL && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ROLE_PERIPHERAL && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enables support for GATT Server", "id": "BT_NIMBLE_GATT_SERVER", "name": "BT_NIMBLE_GATT_SERVER", @@ -10080,7 +10080,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable this flag to make bonding persistent across device reboots", "id": "BT_NIMBLE_NVS_PERSIST", "name": "BT_NIMBLE_NVS_PERSIST", @@ -10090,7 +10090,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "There are tracking risks associated with using a fixed or static IRK.\nIf enabled this option, NimBLE will assign a new randomly-generated IRK\nwhen all pairing and bonding records are deleted. This would decrease the ability\nof a previously paired peer to be used to determine whether a device\nwith which it previously shared an IRK is within range.", "id": "BT_NIMBLE_SMP_ID_RESET", "name": "BT_NIMBLE_SMP_ID_RESET", @@ -10162,7 +10162,7 @@ "type": "int" } ], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable BLE sm feature", "id": "BT_NIMBLE_SECURITY_ENABLE", "is_menuconfig": true, @@ -10173,7 +10173,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable feature to give useful explanation for HCI errors", "id": "BT_NIMBLE_PRINT_ERR_NAME", "name": "BT_NIMBLE_PRINT_ERR_NAME", @@ -10183,7 +10183,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This enables extra runtime asserts and host debugging", "id": "BT_NIMBLE_DEBUG", "name": "BT_NIMBLE_DEBUG", @@ -10193,7 +10193,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This enables user to add/remove Gatt services at runtime", "id": "BT_NIMBLE_DYNAMIC_SERVICE", "name": "BT_NIMBLE_DYNAMIC_SERVICE", @@ -10203,7 +10203,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "The Device Name characteristic shall contain the name of the device as an UTF-8 string.\nThis name can be changed by using API ble_svc_gap_device_name_set()", "id": "BT_NIMBLE_SVC_GAP_DEVICE_NAME", "name": "BT_NIMBLE_SVC_GAP_DEVICE_NAME", @@ -10213,7 +10213,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Device Name characteristic value shall be 0 to 248 octets in length", "id": "BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN", "name": "BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN", @@ -10223,7 +10223,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This is the default value of ATT MTU indicated by the device during an ATT MTU exchange.\nThis value can be changed using API ble_att_set_preferred_mtu()", "id": "BT_NIMBLE_ATT_PREFERRED_MTU", "name": "BT_NIMBLE_ATT_PREFERRED_MTU", @@ -10233,7 +10233,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This is the default value of ATT Maximum prepare entries", "id": "BT_NIMBLE_ATT_MAX_PREP_ENTRIES", "name": "BT_NIMBLE_ATT_MAX_PREP_ENTRIES", @@ -10243,7 +10243,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Standard BLE GAP Appearance value in HEX format e.g. 0x02C0", "id": "BT_NIMBLE_SVC_GAP_APPEARANCE", "name": "BT_NIMBLE_SVC_GAP_APPEARANCE", @@ -10255,7 +10255,7 @@ "children": [ { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "MSYS is a system level mbuf registry. For prepare write & prepare\nresponses MBUFs are allocated out of msys_1 pool. For NIMBLE_MESH\nenabled cases, this block count is increased by 8 than user defined\ncount.", "id": "BT_NIMBLE_MSYS_1_BLOCK_COUNT", "name": "BT_NIMBLE_MSYS_1_BLOCK_COUNT", @@ -10265,7 +10265,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Dynamic memory size of block 1", "id": "BT_NIMBLE_MSYS_1_BLOCK_SIZE", "name": "BT_NIMBLE_MSYS_1_BLOCK_SIZE", @@ -10275,7 +10275,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Dynamic memory count", "id": "BT_NIMBLE_MSYS_2_BLOCK_COUNT", "name": "BT_NIMBLE_MSYS_2_BLOCK_COUNT", @@ -10285,7 +10285,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Dynamic memory size of block 2", "id": "BT_NIMBLE_MSYS_2_BLOCK_SIZE", "name": "BT_NIMBLE_MSYS_2_BLOCK_SIZE", @@ -10295,7 +10295,7 @@ }, { "children": [], - "depends_on": "BT_LE_MSYS_INIT_IN_CONTROLLER && BT_NIMBLE_ENABLED", + "depends_on": "BT_LE_MSYS_INIT_IN_CONTROLLER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This option sets the source of the shared msys mbuf memory between\nthe Host and the Controller. Allocate the memory from the heap if\nthis option is sets, from the mempool otherwise.", "id": "BT_NIMBLE_MSYS_BUF_FROM_HEAP", "name": "BT_NIMBLE_MSYS_BUF_FROM_HEAP", @@ -10305,7 +10305,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "The number of ACL data buffers allocated for host.", "id": "BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT", "name": "BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT", @@ -10315,7 +10315,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This is the maximum size of the data portion of HCI ACL data packets.\nIt does not include the HCI data header (of 4 bytes)", "id": "BT_NIMBLE_TRANSPORT_ACL_SIZE", "name": "BT_NIMBLE_TRANSPORT_ACL_SIZE", @@ -10325,7 +10325,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This is the size of each HCI event buffer in bytes. In case of\nextended advertising, packets can be fragmented. 257 bytes is the\nmaximum size of a packet.", "id": "BT_NIMBLE_TRANSPORT_EVT_SIZE", "name": "BT_NIMBLE_TRANSPORT_EVT_SIZE", @@ -10335,7 +10335,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This is the high priority HCI events' buffer size. High-priority\nevent buffers are for everything except advertising reports. If there\nare no free high-priority event buffers then host will try to allocate a\nlow-priority buffer instead", "id": "BT_NIMBLE_TRANSPORT_EVT_COUNT", "name": "BT_NIMBLE_TRANSPORT_EVT_COUNT", @@ -10345,7 +10345,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This is the low priority HCI events' buffer size. Low-priority event\nbuffers are only used for advertising reports. If there are no free\nlow-priority event buffers, then an incoming advertising report will\nget dropped", "id": "BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT", "name": "BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT", @@ -10355,7 +10355,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This is the service data unit buffer count for l2cap coc.", "id": "BT_NIMBLE_L2CAP_COC_SDU_BUFF_COUNT", "name": "BT_NIMBLE_L2CAP_COC_SDU_BUFF_COUNT", @@ -10364,14 +10364,14 @@ "type": "int" } ], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "id": "component-config-bluetooth-nimble-options-memory-settings-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-313", "title": "Memory Settings", "type": "menu" }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Maximum number of GATT client procedures that can be executed.", "id": "BT_NIMBLE_GATT_MAX_PROCS", "name": "BT_NIMBLE_GATT_MAX_PROCS", @@ -10412,7 +10412,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Host Flow control", "id": "BT_NIMBLE_HS_FLOW_CTRL", "name": "BT_NIMBLE_HS_FLOW_CTRL", @@ -10422,7 +10422,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Time interval between RPA address change.", "id": "BT_NIMBLE_RPA_TIMEOUT", "name": "BT_NIMBLE_RPA_TIMEOUT", @@ -10544,7 +10544,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable BLE Mesh example present in upstream mynewt-nimble and not maintained by Espressif.\n\nIDF maintains ESP-BLE-MESH as the official Mesh solution. Please refer to ESP-BLE-MESH guide at:\n`https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/esp-ble-mesh/ble-mesh-index.html`", "id": "BT_NIMBLE_MESH", "is_menuconfig": true, @@ -10555,7 +10555,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable this option to choose mbedTLS instead of TinyCrypt for crypto\ncomputations.", "id": "BT_NIMBLE_CRYPTO_STACK_MBEDTLS", "name": "BT_NIMBLE_CRYPTO_STACK_MBEDTLS", @@ -10565,7 +10565,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "BLE Host stop procedure timeout in milliseconds.", "id": "BT_NIMBLE_HS_STOP_TIMEOUT_MS", "name": "BT_NIMBLE_HS_STOP_TIMEOUT_MS", @@ -10575,7 +10575,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && IDF_TARGET_ESP32 && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && IDF_TARGET_ESP32 && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Use this option to do host based Random Private Address resolution.\nIf this option is disabled then controller based privacy is used.", "id": "BT_NIMBLE_HOST_BASED_PRIVACY", "name": "BT_NIMBLE_HOST_BASED_PRIVACY", @@ -10596,7 +10596,7 @@ "type": "int" } ], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable to make the NimBLE host to reattempt GAP connection on connection\nestablishment failure.", "id": "BT_NIMBLE_ENABLE_CONN_REATTEMPT", "name": "BT_NIMBLE_ENABLE_CONN_REATTEMPT", @@ -10606,7 +10606,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Use this option to let stack internally handle the request for repeat pairing.\nEnabling this option will delete the pairing of the device and stack will NOT post any event\nto application. If this option is disabled, application will get BLE_GAP_EVENT_REPEAT_PAIRING\nevent.", "id": "BT_NIMBLE_HANDLE_REPEAT_PAIRING_DELETION", "name": "BT_NIMBLE_HANDLE_REPEAT_PAIRING_DELETION", @@ -10902,7 +10902,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_ENABLED && (SOC_BLE_50_SUPPORTED || !BT_CONTROLLER_ENABLED) && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && (SOC_BLE_50_SUPPORTED || !BT_CONTROLLER_ENABLED) && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable BLE 5 feature", "id": "BT_NIMBLE_50_FEATURE_SUPPORT", "is_menuconfig": true, @@ -10924,7 +10924,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable GATT caching", "id": "BT_NIMBLE_GATT_CACHING", "is_menuconfig": true, @@ -10935,7 +10935,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable this option to start discovery for included service.", "id": "BT_NIMBLE_INCL_SVC_DISCOVERY", "name": "BT_NIMBLE_INCL_SVC_DISCOVERY", @@ -10945,7 +10945,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Set this option to set the upper limit on number of connections to be cached.", "id": "BT_NIMBLE_GATT_CACHING_MAX_CONNS", "name": "BT_NIMBLE_GATT_CACHING_MAX_CONNS", @@ -10955,7 +10955,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Set this option to set the upper limit on number of services per connection to be cached.", "id": "BT_NIMBLE_GATT_CACHING_MAX_SVCS", "name": "BT_NIMBLE_GATT_CACHING_MAX_SVCS", @@ -10965,7 +10965,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Set this option to set the upper limit on number of included services per connection to be cached.", "id": "BT_NIMBLE_GATT_CACHING_MAX_INCL_SVCS", "name": "BT_NIMBLE_GATT_CACHING_MAX_INCL_SVCS", @@ -10975,7 +10975,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Set this option to set the upper limit on number of characteristics per connection to be cached.", "id": "BT_NIMBLE_GATT_CACHING_MAX_CHRS", "name": "BT_NIMBLE_GATT_CACHING_MAX_CHRS", @@ -10985,7 +10985,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Set this option to set the upper limit on number of descriptors per connection to be cached.", "id": "BT_NIMBLE_GATT_CACHING_MAX_DSCS", "name": "BT_NIMBLE_GATT_CACHING_MAX_DSCS", @@ -10995,7 +10995,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "When client receives ATT out-of-sync error message, it will not automatically start the discovery procedure\nto correct the invalid cache.", "id": "BT_NIMBLE_GATT_CACHING_DISABLE_AUTO", "name": "BT_NIMBLE_GATT_CACHING_DISABLE_AUTO", @@ -11005,7 +11005,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_CACHING && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable this option to use associated address caching instead of performing service discovery.", "id": "BT_NIMBLE_GATT_CACHING_ASSOC_ENABLE", "name": "BT_NIMBLE_GATT_CACHING_ASSOC_ENABLE", @@ -11015,7 +11015,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "BLE list size", "id": "BT_NIMBLE_WHITELIST_SIZE", "name": "BT_NIMBLE_WHITELIST_SIZE", @@ -11025,7 +11025,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable the throughput test mode", "id": "BT_NIMBLE_TEST_THROUGHPUT_TEST", "name": "BT_NIMBLE_TEST_THROUGHPUT_TEST", @@ -11035,7 +11035,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Set this option to enable blufi functionality.", "id": "BT_NIMBLE_BLUFI_ENABLE", "name": "BT_NIMBLE_BLUFI_ENABLE", @@ -11045,7 +11045,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Set this option to use Esp Timer which has higher priority timer instead of FreeRTOS timer", "id": "BT_NIMBLE_USE_ESP_TIMER", "name": "BT_NIMBLE_USE_ESP_TIMER", @@ -11055,7 +11055,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This option is used to distinguish whether a previous version of VHCI is being used", "id": "BT_NIMBLE_LEGACY_VHCI_ENABLE", "name": "BT_NIMBLE_LEGACY_VHCI_ENABLE", @@ -11065,7 +11065,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This option is used when data to be sent is more than 512 bytes. For peripheral role,\nBT_NIMBLE_MSYS_1_BLOCK_COUNT needs to be increased according to the need.", "id": "BT_NIMBLE_BLE_GATT_BLOB_TRANSFER", "name": "BT_NIMBLE_BLE_GATT_BLOB_TRANSFER", @@ -11077,7 +11077,7 @@ "children": [ { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Proximity Service support", "id": "BT_NIMBLE_PROX_SERVICE", "name": "BT_NIMBLE_PROX_SERVICE", @@ -11087,7 +11087,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Alert Notification Service support", "id": "BT_NIMBLE_ANS_SERVICE", "name": "BT_NIMBLE_ANS_SERVICE", @@ -11097,7 +11097,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Current Time Service support", "id": "BT_NIMBLE_CTS_SERVICE", "name": "BT_NIMBLE_CTS_SERVICE", @@ -11107,7 +11107,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Health Thermometer Service support", "id": "BT_NIMBLE_HTP_SERVICE", "name": "BT_NIMBLE_HTP_SERVICE", @@ -11117,7 +11117,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Internet Protocol Service support", "id": "BT_NIMBLE_IPSS_SERVICE", "name": "BT_NIMBLE_IPSS_SERVICE", @@ -11127,7 +11127,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Tx Power Service support", "id": "BT_NIMBLE_TPS_SERVICE", "name": "BT_NIMBLE_TPS_SERVICE", @@ -11137,7 +11137,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Immediate Alert Service support", "id": "BT_NIMBLE_IAS_SERVICE", "name": "BT_NIMBLE_IAS_SERVICE", @@ -11147,7 +11147,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Link Loss Service support", "id": "BT_NIMBLE_LLS_SERVICE", "name": "BT_NIMBLE_LLS_SERVICE", @@ -11157,7 +11157,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Serial Port Service support", "id": "BT_NIMBLE_SPS_SERVICE", "name": "BT_NIMBLE_SPS_SERVICE", @@ -11167,7 +11167,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable HeartRate Service support", "id": "BT_NIMBLE_HR_SERVICE", "name": "BT_NIMBLE_HR_SERVICE", @@ -11198,7 +11198,7 @@ "type": "int" } ], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable HID service support", "id": "BT_NIMBLE_HID_SERVICE", "is_menuconfig": true, @@ -11220,7 +11220,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Battery service support", "id": "BT_NIMBLE_BAS_SERVICE", "is_menuconfig": true, @@ -11312,7 +11312,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable Device Information service support", "id": "BT_NIMBLE_DIS_SERVICE", "is_menuconfig": true, @@ -11453,7 +11453,7 @@ "type": "choice" } ], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable GAP Service support", "id": "BT_NIMBLE_GAP_SERVICE", "is_menuconfig": true, @@ -11464,7 +11464,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": null, "id": "BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION", "name": "BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION", @@ -11507,7 +11507,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable write permission (BLE_GATT_CHR_F_WRITE)", "id": "BT_NIMBLE_SVC_GAP_NAME_WRITE", "name": "BT_NIMBLE_SVC_GAP_NAME_WRITE", @@ -11516,7 +11516,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "id": "component-config-bluetooth-nimble-options-ble-services-gap-device-name-write-permissions-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-1165", "title": "GAP device name write permissions", "type": "menu" @@ -11525,7 +11525,7 @@ "children": [ { "children": [], - "depends_on": "BT_NIMBLE_ROLE_PERIPHERAL && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ROLE_PERIPHERAL && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Peripheral Preferred Connection Parameter: Connection Interval maximum value\nInterval Max = value * 1.25 ms", "id": "BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL", "name": "BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL", @@ -11535,7 +11535,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ROLE_PERIPHERAL && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ROLE_PERIPHERAL && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Peripheral Preferred Connection Parameter: Connection Interval minimum value\nInterval Min = value * 1.25 ms", "id": "BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL", "name": "BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL", @@ -11545,7 +11545,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Peripheral Preferred Connection Parameter: Slave Latency", "id": "BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY", "name": "BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY", @@ -11555,7 +11555,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Peripheral Preferred Connection Parameter: Supervision Timeout\nTimeout = Value * 10 ms", "id": "BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO", "name": "BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO", @@ -11564,14 +11564,14 @@ "type": "int" } ], - "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GAP_SERVICE && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "id": "component-config-bluetooth-nimble-options-ble-services-peripheral-preferred-connection-parameters-ppcp-settings-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-1195", "title": "Peripheral Preferred Connection Parameters (PPCP) settings", "type": "menu" }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": null, "id": "BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM", "name": "BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM", @@ -11581,7 +11581,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": null, "id": "BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC", "name": "BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC", @@ -11591,7 +11591,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": null, "id": "BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN", "name": "BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN", @@ -11601,7 +11601,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": null, "id": "BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR", "name": "BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR", @@ -11611,7 +11611,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable the LE GATT Security Level Characteristic", "id": "BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL", "name": "BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL", @@ -11621,7 +11621,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable the Resolvable Private Address Only characteristic", "id": "BT_NIMBLE_SVC_GAP_RPA_ONLY", "name": "BT_NIMBLE_SVC_GAP_RPA_ONLY", @@ -11630,14 +11630,14 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_GATT_SERVER && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "id": "component-config-bluetooth-nimble-options-ble-services-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-924", "title": "BLE Services", "type": "menu" }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This option is used to enable support for sending Vendor Specific HCI commands and handling\nVendor Specific HCI Events.", "id": "BT_NIMBLE_VS_SUPPORT", "name": "BT_NIMBLE_VS_SUPPORT", @@ -11647,7 +11647,7 @@ }, { "children": [], - "depends_on": "SOC_BLE_MULTI_CONN_OPTIMIZATION && BT_NIMBLE_ENABLED", + "depends_on": "SOC_BLE_MULTI_CONN_OPTIMIZATION && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This option enables the use of vendor-specific APIs for multi-connections, which can\ngreatly enhance the stability of coexistence between numerous central and peripheral\ndevices. It will prohibit the usage of standard APIs.", "id": "BT_NIMBLE_OPTIMIZE_MULTI_CONN", "name": "BT_NIMBLE_OPTIMIZE_MULTI_CONN", @@ -11668,7 +11668,7 @@ "type": "int" } ], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This option is used to enable encrypted advertising data.", "id": "BT_NIMBLE_ENC_ADV_DATA", "name": "BT_NIMBLE_ENC_ADV_DATA", @@ -11678,7 +11678,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This enable BLE high duty advertising interval feature", "id": "BT_NIMBLE_HIGH_DUTY_ADV_ITVL", "name": "BT_NIMBLE_HIGH_DUTY_ADV_ITVL", @@ -11688,7 +11688,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && !IDF_TARGET_ESP32C2 && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && !IDF_TARGET_ESP32C2 && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "This enables support for user to initiate a new connection with scan in progress", "id": "BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN", "name": "BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN", @@ -11698,7 +11698,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "When scanning and scan duplicate is not enabled, if there are a lot of adv packets around\nor application layer handling adv packets is slow, it will cause the controller memory\nto run out. if enabled, adv packets will be lost when host queue is congested.", "id": "BT_NIMBLE_HOST_QUEUE_CONG_CHECK", "name": "BT_NIMBLE_HOST_QUEUE_CONG_CHECK", @@ -11708,7 +11708,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "When BLE and Wireless protocol/IEEE 802.15.4 operate in coexistence, BLE preemption\ncan disrupt the GATT context,causing the service discovery callback to not be invoked.\nA temporary list is maintained to preserve the GATT context and use it in case of preemption.", "id": "BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT", "name": "BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT", @@ -11718,7 +11718,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "If enabled, when a service request (e.g. read, write) to a server fails, and the ATT\nerror suggests insufficient security, then the central will initiate pairing and retry\nthe service request.", "id": "BT_NIMBLE_GATTC_AUTO_PAIR", "name": "BT_NIMBLE_GATTC_AUTO_PAIR", @@ -11891,7 +11891,7 @@ "type": "int" } ], - "depends_on": "BT_CONTROLLER_DISABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_CONTROLLER_DISABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Use UART transport", "id": "BT_NIMBLE_TRANSPORT_UART", "name": "BT_NIMBLE_TRANSPORT_UART", @@ -11903,7 +11903,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "UART_HW_FLOWCTRL_DISABLE", "name": "UART_HW_FLOWCTRL_DISABLE", @@ -11913,7 +11913,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "UART_HW_FLOWCTRL_CTS_RTS", "name": "UART_HW_FLOWCTRL_CTS_RTS", @@ -11922,7 +11922,7 @@ "type": "bool" } ], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Uart Flow Control", "id": "component-config-bluetooth-nimble-options-host-controller-transport-uart-flow-control-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-1417", "name": "BT_NIMBLE_USE_HCI_UART_FLOW_CTRL", @@ -11931,7 +11931,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": null, "id": "BT_NIMBLE_HCI_UART_FLOW_CTRL", "name": "BT_NIMBLE_HCI_UART_FLOW_CTRL", @@ -11941,7 +11941,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "UART HCI RTS pin", "id": "BT_NIMBLE_HCI_UART_RTS_PIN", "name": "BT_NIMBLE_HCI_UART_RTS_PIN", @@ -11951,7 +11951,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "UART HCI CTS pin", "id": "BT_NIMBLE_HCI_UART_CTS_PIN", "name": "BT_NIMBLE_HCI_UART_CTS_PIN", @@ -11960,14 +11960,14 @@ "type": "int" } ], - "depends_on": "BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "id": "component-config-bluetooth-nimble-options-host-controller-transport-home-pi-esp-esp-idf-components-bt-host-nimble-Kconfig.in-1330", "title": "Host-controller Transport", "type": "menu" }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Defines the number of channels EATT bearers can use", "id": "BT_NIMBLE_EATT_CHAN_NUM", "name": "BT_NIMBLE_EATT_CHAN_NUM", @@ -11977,7 +11977,7 @@ }, { "children": [], - "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", + "depends_on": "BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLED", "help": "Enable connection subrate change feature", "id": "BT_NIMBLE_SUBRATE", "name": "BT_NIMBLE_SUBRATE", @@ -11995,7 +11995,7 @@ "children": [ { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_MODE_EFF", "name": "BT_CTRL_MODE_EFF", @@ -12005,7 +12005,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "BLE maximum activities of bluetooth controller\uff0cboth of connections,\nscan , sync and adv(periodic adv, multi-adv). Each instance needs to\nconsume 828 bytes, you can save RAM by modifying the instance value\naccording to actual needs.", "id": "BT_CTRL_BLE_MAX_ACT", "name": "BT_CTRL_BLE_MAX_ACT", @@ -12015,7 +12015,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_BLE_MAX_ACT_EFF", "name": "BT_CTRL_BLE_MAX_ACT_EFF", @@ -12025,7 +12025,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "BLE ACL buffer have two methods to be allocated. One is persistent allocating\n(allocate when controller initialise, never free until controller de-initialise)\nanother is dynamically allocating (allocate before TX and free after TX).", "id": "BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB", "name": "BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB", @@ -12037,7 +12037,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_PINNED_TO_CORE_0", "name": "BT_CTRL_PINNED_TO_CORE_0", @@ -12047,7 +12047,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ", + "depends_on": "!FREERTOS_UNICORE && && ", "help": null, "id": "BT_CTRL_PINNED_TO_CORE_1", "name": "BT_CTRL_PINNED_TO_CORE_1", @@ -12056,7 +12056,7 @@ "type": "bool" } ], - "depends_on": "!FREERTOS_UNICORE && BT_CONTROLLER_ENABLED", + "depends_on": "!FREERTOS_UNICORE && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Specify the cpu core to run bluetooth controller.\nCan not specify no-affinity.", "id": "component-config-bluetooth-controller-options-the-cpu-core-which-bluetooth-controller-run-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-29", "name": "BT_CTRL_PINNED_TO_CORE_CHOICE", @@ -12065,7 +12065,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_PINNED_TO_CORE", "name": "BT_CTRL_PINNED_TO_CORE", @@ -12077,7 +12077,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Normal option. Mostly, choose this VHCI when bluetooth host run on ESP32S3 or ESP32C3.", "id": "BT_CTRL_HCI_MODE_VHCI", "name": "BT_CTRL_HCI_MODE_VHCI", @@ -12087,7 +12087,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "If use external bluetooth host which run on other hardware and use UART as the HCI interface,\nchoose this option.", "id": "BT_CTRL_HCI_MODE_UART_H4", "name": "BT_CTRL_HCI_MODE_UART_H4", @@ -12096,7 +12096,7 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Specify HCI mode as VHCI or UART(H4)", "id": "component-config-bluetooth-controller-options-hci-mode-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-49", "name": "BT_CTRL_HCI_MODE_CHOICE", @@ -12105,7 +12105,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "HCI mode as VHCI or UART(H4)", "id": "BT_CTRL_HCI_TL", "name": "BT_CTRL_HCI_TL", @@ -12115,7 +12115,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "The maximum number of 5.0 extend duplicate", "id": "BT_CTRL_ADV_DUP_FILT_MAX", "name": "BT_CTRL_ADV_DUP_FILT_MAX", @@ -12127,7 +12127,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_BLE_CCA_MODE_NONE", "name": "BT_BLE_CCA_MODE_NONE", @@ -12137,7 +12137,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_BLE_CCA_MODE_HW", "name": "BT_BLE_CCA_MODE_HW", @@ -12147,7 +12147,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_BLE_CCA_MODE_SW", "name": "BT_BLE_CCA_MODE_SW", @@ -12156,7 +12156,7 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Define BT BLE CCA mode\nNote that if CCA feature is enabled, the hardware may not transmit packets due to channel busy.\nTherefore, it may potentially lead to an increase in the time taken for scanning advertising packet\nand establishing connections, or a decrease in the throughput rate of the connection.", "id": "component-config-bluetooth-controller-options-ble-cca-mode-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-81", "name": "BT_BLE_CCA_MODE", @@ -12165,7 +12165,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_BLE_CCA_MODE", "name": "BT_BLE_CCA_MODE", @@ -12175,7 +12175,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "It is the threshold value of HW CCA, if the value is 30, it means CCA threshold is -30 dBm.\nIf the channel assessment result exceeds the CCA threshold (e.g. -75 dBm), indicating the channel is busy,\nthe hardware will not transmit packets on that channel.", "id": "BT_CTRL_HW_CCA_VAL", "name": "BT_CTRL_HW_CCA_VAL", @@ -12185,7 +12185,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If other devices are sending packets in the air and the signal is strong,\nthe packet hw to be sent this time is cancelled.", "id": "BT_CTRL_HW_CCA_EFF", "name": "BT_CTRL_HW_CCA_EFF", @@ -12197,7 +12197,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_CE_LENGTH_TYPE_ORIG", "name": "BT_CTRL_CE_LENGTH_TYPE_ORIG", @@ -12207,7 +12207,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_CE_LENGTH_TYPE_CE", "name": "BT_CTRL_CE_LENGTH_TYPE_CE", @@ -12217,7 +12217,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_CE_LENGTH_TYPE_SD", "name": "BT_CTRL_CE_LENGTH_TYPE_SD", @@ -12226,7 +12226,7 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Specify connection event length determination", "id": "component-config-bluetooth-controller-options-connection-event-length-determination-method-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-121", "name": "BT_CTRL_CE_LENGTH_TYPE", @@ -12235,7 +12235,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_CE_LENGTH_TYPE_EFF", "name": "BT_CTRL_CE_LENGTH_TYPE_EFF", @@ -12247,7 +12247,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_TX_ANTENNA_INDEX_0", "name": "BT_CTRL_TX_ANTENNA_INDEX_0", @@ -12257,7 +12257,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_TX_ANTENNA_INDEX_1", "name": "BT_CTRL_TX_ANTENNA_INDEX_1", @@ -12266,7 +12266,7 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Specify default Tx antenna used for bluetooth", "id": "component-config-bluetooth-controller-options-default-tx-anntena-used-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-140", "name": "BT_CTRL_TX_ANTENNA_INDEX", @@ -12275,7 +12275,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_TX_ANTENNA_INDEX_EFF", "name": "BT_CTRL_TX_ANTENNA_INDEX_EFF", @@ -12287,7 +12287,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_RX_ANTENNA_INDEX_0", "name": "BT_CTRL_RX_ANTENNA_INDEX_0", @@ -12297,7 +12297,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_RX_ANTENNA_INDEX_1", "name": "BT_CTRL_RX_ANTENNA_INDEX_1", @@ -12306,7 +12306,7 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Specify default Rx antenna used for bluetooth", "id": "component-config-bluetooth-controller-options-default-rx-anntena-used-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-156", "name": "BT_CTRL_RX_ANTENNA_INDEX", @@ -12315,7 +12315,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_RX_ANTENNA_INDEX_EFF", "name": "BT_CTRL_RX_ANTENNA_INDEX_EFF", @@ -12327,7 +12327,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N24", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N24", @@ -12337,7 +12337,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N21", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N21", @@ -12347,7 +12347,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N18", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N18", @@ -12357,7 +12357,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N15", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N15", @@ -12367,7 +12367,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N12", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N12", @@ -12377,7 +12377,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N9", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N9", @@ -12387,7 +12387,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N6", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N6", @@ -12397,7 +12397,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N3", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N3", @@ -12407,7 +12407,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_N0", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_N0", @@ -12417,7 +12417,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_P3", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_P3", @@ -12427,7 +12427,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_P6", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_P6", @@ -12437,7 +12437,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_P9", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_P9", @@ -12447,7 +12447,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_P12", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_P12", @@ -12457,7 +12457,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_P15", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_P15", @@ -12467,7 +12467,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_P18", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_P18", @@ -12477,7 +12477,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_P20", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_P20", @@ -12486,7 +12486,7 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Specify default Tx power level", "id": "component-config-bluetooth-controller-options-ble-default-tx-power-level-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-172", "name": "BT_CTRL_DFT_TX_POWER_LEVEL", @@ -12495,7 +12495,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_DFT_TX_POWER_LEVEL_EFF", "name": "BT_CTRL_DFT_TX_POWER_LEVEL_EFF", @@ -12526,7 +12526,7 @@ "type": "int" } ], - "depends_on": "BT_CTRL_BLE_SCAN && BT_CONTROLLER_ENABLED", + "depends_on": "BT_CTRL_BLE_SCAN && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "The function is mainly used to enable flow control for advertising reports. When it is enabled,\nadvertising reports will be discarded by the controller if the number of unprocessed advertising\nreports exceeds the size of BLE adv report flow control.", "id": "BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP", "name": "BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP", @@ -12628,7 +12628,7 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "This select enables parameters setting of BLE scan duplicate.", "id": "BT_CTRL_BLE_SCAN_DUPL", "name": "BT_CTRL_BLE_SCAN_DUPL", @@ -12640,7 +12640,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Always enable the limitation on max tx/rx time for Coded-PHY connection", "id": "BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EN", "name": "BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EN", @@ -12650,7 +12650,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Disable the limitation on max tx/rx time for Coded-PHY connection", "id": "BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS", "name": "BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS", @@ -12659,7 +12659,7 @@ "type": "bool" } ], - "depends_on": "ESP_COEX_SW_COEXIST_ENABLE && BT_CONTROLLER_ENABLED", + "depends_on": "ESP_COEX_SW_COEXIST_ENABLE && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "When using PHY-Coded in BLE connection, limitation on max tx/rx time can be applied to\nbetter avoid dramatic performance deterioration of Wi-Fi.", "id": "component-config-bluetooth-controller-options-coexistence-limit-on-max-tx-rx-time-for-coded-phy-connection-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-352", "name": "BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM", @@ -12668,7 +12668,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF", "name": "BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF", @@ -12732,7 +12732,7 @@ "type": "bool" } ], - "depends_on": "!BT_CTRL_HCI_MODE_UART_H4 && BT_CONTROLLER_ENABLED", + "depends_on": "!BT_CTRL_HCI_MODE_UART_H4 && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Enable/disable bluetooth controller low power mode.\nModem sleep is not supported to be used with UART HCI.", "id": "BT_CTRL_MODEM_SLEEP", "name": "BT_CTRL_MODEM_SLEEP", @@ -12742,7 +12742,7 @@ }, { "children": [], - "depends_on": "(BT_CTRL_LPCLK_SEL_MAIN_XTAL || BT_CTRL_LPCLK_SEL_EXT_32K_XTAL) && FREERTOS_USE_TICKLESS_IDLE && BT_CONTROLLER_ENABLED", + "depends_on": "(BT_CTRL_LPCLK_SEL_MAIN_XTAL || BT_CTRL_LPCLK_SEL_EXT_32K_XTAL) && FREERTOS_USE_TICKLESS_IDLE && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If this option is selected, the main crystal will power up during light sleep when the low power clock\nselects an external 32kHz crystal but the external 32kHz crystal does not exist or the low power clock\nselects the main crystal.", "id": "BT_CTRL_MAIN_XTAL_PU_DURING_LIGHT_SLEEP", "name": "BT_CTRL_MAIN_XTAL_PU_DURING_LIGHT_SLEEP", @@ -12751,14 +12751,14 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "id": "component-config-bluetooth-controller-options-modem-sleep-options-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-377", "title": "MODEM SLEEP Options", "type": "menu" }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_SLEEP_MODE_EFF", "name": "BT_CTRL_SLEEP_MODE_EFF", @@ -12768,7 +12768,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_SLEEP_CLOCK_EFF", "name": "BT_CTRL_SLEEP_CLOCK_EFF", @@ -12778,7 +12778,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_HCI_TL_EFF", "name": "BT_CTRL_HCI_TL_EFF", @@ -12799,7 +12799,7 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Enable uncoded phy AGC recorrect", "id": "BT_CTRL_AGC_RECORRECT_EN", "name": "BT_CTRL_AGC_RECORRECT_EN", @@ -12809,7 +12809,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Disable active scan backoff. The bluetooth spec requires that scanners should run a backoff procedure to\nminimize collision of scan request PDUs from multiple scanners. If scan backoff is disabled, in active\nscanning, scan request PDU will be sent every time when HW receives scannable ADV PDU.", "id": "BT_CTRL_SCAN_BACKOFF_UPPERLIMITMAX", "name": "BT_CTRL_SCAN_BACKOFF_UPPERLIMITMAX", @@ -12819,7 +12819,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "When this option is enabled, auxiliary packets will be present in the events of\n'Non-Connectable and Non-Scannable' regardless of whether the advertising length is 0.\nIf this option is not enabled, auxiliary packets will only be present when the advertising length is not 0.", "id": "BT_BLE_ADV_DATA_LENGTH_ZERO_AUX", "name": "BT_BLE_ADV_DATA_LENGTH_ZERO_AUX", @@ -12829,7 +12829,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If this option is enabled, The Controller will records the communication quality\nfor each channel and then start a timer to check and update the channel map every 4 seconds.", "id": "BT_CTRL_CHAN_ASS_EN", "name": "BT_CTRL_CHAN_ASS_EN", @@ -12839,7 +12839,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If this option is disabled, The Controller will not start the LE authenticated payload timer.\nThis option is used for some compatibility problems related to LE ping procedure.", "id": "BT_CTRL_LE_PING_EN", "name": "BT_CTRL_LE_PING_EN", @@ -12851,7 +12851,7 @@ "children": [ { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If this option is enabled, Controller will terminate the connection\nwhen Instant Passed (0x28) error occurs during connection update procedure.", "id": "BT_CTRL_BLE_LLCP_CONN_UPDATE", "name": "BT_CTRL_BLE_LLCP_CONN_UPDATE", @@ -12861,7 +12861,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If this option is enabled, Controller will terminate the connection\nwhen Instant Passed (0x28) error occurs in channel map update procedure.", "id": "BT_CTRL_BLE_LLCP_CHAN_MAP_UPDATE", "name": "BT_CTRL_BLE_LLCP_CHAN_MAP_UPDATE", @@ -12871,7 +12871,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If this option is enabled, Controller will terminate the connection\nwhen Instant Passed (0x28) error occurs in PHY update procedure.", "id": "BT_CTRL_BLE_LLCP_PHY_UPDATE", "name": "BT_CTRL_BLE_LLCP_PHY_UPDATE", @@ -12880,14 +12880,14 @@ "type": "bool" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "id": "component-config-bluetooth-controller-options-ble-disconnects-when-instant-passed-0x28-occurs-home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-499", "title": "BLE disconnects when Instant Passed (0x28) occurs", "type": "menu" }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If this option is enabled, all code for the Bluetooth controller will be moved from ROM and IRAM\nto flash, saving over 20K bytes of memory. However, it will require more flash resources and the\nperformance of Bluetooth will decrease If this option is enabled, Bluetooth may not work properly\nduring erasing flash. It is recommended to turn on the auto suspend function of flash. After auto\nsuspend is turned on, Bluetooth interrupts can be executed normally during erasing flash, with less\nimpact on Bluetooth performance.", "id": "BT_CTRL_RUN_IN_FLASH_ONLY", "name": "BT_CTRL_RUN_IN_FLASH_ONLY", @@ -12897,7 +12897,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_DTM_ENABLE", "name": "BT_CTRL_DTM_ENABLE", @@ -12907,7 +12907,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "If this option is disabled, it is not recommended to use connectable ADV.", "id": "BT_CTRL_BLE_MASTER", "name": "BT_CTRL_BLE_MASTER", @@ -12917,7 +12917,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_BLE_TEST", "name": "BT_CTRL_BLE_TEST", @@ -12927,7 +12927,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_BLE_SCAN", "name": "BT_CTRL_BLE_SCAN", @@ -12937,7 +12937,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_BLE_SECURITY_ENABLE", "name": "BT_CTRL_BLE_SECURITY_ENABLE", @@ -12947,7 +12947,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_BLE_ADV", "name": "BT_CTRL_BLE_ADV", @@ -12957,7 +12957,7 @@ }, { "children": [], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": "Enabling this option will add stricter verification of the Access Address in the CONNECT_IND PDU.\nThis improves security by ensuring that only connection requests with valid Access Addresses are accepted.\nIf disabled, only basic checks are applied, improving compatibility.", "id": "BT_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS", "name": "BT_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS", @@ -12971,126 +12971,116 @@ "children": [ { "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && BLE_LOG_ENABLED && BT_CONTROLLER_ENABLED", - "help": "Utilize BLE Log v2 for controller log", - "id": "BT_CTRL_LE_LOG_MODE_BLE_LOG_V2", - "name": "BT_CTRL_LE_LOG_MODE_BLE_LOG_V2", + "depends_on": "BT_CTRL_LE_LOG_EN && !BT_CTRL_LE_LOG_MODE_BLE_LOG_V2 && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": null, + "id": "BT_CTRL_LE_LOG_DUMP_ONLY", + "name": "BT_CTRL_LE_LOG_DUMP_ONLY", "range": null, - "title": "Utilize BLE Log v2 for controller log", + "title": "Enable BLE log dump only", "type": "bool" + }, + { + "children": [ + { + "children": [], + "depends_on": "BT_CTRL_LE_LOG_STORAGE_EN && !BT_CTRL_LE_LOG_MODE_BLE_LOG_V2 && BT_CONTROLLER_ENABLED", + "help": "The size of ble controller log partition shall be a multiples of 4K.\nThe name of log partition shall be \"bt_ctrl_log\".\nThe partition type shall be ESP_PARTITION_TYPE_DATA.\nThe partition sub_type shall be ESP_PARTITION_SUBTYPE_ANY.", + "id": "BT_CTRL_LE_LOG_PARTITION_SIZE", + "name": "BT_CTRL_LE_LOG_PARTITION_SIZE", + "range": null, + "title": "The size of ble controller log partition(Multiples of 4K)", + "type": "int" + } + ], + "depends_on": "BT_CTRL_LE_LOG_EN && !BT_CTRL_LE_LOG_MODE_BLE_LOG_V2 && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": null, + "id": "BT_CTRL_LE_LOG_STORAGE_EN", + "name": "BT_CTRL_LE_LOG_STORAGE_EN", + "range": null, + "title": "Enable BLE log storage to flash", + "type": "bool" + }, + { + "children": [], + "depends_on": "BT_CTRL_LE_LOG_EN && !BT_CTRL_LE_LOG_DUMP_ONLY && !BT_CTRL_LE_LOG_MODE_BLE_LOG_V2 && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": "Output ble controller logs to SPI bus", + "id": "BT_CTRL_LE_LOG_SPI_OUT_EN", + "name": "BT_CTRL_LE_LOG_SPI_OUT_EN", + "range": null, + "title": "Output ble controller logs to SPI bus", + "type": "bool" + }, + { + "children": [], + "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": null, + "id": "BT_CTRL_LE_HCI_LOG_EN", + "name": "BT_CTRL_LE_HCI_LOG_EN", + "range": null, + "title": "Enable BLE HCI log", + "type": "bool" + }, + { + "children": [], + "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": null, + "id": "BT_CTRL_LE_LOG_MODE_EN", + "name": "BT_CTRL_LE_LOG_MODE_EN", + "range": null, + "title": "Enable log for specified BLE mode", + "type": "int" + }, + { + "children": [], + "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": null, + "id": "BT_CTRL_LE_LOG_LEVEL", + "name": "BT_CTRL_LE_LOG_LEVEL", + "range": null, + "title": "The level of BLE log", + "type": "int" + }, + { + "children": [], + "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": null, + "id": "BT_CTRL_LE_LOG_BUF1_SIZE", + "name": "BT_CTRL_LE_LOG_BUF1_SIZE", + "range": null, + "title": "The size of BLE log buffer1", + "type": "int" + }, + { + "children": [], + "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": null, + "id": "BT_CTRL_LE_LOG_HCI_BUF_SIZE", + "name": "BT_CTRL_LE_LOG_HCI_BUF_SIZE", + "range": null, + "title": "The size of BLE log HCI buffer", + "type": "int" + }, + { + "children": [], + "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", + "help": null, + "id": "BT_CTRL_LE_LOG_BUF2_SIZE", + "name": "BT_CTRL_LE_LOG_BUF2_SIZE", + "range": null, + "title": "The size of BLE log buffer2", + "type": "int" } ], - "depends_on": "BT_CTRL_RUN_IN_FLASH_ONLY && BT_CONTROLLER_ENABLED", + "depends_on": "BT_CTRL_RUN_IN_FLASH_ONLY && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "help": null, "id": "BT_CTRL_LE_LOG_EN", "name": "BT_CTRL_LE_LOG_EN", "range": null, "title": "Enable BLE debug log", "type": "bool" - }, - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && !BT_CTRL_LE_LOG_MODE_BLE_LOG_V2 && BT_CONTROLLER_ENABLED", - "help": null, - "id": "BT_CTRL_LE_LOG_DUMP_ONLY", - "name": "BT_CTRL_LE_LOG_DUMP_ONLY", - "range": null, - "title": "Enable BLE log dump only", - "type": "bool" - }, - { - "children": [ - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_STORAGE_EN && !BT_CTRL_LE_LOG_MODE_BLE_LOG_V2 && BT_CONTROLLER_ENABLED", - "help": "The size of ble controller log partition shall be a multiples of 4K.\nThe name of log partition shall be \"bt_ctrl_log\".\nThe partition type shall be ESP_PARTITION_TYPE_DATA.\nThe partition sub_type shall be ESP_PARTITION_SUBTYPE_ANY.", - "id": "BT_CTRL_LE_LOG_PARTITION_SIZE", - "name": "BT_CTRL_LE_LOG_PARTITION_SIZE", - "range": null, - "title": "The size of ble controller log partition(Multiples of 4K)", - "type": "int" - } - ], - "depends_on": "BT_CTRL_LE_LOG_EN && !BT_CTRL_LE_LOG_MODE_BLE_LOG_V2 && BT_CONTROLLER_ENABLED", - "help": null, - "id": "BT_CTRL_LE_LOG_STORAGE_EN", - "name": "BT_CTRL_LE_LOG_STORAGE_EN", - "range": null, - "title": "Enable BLE log storage to flash", - "type": "bool" - }, - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && !BT_CTRL_LE_LOG_DUMP_ONLY && !BT_CTRL_LE_LOG_MODE_BLE_LOG_V2 && BT_CONTROLLER_ENABLED", - "help": "Output ble controller logs to SPI bus", - "id": "BT_CTRL_LE_LOG_SPI_OUT_EN", - "name": "BT_CTRL_LE_LOG_SPI_OUT_EN", - "range": null, - "title": "Output ble controller logs to SPI bus", - "type": "bool" - }, - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED", - "help": null, - "id": "BT_CTRL_LE_HCI_LOG_EN", - "name": "BT_CTRL_LE_HCI_LOG_EN", - "range": null, - "title": "Enable BLE HCI log", - "type": "bool" - }, - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED", - "help": null, - "id": "BT_CTRL_LE_LOG_MODE_EN", - "name": "BT_CTRL_LE_LOG_MODE_EN", - "range": null, - "title": "Enable log for specified BLE mode", - "type": "int" - }, - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED", - "help": null, - "id": "BT_CTRL_LE_LOG_LEVEL", - "name": "BT_CTRL_LE_LOG_LEVEL", - "range": null, - "title": "The level of BLE log", - "type": "int" - }, - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED", - "help": null, - "id": "BT_CTRL_LE_LOG_BUF1_SIZE", - "name": "BT_CTRL_LE_LOG_BUF1_SIZE", - "range": null, - "title": "The size of BLE log buffer1", - "type": "int" - }, - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED", - "help": null, - "id": "BT_CTRL_LE_LOG_HCI_BUF_SIZE", - "name": "BT_CTRL_LE_LOG_HCI_BUF_SIZE", - "range": null, - "title": "The size of BLE log HCI buffer", - "type": "int" - }, - { - "children": [], - "depends_on": "BT_CTRL_LE_LOG_EN && BT_CONTROLLER_ENABLED", - "help": null, - "id": "BT_CTRL_LE_LOG_BUF2_SIZE", - "name": "BT_CTRL_LE_LOG_BUF2_SIZE", - "range": null, - "title": "The size of BLE log buffer2", - "type": "int" } ], - "depends_on": "BT_CONTROLLER_ENABLED", + "depends_on": "BT_CONTROLLER_ENABLED && BT_CONTROLLER_ENABLED", "id": "component-config-bluetooth-controller-options-controller-debug-log-options-experimental--home-pi-esp-esp-idf-components-bt-controller-esp32c3-Kconfig.in-566", "title": "Controller debug log Options (Experimental)", "type": "menu" @@ -16947,7 +16937,7 @@ "children": [ { "children": [], - "depends_on": "SOC_TWAI_SUPPORTED", + "depends_on": "SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "This configuration option used to bypass the conflict check mechanism with legacy code.", "id": "TWAI_SKIP_LEGACY_CONFLICT_CHECK", "name": "TWAI_SKIP_LEGACY_CONFLICT_CHECK", @@ -16957,7 +16947,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32 && SOC_TWAI_SUPPORTED", + "depends_on": "IDF_TARGET_ESP32 && SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "When the bus-off condition is reached, the REC should be reset to 0 and frozen (via LOM) by the\ndriver's ISR. However on the ESP32, there is an edge case where the REC will increase before the\ndriver's ISR can respond in time (e.g., due to the rapid occurrence of bus errors), thus causing the\nREC to be non-zero after bus-off. A non-zero REC can prevent bus-off recovery as the bus-off recovery\ncondition is that both TEC and REC become 0. Enabling this option will add a workaround in the driver\nto forcibly reset REC to zero on reaching bus-off.", "id": "TWAI_ERRATA_FIX_BUS_OFF_REC", "name": "TWAI_ERRATA_FIX_BUS_OFF_REC", @@ -16967,7 +16957,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32 && SOC_TWAI_SUPPORTED", + "depends_on": "IDF_TARGET_ESP32 && SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "On the ESP32, when a transmit interrupt occurs, and interrupt register is read on the same APB clock\ncycle, the transmit interrupt could be lost. Enabling this option will add a workaround that checks the\ntransmit buffer status bit to recover any lost transmit interrupt.", "id": "TWAI_ERRATA_FIX_TX_INTR_LOST", "name": "TWAI_ERRATA_FIX_TX_INTR_LOST", @@ -16977,7 +16967,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32 && SOC_TWAI_SUPPORTED", + "depends_on": "IDF_TARGET_ESP32 && SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "On the ESP32, when receiving a data or remote frame, if a bus error occurs in the data or CRC field,\nthe data of the next received frame could be invalid. Enabling this option will add a workaround that\nwill reset the peripheral on detection of this errata condition. Note that if a frame is transmitted on\nthe bus whilst the reset is ongoing, the message will not be receive by the peripheral sent on the bus\nduring the reset, the message will be lost.", "id": "TWAI_ERRATA_FIX_RX_FRAME_INVALID", "name": "TWAI_ERRATA_FIX_RX_FRAME_INVALID", @@ -16987,7 +16977,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32 && SOC_TWAI_SUPPORTED", + "depends_on": "IDF_TARGET_ESP32 && SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "On the ESP32, when the RX FIFO overruns and the RX message counter maxes out at 64 messages, the entire\nRX FIFO is no longer recoverable. Enabling this option will add a workaround that resets the peripheral\non detection of this errata condition. Note that if a frame is being sent on the bus during the reset\nbus during the reset, the message will be lost.", "id": "TWAI_ERRATA_FIX_RX_FIFO_CORRUPT", "name": "TWAI_ERRATA_FIX_RX_FIFO_CORRUPT", @@ -16997,7 +16987,7 @@ }, { "children": [], - "depends_on": "(IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32C3) && SOC_TWAI_SUPPORTED", + "depends_on": "(IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32C3) && SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "When in the listen only mode, the TWAI controller must not influence the TWAI bus (i.e., must not send\nany dominant bits). However, while in listen only mode on the ESP32/ESP32-S2/ESP32-S3/ESP32-C3, the\nTWAI controller will still transmit dominant bits when it detects an error (i.e., as part of an active\nerror frame). Enabling this option will add a workaround that forces the TWAI controller into an error\npassive state on initialization, thus preventing any dominant bits from being sent.", "id": "TWAI_ERRATA_FIX_LISTEN_ONLY_DOM", "name": "TWAI_ERRATA_FIX_LISTEN_ONLY_DOM", @@ -17015,7 +17005,7 @@ "children": [ { "children": [], - "depends_on": "SOC_I2C_SUPPORTED", + "depends_on": "SOC_I2C_SUPPORTED && SOC_I2C_SUPPORTED", "help": "This configuration option allows the user to bypass the conflict check mechanism with legacy code.", "id": "I2C_SKIP_LEGACY_CONFLICT_CHECK", "name": "I2C_SKIP_LEGACY_CONFLICT_CHECK", @@ -17033,7 +17023,7 @@ "children": [ { "children": [], - "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED", + "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED && SOC_TOUCH_SENSOR_SUPPORTED", "help": "whether to suppress the deprecation warnings when using legacy touch sensor driver\n(driver/touch_sensor.h). If you want to continue using the legacy driver,\nand don't want to see related deprecation warnings, you can enable this option.", "id": "TOUCH_SUPPRESS_DEPRECATE_WARN", "name": "TOUCH_SUPPRESS_DEPRECATE_WARN", @@ -17043,7 +17033,7 @@ }, { "children": [], - "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED", + "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED && SOC_TOUCH_SENSOR_SUPPORTED", "help": "This configuration option allows the user to bypass the conflict check mechanism with legacy code.", "id": "TOUCH_SKIP_LEGACY_CONFLICT_CHECK", "name": "TOUCH_SKIP_LEGACY_CONFLICT_CHECK", @@ -17121,7 +17111,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "EFUSE_CODE_SCHEME_COMPAT_NONE", "name": "EFUSE_CODE_SCHEME_COMPAT_NONE", @@ -17131,7 +17121,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "EFUSE_CODE_SCHEME_COMPAT_3_4", "name": "EFUSE_CODE_SCHEME_COMPAT_3_4", @@ -17141,7 +17131,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "EFUSE_CODE_SCHEME_COMPAT_REPEAT", "name": "EFUSE_CODE_SCHEME_COMPAT_REPEAT", @@ -17179,7 +17169,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_TLS_USING_MBEDTLS", "name": "ESP_TLS_USING_MBEDTLS", @@ -17189,7 +17179,7 @@ }, { "children": [], - "depends_on": "TLS_STACK_WOLFSSL && ", + "depends_on": "TLS_STACK_WOLFSSL && && ", "help": null, "id": "ESP_TLS_USING_WOLFSSL", "name": "ESP_TLS_USING_WOLFSSL", @@ -17369,7 +17359,7 @@ "children": [ { "children": [], - "depends_on": "IDF_TARGET_ESP32", + "depends_on": "IDF_TARGET_ESP32 && IDF_TARGET_ESP32", "help": "Some ESP32s have Two Point calibration values burned into eFuse BLOCK3.\nThis option will allow the ADC calibration component to characterize the\nADC-Voltage curve using Two Point values if they are available.", "id": "ADC_CALI_EFUSE_TP_ENABLE", "name": "ADC_CALI_EFUSE_TP_ENABLE", @@ -17379,7 +17369,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32", + "depends_on": "IDF_TARGET_ESP32 && IDF_TARGET_ESP32", "help": "Some ESP32s have Vref burned into eFuse BLOCK0. This option will allow\nthe ADC calibration component to characterize the ADC-Voltage curve using\neFuse Vref if it is available.", "id": "ADC_CALI_EFUSE_VREF_ENABLE", "name": "ADC_CALI_EFUSE_VREF_ENABLE", @@ -17389,7 +17379,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32", + "depends_on": "IDF_TARGET_ESP32 && IDF_TARGET_ESP32", "help": "This option will allow the ADC calibration component to use Lookup Tables\nto correct for non-linear behavior in 11db attenuation. Other attenuations\ndo not exhibit non-linear behavior hence will not be affected by this option.", "id": "ADC_CALI_LUT_ENABLE", "name": "ADC_CALI_LUT_ENABLE", @@ -17700,7 +17690,7 @@ "children": [ { "children": [], - "depends_on": "SOC_ANA_CMPR_SUPPORTED", + "depends_on": "SOC_ANA_CMPR_SUPPORTED && SOC_ANA_CMPR_SUPPORTED", "help": "Place Analog Comparator ISR handler in IRAM to reduce latency caused by cache miss.", "id": "ANA_CMPR_ISR_HANDLER_IN_IRAM", "name": "ANA_CMPR_ISR_HANDLER_IN_IRAM", @@ -17710,7 +17700,7 @@ }, { "children": [], - "depends_on": "SOC_ANA_CMPR_SUPPORTED", + "depends_on": "SOC_ANA_CMPR_SUPPORTED && SOC_ANA_CMPR_SUPPORTED", "help": "Place Analog Comparator control functions (like ana_cmpr_set_internal_reference) into IRAM,\nso that these functions can be IRAM-safe and able to be called in an IRAM interrupt context.\nEnabling this option can improve driver performance as well.", "id": "ANA_CMPR_CTRL_FUNC_IN_IRAM", "name": "ANA_CMPR_CTRL_FUNC_IN_IRAM", @@ -17720,7 +17710,7 @@ }, { "children": [], - "depends_on": "SOC_ANA_CMPR_SUPPORTED", + "depends_on": "SOC_ANA_CMPR_SUPPORTED && SOC_ANA_CMPR_SUPPORTED", "help": "Enable this option to allow the Analog Comparator Interrupt Service Routine (ISR)\nto execute even when the cache is disabled. This can be useful in scenarios where the cache\nmight be turned off, but the comparator functionality is still required to operate correctly.", "id": "ANA_CMPR_ISR_CACHE_SAFE", "name": "ANA_CMPR_ISR_CACHE_SAFE", @@ -17730,7 +17720,7 @@ }, { "children": [], - "depends_on": "SOC_ANA_CMPR_SUPPORTED", + "depends_on": "SOC_ANA_CMPR_SUPPORTED && SOC_ANA_CMPR_SUPPORTED", "help": "This will ensure the driver object will not be allocated from a memory region\nwhere its cache can be disabled.", "id": "ANA_CMPR_OBJ_CACHE_SAFE", "name": "ANA_CMPR_OBJ_CACHE_SAFE", @@ -17740,7 +17730,7 @@ }, { "children": [], - "depends_on": "SOC_ANA_CMPR_SUPPORTED", + "depends_on": "SOC_ANA_CMPR_SUPPORTED && SOC_ANA_CMPR_SUPPORTED", "help": "If enabled, the driver component will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option by caution, as it will increase the binary size.", "id": "ANA_CMPR_ENABLE_DEBUG_LOG", "name": "ANA_CMPR_ENABLE_DEBUG_LOG", @@ -17758,7 +17748,7 @@ "children": [ { "children": [], - "depends_on": "SOC_BITSCRAMBLER_SUPPORTED", + "depends_on": "SOC_BITSCRAMBLER_SUPPORTED && SOC_BITSCRAMBLER_SUPPORTED", "help": "Place BitScrambler control functions into IRAM for better performance and fewer cache misses.", "id": "BITSCRAMBLER_CTRL_FUNC_IN_IRAM", "name": "BITSCRAMBLER_CTRL_FUNC_IN_IRAM", @@ -17768,7 +17758,7 @@ }, { "children": [], - "depends_on": "SOC_BITSCRAMBLER_SUPPORTED", + "depends_on": "SOC_BITSCRAMBLER_SUPPORTED && SOC_BITSCRAMBLER_SUPPORTED", "help": "This will ensure the BitScrambler object will not be allocated from a memory region\nwhere its cache can be disabled.", "id": "BITSCRAMBLER_OBJ_CACHE_SAFE", "name": "BITSCRAMBLER_OBJ_CACHE_SAFE", @@ -17786,7 +17776,7 @@ "children": [ { "children": [], - "depends_on": "SOC_MIPI_CSI_SUPPORTED && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED)", + "depends_on": "SOC_MIPI_CSI_SUPPORTED && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED) && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED)", "help": "Ensure the CSI driver ISR is Cache-Safe. When enabled, the ISR handler\nwill be available when the cache is disabled.", "id": "CAM_CTLR_MIPI_CSI_ISR_CACHE_SAFE", "name": "CAM_CTLR_MIPI_CSI_ISR_CACHE_SAFE", @@ -17796,7 +17786,7 @@ }, { "children": [], - "depends_on": "SOC_ISP_DVP_SUPPORTED && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED)", + "depends_on": "SOC_ISP_DVP_SUPPORTED && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED) && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED)", "help": "Ensure the ISP_DVP driver ISR is Cache-Safe. When enabled, the ISR handler\nwill be available when the cache is disabled.", "id": "CAM_CTLR_ISP_DVP_ISR_CACHE_SAFE", "name": "CAM_CTLR_ISP_DVP_ISR_CACHE_SAFE", @@ -17806,7 +17796,7 @@ }, { "children": [], - "depends_on": "SOC_LCDCAM_CAM_SUPPORTED && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED)", + "depends_on": "SOC_LCDCAM_CAM_SUPPORTED && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED) && (SOC_MIPI_CSI_SUPPORTED || SOC_ISP_DVP_SUPPORTED || SOC_LCDCAM_CAM_SUPPORTED)", "help": "Ensure the DVP driver ISR is Cache-Safe. When enabled, the ISR handler\nwill be available when the cache is disabled.", "id": "CAM_CTLR_DVP_CAM_ISR_CACHE_SAFE", "name": "CAM_CTLR_DVP_CAM_ISR_CACHE_SAFE", @@ -17824,7 +17814,7 @@ "children": [ { "children": [], - "depends_on": "SOC_DAC_SUPPORTED", + "depends_on": "SOC_DAC_SUPPORTED && SOC_DAC_SUPPORTED", "help": "Place DAC control functions (e.g. 'dac_oneshot_output_voltage') into IRAM,\nso that this function can be IRAM-safe and able to be called in the other IRAM interrupt context.\nEnabling this option can improve driver performance as well.", "id": "DAC_CTRL_FUNC_IN_IRAM", "name": "DAC_CTRL_FUNC_IN_IRAM", @@ -17834,7 +17824,7 @@ }, { "children": [], - "depends_on": "SOC_DAC_SUPPORTED", + "depends_on": "SOC_DAC_SUPPORTED && SOC_DAC_SUPPORTED", "help": "Ensure the DAC interrupt is IRAM-Safe by allowing the interrupt handler to be\nexecutable when the cache is disabled (e.g. SPI Flash write).", "id": "DAC_ISR_IRAM_SAFE", "name": "DAC_ISR_IRAM_SAFE", @@ -17844,7 +17834,7 @@ }, { "children": [], - "depends_on": "SOC_DAC_SUPPORTED", + "depends_on": "SOC_DAC_SUPPORTED && SOC_DAC_SUPPORTED", "help": "whether to enable the debug log message for DAC driver.\nNote that, this option only controls the DAC driver log, won't affect other drivers.", "id": "DAC_ENABLE_DEBUG_LOG", "name": "DAC_ENABLE_DEBUG_LOG", @@ -17854,7 +17844,7 @@ }, { "children": [], - "depends_on": "SOC_DAC_DMA_16BIT_ALIGN && SOC_DAC_SUPPORTED", + "depends_on": "SOC_DAC_DMA_16BIT_ALIGN && SOC_DAC_SUPPORTED && SOC_DAC_SUPPORTED", "help": "Whether to left shift the continuous data to align every bytes to 16 bits in the driver.\nOn ESP32, although the DAC resolution is only 8 bits,\nthe hardware requires 16 bits data in continuous mode.\nBy enabling this option, the driver will left shift 8 bits for the input data automatically.\nOnly disable this option when you decide to do this step by yourself.\nNote that the driver will allocate a new piece of memory to save the converted data.", "id": "DAC_DMA_AUTO_16BIT_ALIGN", "name": "DAC_DMA_AUTO_16BIT_ALIGN", @@ -17890,7 +17880,7 @@ "children": [ { "children": [], - "depends_on": "SOC_GPTIMER_SUPPORTED", + "depends_on": "SOC_GPTIMER_SUPPORTED && SOC_GPTIMER_SUPPORTED", "help": "Place GPTimer ISR handler in IRAM to reduce latency caused by cache miss.", "id": "GPTIMER_ISR_HANDLER_IN_IRAM", "name": "GPTIMER_ISR_HANDLER_IN_IRAM", @@ -17900,7 +17890,7 @@ }, { "children": [], - "depends_on": "SOC_GPTIMER_SUPPORTED", + "depends_on": "SOC_GPTIMER_SUPPORTED && SOC_GPTIMER_SUPPORTED", "help": "Place GPTimer control functions (like start/stop) in IRAM, to reduce latency caused by cache miss.\nIf enabled, these functions can also be called when cache is disabled.", "id": "GPTIMER_CTRL_FUNC_IN_IRAM", "name": "GPTIMER_CTRL_FUNC_IN_IRAM", @@ -17910,7 +17900,7 @@ }, { "children": [], - "depends_on": "SOC_GPTIMER_SUPPORTED", + "depends_on": "SOC_GPTIMER_SUPPORTED && SOC_GPTIMER_SUPPORTED", "help": "Enable this option to allow the GPTimer Interrupt Service Routine (ISR)\nto execute even when the cache is disabled. This can be useful in scenarios where the cache\nmight be turned off, but the GPTimer functionality is still required to operate correctly.", "id": "GPTIMER_ISR_CACHE_SAFE", "name": "GPTIMER_ISR_CACHE_SAFE", @@ -17920,7 +17910,7 @@ }, { "children": [], - "depends_on": "SOC_GPTIMER_SUPPORTED", + "depends_on": "SOC_GPTIMER_SUPPORTED && SOC_GPTIMER_SUPPORTED", "help": "This will ensure the GPTimer object will not be allocated from a memory region\nwhere its cache can be disabled.", "id": "GPTIMER_OBJ_CACHE_SAFE", "name": "GPTIMER_OBJ_CACHE_SAFE", @@ -17930,7 +17920,7 @@ }, { "children": [], - "depends_on": "SOC_GPTIMER_SUPPORTED", + "depends_on": "SOC_GPTIMER_SUPPORTED && SOC_GPTIMER_SUPPORTED", "help": "If enabled, GPTimer component will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option by caution, as it will increase the binary size.", "id": "GPTIMER_ENABLE_DEBUG_LOG", "name": "GPTIMER_ENABLE_DEBUG_LOG", @@ -17948,7 +17938,7 @@ "children": [ { "children": [], - "depends_on": "SOC_I2C_SUPPORTED", + "depends_on": "SOC_I2C_SUPPORTED && SOC_I2C_SUPPORTED", "help": "Ensure the I2C interrupt is IRAM-Safe by allowing the interrupt handler to be\nexecutable when the cache is disabled (e.g. SPI Flash write).\nnote: This cannot be used in the I2C legacy driver.", "id": "I2C_ISR_IRAM_SAFE", "name": "I2C_ISR_IRAM_SAFE", @@ -17958,7 +17948,7 @@ }, { "children": [], - "depends_on": "SOC_I2C_SUPPORTED", + "depends_on": "SOC_I2C_SUPPORTED && SOC_I2C_SUPPORTED", "help": "whether to enable the debug log message for I2C driver.\nNote that this option only controls the I2C driver log, will not affect other drivers.\n\nnote: This cannot be used in the I2C legacy driver.", "id": "I2C_ENABLE_DEBUG_LOG", "name": "I2C_ENABLE_DEBUG_LOG", @@ -17968,7 +17958,7 @@ }, { "children": [], - "depends_on": "SOC_I2C_SUPPORTED", + "depends_on": "SOC_I2C_SUPPORTED && SOC_I2C_SUPPORTED", "help": "Place I2C master ISR handler into IRAM for better performance and fewer cache misses.", "id": "I2C_MASTER_ISR_HANDLER_IN_IRAM", "name": "I2C_MASTER_ISR_HANDLER_IN_IRAM", @@ -17986,7 +17976,7 @@ "children": [ { "children": [], - "depends_on": "SOC_I2S_SUPPORTED", + "depends_on": "SOC_I2S_SUPPORTED && SOC_I2S_SUPPORTED", "help": "Ensure the I2S interrupt is IRAM-Safe by allowing the interrupt handler to be\nexecutable when the cache is disabled (e.g. SPI Flash write).", "id": "I2S_ISR_IRAM_SAFE", "name": "I2S_ISR_IRAM_SAFE", @@ -17996,7 +17986,7 @@ }, { "children": [], - "depends_on": "SOC_I2S_SUPPORTED", + "depends_on": "SOC_I2S_SUPPORTED && SOC_I2S_SUPPORTED", "help": "Place I2S control functions into IRAM,\nso that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.", "id": "I2S_CTRL_FUNC_IN_IRAM", "name": "I2S_CTRL_FUNC_IN_IRAM", @@ -18006,7 +17996,7 @@ }, { "children": [], - "depends_on": "SOC_I2S_SUPPORTED", + "depends_on": "SOC_I2S_SUPPORTED && SOC_I2S_SUPPORTED", "help": "whether to enable the debug log message for I2S driver.\nNote that, this option only controls the I2S driver log, will not affect other drivers.", "id": "I2S_ENABLE_DEBUG_LOG", "name": "I2S_ENABLE_DEBUG_LOG", @@ -18072,7 +18062,7 @@ "children": [ { "children": [], - "depends_on": "SOC_ISP_SUPPORTED", + "depends_on": "SOC_ISP_SUPPORTED && SOC_ISP_SUPPORTED", "help": "Ensure the ISP driver ISR is IRAM-Safe. When enabled, the ISR handler\nwill be available when the cache is disabled.", "id": "ISP_ISR_IRAM_SAFE", "name": "ISP_ISR_IRAM_SAFE", @@ -18082,7 +18072,7 @@ }, { "children": [], - "depends_on": "SOC_ISP_SUPPORTED", + "depends_on": "SOC_ISP_SUPPORTED && SOC_ISP_SUPPORTED", "help": "Place ISP control functions into IRAM,\nso that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.\nEnabling this option can improve driver performance as well.\n\nFunction list:\n- `esp_isp_sharpen_configure`", "id": "ISP_CTRL_FUNC_IN_IRAM", "name": "ISP_CTRL_FUNC_IN_IRAM", @@ -18100,7 +18090,7 @@ "children": [ { "children": [], - "depends_on": "SOC_JPEG_CODEC_SUPPORTED", + "depends_on": "SOC_JPEG_CODEC_SUPPORTED && SOC_JPEG_CODEC_SUPPORTED", "help": "whether to enable the debug log message for JPEG driver.\nNote that, this option only controls the JPEG driver log, won't affect other drivers.\nPlease also note, enable this option will make jpeg codec process speed much slower.", "id": "JPEG_ENABLE_DEBUG_LOG", "name": "JPEG_ENABLE_DEBUG_LOG", @@ -18136,7 +18126,7 @@ "children": [ { "children": [], - "depends_on": "SOC_MCPWM_SUPPORTED", + "depends_on": "SOC_MCPWM_SUPPORTED && SOC_MCPWM_SUPPORTED", "help": "Place MCPWM ISR handler(s) in IRAM to reduce latency caused by cache miss.", "id": "MCPWM_ISR_HANDLER_IN_IRAM", "name": "MCPWM_ISR_HANDLER_IN_IRAM", @@ -18146,7 +18136,7 @@ }, { "children": [], - "depends_on": "SOC_MCPWM_SUPPORTED", + "depends_on": "SOC_MCPWM_SUPPORTED && SOC_MCPWM_SUPPORTED", "help": "Enable this option to allow the MCPWM Interrupt Service Routine (ISR)\nto execute even when the cache is disabled. This can be useful in scenarios where the cache\nmight be turned off, but the MCPWM functionality is still required to operate correctly.", "id": "MCPWM_ISR_CACHE_SAFE", "name": "MCPWM_ISR_CACHE_SAFE", @@ -18156,7 +18146,7 @@ }, { "children": [], - "depends_on": "SOC_MCPWM_SUPPORTED", + "depends_on": "SOC_MCPWM_SUPPORTED && SOC_MCPWM_SUPPORTED", "help": "Place MCPWM control functions in IRAM, to reduce latency caused by cache miss.\nIf enabled, these functions can also be called when cache is disabled.", "id": "MCPWM_CTRL_FUNC_IN_IRAM", "name": "MCPWM_CTRL_FUNC_IN_IRAM", @@ -18166,7 +18156,7 @@ }, { "children": [], - "depends_on": "SOC_MCPWM_SUPPORTED", + "depends_on": "SOC_MCPWM_SUPPORTED && SOC_MCPWM_SUPPORTED", "help": "This will ensure the MCPWM object will not be allocated from a memory region\nwhere its cache can be disabled.", "id": "MCPWM_OBJ_CACHE_SAFE", "name": "MCPWM_OBJ_CACHE_SAFE", @@ -18176,7 +18166,7 @@ }, { "children": [], - "depends_on": "SOC_MCPWM_SUPPORTED", + "depends_on": "SOC_MCPWM_SUPPORTED && SOC_MCPWM_SUPPORTED", "help": "If enabled, MCPWM component will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option with caution, as it will increase the binary size.", "id": "MCPWM_ENABLE_DEBUG_LOG", "name": "MCPWM_ENABLE_DEBUG_LOG", @@ -18194,7 +18184,7 @@ "children": [ { "children": [], - "depends_on": "SOC_PARLIO_SUPPORTED", + "depends_on": "SOC_PARLIO_SUPPORTED && SOC_PARLIO_SUPPORTED", "help": "Place Parallel IO TX ISR handler in IRAM to reduce latency caused by cache miss.", "id": "PARLIO_TX_ISR_HANDLER_IN_IRAM", "name": "PARLIO_TX_ISR_HANDLER_IN_IRAM", @@ -18204,7 +18194,7 @@ }, { "children": [], - "depends_on": "SOC_PARLIO_SUPPORTED", + "depends_on": "SOC_PARLIO_SUPPORTED && SOC_PARLIO_SUPPORTED", "help": "Place Parallel IO RX ISR handler in IRAM to reduce latency caused by cache miss.", "id": "PARLIO_RX_ISR_HANDLER_IN_IRAM", "name": "PARLIO_RX_ISR_HANDLER_IN_IRAM", @@ -18214,7 +18204,7 @@ }, { "children": [], - "depends_on": "SOC_PARLIO_SUPPORTED", + "depends_on": "SOC_PARLIO_SUPPORTED && SOC_PARLIO_SUPPORTED", "help": "Enable this option to allow the Parallel IO TX Interrupt Service Routine (ISR)\nto execute even when the cache is disabled. This can be useful in scenarios where the cache\nmight be turned off, but the Parallel IO TX functionality is still required to operate correctly.", "id": "PARLIO_TX_ISR_CACHE_SAFE", "name": "PARLIO_TX_ISR_CACHE_SAFE", @@ -18224,7 +18214,7 @@ }, { "children": [], - "depends_on": "SOC_PARLIO_SUPPORTED", + "depends_on": "SOC_PARLIO_SUPPORTED && SOC_PARLIO_SUPPORTED", "help": "Enable this option to allow the Parallel IO RX Interrupt Service Routine (ISR)\nto execute even when the cache is disabled. This can be useful in scenarios where the cache\nmight be turned off, but the Parallel IO RX functionality is still required to operate correctly.", "id": "PARLIO_RX_ISR_CACHE_SAFE", "name": "PARLIO_RX_ISR_CACHE_SAFE", @@ -18234,7 +18224,7 @@ }, { "children": [], - "depends_on": "SOC_PARLIO_SUPPORTED", + "depends_on": "SOC_PARLIO_SUPPORTED && SOC_PARLIO_SUPPORTED", "help": "This will ensure the driver object will not be allocated from a memory region\nwhere its cache can be disabled.", "id": "PARLIO_OBJ_CACHE_SAFE", "name": "PARLIO_OBJ_CACHE_SAFE", @@ -18244,7 +18234,7 @@ }, { "children": [], - "depends_on": "SOC_PARLIO_SUPPORTED", + "depends_on": "SOC_PARLIO_SUPPORTED && SOC_PARLIO_SUPPORTED", "help": "If enabled, Parallel IO driver component will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option by caution, as it will increase the binary size.", "id": "PARLIO_ENABLE_DEBUG_LOG", "name": "PARLIO_ENABLE_DEBUG_LOG", @@ -18254,7 +18244,7 @@ }, { "children": [], - "depends_on": "SOC_PARLIO_SUPPORTED", + "depends_on": "SOC_PARLIO_SUPPORTED && SOC_PARLIO_SUPPORTED", "help": "Ensure the Parallel IO interrupt is IRAM-Safe by allowing the interrupt handler to be\nexecutable when the cache is disabled (e.g. SPI Flash write).", "id": "PARLIO_ISR_IRAM_SAFE", "name": "PARLIO_ISR_IRAM_SAFE", @@ -18272,7 +18262,7 @@ "children": [ { "children": [], - "depends_on": "SOC_PCNT_SUPPORTED", + "depends_on": "SOC_PCNT_SUPPORTED && SOC_PCNT_SUPPORTED", "help": "Place PCNT control functions (like start/stop) into IRAM,\nso that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.\nEnabling this option can improve driver performance as well.", "id": "PCNT_CTRL_FUNC_IN_IRAM", "name": "PCNT_CTRL_FUNC_IN_IRAM", @@ -18282,7 +18272,7 @@ }, { "children": [], - "depends_on": "SOC_PCNT_SUPPORTED", + "depends_on": "SOC_PCNT_SUPPORTED && SOC_PCNT_SUPPORTED", "help": "Ensure the PCNT interrupt is IRAM-Safe by allowing the interrupt handler to be\nexecutable when the cache is disabled (e.g. SPI Flash write).", "id": "PCNT_ISR_IRAM_SAFE", "name": "PCNT_ISR_IRAM_SAFE", @@ -18292,7 +18282,7 @@ }, { "children": [], - "depends_on": "SOC_PCNT_SUPPORTED", + "depends_on": "SOC_PCNT_SUPPORTED && SOC_PCNT_SUPPORTED", "help": "whether to enable the debug log message for PCNT driver.\nNote that, this option only controls the PCNT driver log, won't affect other drivers.", "id": "PCNT_ENABLE_DEBUG_LOG", "name": "PCNT_ENABLE_DEBUG_LOG", @@ -18310,7 +18300,7 @@ "children": [ { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "Place RMT encoder function into IRAM for better performance and fewer cache misses.", "id": "RMT_ENCODER_FUNC_IN_IRAM", "name": "RMT_ENCODER_FUNC_IN_IRAM", @@ -18320,7 +18310,7 @@ }, { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "Place RMT TX ISR handler in IRAM to reduce latency caused by cache miss.", "id": "RMT_TX_ISR_HANDLER_IN_IRAM", "name": "RMT_TX_ISR_HANDLER_IN_IRAM", @@ -18330,7 +18320,7 @@ }, { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "Place RMT RX ISR handler in IRAM to reduce latency caused by cache miss.", "id": "RMT_RX_ISR_HANDLER_IN_IRAM", "name": "RMT_RX_ISR_HANDLER_IN_IRAM", @@ -18340,7 +18330,7 @@ }, { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "Place RMT receive function into IRAM for better performance and fewer cache misses.", "id": "RMT_RECV_FUNC_IN_IRAM", "name": "RMT_RECV_FUNC_IN_IRAM", @@ -18350,7 +18340,7 @@ }, { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "Enable this option to allow the RMT TX Interrupt Service Routine (ISR)\nto execute even when the cache is disabled. This can be useful in scenarios where the cache\nmight be turned off, but the RMT TX functionality is still required to operate correctly.", "id": "RMT_TX_ISR_CACHE_SAFE", "name": "RMT_TX_ISR_CACHE_SAFE", @@ -18360,7 +18350,7 @@ }, { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "Enable this option to allow the RMT RX Interrupt Service Routine (ISR)\nto execute even when the cache is disabled. This can be useful in scenarios where the cache\nmight be turned off, but the RMT RX functionality is still required to operate correctly.", "id": "RMT_RX_ISR_CACHE_SAFE", "name": "RMT_RX_ISR_CACHE_SAFE", @@ -18370,7 +18360,7 @@ }, { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "This will ensure the RMT object will not be allocated from a memory region\nwhere its cache can be disabled.", "id": "RMT_OBJ_CACHE_SAFE", "name": "RMT_OBJ_CACHE_SAFE", @@ -18380,7 +18370,7 @@ }, { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "If enabled, RMT driver component will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option by caution, as it will increase the binary size.", "id": "RMT_ENABLE_DEBUG_LOG", "name": "RMT_ENABLE_DEBUG_LOG", @@ -18390,7 +18380,7 @@ }, { "children": [], - "depends_on": "SOC_RMT_SUPPORTED", + "depends_on": "SOC_RMT_SUPPORTED && SOC_RMT_SUPPORTED", "help": "Ensure the RMT interrupt is IRAM-Safe by allowing the interrupt handler to be\nexecutable when the cache is disabled (e.g. SPI Flash write).", "id": "RMT_ISR_IRAM_SAFE", "name": "RMT_ISR_IRAM_SAFE", @@ -18408,7 +18398,7 @@ "children": [ { "children": [], - "depends_on": "SOC_SDM_SUPPORTED", + "depends_on": "SOC_SDM_SUPPORTED && SOC_SDM_SUPPORTED", "help": "Place SDM control functions (like set_pulse_density) into IRAM,\nso that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.\nEnabling this option can improve driver performance as well.", "id": "SDM_CTRL_FUNC_IN_IRAM", "name": "SDM_CTRL_FUNC_IN_IRAM", @@ -18418,7 +18408,7 @@ }, { "children": [], - "depends_on": "SOC_SDM_SUPPORTED", + "depends_on": "SOC_SDM_SUPPORTED && SOC_SDM_SUPPORTED", "help": "This will ensure the SDM object will not be allocated from a memory region\nwhere its cache can be disabled.", "id": "SDM_OBJ_CACHE_SAFE", "name": "SDM_OBJ_CACHE_SAFE", @@ -18428,7 +18418,7 @@ }, { "children": [], - "depends_on": "SOC_SDM_SUPPORTED", + "depends_on": "SOC_SDM_SUPPORTED && SOC_SDM_SUPPORTED", "help": "If enabled, SDM driver will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option by caution, as it will increase the binary size.", "id": "SDM_ENABLE_DEBUG_LOG", "name": "SDM_ENABLE_DEBUG_LOG", @@ -18446,7 +18436,7 @@ "children": [ { "children": [], - "depends_on": "SOC_SDMMC_HOST_SUPPORTED", + "depends_on": "SOC_SDMMC_HOST_SUPPORTED && SOC_SDMMC_HOST_SUPPORTED", "help": "Ensure the SD Host SDMMC driver ISR is Cache-Safe. When enabled,\nthe ISR handler will be available when the cache is disabled.", "id": "SD_HOST_SDMMC_ISR_CACHE_SAFE", "name": "SD_HOST_SDMMC_ISR_CACHE_SAFE", @@ -18464,7 +18454,7 @@ "children": [ { "children": [], - "depends_on": "FREERTOS_IN_IRAM && SOC_GPSPI_SUPPORTED", + "depends_on": "FREERTOS_IN_IRAM && SOC_GPSPI_SUPPORTED && SOC_GPSPI_SUPPORTED", "help": "Normally only the ISR of SPI master is placed in the IRAM, so that it\ncan work without the flash when interrupt is triggered.\nFor other functions, there's some possibility that the flash cache\nmiss when running inside and out of SPI functions, which may increase\nthe interval of SPI transactions.\nEnable this to put ``queue_trans``, ``get_trans_result`` and\n``transmit`` functions into the IRAM to avoid possible cache miss.\n\nThis configuration won't be available if `CONFIG_FREERTOS_IN_IRAM` is disabled.\n\nDuring unit test, this is enabled to measure the ideal case of api.", "id": "SPI_MASTER_IN_IRAM", "name": "SPI_MASTER_IN_IRAM", @@ -18474,7 +18464,7 @@ }, { "children": [], - "depends_on": "!HEAP_PLACE_FUNCTION_INTO_FLASH && SOC_GPSPI_SUPPORTED", + "depends_on": "!HEAP_PLACE_FUNCTION_INTO_FLASH && SOC_GPSPI_SUPPORTED && SOC_GPSPI_SUPPORTED", "help": "Place the SPI master ISR in to IRAM to avoid possible cache miss.\n\nEnabling this configuration is possible only when HEAP_PLACE_FUNCTION_INTO_FLASH\nis disabled since the spi master uses can allocate transactions buffers into DMA\nmemory section using the heap component API that ipso facto has to be placed in IRAM.\n\nAlso you can forbid the ISR being disabled during flash writing\naccess, by add ESP_INTR_FLAG_IRAM when initializing the driver.", "id": "SPI_MASTER_ISR_IN_IRAM", "name": "SPI_MASTER_ISR_IN_IRAM", @@ -18484,7 +18474,7 @@ }, { "children": [], - "depends_on": "SOC_GPSPI_SUPPORTED", + "depends_on": "SOC_GPSPI_SUPPORTED && SOC_GPSPI_SUPPORTED", "help": "Normally only the ISR of SPI slave is placed in the IRAM, so that it\ncan work without the flash when interrupt is triggered.\nFor other functions, there's some possibility that the flash cache\nmiss when running inside and out of SPI functions, which may increase\nthe interval of SPI transactions.\nEnable this to put ``queue_trans``, ``get_trans_result`` and\n``transmit`` functions into the IRAM to avoid possible cache miss.", "id": "SPI_SLAVE_IN_IRAM", "name": "SPI_SLAVE_IN_IRAM", @@ -18494,7 +18484,7 @@ }, { "children": [], - "depends_on": "SOC_GPSPI_SUPPORTED", + "depends_on": "SOC_GPSPI_SUPPORTED && SOC_GPSPI_SUPPORTED", "help": "Place the SPI slave ISR in to IRAM to avoid possible cache miss.\n\nAlso you can forbid the ISR being disabled during flash writing\naccess, by add ESP_INTR_FLAG_IRAM when initializing the driver.", "id": "SPI_SLAVE_ISR_IN_IRAM", "name": "SPI_SLAVE_ISR_IN_IRAM", @@ -18512,7 +18502,7 @@ "children": [ { "children": [], - "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED", + "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED && SOC_TOUCH_SENSOR_SUPPORTED", "help": "Place touch sensor oneshot scanning and continuous scanning functions into IRAM,\nso that these function can be IRAM-safe and able to be called when the flash cache is disabled.\nEnabling this option can improve driver performance as well.", "id": "TOUCH_CTRL_FUNC_IN_IRAM", "name": "TOUCH_CTRL_FUNC_IN_IRAM", @@ -18522,7 +18512,7 @@ }, { "children": [], - "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED", + "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED && SOC_TOUCH_SENSOR_SUPPORTED", "help": "Ensure the touch sensor interrupt is IRAM-Safe by allowing the interrupt handler to be\nexecutable when the cache is disabled (e.g. SPI Flash write).", "id": "TOUCH_ISR_IRAM_SAFE", "name": "TOUCH_ISR_IRAM_SAFE", @@ -18532,7 +18522,7 @@ }, { "children": [], - "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED", + "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED && SOC_TOUCH_SENSOR_SUPPORTED", "help": "Whether to enable the debug log message for touch driver.\nNote that, this option only controls the touch driver log, won't affect other drivers.", "id": "TOUCH_ENABLE_DEBUG_LOG", "name": "TOUCH_ENABLE_DEBUG_LOG", @@ -18542,7 +18532,7 @@ }, { "children": [], - "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED", + "depends_on": "SOC_TOUCH_SENSOR_SUPPORTED && SOC_TOUCH_SENSOR_SUPPORTED", "help": "If skipped the FSM check, the driver will allow to re-configure the touch sensor during the runtime.\nIt is mainly used to tune the parameters in the runtime to find a proper set of touch parameters.\nCAUTION: Not suggest to enable this option in the final product, it might cause false triggering\nwhich is not safe in the actual environment.", "id": "TOUCH_SKIP_FSM_CHECK", "name": "TOUCH_SKIP_FSM_CHECK", @@ -18560,7 +18550,7 @@ "children": [ { "children": [], - "depends_on": "SOC_TEMP_SENSOR_SUPPORTED", + "depends_on": "SOC_TEMP_SENSOR_SUPPORTED && SOC_TEMP_SENSOR_SUPPORTED", "help": "whether to enable the debug log message for temperature sensor driver.\nNote that, this option only controls the temperature sensor driver log, won't affect other drivers.", "id": "TEMP_SENSOR_ENABLE_DEBUG_LOG", "name": "TEMP_SENSOR_ENABLE_DEBUG_LOG", @@ -18570,7 +18560,7 @@ }, { "children": [], - "depends_on": "SOC_TEMPERATURE_SENSOR_INTR_SUPPORT && SOC_TEMP_SENSOR_SUPPORTED", + "depends_on": "SOC_TEMPERATURE_SENSOR_INTR_SUPPORT && SOC_TEMP_SENSOR_SUPPORTED && SOC_TEMP_SENSOR_SUPPORTED", "help": "Ensure the Temperature Sensor interrupt is IRAM-Safe by allowing the interrupt handler to be\nexecutable when the cache is disabled (e.g. SPI Flash write).", "id": "TEMP_SENSOR_ISR_IRAM_SAFE", "name": "TEMP_SENSOR_ISR_IRAM_SAFE", @@ -18588,7 +18578,7 @@ "children": [ { "children": [], - "depends_on": "SOC_TWAI_SUPPORTED", + "depends_on": "SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "Place the TWAI ISR in to IRAM to reduce latency and increase performance", "id": "TWAI_ISR_IN_IRAM", "name": "TWAI_ISR_IN_IRAM", @@ -18598,7 +18588,7 @@ }, { "children": [], - "depends_on": "SOC_TWAI_SUPPORTED", + "depends_on": "SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "Place certain TWAI I/O functions (like twai_transmit) in IRAM to reduce latency", "id": "TWAI_IO_FUNC_IN_IRAM", "name": "TWAI_IO_FUNC_IN_IRAM", @@ -18608,7 +18598,7 @@ }, { "children": [], - "depends_on": "SOC_TWAI_SUPPORTED", + "depends_on": "SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "Allow TWAI works under Cache disabled (such as when writing to SPI Flash),\nto enabled this config, all callbacks and user_ctx should also place in IRAM", "id": "TWAI_ISR_CACHE_SAFE", "name": "TWAI_ISR_CACHE_SAFE", @@ -18618,7 +18608,7 @@ }, { "children": [], - "depends_on": "SOC_TWAI_SUPPORTED", + "depends_on": "SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "This will ensure the TWAI driver object will not be allocated from a memory region\nwhere its cache can be disabled.", "id": "TWAI_OBJ_CACHE_SAFE", "name": "TWAI_OBJ_CACHE_SAFE", @@ -18628,7 +18618,7 @@ }, { "children": [], - "depends_on": "SOC_TWAI_SUPPORTED", + "depends_on": "SOC_TWAI_SUPPORTED && SOC_TWAI_SUPPORTED", "help": "If enabled, TWAI driver component will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option by caution, as it will increase the binary size.", "id": "TWAI_ENABLE_DEBUG_LOG", "name": "TWAI_ENABLE_DEBUG_LOG", @@ -18713,7 +18703,7 @@ "type": "bool" } ], - "depends_on": "SOC_USB_SERIAL_JTAG_SUPPORTED", + "depends_on": "SOC_USB_SERIAL_JTAG_SUPPORTED && SOC_USB_SERIAL_JTAG_SUPPORTED", "help": "The USB-Serial-JTAG module on ESP chips is turned on by default after power-on.\nIf your application does not need it and not rely on it to be used as system\nconsole or use the built-in JTAG for debugging, you can disable this option,\nthen the clock of this module will be disabled at startup, which will save\nsome power consumption.\nNote: This will disable USB-Serial-JTAG only in the application; it will still be enabled during\nthe bootloader stage, so you can continue to use it to flash the chip in download mode.\nTo disable it completely, you must burn the EFUSE_DIS_USB_SERIAL_JTAG eFuse.", "id": "USJ_ENABLE_USB_SERIAL_JTAG", "name": "USJ_ENABLE_USB_SERIAL_JTAG", @@ -19276,7 +19266,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP32C3_REV_MIN_0", "name": "ESP32C3_REV_MIN_0", @@ -19286,7 +19276,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP32C3_REV_MIN_1", "name": "ESP32C3_REV_MIN_1", @@ -19296,7 +19286,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP32C3_REV_MIN_2", "name": "ESP32C3_REV_MIN_2", @@ -19306,7 +19296,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP32C3_REV_MIN_3", "name": "ESP32C3_REV_MIN_3", @@ -19316,7 +19306,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP32C3_REV_MIN_4", "name": "ESP32C3_REV_MIN_4", @@ -19326,7 +19316,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP32C3_REV_MIN_101", "name": "ESP32C3_REV_MIN_101", @@ -19514,7 +19504,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP32C3_UNIVERSAL_MAC_ADDRESSES_TWO", "name": "ESP32C3_UNIVERSAL_MAC_ADDRESSES_TWO", @@ -19524,7 +19514,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP32C3_UNIVERSAL_MAC_ADDRESSES_FOUR", "name": "ESP32C3_UNIVERSAL_MAC_ADDRESSES_FOUR", @@ -19703,7 +19693,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "RTC_CLK_SRC_INT_RC", "name": "RTC_CLK_SRC_INT_RC", @@ -19713,7 +19703,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "RTC_CLK_SRC_EXT_CRYS", "name": "RTC_CLK_SRC_EXT_CRYS", @@ -19723,7 +19713,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "RTC_CLK_SRC_EXT_OSC", "name": "RTC_CLK_SRC_EXT_OSC", @@ -19733,7 +19723,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "RTC_CLK_SRC_INT_8MD256", "name": "RTC_CLK_SRC_INT_8MD256", @@ -19800,7 +19790,7 @@ "children": [ { "children": [], - "depends_on": "SOC_GDMA_SUPPORTED", + "depends_on": "SOC_GDMA_SUPPORTED && SOC_GDMA_SUPPORTED", "help": "Place GDMA control functions (like start/stop/append/reset) into IRAM,\nso that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.", "id": "GDMA_CTRL_FUNC_IN_IRAM", "name": "GDMA_CTRL_FUNC_IN_IRAM", @@ -19810,7 +19800,7 @@ }, { "children": [], - "depends_on": "SOC_GDMA_SUPPORTED", + "depends_on": "SOC_GDMA_SUPPORTED && SOC_GDMA_SUPPORTED", "help": "Place GDMA ISR handler functions in IRAM to reduce latency caused by cache miss.", "id": "GDMA_ISR_HANDLER_IN_IRAM", "name": "GDMA_ISR_HANDLER_IN_IRAM", @@ -19820,7 +19810,7 @@ }, { "children": [], - "depends_on": "SOC_GDMA_SUPPORTED", + "depends_on": "SOC_GDMA_SUPPORTED && SOC_GDMA_SUPPORTED", "help": "This will ensure the GDMA object is DRAM-Safe, allow to avoid external memory\ncache misses, and also be accessible whilst the cache is disabled.", "id": "GDMA_OBJ_DRAM_SAFE", "name": "GDMA_OBJ_DRAM_SAFE", @@ -19830,7 +19820,7 @@ }, { "children": [], - "depends_on": "SOC_GDMA_SUPPORTED", + "depends_on": "SOC_GDMA_SUPPORTED && SOC_GDMA_SUPPORTED", "help": "If enabled, GDMA driver component will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option by caution, as it will increase the binary size.", "id": "GDMA_ENABLE_DEBUG_LOG", "name": "GDMA_ENABLE_DEBUG_LOG", @@ -19840,7 +19830,7 @@ }, { "children": [], - "depends_on": "SOC_GDMA_SUPPORT_WEIGHTED_ARBITRATION && IDF_EXPERIMENTAL_FEATURES && SOC_GDMA_SUPPORTED", + "depends_on": "SOC_GDMA_SUPPORT_WEIGHTED_ARBITRATION && IDF_EXPERIMENTAL_FEATURES && SOC_GDMA_SUPPORTED && SOC_GDMA_SUPPORTED", "help": "Whether to enable the weighted arbitration for GDMA driver.\nThe default weight of each channel is 1. You need to set weight for each channel before transmissions.\nIf this option is enabled, the buffer should be aligned to the burst size.", "id": "GDMA_ENABLE_WEIGHTED_ARBITRATION", "name": "GDMA_ENABLE_WEIGHTED_ARBITRATION", @@ -19858,7 +19848,7 @@ "children": [ { "children": [], - "depends_on": "SOC_DW_GDMA_SUPPORTED", + "depends_on": "SOC_DW_GDMA_SUPPORTED && SOC_DW_GDMA_SUPPORTED", "help": "Place DW_GDMA control functions (e.g. dw_gdma_channel_continue) into IRAM,\nso that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.", "id": "DW_GDMA_CTRL_FUNC_IN_IRAM", "name": "DW_GDMA_CTRL_FUNC_IN_IRAM", @@ -19868,7 +19858,7 @@ }, { "children": [], - "depends_on": "SOC_DW_GDMA_SUPPORTED", + "depends_on": "SOC_DW_GDMA_SUPPORTED && SOC_DW_GDMA_SUPPORTED", "help": "Place DW_GDMA setter functions (e.g. dw_gdma_channel_set_block_markers) into IRAM,\nso that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.", "id": "DW_GDMA_SETTER_FUNC_IN_IRAM", "name": "DW_GDMA_SETTER_FUNC_IN_IRAM", @@ -19878,7 +19868,7 @@ }, { "children": [], - "depends_on": "SOC_DW_GDMA_SUPPORTED", + "depends_on": "SOC_DW_GDMA_SUPPORTED && SOC_DW_GDMA_SUPPORTED", "help": "Place DW_GDMA getter functions (e.g. dw_gdma_link_list_get_item) into IRAM,\nso that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.", "id": "DW_GDMA_GETTER_FUNC_IN_IRAM", "name": "DW_GDMA_GETTER_FUNC_IN_IRAM", @@ -19888,7 +19878,7 @@ }, { "children": [], - "depends_on": "SOC_DW_GDMA_SUPPORTED", + "depends_on": "SOC_DW_GDMA_SUPPORTED && SOC_DW_GDMA_SUPPORTED", "help": "This will ensure the DW_GDMA interrupt handler is IRAM-Safe, allow to avoid flash\ncache misses, and also be able to run whilst the cache is disabled.\n(e.g. SPI Flash write).", "id": "DW_GDMA_ISR_IRAM_SAFE", "name": "DW_GDMA_ISR_IRAM_SAFE", @@ -19898,7 +19888,7 @@ }, { "children": [], - "depends_on": "SOC_DW_GDMA_SUPPORTED", + "depends_on": "SOC_DW_GDMA_SUPPORTED && SOC_DW_GDMA_SUPPORTED", "help": "This will ensure the DW_GDMA object is DRAM-Safe, allow to avoid external memory\ncache misses, and also be accessible whilst the cache is disabled.", "id": "DW_GDMA_OBJ_DRAM_SAFE", "name": "DW_GDMA_OBJ_DRAM_SAFE", @@ -19908,7 +19898,7 @@ }, { "children": [], - "depends_on": "SOC_DW_GDMA_SUPPORTED", + "depends_on": "SOC_DW_GDMA_SUPPORTED && SOC_DW_GDMA_SUPPORTED", "help": "Whether to enable the debug log message for DW_GDMA driver.\nNote that, this option only controls the DW_GDMA driver log, won't affect other drivers.", "id": "DW_GDMA_ENABLE_DEBUG_LOG", "name": "DW_GDMA_ENABLE_DEBUG_LOG", @@ -19926,7 +19916,7 @@ "children": [ { "children": [], - "depends_on": "SOC_DMA2D_SUPPORTED", + "depends_on": "SOC_DMA2D_SUPPORTED && SOC_DMA2D_SUPPORTED", "help": "Place 2D-DMA all operation functions, including control functions (e.g. start/stop/append/reset) and setter\nfunctions (e.g. connect/strategy/callback registration) into IRAM, so that these functions can be IRAM-safe\nand able to be called in the other IRAM interrupt context. It also helps optimizing the performance.", "id": "DMA2D_OPERATION_FUNC_IN_IRAM", "name": "DMA2D_OPERATION_FUNC_IN_IRAM", @@ -19936,7 +19926,7 @@ }, { "children": [], - "depends_on": "SOC_DMA2D_SUPPORTED", + "depends_on": "SOC_DMA2D_SUPPORTED && SOC_DMA2D_SUPPORTED", "help": "This will ensure the 2D-DMA interrupt handler is IRAM-Safe, allow to avoid flash\ncache misses, and also be able to run whilst the cache is disabled.\n(e.g. SPI Flash write).", "id": "DMA2D_ISR_IRAM_SAFE", "name": "DMA2D_ISR_IRAM_SAFE", @@ -19954,7 +19944,7 @@ "children": [ { "children": [], - "depends_on": "SOC_ETM_SUPPORTED", + "depends_on": "SOC_ETM_SUPPORTED && SOC_ETM_SUPPORTED", "help": "If enabled, ETM driver will:\n1. ignore the global logging settings\n2. compile all log messages into the binary\n3. set the runtime log level to VERBOSE\nPlease enable this option by caution, as it will increase the binary size.", "id": "ETM_ENABLE_DEBUG_LOG", "name": "ETM_ENABLE_DEBUG_LOG", @@ -19974,7 +19964,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "XTAL_FREQ_40", "name": "XTAL_FREQ_40", @@ -20273,7 +20263,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_NEWLIB", "name": "LIBC_NEWLIB", @@ -20283,7 +20273,7 @@ }, { "children": [], - "depends_on": "!IDF_TOOLCHAIN_CLANG && IDF_EXPERIMENTAL_FEATURES && ", + "depends_on": "!IDF_TOOLCHAIN_CLANG && IDF_EXPERIMENTAL_FEATURES && && ", "help": null, "id": "LIBC_PICOLIBC", "name": "LIBC_PICOLIBC", @@ -20323,7 +20313,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_STDOUT_LINE_ENDING_CRLF", "name": "LIBC_STDOUT_LINE_ENDING_CRLF", @@ -20333,7 +20323,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_STDOUT_LINE_ENDING_LF", "name": "LIBC_STDOUT_LINE_ENDING_LF", @@ -20343,7 +20333,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_STDOUT_LINE_ENDING_CR", "name": "LIBC_STDOUT_LINE_ENDING_CR", @@ -20363,7 +20353,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_STDIN_LINE_ENDING_CRLF", "name": "LIBC_STDIN_LINE_ENDING_CRLF", @@ -20373,7 +20363,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_STDIN_LINE_ENDING_LF", "name": "LIBC_STDIN_LINE_ENDING_LF", @@ -20383,7 +20373,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_STDIN_LINE_ENDING_CR", "name": "LIBC_STDIN_LINE_ENDING_CR", @@ -20413,7 +20403,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_TIME_SYSCALL_USE_RTC_HRT", "name": "LIBC_TIME_SYSCALL_USE_RTC_HRT", @@ -20423,7 +20413,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_TIME_SYSCALL_USE_RTC", "name": "LIBC_TIME_SYSCALL_USE_RTC", @@ -20433,7 +20423,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_TIME_SYSCALL_USE_HRT", "name": "LIBC_TIME_SYSCALL_USE_HRT", @@ -20443,7 +20433,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LIBC_TIME_SYSCALL_USE_NONE", "name": "LIBC_TIME_SYSCALL_USE_NONE", @@ -20556,7 +20546,7 @@ "children": [ { "children": [], - "depends_on": "LWIP_ENABLE && ", + "depends_on": "LWIP_ENABLE && && ", "help": "lwIP is a small independent implementation of the TCP/IP protocol suite.", "id": "ESP_NETIF_TCPIP_LWIP", "name": "ESP_NETIF_TCPIP_LWIP", @@ -20566,7 +20556,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Dummy implementation of esp-netif functionality which connects driver transmit\nto receive function. This option is for testing purpose only", "id": "ESP_NETIF_LOOPBACK", "name": "ESP_NETIF_LOOPBACK", @@ -20839,7 +20829,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_PHY_RF_CAL_PARTIAL", "name": "ESP_PHY_RF_CAL_PARTIAL", @@ -20849,7 +20839,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_PHY_RF_CAL_NONE", "name": "ESP_PHY_RF_CAL_NONE", @@ -20859,7 +20849,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_PHY_RF_CAL_FULL", "name": "ESP_PHY_RF_CAL_FULL", @@ -21090,7 +21080,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Allocate memory for retention data only when preparing to enter light sleep.", "id": "PM_CPU_RETENTION_DYNAMIC", "name": "PM_CPU_RETENTION_DYNAMIC", @@ -21100,7 +21090,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Pre-allocate all required retention memory during system initialization.", "id": "PM_CPU_RETENTION_STATIC", "name": "PM_CPU_RETENTION_STATIC", @@ -21262,7 +21252,7 @@ "type": "choice" } ], - "depends_on": "SOC_CRYPTO_DPA_PROTECTION_SUPPORTED", + "depends_on": "SOC_CRYPTO_DPA_PROTECTION_SUPPORTED && SOC_CRYPTO_DPA_PROTECTION_SUPPORTED", "help": "This config controls the DPA (Differential Power Analysis) protection\nknob for the crypto peripherals. DPA protection dynamically adjusts\nclock frequency of the crypto peripheral. DPA protection helps to make it\ndifficult to perform SCA attacks on the crypto peripherals. However,\nthere is also associated performance impact based on the security level\nset. Please refer to the TRM for more details.", "id": "ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP", "name": "ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP", @@ -21272,7 +21262,7 @@ }, { "children": [], - "depends_on": "SOC_CRYPTO_DPA_PROTECTION_SUPPORTED", + "depends_on": "SOC_CRYPTO_DPA_PROTECTION_SUPPORTED && SOC_CRYPTO_DPA_PROTECTION_SUPPORTED", "help": null, "id": "ESP_CRYPTO_DPA_PROTECTION_LEVEL", "name": "ESP_CRYPTO_DPA_PROTECTION_LEVEL", @@ -21318,7 +21308,7 @@ "children": [ { "children": [], - "depends_on": "IDF_ENV_FPGA && ", + "depends_on": "IDF_ENV_FPGA && && ", "help": null, "id": "ESP_DEFAULT_CPU_FREQ_MHZ_40", "name": "ESP_DEFAULT_CPU_FREQ_MHZ_40", @@ -21328,7 +21318,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_DEFAULT_CPU_FREQ_MHZ_80", "name": "ESP_DEFAULT_CPU_FREQ_MHZ_80", @@ -21338,7 +21328,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_DEFAULT_CPU_FREQ_MHZ_160", "name": "ESP_DEFAULT_CPU_FREQ_MHZ_160", @@ -21378,7 +21368,7 @@ "children": [ { "children": [], - "depends_on": "!ESP_SYSTEM_GDBSTUB_RUNTIME && ", + "depends_on": "!ESP_SYSTEM_GDBSTUB_RUNTIME && && ", "help": "Outputs the relevant registers over the serial port and halt the\nprocessor. Needs a manual reset to restart.", "id": "ESP_SYSTEM_PANIC_PRINT_HALT", "name": "ESP_SYSTEM_PANIC_PRINT_HALT", @@ -21388,7 +21378,7 @@ }, { "children": [], - "depends_on": "!ESP_SYSTEM_GDBSTUB_RUNTIME && ", + "depends_on": "!ESP_SYSTEM_GDBSTUB_RUNTIME && && ", "help": "Outputs the relevant registers over the serial port and immediately\nreset the processor.", "id": "ESP_SYSTEM_PANIC_PRINT_REBOOT", "name": "ESP_SYSTEM_PANIC_PRINT_REBOOT", @@ -21398,7 +21388,7 @@ }, { "children": [], - "depends_on": "!ESP_SYSTEM_GDBSTUB_RUNTIME && ", + "depends_on": "!ESP_SYSTEM_GDBSTUB_RUNTIME && && ", "help": "Just resets the processor without outputting anything", "id": "ESP_SYSTEM_PANIC_SILENT_REBOOT", "name": "ESP_SYSTEM_PANIC_SILENT_REBOOT", @@ -21408,7 +21398,7 @@ }, { "children": [], - "depends_on": "ESP_GDBSTUB_ENABLED && ", + "depends_on": "ESP_GDBSTUB_ENABLED && && ", "help": "Invoke gdbstub on the serial port, allowing for gdb to attach to it to do a postmortem\nof the crash.", "id": "ESP_SYSTEM_PANIC_GDBSTUB", "name": "ESP_SYSTEM_PANIC_GDBSTUB", @@ -21501,7 +21491,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "When selected, no backtracing will be performed at runtime. By using idf.py monitor, it\nis still possible to get a backtrace when a panic occurs.", "id": "ESP_SYSTEM_NO_BACKTRACE", "name": "ESP_SYSTEM_NO_BACKTRACE", @@ -21511,7 +21501,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Generate DWARF information for each function of the project. These information will parsed and used to\nperform backtracing when panics occur. Activating this option will activate asynchronous frame\nunwinding and generation of both .eh_frame and .eh_frame_hdr sections, resulting in a bigger binary\nsize (20% to 100% larger). The main purpose of this option is to be able to have a backtrace parsed\nand printed by the program itself, regardless of the serial monitor used.\nThis option is not recommended to be used for production.", "id": "ESP_SYSTEM_USE_EH_FRAME", "name": "ESP_SYSTEM_USE_EH_FRAME", @@ -21521,7 +21511,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This configuration allows the compiler to allocate CPU register s0 as the frame pointer. The main usage\nof the frame pointer is to be able to generate a backtrace from the panic handler on exception.\nEnabling this option results in bigger and slightly slower code since all functions will have\nto populate this register and won't be able to use it as a general-purpose register anymore.", "id": "ESP_SYSTEM_USE_FRAME_POINTER", "name": "ESP_SYSTEM_USE_FRAME_POINTER", @@ -21642,7 +21632,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_MAIN_TASK_AFFINITY_CPU0", "name": "ESP_MAIN_TASK_AFFINITY_CPU0", @@ -21652,7 +21642,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ", + "depends_on": "!FREERTOS_UNICORE && && ", "help": null, "id": "ESP_MAIN_TASK_AFFINITY_CPU1", "name": "ESP_MAIN_TASK_AFFINITY_CPU1", @@ -21662,7 +21652,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_MAIN_TASK_AFFINITY_NO_AFFINITY", "name": "ESP_MAIN_TASK_AFFINITY_NO_AFFINITY", @@ -21702,7 +21692,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_CONSOLE_UART_DEFAULT", "name": "ESP_CONSOLE_UART_DEFAULT", @@ -21712,7 +21702,7 @@ }, { "children": [], - "depends_on": "(IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3) && !TINY_USB && ", + "depends_on": "(IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3) && !TINY_USB && && ", "help": null, "id": "ESP_CONSOLE_USB_CDC", "name": "ESP_CONSOLE_USB_CDC", @@ -21722,7 +21712,7 @@ }, { "children": [], - "depends_on": "SOC_USB_SERIAL_JTAG_SUPPORTED && ", + "depends_on": "SOC_USB_SERIAL_JTAG_SUPPORTED && && ", "help": null, "id": "ESP_CONSOLE_USB_SERIAL_JTAG", "name": "ESP_CONSOLE_USB_SERIAL_JTAG", @@ -21732,7 +21722,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_CONSOLE_UART_CUSTOM", "name": "ESP_CONSOLE_UART_CUSTOM", @@ -21742,7 +21732,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_CONSOLE_NONE", "name": "ESP_CONSOLE_NONE", @@ -21762,7 +21752,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_CONSOLE_SECONDARY_NONE", "name": "ESP_CONSOLE_SECONDARY_NONE", @@ -21772,7 +21762,7 @@ }, { "children": [], - "depends_on": "!ESP_CONSOLE_USB_SERIAL_JTAG && ", + "depends_on": "!ESP_CONSOLE_USB_SERIAL_JTAG && && ", "help": "This option supports output through USB_SERIAL_JTAG port when the UART0 port is not connected.\nThe output currently only supports non-blocking mode without using the console.\nIf you want to output in blocking mode with REPL or input through USB_SERIAL_JTAG port,\nplease change the primary config to ESP_CONSOLE_USB_SERIAL_JTAG above.", "id": "ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG", "name": "ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG", @@ -21812,7 +21802,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_CONSOLE_UART_CUSTOM_NUM_0", "name": "ESP_CONSOLE_UART_CUSTOM_NUM_0", @@ -21822,7 +21812,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_CONSOLE_UART_CUSTOM_NUM_1", "name": "ESP_CONSOLE_UART_CUSTOM_NUM_1", @@ -22095,7 +22085,7 @@ "children": [ { "children": [], - "depends_on": "IDF_TARGET_ESP32 && ", + "depends_on": "IDF_TARGET_ESP32 && && ", "help": "Using level 5 interrupt for Interrupt Watchdog, IPC_ISR and other system checks.", "id": "ESP_SYSTEM_CHECK_INT_LEVEL_5", "name": "ESP_SYSTEM_CHECK_INT_LEVEL_5", @@ -22105,7 +22095,7 @@ }, { "children": [], - "depends_on": "!BTDM_CTRL_HLI && ", + "depends_on": "!BTDM_CTRL_HLI && && ", "help": "Using level 4 interrupt for Interrupt Watchdog, IPC_ISR and other system checks.", "id": "ESP_SYSTEM_CHECK_INT_LEVEL_4", "name": "ESP_SYSTEM_CHECK_INT_LEVEL_4", @@ -22310,7 +22300,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_TIMER_TASK_AFFINITY_CPU0", "name": "ESP_TIMER_TASK_AFFINITY_CPU0", @@ -22320,7 +22310,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ESP_TIMER_SHOW_EXPERIMENTAL && ", + "depends_on": "!FREERTOS_UNICORE && ESP_TIMER_SHOW_EXPERIMENTAL && && ", "help": null, "id": "ESP_TIMER_TASK_AFFINITY_CPU1", "name": "ESP_TIMER_TASK_AFFINITY_CPU1", @@ -22330,7 +22320,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ESP_TIMER_SHOW_EXPERIMENTAL && ", + "depends_on": "!FREERTOS_UNICORE && ESP_TIMER_SHOW_EXPERIMENTAL && && ", "help": null, "id": "ESP_TIMER_TASK_AFFINITY_NO_AFFINITY", "name": "ESP_TIMER_TASK_AFFINITY_NO_AFFINITY", @@ -22350,7 +22340,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_TIMER_ISR_AFFINITY_CPU0", "name": "ESP_TIMER_ISR_AFFINITY_CPU0", @@ -22360,7 +22350,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ESP_TIMER_SHOW_EXPERIMENTAL && ", + "depends_on": "!FREERTOS_UNICORE && ESP_TIMER_SHOW_EXPERIMENTAL && && ", "help": null, "id": "ESP_TIMER_ISR_AFFINITY_CPU1", "name": "ESP_TIMER_ISR_AFFINITY_CPU1", @@ -22370,7 +22360,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ESP_TIMER_SHOW_EXPERIMENTAL && ", + "depends_on": "!FREERTOS_UNICORE && ESP_TIMER_SHOW_EXPERIMENTAL && && ", "help": null, "id": "ESP_TIMER_ISR_AFFINITY_NO_AFFINITY", "name": "ESP_TIMER_ISR_AFFINITY_NO_AFFINITY", @@ -22495,7 +22485,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_WIFI_STATIC_TX_BUFFER", "name": "ESP_WIFI_STATIC_TX_BUFFER", @@ -22505,7 +22495,7 @@ }, { "children": [], - "depends_on": "!(SPIRAM_TRY_ALLOCATE_WIFI_LWIP && !SPIRAM_IGNORE_NOTFOUND) && ", + "depends_on": "!(SPIRAM_TRY_ALLOCATE_WIFI_LWIP && !SPIRAM_IGNORE_NOTFOUND) && && ", "help": null, "id": "ESP_WIFI_DYNAMIC_TX_BUFFER", "name": "ESP_WIFI_DYNAMIC_TX_BUFFER", @@ -22568,7 +22558,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_WIFI_STATIC_RX_MGMT_BUFFER", "name": "ESP_WIFI_STATIC_RX_MGMT_BUFFER", @@ -22578,7 +22568,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER", "name": "ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER", @@ -22699,7 +22689,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_WIFI_TASK_PINNED_TO_CORE_0", "name": "ESP_WIFI_TASK_PINNED_TO_CORE_0", @@ -22709,7 +22699,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_WIFI_TASK_PINNED_TO_CORE_1", "name": "ESP_WIFI_TASK_PINNED_TO_CORE_1", @@ -23077,7 +23067,7 @@ "children": [ { "children": [], - "depends_on": "ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", + "depends_on": "ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED) && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", "help": "Numble of sampled beacons at wifi connected to adjust beacon parameters.", "id": "ESP_WIFI_SLP_SAMPLE_BEACON_COUNT", "name": "ESP_WIFI_SLP_SAMPLE_BEACON_COUNT", @@ -23087,7 +23077,7 @@ }, { "children": [], - "depends_on": "ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", + "depends_on": "ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED) && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", "help": "Difference triggers event WIFI_EVENT_STA_BEACON_OFFSET_UNSTABLE\nwhen the actual rx beacon probability continuously falls below\nthe expected probability by this value.\nunit: percentage", "id": "ESP_WIFI_SLP_SAMPLE_BEACON_DIFFERENCE_PERCENT", "name": "ESP_WIFI_SLP_SAMPLE_BEACON_DIFFERENCE_PERCENT", @@ -23097,7 +23087,7 @@ }, { "children": [], - "depends_on": "ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", + "depends_on": "ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED) && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", "help": "Standard triggers beacon drop when the expected rx beacon probability\nfalls below this value under ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_AUTO mode.\nunit: percentage", "id": "ESP_WIFI_SLP_SAMPLE_BEACON_STANDARD_PERCENT", "name": "ESP_WIFI_SLP_SAMPLE_BEACON_STANDARD_PERCENT", @@ -23107,7 +23097,7 @@ }, { "children": [], - "depends_on": "ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", + "depends_on": "ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED) && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", "help": "Resample period if beacon drop is active under ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_AUTO mode.\nIt means never resample if setting this value to 0.\nunit: hours", "id": "ESP_WIFI_SLP_SAMPLE_BEACON_RESAMPLE_PERIOD", "name": "ESP_WIFI_SLP_SAMPLE_BEACON_RESAMPLE_PERIOD", @@ -23619,7 +23609,7 @@ "children": [ { "children": [], - "depends_on": "ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED", + "depends_on": "(ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED) && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", "help": "Select this option to enable validate each WPS attribute\nrigorously. Disabling this add the workarounds with various APs.\nEnabling this may cause inter operability issues with some APs.", "id": "ESP_WIFI_WPS_STRICT", "name": "ESP_WIFI_WPS_STRICT", @@ -23629,7 +23619,7 @@ }, { "children": [], - "depends_on": "ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED", + "depends_on": "(ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED) && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", "help": "Select this option to get passphrase during WPS configuration.\nThis option fakes the virtual display capabilities to get the\nconfiguration in passphrase mode.\nNot recommended to be used since WPS credentials should not\nbe shared to other devices, making it in readable format increases\nthat risk, also passphrase requires pbkdf2 to convert in psk.", "id": "ESP_WIFI_WPS_PASSPHRASE", "name": "ESP_WIFI_WPS_PASSPHRASE", @@ -23639,7 +23629,7 @@ }, { "children": [], - "depends_on": "ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED", + "depends_on": "(ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED) && (ESP_WIFI_ENABLED || ESP_HOST_WIFI_ENABLED)", "help": "Select this option to enable reconnection to previous SSID if WPS fails.\nThis option will only work if station was connected to a network\nwhen WPS was started.", "id": "ESP_WIFI_WPS_RECONNECT_ON_FAIL", "name": "ESP_WIFI_WPS_RECONNECT_ON_FAIL", @@ -23696,7 +23686,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_COREDUMP_ENABLE_TO_FLASH", "name": "ESP_COREDUMP_ENABLE_TO_FLASH", @@ -23706,7 +23696,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_COREDUMP_ENABLE_TO_UART", "name": "ESP_COREDUMP_ENABLE_TO_UART", @@ -23716,7 +23706,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_COREDUMP_ENABLE_TO_NONE", "name": "ESP_COREDUMP_ENABLE_TO_NONE", @@ -23836,7 +23826,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_COREDUMP_DECODE_INFO", "name": "ESP_COREDUMP_DECODE_INFO", @@ -23846,7 +23836,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "ESP_COREDUMP_DECODE_DISABLE", "name": "ESP_COREDUMP_DECODE_DISABLE", @@ -23897,7 +23887,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_LFN_NONE", "name": "FATFS_LFN_NONE", @@ -23907,7 +23897,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_LFN_HEAP", "name": "FATFS_LFN_HEAP", @@ -23917,7 +23907,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_LFN_STACK", "name": "FATFS_LFN_STACK", @@ -23937,7 +23927,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_SECTOR_512", "name": "FATFS_SECTOR_512", @@ -23947,7 +23937,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_SECTOR_4096", "name": "FATFS_SECTOR_4096", @@ -23967,7 +23957,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_DYNAMIC", "name": "FATFS_CODEPAGE_DYNAMIC", @@ -23977,7 +23967,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_437", "name": "FATFS_CODEPAGE_437", @@ -23987,7 +23977,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_720", "name": "FATFS_CODEPAGE_720", @@ -23997,7 +23987,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_737", "name": "FATFS_CODEPAGE_737", @@ -24007,7 +23997,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_771", "name": "FATFS_CODEPAGE_771", @@ -24017,7 +24007,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_775", "name": "FATFS_CODEPAGE_775", @@ -24027,7 +24017,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_850", "name": "FATFS_CODEPAGE_850", @@ -24037,7 +24027,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_852", "name": "FATFS_CODEPAGE_852", @@ -24047,7 +24037,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_855", "name": "FATFS_CODEPAGE_855", @@ -24057,7 +24047,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_857", "name": "FATFS_CODEPAGE_857", @@ -24067,7 +24057,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_860", "name": "FATFS_CODEPAGE_860", @@ -24077,7 +24067,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_861", "name": "FATFS_CODEPAGE_861", @@ -24087,7 +24077,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_862", "name": "FATFS_CODEPAGE_862", @@ -24097,7 +24087,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_863", "name": "FATFS_CODEPAGE_863", @@ -24107,7 +24097,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_864", "name": "FATFS_CODEPAGE_864", @@ -24117,7 +24107,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_865", "name": "FATFS_CODEPAGE_865", @@ -24127,7 +24117,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_866", "name": "FATFS_CODEPAGE_866", @@ -24137,7 +24127,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_869", "name": "FATFS_CODEPAGE_869", @@ -24147,7 +24137,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_932", "name": "FATFS_CODEPAGE_932", @@ -24157,7 +24147,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_936", "name": "FATFS_CODEPAGE_936", @@ -24167,7 +24157,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_949", "name": "FATFS_CODEPAGE_949", @@ -24177,7 +24167,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_CODEPAGE_950", "name": "FATFS_CODEPAGE_950", @@ -24217,7 +24207,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_API_ENCODING_ANSI_OEM", "name": "FATFS_API_ENCODING_ANSI_OEM", @@ -24227,7 +24217,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_API_ENCODING_UTF_8", "name": "FATFS_API_ENCODING_UTF_8", @@ -24300,7 +24290,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_USE_STRFUNC_NONE", "name": "FATFS_USE_STRFUNC_NONE", @@ -24310,7 +24300,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV", "name": "FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV", @@ -24320,7 +24310,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_USE_STRFUNC_WITH_CRLF_CONV", "name": "FATFS_USE_STRFUNC_WITH_CRLF_CONV", @@ -24360,7 +24350,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_STRF_ENCODE_ANSI", "name": "FATFS_STRF_ENCODE_ANSI", @@ -24370,7 +24360,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_STRF_ENCODE_UTF16LE", "name": "FATFS_STRF_ENCODE_UTF16LE", @@ -24380,7 +24370,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_STRF_ENCODE_UTF16BE", "name": "FATFS_STRF_ENCODE_UTF16BE", @@ -24390,7 +24380,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "FATFS_STRF_ENCODE_UTF8", "name": "FATFS_STRF_ENCODE_UTF8", @@ -24557,7 +24547,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Do not check for stack overflows (configCHECK_FOR_STACK_OVERFLOW = 0)", "id": "FREERTOS_CHECK_STACKOVERFLOW_NONE", "name": "FREERTOS_CHECK_STACKOVERFLOW_NONE", @@ -24567,7 +24557,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Check for stack overflows on each context switch by checking if the stack pointer is in a valid\nrange. Quick but does not detect stack overflows that happened between context switches\n(configCHECK_FOR_STACK_OVERFLOW = 1)", "id": "FREERTOS_CHECK_STACKOVERFLOW_PTRVAL", "name": "FREERTOS_CHECK_STACKOVERFLOW_PTRVAL", @@ -24577,7 +24567,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Places some magic bytes at the end of the stack area and on each context switch, check if these\nbytes are still intact. More thorough than just checking the pointer, but also slightly slower.\n(configCHECK_FOR_STACK_OVERFLOW = 2)", "id": "FREERTOS_CHECK_STACKOVERFLOW_CANARY", "name": "FREERTOS_CHECK_STACKOVERFLOW_CANARY", @@ -25036,7 +25026,7 @@ "children": [ { "children": [], - "depends_on": "FREERTOS_TICK_SUPPORT_CORETIMER && ", + "depends_on": "FREERTOS_TICK_SUPPORT_CORETIMER && && ", "help": "Select this to use timer 0", "id": "FREERTOS_CORETIMER_0", "name": "FREERTOS_CORETIMER_0", @@ -25046,7 +25036,7 @@ }, { "children": [], - "depends_on": "FREERTOS_TICK_SUPPORT_CORETIMER && ", + "depends_on": "FREERTOS_TICK_SUPPORT_CORETIMER && && ", "help": "Select this to use timer 1", "id": "FREERTOS_CORETIMER_1", "name": "FREERTOS_CORETIMER_1", @@ -25056,7 +25046,7 @@ }, { "children": [], - "depends_on": "FREERTOS_TICK_SUPPORT_SYSTIMER && ", + "depends_on": "FREERTOS_TICK_SUPPORT_SYSTIMER && && ", "help": "Select this to use systimer with the 1 interrupt priority.", "id": "FREERTOS_CORETIMER_SYSTIMER_LVL1", "name": "FREERTOS_CORETIMER_SYSTIMER_LVL1", @@ -25066,7 +25056,7 @@ }, { "children": [], - "depends_on": "FREERTOS_TICK_SUPPORT_SYSTIMER && ", + "depends_on": "FREERTOS_TICK_SUPPORT_SYSTIMER && && ", "help": "Select this to use systimer with the 3 interrupt priority.", "id": "FREERTOS_CORETIMER_SYSTIMER_LVL3", "name": "FREERTOS_CORETIMER_SYSTIMER_LVL3", @@ -25106,7 +25096,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "ESP Timer will be used as the clock source for FreeRTOS run time stats. The ESP Timer runs at a\nfrequency of 1MHz regardless of Dynamic Frequency Scaling. Therefore the ESP Timer will overflow in\napproximately 4290 seconds.", "id": "FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER", "name": "FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER", @@ -25116,7 +25106,7 @@ }, { "children": [], - "depends_on": "FREERTOS_SYSTICK_USES_CCOUNT && ", + "depends_on": "FREERTOS_SYSTICK_USES_CCOUNT && && ", "help": "CPU Clock will be used as the clock source for the generation of run time stats. The CPU Clock has\na frequency dependent on ESP_DEFAULT_CPU_FREQ_MHZ and Dynamic Frequency Scaling (DFS). Therefore\nthe CPU Clock frequency can fluctuate between 80 to 240MHz. Run time stats generated using the CPU\nClock represents the number of CPU cycles each task is allocated and DOES NOT reflect the amount of\ntime each task runs for (as CPU clock frequency can change). If the CPU clock consistently runs at\nthe maximum frequency of 240MHz, it will overflow in approximately 17 seconds.", "id": "FREERTOS_RUN_TIME_STATS_USING_CPU_CLK", "name": "FREERTOS_RUN_TIME_STATS_USING_CPU_CLK", @@ -25251,7 +25241,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HAL_ASSERTION_EQUALS_SYSTEM", "name": "HAL_ASSERTION_EQUALS_SYSTEM", @@ -25261,7 +25251,7 @@ }, { "children": [], - "depends_on": "COMPILER_OPTIMIZATION_ASSERTION_LEVEL >= 0 && ", + "depends_on": "COMPILER_OPTIMIZATION_ASSERTION_LEVEL >= 0 && && ", "help": null, "id": "HAL_ASSERTION_DISABLE", "name": "HAL_ASSERTION_DISABLE", @@ -25271,7 +25261,7 @@ }, { "children": [], - "depends_on": "COMPILER_OPTIMIZATION_ASSERTION_LEVEL >= 1 && ", + "depends_on": "COMPILER_OPTIMIZATION_ASSERTION_LEVEL >= 1 && && ", "help": null, "id": "HAL_ASSERTION_SILENT", "name": "HAL_ASSERTION_SILENT", @@ -25281,7 +25271,7 @@ }, { "children": [], - "depends_on": "COMPILER_OPTIMIZATION_ASSERTION_LEVEL >= 2 && ", + "depends_on": "COMPILER_OPTIMIZATION_ASSERTION_LEVEL >= 2 && && ", "help": null, "id": "HAL_ASSERTION_ENABLE", "name": "HAL_ASSERTION_ENABLE", @@ -25311,7 +25301,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HAL_LOG_LEVEL_NONE", "name": "HAL_LOG_LEVEL_NONE", @@ -25321,7 +25311,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HAL_LOG_LEVEL_ERROR", "name": "HAL_LOG_LEVEL_ERROR", @@ -25331,7 +25321,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HAL_LOG_LEVEL_WARN", "name": "HAL_LOG_LEVEL_WARN", @@ -25341,7 +25331,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HAL_LOG_LEVEL_INFO", "name": "HAL_LOG_LEVEL_INFO", @@ -25351,7 +25341,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HAL_LOG_LEVEL_DEBUG", "name": "HAL_LOG_LEVEL_DEBUG", @@ -25361,7 +25351,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HAL_LOG_LEVEL_VERBOSE", "name": "HAL_LOG_LEVEL_VERBOSE", @@ -25439,7 +25429,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HEAP_POISONING_DISABLED", "name": "HEAP_POISONING_DISABLED", @@ -25449,7 +25439,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HEAP_POISONING_LIGHT", "name": "HEAP_POISONING_LIGHT", @@ -25459,7 +25449,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HEAP_POISONING_COMPREHENSIVE", "name": "HEAP_POISONING_COMPREHENSIVE", @@ -25479,7 +25469,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HEAP_TRACING_OFF", "name": "HEAP_TRACING_OFF", @@ -25489,7 +25479,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HEAP_TRACING_STANDALONE", "name": "HEAP_TRACING_STANDALONE", @@ -25499,7 +25489,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "HEAP_TRACING_TOHOST", "name": "HEAP_TRACING_TOHOST", @@ -25945,7 +25935,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Select this option to use Log V1. Recommended for projects with strict stack constraints\nor that prioritize performance over flexibility.", "id": "LOG_VERSION_1", "name": "LOG_VERSION_1", @@ -25955,7 +25945,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Select this option to use Log V2. Recommended for projects that require smaller binaries,\nruntime log formatting configuration, or advanced logging features.", "id": "LOG_VERSION_2", "name": "LOG_VERSION_2", @@ -25987,7 +25977,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_DEFAULT_LEVEL_NONE", "name": "LOG_DEFAULT_LEVEL_NONE", @@ -25997,7 +25987,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_DEFAULT_LEVEL_ERROR", "name": "LOG_DEFAULT_LEVEL_ERROR", @@ -26007,7 +25997,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_DEFAULT_LEVEL_WARN", "name": "LOG_DEFAULT_LEVEL_WARN", @@ -26017,7 +26007,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_DEFAULT_LEVEL_INFO", "name": "LOG_DEFAULT_LEVEL_INFO", @@ -26027,7 +26017,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_DEFAULT_LEVEL_DEBUG", "name": "LOG_DEFAULT_LEVEL_DEBUG", @@ -26037,7 +26027,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_DEFAULT_LEVEL_VERBOSE", "name": "LOG_DEFAULT_LEVEL_VERBOSE", @@ -26067,7 +26057,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_MAXIMUM_EQUALS_DEFAULT", "name": "LOG_MAXIMUM_EQUALS_DEFAULT", @@ -26077,7 +26067,7 @@ }, { "children": [], - "depends_on": "LOG_DEFAULT_LEVEL < 1 && ", + "depends_on": "LOG_DEFAULT_LEVEL < 1 && && ", "help": null, "id": "LOG_MAXIMUM_LEVEL_ERROR", "name": "LOG_MAXIMUM_LEVEL_ERROR", @@ -26087,7 +26077,7 @@ }, { "children": [], - "depends_on": "LOG_DEFAULT_LEVEL < 2 && ", + "depends_on": "LOG_DEFAULT_LEVEL < 2 && && ", "help": null, "id": "LOG_MAXIMUM_LEVEL_WARN", "name": "LOG_MAXIMUM_LEVEL_WARN", @@ -26097,7 +26087,7 @@ }, { "children": [], - "depends_on": "LOG_DEFAULT_LEVEL < 3 && ", + "depends_on": "LOG_DEFAULT_LEVEL < 3 && && ", "help": null, "id": "LOG_MAXIMUM_LEVEL_INFO", "name": "LOG_MAXIMUM_LEVEL_INFO", @@ -26107,7 +26097,7 @@ }, { "children": [], - "depends_on": "LOG_DEFAULT_LEVEL < 4 && ", + "depends_on": "LOG_DEFAULT_LEVEL < 4 && && ", "help": null, "id": "LOG_MAXIMUM_LEVEL_DEBUG", "name": "LOG_MAXIMUM_LEVEL_DEBUG", @@ -26117,7 +26107,7 @@ }, { "children": [], - "depends_on": "LOG_DEFAULT_LEVEL < 5 && ", + "depends_on": "LOG_DEFAULT_LEVEL < 5 && && ", "help": null, "id": "LOG_MAXIMUM_LEVEL_VERBOSE", "name": "LOG_MAXIMUM_LEVEL_VERBOSE", @@ -26169,7 +26159,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This option disables the ability to set the log level per tag.\nThe ability to change the log level at runtime depends on LOG_DYNAMIC_LEVEL_CONTROL.\nIf LOG_DYNAMIC_LEVEL_CONTROL is disabled, then changing the log level at runtime\nusing `esp_log_level_set()` is not possible.\nThis implementation is suitable for highly constrained environments.", "id": "LOG_TAG_LEVEL_IMPL_NONE", "name": "LOG_TAG_LEVEL_IMPL_NONE", @@ -26179,7 +26169,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Select this option to use the linked list-only implementation (no cache) for log level retrieval.\nThis approach searches the linked list of all tags for the log level, which may be slower\nfor a large number of tags but may have lower memory requirements than the CACHE approach.\nThe linked list approach compares the whole strings of log tags for finding the log level.", "id": "LOG_TAG_LEVEL_IMPL_LINKED_LIST", "name": "LOG_TAG_LEVEL_IMPL_LINKED_LIST", @@ -26189,7 +26179,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Select this option to use a hybrid mode: cache in combination with the linked list\nfor log tag level checks. This hybrid approach offers a balance between speed and memory usage.\n\nThe cache stores recently accessed log tags and their corresponding log levels, providing\nfaster lookups for frequently used tags. The cache approach compares the tag pointers, which is\nfaster than comparing the whole strings.\n\nFor less frequently used tags, the linked list is used to search for the log level, which may be\nslower for a large number of tags but has lower memory requirements compared to a full cache.\n\nThis hybrid approach aims to improve the efficiency of log level retrieval by combining the benefits\nof both cache and linked list implementations.", "id": "LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST", "name": "LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST", @@ -26209,7 +26199,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This option enables the use of a simple array-based cache implementation for storing and\nretrieving log tag levels. There is no additional code that reorders the cache for fast lookups.\nSuitable for projects where memory usage optimization is crucial and the simplicity of implementation\nis preferred.", "id": "LOG_TAG_LEVEL_CACHE_ARRAY", "name": "LOG_TAG_LEVEL_CACHE_ARRAY", @@ -26219,7 +26209,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "This option enables the use of a binary min-heap-based cache implementation for efficient\nstorage and retrieval of log tag levels. It does automatically optimizing cache for fast lookups.\nSuitable for projects where speed of lookup is critical and memory usage can accommodate\nthe overhead of maintaining a binary min-heap structure.", "id": "LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP", "name": "LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP", @@ -26283,7 +26273,7 @@ "children": [ { "children": [], - "depends_on": "LOG_VERSION_2 && ", + "depends_on": "LOG_VERSION_2 && && ", "help": null, "id": "LOG_TIMESTAMP_SOURCE_NONE", "name": "LOG_TIMESTAMP_SOURCE_NONE", @@ -26293,7 +26283,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_TIMESTAMP_SOURCE_RTOS", "name": "LOG_TIMESTAMP_SOURCE_RTOS", @@ -26303,7 +26293,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LOG_TIMESTAMP_SOURCE_SYSTEM", "name": "LOG_TIMESTAMP_SOURCE_SYSTEM", @@ -26313,7 +26303,7 @@ }, { "children": [], - "depends_on": "LOG_VERSION_2 && ", + "depends_on": "LOG_VERSION_2 && && ", "help": null, "id": "LOG_TIMESTAMP_SOURCE_SYSTEM_FULL", "name": "LOG_TIMESTAMP_SOURCE_SYSTEM_FULL", @@ -26323,7 +26313,7 @@ }, { "children": [], - "depends_on": "LOG_VERSION_2 && ", + "depends_on": "LOG_VERSION_2 && && ", "help": null, "id": "LOG_TIMESTAMP_SOURCE_UNIX", "name": "LOG_TIMESTAMP_SOURCE_UNIX", @@ -26381,7 +26371,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Enables text-based logging, where log messages are stored in a human-readable format.\nThis mode is useful for development and debugging, as it allows logs to be easily\nread and interpreted without additional processing.", "id": "LOG_MODE_TEXT", "name": "LOG_MODE_TEXT", @@ -26391,7 +26381,7 @@ }, { "children": [], - "depends_on": "LOG_VERSION_2 && ", + "depends_on": "LOG_VERSION_2 && && ", "help": "Enables binary logging with host-side format string expansion. In this mode, the\nformat argument of ESP_LOGx, ESP_EARLY_LOG, and ESP_DRAM_LOG macros is stored in a\nNOLOAD section, not included in the final binary file. This reduces flash usage by\napproximately 10% - 35%. The esp_log() function uses the binary log handler to output\nmessages. Instead of sending the full log string, the chip transmits only the\naddresses of these strings (if present in the ELF file). If the format string\ncannot be found in the ELF file, the chip sends the entire string. The host-side\nmonitor tool, which has access to the ELF file, reconstructs the log message using\nthe format string.\nThis reduces firmware size by eliminating format strings from\nflash memory and removing the usage of printf-like functions, potentially freeing up\na few kilobytes of space. To further reduce firmware size, wrap string data with ESP_LOG_ATTR_STR.", "id": "LOG_MODE_BINARY", "name": "LOG_MODE_BINARY", @@ -26820,7 +26810,7 @@ "children": [ { "children": [], - "depends_on": "!LWIP_AUTOIP && ", + "depends_on": "!LWIP_AUTOIP && && ", "help": null, "id": "LWIP_DHCP_DOES_ARP_CHECK", "name": "LWIP_DHCP_DOES_ARP_CHECK", @@ -26830,7 +26820,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_DHCP_DOES_ACD_CHECK", "name": "LWIP_DHCP_DOES_ACD_CHECK", @@ -26840,7 +26830,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP", "name": "LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP", @@ -27348,7 +27338,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_TCP_OVERSIZE_MSS", "name": "LWIP_TCP_OVERSIZE_MSS", @@ -27358,7 +27348,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_TCP_OVERSIZE_QUARTER_MSS", "name": "LWIP_TCP_OVERSIZE_QUARTER_MSS", @@ -27368,7 +27358,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_TCP_OVERSIZE_DISABLE", "name": "LWIP_TCP_OVERSIZE_DISABLE", @@ -27510,7 +27500,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY", "name": "LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY", @@ -27520,7 +27510,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_TCPIP_TASK_AFFINITY_CPU0", "name": "LWIP_TCPIP_TASK_AFFINITY_CPU0", @@ -27530,7 +27520,7 @@ }, { "children": [], - "depends_on": "!FREERTOS_UNICORE && ", + "depends_on": "!FREERTOS_UNICORE && && ", "help": null, "id": "LWIP_TCPIP_TASK_AFFINITY_CPU1", "name": "LWIP_TCPIP_TASK_AFFINITY_CPU1", @@ -28047,7 +28037,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_TCP_ISN_NONE", "name": "LWIP_HOOK_TCP_ISN_NONE", @@ -28057,7 +28047,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_TCP_ISN_DEFAULT", "name": "LWIP_HOOK_TCP_ISN_DEFAULT", @@ -28067,7 +28057,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_TCP_ISN_CUSTOM", "name": "LWIP_HOOK_TCP_ISN_CUSTOM", @@ -28087,7 +28077,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_ROUTE_NONE", "name": "LWIP_HOOK_IP6_ROUTE_NONE", @@ -28097,7 +28087,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_ROUTE_DEFAULT", "name": "LWIP_HOOK_IP6_ROUTE_DEFAULT", @@ -28107,7 +28097,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_ROUTE_CUSTOM", "name": "LWIP_HOOK_IP6_ROUTE_CUSTOM", @@ -28127,7 +28117,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_ND6_GET_GW_NONE", "name": "LWIP_HOOK_ND6_GET_GW_NONE", @@ -28137,7 +28127,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_ND6_GET_GW_DEFAULT", "name": "LWIP_HOOK_ND6_GET_GW_DEFAULT", @@ -28147,7 +28137,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_ND6_GET_GW_CUSTOM", "name": "LWIP_HOOK_ND6_GET_GW_CUSTOM", @@ -28167,7 +28157,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE", "name": "LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE", @@ -28177,7 +28167,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT", "name": "LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT", @@ -28187,7 +28177,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM", "name": "LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM", @@ -28207,7 +28197,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_DHCP_EXTRA_OPTION_NONE", "name": "LWIP_HOOK_DHCP_EXTRA_OPTION_NONE", @@ -28217,7 +28207,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT", "name": "LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT", @@ -28227,7 +28217,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM", "name": "LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM", @@ -28247,7 +28237,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE", "name": "LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE", @@ -28257,7 +28247,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT", "name": "LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT", @@ -28267,7 +28257,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM", "name": "LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM", @@ -28297,7 +28287,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_DNS_EXT_RESOLVE_NONE", "name": "LWIP_HOOK_DNS_EXT_RESOLVE_NONE", @@ -28307,7 +28297,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM", "name": "LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM", @@ -28327,7 +28317,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_INPUT_NONE", "name": "LWIP_HOOK_IP6_INPUT_NONE", @@ -28337,7 +28327,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_INPUT_DEFAULT", "name": "LWIP_HOOK_IP6_INPUT_DEFAULT", @@ -28347,7 +28337,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "LWIP_HOOK_IP6_INPUT_CUSTOM", "name": "LWIP_HOOK_IP6_INPUT_CUSTOM", @@ -28595,7 +28585,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "MBEDTLS_COMPILER_OPTIMIZATION_NONE", "name": "MBEDTLS_COMPILER_OPTIMIZATION_NONE", @@ -28605,7 +28595,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "MBEDTLS_COMPILER_OPTIMIZATION_SIZE", "name": "MBEDTLS_COMPILER_OPTIMIZATION_SIZE", @@ -28615,7 +28605,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "MBEDTLS_COMPILER_OPTIMIZATION_PERF", "name": "MBEDTLS_COMPILER_OPTIMIZATION_PERF", @@ -28737,7 +28727,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "MBEDTLS_INTERNAL_MEM_ALLOC", "name": "MBEDTLS_INTERNAL_MEM_ALLOC", @@ -28747,7 +28737,7 @@ }, { "children": [], - "depends_on": "(SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC) && ", + "depends_on": "(SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC) && && ", "help": null, "id": "MBEDTLS_EXTERNAL_MEM_ALLOC", "name": "MBEDTLS_EXTERNAL_MEM_ALLOC", @@ -28757,7 +28747,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "MBEDTLS_DEFAULT_MEM_ALLOC", "name": "MBEDTLS_DEFAULT_MEM_ALLOC", @@ -28767,7 +28757,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "MBEDTLS_CUSTOM_MEM_ALLOC", "name": "MBEDTLS_CUSTOM_MEM_ALLOC", @@ -28777,7 +28767,7 @@ }, { "children": [], - "depends_on": "ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY && ", + "depends_on": "ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY && && ", "help": "Allows to use IRAM memory region as 8bit accessible region.\n\nTLS input and output buffers will be allocated in IRAM section which is 32bit aligned\nmemory. Every unaligned (8bit or 16bit) access will result in an exception\nand incur penalty of certain clock cycles per unaligned read/write.", "id": "MBEDTLS_IRAM_8BIT_MEM_ALLOC", "name": "MBEDTLS_IRAM_8BIT_MEM_ALLOC", @@ -30241,7 +30231,7 @@ "children": [ { "children": [], - "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "NIST 'modulo p' optimisations increase Elliptic Curve operation performance.\n\nDisabling this option saves some code size.", "id": "MBEDTLS_ECP_NIST_OPTIM", "name": "MBEDTLS_ECP_NIST_OPTIM", @@ -30251,7 +30241,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "This configuration option enables optimizations to speedup (about 3 ~ 4 times) the ECP\nfixed point multiplication using pre-computed tables in the flash memory.\nEnabling this configuration option increases the flash footprint\n(about 29KB if all Elliptic Curve selected) in the application binary.", "id": "MBEDTLS_ECP_FIXED_POINT_OPTIM", "name": "MBEDTLS_ECP_FIXED_POINT_OPTIM", @@ -30261,7 +30251,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECDH_C && MBEDTLS_ECP_RESTARTABLE && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECDH_C && MBEDTLS_ECP_RESTARTABLE && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Use the legacy ECDH context format.\nDefine this option only if you enable MBEDTLS_ECP_RESTARTABLE or if you\nwant to access ECDH context fields directly.", "id": "MBEDTLS_ECDH_LEGACY_CONTEXT", "name": "MBEDTLS_ECDH_LEGACY_CONTEXT", @@ -30271,7 +30261,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Enable DHM. Needed to use DHE-xxx TLS ciphersuites.\n\nNote that the security of Diffie-Hellman key exchanges depends on\na suitable prime being used for the exchange. Please see detailed\nwarning text about this in file `mbedtls/dhm.h` file.", "id": "MBEDTLS_DHM_C", "name": "MBEDTLS_DHM_C", @@ -30281,7 +30271,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Enable ECDH. Needed to use ECDHE-xxx TLS ciphersuites.", "id": "MBEDTLS_ECDH_C", "name": "MBEDTLS_ECDH_C", @@ -30291,7 +30281,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Enable ECJPAKE. Needed to use ECJPAKE-xxx TLS ciphersuites.", "id": "MBEDTLS_ECJPAKE_C", "name": "MBEDTLS_ECJPAKE_C", @@ -30301,7 +30291,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECDH_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECDH_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Enable ECDSA. Needed to use ECDSA-xxx TLS ciphersuites.", "id": "MBEDTLS_ECDSA_C", "name": "MBEDTLS_ECDSA_C", @@ -30311,7 +30301,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Enhance support for reading EC keys using variants of SEC1 not allowed by\nRFC 5915 and RFC 5480.", "id": "MBEDTLS_PK_PARSE_EC_EXTENDED", "name": "MBEDTLS_PK_PARSE_EC_EXTENDED", @@ -30321,7 +30311,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Enable the support for parsing public keys of type Short Weierstrass\n(MBEDTLS_ECP_DP_SECP_XXX and MBEDTLS_ECP_DP_BP_XXX) which are using the\ncompressed point format. This parsing is done through ECP module's functions.\ndepends on MBEDTLS_ECP_C", "id": "MBEDTLS_PK_PARSE_EC_COMPRESSED", "name": "MBEDTLS_PK_PARSE_EC_COMPRESSED", @@ -30331,7 +30321,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Standard ECDSA is \"fragile\" in the sense that lack of entropy when signing\nmay result in a compromise of the long-term signing key.", "id": "MBEDTLS_ECDSA_DETERMINISTIC", "name": "MBEDTLS_ECDSA_DETERMINISTIC", @@ -30341,7 +30331,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C", + "depends_on": "MBEDTLS_ECP_C && MBEDTLS_ECP_C && MBEDTLS_ECP_C", "help": "Enable \"non-blocking\" ECC operations that can return early and be resumed.", "id": "MBEDTLS_ECP_RESTARTABLE", "name": "MBEDTLS_ECP_RESTARTABLE", @@ -30525,7 +30515,7 @@ "children": [ { "children": [], - "depends_on": "MBEDTLS_HARDWARE_ECDSA_SIGN && IDF_TARGET_ESP32H2", + "depends_on": "MBEDTLS_HARDWARE_ECDSA_SIGN && IDF_TARGET_ESP32H2 && MBEDTLS_HARDWARE_ECDSA_SIGN && IDF_TARGET_ESP32H2", "help": "The ECDSA peripheral before ESP32-H2 v1.2 does not offer constant time ECDSA sign operation.\nThis time can be observed through power profiling of the device,\nmaking the ECDSA private key vulnerable to side-channel timing attacks.\nThis countermeasure masks the real ECDSA sign operation\nunder dummy sign operations to add randomness in the generated power signature.\nIt is highly recommended to also enable Secure Boot for the device\nin addition to this countermeasure so that only trusted software can execute on the device.\nThis countermeasure can be safely disabled for ESP32-H2 v1.2 and above.", "id": "MBEDTLS_HARDWARE_ECDSA_SIGN_MASKING_CM", "name": "MBEDTLS_HARDWARE_ECDSA_SIGN_MASKING_CM", @@ -30535,7 +30525,7 @@ }, { "children": [], - "depends_on": "MBEDTLS_HARDWARE_ECDSA_SIGN && IDF_TARGET_ESP32H2", + "depends_on": "MBEDTLS_HARDWARE_ECDSA_SIGN && IDF_TARGET_ESP32H2 && MBEDTLS_HARDWARE_ECDSA_SIGN && IDF_TARGET_ESP32H2", "help": "This option adds a delay after the actual ECDSA signature operation\nso that the entire operation appears to be constant\u00a0 time for the software.\nThis fix helps in protecting the device only in case of remote timing attack\non the ECDSA private key.\nFor e.g., When an interface is exposed by the device to perform ECDSA signature\nof an arbitrary message.\nThe signature time would appear to be constant to the external entity after enabling\nthis option.\nThis countermeasure can be safely disabled for ESP32-H2 v1.2 and above.", "id": "MBEDTLS_HARDWARE_ECDSA_SIGN_CONSTANT_TIME_CM", "name": "MBEDTLS_HARDWARE_ECDSA_SIGN_CONSTANT_TIME_CM", @@ -31322,7 +31312,7 @@ "children": [ { "children": [], - "depends_on": "SECURE_FLASH_ENC_ENABLED && ", + "depends_on": "SECURE_FLASH_ENC_ENABLED && && ", "help": "Protect the NVS Encryption Keys using Flash Encryption\nRequires a separate 'nvs_keys' partition (which will be encrypted by flash encryption)\nfor storing the NVS encryption keys", "id": "NVS_SEC_KEY_PROTECT_USING_FLASH_ENC", "name": "NVS_SEC_KEY_PROTECT_USING_FLASH_ENC", @@ -31332,7 +31322,7 @@ }, { "children": [], - "depends_on": "SOC_HMAC_SUPPORTED && ", + "depends_on": "SOC_HMAC_SUPPORTED && && ", "help": "Derive and protect the NVS Encryption Keys using the HMAC peripheral\nRequires the specified eFuse block (NVS_SEC_HMAC_EFUSE_KEY_ID or the v2 API argument)\nto be empty or pre-written with a key with the purpose ESP_EFUSE_KEY_PURPOSE_HMAC_UP", "id": "NVS_SEC_KEY_PROTECT_USING_HMAC", "name": "NVS_SEC_KEY_PROTECT_USING_HMAC", @@ -31342,7 +31332,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Select this option if key derivation/protection is handled by\na custom implementation, and not by the nvs_sec_provider component.", "id": "NVS_SEC_KEY_PROTECT_NONE", "name": "NVS_SEC_KEY_PROTECT_NONE", @@ -32539,7 +32529,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "PTHREAD_DEFAULT_CORE_NO_AFFINITY", "name": "PTHREAD_DEFAULT_CORE_NO_AFFINITY", @@ -32549,7 +32539,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "PTHREAD_DEFAULT_CORE_0", "name": "PTHREAD_DEFAULT_CORE_0", @@ -32559,7 +32549,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "PTHREAD_DEFAULT_CORE_1", "name": "PTHREAD_DEFAULT_CORE_1", @@ -32701,7 +32691,7 @@ "children": [ { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "When this option is selected, the patch will be enabled for XMC.\nFollow the recommended flow by XMC for better stability.\n\nDO NOT DISABLE UNLESS YOU KNOW WHAT YOU ARE DOING.", "id": "SPI_FLASH_BROWNOUT_RESET_XMC", "name": "SPI_FLASH_BROWNOUT_RESET_XMC", @@ -32711,7 +32701,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "When brownout happens during flash erase/write operations,\nsend reset command to stop the flash operations to improve stability.", "id": "SPI_FLASH_BROWNOUT_RESET", "name": "SPI_FLASH_BROWNOUT_RESET", @@ -32720,7 +32710,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "id": "component-config-main-flash-configuration-spi-flash-behavior-when-brownout-home-pi-esp-esp-idf-components-spi_flash-Kconfig-4", "title": "SPI Flash behavior when brownout", "type": "menu" @@ -32729,7 +32719,7 @@ "children": [ { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This is a helper config for HPM. Invisible for users.", "id": "SPI_FLASH_UNDER_HIGH_FREQ", "name": "SPI_FLASH_UNDER_HIGH_FREQ", @@ -32741,7 +32731,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SPI_FLASH_HPM_ENA", "name": "SPI_FLASH_HPM_ENA", @@ -32751,7 +32741,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SPI_FLASH_HPM_AUTO", "name": "SPI_FLASH_HPM_AUTO", @@ -32761,7 +32751,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SPI_FLASH_HPM_DIS", "name": "SPI_FLASH_HPM_DIS", @@ -32770,7 +32760,7 @@ "type": "bool" } ], - "depends_on": "(IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && !ESPTOOLPY_OCT_FLASH && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "(IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && !ESPTOOLPY_OCT_FLASH && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Whether the High Performance Mode of Flash is enabled. As an optional feature, user needs to manually\nenable this option as a confirmation. To be back-compatible with earlier IDF version, this option is\nautomatically enabled with warning when Flash running > 80Mhz.", "id": "component-config-main-flash-configuration-optional-and-experimental-features-read-docs-first--high-performance-mode-read-docs-first-80mhz--home-pi-esp-esp-idf-components-spi_flash-Kconfig-36", "name": "SPI_FLASH_HPM", @@ -32779,7 +32769,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This option is invisible, and will be selected automatically\nwhen ``ESPTOOLPY_FLASHFREQ_120M`` is selected.", "id": "SPI_FLASH_HPM_ON", "name": "SPI_FLASH_HPM_ON", @@ -32791,7 +32781,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SPI_FLASH_HPM_DC_AUTO", "name": "SPI_FLASH_HPM_DC_AUTO", @@ -32801,7 +32791,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SPI_FLASH_HPM_DC_DISABLE", "name": "SPI_FLASH_HPM_DC_DISABLE", @@ -32810,7 +32800,7 @@ "type": "bool" } ], - "depends_on": "SPI_FLASH_HPM_ON && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "SPI_FLASH_HPM_ON && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This feature needs your bootloader to be compiled DC-aware (BOOTLOADER_FLASH_DC_AWARE=y). Otherwise the\nchip will not be able to boot after a reset.", "id": "component-config-main-flash-configuration-optional-and-experimental-features-read-docs-first--support-hpm-using-dc-read-docs-first--home-pi-esp-esp-idf-components-spi_flash-Kconfig-65", "name": "SPI_FLASH_HPM_DC", @@ -32819,7 +32809,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This is a helper config for HPM. Whether HPM-DC is enabled is also determined by bootloader.\nInvisible for users.", "id": "SPI_FLASH_HPM_DC_ON", "name": "SPI_FLASH_HPM_DC_ON", @@ -32829,7 +32819,7 @@ }, { "children": [], - "depends_on": "SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND && !SPI_FLASH_ROM_IMPL && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND && !SPI_FLASH_ROM_IMPL && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This option is disabled by default because it is supported only\nfor specific flash chips and for specific Espressif chips.\nTo evaluate if you can use this feature refer to\n`Optional Features for Flash` > `Auto Suspend & Resume` of the `ESP-IDF Programming Guide`.\n\nCAUTION: If you want to OTA to an app with this feature turned on, please make\nsure the bootloader has the support for it. (later than IDF v4.3)\n\nIf you are using an official Espressif module, please contact Espressif Business support\nto check if the module has the flash that support this feature installed.\nAlso refer to `Concurrency Constraints for Flash on SPI1` > `Flash Auto Suspend Feature`\nbefore enabling this option.", "id": "SPI_FLASH_AUTO_SUSPEND", "name": "SPI_FLASH_AUTO_SUSPEND", @@ -32839,7 +32829,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This config is used for setting Tsus parameter. Tsus means CS# high to next command after\nsuspend. You can refer to the chapter of AC CHARACTERISTICS of flash datasheet.", "id": "SPI_FLASH_SUSPEND_TSUS_VAL_US", "name": "SPI_FLASH_SUSPEND_TSUS_VAL_US", @@ -32852,7 +32842,7 @@ }, { "children": [], - "depends_on": "SOC_SPI_MEM_SUPPORT_TSUS_TRES_SEPERATE_CTR && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "SOC_SPI_MEM_SUPPORT_TSUS_TRES_SEPERATE_CTR && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This config is used for setting Trs parameter. Trs means CS Latency Between Resume And Next Suspend.\nYou can refer to the chapter of AC CHARACTERISTICS of flash datasheet.\nFor high-performance scenarios, some flash chips allow this set value to be smaller than the\ngiven value in the datasheet without causing errors in the flash state machine.\nWhen you have any related needs, please contact espressif business team.", "id": "SPI_FLASH_SUSPEND_TRS_VAL_US", "name": "SPI_FLASH_SUSPEND_TRS_VAL_US", @@ -32862,7 +32852,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "XMC-C series is regarded as not qualified for the Suspend feature, since its specification\nhas a tRS >= 1ms restriction. We strongly do not suggest using it for the Suspend feature.\nHowever, if your product in field has enabled this feature, you may still enable this\nconfig option to keep the legacy behavior.\n\nFor new users, DO NOT enable this config.", "id": "SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND", "name": "SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND", @@ -32872,7 +32862,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Flash suspend has a defect on ESP32C6 until v0.2 and ESP32H2 until v1.2. If you already use suspend\nfeature for mass production, you can enable this for bypassing check after knowing the risk.\nBut if you are new users, or developing new applications, or producing a new batch,\nplease DO NOT enable this config option.\n\nFor more information, please refer to errata or connect to Espressif business support team.", "id": "SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND", "name": "SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND", @@ -32882,7 +32872,7 @@ }, { "children": [], - "depends_on": "SPI_FLASH_AUTO_SUSPEND && FREERTOS_UNICORE && IDF_EXPERIMENTAL_FEATURES && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "SPI_FLASH_AUTO_SUSPEND && FREERTOS_UNICORE && IDF_EXPERIMENTAL_FEATURES && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this config will disable auto-resume from hardware. Thus the software will resume the chip\nafter any higher priority task/interrupt which suspend the chip. The benefit is that the suspend-resume\nwill not disturb the higher priority task and interrupt.\n\nThis currently is only valid on single core chip.", "id": "SPI_FLASH_SOFTWARE_RESUME", "name": "SPI_FLASH_SOFTWARE_RESUME", @@ -32892,7 +32882,7 @@ }, { "children": [], - "depends_on": "SPI_FLASH_AUTO_SUSPEND && FREERTOS_UNICORE && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "SPI_FLASH_AUTO_SUSPEND && FREERTOS_UNICORE && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Disable freertos task scheduler when CONFIG_SPI_FLASH_AUTO_SUSPEND is enabled.\nThus only interrupt can trigger a suspend. When SPI_FLASH_AUTO_SUSPEND is enabled,\ndefault behavior is not disable the task scheduler, so both interrupt and high priority\ntask can suspend the erase/program operation. When this option is enabled, task\nscheduler is disabled, only interrupt can suspend erase/program operation.", "id": "SPI_FLASH_DISABLE_SCHEDULER_IN_SUSPEND", "name": "SPI_FLASH_DISABLE_SCHEDULER_IN_SUSPEND", @@ -32902,7 +32892,7 @@ }, { "children": [], - "depends_on": "SPI_FLASH_AUTO_SUSPEND && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "SPI_FLASH_AUTO_SUSPEND && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Majority flash supports to use flash register to judge if flash suspend status is\ndone or not. So enable this config, the behavior would use flash register WIP bit to judge\nwhether suspend is valid instead of waiting for a specific long time, which can save a\nlot of time and benefit for performance improvement.", "id": "SPI_FLASH_AUTO_CHECK_SUSPEND_STATUS", "name": "SPI_FLASH_AUTO_CHECK_SUSPEND_STATUS", @@ -32912,7 +32902,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "When disabled, certain functions in `spi_flash` component will be placed into Flash memory\ninstead of IRAM. Disabling this option will save almost 10KB of IRAM depending on which\nfunctions are used.\n\nWhen enabled, these functions will be placed in internal RAM, with better performance.\n\nFor more information please refer to programming guide.", "id": "SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM", "name": "SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM", @@ -32921,7 +32911,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "id": "component-config-main-flash-configuration-optional-and-experimental-features-read-docs-first--home-pi-esp-esp-idf-components-spi_flash-Kconfig-26", "title": "Optional and Experimental Features (READ DOCS FIRST)", "type": "menu" @@ -32957,7 +32947,7 @@ "type": "bool" } ], - "depends_on": "!SPI_FLASH_ROM_IMPL && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!SPI_FLASH_ROM_IMPL && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "If this option is enabled, any time SPI flash is written then the data will be read\nback and verified. This can catch hardware problems with SPI flash, or flash which\nwas not erased before verification.\n\nThis will slightly influence the write performance.", "id": "SPI_FLASH_VERIFY_WRITE", "name": "SPI_FLASH_VERIFY_WRITE", @@ -32967,7 +32957,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This option enables the following APIs:\n\n- esp_flash_reset_counters\n- esp_flash_dump_counters\n- esp_flash_get_counters\n\nThese APIs may be used to collect performance data for spi_flash APIs\nand to help understand behaviour of libraries which use SPI flash.", "id": "SPI_FLASH_ENABLE_COUNTERS", "name": "SPI_FLASH_ENABLE_COUNTERS", @@ -32977,7 +32967,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this flag to use patched versions of SPI flash ROM driver functions.\nThis option should be enabled, if any one of the following is true: (1) need to write\nto flash on ESP32-D2WD; (2) main SPI flash is connected to non-default pins; (3) main\nSPI flash chip is manufactured by ISSI.", "id": "SPI_FLASH_ROM_DRIVER_PATCH", "name": "SPI_FLASH_ROM_DRIVER_PATCH", @@ -32987,7 +32977,7 @@ }, { "children": [], - "depends_on": "ESP_ROM_HAS_SPI_FLASH && !ESPTOOLPY_OCT_FLASH && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "ESP_ROM_HAS_SPI_FLASH && !ESPTOOLPY_OCT_FLASH && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this flag to use new SPI flash driver functions from ROM instead of ESP-IDF.\n\nIf keeping this as \"n\" in your project, you will have less free IRAM.\nBut you can use all of our flash features.\n\nIf making this as \"y\" in your project, you will increase free IRAM.\nBut you may miss out on some flash features and support for new flash chips.\n\nCurrently the ROM cannot support the following features:\n\n- SPI_FLASH_AUTO_SUSPEND (C3, S3)", "id": "SPI_FLASH_ROM_IMPL", "name": "SPI_FLASH_ROM_IMPL", @@ -32999,7 +32989,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SPI_FLASH_DANGEROUS_WRITE_ABORTS", "name": "SPI_FLASH_DANGEROUS_WRITE_ABORTS", @@ -33009,7 +32999,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SPI_FLASH_DANGEROUS_WRITE_FAILS", "name": "SPI_FLASH_DANGEROUS_WRITE_FAILS", @@ -33019,7 +33009,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "SPI_FLASH_DANGEROUS_WRITE_ALLOWED", "name": "SPI_FLASH_DANGEROUS_WRITE_ALLOWED", @@ -33028,7 +33018,7 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "SPI flash APIs can optionally abort or return a failure code\nif erasing or writing addresses that fall at the beginning\nof flash (covering the bootloader and partition table) or that\noverlap the app partition that contains the running app.\n\nIt is not recommended to ever write to these regions from an IDF app,\nand this check prevents logic errors or corrupted firmware memory from\ndamaging these regions.\n\nNote that this feature *does not* check calls to the esp_rom_xxx SPI flash\nROM functions. These functions should not be called directly from IDF\napplications.", "id": "component-config-spi-flash-driver-writing-to-dangerous-flash-regions-home-pi-esp-esp-idf-components-spi_flash-Kconfig-271", "name": "SPI_FLASH_DANGEROUS_WRITE", @@ -33037,7 +33027,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32 && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "IDF_TARGET_ESP32 && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Each SPI bus needs a lock for arbitration among devices. This allows multiple\ndevices on a same bus, but may reduce the speed of esp_flash driver access to the\nmain flash chip.\n\nIf you only need to use esp_flash driver to access the main flash chip, disable\nthis option, and the lock will be bypassed on SPI1 bus. Otherwise if extra devices\nare needed to attach to SPI1 bus, enable this option.", "id": "SPI_FLASH_SHARE_SPI1_BUS", "name": "SPI_FLASH_SHARE_SPI1_BUS", @@ -33047,7 +33037,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Some flash chips can have very high \"max\" erase times, especially for block erase (32KB or 64KB).\nThis option allows to bypass \"block erase\" and always do sector erase commands.\nThis will be much slower overall in most cases, but improves latency for other code to run.", "id": "SPI_FLASH_BYPASS_BLOCK_ERASE", "name": "SPI_FLASH_BYPASS_BLOCK_ERASE", @@ -33078,7 +33068,7 @@ "type": "int" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This allows to yield the CPUs between erase commands.\nPrevents starvation of other tasks.\nPlease use this configuration together with ``SPI_FLASH_ERASE_YIELD_DURATION_MS`` and\n``SPI_FLASH_ERASE_YIELD_TICKS`` after carefully checking flash datasheet to avoid a\nwatchdog timeout.\nFor more information, please check `SPI Flash API` reference documentation\nunder section `OS Function`.", "id": "SPI_FLASH_YIELD_DURING_ERASE", "name": "SPI_FLASH_YIELD_DURING_ERASE", @@ -33088,7 +33078,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Flash write is broken down in terms of multiple (smaller) write operations.\nThis configuration options helps to set individual write chunk size, smaller\nvalue here ensures that cache (and non-IRAM resident interrupts) remains\ndisabled for shorter duration.", "id": "SPI_FLASH_WRITE_CHUNK_SIZE", "name": "SPI_FLASH_WRITE_CHUNK_SIZE", @@ -33101,7 +33091,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "SPI Flash driver uses the flash size configured in bootloader header by default.\nEnable this option to override flash size with latest ESPTOOLPY_FLASHSIZE value from\nthe app header if the size in the bootloader header is incorrect.", "id": "SPI_FLASH_SIZE_OVERRIDE", "name": "SPI_FLASH_SIZE_OVERRIDE", @@ -33111,7 +33101,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This option is helpful if you are using a flash chip whose timeout is quite large or unpredictable.", "id": "SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED", "name": "SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED", @@ -33121,7 +33111,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This option allows the chip driver list to be customized, instead of using the default list provided by\nESP-IDF.\n\nWhen this option is enabled, the default list is no longer compiled or linked. Instead, the\n`default_registered_chips` structure must be provided by the user.\n\nSee example: custom_chip_driver under examples/storage for more details.", "id": "SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST", "name": "SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST", @@ -33133,7 +33123,7 @@ "children": [ { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "SPI_FLASH_VENDOR_XMC_SUPPORT_ENABLED", "name": "SPI_FLASH_VENDOR_XMC_SUPPORT_ENABLED", @@ -33143,7 +33133,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "SPI_FLASH_VENDOR_GD_SUPPORT_ENABLED", "name": "SPI_FLASH_VENDOR_GD_SUPPORT_ENABLED", @@ -33153,7 +33143,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "SPI_FLASH_VENDOR_ISSI_SUPPORT_ENABLED", "name": "SPI_FLASH_VENDOR_ISSI_SUPPORT_ENABLED", @@ -33163,7 +33153,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "SPI_FLASH_VENDOR_MXIC_SUPPORT_ENABLED", "name": "SPI_FLASH_VENDOR_MXIC_SUPPORT_ENABLED", @@ -33173,7 +33163,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "SPI_FLASH_VENDOR_WINBOND_SUPPORT_ENABLED", "name": "SPI_FLASH_VENDOR_WINBOND_SUPPORT_ENABLED", @@ -33183,7 +33173,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "SPI_FLASH_VENDOR_BOYA_SUPPORT_ENABLED", "name": "SPI_FLASH_VENDOR_BOYA_SUPPORT_ENABLED", @@ -33193,7 +33183,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": null, "id": "SPI_FLASH_VENDOR_TH_SUPPORT_ENABLED", "name": "SPI_FLASH_VENDOR_TH_SUPPORT_ENABLED", @@ -33203,7 +33193,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this to support auto detection of ISSI chips if chip vendor not directly\ngiven by ``chip_drv`` member of the chip struct. This adds support for variant\nchips, however will extend detecting time.", "id": "SPI_FLASH_SUPPORT_ISSI_CHIP", "name": "SPI_FLASH_SUPPORT_ISSI_CHIP", @@ -33213,7 +33203,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this to support auto detection of MXIC chips if chip vendor not directly\ngiven by ``chip_drv`` member of the chip struct. This adds support for variant\nchips, however will extend detecting time.", "id": "SPI_FLASH_SUPPORT_MXIC_CHIP", "name": "SPI_FLASH_SUPPORT_MXIC_CHIP", @@ -33223,7 +33213,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this to support auto detection of GD (GigaDevice) chips if chip vendor not\ndirectly given by ``chip_drv`` member of the chip struct. If you are using Wrover\nmodules, please don't disable this, otherwise your flash may not work in 4-bit\nmode.\n\nThis adds support for variant chips, however will extend detecting time and image\nsize. Note that the default chip driver supports the GD chips with product ID\n60H.", "id": "SPI_FLASH_SUPPORT_GD_CHIP", "name": "SPI_FLASH_SUPPORT_GD_CHIP", @@ -33233,7 +33223,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this to support auto detection of Winbond chips if chip vendor not directly\ngiven by ``chip_drv`` member of the chip struct. This adds support for variant\nchips, however will extend detecting time.", "id": "SPI_FLASH_SUPPORT_WINBOND_CHIP", "name": "SPI_FLASH_SUPPORT_WINBOND_CHIP", @@ -33243,7 +33233,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this to support auto detection of BOYA chips if chip vendor not directly\ngiven by ``chip_drv`` member of the chip struct. This adds support for variant\nchips, however will extend detecting time.", "id": "SPI_FLASH_SUPPORT_BOYA_CHIP", "name": "SPI_FLASH_SUPPORT_BOYA_CHIP", @@ -33253,7 +33243,7 @@ }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this to support auto detection of TH chips if chip vendor not directly\ngiven by ``chip_drv`` member of the chip struct. This adds support for variant\nchips, however will extend detecting time.", "id": "SPI_FLASH_SUPPORT_TH_CHIP", "name": "SPI_FLASH_SUPPORT_TH_CHIP", @@ -33263,7 +33253,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32S3 && !APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "IDF_TARGET_ESP32S3 && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "Enable this to support auto detection of Octal MXIC chips if chip vendor not directly\ngiven by ``chip_drv`` member of the chip struct. This adds support for variant\nchips, however will extend detecting time.", "id": "SPI_FLASH_SUPPORT_MXIC_OPI_CHIP", "name": "SPI_FLASH_SUPPORT_MXIC_OPI_CHIP", @@ -33272,14 +33262,14 @@ "type": "bool" } ], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "id": "component-config-spi-flash-driver-auto-detect-flash-chips-home-pi-esp-esp-idf-components-spi_flash-Kconfig-382", "title": "Auto-detect flash chips", "type": "menu" }, { "children": [], - "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP", + "depends_on": "!APP_BUILD_TYPE_PURE_RAM_APP && !APP_BUILD_TYPE_PURE_RAM_APP", "help": "This option enables flash read/write operations to encrypted partition/s. This option\nis kept enabled irrespective of state of flash encryption feature. However, in case\napplication is not using flash encryption feature and is in need of some additional\nmemory from IRAM region (~1KB) then this config can be disabled.", "id": "SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE", "name": "SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE", @@ -33643,7 +33633,7 @@ "type": "int" } ], - "depends_on": "SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED", + "depends_on": "(SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Enable this feature if you plan to use the ULP Co-processor.\nOnce this option is enabled, further ULP co-processor configuration will appear in the menu.", "id": "ULP_COPROC_ENABLED", "name": "ULP_COPROC_ENABLED", @@ -33655,7 +33645,7 @@ "children": [ { "children": [], - "depends_on": "ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Turn on this setting to enabled interrupts on the ULP RISC-V core.", "id": "ULP_RISCV_INTERRUPT_ENABLE", "name": "ULP_RISCV_INTERRUPT_ENABLE", @@ -33665,7 +33655,7 @@ }, { "children": [], - "depends_on": "ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "The accuracy of the bitbanged UART driver is limited, it is not\nrecommend to increase the value above 19200.", "id": "ULP_RISCV_UART_BAUDRATE", "name": "ULP_RISCV_UART_BAUDRATE", @@ -33675,7 +33665,7 @@ }, { "children": [], - "depends_on": "ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Set the ULP RISC-V I2C read/write timeout. Set this value to -1\nif the ULP RISC-V I2C read and write APIs should wait forever.\nPlease note that the tick rate of the ULP co-processor would be\ndifferent than the OS tick rate of the main core and therefore\ncan have different timeout value depending on which core the API\nis invoked on.", "id": "ULP_RISCV_I2C_RW_TIMEOUT", "name": "ULP_RISCV_I2C_RW_TIMEOUT", @@ -33684,14 +33674,14 @@ "type": "int" } ], - "depends_on": "ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_RISCV && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "id": "component-config-ultra-low-power-ulp-co-processor-ulp-risc-v-settings-home-pi-esp-esp-idf-components-ulp-Kconfig-43", "title": "ULP RISC-V Settings", "type": "menu" }, { "children": [], - "depends_on": "ULP_COPROC_TYPE_LP_CORE && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_LP_CORE && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Size of the shared memory defined in ulp_lp_core_memory_shared.c.\nSize should be kept in-sync with the size of the struct defined there.", "id": "ULP_SHARED_MEM", "name": "ULP_SHARED_MEM", @@ -33701,7 +33691,7 @@ }, { "children": [], - "depends_on": "ULP_COPROC_TYPE_LP_CORE && ESP_ROM_HAS_LP_ROM && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_LP_CORE && ESP_ROM_HAS_LP_ROM && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Set this option to enable printf functionality from LP ROM. This option\ncan help reduce the LP core binary size by not linking printf functionality\nfrom RAM code.\nNote: For LP ROM prints to work properly, make sure that the LP core boots\nfrom the LP ROM.", "id": "ULP_ROM_PRINT_ENABLE", "name": "ULP_ROM_PRINT_ENABLE", @@ -33711,7 +33701,7 @@ }, { "children": [], - "depends_on": "ULP_COPROC_TYPE_LP_CORE && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_LP_CORE && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Set this option to also trigger a wakeup signal to the HP-CPU when\nthe LP-core encounters an exception.", "id": "ULP_TRAP_WAKEUP", "name": "ULP_TRAP_WAKEUP", @@ -33723,7 +33713,7 @@ "children": [ { "children": [], - "depends_on": "ULP_COPROC_TYPE_LP_CORE && SOC_ULP_LP_UART_SUPPORTED && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_LP_CORE && SOC_ULP_LP_UART_SUPPORTED && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Set this option to enable panic handler functionality. If this option is\nenabled then the LP Core will output a panic dump over LP UART,\nsimilar to what the main core does. Output depends on LP UART already being\ninitialized and configured.\nDisabling this option will reduce the LP core binary size by not\nlinking in panic handler functionality.", "id": "ULP_PANIC_OUTPUT_ENABLE", "name": "ULP_PANIC_OUTPUT_ENABLE", @@ -33733,7 +33723,7 @@ }, { "children": [], - "depends_on": "ULP_COPROC_TYPE_LP_CORE && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_LP_CORE && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Set this option to route lp_core_printf to the console HP-UART.\nThis allows you to easily view print outputs from the LP core, without\nhaving to connect to the LP-UART. This option comes with the following\nlimitations:\n\n1. There is no mutual exclusion between the HP-Core and the LP-Core accessing\nthe HP-UART, which means that if both cores are logging heavily the output\nstrings might get mangled together.\n2. The HP-UART can only work while the HP-Core is running, which means that\nif the HP-Core is in deep sleep, the LP-Core will not be able to print to the\nconsole HP-UART.\n\nDue to these limitations it is only recommended to use this option for easy debugging.\nFor more serious use-cases you should use the LP-UART.", "id": "ULP_HP_UART_CONSOLE_PRINT", "name": "ULP_HP_UART_CONSOLE_PRINT", @@ -33743,7 +33733,7 @@ }, { "children": [], - "depends_on": "ULP_COPROC_TYPE_LP_CORE && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", + "depends_on": "ULP_COPROC_TYPE_LP_CORE && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "help": "Enable this feature to avoid resetting LP core in sleep mode when debugger is attached,\notherwise configured HW breakpoints and dcsr.ebreak* bits will be missed.\nThis is a workaround until it will be fixed in HW.", "id": "ULP_NORESET_UNDER_DEBUG", "name": "ULP_NORESET_UNDER_DEBUG", @@ -33752,7 +33742,7 @@ "type": "bool" } ], - "depends_on": "SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED", + "depends_on": "(SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED) && (SOC_ULP_SUPPORTED || SOC_RISCV_COPROC_SUPPORTED || SOC_LP_CORE_SUPPORTED)", "id": "component-config-ultra-low-power-ulp-co-processor-ulp-debugging-options-home-pi-esp-esp-idf-components-ulp-Kconfig-104", "title": "ULP Debugging Options", "type": "menu" @@ -33845,7 +33835,7 @@ "children": [ { "children": [], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "Each USB device attached is allocated a dedicated buffer for its OUT/IN transfers to/from the device's\ncontrol endpoint. The maximum size of that buffer is determined by this option. The limited size of the\ntransfer buffer have the following implications:\n- The maximum length of control transfers is limited\n- Device's with configuration descriptors larger than this limit cannot be supported", "id": "USB_HOST_CONTROL_TRANSFER_MAX_SIZE", "name": "USB_HOST_CONTROL_TRANSFER_MAX_SIZE", @@ -33857,7 +33847,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "USB_HOST_HW_BUFFER_BIAS_BALANCED", "name": "USB_HOST_HW_BUFFER_BIAS_BALANCED", @@ -33867,7 +33857,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "USB_HOST_HW_BUFFER_BIAS_IN", "name": "USB_HOST_HW_BUFFER_BIAS_IN", @@ -33877,7 +33867,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT", "name": "USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT", @@ -33886,7 +33876,7 @@ "type": "bool" } ], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "The underlying hardware has size adjustable FIFOs to cache USB packets on reception (IN) or for\ntransmission (OUT). The size of these FIFOs will affect the largest MPS (maximum packet size) and the\nmaximum number of packets that can be cached at any one time. The hardware contains the following\nFIFOS: RX (for all IN packets), Non-periodic TX (for Bulk and Control OUT packets), and Periodic TX\n(for Interrupt and Isochronous OUT packets). This configuration option allows biasing the FIFO sizes\ntowards a particular use case, which may be necessary for devices that have endpoints with large MPS.\nThe MPS limits for each biasing are listed below:\n\nBalanced:\n- IN (all transfer types), 408 bytes\n- OUT non-periodic (Bulk/Control), 192 bytes (i.e., 3 x 64 byte packets)\n- OUT periodic (Interrupt/Isochronous), 192 bytes\n\nBias IN:\n- IN (all transfer types), 600 bytes\n- OUT non-periodic (Bulk/Control), 64 bytes (i.e., 1 x 64 byte packets)\n- OUT periodic (Interrupt/Isochronous), 128 bytes\n\nBias Periodic OUT:\n- IN (all transfer types), 128 bytes\n- OUT non-periodic (Bulk/Control), 64 bytes (i.e., 1 x 64 byte packets)\n- OUT periodic (Interrupt/Isochronous), 600 bytes", "id": "component-config-usb-otg-hardware-fifo-size-biasing-home-pi-esp-esp-idf-components-usb-Kconfig-14", "name": "USB_HOST_HW_BUFFER_BIAS", @@ -33899,7 +33889,7 @@ "children": [ { "children": [], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "On connection of a USB device, the USB 2.0 specification requires\na \"debounce interval with a minimum duration of 100ms\" to allow the connection to stabilize\n(see USB 2.0 chapter 7.1.7.3 for more details).\nDuring the debounce interval, no new connection/disconnection events are registered.\n\nThe default value is set to 250 ms to be safe.", "id": "USB_HOST_DEBOUNCE_DELAY_MS", "name": "USB_HOST_DEBOUNCE_DELAY_MS", @@ -33909,7 +33899,7 @@ }, { "children": [], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "The reset signaling can be generated on any Hub or Host Controller port by request from\nthe USB System Software. The USB 2.0 specification requires that \"the reset signaling must\nbe driven for a minimum of 10ms\" (see USB 2.0 chapter 7.1.7.5 for more details).\nAfter the reset, the hub port will transition to the Enabled state (refer to Section 11.5).\n\nThe default value is set to 30 ms to be safe.", "id": "USB_HOST_RESET_HOLD_MS", "name": "USB_HOST_RESET_HOLD_MS", @@ -33919,7 +33909,7 @@ }, { "children": [], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "After a port stops driving the reset signal, the USB 2.0 specification requires that\nthe \"USB System Software guarantees a minimum of 10 ms for reset recovery\" before the\nattached device is expected to respond to data transfers (see USB 2.0 chapter 7.1.7.3 for\nmore details).\nThe device may ignore any data transfers during the recovery interval.\n\nThe default value is set to 30 ms to be safe.", "id": "USB_HOST_RESET_RECOVERY_MS", "name": "USB_HOST_RESET_RECOVERY_MS", @@ -33929,7 +33919,7 @@ }, { "children": [], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "\"After successful completion of the Status stage, the device is allowed a SetAddress()\nrecovery interval of 2 ms. At the end of this interval, the device must be able to accept\nSetup packets addressed to the new address. Also, at the end of the recovery interval, the\ndevice must not respond to tokens sent to the old address (unless, of course, the old and new\naddress is the same).\" See USB 2.0 chapter 9.2.6.3 for more details.\n\nThe default value is set to 10 ms to be safe.", "id": "USB_HOST_SET_ADDR_RECOVERY_MS", "name": "USB_HOST_SET_ADDR_RECOVERY_MS", @@ -33938,7 +33928,7 @@ "type": "int" } ], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "id": "component-config-usb-otg-hub-driver-configuration-root-port-configuration-home-pi-esp-esp-idf-components-usb-Kconfig-51", "title": "Root Port configuration", "type": "menu" @@ -34005,7 +33995,7 @@ "type": "menu" } ], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "Enables support of external Hubs.", "id": "USB_HOST_HUBS_SUPPORTED", "name": "USB_HOST_HUBS_SUPPORTED", @@ -34014,14 +34004,14 @@ "type": "bool" } ], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "id": "component-config-usb-otg-hub-driver-configuration-home-pi-esp-esp-idf-components-usb-Kconfig-49", "title": "Hub Driver Configuration", "type": "menu" }, { "children": [], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "The enumeration filter callback is called before enumeration of each newly attached device.\nThis callback allows users to control whether a device should be enumerated, and what configuration\nnumber to use when enumerating a device.\n\nIf enabled, the enumeration filter callback can be set via 'usb_host_config_t' when calling\n'usb_host_install()'.", "id": "USB_HOST_ENABLE_ENUM_FILTER_CALLBACK", "name": "USB_HOST_ENABLE_ENUM_FILTER_CALLBACK", @@ -34031,7 +34021,7 @@ }, { "children": [], - "depends_on": "IDF_TARGET_ESP32P4 && SPIRAM && SOC_USB_OTG_SUPPORTED", + "depends_on": "IDF_TARGET_ESP32P4 && SPIRAM && SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": "In the ESP32P4, the USB-DWC internal DMA can access external RAM. Enabling this configuration can save\ninternal RAM by allocating the memory buffers used by the USB-DWC peripheral's DMA to external RAM.\nHowever, it introduces minor performance degradation due to the overhead of accessing external RAM.", "id": "USB_HOST_DWC_DMA_CAP_MEMORY_IN_PSRAM", "name": "USB_HOST_DWC_DMA_CAP_MEMORY_IN_PSRAM", @@ -34041,7 +34031,7 @@ }, { "children": [], - "depends_on": "SOC_USB_OTG_SUPPORTED", + "depends_on": "SOC_USB_OTG_SUPPORTED && SOC_USB_OTG_SUPPORTED", "help": null, "id": "USB_OTG_SUPPORTED", "name": "USB_OTG_SUPPORTED", @@ -34172,7 +34162,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "WL_SECTOR_SIZE_512", "name": "WL_SECTOR_SIZE_512", @@ -34182,7 +34172,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "WL_SECTOR_SIZE_4096", "name": "WL_SECTOR_SIZE_4096", @@ -34212,7 +34202,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "WL_SECTOR_MODE_PERF", "name": "WL_SECTOR_MODE_PERF", @@ -34222,7 +34212,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": null, "id": "WL_SECTOR_MODE_SAFE", "name": "WL_SECTOR_MODE_SAFE", @@ -34347,7 +34337,7 @@ "children": [ { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Scan will end after scanning the entire channel. This option is useful in Mesh WiFi Systems.", "id": "WIFI_PROV_STA_ALL_CHANNEL_SCAN", "name": "WIFI_PROV_STA_ALL_CHANNEL_SCAN", @@ -34357,7 +34347,7 @@ }, { "children": [], - "depends_on": "", + "depends_on": " && ", "help": "Scan will end after an AP matching with the SSID has been detected.", "id": "WIFI_PROV_STA_FAST_SCAN", "name": "WIFI_PROV_STA_FAST_SCAN", diff --git a/esp32/build/esp-idf/esp_app_format/CMakeFiles/__idf_esp_app_format.dir/esp_app_desc.c.obj b/esp32/build/esp-idf/esp_app_format/CMakeFiles/__idf_esp_app_format.dir/esp_app_desc.c.obj index ba636b7bfd108ba3447057427197781f6a0c87ef..f5c26edfa0f709ca1460566bf9fbcc8dae2d9b93 100644 GIT binary patch delta 44 zcmbPoopH)_#tjY3yoMGgCW%I=x+$4OC6$vIS%fDqU{+u^GO{u-url0yocU}z08XC{ AT>t<8 delta 38 ucmbPoopH)_#tjY3>?tWpX(ovVlNnhgCof=DU^le1GO@HW*nFJ%Y&rk}M+~9> diff --git a/esp32/build/esp-idf/esp_app_format/libesp_app_format.a b/esp32/build/esp-idf/esp_app_format/libesp_app_format.a index 53e195eddc1f9836c570feefa09d75288432c91b..f277afa7b64cc4c907f237823fce41fd668c68fc 100644 GIT binary patch delta 40 wcmX?clkvn&#tmCocnvK~OcIS!byG5nN-8HGWHDwpGO{u-url2Io8@de06O>%y#N3J delta 38 ucmX?clkvn&#tmCo*i%xH(o7N!CL6L!PQJpTz;0-1WnyV%u=zL3*>nIP2o2r< diff --git a/esp32/build/esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj b/esp32/build/esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj index 35b232ef4724ab59ccefcd75b208aeea607859ee..d4b4059b018dcfc155d49058643cf24cfda7aded 100644 GIT binary patch literal 73604 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 CU(%WY diff --git a/esp32/build/esp-idf/main/libmain.a b/esp32/build/esp-idf/main/libmain.a index b76446c376c994a009f9fc90369874160414157b..a84d6c54ec146c6ebbe7893854e4858ddf031320 100644 GIT binary patch literal 73750 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 z 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 literal 72018 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 E8^TfRiU0rr diff --git a/esp32/build/log/idf_py_stderr_output_49005 b/esp32/build/log/idf_py_stderr_output_49005 new file mode 100644 index 0000000..c6826eb --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_49005 @@ -0,0 +1,52 @@ +Command: ninja all +Configuration Report + ───────────────────────────────── + Parser Version: 1 + Verbosity: default + Defaults policy: sdkconfig + Status: Finished successfully + + ───────────────────────────────── +CMake Warning at /home/pi/esp/esp-idf/tools/cmake/component_validation.cmake:106 (message): + Private include directory + '/home/pi/esp/esp-idf/components/wpa_supplicant/src' belongs to component + wpa_supplicant but is being used by component esp_wifi. It is recommended + to define the component dependency for esp_wifi on the component + wpa_supplicant, i.e. 'idf_component_register(... PRIV_REQUIRES + wpa_supplicant)' in the CMakeLists.txt of esp_wifi, and specify the + included directory as idf_component_register(... PRIV_INCLUDE_DIRS ) in the CMakeLists.txt of component wpa_supplicant. +Call Stack (most recent call first): + /home/pi/esp/esp-idf/tools/cmake/component_validation.cmake:130 (__component_validation_check_include_dirs) + /home/pi/esp/esp-idf/CMakeLists.txt:338 (__component_validation_run_checks) + + +CMake Warning at /home/pi/esp/esp-idf/tools/cmake/component_validation.cmake:106 (message): + Private include directory + '/home/pi/esp/esp-idf/components/wpa_supplicant/esp_supplicant/src' belongs + to component wpa_supplicant but is being used by component esp_wifi. It is + recommended to define the component dependency for esp_wifi on the + component wpa_supplicant, i.e. 'idf_component_register(... PRIV_REQUIRES + wpa_supplicant)' in the CMakeLists.txt of esp_wifi, and specify the + included directory as idf_component_register(... PRIV_INCLUDE_DIRS ) in the CMakeLists.txt of component wpa_supplicant. +Call Stack (most recent call first): + /home/pi/esp/esp-idf/tools/cmake/component_validation.cmake:130 (__component_validation_check_include_dirs) + /home/pi/esp/esp-idf/CMakeLists.txt:338 (__component_validation_run_checks) + + +CMake Warning at /home/pi/esp/esp-idf/tools/cmake/component_validation.cmake:106 (message): + Private include directory + '/home/pi/esp/esp-idf/components/esp_wifi/wifi_apps/roaming_app/include' + belongs to component esp_wifi but is being used by component + wpa_supplicant. It is recommended to define the component dependency for + wpa_supplicant on the component esp_wifi, i.e. 'idf_component_register(... + PRIV_REQUIRES esp_wifi)' in the CMakeLists.txt of wpa_supplicant, and + specify the included directory as idf_component_register(... + PRIV_INCLUDE_DIRS ) in the CMakeLists.txt of + component esp_wifi. +Call Stack (most recent call first): + /home/pi/esp/esp-idf/tools/cmake/component_validation.cmake:130 (__component_validation_check_include_dirs) + /home/pi/esp/esp-idf/CMakeLists.txt:338 (__component_validation_run_checks) + + diff --git a/esp32/build/log/idf_py_stderr_output_51157 b/esp32/build/log/idf_py_stderr_output_51157 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_51157 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_51801 b/esp32/build/log/idf_py_stderr_output_51801 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_52778 b/esp32/build/log/idf_py_stderr_output_52778 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_52778 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_53858 b/esp32/build/log/idf_py_stderr_output_53858 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_54604 b/esp32/build/log/idf_py_stderr_output_54604 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_59313 b/esp32/build/log/idf_py_stderr_output_59313 new file mode 100644 index 0000000..b243348 --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_59313 @@ -0,0 +1 @@ +Command: ninja all diff --git a/esp32/build/log/idf_py_stderr_output_59682 b/esp32/build/log/idf_py_stderr_output_59682 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_59682 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_60221 b/esp32/build/log/idf_py_stderr_output_60221 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_63871 b/esp32/build/log/idf_py_stderr_output_63871 new file mode 100644 index 0000000..b243348 --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_63871 @@ -0,0 +1 @@ +Command: ninja all diff --git a/esp32/build/log/idf_py_stderr_output_65520 b/esp32/build/log/idf_py_stderr_output_65520 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_65520 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_65969 b/esp32/build/log/idf_py_stderr_output_65969 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_65969 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_66289 b/esp32/build/log/idf_py_stderr_output_66289 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_66289 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_66767 b/esp32/build/log/idf_py_stderr_output_66767 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_66767 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_67342 b/esp32/build/log/idf_py_stderr_output_67342 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_67342 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_67482 b/esp32/build/log/idf_py_stderr_output_67482 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_69389 b/esp32/build/log/idf_py_stderr_output_69389 new file mode 100644 index 0000000..e1e08d6 --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_69389 @@ -0,0 +1,12 @@ +Command: ninja flash + +A fatal error occurred: Could not open /dev/ttyACM0, the port is busy or doesn't exist. +([Errno 11] Could not exclusively lock port /dev/ttyACM0: [Errno 11] Resource temporarily unavailable) + +CMake Error at /home/pi/esp/esp-idf/components/esptool_py/run_serial_tool.cmake:67 (message): + + /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python;;/home/pi/esp/esp-idf/components/esptool_py/esptool/esptool.py;--chip;esp32c3 + failed. + + + diff --git a/esp32/build/log/idf_py_stderr_output_70605 b/esp32/build/log/idf_py_stderr_output_70605 new file mode 100644 index 0000000..b243348 --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_70605 @@ -0,0 +1 @@ +Command: ninja all diff --git a/esp32/build/log/idf_py_stderr_output_71050 b/esp32/build/log/idf_py_stderr_output_71050 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_71050 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_71533 b/esp32/build/log/idf_py_stderr_output_71533 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_73045 b/esp32/build/log/idf_py_stderr_output_73045 new file mode 100644 index 0000000..b243348 --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_73045 @@ -0,0 +1 @@ +Command: ninja all diff --git a/esp32/build/log/idf_py_stderr_output_74201 b/esp32/build/log/idf_py_stderr_output_74201 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_74201 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_74699 b/esp32/build/log/idf_py_stderr_output_74699 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_78221 b/esp32/build/log/idf_py_stderr_output_78221 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_78221 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_79323 b/esp32/build/log/idf_py_stderr_output_79323 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_83775 b/esp32/build/log/idf_py_stderr_output_83775 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_85052 b/esp32/build/log/idf_py_stderr_output_85052 new file mode 100644 index 0000000..b243348 --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_85052 @@ -0,0 +1 @@ +Command: ninja all diff --git a/esp32/build/log/idf_py_stderr_output_85420 b/esp32/build/log/idf_py_stderr_output_85420 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_85420 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_85598 b/esp32/build/log/idf_py_stderr_output_85598 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stderr_output_87956 b/esp32/build/log/idf_py_stderr_output_87956 new file mode 100644 index 0000000..b243348 --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_87956 @@ -0,0 +1 @@ +Command: ninja all diff --git a/esp32/build/log/idf_py_stderr_output_89033 b/esp32/build/log/idf_py_stderr_output_89033 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stderr_output_89033 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stderr_output_89365 b/esp32/build/log/idf_py_stderr_output_89365 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_10934 b/esp32/build/log/idf_py_stdout_output_10934 index 2b249fe..14f4514 100644 --- a/esp32/build/log/idf_py_stdout_output_10934 +++ b/esp32/build/log/idf_py_stdout_output_10934 @@ -124,4 +124,316 @@ ESP32-C3 Status Update #19 - Free heap: 218180 bytes, Uptime: 190212 ms ESP32-C3 Status Update #20 - Free heap: 218180 bytes, Uptime: 200212 ms I (206031) SPI_ESPNOW_BRIDGE: Received 24 bytes from SPI: {"d":{"t":"u"},"bar":{}} I (206031) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"u"},"bar":{}} -I (206031) SPI_ES \ No newline at end of file +I (206031) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #21 - Free heap: 218180 bytes, Uptime: 210212 ms +ESP32-C3 Status Update #22 - Free heap: 218180 bytes, Uptime: 220212 ms +I (221541) SPI_ESPNOW_BRIDGE: Received 24 bytes from SPI: {"d":{"t":"b"},"bar":{}} +I (221541) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b"},"bar":{}} +I (221541) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +I (224931) SPI_ESPNOW_BRIDGE: Received 24 bytes from SPI: {"d":{"t":"b"},"bar":{}} +I (224931) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b"},"bar":{}} +I (224931) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #23 - Free heap: 218180 bytes, Uptime: 230212 ms +ESP32-C3 Status Update #24 - Free heap: 218180 bytes, Uptime: 240212 ms +I (240631) SPI_ESPNOW_BRIDGE: Received 32 bytes from SPI: {"d":{"t":"b","br":10},"bar":{}} +I (240631) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b","br":10},"bar":{}} +I (240631) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #25 - Free heap: 218180 bytes, Uptime: 250212 ms +I (253011) SPI_ESPNOW_BRIDGE: Received 32 bytes from SPI: {"d":{"t":"b","br":10},"bar":{}} +I (253021) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b","br":10},"bar":{}} +I (253021) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +I (257191) SPI_ESPNOW_BRIDGE: Received 32 bytes from SPI: {"d":{"t":"b","br":10},"bar":{}} +I (257191) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b","br":10},"bar":{}} +I (257191) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #26 - Free heap: 218180 bytes, Uptime: 260212 ms +I (261661) SPI_ESPNOW_BRIDGE: Received 32 bytes from SPI: {"d":{"t":"b","br":10},"bar":{}} +I (261661) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b","br":10},"bar":{}} +I (261661) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +I (265091) SPI_ESPNOW_BRIDGE: Received 32 bytes from SPI: {"d":{"t":"b","br":10},"bar":{}} +I (265091) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b","br":10},"bar":{}} +I (265091) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +I (268181) SPI_ESPNOW_BRIDGE: Received 32 bytes from SPI: {"d":{"t":"b","br":10},"bar":{}} +I (268181) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b","br":10},"bar":{}} +I (268191) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #27 - Free heap: 218180 bytes, Uptime: 270212 ms +I (271331) SPI_ESPNOW_BRIDGE: Received 32 bytes from SPI: {"d":{"t":"b","br":10},"bar":{}} +I (271331) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"d":{"t":"b","br":10},"bar":{}} +I (271331) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #28 - Free heap: 218180 bytes, Uptime: 280212 ms +ESP32-C3 Status Update #29 - Free heap: 218180 bytes, Uptime: 290212 ms +ESP32-C3 Status Update #30 - Free heap: 218180 bytes, Uptime: 300212 ms +ESP32-C3 Status Update #31 - Free heap: 218180 bytes, Uptime: 310212 ms +ESP32-C3 Status Update #32 - Free heap: 218180 bytes, Uptime: 320212 ms +ESP32-C3 Status Update #33 - Free heap: 218180 bytes, Uptime: 330212 ms +ESP32-C3 Status Update #34 - Free heap: 218180 bytes, Uptime: 340212 ms +ESP32-C3 Status Update #35 - Free heap: 218180 bytes, Uptime: 350212 ms +ESP32-C3 Status Update #36 - Free heap: 218180 bytes, Uptime: 360212 ms +ESP32-C3 Status Update #37 - Free heap: 218180 bytes, Uptime: 370212 ms +ESP32-C3 Status Update #38 - Free heap: 218180 bytes, Uptime: 380212 ms +ESP32-C3 Status Update #39 - Free heap: 218180 bytes, Uptime: 390212 ms +ESP32-C3 Status Update #40 - Free heap: 218180 bytes, Uptime: 400212 ms +ESP32-C3 Status Update #41 - Free heap: 218180 bytes, Uptime: 410212 ms +ESP32-C3 Status Update #42 - Free heap: 218180 bytes, Uptime: 420212 ms +ESP32-C3 Status Update #43 - Free heap: 218180 bytes, Uptime: 430212 ms +ESP32-C3 Status Update #44 - Free heap: 218180 bytes, Uptime: 440212 ms +ESP32-C3 Status Update #45 - Free heap: 218180 bytes, Uptime: 450212 ms +ESP32-C3 Status Update #46 - Free heap: 218180 bytes, Uptime: 460212 ms +ESP32-C3 Status Update #47 - Free heap: 218180 bytes, Uptime: 470212 ms +ESP32-C3 Status Update #48 - Free heap: 218180 bytes, Uptime: 480212 ms +ESP32-C3 Status Update #49 - Free heap: 218180 bytes, Uptime: 490212 ms +ESP32-C3 Status Update #50 - Free heap: 218180 bytes, Uptime: 500212 ms +ESP32-C3 Status Update #51 - Free heap: 218180 bytes, Uptime: 510212 ms +ESP32-C3 Status Update #52 - Free heap: 218180 bytes, Uptime: 520212 ms +ESP32-C3 Status Update #53 - Free heap: 218180 bytes, Uptime: 530212 ms +ESP32-C3 Status Update #54 - Free heap: 218180 bytes, Uptime: 540212 ms +ESP32-C3 Status Update #55 - Free heap: 218180 bytes, Uptime: 550212 ms +ESP32-C3 Status Update #56 - Free heap: 218180 bytes, Uptime: 560212 ms +ESP32-C3 Status Update #57 - Free heap: 218180 bytes, Uptime: 570212 ms +ESP32-C3 Status Update #58 - Free heap: 218180 bytes, Uptime: 580212 ms +ESP32-C3 Status Update #59 - Free heap: 218180 bytes, Uptime: 590212 ms +ESP32-C3 Status Update #60 - Free heap: 218180 bytes, Uptime: 600212 ms +ESP32-C3 Status Update #61 - Free heap: 218180 bytes, Uptime: 610212 ms +ESP32-C3 Status Update #62 - Free heap: 218180 bytes, Uptime: 620212 ms +ESP32-C3 Status Update #63 - Free heap: 218180 bytes, Uptime: 630212 ms +ESP32-C3 Status Update #64 - Free heap: 218180 bytes, Uptime: 640212 ms +ESP32-C3 Status Update #65 - Free heap: 218180 bytes, Uptime: 650212 ms +ESP32-C3 Status Update #66 - Free heap: 218180 bytes, Uptime: 660212 ms +ESP32-C3 Status Update #67 - Free heap: 218180 bytes, Uptime: 670212 ms +ESP32-C3 Status Update #68 - Free heap: 218180 bytes, Uptime: 680212 ms +ESP32-C3 Status Update #69 - Free heap: 218180 bytes, Uptime: 690212 ms +ESP32-C3 Status Update #70 - Free heap: 218180 bytes, Uptime: 700212 ms +ESP32-C3 Status Update #71 - Free heap: 218180 bytes, Uptime: 710212 ms +ESP32-C3 Status Update #72 - Free heap: 218180 bytes, Uptime: 720212 ms +ESP32-C3 Status Update #73 - Free heap: 218180 bytes, Uptime: 730212 ms +ESP32-C3 Status Update #74 - Free heap: 218180 bytes, Uptime: 740212 ms +ESP32-C3 Status Update #75 - Free heap: 218180 bytes, Uptime: 750212 ms +ESP32-C3 Status Update #76 - Free heap: 218180 bytes, Uptime: 760212 ms +ESP32-C3 Status Update #77 - Free heap: 218180 bytes, Uptime: 770212 ms +ESP32-C3 Status Update #78 - Free heap: 218180 bytes, Uptime: 780212 ms +ESP32-C3 Status Update #79 - Free heap: 218180 bytes, Uptime: 790212 ms +ESP32-C3 Status Update #80 - Free heap: 218180 bytes, Uptime: 800212 ms +ESP32-C3 Status Update #81 - Free heap: 218180 bytes, Uptime: 810212 ms +ESP32-C3 Status Update #82 - Free heap: 218180 bytes, Uptime: 820212 ms +ESP32-C3 Status Update #83 - Free heap: 218180 bytes, Uptime: 830212 ms +ESP32-C3 Status Update #84 - Free heap: 218180 bytes, Uptime: 840212 ms +ESP32-C3 Status Update #85 - Free heap: 218180 bytes, Uptime: 850212 ms +ESP32-C3 Status Update #86 - Free heap: 218180 bytes, Uptime: 860212 ms +ESP32-C3 Status Update #87 - Free heap: 218180 bytes, Uptime: 870212 ms +ESP32-C3 Status Update #88 - Free heap: 218180 bytes, Uptime: 880212 ms +ESP32-C3 Status Update #89 - Free heap: 218180 bytes, Uptime: 890212 ms +ESP32-C3 Status Update #90 - Free heap: 218180 bytes, Uptime: 900212 ms +ESP32-C3 Status Update #91 - Free heap: 218180 bytes, Uptime: 910212 ms +ESP32-C3 Status Update #92 - Free heap: 218180 bytes, Uptime: 920212 ms +ESP32-C3 Status Update #93 - Free heap: 218180 bytes, Uptime: 930212 ms +ESP32-C3 Status Update #94 - Free heap: 218180 bytes, Uptime: 940212 ms +ESP32-C3 Status Update #95 - Free heap: 218180 bytes, Uptime: 950212 ms +ESP32-C3 Status Update #96 - Free heap: 218180 bytes, Uptime: 960212 ms +ESP32-C3 Status Update #97 - Free heap: 218180 bytes, Uptime: 970212 ms +ESP32-C3 Status Update #98 - Free heap: 218180 bytes, Uptime: 980212 ms +ESP32-C3 Status Update #99 - Free heap: 218180 bytes, Uptime: 990212 ms +ESP32-C3 Status Update #100 - Free heap: 218180 bytes, Uptime: 1000212 ms +ESP32-C3 Status Update #101 - Free heap: 218180 bytes, Uptime: 1010212 ms +ESP32-C3 Status Update #102 - Free heap: 218180 bytes, Uptime: 1020212 ms +ESP32-C3 Status Update #103 - Free heap: 218180 bytes, Uptime: 1030212 ms +ESP32-C3 Status Update #104 - Free heap: 218180 bytes, Uptime: 1040212 ms +ESP32-C3 Status Update #105 - Free heap: 218180 bytes, Uptime: 1050212 ms +ESP32-C3 Status Update #106 - Free heap: 218180 bytes, Uptime: 1060212 ms +ESP32-C3 Status Update #107 - Free heap: 218180 bytes, Uptime: 1070212 ms +ESP32-C3 Status Update #108 - Free heap: 218180 bytes, Uptime: 1080212 ms +ESP32-C3 Status Update #109 - Free heap: 218180 bytes, Uptime: 1090212 ms +ESP32-C3 Status Update #110 - Free heap: 218180 bytes, Uptime: 1100212 ms +ESP32-C3 Status Update #111 - Free heap: 218180 bytes, Uptime: 1110212 ms +ESP32-C3 Status Update #112 - Free heap: 218180 bytes, Uptime: 1120212 ms +ESP32-C3 Status Update #113 - Free heap: 218180 bytes, Uptime: 1130212 ms +ESP32-C3 Status Update #114 - Free heap: 218180 bytes, Uptime: 1140212 ms +ESP32-C3 Status Update #115 - Free heap: 218180 bytes, Uptime: 1150212 ms +ESP32-C3 Status Update #116 - Free heap: 218180 bytes, Uptime: 1160212 ms +ESP32-C3 Status Update #117 - Free heap: 218180 bytes, Uptime: 1170212 ms +ESP32-C3 Status Update #118 - Free heap: 218180 bytes, Uptime: 1180212 ms +ESP32-C3 Status Update #119 - Free heap: 218180 bytes, Uptime: 1190212 ms +ESP32-C3 Status Update #120 - Free heap: 218180 bytes, Uptime: 1200212 ms +ESP32-C3 Status Update #121 - Free heap: 218180 bytes, Uptime: 1210212 ms +ESP32-C3 Status Update #122 - Free heap: 218180 bytes, Uptime: 1220212 ms +ESP32-C3 Status Update #123 - Free heap: 218180 bytes, Uptime: 1230212 ms +ESP32-C3 Status Update #124 - Free heap: 218180 bytes, Uptime: 1240212 ms +ESP32-C3 Status Update #125 - Free heap: 218180 bytes, Uptime: 1250212 ms +ESP32-C3 Status Update #126 - Free heap: 218180 bytes, Uptime: 1260212 ms +ESP32-C3 Status Update #127 - Free heap: 218180 bytes, Uptime: 1270212 ms +ESP32-C3 Status Update #128 - Free heap: 218180 bytes, Uptime: 1280212 ms +ESP32-C3 Status Update #129 - Free heap: 218180 bytes, Uptime: 1290212 ms +ESP32-C3 Status Update #130 - Free heap: 218180 bytes, Uptime: 1300212 ms +ESP32-C3 Status Update #131 - Free heap: 218180 bytes, Uptime: 1310212 ms +ESP32-C3 Status Update #132 - Free heap: 218180 bytes, Uptime: 1320212 ms +ESP32-C3 Status Update #133 - Free heap: 218180 bytes, Uptime: 1330212 ms +ESP32-C3 Status Update #134 - Free heap: 218180 bytes, Uptime: 1340212 ms +ESP32-C3 Status Update #135 - Free heap: 218180 bytes, Uptime: 1350212 ms +ESP32-C3 Status Update #136 - Free heap: 218180 bytes, Uptime: 1360212 ms +ESP32-C3 Status Update #137 - Free heap: 218180 bytes, Uptime: 1370212 ms +ESP32-C3 Status Update #138 - Free heap: 218180 bytes, Uptime: 1380212 ms +ESP32-C3 Status Update #139 - Free heap: 218180 bytes, Uptime: 1390212 ms +ESP32-C3 Status Update #140 - Free heap: 218180 bytes, Uptime: 1400212 ms +ESP32-C3 Status Update #141 - Free heap: 218180 bytes, Uptime: 1410212 ms +ESP32-C3 Status Update #142 - Free heap: 218180 bytes, Uptime: 1420212 ms +ESP32-C3 Status Update #143 - Free heap: 218180 bytes, Uptime: 1430212 ms +ESP32-C3 Status Update #144 - Free heap: 218180 bytes, Uptime: 1440212 ms +ESP32-C3 Status Update #145 - Free heap: 218180 bytes, Uptime: 1450212 ms +ESP32-C3 Status Update #146 - Free heap: 218180 bytes, Uptime: 1460212 ms +ESP32-C3 Status Update #147 - Free heap: 218180 bytes, Uptime: 1470212 ms +ESP32-C3 Status Update #148 - Free heap: 218180 bytes, Uptime: 1480212 ms +ESP32-C3 Status Update #149 - Free heap: 218180 bytes, Uptime: 1490212 ms +ESP32-C3 Status Update #150 - Free heap: 218180 bytes, Uptime: 1500212 ms +ESP32-C3 Status Update #151 - Free heap: 218180 bytes, Uptime: 1510212 ms +ESP32-C3 Status Update #152 - Free heap: 218180 bytes, Uptime: 1520212 ms +ESP32-C3 Status Update #153 - Free heap: 218180 bytes, Uptime: 1530212 ms +ESP32-C3 Status Update #154 - Free heap: 218180 bytes, Uptime: 1540212 ms +ESP32-C3 Status Update #155 - Free heap: 218180 bytes, Uptime: 1550212 ms +ESP32-C3 Status Update #156 - Free heap: 218180 bytes, Uptime: 1560212 ms +ESP32-C3 Status Update #157 - Free heap: 218180 bytes, Uptime: 1570212 ms +ESP32-C3 Status Update #158 - Free heap: 218180 bytes, Uptime: 1580212 ms +ESP32-C3 Status Update #159 - Free heap: 218180 bytes, Uptime: 1590212 ms +ESP32-C3 Status Update #160 - Free heap: 218180 bytes, Uptime: 1600212 ms +ESP32-C3 Status Update #161 - Free heap: 218180 bytes, Uptime: 1610212 ms +ESP32-C3 Status Update #162 - Free heap: 218180 bytes, Uptime: 1620212 ms +ESP32-C3 Status Update #163 - Free heap: 218180 bytes, Uptime: 1630212 ms +ESP32-C3 Status Update #164 - Free heap: 218180 bytes, Uptime: 1640212 ms +ESP32-C3 Status Update #165 - Free heap: 218180 bytes, Uptime: 1650212 ms +ESP32-C3 Status Update #166 - Free heap: 218180 bytes, Uptime: 1660212 ms +ESP32-C3 Status Update #167 - Free heap: 218180 bytes, Uptime: 1670212 ms +ESP32-C3 Status Update #168 - Free heap: 218180 bytes, Uptime: 1680212 ms +ESP32-C3 Status Update #169 - Free heap: 218180 bytes, Uptime: 1690212 ms +ESP32-C3 Status Update #170 - Free heap: 218180 bytes, Uptime: 1700212 ms +ESP32-C3 Status Update #171 - Free heap: 218180 bytes, Uptime: 1710212 ms +ESP32-C3 Status Update #172 - Free heap: 218180 bytes, Uptime: 1720212 ms +ESP32-C3 Status Update #173 - Free heap: 218180 bytes, Uptime: 1730212 ms +ESP32-C3 Status Update #174 - Free heap: 218180 bytes, Uptime: 1740212 ms +ESP32-C3 Status Update #175 - Free heap: 218180 bytes, Uptime: 1750212 ms +ESP32-C3 Status Update #176 - Free heap: 218180 bytes, Uptime: 1760212 ms +ESP32-C3 Status Update #177 - Free heap: 218180 bytes, Uptime: 1770212 ms +ESP32-C3 Status Update #178 - Free heap: 218180 bytes, Uptime: 1780212 ms +ESP32-C3 Status Update #179 - Free heap: 218180 bytes, Uptime: 1790212 ms +ESP32-C3 Status Update #180 - Free heap: 218180 bytes, Uptime: 1800212 ms +ESP32-C3 Status Update #181 - Free heap: 218180 bytes, Uptime: 1810212 ms +ESP32-C3 Status Update #182 - Free heap: 218180 bytes, Uptime: 1820212 ms +ESP32-C3 Status Update #183 - Free heap: 218180 bytes, Uptime: 1830212 ms +E-C3 Status Update #184 - Free heap: 218180 bytes, Uptime: 1840212 ms +ES32-C3 Status Update #185 - Free heap: 218180 bytes, Uptime: 1850212 ms +ESP32-C3 Status Update #186 - Free heap: 218180 bytes, Uptime: 1860212 ms +ESP32-C3 Status Update #187 - Free heap: 218180 bytes, Uptime: 1870212 ms +ESP32-C3 Status Update #188 - Free heap: 218180 bytes, Uptime: 1880212 ms +ESP32-C3 Status Update #189 - Free heap: 218180 bytes, Uptime: 1890212 ms +ESP32-C3 Status Update #190 - Free heap: 218180 bytes, Uptime: 1900212 ms +I (1902211) SPI_ESPNOW_BRIDGE: Received 28 bytes from SPI: {"settings":{},"save":false} +I (1902221) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{},"save":false} +I (1902221) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #191 - Free heap: 218180 bytes, Uptime: 1910212 ms +I (1916231) SPI_ESPNOW_BRIDGE: Received 43 bytes from SPI: {"settings":{"pattern":"off"},"save":false} +I (1916231) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{"pattern":"off"},"save":false} +I (1916231) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #192 - Free heap: 218180 bytes, Uptime: 1920212 ms +I (1922091) SPI_ESPNOW_BRIDGE: Received 42 bytes from SPI: {"settings":{"pattern":"on"},"save":false} +I (1922091) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{"pattern":"on"},"save":false} +I (1922091) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +I (1928411) SPI_ESPNOW_BRIDGE: Received 42 bytes from SPI: {"settings":{"pattern":"on"},"save":false} +I (1928411) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{"pattern":"on"},"save":false} +I (1928421) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #193 - Free heap: 218180 bytes, Uptime: 1930212 ms +ESP32-C3 Status Update #194 - Free heap: 218180 bytes, Uptime: 1940212 ms +I (1947851) SPI_ESPNOW_BRIDGE: Received 43 bytes from SPI: {"settings":{"pattern":"off"},"save":false} +I (1947851) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{"pattern":"off"},"save":false} +I (1947851) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #195 - Free heap: 218180 bytes, Uptime: 1950212 ms +I (1952051) SPI_ESPNOW_BRIDGE: Received 42 bytes from SPI: {"settings":{"pattern":"on"},"save":false} +I (1952051) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{"pattern":"on"},"save":false} +I (1952051) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #196 - Free heap: 218180 bytes, Uptime: 1960212 ms +I (1962831) SPI_ESPNOW_BRIDGE: Received 28 bytes from SPI: {"settings":{},"save":false} +I (1962831) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{},"save":false} +I (1962831) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #197 - Free heap: 218180 bytes, Uptime: 1970212 ms +ESP32-C3 Status Update #198 - Free heap: 218180 bytes, Uptime: 1980212 ms +ESP32-C3 Status Update #199 - Free heap: 218180 bytes, Uptime: 1990212 ms +ESP32-C3 Status Update #200 - Free heap: 218180 bytes, Uptime: 2000212 ms +ESP32-C3 Status Update #201 - Free heap: 218180 bytes, Uptime: 2010212 ms +ESP32-C3 Status Update #202 - Free heap: 218180 bytes, Uptime: 2020212 ms +ESP32-C3 Status Update #203 - Free heap: 218180 bytes, Uptime: 2030212 ms +ESP32-C3 Status Update #204 - Free heap: 218180 bytes, Uptime: 2040212 ms +ESP32-C3 Status Update #205 - Free heap: 218180 bytes, Uptime: 2050212 ms +ESP32-C3 Status Update #206 - Free heap: 218180 bytes, Uptime: 2060212 ms +ESP32-C3 Status Update #207 - Free heap: 218180 bytes, Uptime: 2070212 ms +ESP32-C3 Status Update #208 - Free heap: 218180 bytes, Uptime: 2080212 ms +ESP32-C3 Status Update #209 - Free heap: 218180 bytes, Uptime: 2090212 ms +ESP32-C3 Status Update #210 - Free heap: 218180 bytes, Uptime: 2100212 ms +ESP32-C3 Status Update #211 - Free heap: 218180 bytes, Uptime: 2110212 ms +ESP32-C3 Status Update #212 - Free heap: 218180 bytes, Uptime: 2120212 ms +ESP32-C3 Status Update #213 - Free heap: 218180 bytes, Uptime: 2130212 ms +ESP32-C3 Status Update #214 - Free heap: 218180 bytes, Uptime: 2140212 ms +ESP32-C3 Status Update #215 - Free heap: 218180 bytes, Uptime: 2150212 ms +ESP32-C3 Status Update #216 - Free heap: 218180 bytes, Uptime: 2160212 ms +ESP32-C3 Status Update #217 - Free heap: 218180 bytes, Uptime: 2170212 ms +ESP32-C3 Status Update #218 - Free heap: 218180 bytes, Uptime: 2180212 ms +ESP32-C3 Status Update #219 - Free heap: 218180 bytes, Uptime: 2190212 ms +ESP32-C3 Status Update #220 - Free heap: 218180 bytes, Uptime: 2200212 ms +ESP32-C3 Status Update #221 - Free heap: 218180 bytes, Uptime: 2210212 ms +ESP32-C3 Status Update #222 - Free heap: 218180 bytes, Uptime: 2220212 ms +ESP32-C3 Status Update #223 - Free heap: 218180 bytes, Uptime: 2230212 ms +ESP32-C3 Status Update #224 - Free heap: 218180 bytes, Uptime: 2240212 ms +ESP32-C3 Status Update #225 - Free heap: 218180 bytes, Uptime: 2250212 ms +ESP32-C3 Status Update #226 - Free heap: 218180 bytes, Uptime: 2260212 ms +I (2269621) SPI_ESPNOW_BRIDGE: Received 63 bytes from SPI: {"settings":{"pattern":"on","colors":["#ff0000"]},"save":false} +I (2269621) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{"pattern":"on","colors":["#ff0000"]},"save":false} +I (2269621) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #227 - Free heap: 218180 bytes, Uptime: 2270212 ms +ESP32-C3 Status Update #228 - Free heap: 218180 bytes, Uptime: 2280212 ms +ESP32-C3 Status Update #229 - Free heap: 218180 bytes, Uptime: 2290212 ms +ESP32-C3 Status Update #230 - Free heap: 218180 bytes, Uptime: 2300212 ms +ESP32-C3 Status Update #231 - Free heap: 218180 bytes, Uptime: 2310212 ms +ESP32-C3 Status Update #232 - Free heap: 218180 bytes, Uptime: 2320212 ms +ESP32-C3 Status Update #233 - Free heap: 218180 bytes, Uptime: 2330212 ms +ESP32-C3 Status Update #234 - Free heap: 218180 bytes, Uptime: 2340212 ms +ESP32-C3 Status Update #235 - Free heap: 218180 bytes, Uptime: 2350212 ms +ESP32-C3 Status Update #236 - Free heap: 218180 bytes, Uptime: 2360212 ms +ESP32-C3 Status Update #237 - Free heap: 218180 bytes, Uptime: 2370212 ms +ESP32-C3 Status Update #238 - Free heap: 218180 bytes, Uptime: 2380212 ms +ESP32-C3 Status Update #239 - Free heap: 218180 bytes, Uptime: 2390212 ms +ESP32-C3 Status Update #240 - Free heap: 218180 bytes, Uptime: 2400212 ms +ESP32-C3 Status Update #241 - Free heap: 218180 bytes, Uptime: 2410212 ms +ESP32-C3 Status Update #242 - Free heap: 218180 bytes, Uptime: 2420212 ms +ESP32-C3 Status Update #243 - Free heap: 218180 bytes, Uptime: 2430212 ms +ESP32-C3 Status Update #244 - Free heap: 218180 bytes, Uptime: 2440212 ms +ESP32-C3 Status Update #245 - Free heap: 218180 bytes, Uptime: 2450212 ms +ESP32-C3 Status Update #246 - Free heap: 218180 bytes, Uptime: 2460212 ms +ESP32-C3 Status Update #247 - Free heap: 218180 bytes, Uptime: 2470212 ms +ESP32-C3 Status Update #248 - Free heap: 218180 bytes, Uptime: 2480212 ms +ESP32-C3 Status Update #249 - Free heap: 218180 bytes, Uptime: 2490212 ms +ESP32-C3 Status Update #250 - Free heap: 218180 bytes, Uptime: 2500212 ms +ESP32-C3 Status Update #251 - Free heap: 218180 bytes, Uptime: 2510212 ms +ESP32-C3 Status Update #252 - Free heap: 218180 bytes, Uptime: 2520212 ms +ESP32-C3 Status Update #253 - Free heap: 218180 bytes, Uptime: 2530212 ms +ESP32-C3 Status Update #254 - Free heap: 218180 bytes, Uptime: 2540212 ms +ESP32-C3 Status Update #255 - Free heap: 218180 bytes, Uptime: 2550212 ms +ESP32-C3 Status Update #256 - Free heap: 218180 bytes, Uptime: 2560212 ms +I (2561741) SPI_ESPNOW_BRIDGE: Received 63 bytes from SPI: {"settings":{"pattern":"on","colors":["#ff0000"]},"save":false} +I (2561741) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{"pattern":"on","colors":["#ff0000"]},"save":false} +I (2561751) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #257 - Free heap: 218180 bytes, Uptime: 2570212 ms +ESP32-C3 Status Update #258 - Free heap: 218180 bytes, Uptime: 2580212 ms +ESP32-C3 Status Update #259 - Free heap: 218180 bytes, Uptime: 2590212 ms +ESP32-C3 Status Update #260 - Free heap: 218180 bytes, Uptime: 2600212 ms +ESP32-C3 Status Update #261 - Free heap: 218180 bytes, Uptime: 2610212 ms +I (2617701) SPI_ESPNOW_BRIDGE: Received 63 bytes from SPI: {"settings":{"pattern":"on","colors":["#ff0000"]},"save":false} +I (2617701) SPI_ESPNOW_BRIDGE: Sent JSON message to broadcast: {"settings":{"pattern":"on","colors":["#ff0000"]},"save":false} +I (2617711) SPI_ESPNOW_BRIDGE: ESP-NOW send status: SUCCESS +ESP32-C3 Status Update #262 - Free heap: 218180 bytes, Uptime: 2620212 ms +ESP32-C3 Status Update #263 - Free heap: 218180 bytes, Uptime: 2630212 ms +ESP32-C3 Status Update #264 - Free heap: 218180 bytes, Uptime: 2640212 ms +ESP32-C3 Status Update #265 - Free heap: 218180 bytes, Uptime: 2650212 ms +ESP32-C3 Status Update #266 - Free heap: 218180 bytes, Uptime: 2660212 ms +ESP32-C3 Status Update #267 - Free heap: 218180 bytes, Uptime: 2670212 ms +ESP32-C3 Status Update #268 - Free heap: 218180 bytes, Uptime: 2680212 ms +ESP32-C3 Status Update #269 - Free heap: 218180 bytes, Uptime: 2690212 ms +ESP32-C3 Status Update #270 - Free heap: 218180 bytes, Uptime: 2700212 ms +ESP32-C3 Status Update #271 - Free heap: 218180 bytes, Uptime: 2710212 ms +ESP32-C3 Status Update #272 - Free heap: 218180 bytes, Uptime: 2720212 ms +ESP32-C3 Status Update #273 - Free heap: 218180 bytes, Uptime: 2730212 ms +ESP32-C3 Status Update #274 - Free heap: 218180 bytes, Uptime: 2740212 ms +ESP32-C3 Status Update #275 - F \ No newline at end of file diff --git a/esp32/build/log/idf_py_stdout_output_49005 b/esp32/build/log/idf_py_stdout_output_49005 new file mode 100644 index 0000000..60b6cbe --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_49005 @@ -0,0 +1,57 @@ +Command: ninja all +[0/1] Re-running CMake... +-- Minimal build - OFF +-- Building ESP-IDF components for target esp32c3 +-- ESP-TEE is currently supported only on the esp32c6;esp32h2;esp32c5 SoCs +-- Project sdkconfig file /home/pi/lighting-controller/esp32/sdkconfig +-- Adding linker script /home/pi/esp/esp-idf/components/riscv/ld/rom.api.ld +-- App "spi_slave" version: 1844a2e-dirty +-- USING O3 +-- Adding linker script /home/pi/esp/esp-idf/components/esp_system/ld/esp32c3/memory.ld.in +-- -> Preprocessing .in script: /home/pi/esp/esp-idf/components/esp_system/ld/esp32c3/memory.ld.in +-- Adding linker script /home/pi/esp/esp-idf/components/esp_system/ld/esp32c3/sections.ld.in +-- -> Preprocessing .in script: /home/pi/esp/esp-idf/components/esp_system/ld/esp32c3/sections.ld.in +-- -> Applying ldgen processing: /home/pi/lighting-controller/esp32/build/esp-idf/esp_system/ld/sections.ld.in +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.bt_funcs.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_master.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_50.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_smp.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_dtm.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_test.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.ble_scan.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3_bt_funcs.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.libc.ld +-- Adding linker script /home/pi/esp/esp-idf/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld +-- Adding linker script /home/pi/esp/esp-idf/components/soc/esp32c3/ld/esp32c3.peripherals.ld +-- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_blockdev esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_bitscrambler esp_driver_cam esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_i3c esp_driver_isp esp_driver_jpeg esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_ppa esp_driver_rmt esp_driver_sd_intf esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_touch_sens esp_driver_tsens esp_driver_twai esp_driver_uart esp_driver_usb_serial_jtag esp_eth esp_event esp_gdbstub esp_hal_i2c esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_libc esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_security esp_system esp_timer esp_usb_cdc_rom_console esp_vfs_console esp_wifi espcoredump esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt nvs_flash nvs_sec_provider openthread partition_table protobuf-c protocomm pthread riscv rt sdmmc soc spi_flash spiffs tcp_transport ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant +-- Component paths: /home/pi/esp/esp-idf/components/app_trace /home/pi/esp/esp-idf/components/app_update /home/pi/esp/esp-idf/components/bootloader /home/pi/esp/esp-idf/components/bootloader_support /home/pi/esp/esp-idf/components/bt /home/pi/esp/esp-idf/components/cmock /home/pi/esp/esp-idf/components/console /home/pi/esp/esp-idf/components/cxx /home/pi/esp/esp-idf/components/driver /home/pi/esp/esp-idf/components/efuse /home/pi/esp/esp-idf/components/esp-tls /home/pi/esp/esp-idf/components/esp_adc /home/pi/esp/esp-idf/components/esp_app_format /home/pi/esp/esp-idf/components/esp_blockdev /home/pi/esp/esp-idf/components/esp_bootloader_format /home/pi/esp/esp-idf/components/esp_coex /home/pi/esp/esp-idf/components/esp_common /home/pi/esp/esp-idf/components/esp_driver_ana_cmpr /home/pi/esp/esp-idf/components/esp_driver_bitscrambler /home/pi/esp/esp-idf/components/esp_driver_cam /home/pi/esp/esp-idf/components/esp_driver_dac /home/pi/esp/esp-idf/components/esp_driver_gpio /home/pi/esp/esp-idf/components/esp_driver_gptimer /home/pi/esp/esp-idf/components/esp_driver_i2c /home/pi/esp/esp-idf/components/esp_driver_i2s /home/pi/esp/esp-idf/components/esp_driver_i3c /home/pi/esp/esp-idf/components/esp_driver_isp /home/pi/esp/esp-idf/components/esp_driver_jpeg /home/pi/esp/esp-idf/components/esp_driver_ledc /home/pi/esp/esp-idf/components/esp_driver_mcpwm /home/pi/esp/esp-idf/components/esp_driver_parlio /home/pi/esp/esp-idf/components/esp_driver_pcnt /home/pi/esp/esp-idf/components/esp_driver_ppa /home/pi/esp/esp-idf/components/esp_driver_rmt /home/pi/esp/esp-idf/components/esp_driver_sd_intf /home/pi/esp/esp-idf/components/esp_driver_sdio /home/pi/esp/esp-idf/components/esp_driver_sdm /home/pi/esp/esp-idf/components/esp_driver_sdmmc /home/pi/esp/esp-idf/components/esp_driver_sdspi /home/pi/esp/esp-idf/components/esp_driver_spi /home/pi/esp/esp-idf/components/esp_driver_touch_sens /home/pi/esp/esp-idf/components/esp_driver_tsens /home/pi/esp/esp-idf/components/esp_driver_twai /home/pi/esp/esp-idf/components/esp_driver_uart /home/pi/esp/esp-idf/components/esp_driver_usb_serial_jtag /home/pi/esp/esp-idf/components/esp_eth /home/pi/esp/esp-idf/components/esp_event /home/pi/esp/esp-idf/components/esp_gdbstub /home/pi/esp/esp-idf/components/esp_hal_i2c /home/pi/esp/esp-idf/components/esp_hid /home/pi/esp/esp-idf/components/esp_http_client /home/pi/esp/esp-idf/components/esp_http_server /home/pi/esp/esp-idf/components/esp_https_ota /home/pi/esp/esp-idf/components/esp_https_server /home/pi/esp/esp-idf/components/esp_hw_support /home/pi/esp/esp-idf/components/esp_lcd /home/pi/esp/esp-idf/components/esp_libc /home/pi/esp/esp-idf/components/esp_local_ctrl /home/pi/esp/esp-idf/components/esp_mm /home/pi/esp/esp-idf/components/esp_netif /home/pi/esp/esp-idf/components/esp_netif_stack /home/pi/esp/esp-idf/components/esp_partition /home/pi/esp/esp-idf/components/esp_phy /home/pi/esp/esp-idf/components/esp_pm /home/pi/esp/esp-idf/components/esp_psram /home/pi/esp/esp-idf/components/esp_ringbuf /home/pi/esp/esp-idf/components/esp_rom /home/pi/esp/esp-idf/components/esp_security /home/pi/esp/esp-idf/components/esp_system /home/pi/esp/esp-idf/components/esp_timer /home/pi/esp/esp-idf/components/esp_usb_cdc_rom_console /home/pi/esp/esp-idf/components/esp_vfs_console /home/pi/esp/esp-idf/components/esp_wifi /home/pi/esp/esp-idf/components/espcoredump /home/pi/esp/esp-idf/components/esptool_py /home/pi/esp/esp-idf/components/fatfs /home/pi/esp/esp-idf/components/freertos /home/pi/esp/esp-idf/components/hal /home/pi/esp/esp-idf/components/heap /home/pi/esp/esp-idf/components/http_parser /home/pi/esp/esp-idf/components/idf_test /home/pi/esp/esp-idf/components/ieee802154 /home/pi/esp/esp-idf/components/json /home/pi/esp/esp-idf/components/log /home/pi/esp/esp-idf/components/lwip /home/pi/lighting-controller/esp32/main /home/pi/esp/esp-idf/components/mbedtls /home/pi/esp/esp-idf/components/mqtt /home/pi/esp/esp-idf/components/nvs_flash /home/pi/esp/esp-idf/components/nvs_sec_provider /home/pi/esp/esp-idf/components/openthread /home/pi/esp/esp-idf/components/partition_table /home/pi/esp/esp-idf/components/protobuf-c /home/pi/esp/esp-idf/components/protocomm /home/pi/esp/esp-idf/components/pthread /home/pi/esp/esp-idf/components/riscv /home/pi/esp/esp-idf/components/rt /home/pi/esp/esp-idf/components/sdmmc /home/pi/esp/esp-idf/components/soc /home/pi/esp/esp-idf/components/spi_flash /home/pi/esp/esp-idf/components/spiffs /home/pi/esp/esp-idf/components/tcp_transport /home/pi/esp/esp-idf/components/ulp /home/pi/esp/esp-idf/components/unity /home/pi/esp/esp-idf/components/usb /home/pi/esp/esp-idf/components/vfs /home/pi/esp/esp-idf/components/wear_levelling /home/pi/esp/esp-idf/components/wifi_provisioning /home/pi/esp/esp-idf/components/wpa_supplicant +-- Configuring done +-- Generating done +-- Build files have been written to: /home/pi/lighting-controller/esp32/build +[1/11] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[2/11] No install step for 'bootloader' +[3/11] Completed 'bootloader' +[4/11] Building C object esp-idf/esp_app_format/CMakeFiles/__idf_esp_app_format.dir/esp_app_desc.c.obj +[5/11] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +[6/11] Linking C static library esp-idf/esp_app_format/libesp_app_format.a +[7/11] Linking C static library esp-idf/main/libmain.a +[8/11] Generating esp-idf/esp_system/ld/sections.ld +[9/11] Linking CXX executable spi_slave.elf +[10/11] Generating binary image from built executable +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +esptool v5.1.0 +Creating ESP32C3 image... +Merged 1 ELF section. +Successfully created ESP32C3 image. +Generated /home/pi/lighting-controller/esp32/build/spi_slave.bin +[11/11] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd530 bytes. Smallest app partition is 0x100000 bytes. 0x42ad0 bytes (26%) free. diff --git a/esp32/build/log/idf_py_stdout_output_51157 b/esp32/build/log/idf_py_stdout_output_51157 new file mode 100644 index 0000000..24ef73c --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_51157 @@ -0,0 +1,51 @@ +Command: ninja flash +[1/5] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd530 bytes. Smallest app partition is 0x100000 bytes. 0x42ad0 bytes (26%) free. +[2/5] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/5] No install step for 'bootloader' +[4/5] Completed 'bootloader' +[4/5] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +Connecting.... +Connected to ESP32-C3 on /dev/ttyACM0: +Chip type: ESP32-C3 (QFN32) (revision v0.4) +Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC) +Crystal frequency: 40MHz +USB mode: USB-Serial/JTAG +MAC: 58:8c:81:a1:6d:20 + +Uploading stub flasher... +Running stub flasher... +Stub flasher running. +Changing baud rate to 460800... +Changed. + +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00005fff... +Flash will be erased from 0x00008000 to 0x00008fff... +Flash will be erased from 0x00010000 to 0x000cdfff... +SHA digest in image updated. +Compressed 21072 bytes to 13311... + Writing at 0x00000000 [ ] 0.0% 0/13311 bytes... Writing at 0x00005250 [==============================] 100.0% 13311/13311 bytes... +Wrote 21072 bytes (13311 compressed) at 0x00000000 in 0.4 seconds (440.7 kbit/s). +Hash of data verified. +Compressed 3072 bytes to 103... + Writing at 0x00008000 [ ] 0.0% 0/103 bytes... Writing at 0x00008c00 [==============================] 100.0% 103/103 bytes... +Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (528.5 kbit/s). +Hash of data verified. +Compressed 775472 bytes to 451793... + Writing at 0x00010000 [ ] 0.0% 0/451793 bytes... Writing at 0x0001bc46 [> ] 3.6% 16384/451793 bytes... Writing at 0x000246b0 [=> ] 7.3% 32768/451793 bytes... Writing at 0x0002e17e [==> ] 10.9% 49152/451793 bytes... Writing at 0x00034881 [===> ] 14.5% 65536/451793 bytes... Writing at 0x0003b7c4 [====> ] 18.1% 81920/451793 bytes... Writing at 0x00042e52 [=====> ] 21.8% 98304/451793 bytes... Writing at 0x00049a41 [======> ] 25.4% 114688/451793 bytes... Writing at 0x0004fac9 [=======> ] 29.0% 131072/451793 bytes... Writing at 0x000566d3 [========> ] 32.6% 147456/451793 bytes... Writing at 0x0005c54d [=========> ] 36.3% 163840/451793 bytes... Writing at 0x00062964 [==========> ] 39.9% 180224/451793 bytes... Writing at 0x000687b5 [============> ] 43.5% 196608/451793 bytes... Writing at 0x0006e30f [=============> ] 47.1% 212992/451793 bytes... Writing at 0x00074b46 [==============> ] 50.8% 229376/451793 bytes... Writing at 0x0007adac [===============> ] 54.4% 245760/451793 bytes... Writing at 0x00080d0e [================> ] 58.0% 262144/451793 bytes... Writing at 0x000871e9 [=================> ] 61.6% 278528/451793 bytes... Writing at 0x0008dc0d [==================> ] 65.3% 294912/451793 bytes... Writing at 0x00094bdf [===================> ] 68.9% 311296/451793 bytes... Writing at 0x0009b820 [====================> ] 72.5% 327680/451793 bytes... Writing at 0x000a1c82 [=====================> ] 76.2% 344064/451793 bytes... Writing at 0x000a7edf [======================> ] 79.8% 360448/451793 bytes... Writing at 0x000ae3e6 [========================> ] 83.4% 376832/451793 bytes... Writing at 0x000b5f38 [=========================> ] 87.0% 393216/451793 bytes... Writing at 0x000bc17f [==========================> ] 90.7% 409600/451793 bytes... Writing at 0x000c3165 [===========================> ] 94.3% 425984/451793 bytes... Writing at 0x000c973a [============================> ] 97.9% 442368/451793 bytes... Writing at 0x000cd530 [==============================] 100.0% 451793/451793 bytes... +Wrote 775472 bytes (451793 compressed) at 0x00010000 in 6.3 seconds (977.9 kbit/s). +Hash of data verified. + +Hard resetting via RTS pin... diff --git a/esp32/build/log/idf_py_stdout_output_51801 b/esp32/build/log/idf_py_stdout_output_51801 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_52778 b/esp32/build/log/idf_py_stdout_output_52778 new file mode 100644 index 0000000..f0a7149 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_52778 @@ -0,0 +1,51 @@ +Command: ninja flash +[1/5] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd530 bytes. Smallest app partition is 0x100000 bytes. 0x42ad0 bytes (26%) free. +[2/5] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/5] No install step for 'bootloader' +[4/5] Completed 'bootloader' +[4/5] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +Connecting... +Connected to ESP32-C3 on /dev/ttyACM0: +Chip type: ESP32-C3 (QFN32) (revision v0.4) +Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC) +Crystal frequency: 40MHz +USB mode: USB-Serial/JTAG +MAC: 58:8c:81:a1:6d:20 + +Uploading stub flasher... +Running stub flasher... +Stub flasher running. +Changing baud rate to 460800... +Changed. + +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00005fff... +Flash will be erased from 0x00008000 to 0x00008fff... +Flash will be erased from 0x00010000 to 0x000cdfff... +SHA digest in image updated. +Compressed 21072 bytes to 13311... + Writing at 0x00000000 [ ] 0.0% 0/13311 bytes... Writing at 0x00005250 [==============================] 100.0% 13311/13311 bytes... +Wrote 21072 bytes (13311 compressed) at 0x00000000 in 0.4 seconds (440.8 kbit/s). +Hash of data verified. +Compressed 3072 bytes to 103... + Writing at 0x00008000 [ ] 0.0% 0/103 bytes... Writing at 0x00008c00 [==============================] 100.0% 103/103 bytes... +Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (534.5 kbit/s). +Hash of data verified. +Compressed 775472 bytes to 451793... + Writing at 0x00010000 [ ] 0.0% 0/451793 bytes... Writing at 0x0001bc46 [> ] 3.6% 16384/451793 bytes... Writing at 0x000246b0 [=> ] 7.3% 32768/451793 bytes... Writing at 0x0002e17e [==> ] 10.9% 49152/451793 bytes... Writing at 0x00034881 [===> ] 14.5% 65536/451793 bytes... Writing at 0x0003b7c4 [====> ] 18.1% 81920/451793 bytes... Writing at 0x00042e52 [=====> ] 21.8% 98304/451793 bytes... Writing at 0x00049a41 [======> ] 25.4% 114688/451793 bytes... Writing at 0x0004fac9 [=======> ] 29.0% 131072/451793 bytes... Writing at 0x000566d3 [========> ] 32.6% 147456/451793 bytes... Writing at 0x0005c54d [=========> ] 36.3% 163840/451793 bytes... Writing at 0x00062964 [==========> ] 39.9% 180224/451793 bytes... Writing at 0x000687b5 [============> ] 43.5% 196608/451793 bytes... Writing at 0x0006e30f [=============> ] 47.1% 212992/451793 bytes... Writing at 0x00074b46 [==============> ] 50.8% 229376/451793 bytes... Writing at 0x0007adac [===============> ] 54.4% 245760/451793 bytes... Writing at 0x00080d0e [================> ] 58.0% 262144/451793 bytes... Writing at 0x000871e9 [=================> ] 61.6% 278528/451793 bytes... Writing at 0x0008dc0d [==================> ] 65.3% 294912/451793 bytes... Writing at 0x00094bdf [===================> ] 68.9% 311296/451793 bytes... Writing at 0x0009b820 [====================> ] 72.5% 327680/451793 bytes... Writing at 0x000a1c82 [=====================> ] 76.2% 344064/451793 bytes... Writing at 0x000a7edf [======================> ] 79.8% 360448/451793 bytes... Writing at 0x000ae3e6 [========================> ] 83.4% 376832/451793 bytes... Writing at 0x000b5f38 [=========================> ] 87.0% 393216/451793 bytes... Writing at 0x000bc17f [==========================> ] 90.7% 409600/451793 bytes... Writing at 0x000c3165 [===========================> ] 94.3% 425984/451793 bytes... Writing at 0x000c973a [============================> ] 97.9% 442368/451793 bytes... Writing at 0x000cd530 [==============================] 100.0% 451793/451793 bytes... +Wrote 775472 bytes (451793 compressed) at 0x00010000 in 6.3 seconds (984.2 kbit/s). +Hash of data verified. + +Hard resetting via RTS pin... diff --git a/esp32/build/log/idf_py_stdout_output_53858 b/esp32/build/log/idf_py_stdout_output_53858 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_54604 b/esp32/build/log/idf_py_stdout_output_54604 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_59313 b/esp32/build/log/idf_py_stdout_output_59313 new file mode 100644 index 0000000..7ab2464 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_59313 @@ -0,0 +1,8 @@ +Command: ninja all +[1/4] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd530 bytes. Smallest app partition is 0x100000 bytes. 0x42ad0 bytes (26%) free. +[2/4] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/4] No install step for 'bootloader' +[4/4] Completed 'bootloader' diff --git a/esp32/build/log/idf_py_stdout_output_59682 b/esp32/build/log/idf_py_stdout_output_59682 new file mode 100644 index 0000000..cd6b3bd --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_59682 @@ -0,0 +1,51 @@ +Command: ninja flash +[1/5] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd530 bytes. Smallest app partition is 0x100000 bytes. 0x42ad0 bytes (26%) free. +[2/5] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/5] No install step for 'bootloader' +[4/5] Completed 'bootloader' +[4/5] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +Connecting... +Connected to ESP32-C3 on /dev/ttyACM0: +Chip type: ESP32-C3 (QFN32) (revision v0.4) +Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC) +Crystal frequency: 40MHz +USB mode: USB-Serial/JTAG +MAC: 58:8c:81:a1:6d:20 + +Uploading stub flasher... +Running stub flasher... +Stub flasher running. +Changing baud rate to 460800... +Changed. + +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00005fff... +Flash will be erased from 0x00008000 to 0x00008fff... +Flash will be erased from 0x00010000 to 0x000cdfff... +SHA digest in image updated. +Compressed 21072 bytes to 13311... + Writing at 0x00000000 [ ] 0.0% 0/13311 bytes... Writing at 0x00005250 [==============================] 100.0% 13311/13311 bytes... +Wrote 21072 bytes (13311 compressed) at 0x00000000 in 0.4 seconds (422.9 kbit/s). +Hash of data verified. +Compressed 3072 bytes to 103... + Writing at 0x00008000 [ ] 0.0% 0/103 bytes... Writing at 0x00008c00 [==============================] 100.0% 103/103 bytes... +Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (538.0 kbit/s). +Hash of data verified. +Compressed 775472 bytes to 451793... + Writing at 0x00010000 [ ] 0.0% 0/451793 bytes... Writing at 0x0001bc46 [> ] 3.6% 16384/451793 bytes... Writing at 0x000246b0 [=> ] 7.3% 32768/451793 bytes... Writing at 0x0002e17e [==> ] 10.9% 49152/451793 bytes... Writing at 0x00034881 [===> ] 14.5% 65536/451793 bytes... Writing at 0x0003b7c4 [====> ] 18.1% 81920/451793 bytes... Writing at 0x00042e52 [=====> ] 21.8% 98304/451793 bytes... Writing at 0x00049a41 [======> ] 25.4% 114688/451793 bytes... Writing at 0x0004fac9 [=======> ] 29.0% 131072/451793 bytes... Writing at 0x000566d3 [========> ] 32.6% 147456/451793 bytes... Writing at 0x0005c54d [=========> ] 36.3% 163840/451793 bytes... Writing at 0x00062964 [==========> ] 39.9% 180224/451793 bytes... Writing at 0x000687b5 [============> ] 43.5% 196608/451793 bytes... Writing at 0x0006e30f [=============> ] 47.1% 212992/451793 bytes... Writing at 0x00074b46 [==============> ] 50.8% 229376/451793 bytes... Writing at 0x0007adac [===============> ] 54.4% 245760/451793 bytes... Writing at 0x00080d0e [================> ] 58.0% 262144/451793 bytes... Writing at 0x000871e9 [=================> ] 61.6% 278528/451793 bytes... Writing at 0x0008dc0d [==================> ] 65.3% 294912/451793 bytes... Writing at 0x00094bdf [===================> ] 68.9% 311296/451793 bytes... Writing at 0x0009b820 [====================> ] 72.5% 327680/451793 bytes... Writing at 0x000a1c82 [=====================> ] 76.2% 344064/451793 bytes... Writing at 0x000a7edf [======================> ] 79.8% 360448/451793 bytes... Writing at 0x000ae3e6 [========================> ] 83.4% 376832/451793 bytes... Writing at 0x000b5f38 [=========================> ] 87.0% 393216/451793 bytes... Writing at 0x000bc17f [==========================> ] 90.7% 409600/451793 bytes... Writing at 0x000c3165 [===========================> ] 94.3% 425984/451793 bytes... Writing at 0x000c973a [============================> ] 97.9% 442368/451793 bytes... Writing at 0x000cd530 [==============================] 100.0% 451793/451793 bytes... +Wrote 775472 bytes (451793 compressed) at 0x00010000 in 6.3 seconds (981.6 kbit/s). +Hash of data verified. + +Hard resetting via RTS pin... diff --git a/esp32/build/log/idf_py_stdout_output_60221 b/esp32/build/log/idf_py_stdout_output_60221 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_63871 b/esp32/build/log/idf_py_stdout_output_63871 new file mode 100644 index 0000000..0937c5c --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_63871 @@ -0,0 +1,21 @@ +Command: ninja all +[1/9] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[2/9] No install step for 'bootloader' +[3/9] Completed 'bootloader' +[4/9] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +[5/9] Linking C static library esp-idf/main/libmain.a +[6/9] Generating esp-idf/esp_system/ld/sections.ld +[7/9] Linking CXX executable spi_slave.elf +[8/9] Generating binary image from built executable +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +esptool v5.1.0 +Creating ESP32C3 image... +Merged 1 ELF section. +Successfully created ESP32C3 image. +Generated /home/pi/lighting-controller/esp32/build/spi_slave.bin +[9/9] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd380 bytes. Smallest app partition is 0x100000 bytes. 0x42c80 bytes (26%) free. diff --git a/esp32/build/log/idf_py_stdout_output_65520 b/esp32/build/log/idf_py_stdout_output_65520 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_65520 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stdout_output_65969 b/esp32/build/log/idf_py_stdout_output_65969 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_65969 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stdout_output_66289 b/esp32/build/log/idf_py_stdout_output_66289 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_66289 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stdout_output_66767 b/esp32/build/log/idf_py_stdout_output_66767 new file mode 100644 index 0000000..22a925e --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_66767 @@ -0,0 +1 @@ +Command: ninja flash diff --git a/esp32/build/log/idf_py_stdout_output_67342 b/esp32/build/log/idf_py_stdout_output_67342 new file mode 100644 index 0000000..845070b --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_67342 @@ -0,0 +1,51 @@ +Command: ninja flash +[1/5] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd380 bytes. Smallest app partition is 0x100000 bytes. 0x42c80 bytes (26%) free. +[2/5] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/5] No install step for 'bootloader' +[4/5] Completed 'bootloader' +[4/5] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +Connecting... +Connected to ESP32-C3 on /dev/ttyACM0: +Chip type: ESP32-C3 (QFN32) (revision v0.4) +Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC) +Crystal frequency: 40MHz +USB mode: USB-Serial/JTAG +MAC: 58:8c:81:a1:6d:20 + +Uploading stub flasher... +Running stub flasher... +Stub flasher running. +Changing baud rate to 460800... +Changed. + +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00005fff... +Flash will be erased from 0x00008000 to 0x00008fff... +Flash will be erased from 0x00010000 to 0x000cdfff... +SHA digest in image updated. +Compressed 21072 bytes to 13311... + Writing at 0x00000000 [ ] 0.0% 0/13311 bytes... Writing at 0x00005250 [==============================] 100.0% 13311/13311 bytes... +Wrote 21072 bytes (13311 compressed) at 0x00000000 in 0.4 seconds (428.0 kbit/s). +Hash of data verified. +Compressed 3072 bytes to 103... + Writing at 0x00008000 [ ] 0.0% 0/103 bytes... Writing at 0x00008c00 [==============================] 100.0% 103/103 bytes... +Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (506.7 kbit/s). +Hash of data verified. +Compressed 775040 bytes to 451575... + Writing at 0x00010000 [ ] 0.0% 0/451575 bytes... Writing at 0x0001bc52 [> ] 3.6% 16384/451575 bytes... Writing at 0x000246c4 [=> ] 7.3% 32768/451575 bytes... Writing at 0x0002e137 [==> ] 10.9% 49152/451575 bytes... Writing at 0x0003483e [===> ] 14.5% 65536/451575 bytes... Writing at 0x0003b7a6 [====> ] 18.1% 81920/451575 bytes... Writing at 0x00042e06 [=====> ] 21.8% 98304/451575 bytes... Writing at 0x00049a0d [======> ] 25.4% 114688/451575 bytes... Writing at 0x0004fa81 [=======> ] 29.0% 131072/451575 bytes... Writing at 0x00056688 [========> ] 32.7% 147456/451575 bytes... Writing at 0x0005c542 [=========> ] 36.3% 163840/451575 bytes... Writing at 0x0006292a [==========> ] 39.9% 180224/451575 bytes... Writing at 0x00068778 [============> ] 43.5% 196608/451575 bytes... Writing at 0x0006e2e5 [=============> ] 47.2% 212992/451575 bytes... Writing at 0x00074b6d [==============> ] 50.8% 229376/451575 bytes... Writing at 0x0007adc9 [===============> ] 54.4% 245760/451575 bytes... Writing at 0x00080cef [================> ] 58.1% 262144/451575 bytes... Writing at 0x000871e2 [=================> ] 61.7% 278528/451575 bytes... Writing at 0x0008dbfa [==================> ] 65.3% 294912/451575 bytes... Writing at 0x00094bb5 [===================> ] 68.9% 311296/451575 bytes... Writing at 0x0009b853 [====================> ] 72.6% 327680/451575 bytes... Writing at 0x000a1c64 [=====================> ] 76.2% 344064/451575 bytes... Writing at 0x000a7eb8 [======================> ] 79.8% 360448/451575 bytes... Writing at 0x000ae3b9 [========================> ] 83.4% 376832/451575 bytes... Writing at 0x000b5f4e [=========================> ] 87.1% 393216/451575 bytes... Writing at 0x000bc23b [==========================> ] 90.7% 409600/451575 bytes... Writing at 0x000c3105 [===========================> ] 94.3% 425984/451575 bytes... Writing at 0x000c96f5 [============================> ] 98.0% 442368/451575 bytes... Writing at 0x000cd380 [==============================] 100.0% 451575/451575 bytes... +Wrote 775040 bytes (451575 compressed) at 0x00010000 in 6.3 seconds (985.2 kbit/s). +Hash of data verified. + +Hard resetting via RTS pin... diff --git a/esp32/build/log/idf_py_stdout_output_67482 b/esp32/build/log/idf_py_stdout_output_67482 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_69389 b/esp32/build/log/idf_py_stdout_output_69389 new file mode 100644 index 0000000..c74a548 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_69389 @@ -0,0 +1,34 @@ +Command: ninja flash +[1/10] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[2/10] No install step for 'bootloader' +[3/10] Completed 'bootloader' +[4/10] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +[5/10] Linking C static library esp-idf/main/libmain.a +[6/10] Generating esp-idf/esp_system/ld/sections.ld +[7/10] Linking CXX executable spi_slave.elf +[8/10] Generating binary image from built executable +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +esptool v5.1.0 +Creating ESP32C3 image... +Merged 1 ELF section. +Successfully created ESP32C3 image. +Generated /home/pi/lighting-controller/esp32/build/spi_slave.bin +[9/10] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd440 bytes. Smallest app partition is 0x100000 bytes. 0x42bc0 bytes (26%) free. +[9/10] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +FAILED: CMakeFiles/flash.util +cd /home/pi/lighting-controller/esp32 && /usr/bin/cmake -D IDF_PATH=/home/pi/esp/esp-idf -D "SERIAL_TOOL=/home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python;;/home/pi/esp/esp-idf/components/esptool_py/esptool/esptool.py;--chip;esp32c3" -D "SERIAL_TOOL_ARGS=--before=default_reset;--after=hard_reset;write_flash;@flash_args" -D WORKING_DIRECTORY=/home/pi/lighting-controller/esp32/build -P /home/pi/esp/esp-idf/components/esptool_py/run_serial_tool.cmake +ninja: build stopped: subcommand failed. diff --git a/esp32/build/log/idf_py_stdout_output_70605 b/esp32/build/log/idf_py_stdout_output_70605 new file mode 100644 index 0000000..e9e709b --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_70605 @@ -0,0 +1,8 @@ +Command: ninja all +[1/4] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd440 bytes. Smallest app partition is 0x100000 bytes. 0x42bc0 bytes (26%) free. +[2/4] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/4] No install step for 'bootloader' +[4/4] Completed 'bootloader' diff --git a/esp32/build/log/idf_py_stdout_output_71050 b/esp32/build/log/idf_py_stdout_output_71050 new file mode 100644 index 0000000..c965257 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_71050 @@ -0,0 +1,51 @@ +Command: ninja flash +[1/5] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd440 bytes. Smallest app partition is 0x100000 bytes. 0x42bc0 bytes (26%) free. +[2/5] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/5] No install step for 'bootloader' +[4/5] Completed 'bootloader' +[4/5] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +Connecting.... +Connected to ESP32-C3 on /dev/ttyACM0: +Chip type: ESP32-C3 (QFN32) (revision v0.4) +Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC) +Crystal frequency: 40MHz +USB mode: USB-Serial/JTAG +MAC: 58:8c:81:a1:6d:20 + +Uploading stub flasher... +Running stub flasher... +Stub flasher running. +Changing baud rate to 460800... +Changed. + +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00005fff... +Flash will be erased from 0x00008000 to 0x00008fff... +Flash will be erased from 0x00010000 to 0x000cdfff... +SHA digest in image updated. +Compressed 21072 bytes to 13311... + Writing at 0x00000000 [ ] 0.0% 0/13311 bytes... Writing at 0x00005250 [==============================] 100.0% 13311/13311 bytes... +Wrote 21072 bytes (13311 compressed) at 0x00000000 in 0.4 seconds (425.2 kbit/s). +Hash of data verified. +Compressed 3072 bytes to 103... + Writing at 0x00008000 [ ] 0.0% 0/103 bytes... Writing at 0x00008c00 [==============================] 100.0% 103/103 bytes... +Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (538.4 kbit/s). +Hash of data verified. +Compressed 775232 bytes to 451736... + Writing at 0x00010000 [ ] 0.0% 0/451736 bytes... Writing at 0x0001bc44 [> ] 3.6% 16384/451736 bytes... Writing at 0x000246c4 [=> ] 7.3% 32768/451736 bytes... Writing at 0x0002e13c [==> ] 10.9% 49152/451736 bytes... Writing at 0x00034838 [===> ] 14.5% 65536/451736 bytes... Writing at 0x0003b79d [====> ] 18.1% 81920/451736 bytes... Writing at 0x00042dee [=====> ] 21.8% 98304/451736 bytes... Writing at 0x000499dd [======> ] 25.4% 114688/451736 bytes... Writing at 0x0004fa64 [=======> ] 29.0% 131072/451736 bytes... Writing at 0x00056668 [========> ] 32.6% 147456/451736 bytes... Writing at 0x0005c4dd [=========> ] 36.3% 163840/451736 bytes... Writing at 0x000628f6 [==========> ] 39.9% 180224/451736 bytes... Writing at 0x00068755 [============> ] 43.5% 196608/451736 bytes... Writing at 0x0006e2be [=============> ] 47.1% 212992/451736 bytes... Writing at 0x00074aea [==============> ] 50.8% 229376/451736 bytes... Writing at 0x0007ad6f [===============> ] 54.4% 245760/451736 bytes... Writing at 0x00080cc2 [================> ] 58.0% 262144/451736 bytes... Writing at 0x000871b2 [=================> ] 61.7% 278528/451736 bytes... Writing at 0x0008dbb9 [==================> ] 65.3% 294912/451736 bytes... Writing at 0x00094b82 [===================> ] 68.9% 311296/451736 bytes... Writing at 0x0009b7b4 [====================> ] 72.5% 327680/451736 bytes... Writing at 0x000a1c0c [=====================> ] 76.2% 344064/451736 bytes... Writing at 0x000a7e65 [======================> ] 79.8% 360448/451736 bytes... Writing at 0x000ae371 [========================> ] 83.4% 376832/451736 bytes... Writing at 0x000b5ed0 [=========================> ] 87.0% 393216/451736 bytes... Writing at 0x000bc11a [==========================> ] 90.7% 409600/451736 bytes... Writing at 0x000c30c6 [===========================> ] 94.3% 425984/451736 bytes... Writing at 0x000c96a8 [============================> ] 97.9% 442368/451736 bytes... Writing at 0x000cd440 [==============================] 100.0% 451736/451736 bytes... +Wrote 775232 bytes (451736 compressed) at 0x00010000 in 6.3 seconds (986.8 kbit/s). +Hash of data verified. + +Hard resetting via RTS pin... diff --git a/esp32/build/log/idf_py_stdout_output_71533 b/esp32/build/log/idf_py_stdout_output_71533 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_73045 b/esp32/build/log/idf_py_stdout_output_73045 new file mode 100644 index 0000000..1f537e3 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_73045 @@ -0,0 +1,21 @@ +Command: ninja all +[1/9] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[2/9] No install step for 'bootloader' +[3/9] Completed 'bootloader' +[4/9] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +[5/9] Linking C static library esp-idf/main/libmain.a +[6/9] Generating esp-idf/esp_system/ld/sections.ld +[7/9] Linking CXX executable spi_slave.elf +[8/9] Generating binary image from built executable +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +esptool v5.1.0 +Creating ESP32C3 image... +Merged 1 ELF section. +Successfully created ESP32C3 image. +Generated /home/pi/lighting-controller/esp32/build/spi_slave.bin +[9/9] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd440 bytes. Smallest app partition is 0x100000 bytes. 0x42bc0 bytes (26%) free. diff --git a/esp32/build/log/idf_py_stdout_output_74201 b/esp32/build/log/idf_py_stdout_output_74201 new file mode 100644 index 0000000..e80b5d6 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_74201 @@ -0,0 +1,51 @@ +Command: ninja flash +[1/5] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd440 bytes. Smallest app partition is 0x100000 bytes. 0x42bc0 bytes (26%) free. +[2/5] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/5] No install step for 'bootloader' +[4/5] Completed 'bootloader' +[4/5] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +Connecting... +Connected to ESP32-C3 on /dev/ttyACM0: +Chip type: ESP32-C3 (QFN32) (revision v0.4) +Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC) +Crystal frequency: 40MHz +USB mode: USB-Serial/JTAG +MAC: 58:8c:81:a1:6d:20 + +Uploading stub flasher... +Running stub flasher... +Stub flasher running. +Changing baud rate to 460800... +Changed. + +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00005fff... +Flash will be erased from 0x00008000 to 0x00008fff... +Flash will be erased from 0x00010000 to 0x000cdfff... +SHA digest in image updated. +Compressed 21072 bytes to 13311... + Writing at 0x00000000 [ ] 0.0% 0/13311 bytes... Writing at 0x00005250 [==============================] 100.0% 13311/13311 bytes... +Wrote 21072 bytes (13311 compressed) at 0x00000000 in 0.4 seconds (433.2 kbit/s). +Hash of data verified. +Compressed 3072 bytes to 103... + Writing at 0x00008000 [ ] 0.0% 0/103 bytes... Writing at 0x00008c00 [==============================] 100.0% 103/103 bytes... +Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.1 seconds (457.8 kbit/s). +Hash of data verified. +Compressed 775232 bytes to 451736... + Writing at 0x00010000 [ ] 0.0% 0/451736 bytes... Writing at 0x0001bc43 [> ] 3.6% 16384/451736 bytes... Writing at 0x000246c0 [=> ] 7.3% 32768/451736 bytes... Writing at 0x0002e13a [==> ] 10.9% 49152/451736 bytes... Writing at 0x00034836 [===> ] 14.5% 65536/451736 bytes... Writing at 0x0003b79b [====> ] 18.1% 81920/451736 bytes... Writing at 0x00042ded [=====> ] 21.8% 98304/451736 bytes... Writing at 0x000499db [======> ] 25.4% 114688/451736 bytes... Writing at 0x0004fa60 [=======> ] 29.0% 131072/451736 bytes... Writing at 0x00056666 [========> ] 32.6% 147456/451736 bytes... Writing at 0x0005c4db [=========> ] 36.3% 163840/451736 bytes... Writing at 0x000628f6 [==========> ] 39.9% 180224/451736 bytes... Writing at 0x00068755 [============> ] 43.5% 196608/451736 bytes... Writing at 0x0006e2bd [=============> ] 47.1% 212992/451736 bytes... Writing at 0x00074ae9 [==============> ] 50.8% 229376/451736 bytes... Writing at 0x0007ad6e [===============> ] 54.4% 245760/451736 bytes... Writing at 0x00080cc0 [================> ] 58.0% 262144/451736 bytes... Writing at 0x000871b0 [=================> ] 61.7% 278528/451736 bytes... Writing at 0x0008dbb8 [==================> ] 65.3% 294912/451736 bytes... Writing at 0x00094b81 [===================> ] 68.9% 311296/451736 bytes... Writing at 0x0009b7ac [====================> ] 72.5% 327680/451736 bytes... Writing at 0x000a1c0a [=====================> ] 76.2% 344064/451736 bytes... Writing at 0x000a7e60 [======================> ] 79.8% 360448/451736 bytes... Writing at 0x000ae36f [========================> ] 83.4% 376832/451736 bytes... Writing at 0x000b5ecf [=========================> ] 87.0% 393216/451736 bytes... Writing at 0x000bc11a [==========================> ] 90.7% 409600/451736 bytes... Writing at 0x000c30c2 [===========================> ] 94.3% 425984/451736 bytes... Writing at 0x000c96a8 [============================> ] 97.9% 442368/451736 bytes... Writing at 0x000cd440 [==============================] 100.0% 451736/451736 bytes... +Wrote 775232 bytes (451736 compressed) at 0x00010000 in 6.3 seconds (980.1 kbit/s). +Hash of data verified. + +Hard resetting via RTS pin... diff --git a/esp32/build/log/idf_py_stdout_output_74699 b/esp32/build/log/idf_py_stdout_output_74699 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_78221 b/esp32/build/log/idf_py_stdout_output_78221 new file mode 100644 index 0000000..647698a --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_78221 @@ -0,0 +1,64 @@ +Command: ninja flash +[1/10] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[2/10] No install step for 'bootloader' +[3/10] Completed 'bootloader' +[4/10] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +[5/10] Linking C static library esp-idf/main/libmain.a +[6/10] Generating esp-idf/esp_system/ld/sections.ld +[7/10] Linking CXX executable spi_slave.elf +[8/10] Generating binary image from built executable +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +esptool v5.1.0 +Creating ESP32C3 image... +Merged 1 ELF section. +Successfully created ESP32C3 image. +Generated /home/pi/lighting-controller/esp32/build/spi_slave.bin +[9/10] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd910 bytes. Smallest app partition is 0x100000 bytes. 0x426f0 bytes (26%) free. +[9/10] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +Connecting... +Connected to ESP32-C3 on /dev/ttyACM0: +Chip type: ESP32-C3 (QFN32) (revision v0.4) +Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC) +Crystal frequency: 40MHz +USB mode: USB-Serial/JTAG +MAC: 58:8c:81:a1:6d:20 + +Uploading stub flasher... +Running stub flasher... +Stub flasher running. +Changing baud rate to 460800... +Changed. + +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00005fff... +Flash will be erased from 0x00008000 to 0x00008fff... +Flash will be erased from 0x00010000 to 0x000cdfff... +SHA digest in image updated. +Compressed 21072 bytes to 13311... + Writing at 0x00000000 [ ] 0.0% 0/13311 bytes... Writing at 0x00005250 [==============================] 100.0% 13311/13311 bytes... +Wrote 21072 bytes (13311 compressed) at 0x00000000 in 0.4 seconds (424.9 kbit/s). +Hash of data verified. +Compressed 3072 bytes to 103... + Writing at 0x00008000 [ ] 0.0% 0/103 bytes... Writing at 0x00008c00 [==============================] 100.0% 103/103 bytes... +Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (516.1 kbit/s). +Hash of data verified. +Compressed 776464 bytes to 452473... + Writing at 0x00010000 [ ] 0.0% 0/452473 bytes... Writing at 0x0001bc59 [> ] 3.6% 16384/452473 bytes... Writing at 0x0002468a [=> ] 7.2% 32768/452473 bytes... Writing at 0x0002e1e2 [==> ] 10.9% 49152/452473 bytes... Writing at 0x000348e2 [===> ] 14.5% 65536/452473 bytes... Writing at 0x0003b836 [====> ] 18.1% 81920/452473 bytes... Writing at 0x00042e6b [=====> ] 21.7% 98304/452473 bytes... Writing at 0x00049a4b [======> ] 25.3% 114688/452473 bytes... Writing at 0x0004fad2 [=======> ] 29.0% 131072/452473 bytes... Writing at 0x000566ca [========> ] 32.6% 147456/452473 bytes... Writing at 0x0005c550 [=========> ] 36.2% 163840/452473 bytes... Writing at 0x00062958 [==========> ] 39.8% 180224/452473 bytes... Writing at 0x0006879b [============> ] 43.5% 196608/452473 bytes... Writing at 0x0006e2ec [=============> ] 47.1% 212992/452473 bytes... Writing at 0x00074ab3 [==============> ] 50.7% 229376/452473 bytes... Writing at 0x0007ada4 [===============> ] 54.3% 245760/452473 bytes... Writing at 0x00080d36 [================> ] 57.9% 262144/452473 bytes... Writing at 0x0008712d [=================> ] 61.6% 278528/452473 bytes... Writing at 0x0008dbc9 [==================> ] 65.2% 294912/452473 bytes... Writing at 0x00094b02 [===================> ] 68.8% 311296/452473 bytes... Writing at 0x0009b831 [====================> ] 72.4% 327680/452473 bytes... Writing at 0x000a1c4a [=====================> ] 76.0% 344064/452473 bytes... Writing at 0x000a7e18 [======================> ] 79.7% 360448/452473 bytes... Writing at 0x000ae3f7 [=======================> ] 83.3% 376832/452473 bytes... Writing at 0x000b5f4f [=========================> ] 86.9% 393216/452473 bytes... Writing at 0x000bc02f [==========================> ] 90.5% 409600/452473 bytes... Writing at 0x000c3182 [===========================> ] 94.1% 425984/452473 bytes... Writing at 0x000c9728 [============================> ] 97.8% 442368/452473 bytes... Writing at 0x000cd910 [==============================] 100.0% 452473/452473 bytes... +Wrote 776464 bytes (452473 compressed) at 0x00010000 in 6.3 seconds (990.6 kbit/s). +Hash of data verified. + +Hard resetting via RTS pin... diff --git a/esp32/build/log/idf_py_stdout_output_79323 b/esp32/build/log/idf_py_stdout_output_79323 new file mode 100644 index 0000000..5c38d5f --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_79323 @@ -0,0 +1,127 @@ +Command: /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/tools/idf_monitor.py -p /dev/ttyACM0 -b 460800 --toolchain-prefix riscv32-esp-elf- --target esp32c3 --revision 3 --decode-panic backtrace /home/pi/lighting-controller/esp32/build/spi_slave.elf /home/pi/lighting-controller/esp32/build/bootloader/bootloader.elf -m '/home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python' '/home/pi/esp/esp-idf/tools/idf.py' '-p' '/dev/ttyACM0' '-b' '460800' +ESP-ROM:esp32c3-api1-20210207 +Build:Feb 7 2021 +rst:0x15 (USB_UART_CHIP_RESET),boot:0x8 (SPI_FAST_FLASH_BOOT) +Saved PC:0x40383f16 +SPIWP:0xee +mode:DIO, clock div:1 +load:0x3fcd5830,len:0x15c4 +load:0x403cbf10,len:0xc6c +load:0x403ce710,len:0x2fc4 +entry 0x403cbf1a +I (24) boot: ESP-IDF v6.0-dev-2594-g25c40d4563 2nd stage bootloader +I (24) boot: compile time Oct 1 2025 19:47:28 +I (25) boot: chip revision: v0.4 +I (26) boot: efuse block revision: v1.3 +I (30) boot.esp32c3: SPI Speed : 80MHz +I (34) boot.esp32c3: SPI Mode : DIO +I (37) boot.esp32c3: SPI Flash Size : 2MB +I (41) boot: Enabling RNG early entropy source... +I (45) boot: Partition Table: +I (48) boot: ## Label Usage Type ST Offset Length +I (54) boot: 0 nvs WiFi data 01 02 00009000 00006000 +I (61) boot: 1 phy_init RF data 01 01 0000f000 00001000 +I (67) boot: 2 factory factory app 00 00 00010000 00100000 +I (74) boot: End of partition table +I (77) esp_image: segment 0: paddr=00010020 vaddr=3c090020 size=18d14h (101652) map +I (101) esp_image: segment 1: paddr=00028d3c vaddr=3fc92200 size=0303ch ( 12348) load +I (103) esp_image: segment 2: paddr=0002bd80 vaddr=40380000 size=04298h ( 17048) load +I (108) esp_image: segment 3: paddr=00030020 vaddr=42000020 size=8fa70h (588400) map +I (204) esp_image: segment 4: paddr=000bfa98 vaddr=40384298 size=0de2ch ( 56876) load +I (215) esp_image: segment 5: paddr=000cd8cc vaddr=50000000 size=00020h ( 32) load +I (220) boot: Loaded app from partition at offset 0x10000 +I (220) boot: Disabling RNG early entropy source... +I (232) cpu_start: Unicore app +I (240) cpu_start: GPIO 20 and 21 are used as console UART I/O pins +I (241) cpu_start: Pro cpu start user code +I (241) cpu_start: cpu freq: 160000000 Hz +I (243) app_init: Application information: +I (246) app_init: Project name: spi_slave +I (250) app_init: App version: 1844a2e-dirty +I (255) app_init: Compile time: Oct 1 2025 22:00:17 +I (260) app_init: ELF file SHA256: 823bc384e... +I (264) app_init: ESP-IDF: v6.0-dev-2594-g25c40d4563 +I (270) efuse_init: Min chip rev: v0.3 +I (274) efuse_init: Max chip rev: v1.99  +I (277) efuse_init: Chip rev: v0.4 +I (281) heap_init: Initializing. RAM available for dynamic allocation: +I (288) heap_init: At 3FC99790 len 00026870 (154 KiB): RAM +I (293) heap_init: At 3FCC0000 len 0001C710 (113 KiB): Retention RAM +I (299) heap_init: At 3FCDC710 len 00002950 (10 KiB): Retention RAM +I (305) heap_init: At 50000020 len 00001FC8 (7 KiB): RTCRAM +I (311) spi_flash: detected chip: generic +I (314) spi_flash: flash io: dio +W (317) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header. +I (330) sleep_gpio: Configure to isolate all GPIO pins in sleep state +I (335) sleep_gpio: Enable automatic switching of GPIO sleep configuration +I (342) main_task: Started on CPU0 +I (342) main_task: Calling app_main() +I (342) SPI_SLAVE: Starting SPI Slave with ESP-NOW example +I (352) pp: pp rom version: 9387209 +I (352) net80211: net80211 rom version: 9387209 +I (362) wifi:wifi driver task: 3fca1dec, prio:23, stack:6656, core=0 +I (362) wifi:wifi firmware version: bfadac0 +I (362) wifi:wifi certification version: v7.0 +I (372) wifi:config NVS flash: enabled +I (372) wifi:config nano formatting: disabled +I (382) wifi:Init data frame dynamic rx buffer num: 32 +I (382) wifi:Init static rx mgmt buffer num: 5 +I (382) wifi:Init management short buffer num: 32 +I (392) wifi:Init dynamic tx buffer num: 32 +I (392) wifi:Init static tx FG buffer num: 2 +I (402) wifi:Init static rx buffer size: 1600 +I (402) wifi:Init static rx buffer num: 10 +I (402) wifi:Init dynamic rx buffer num: 32 +I (412) wifi_init: rx ba win: 6 +I (412) wifi_init: accept mbox: 6 +I (412) wifi_init: tcpip mbox: 32 +I (422) wifi_init: udp mbox: 6 +I (422) wifi_init: tcp mbox: 6 +I (422) wifi_init: tcp tx win: 5760 +I (432) wifi_init: tcp rx win: 5760 +I (432) wifi_init: tcp mss: 1440 +I (432) wifi_init: WiFi IRAM OP enabled +I (442) wifi_init: WiFi RX IRAM OP enabled +I (442) phy_init: phy_version 1201,bae5dd99,Mar 3 2025,15:36:21 +I (482) wifi:mode : sta (58:8c:81:a1:6d:20) +I (482) wifi:enable tsf +I (492) wifi:Set ps type: 0, coexist: 0 + +I (492) ESPNOW: espnow [version: 2.0] init +I (492) SPI_SLAVE: ESP-NOW initialized successfully +I (492) SPI_SLAVE: SPI Slave initialized successfully +I (502) SPI_SLAVE: MOSI: GPIO10, MISO: GPIO9, SCLK: GPIO8, CS: GPIO7 +I (14512) SPI_SLAVE: Received 62 bytes: +0x7b 0x22 0x64 0x22 0x3a 0x7b 0x22 0x74 0x22 0x3a 0x22 0x62 0x22 0x2c 0x22 0x70 +0x74 0x22 0x3a 0x22 0x6f 0x6e 0x22 0x2c 0x22 0x63 0x6c 0x22 0x3a 0x5b 0x22 0x23 + +I (14522) SPI_SLAVE: SPI RX (len=62): {"d":{"t":"b","pt":"on","cl":["#ff0000","#00ff00","#0000ff"]}} +I (14532) SPI_SLAVE: Broadcasting 62 bytes via ESP-NOW +I (14532) SPI_SLAVE: ESP-NOW send status: SUCCESS +I (35422) SPI_SLAVE: Received 62 bytes: +0x7b 0x22 0x64 0x22 0x3a 0x7b 0x22 0x74 0x22 0x3a 0x22 0x62 0x22 0x2c 0x22 0x70 +0x74 0x22 0x3a 0x22 0x6f 0x6e 0x22 0x2c 0x22 0x63 0x6c 0x22 0x3a 0x5b 0x22 0x23 + +I (35432) SPI_SLAVE: SPI RX (len=62): {"d":{"t":"b","pt":"on","cl":["#ff0000","#00ff00","#0000ff"]}} +I (35442) SPI_SLAVE: Broadcasting 62 bytes via ESP-NOW +I (35442) SPI_SLAVE: ESP-NOW send status: SUCCESS +I (71542) SPI_SLAVE: Received 62 bytes: +0x7b 0x22 0x64 0x22 0x3a 0x7b 0x22 0x74 0x22 0x3a 0x22 0x62 0x22 0x2c 0x22 0x70 +0x74 0x22 0x3a 0x22 0x6f 0x6e 0x22 0x2c 0x22 0x63 0x6c 0x22 0x3a 0x5b 0x22 0x23 + +I (71552) SPI_SLAVE: SPI RX (len=62): {"d":{"t":"b","pt":"on","cl":["#ff0000","#00ff00","#0000ff"]}} +I (71562) SPI_SLAVE: Broadcasting 62 bytes via ESP-NOW +I (71562) SPI_SLAVE: ESP-NOW send status: SUCCESS +I (158342) SPI_SLAVE: Received 62 bytes: +0x7b 0x22 0x64 0x22 0x3a 0x7b 0x22 0x74 0x22 0x3a 0x22 0x62 0x22 0x2c 0x22 0x70 +0x74 0x22 0x3a 0x22 0x6f 0x6e 0x22 0x2c 0x22 0x63 0x6c 0x22 0x3a 0x5b 0x5b 0x32 + +I (158352) SPI_SLAVE: SPI RX (len=62): {"d":{"t":"b","pt":"on","cl":[[255,0,0],[0,255,0],[0,0,255]]}} +I (158362) SPI_SLAVE: Broadcasting 62 bytes via ESP-NOW +I (158362) SPI_SLAVE: ESP-NOW send status: SUCCESS +I (167062) SPI_SLAVE: Received 62 bytes: +0x7b 0x22 0x64 0x22 0x3a 0x7b 0x22 0x74 0x22 0x3a 0x22 0x62 0x22 0x2c 0x22 0x70 +0x74 0x22 0x3a 0x22 0x6f 0x6e 0x22 0x2c 0x22 0x63 0x6c 0x22 0x3a 0x5b 0x5b 0x32 + +I (167072) SPI_SLAVE: SPI RX (len=62): {"d":{"t":"b","pt":"on","cl":[[255,0,0],[0,255,0],[0,0,255]]}} +I (167082) SPI_SLAVE: Broadcasting 62 bytes via \ No newline at end of file diff --git a/esp32/build/log/idf_py_stdout_output_83775 b/esp32/build/log/idf_py_stdout_output_83775 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_85052 b/esp32/build/log/idf_py_stdout_output_85052 new file mode 100644 index 0000000..031b484 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_85052 @@ -0,0 +1,30 @@ +Command: ninja all +[1/9] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[2/9] No install step for 'bootloader' +[3/9] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +FAILED: esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +/home/pi/.espressif/tools/riscv32-esp-elf/esp-15.2.0_20250920/riscv32-esp-elf/bin/riscv32-esp-elf-gcc -DESP_PLATFORM -DIDF_VER=\"v6.0-dev-2594-g25c40d4563\" -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -DUNITY_INCLUDE_CONFIG_H -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -I/home/pi/lighting-controller/esp32/build/config -I/home/pi/lighting-controller/esp32/main -I/home/pi/esp/esp-idf/components/esp_libc/platform_include -I/home/pi/esp/esp-idf/components/freertos/config/include -I/home/pi/esp/esp-idf/components/freertos/config/include/freertos -I/home/pi/esp/esp-idf/components/freertos/config/riscv/include -I/home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include -I/home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/riscv/include -I/home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos -I/home/pi/esp/esp-idf/components/freertos/esp_additions/include -I/home/pi/esp/esp-idf/components/esp_hw_support/include -I/home/pi/esp/esp-idf/components/esp_hw_support/include/soc -I/home/pi/esp/esp-idf/components/esp_hw_support/dma/include -I/home/pi/esp/esp-idf/components/esp_hw_support/ldo/include -I/home/pi/esp/esp-idf/components/esp_hw_support/debug_probe/include -I/home/pi/esp/esp-idf/components/esp_hw_support/etm/include -I/home/pi/esp/esp-idf/components/esp_hw_support/mspi_timing_tuning/include -I/home/pi/esp/esp-idf/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -I/home/pi/esp/esp-idf/components/esp_hw_support/power_supply/include -I/home/pi/esp/esp-idf/components/esp_hw_support/modem/include -I/home/pi/esp/esp-idf/components/esp_hw_support/include/soc/esp32c3 -I/home/pi/esp/esp-idf/components/esp_hw_support/port/esp32c3/. -I/home/pi/esp/esp-idf/components/esp_hw_support/port/esp32c3/include -I/home/pi/esp/esp-idf/components/heap/include -I/home/pi/esp/esp-idf/components/heap/tlsf -I/home/pi/esp/esp-idf/components/log/include -I/home/pi/esp/esp-idf/components/soc/include -I/home/pi/esp/esp-idf/components/soc/esp32c3 -I/home/pi/esp/esp-idf/components/soc/esp32c3/include -I/home/pi/esp/esp-idf/components/soc/esp32c3/register -I/home/pi/esp/esp-idf/components/hal/platform_port/include -I/home/pi/esp/esp-idf/components/hal/esp32c3/include -I/home/pi/esp/esp-idf/components/hal/include -I/home/pi/esp/esp-idf/components/esp_rom/include -I/home/pi/esp/esp-idf/components/esp_rom/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_rom/esp32c3/include/esp32c3 -I/home/pi/esp/esp-idf/components/esp_rom/esp32c3 -I/home/pi/esp/esp-idf/components/esp_common/include -I/home/pi/esp/esp-idf/components/esp_system/include -I/home/pi/esp/esp-idf/components/esp_system/port/soc -I/home/pi/esp/esp-idf/components/esp_system/port/include/riscv -I/home/pi/esp/esp-idf/components/esp_system/port/include/private -I/home/pi/esp/esp-idf/components/riscv/include -I/home/pi/esp/esp-idf/components/lwip/include -I/home/pi/esp/esp-idf/components/lwip/include/apps -I/home/pi/esp/esp-idf/components/lwip/include/apps/sntp -I/home/pi/esp/esp-idf/components/lwip/lwip/src/include -I/home/pi/esp/esp-idf/components/lwip/port/include -I/home/pi/esp/esp-idf/components/lwip/port/freertos/include -I/home/pi/esp/esp-idf/components/lwip/port/esp32xx/include -I/home/pi/esp/esp-idf/components/lwip/port/esp32xx/include/arch -I/home/pi/esp/esp-idf/components/lwip/port/esp32xx/include/sys -I/home/pi/esp/esp-idf/components/esp_app_format/include -I/home/pi/esp/esp-idf/components/esp_bootloader_format/include -I/home/pi/esp/esp-idf/components/app_update/include -I/home/pi/esp/esp-idf/components/bootloader_support/include -I/home/pi/esp/esp-idf/components/bootloader_support/bootloader_flash/include -I/home/pi/esp/esp-idf/components/esp_partition/include -I/home/pi/esp/esp-idf/components/efuse/include -I/home/pi/esp/esp-idf/components/efuse/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_security/include -I/home/pi/esp/esp-idf/components/esp_driver_gpio/include -I/home/pi/esp/esp-idf/components/esp_pm/include -I/home/pi/esp/esp-idf/components/mbedtls/port/include -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/include -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/library -I/home/pi/esp/esp-idf/components/mbedtls/esp_crt_bundle/include -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/3rdparty/everest/include -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/3rdparty/p256-m -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/3rdparty/p256-m/p256-m -I/home/pi/esp/esp-idf/components/esp_mm/include -I/home/pi/esp/esp-idf/components/spi_flash/include -I/home/pi/esp/esp-idf/components/esp_usb_cdc_rom_console/include -I/home/pi/esp/esp-idf/components/esp_hal_i2c/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_hal_i2c/include -I/home/pi/esp/esp-idf/components/pthread/include -I/home/pi/esp/esp-idf/components/esp_timer/include -I/home/pi/esp/esp-idf/components/esp_driver_gptimer/include -I/home/pi/esp/esp-idf/components/esp_ringbuf/include -I/home/pi/esp/esp-idf/components/esp_driver_uart/include -I/home/pi/esp/esp-idf/components/vfs/include -I/home/pi/esp/esp-idf/components/app_trace/include -I/home/pi/esp/esp-idf/components/esp_event/include -I/home/pi/esp/esp-idf/components/nvs_sec_provider/include -I/home/pi/esp/esp-idf/components/nvs_flash/include -I/home/pi/esp/esp-idf/components/esp_phy/include -I/home/pi/esp/esp-idf/components/esp_phy/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_driver_usb_serial_jtag/include -I/home/pi/esp/esp-idf/components/esp_vfs_console/include -I/home/pi/esp/esp-idf/components/esp_netif/include -I/home/pi/esp/esp-idf/components/wpa_supplicant/include -I/home/pi/esp/esp-idf/components/wpa_supplicant/port/include -I/home/pi/esp/esp-idf/components/wpa_supplicant/esp_supplicant/include -I/home/pi/esp/esp-idf/components/esp_coex/include -I/home/pi/esp/esp-idf/components/esp_wifi/include -I/home/pi/esp/esp-idf/components/esp_wifi/include/local -I/home/pi/esp/esp-idf/components/esp_wifi/wifi_apps/include -I/home/pi/esp/esp-idf/components/esp_wifi/wifi_apps/nan_app/include -I/home/pi/esp/esp-idf/components/esp_driver_spi/include -I/home/pi/esp/esp-idf/components/esp_gdbstub/include -I/home/pi/esp/esp-idf/components/unity/include -I/home/pi/esp/esp-idf/components/unity/unity/src -I/home/pi/esp/esp-idf/components/cmock/CMock/src -I/home/pi/esp/esp-idf/components/console -I/home/pi/esp/esp-idf/components/esp_driver_pcnt/include -I/home/pi/esp/esp-idf/components/esp_driver_mcpwm/include -I/home/pi/esp/esp-idf/components/esp_driver_ana_cmpr/include -I/home/pi/esp/esp-idf/components/esp_driver_i2s/include -I/home/pi/esp/esp-idf/components/sdmmc/include -I/home/pi/esp/esp-idf/components/esp_driver_sd_intf/include -I/home/pi/esp/esp-idf/components/esp_driver_sdmmc/include -I/home/pi/esp/esp-idf/components/esp_driver_sdmmc/legacy/include -I/home/pi/esp/esp-idf/components/esp_driver_sdspi/include -I/home/pi/esp/esp-idf/components/esp_driver_sdio/include -I/home/pi/esp/esp-idf/components/esp_driver_dac/include -I/home/pi/esp/esp-idf/components/esp_driver_bitscrambler/include -I/home/pi/esp/esp-idf/components/esp_driver_rmt/include -I/home/pi/esp/esp-idf/components/esp_driver_tsens/include -I/home/pi/esp/esp-idf/components/esp_driver_sdm/include -I/home/pi/esp/esp-idf/components/esp_driver_i2c/include -I/home/pi/esp/esp-idf/components/esp_driver_ledc/include -I/home/pi/esp/esp-idf/components/esp_driver_parlio/include -I/home/pi/esp/esp-idf/components/esp_driver_twai/include -I/home/pi/esp/esp-idf/components/driver/deprecated -I/home/pi/esp/esp-idf/components/driver/i2c/include -I/home/pi/esp/esp-idf/components/driver/touch_sensor/include -I/home/pi/esp/esp-idf/components/driver/twai/include -I/home/pi/esp/esp-idf/components/http_parser -I/home/pi/esp/esp-idf/components/esp-tls -I/home/pi/esp/esp-idf/components/esp-tls/esp-tls-crypto -I/home/pi/esp/esp-idf/components/esp_adc/include -I/home/pi/esp/esp-idf/components/esp_adc/interface -I/home/pi/esp/esp-idf/components/esp_adc/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_blockdev/include -I/home/pi/esp/esp-idf/components/esp_driver_isp/include -I/home/pi/esp/esp-idf/components/esp_driver_cam/include -I/home/pi/esp/esp-idf/components/esp_driver_cam/interface -I/home/pi/esp/esp-idf/components/esp_driver_i3c/include -I/home/pi/esp/esp-idf/components/esp_psram/include -I/home/pi/esp/esp-idf/components/esp_driver_jpeg/include -I/home/pi/esp/esp-idf/components/esp_driver_ppa/include -I/home/pi/esp/esp-idf/components/esp_eth/include -I/home/pi/esp/esp-idf/components/esp_hid/include -I/home/pi/esp/esp-idf/components/tcp_transport/include -I/home/pi/esp/esp-idf/components/esp_http_client/include -I/home/pi/esp/esp-idf/components/esp_http_server/include -I/home/pi/esp/esp-idf/components/esp_https_ota/include -I/home/pi/esp/esp-idf/components/esp_https_server/include -I/home/pi/esp/esp-idf/components/esp_lcd/include -I/home/pi/esp/esp-idf/components/esp_lcd/interface -I/home/pi/esp/esp-idf/components/protobuf-c/protobuf-c -I/home/pi/esp/esp-idf/components/protocomm/include/common -I/home/pi/esp/esp-idf/components/protocomm/include/security -I/home/pi/esp/esp-idf/components/protocomm/include/transports -I/home/pi/esp/esp-idf/components/protocomm/include/crypto/srp6a -I/home/pi/esp/esp-idf/components/protocomm/proto-c -I/home/pi/esp/esp-idf/components/esp_local_ctrl/include -I/home/pi/esp/esp-idf/components/wear_levelling/include -I/home/pi/esp/esp-idf/components/fatfs/diskio -I/home/pi/esp/esp-idf/components/fatfs/src -I/home/pi/esp/esp-idf/components/fatfs/vfs -I/home/pi/esp/esp-idf/components/idf_test/include -I/home/pi/esp/esp-idf/components/idf_test/include/esp32c3 -I/home/pi/esp/esp-idf/components/ieee802154/include -I/home/pi/esp/esp-idf/components/json/cJSON -I/home/pi/esp/esp-idf/components/mqtt/esp-mqtt/include -I/home/pi/esp/esp-idf/components/rt/include -I/home/pi/esp/esp-idf/components/spiffs/include -I/home/pi/esp/esp-idf/components/wifi_provisioning/include -march=rv32imc_zicsr_zifencei -mtune=esp-base -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -nostartfiles -Og -fno-shrink-wrap -fmacro-prefix-map=/home/pi/lighting-controller/esp32=. -fmacro-prefix-map=/home/pi/esp/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu23 -Wno-old-style-declaration -fzero-init-padding-bits=all -fno-malloc-dce -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj -MF esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj -c /home/pi/lighting-controller/esp32/main/main.c +In file included from /home/pi/esp/esp-idf/components/esp_hw_support/include/esp_intr_alloc.h:12, + from /home/pi/esp/esp-idf/components/esp_hw_support/include/esp_cpu.h:21, + from /home/pi/esp/esp-idf/components/esp_hw_support/include/spinlock.h:11, + from /home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h:65, + from /home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include/freertos/portable.h:57, + from /home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include/freertos/FreeRTOS.h:69, + from /home/pi/lighting-controller/esp32/main/main.c:3: +/home/pi/lighting-controller/esp32/main/main.c: In function 'espnow_init': +/home/pi/lighting-controller/esp32/main/main.c:89:49: error: passing argument 2 of 'esp_wifi_get_channel' from incompatible pointer type [-Wincompatible-pointer-types] + 89 | ESP_ERROR_CHECK(esp_wifi_get_channel(&p_ch, &s_ch)); + | ^~~~~ + | | + | uint8_t * {aka unsigned char *} +/home/pi/esp/esp-idf/components/esp_common/include/esp_err.h:116:30: note: in definition of macro 'ESP_ERROR_CHECK' + 116 | esp_err_t err_rc_ = (x); \ + | ^ +In file included from /home/pi/lighting-controller/esp32/main/main.c:8: +/home/pi/esp/esp-idf/components/esp_wifi/include/esp_wifi.h:806:70: note: expected 'wifi_second_chan_t *' but argument is of type 'uint8_t *' {aka 'unsigned char *'} + 806 | esp_err_t esp_wifi_get_channel(uint8_t *primary, wifi_second_chan_t *second); + | ~~~~~~~~~~~~~~~~~~~~^~~~~~ +[4/9] Completed 'bootloader' +ninja: build stopped: subcommand failed. diff --git a/esp32/build/log/idf_py_stdout_output_85420 b/esp32/build/log/idf_py_stdout_output_85420 new file mode 100644 index 0000000..529fa2c --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_85420 @@ -0,0 +1,30 @@ +Command: ninja flash +[1/10] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[2/10] No install step for 'bootloader' +[3/10] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +FAILED: esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +/home/pi/.espressif/tools/riscv32-esp-elf/esp-15.2.0_20250920/riscv32-esp-elf/bin/riscv32-esp-elf-gcc -DESP_PLATFORM -DIDF_VER=\"v6.0-dev-2594-g25c40d4563\" -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -DUNITY_INCLUDE_CONFIG_H -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -I/home/pi/lighting-controller/esp32/build/config -I/home/pi/lighting-controller/esp32/main -I/home/pi/esp/esp-idf/components/esp_libc/platform_include -I/home/pi/esp/esp-idf/components/freertos/config/include -I/home/pi/esp/esp-idf/components/freertos/config/include/freertos -I/home/pi/esp/esp-idf/components/freertos/config/riscv/include -I/home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include -I/home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/riscv/include -I/home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos -I/home/pi/esp/esp-idf/components/freertos/esp_additions/include -I/home/pi/esp/esp-idf/components/esp_hw_support/include -I/home/pi/esp/esp-idf/components/esp_hw_support/include/soc -I/home/pi/esp/esp-idf/components/esp_hw_support/dma/include -I/home/pi/esp/esp-idf/components/esp_hw_support/ldo/include -I/home/pi/esp/esp-idf/components/esp_hw_support/debug_probe/include -I/home/pi/esp/esp-idf/components/esp_hw_support/etm/include -I/home/pi/esp/esp-idf/components/esp_hw_support/mspi_timing_tuning/include -I/home/pi/esp/esp-idf/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -I/home/pi/esp/esp-idf/components/esp_hw_support/power_supply/include -I/home/pi/esp/esp-idf/components/esp_hw_support/modem/include -I/home/pi/esp/esp-idf/components/esp_hw_support/include/soc/esp32c3 -I/home/pi/esp/esp-idf/components/esp_hw_support/port/esp32c3/. -I/home/pi/esp/esp-idf/components/esp_hw_support/port/esp32c3/include -I/home/pi/esp/esp-idf/components/heap/include -I/home/pi/esp/esp-idf/components/heap/tlsf -I/home/pi/esp/esp-idf/components/log/include -I/home/pi/esp/esp-idf/components/soc/include -I/home/pi/esp/esp-idf/components/soc/esp32c3 -I/home/pi/esp/esp-idf/components/soc/esp32c3/include -I/home/pi/esp/esp-idf/components/soc/esp32c3/register -I/home/pi/esp/esp-idf/components/hal/platform_port/include -I/home/pi/esp/esp-idf/components/hal/esp32c3/include -I/home/pi/esp/esp-idf/components/hal/include -I/home/pi/esp/esp-idf/components/esp_rom/include -I/home/pi/esp/esp-idf/components/esp_rom/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_rom/esp32c3/include/esp32c3 -I/home/pi/esp/esp-idf/components/esp_rom/esp32c3 -I/home/pi/esp/esp-idf/components/esp_common/include -I/home/pi/esp/esp-idf/components/esp_system/include -I/home/pi/esp/esp-idf/components/esp_system/port/soc -I/home/pi/esp/esp-idf/components/esp_system/port/include/riscv -I/home/pi/esp/esp-idf/components/esp_system/port/include/private -I/home/pi/esp/esp-idf/components/riscv/include -I/home/pi/esp/esp-idf/components/lwip/include -I/home/pi/esp/esp-idf/components/lwip/include/apps -I/home/pi/esp/esp-idf/components/lwip/include/apps/sntp -I/home/pi/esp/esp-idf/components/lwip/lwip/src/include -I/home/pi/esp/esp-idf/components/lwip/port/include -I/home/pi/esp/esp-idf/components/lwip/port/freertos/include -I/home/pi/esp/esp-idf/components/lwip/port/esp32xx/include -I/home/pi/esp/esp-idf/components/lwip/port/esp32xx/include/arch -I/home/pi/esp/esp-idf/components/lwip/port/esp32xx/include/sys -I/home/pi/esp/esp-idf/components/esp_app_format/include -I/home/pi/esp/esp-idf/components/esp_bootloader_format/include -I/home/pi/esp/esp-idf/components/app_update/include -I/home/pi/esp/esp-idf/components/bootloader_support/include -I/home/pi/esp/esp-idf/components/bootloader_support/bootloader_flash/include -I/home/pi/esp/esp-idf/components/esp_partition/include -I/home/pi/esp/esp-idf/components/efuse/include -I/home/pi/esp/esp-idf/components/efuse/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_security/include -I/home/pi/esp/esp-idf/components/esp_driver_gpio/include -I/home/pi/esp/esp-idf/components/esp_pm/include -I/home/pi/esp/esp-idf/components/mbedtls/port/include -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/include -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/library -I/home/pi/esp/esp-idf/components/mbedtls/esp_crt_bundle/include -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/3rdparty/everest/include -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/3rdparty/p256-m -I/home/pi/esp/esp-idf/components/mbedtls/mbedtls/3rdparty/p256-m/p256-m -I/home/pi/esp/esp-idf/components/esp_mm/include -I/home/pi/esp/esp-idf/components/spi_flash/include -I/home/pi/esp/esp-idf/components/esp_usb_cdc_rom_console/include -I/home/pi/esp/esp-idf/components/esp_hal_i2c/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_hal_i2c/include -I/home/pi/esp/esp-idf/components/pthread/include -I/home/pi/esp/esp-idf/components/esp_timer/include -I/home/pi/esp/esp-idf/components/esp_driver_gptimer/include -I/home/pi/esp/esp-idf/components/esp_ringbuf/include -I/home/pi/esp/esp-idf/components/esp_driver_uart/include -I/home/pi/esp/esp-idf/components/vfs/include -I/home/pi/esp/esp-idf/components/app_trace/include -I/home/pi/esp/esp-idf/components/esp_event/include -I/home/pi/esp/esp-idf/components/nvs_sec_provider/include -I/home/pi/esp/esp-idf/components/nvs_flash/include -I/home/pi/esp/esp-idf/components/esp_phy/include -I/home/pi/esp/esp-idf/components/esp_phy/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_driver_usb_serial_jtag/include -I/home/pi/esp/esp-idf/components/esp_vfs_console/include -I/home/pi/esp/esp-idf/components/esp_netif/include -I/home/pi/esp/esp-idf/components/wpa_supplicant/include -I/home/pi/esp/esp-idf/components/wpa_supplicant/port/include -I/home/pi/esp/esp-idf/components/wpa_supplicant/esp_supplicant/include -I/home/pi/esp/esp-idf/components/esp_coex/include -I/home/pi/esp/esp-idf/components/esp_wifi/include -I/home/pi/esp/esp-idf/components/esp_wifi/include/local -I/home/pi/esp/esp-idf/components/esp_wifi/wifi_apps/include -I/home/pi/esp/esp-idf/components/esp_wifi/wifi_apps/nan_app/include -I/home/pi/esp/esp-idf/components/esp_driver_spi/include -I/home/pi/esp/esp-idf/components/esp_gdbstub/include -I/home/pi/esp/esp-idf/components/unity/include -I/home/pi/esp/esp-idf/components/unity/unity/src -I/home/pi/esp/esp-idf/components/cmock/CMock/src -I/home/pi/esp/esp-idf/components/console -I/home/pi/esp/esp-idf/components/esp_driver_pcnt/include -I/home/pi/esp/esp-idf/components/esp_driver_mcpwm/include -I/home/pi/esp/esp-idf/components/esp_driver_ana_cmpr/include -I/home/pi/esp/esp-idf/components/esp_driver_i2s/include -I/home/pi/esp/esp-idf/components/sdmmc/include -I/home/pi/esp/esp-idf/components/esp_driver_sd_intf/include -I/home/pi/esp/esp-idf/components/esp_driver_sdmmc/include -I/home/pi/esp/esp-idf/components/esp_driver_sdmmc/legacy/include -I/home/pi/esp/esp-idf/components/esp_driver_sdspi/include -I/home/pi/esp/esp-idf/components/esp_driver_sdio/include -I/home/pi/esp/esp-idf/components/esp_driver_dac/include -I/home/pi/esp/esp-idf/components/esp_driver_bitscrambler/include -I/home/pi/esp/esp-idf/components/esp_driver_rmt/include -I/home/pi/esp/esp-idf/components/esp_driver_tsens/include -I/home/pi/esp/esp-idf/components/esp_driver_sdm/include -I/home/pi/esp/esp-idf/components/esp_driver_i2c/include -I/home/pi/esp/esp-idf/components/esp_driver_ledc/include -I/home/pi/esp/esp-idf/components/esp_driver_parlio/include -I/home/pi/esp/esp-idf/components/esp_driver_twai/include -I/home/pi/esp/esp-idf/components/driver/deprecated -I/home/pi/esp/esp-idf/components/driver/i2c/include -I/home/pi/esp/esp-idf/components/driver/touch_sensor/include -I/home/pi/esp/esp-idf/components/driver/twai/include -I/home/pi/esp/esp-idf/components/http_parser -I/home/pi/esp/esp-idf/components/esp-tls -I/home/pi/esp/esp-idf/components/esp-tls/esp-tls-crypto -I/home/pi/esp/esp-idf/components/esp_adc/include -I/home/pi/esp/esp-idf/components/esp_adc/interface -I/home/pi/esp/esp-idf/components/esp_adc/esp32c3/include -I/home/pi/esp/esp-idf/components/esp_blockdev/include -I/home/pi/esp/esp-idf/components/esp_driver_isp/include -I/home/pi/esp/esp-idf/components/esp_driver_cam/include -I/home/pi/esp/esp-idf/components/esp_driver_cam/interface -I/home/pi/esp/esp-idf/components/esp_driver_i3c/include -I/home/pi/esp/esp-idf/components/esp_psram/include -I/home/pi/esp/esp-idf/components/esp_driver_jpeg/include -I/home/pi/esp/esp-idf/components/esp_driver_ppa/include -I/home/pi/esp/esp-idf/components/esp_eth/include -I/home/pi/esp/esp-idf/components/esp_hid/include -I/home/pi/esp/esp-idf/components/tcp_transport/include -I/home/pi/esp/esp-idf/components/esp_http_client/include -I/home/pi/esp/esp-idf/components/esp_http_server/include -I/home/pi/esp/esp-idf/components/esp_https_ota/include -I/home/pi/esp/esp-idf/components/esp_https_server/include -I/home/pi/esp/esp-idf/components/esp_lcd/include -I/home/pi/esp/esp-idf/components/esp_lcd/interface -I/home/pi/esp/esp-idf/components/protobuf-c/protobuf-c -I/home/pi/esp/esp-idf/components/protocomm/include/common -I/home/pi/esp/esp-idf/components/protocomm/include/security -I/home/pi/esp/esp-idf/components/protocomm/include/transports -I/home/pi/esp/esp-idf/components/protocomm/include/crypto/srp6a -I/home/pi/esp/esp-idf/components/protocomm/proto-c -I/home/pi/esp/esp-idf/components/esp_local_ctrl/include -I/home/pi/esp/esp-idf/components/wear_levelling/include -I/home/pi/esp/esp-idf/components/fatfs/diskio -I/home/pi/esp/esp-idf/components/fatfs/src -I/home/pi/esp/esp-idf/components/fatfs/vfs -I/home/pi/esp/esp-idf/components/idf_test/include -I/home/pi/esp/esp-idf/components/idf_test/include/esp32c3 -I/home/pi/esp/esp-idf/components/ieee802154/include -I/home/pi/esp/esp-idf/components/json/cJSON -I/home/pi/esp/esp-idf/components/mqtt/esp-mqtt/include -I/home/pi/esp/esp-idf/components/rt/include -I/home/pi/esp/esp-idf/components/spiffs/include -I/home/pi/esp/esp-idf/components/wifi_provisioning/include -march=rv32imc_zicsr_zifencei -mtune=esp-base -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -nostartfiles -Og -fno-shrink-wrap -fmacro-prefix-map=/home/pi/lighting-controller/esp32=. -fmacro-prefix-map=/home/pi/esp/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu23 -Wno-old-style-declaration -fzero-init-padding-bits=all -fno-malloc-dce -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj -MF esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj -c /home/pi/lighting-controller/esp32/main/main.c +In file included from /home/pi/esp/esp-idf/components/esp_hw_support/include/esp_intr_alloc.h:12, + from /home/pi/esp/esp-idf/components/esp_hw_support/include/esp_cpu.h:21, + from /home/pi/esp/esp-idf/components/esp_hw_support/include/spinlock.h:11, + from /home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos/portmacro.h:65, + from /home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include/freertos/portable.h:57, + from /home/pi/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include/freertos/FreeRTOS.h:69, + from /home/pi/lighting-controller/esp32/main/main.c:3: +/home/pi/lighting-controller/esp32/main/main.c: In function 'espnow_init': +/home/pi/lighting-controller/esp32/main/main.c:89:49: error: passing argument 2 of 'esp_wifi_get_channel' from incompatible pointer type [-Wincompatible-pointer-types] + 89 | ESP_ERROR_CHECK(esp_wifi_get_channel(&p_ch, &s_ch)); + | ^~~~~ + | | + | uint8_t * {aka unsigned char *} +/home/pi/esp/esp-idf/components/esp_common/include/esp_err.h:116:30: note: in definition of macro 'ESP_ERROR_CHECK' + 116 | esp_err_t err_rc_ = (x); \ + | ^ +In file included from /home/pi/lighting-controller/esp32/main/main.c:8: +/home/pi/esp/esp-idf/components/esp_wifi/include/esp_wifi.h:806:70: note: expected 'wifi_second_chan_t *' but argument is of type 'uint8_t *' {aka 'unsigned char *'} + 806 | esp_err_t esp_wifi_get_channel(uint8_t *primary, wifi_second_chan_t *second); + | ~~~~~~~~~~~~~~~~~~~~^~~~~~ +[4/10] Completed 'bootloader' +ninja: build stopped: subcommand failed. diff --git a/esp32/build/log/idf_py_stdout_output_85598 b/esp32/build/log/idf_py_stdout_output_85598 new file mode 100644 index 0000000..e69de29 diff --git a/esp32/build/log/idf_py_stdout_output_87956 b/esp32/build/log/idf_py_stdout_output_87956 new file mode 100644 index 0000000..1f537e3 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_87956 @@ -0,0 +1,21 @@ +Command: ninja all +[1/9] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[2/9] No install step for 'bootloader' +[3/9] Completed 'bootloader' +[4/9] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj +[5/9] Linking C static library esp-idf/main/libmain.a +[6/9] Generating esp-idf/esp_system/ld/sections.ld +[7/9] Linking CXX executable spi_slave.elf +[8/9] Generating binary image from built executable +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +esptool v5.1.0 +Creating ESP32C3 image... +Merged 1 ELF section. +Successfully created ESP32C3 image. +Generated /home/pi/lighting-controller/esp32/build/spi_slave.bin +[9/9] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd440 bytes. Smallest app partition is 0x100000 bytes. 0x42bc0 bytes (26%) free. diff --git a/esp32/build/log/idf_py_stdout_output_89033 b/esp32/build/log/idf_py_stdout_output_89033 new file mode 100644 index 0000000..4c16c58 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_89033 @@ -0,0 +1,51 @@ +Command: ninja flash +[1/5] cd /home/pi/lighting-controller/esp32/build && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app /home/pi/lighting-controller/esp32/build/partition_table/partition-table.bin /home/pi/lighting-controller/esp32/build/spi_slave.bin +spi_slave.bin binary size 0xbd440 bytes. Smallest app partition is 0x100000 bytes. 0x42bc0 bytes (26%) free. +[2/5] Performing build step for 'bootloader' +[1/1] cd /home/pi/lighting-controller/esp32/build/bootloader && /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /home/pi/lighting-controller/esp32/build/bootloader/bootloader.bin +Bootloader binary size 0x5250 bytes. 0x2db0 bytes (36%) free. +[3/5] No install step for 'bootloader' +[4/5] Completed 'bootloader' +[4/5] Running utility command for flash +esptool --chip esp32c3 -p /dev/ttyACM0 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 2MB 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 spi_slave.bin +Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. +Warning: Deprecated: Option '--flash_freq' is deprecated. Use '--flash-freq' instead. +Warning: Deprecated: Option '--flash_size' is deprecated. Use '--flash-size' instead. +Warning: Deprecated: Choice 'default_reset' for option '--before' is deprecated. Use 'default-reset' instead. +Warning: Deprecated: Choice 'hard_reset' for option '--after' is deprecated. Use 'hard-reset' instead. +Warning: Deprecated: Command 'write_flash' is deprecated. Use 'write-flash' instead. +esptool v5.1.0 +Serial port /dev/ttyACM0: +Connecting.... +Connected to ESP32-C3 on /dev/ttyACM0: +Chip type: ESP32-C3 (QFN32) (revision v0.4) +Features: Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC) +Crystal frequency: 40MHz +USB mode: USB-Serial/JTAG +MAC: 58:8c:81:a1:6d:20 + +Uploading stub flasher... +Running stub flasher... +Stub flasher running. +Changing baud rate to 460800... +Changed. + +Configuring flash size... +Flash will be erased from 0x00000000 to 0x00005fff... +Flash will be erased from 0x00008000 to 0x00008fff... +Flash will be erased from 0x00010000 to 0x000cdfff... +SHA digest in image updated. +Compressed 21072 bytes to 13311... + Writing at 0x00000000 [ ] 0.0% 0/13311 bytes... Writing at 0x00005250 [==============================] 100.0% 13311/13311 bytes... +Wrote 21072 bytes (13311 compressed) at 0x00000000 in 0.4 seconds (417.7 kbit/s). +Hash of data verified. +Compressed 3072 bytes to 103... + Writing at 0x00008000 [ ] 0.0% 0/103 bytes... Writing at 0x00008c00 [==============================] 100.0% 103/103 bytes... +Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (522.9 kbit/s). +Hash of data verified. +Compressed 775232 bytes to 451735... + Writing at 0x00010000 [ ] 0.0% 0/451735 bytes... Writing at 0x0001bc43 [> ] 3.6% 16384/451735 bytes... Writing at 0x000246c0 [=> ] 7.3% 32768/451735 bytes... Writing at 0x0002e13a [==> ] 10.9% 49152/451735 bytes... Writing at 0x00034836 [===> ] 14.5% 65536/451735 bytes... Writing at 0x0003b79b [====> ] 18.1% 81920/451735 bytes... Writing at 0x00042dec [=====> ] 21.8% 98304/451735 bytes... Writing at 0x000499db [======> ] 25.4% 114688/451735 bytes... Writing at 0x0004fa60 [=======> ] 29.0% 131072/451735 bytes... Writing at 0x00056666 [========> ] 32.6% 147456/451735 bytes... Writing at 0x0005c4da [=========> ] 36.3% 163840/451735 bytes... Writing at 0x000628f6 [==========> ] 39.9% 180224/451735 bytes... Writing at 0x00068752 [============> ] 43.5% 196608/451735 bytes... Writing at 0x0006e2b4 [=============> ] 47.1% 212992/451735 bytes... Writing at 0x00074aea [==============> ] 50.8% 229376/451735 bytes... Writing at 0x0007ad6e [===============> ] 54.4% 245760/451735 bytes... Writing at 0x00080cc0 [================> ] 58.0% 262144/451735 bytes... Writing at 0x000871b0 [=================> ] 61.7% 278528/451735 bytes... Writing at 0x0008dbb8 [==================> ] 65.3% 294912/451735 bytes... Writing at 0x00094b80 [===================> ] 68.9% 311296/451735 bytes... Writing at 0x0009b7ac [====================> ] 72.5% 327680/451735 bytes... Writing at 0x000a1c0a [=====================> ] 76.2% 344064/451735 bytes... Writing at 0x000a7e60 [======================> ] 79.8% 360448/451735 bytes... Writing at 0x000ae36f [========================> ] 83.4% 376832/451735 bytes... Writing at 0x000b5ecf [=========================> ] 87.0% 393216/451735 bytes... Writing at 0x000bc118 [==========================> ] 90.7% 409600/451735 bytes... Writing at 0x000c30c2 [===========================> ] 94.3% 425984/451735 bytes... Writing at 0x000c96a8 [============================> ] 97.9% 442368/451735 bytes... Writing at 0x000cd440 [==============================] 100.0% 451735/451735 bytes... +Wrote 775232 bytes (451735 compressed) at 0x00010000 in 6.3 seconds (986.0 kbit/s). +Hash of data verified. + +Hard resetting via RTS pin... diff --git a/esp32/build/log/idf_py_stdout_output_89365 b/esp32/build/log/idf_py_stdout_output_89365 new file mode 100644 index 0000000..374af23 --- /dev/null +++ b/esp32/build/log/idf_py_stdout_output_89365 @@ -0,0 +1,120 @@ +Command: /home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python /home/pi/esp/esp-idf/tools/idf_monitor.py -p /dev/ttyACM0 -b 115200 --toolchain-prefix riscv32-esp-elf- --target esp32c3 --revision 3 --decode-panic backtrace /home/pi/lighting-controller/esp32/build/spi_slave.elf /home/pi/lighting-controller/esp32/build/bootloader/bootloader.elf -m '/home/pi/.espressif/python_env/idf6.0_py3.11_env/bin/python' '/home/pi/esp/esp-idf/tools/idf.py' '-p' '/dev/ttyACM0' +I (108) esp_image: segment 3: paddr=00030020 vaddr=42000020 sizeESP-ROM:esp32c3-api1-20210207 +Build:Feb 7 2021 +rst:0x15 (USB_UART_CHIP_RESET),boot:0x8 (SPI_FAST_FLASH_BOOT) +Saved PC:0x40383f16 +SPIWP:0xee +mode:DIO, clock div:1 +load:0x3fcd5830,len:0x15c4 +load:0x403cbf10,len:0xc6c +load:0x403ce710,len:0x2fc4 +entry 0x403cbf1a +I (24) boot: ESP-IDF v6.0-dev-2594-g25c40d4563 2nd stage bootloader +I (24) boot: compile time Oct 1 2025 19:47:28 +I (25) boot: chip revision: v0.4 +I (26) boot: efuse block revision: v1.3 +I (30) boot.esp32c3: SPI Speed : 80MHz +I (34) boot.esp32c3: SPI Mode : DIO +I (37) boot.esp32c3: SPI Flash Size : 2MB +I (41) boot: Enabling RNG early entropy source... +I (45) boot: Partition Table: +I (48) boot: ## Label Usage Type ST Offset Length +I (54) boot: 0 nvs WiFi data 01 02 00009000 00006000 +I (61) boot: 1 phy_init RF data 01 01 0000f000 00001000 +I (67) boot: 2 factory factory app 00 00 00010000 00100000 +I (74) boot: End of partition table +I (77) esp_image: segment 0: paddr=00010020 vaddr=3c090020 size=18bf8h (101368) map +I (101) esp_image: segment 1: paddr=00028c20 vaddr=3fc92200 size=0303ch ( 12348) load +I (103) esp_image: segment 2: paddr=0002bc64 vaddr=40380000 size=043b4h ( 17332) load +I (108) esp_image: segment 3: paddr=00030020 vaddr=42000020 size=8f6b4h (587444) map +I (204) esp_image: segment 4: paddr=000bf6dc vaddr=403843b4 size=0dd10h ( 56592) load +I (214) esp_image: segment 5: paddr=000cd3f4 vaddr=50000000 size=00020h ( 32) load +I (220) boot: Loaded app from partition at offset 0x10000 +I (220) boot: Disabling RNG early entropy source... +I (232) cpu_start: Unicore app +I (240) cpu_start: GPIO 20 and 21 are used as console UART I/O pins +I (240) cpu_start: Pro cpu start user code +I (240) cpu_start: cpu freq: 160000000 Hz +I (242) app_init: Application information: +I (246) app_init: Project name: spi_slave +I (250) app_init: App version: 1844a2e-dirty +I (255) app_init: Compile time: Oct 1 2025 22:00:17 +I (260) app_init: ELF file SHA256: bc5ed9962... +I (264) app_init: ESP-IDF: v6.0-dev-2594-g25c40d4563 +I (269) efuse_init: Min chip rev: v0.3 +I (273) efuse_init: Max chip rev: v1.99  +I (277) efuse_init: Chip rev: v0.4 +I (281) heap_init: Initializing. RAM available for dynamic allocation: +I (287) heap_init: At 3FC99790 len 00026870 (154 KiB): RAM +I (293) heap_init: At 3FCC0000 len 0001C710 (113 KiB): Retention RAM +I (299) heap_init: At 3FCDC710 len 00002950 (10 KiB): Retention RAM +I (305) heap_init: At 50000020 len 00001FC8 (7 KiB): RTCRAM +I (311) spi_flash: detected chip: generic +I (314) spi_flash: flash io: dio +W (317) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header. +I (329) sleep_gpio: Configure to isolate all GPIO pins in sleep state +I (335) sleep_gpio: Enable automatic switching of GPIO sleep configuration +I (342) main_task: Started on CPU0 +I (342) main_task: Calling app_main() +I (342) SPI_SLAVE: Starting SPI Slave with ESP-NOW example +I (352) pp: pp rom version: 9387209 +I (352) net80211: net80211 rom version: 9387209 +I (362) wifi:wifi driver task: 3fca1dec, prio:23, stack:6656, core=0 +I (362) wifi:wifi firmware version: bfadac0 +I (362) wifi:wifi certification version: v7.0 +I (372) wifi:config NVS flash: enabled +I (372) wifi:config nano formatting: disabled +I (382) wifi:Init data frame dynamic rx buffer num: 32 +I (382) wifi:Init static rx mgmt buffer num: 5 +I (382) wifi:Init management short buffer num: 32 +I (392) wifi:Init dynamic tx buffer num: 32 +I (392) wifi:Init static tx FG buffer num: 2 +I (402) wifi:Init static rx buffer size: 1600 +I (402) wifi:Init static rx buffer num: 10 +I (402) wifi:Init dynamic rx buffer num: 32 +I (412) wifi_init: rx ba win: 6 +I (412) wifi_init: accept mbox: 6 +I (412) wifi_init: tcpip mbox: 32 +I (422) wifi_init: udp mbox: 6 +I (422) wifi_init: tcp mbox: 6 +I (422) wifi_init: tcp tx win: 5760 +I (432) wifi_init: tcp rx win: 5760 +I (432) wifi_init: tcp mss: 1440 +I (432) wifi_init: WiFi IRAM OP enabled +I (442) wifi_init: WiFi RX IRAM OP enabled +I (442) phy_init: phy_version 1201,bae5dd99,Mar 3 2025,15:36:21 +I (482) wifi:mode : sta (58:8c:81:a1:6d:20) +I (482) wifi:enable tsf +I (482) ESPNOW: espnow [version: 2.0] init +I (482) SPI_SLAVE: ESP-NOW initialized successfully +I (492) SPI_SLAVE: SPI Slave initialized successfully +I (492) SPI_SLAVE: MOSI: GPIO10, MISO: GPIO9, SCLK: GPIO8, CS: GPIO7 +I (5702) SPI_SLAVE: Received 25 bytes: +0x7b 0x22 0x64 0x22 0x3a 0x7b 0x22 0x74 0x22 0x3a 0x22 0x62 0x22 0x2c 0x22 0x70 +0x74 0x22 0x3a 0x22 0x6f 0x6e 0x22 0x7d 0x7d +I (5702) SPI_SLAVE: SPI RX (len=25): {"d":{"t":"b","pt":"on"}} +I (5712) SPI_SLAVE: Broadcasting 25 bytes via ESP-NOW +I (5712) SPI_SLAVE: ESP-NOW send status: SUCCESS +I (265682) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (268802) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (269892) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (270502) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (271122) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (271752) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (272362) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (274992) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (275542) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (275902) SPI_SLAVE: ESP-NOW received 134 bytes from 58:8c:81:a0:d6:c4 +I (277372) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277482) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277492) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277592) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277602) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277702) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277712) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277802) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277822) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277922) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277932) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +I (277942) SPI_SLAVE: ESP-NOW received 64 bytes from 58:8c:81:a0:d6:c4 +[0;32 \ No newline at end of file diff --git a/esp32/build/project_description.json b/esp32/build/project_description.json index 4d3ac6f..44c54de 100644 --- a/esp32/build/project_description.json +++ b/esp32/build/project_description.json @@ -1,7 +1,7 @@ { "version": "1.2", "project_name": "spi_slave", - "project_version": "ddbf4a0", + "project_version": "1844a2e-dirty", "project_path": "/home/pi/lighting-controller/esp32", "idf_path": "/home/pi/esp/esp-idf", "build_dir": "/home/pi/lighting-controller/esp32/build", diff --git a/esp32/build/spi_slave.bin b/esp32/build/spi_slave.bin index 73e48c4c305a36266d72d817d503f9873b6b0927..8fb03c2b7f8cb68338337e1747cb0d3d323152aa 100644 GIT binary patch delta 91186 zcmb?^3s_X;*6`l%-g{<1(BUE?B94HFM1+V!ggB1OfQCk1$fyP3~1^> zF_(4BMk6JTdC1i5G1Jkw>Cp~Znwi>YrsgpR&1)m?~1C-zY{m=8`v!3-{*6qEm z_qs>N)~6hmPnCsszxNi)B#b=v52nRm@8rb92?>**oHT9L?D?zD2dvK4sS^@X;^R|# zub%s~Zr}Lt*7eGHa+hxBjG{3|-^<%}|EVu?z9%KsW5&!0N$8;dq%n77#9&=?kNh`! z>3Y1Lq8pJtST{UJ7o9(OM*kj@dZl2ZH>&&eiBYdscs;o9mD+%C@zYKB?-HTrfmf=t z{JjTxUXvbrrN$#f_?Dmv4_73Y$|-ku>pkzFMFjfL?}jBfv_H-0-+jV4}t^X zD8e@gXArI+G$GtWV5WMdY7n#tdjh;tgAwZxA`#*d5)t$WnF!ekW`qI+3ql#fhN)iT zQ+HzED8faA2M9jXyi!9EA`xN{5)o1n^a$w)nFu)uQxWDNlp?H0s6^O<(136X;TpmN z@e`i?ktNIwSf^ssdVJG^H9Y9a8n#8ThH%8Oy;ws?9BXhQT#H~0`!K&!ysu(Akitw~ z@6?8N-l>s3-l_Mzy;G+mPQ`cyVuE$9$9xWPGGZQaJYoTHG-4HE9bz@&V8j~4TEt$6 zHHc}OF^Dq|-9veqh?@`(MtlWvJBBG_oEY%Igj0xp5jP?pf_MYsXA!SO+#azRaR-j~0ESR0tg-=jF7 z53gB-*gt`%J%xD-b)rcZm$SoYJuoLRLU9A)y$I_O79#{BQ^DFNykaRXkMYt|yr!4e zNQ#T2z04FZ?dg?IaZ!{PS$)1s_vy$;!CmlqG;@;HubASz4t{0O--nIpu0j$D?t*W? z?6S&dgDWYn7!r)KIu)+R8d;985MeAr8p2LWFw&QCP&~qiIZE;HcFZY?u^BH?JSdZC zqS%nZJfJwyoAFtUxQ`bTN^ydQiKRGF%_LJCp<>c04i}hg#M(ff$zAM~gjL5eQ)z-f zVdx;-j8(T5!Gxm?7<5MmMh--2Pj>@d;p%SL;7-wX0iWf=_<+zE~cvBL_@ zCFsMDBa~rCK8EQ~4rVOuLJZU4+Xcg=7^XwL6T`6UF-%8g5QZx-OdBu+!_^q37IkEt zj03|sgqc7LAH^_>;Q+?LoWd|2`u-Tch+%XGDyAzkH;Es1Vt>^Xo>?Xva|Lk|0#$ko zG4(4C5cA9Bun%HnW`Yq%D&bfKCnHWrpo+4Tv>e2f5U5f4O4>Zc#R$}8l*wuEM0eJ! zmmenVREQjik0SVE+9@UNBH|{50PGQd6>rH_RwAb0MY~Bg256nq@=~DXzY;FHM_M-& zXkG17=xCi%pv7%c=xF^@pzU!_NuzB=fmR0-AV*^ zHeLg@6fteIZ!k<7@uHGO8@ma^wDFl0G9B$0J{ZH3B$iP4DZ#6(M%jA6>4N1Tm7 zOJ_z*EuD(EK>RqIeTj@ZDRPEkZGhR+B5kiH9H^xKhV=UojwpO*6nsU&jWD4HyS4Dv z@0`Jo5cmLb3rNLqF~Zb#ykR@SQG}Zazahl>@P-tGu?QzIJ`r&-f=SC8d=OF)vJl*H znnpp7z_JXMoR$6%izQJkOA2)>cta?{oVR$x6$FhEr)f0ogK!!+5{$A{8w)4Gig5d$eQG{y> zNOAGWC)k$>yHR}mNp>!$+tb@SbtghK!Zw6TgbD;Z!UhEJ>CHxqBYU%%s?L+X5e!$b z(>Iz_65g05V~e;ei7gTQ?xj&*g}n>01Mxg@Xn*z#O<~}VIGn#%82ic@z7DR|N)nga^cb|QpdlOgpNwIK?_H~*_Ps1UXzP&)cI z1=D9Mbd(-x(Fl__EJ)}8_K;v$p>5l_S+cGc2OOCfpk5Ow14d;-s z6cvRd0fX3%z+kur(`^WDY*)hl+Gz|~kusQCglQUS8OLylk4*O)hIL9f%2#8EZHB^@ zk=9|ilE1=rT3PT06cpDUYYXFUXiGm4Y20bkyLiGhExj;IPPnOHni$@_HIbXSC2naz zLK_37qC%QhrYJ6Q8_-!}n1Kdt?&`_wnvRM$cxw!IS{Pu*I90X*x<89+&goBS3@Z?> z#cB*Yp41qQBmM^Aw>YdYOpis}i0QHM8iO|ijk|%SKMp8u%e-Mqyk+|MIP4<+n6VFq zjz*k__#1>o4BtcLdlB6D8zmgvM`H-gk|DZ9n5JD!@Z`l|-UB873}TWf=V|(C4DFi% zyND;!I_y^RSGY1+7Pc4#Y5QpmH13AB^yx_BPD>c%3DY#6LX(`ZSHU##YG!L9H*-te z(tyA=1`MGJF>RKjc#_+Iff_?UG+?^Xlh@S;6)(nW+uy=~BBdG^i{pl}9NX7_2F^#5 zapdA(WTtm&)qe6VThKMkebmaCpFqq{9R3 zLviLqrfP(p2zwCrAvh4IqEq7e73@~hdBXvX;nqHlVHM(q2-6W7bjkX8u<37jFyVh( zZO|daA!H&jnBBBrV{jsvKGztwcTd)DK0=R02-{AfTlrpNIE`vII&qMqITfRm^^VcWL-esoFn*`Tkd2uH1yi_+ z;cE!~n0F5quURY@t|DHHdB^)F>vPf2=?G2?pTzVUgdMP`jO`g$fx#_>j3It8W0-_c zjc{ubV;C9B8rET+0kIuf=U{l!=Wx7?jhfmXZBIk^4efe_z+fJaa1%|SRjI=89SnOT z{tdCugk*ht3~Lb{Q8N(-A%q}=BSayDA;ciWAtWIDbN|QZ;FAb;q_}f6JC7^8@CPvr zVK_q*@xV03KsO_65YrvhXvB1*LjULvr(Y6ppqrXdOs5+e z`bW=(E+q2?dKOfPn4SgAKpc#?80m4>+J(u)0Nv>&Vg}vd(LcJWi%bIV^=y>aZE$q)5E+Xh*+Z!3nF^vjJVhYI#Fuja(XPIR*N+1=H_{2iLQl zX4=MFK`QN<73lLZZw1C_X%`@-^ivVj(vC(nba0uZ70+~+?b&HANDuSkv7@`o;5hfy75H=$0LpXzQrE9n-YVr47tWm}86bJ5OU*(ALRj59|nn=bp@!kQph9z}3VgEsPAyM6c z)I)3vQC)|5huC6ba>1iRte(_e1N|3lBr*LLrhLIhQM~F4b{4UP0I6YPDUPpU!zj*H za6t`gA*xXEW(~WMC92M_rVceCK3&IFAQmn4>~Dmqx{3>ru%}pJ0T_LhwG+n`xOWs) z*=!JYjNL#?%V6IzHqM`U6jMC-z!7V>6&#K1Ws4&O9vovQlDZNwf62!BI6j(uK+a*l zhV@^vq4B!+I{y--P@6kP=y=AZZ!FlM4^Ll{K9DW4h@-ty%WZWZB&obp15|a(#fx8J zk%_8IocNQ2q$c=`0SD56w0Y8_2lcD^TktNV?_qpK9e(5 z9m@rKdzsm|9HyUSO+lv33Zu4MaCC6ziFGI0QkFP=g6val8nIsx%TBRHgg6I6;P-5L zP+e!4%k)&api?VcVKC!+_FZCr3%t*uTI)+tN-+}#sJVE%!9gL*>3%}r#W)LHI3pyIJ*RQa`DXKcW&oX%{WzuCH9$f`LgQhSln?Ma;*x z{4qck&x@E}Zmm7y(&?vcv9cyjrf=M+6EbDSNe^XqGbO~|X0tq6E?|SU&{Ey6jg|`m zs-|XMm(KFy5$iCUCi8{Jp>4GwrB-m;17~itmxAiPlgncIsa&uG$Ytq!Mm%+gz0MKy z8EE*8HT##CljhQbm3)*m2eHbuLrnRd{hsyvchVLqzA))S#6s;thUZ={$rTUT zo-LB4Dl=BWnTKqo%Dl*>)h+`2N8X*-o?_S|_B1Q#7{;)3S66b3kdn{f8X?n3{Rqh6 zNHJ+xES}@Yb(Yx1z?TB)M>29jr6Mt;ZWJV_NH}6~w2BNTq|zU%G-Qve`$!ivAqA#- zk$6%!0p9f@6@ddIxUEZymu2K#x*X(cvZuH#^IjB(dlNHhuj>d+NslgD%oANr%rm0H zhio9EE)T|cpu+Q@r~|n~PIZLoT9QmmQ=mdi(3wpVFKJ0n)_1p`y*n=gwtq>fcZ15+uRhk@^J$e!Z1(0x65D{Y97O^lp(6vQ3TxIhL-Ew$W z*`CF)JBWl8Mu)f@nZ09{#WVQ~+8iYYqP^DiHLkMYHx)&duCkm3L#!xhzMN9~k*h3u zKBab*tzRfpC(o1fj8&*;F8ARw##MG|ft)vQjw0zFsP_$Q6XaGT6>dWjv%@hd*e&2= z6!7|v?C_CmMv@n94mLJdb8Q8RoXMttBvR)~4v`vCm&v%A{#fO2WRIbQ0>uP0KIgTY zdQSt@qRiwO$HbX4Ro{l6i26FFczdyU8U0@gDR~vX=|o}!?@f!s66VZQ?An2H4MU@fLkr}G;_qoA!H#(>VAd?UCBmb zx*~1}BWqbQZzd$@$N~~P9k%O86FD^k?A=K)G2IdOb|;5$)er=WBZ!TtgFqEY5{ca|-Q)asqEu?HE%?t}|HNCK(zg`g|3$b9l?4r zD~5z|B&UOz|0GFei8>9c;>aG-@ES~dibNAr1gv_Bnic^&D6Z=cC!Zpdh)M^k@#G>g zg+X|4l0`Jni3Pn$BTE`1z|aR7>*B=xJ|vkXWxlW_k&Fzn#iG0Sk*(;M4?1cE^SjF# z?*oB-Ne(F)3N!kWbfW45JNuIHq%Ix;`;mFx`e#-e!_ihpI;`tQru&;;WGiXhIkvl< zV)Iz=Pa@Inor8bmD<0hVhNjtvLS_|o*9;&NwIn_m?mUO2x-2NlM%S);5w>TOsF2D<%?=?0D^Q(rRJ=nM5w?MFJ)49? zYp1!YtKV={$4_K4mt+VTOH9HP5gkLh)p#Ol6k`YwtemTC>Hvs;o&*MKCd&&M(L`m` zok&7iIJp@h_jz)Un2KQZa9Y_#uwXdJ56;QJ#Y9b>zm+6SIy|6UsM+slbQRn)!lU6t zM@&}GjiA(4NFPBalH_=(9D(hh6DQV$iXQ69 zE?ooIs(sQ$JZ>m2sh_tYBhPvpJ%+1nt_qsQkU-K&096htOUETe z+1;^8iH8T^5@lYdL#&_$O|PLIWbO-^8h2RC$*jrJqXc`&M4xnu)f2NMTrvSp=U^-6 zs6h7u2@aVWUsdd~M9=wgeZ_+Sp^?;zN30q>7E%YpUm)3}^aZGR0Sh~I4Ai|qw(A?B ztQmPhw+UtgC@tH)5Lz7-FS6c+ieips_m{~IA&*-jUCTyF8&gJfFP&bK$ zM~knzDd!{QxA|02Zww{nyVKu8t}(BGb~5&Em?&#)r*)Qci!mYMId}VtT9+-;B0B zA$m_EJ6JMT3;U;&N$op%?~)A#O9+*t6K*P@=>~K9aQHN zT_mMkKPY#QRlV$T))&e+miAt@ujTHgS_`-GNgUM?`6_k>(|VZlDz4ZtZhsX=Dy`I4 zQ8(gCucD7Jy$${|sQ-T(hRwj`Bc^Yram43lV7JV87PPNXTmgpHs535y{MTeU$7>`e zPAax#HTYm&|=HVoh>|IqHs$XJaO-qbd z#<;RI1K{R7Qbg2SC{ssxYd+~lBirUJyb?P-gKwxyP?92VCmi4M-2hX=hMDffpt1G)C>Ui;a@!*); z8XDW$LmUFc)X~3WZ|K1fdu_H3?LlSZ9$~k*c^lbIeCiK|9#oR{L+(FGR9w?6&px~S z?j7cx%b7-(-rPY>4G?tNvj^xN98=>P-+=0WlEA_yWlC$ETQJ`vDT#Utb^XEMgL0^3 zfAB%DOZ%OC50%@J(1Q{9P9-8zVB{2PWmfHyTA5Pj)AyJ2)U}}<4$5P|odCnD$yK7R z71KT;1uV&)EmrR!g!q)~ZdSin+`p3)c#*P&5WgS2{MG{T-TkDa!0CIku;UAK!*>_L zoi9i(=`#6m>0%>+Id>xrbO!ct1jt=R1 z*jq;`Lpqs0mfY11sop#TwYC8k)?>#*yuO~~hKQ*N#`zELOH?8r{V&~Gl2e-DawheI z_6_K`=cd8C4M;Dh!tMqV=ksk^lCJ?YVY^m#_!f44F&UB*!NWF@zogBp2uCX@eJ%fPwuzVTe!RsA;e|>HWv0?K=-VE4bEL4i-(lW$qN<&1svU9Yw|h@ zK{Uk8&+`|8UFM~W^0dg))cuvbFd-!ACuu1e;cB|UBTuLj@9JtAI0xy&)@AXLaO6kg zPrizRb3c+{z3T8NsEHFt(G{9i2NpWs9NUw|&_!%XcM%T@aRG`nIv914bQ5SW8|J%% zW_ZsXw8KGnuo`~Cpo-Euc<}y-gh}B>9^x=8$YlRCFm+1#RJ zL3OEnt-gvN{X4Fv!u>JDqkbwnTl7POj@3qlBSa!ZAw(m@AjBfXA?R3t%=gE9f6Vv) zC}aQG4>R`vuqh)#cSHMdOhot%UnboW^{ad<jqQd#YrMyGrz) zD$(KVz42bbJ~MIWEpyu6h4q(7=#xx|9M`X}vb~p)=Gc_kBlDw-fRdUZrD6xSs1G=Q znM8Ow%4MZbf$tR(qIS@>u@pkw73}(sYA{_PQN;N&%)m@yc?*_bA>rPZx!vu(j4o|Y z9qh(<;blL8FQ0phx&Qlpv3%}*oN@9(ycncts*ip00Hv(&@=zS2^o*XYyJrM=4`jt@ zxL;W|_*}T{OY3ke6iE6nm84KLl&+*gza9*za_H-cogIUi3j zv72?PdjWiZCeMaAE8M+uh$CiMT=9-#h^O+M2VvIFIA_>DhciDDi`KELT+nma<0S2R z2jpMHr4i!``>v93t@Go7rY-cSU&^&R;5w#`*N<~|wv0)#Evm^<6G^7n2M2g(Ylm5% ztW-=J`zPwD9%_dvz&l=h_yF^QV!=OQ#(zm>p?#V>i>P0G=ih94(%ZOW6KcnTPAbDI zKZ~xW1LtCjC!dgYFxgeM%}V{aZK|8@(V|aXBza;wO0hohh$Ug!^X@WlW{)uk(+@^O z_F&yQbD{4w(uFXaVE8o>8EqdYREjFP<5fi{E9IZ@Fd#4qol}7D#!N6%vm9^2#%m-s z&~kLb?bZhC$HMh%q$tcZOXjY-TrO01YQvomt9~Ifl5MZcG^QrJUf^Y#U2|j&%%nKm zeye66Xr&{NXU~giHaU#lH1Rs=7wb%rrw>tH*DJE>u9pi=p|vc1F08vw5@XE+|BA!( zOS#}swc!{IcdiptEOX|sIBfq#9qQH`y60f3i+P`cm&Z3AbVIMEf@h^zGMIwFN;>s^~VyM8-M0=fER_2=ln#QMy!z~FsY92fnEc!0by)0hi0ZI>@@E|-%{nYQnssOr8JrhAP3Gt;E6KS3cqKZ3 zYj;Rgn69#|l3)JrE{6UisvOX&su z6x;7SUb?*)EO*I}MEmNNoMk==r}tlSR!hEXAw0TEW+&=OT5>YJGN;<>@tpcuu;m_! z3w9J8u|?T7Te%O}ovx;>{SBBJEQ?wS*Y}Zy*Q*~d+&&fb_eo5UdA>)q zI#F?kZ-V7M2}?B3ZYi}%ky@g9yj06eaQr?Qn`n8ZC8s_`v4?*=r+qY-e)YGWwssHuydYo}^<^h?S$fUI7j5o;^*57+Ogdx!@ex^1xIAvvA=nAZW>bVx8S3d&y0y^^Xb7Vl~dcwYD_)I1`YVYZdZR2_s< zwU_)7z`7n}?hz342i|!cgc*NO(syK1TL8|0-mOW^nUpl)Z520(s5`%%&kYMRRVoXG zPWa@(w>7yg`R!BO$uQM64@tJRHHkAC^vBs?XykbTerCA=cq9xlgqtv0Z6lf(X8KGi-Cw{8bi@?2cB(?O{l|1Z>z zZSaWaCK8<%CgS-_cW1l25?^M9Rp}({k|xuIt-yj->T<^>!i`YATVb2}_$O86?EYuN z>OOB_*xzYgete)cujL<7p~C;n+p!=x)XxWUC4u9S6EJd(c z&5e$BtdgjEwW5}L+80uR?XpE!3~Nu=p5%-+v>2h#!u|6E5uPuWiwCw zh3tkFvI|;E(rti74VM;VukTw+>PU@zB`vp_#UCQQxEQT@K9#IbkR_|z!+0+)s8Bzd z`ryfOv*2jkUo0O1THc`4+0E2ajmUlVsK*ZT1j?;6Y71`rOv+vT7u>2w54UAp0Q~C3 zJs<2m7*pK;m@oxj8Cg~vahNl-0xb^6_2#AoI{($#Ue0T^6Y%a)smMKW(wj?3s5_~+ zt&nn|KzSi``-DQXrc^J7>^tyzm+bX+fT10iY0`cAO(gJSF2{+Cyq+jIjuOa zF8C@-k=ysIEJL>pm_HukPW7MA*p3S%^`UU79k-j<3t*!UH-zZlgR4GVEODNNU|%kZ zFzD=jxsioT-zuw^A>9CO{^r?J`d&*vQXY=g#mb%2cn_K$p=4e7c~NczNALd|PwgX_ z#~JpyC^xs`dd#xECzj$C~;8BIv$60}AQA8@d|ha|BByq<7%(d0aRYci?ox9p48C>Eq;6I=!FOd-4sfRf7oKQ2F#+GD#p8XcTxiGWCB_Nv@Tk?zVP+(z zO1)aw09jgYF@3;yRLdm>IY-A7=Xnc(A2mdTN3wE>9FHK#kBjzU{=goum&U^LFa%R_ zba!bpHno$h!`4Ts`f#}i2@y&&Uc907Al)rWulMpV92fYN;u zl&+YJZn~3Pj*k80QZoUv9R2rI)+MIal4|?OlJtiMinOYRLCo7AHHg!t={^p(x}T58m2TcjmDrW(Gb5pO zflMu$hbf15gSgOW=Vsd1<74IOG$pj@WwA;xD}!@EoN0=2-*h&4uNi zxFHG4M!YKZ?6XS8X3DCpLrPBC+DLv8oOIT3F2bvovah@XAtV^5CEZGh59Si$bfsvL z38x)fo!EwPtjy?m!>>~AY0PpcqrCP~*b>ae4A(D_4xk zVVo?(JY%LZoNeQk-rf&S=(@G;?Uqj=yfbGC`kO0e*@TDIjQz#$RCZPzw$lQOJ9AH~ zb<#q!5cYTGA`6{K_zF&tx9a9swR)>br9z+GoMsuL)vq*ptI%UNr|Czx2qDd<-(y zayfyj)L)FP`E`@T;4p3qk|xzHrY@42lX$l4q|qHOuh5UU)s z5083BSiv4u)^BGaB%F(b>EWCYj11?32=fZ$hjUq@9T$8wu7VR8ON>()mqj4L`Fth` z9TPt0deT*p7$~P(JJ4KX@HkN^{ts9p>D6+^1Nqgm%2#q4Qsp`R4ecYikSUJu+fvnO zJyg1eMWZ$yuo~rqSi$TnxIM4?38nf^{fRTc!)d8mH0o)o7rC_huAueig2ajlE`cS^ zAUGAtWraEd*z|+V{mfP7n1$UVUTSoIQQw1`M~GvWxVI-ak|pMipzX!kqx5S7R1A+p zMVQLULrGUIrGOv*7kX8#YpwKH=yxoucnDy74 zt}6CB9F7<7^7**#3hYeg(urde{Fcmx`&*936tl;M*tRJ77AM3#%|#R4hmi9$*N@mY zLD|z>REo0!U-KTL7x=EG0mmckA2Fy_F8ks4M0Z%<@X>*Q7dkQlLT5%fkFSL$cF1 z-wE>$Z0XNU405aq5F(lRQWZtL4G!9TmZ4%;8dt>f<~MxLL-k%R81@a|f(seHD%(35 zNwet!8?OfENXHkQq^rRK+LQDT6?fF0(s^i1ojo+n?=p?vr^<$xpri#=7Y~*Fo=oNR zY9Xl*PfJu?Jw)a^GLc=~f(U8q!aOv(TQZGVsIpmK#)I{#9)&iYht7UOQAqwwX9}0; z3Z>EFQUo%R{bN1iRFNKWj%zX%^9X1B=DMou;i0f!RTTc-l0p^jp|D(O5@FV6B}tWckvax)(zy+V%mKPgv-m4#5%Xp3 zYLn98<+Y$>rM+rbrHI1-msH9+TD72D&}wD5lLyIi^*0onbVWDP=-SXQO1ILBRnt&; zqxP?r*O@#;cVgw<(N9S~nQj`~gI?)NCh0$=#+#)#s@UDz8ZR%J>Bl+={ z+@iJ@m5Nx1M=`3_6~TN&r3ZBC%cQ(b9}8naP7lUYJxeY44B^6_YVI*_;@Lt#YhK+Z zy2sd$&pqTGWOqbCw?2Fqm_39`3yeFPS!11ouh1<~Hmea|g*Uc819d~VM1S*c`W#S` z*|}CZ7uf|q&vMD}j!)WJUY9FdZkvlu7~ERBc@>xw+jWFx&vFA}?a$MyVj|_Ls(+(( zRhhrE}x}c$ygo-fF2|u6a%#fcu`42i&>m@GQ;Q zj%toq&Jx--ylsxhR?A&lJug(r)oRwbXCC*kx5-adr19jqHCU;BC(g*NJCjX*bRyB| z3vXH#LNoU#!hDZ%hpYbqS+Nsmu;()KFD=?;=xMn1>7CzdC2gMBaSq`rVJ5N8%X!_f~6fJWJaD0kd+r{6e#Z+SBMIm!sbHm*vQ&^}*zqd+D^F zRLG|T&V^EM_5N!>b-Vy^V>$dzEC;?Ei?dHj&bk-5IGy=L?Aoomh;6e+nIi*+y~u4N zmPzp7MJ}z-(k@Cm$vU2H7)(FDla0_1rbgh6p=3nK($?~nE+-k`Of2Vh+BXi!d=4Y! zb3BI6B=P^^eDY+G9ro9T*8Ri7XO5wKeu|;` zXQ)1VSngjl+NwQ_&M3-w<8!5iNs^(DQ~0Te&l~}3$8p((Og!bN?x8g3lE>Gjy$c4yXNM?ne>*2-7LYQa4hI#me8jero&JoMg;*LD-2uCcx!{V2@VZ^dS{PJaPxQ1ku zis1!Zx;jwz!1H=Pv-EVTU@H9(|S;+aL70*CgA=g0g z0fokb^QFE35-fNM!AuhGShz?w$nM+67CF!x&j9;a2eV+I=9qoN_#&>6O)OdKXWyi5 z7{u1DAM|7Bw~vY}F{L8@bOEm7XpXAE;CncC;Ll4RzLkW-X}KCdnOFmf#aI&O6_{F# zBNyZE7SlD}gRsQ%2L zHWCs`xNL%3b6W`)9_YCD7Zm#_1`8Z#2WqV&1e1Xp{Wu(4D%jDeZ<8E>CQ&zDtscs zclr#o;z633R=D$fnEDZ?D|CEU>Nx7qWMyT^>5fySHAibS*;(02{M*uoqYavoStFJB z$8YcqqSN!! zmH6?}Ge^%1>$>boyb}_Hv}Jh2sp%}87+%H~qSQp(tVUMRvA9gksp7^F)?eJcjr&2x z2Ew{e@qEp31*Y%hmJ`M)-r31b;sPzs7LF-f8Uy#l8GE=a94cF3-##v@(9yqn3cf6_ z(&{ctURUy{I^4E2J;W0lDaPPTq)Z74t?8b(Ydcg;9&)`4PCB>?#4!f;9^{&I_8W3hyO%-%R}qfMQN=HEq&J8+E~*a4=wX4 zrR`X`RNPd<^+i|UVY=UfdZT!?mWyF^%zJIgY`=TR%*!CLo~sD6{h`d2 z9dWMIBw2A)C)_4bMmvJO4(`-*t8|R*Pm(xEk~AHeXF){+7d6;%FlMFK;n8^Z9rKpV zZ~19;r95Rh3)@OiX*?42`HNndZk2hM6GNcGL9eb5f0(;O%oic}2=`^~_HSc~Cw!$$ ze=kYLHBwio_f{&Py+@k)Sy_^!RH4VaB&E9C)a^XfmP|1Gn~RUo;hm98RpO`galaN+ zgBFcC49~xcXYkwp&7EY!>N?8RX2O?y_Fi(ejS2yaG=5$Y?Z>!#T$rhgLev>g@O%`a zFqudn1G~TC3W(DOqK|V4oZX9s8$nzM%stM{B#v~rdYoHBXY$2gb8oO+;MUjNPU5%- zRo~#?ww#A^-(a>r6lR@3%mm0}-Nc0_Is9$j2w40r_c|LP-u#x^hLCW2M^QuZ1Wr6uK)k#8T!#~(kzQ(SoR3^yQ#d7ExR>DN{C zHc~EzrToun%o=gs8SW#}xo1)^PS_evk}`{BB;i5_AL@*OoFBN=oimi|F-mq%B|8a- zlUtQ+nO0SdzYt;{z5JM1uI|hP+)rZ4JN06|#9x&G9j!z2%P}iHT|1KPGs?&sSITL+ zDbV2LhO#e+AUgtsr?SE^V zV_5}h*SS5!Sp@g4byiDH+zZZo19if^p)bQd)y4d>1z+d^EbFa zxceKIqGlwSZ$k3#Tn^Fig*Ct9V%9FgzTa`+SgOUi2b`88=4V9xAKY~Tf0Id!7kK=6 zHO2vVRD3mY-h)ate+EDB5N#Sh3Rl_<;&yKy7yFj!FwBQfA&x3o?!#{+j$ARumk(um z=Boe7H75Rab>0MAr@=-;ToM2cl%2JRHh#rUVvavE|Wavt8gcnk0;xIh3L+F z^su_8l#%}`9s#T6k^f;I&`V=uyW;8Qdi+?1TV`wvnRzn3-QN7lmxsNb`2vHguPj}a zkA9_pYw5a8BA%n*TD=90vki@NBjkthspQMEP!+-t(>cbsEt@LYV~6fp2=2mmzT zD2EQ9DU^@u?o9m?=RgmqzSlTdeV+@35ncJdh0fJ6D;M3^VjYXJ4(wDkC${BpSuCe+ z(a2Zr-A$WmBR2I#z4n#(!w$D)8HLqK!{TnYwe>A!*h3eMe9xX2;tlFBen60O)m7_Z zk$&daM|gr&T5l!fhVi`v;%Uj83lAO`hK^J!Zao&Y_5j>8Qe&X>6{yHI3GsHttd>-%j zS~TN||DnS7poser{K$5O*zXBG&6hBEA(YI2&a$tI_QM!}xMv zwjJz$k$)eF#^>@Y3>p8}S3{1R&q!-X>Ph`rJ(p6KRwIWqgp@;R4lx>yD{WAvm5NA# zukST1{z#1hA6ikPYrPsgsJQ~M`6qbnlYVZ@^rXS9*2gH{N zel$>0N_E`u6!bTbhLQ&!4VjPJ7ONRrP><|dmP&l---|vM$54qcr~k?7CPgM*Gpp-w zdW1IIatp1$)2jCFQIP}ccI}cyX8fXv+2|3eIpG$W@m))i*0WUPAD^B7R5tSR1uD_gWz=;Zc_sCdyh5qZ zXb!s@tK^8gvFeUYFv(3N{F{n>fA`AIWU=b=p6XP3+WxeK{l8rTmlEu~CKa+Zur!v7~Y5lvNk~h5PE_uD(Ew1i^=3csmO6#`m=T9VQ zv>v5pM}1)nX-iv3D@p6BjFtMgn#KLCSzI|(oB3$s=q{c%^ZoE0QhV^9$d?lPVAwE` z&nNge);o`P5PLs3n#ZqZd%^fgd@y}y-86|0gcXx`Up7Qe(?>R^`4B!>PDDSAgm1F# z#Qe$pRgT!FLC!QjGH}q#<(JjEh{{`9Iy+KNf@_%8i zU_L*Rn4cA==kxg6iH?=x*ctqbf}fq5?p%n4sHU?669jdy^Zm%6m*LUtIMti4LHulf zG;yqg(%F0?(N7e|zQMoSjyPO!$HEsA^JQ4Lgf_rMamx}u5tm~|I8(&yf-Hl2<6Gxt zTy$_$L--MBq|)^U(SIrbfDqkAQETIeVPHO(OZjU=k4u$h{CZ+H!lm-D#( z83|R(u{m`PNPLTrAxV@QdLZ(!-Rgkuxk;ku+*1TCPwr z{Y|Bel8-Oii}?@JF-4JJz9crT=ZiG$o$m)&H{F9WY4&ae^CrF^h*^(mcPFOb)YBK# zot8d)_%g!*T-wB^4P&0CZWezk2M!r9UM~WAm=4~zV*L}|$q^NDIlwEcXNBgAj`TW*2 zI{58-KKxIFX=nJ^EeK)X89u8ek^fnKsvOUiq!*v%cekKN<=r6f93Rn=2Q3&)ocJ#9 z93L&GkC%8ue&7>Tv|y?UF!Be*>bg8B&;A2C4$CZP{DGe#%bzTzXF4(6*%RhDQKoqc zG&=cyp;U(HWtuM-$vXp0ON{hk8*M^-ofv+eFC)4f*m)i~b)(?oc|JwvnAVa5*K`tx zqaCDNKuU)OreDCO{^=%^UEt&6sBF~o3gszU>;B0vx+6{c37wem(+yYkCbbfN0M{?@ z$v(zJU*u8EkStI5kx#)CNy-~i%Df->VM+={6~HYreIUg7mQL$`bAvin|ngh zMf`nnDd$Z%a*LAn*C z*#(!Bj#O7Fk?+04CrCPM%i-oFK1K?gRzdh>K2{E|fsvQ_M7cfIN<3>W^J#&SUF&Oi z&BU6QYY~6^~8p!rtu<^fq8nNtxbN}VjeXJX*ij|ygV%#{CqYH=3VDkB2u~dv0;woJFrhMzPM1(>HFaiz1+ytc#)*7 z^eR^U9xQh8UHs!(H_zA2C)lK}ECqDNwtv2H4NtUKT zJM{7|6bl=r{`et10JOe`JyQzRz6S|6_}Ro62$eUmXHV`1r*7afA3qt7y2-B~qxF$9 zzv@%`3_Dp|l0jE(aR*;J8=SZK>n(B|0-U~s4zkB^Xnz+s zC9guoU49Uo4_EH;W7q=F-{Xz!>tMUbSE|(SmrW+2^6R_g}ZwO*4xRcY^3;2sb>Fk6cSsL9lJ>(yD z+*-wSHf7@MMoXYy2AdzDnC{^J2OsfFwlu@MS=BDG7vhQfDbVwRh3I>Vhj<|qmm=ZdqY`Ej9iE%2gz>~IfD>_``Hym80+u5{ zn8bi&m;Mn9R||Tg^MF(lkP(6s|MERE>}09;Q#T_6k(6!yuaSz=&EtZ`X)7K8-}24ePti9y0$wg$#_ z5{iiBHk|7u;5VMXf+`rZ9oJz4rg7SK&NcFRlm^LUEZt530HeAw*vS zb=`!~#4;1YbV4}MzXk@KkVY@pi*&+ewgIMh7xLJ{@MU-Gs?1AZ2>(BHeR+IL*Zcq6 zo1Al!G>JqO5)mVth%I6Xv5iP(B9u@&Wr(e6ucB%hl9>=o5%QpxsU;#+4aHSO#*&HJ zs)~lHj(wNZ$5usu&$;(TOunz*KXdP#`##Uvp7WgNJm)#*kh6h~9t8^~{po&uS8|XZ zS7T#&?lkQnIvnfMlnP72k)3UL@@_amy)Y3xBglBs+6HDukhM4=gWyO^Nz(+{N0PQm z?z)31lDrm8cr0HOGP;q0Es7XLod99=2p;3)28-&E$x11^gKIQ)`xDSDnvC?&{ZF!R z=|fM!p=ffby6IjJ>Z#i_sJF`5vR;HG^|5ZX=V5Ps662#gBP87*f$(z#(u|Z)PRihVPXs!BU+2$N(?ENgIZgC8Z_LsK-UuS89nwVmE9S!P!o z{1rIbVZSl1gtYb~+S|4`)iPJFWY)A2EbUP?;SRg)?NMM@mq2-Y(n{2ffS3-XweT8- zcOZ8gmTbg|H@>U**x2rZ^lPuB>Vt-nJ69|011f%-M3R)=yz3 ze`2Eh(@1-N-T0tKVZC;xE$>xP5te7**#jALJ|y+P+&Koo{2nAB&^nY{Q-I>TI-@V4 zvi=d0JzSuViizT{)C zI6v}%02*1=--mwvuwa_|klT;U2*i!vSwW{=49N-UA$LZ#c(N}q{-JP30h0wzyLBT92YCf zw8k)8-PB(D=-_@;@f<+(>kg{#gFrtJyZRNFIFR(kzIJ>d=^)$&w?R10j@TyQtxR_X zAI&0jk(A}pHr&ls%(0Z*gv`OD2cjk)WjWqigBQtoIwMWZ zV-~djl_wo!z;1;ndS{fp5f_x?(6nkd;P)r-jqnS`_KF*32DwDGFyEhX1o3(IzwQn6 zGx0-&TBIg1i*I;fudrw2ofh8A3-^TA!%5AW+EDk?+@g%s%%qZ92s9jlgSoLEq>Uh> zJ&N*p-Wow)*An7{uZrLFQi-Y`3vsFnCq?4 z%St4ibKwHb)?!I{Bl(w{z9i>gQoj`Ee_o`b^U#n@ZQgej}Un5x`4`m zvN#Wwwn=P8bfuJ|{n5 znt@YMR3$nnCGljK?2Fv~JrxmRjQC&7-HSi-k}w&JT{ z^MA_8%8WxJOhJx0GcL?5uF0s^dF2XCH%rD=7Qn;6F^kmn(BH=Ml)jb!i?hj4VG0bN zjkA}MZ;^{XfhDsE-YX0TW}{}HT@FuYqwL6rZga3JFM=g=Nd0PY?)n=m?aw8OS~_c2htWk^x=ZrQfy+!hEwSANS?X2OGe{NAr}ayXm~P@#QAS=B||5a|0gSF zVOg@GCqkPbC|7Lf@*+T%TFO}pH`qEdu(EJUnn_;zTd%ro$+o0g z&Y8nj!daPoT?jRk%n5>5bH%Ms0KQ6_t8qg)8Rq~>lgam4P&Q1E{ zUPj4}9txOq5&a6>EWEiP%0eQdtfyiu@-=2MeOni=Tiw>Uq>S<85%MtOGUMgIL<)1mFA z6gDp))1yp_gY=hiPKz^FrDpN4FI;Gm?cXT-IYmFy9<7#wL922_vm`V=4Cj^!y`?W<5;q9 zIcgSd_&d}{_SMhbczEHX5vK?n#o1O4sexWCr8$_xq}&xa$FVhn z0V~Kjv?Lv0K}L9im;MvHr9FszL$Xu>IxVHo^-zs?@331cuwRv}G*sB~*msCEzlW8x zLnpzEToMw@zPnfCht*MLJL?i~I-{h&s)yJOP?$?T6}mtOkS0Pm=*k~GVJ4sk(g)T8 zRzL?h1jusz;U=I!=npMdkspOfbSg%TGZF@@CjEVp?FM9JtkX z!GA5usu9T9F4b1%_&$3U-e24x2L;+OEUwZ-cSxP|Mj4 zx$8&i}t$6i(&=B-DuRtFBOC*Pw2Jaz->iH_>9YXhmrF#kx!1da`)evLGRLs5jC zE&7e~rx!{Y`)8oFq9}d}^Qu2`^I_&USh51h{{~e?ZC7Zy5e*=^ z&M4efhedRy0WW~F;M-LR<{#pVz z^T>);w$^y)ym7LDr?emGmZ&8&K2HxKgX0VtxeJ6a{pGAY?n>k+E9V*o4x?kBa4T}= zSU9&8MTsdEyz_Bb7zYjWF?0fS%SYo3xKXc%w;L&YbZI#BD=Mp9hTJMz+@SX}4E6kwb1aQ?q`$#|5RxdM}7A zAT>iACmLP)yJ&TZi=mz-qokhZhTDth3W8D?UO=XZwz+V*fRsnsb_u7`Jv~IOwN`*ZPnME)kl%$!BNuPFnL-lYVrJ&| zm?h(8sElJ~;qM|3RPT808Yh6R5Cz-^u%nQq2HMhNvUrN$ptW<9M(u#Zzu=Ws%Y_UQew+e^cots3uZjsXA1C2^+)ddM}bo%;V zO=VQW4@h@4JU=9l1;IsVUuAo+#OvUE5vp$xbZSN(d{)Q9KAv6cbzx z!ev4`*(h4^0B$>)D>VW{m2mUSTj*Ls2E;jD;xQ&-k`V6lRO6*TgQ94P2A0Yr_KVfW z(>>fZQK+NIc6vF~@eE2!$OK#jOF2$XVut*GCS6d8GX6|z`L4f!c6r`26biPBu;^zT zw7!I^Ka&nkEokk*1MqkqPS`b~=t`GmcchWB*qR%OJIZ*s&|Hqm^u48o(oE=ff@~5( z;K>ObUFty0NfI5E^%JlA1Uy5&Cs!yV_;pnyeS(KzlYEKSTD3x0b`aUr6p80%bl;+r(c)C5`4qEJ*gk%V{R;QT|7z&Q<>J zj(^I(Z~opa|L?w;zboIq+N5A_7b@Sr-x>d$WA)!Cw7&XAaeClB-C?QAQ{!*TDTT~U z_D#lt4&W>&0%<+ALF%vig*4wlC2beA+-7p?M66T`3(&*i{bij zxO5<+*1**BWDU1=Rlh*&O4`fd>IJe(e%CLQaxW555Y4!x^gFTpn;z#dvwJq%h<2@* zZ1cSw%fhc7PP-kf|}i3he|`LhIC%GaOFuqT*`x3&aT?NLh+zv^Fm}~xqI91wJTCP z`Xk7`j;6lvA@4fr5cD?+gApY8O-R|&|F)zjuW(WHQvDC`_Bu+A|3SnJoSwaa`8Tjo z|G>)|#HbW}1q{B4x&ICt-oi=r4j6Nb3{y(G0?yq+wZU{6LT{5*3VJ0RxQ$|^1+=_F zv`SDe47!8sF>;OO!j(H{uXKDby}ZMhedMZL4dOl0N&&0}-96N=an*j!JrbvU{~FHS z!-;!5SniXC3T%zE?>-JS820c187Ufnf?f~FY|*hB&OgNE4BW=|`XQO3HLmh4PPN=O zV~3AzVlUO<5ZP@g9^RzXopB2+eMI7k5k=V>IQ0mp(HkM^F-pG8(C;xfk7mQ7$5`lO zIPn;5i+Qo-ElV}*jNyO8oDQZS=QWhH(mcsgH^ z1HV61zWckA6tnt$b+TV4f_L=ceHaM1uK*&DKm}kOPr!!Xui*E)%J=5@oo8{izBZ1I zXi_;0y~@#`L5`psKNgf6gvJ(|imr^6$yT@KXM6hnjzLTnV)L8%Jky90u|K z#ds?ef0}=WwfvcU0xw?RxRY>2{(cf(%im8y$P-TQG_>bWat4g}j3_>XF0;~&8swOg z&&-w;Ri(qK`jeOB7uYPvI16_EEItc&pYW7^1-Jj%-4#u3Grk-~DMuwJ1sC5@ykzza2bBjSNNu9){f;HgaE3Ismml>UTP z^7ASTke`3SO!?`6_0MpWOuh!k`2XbVa9e)f0JrD(pWK8P{xsi&uJZp|F#b6SizvQT zR{qO#%)vY*2d=vJ%P^6b;Wq4+W8Q&_a!kDBUH*R;f?x2I?m=7rB==$P3tnpvV4nPZ z2zhe&BRI~V#gE{={Co_aFZus6Xe>X=Aq}4q#eZW?O4I9*n@UceCcU4NG#AXt6Ida~ z_#f<*pHHFmC8lV82CwDkbI|^Sl#*W{rIYD3NU1`}-|#-ALZn1q!f-^2;A~7MwZ#xPT%A5R{bByLaX* zl!ykn`wG>IVbJ_ve6$7AzhsDS=em+hp9s+ncWlaI!9P&`FNv?)>hPZTgB{=FF_Z>Z zk*f>b2BuGtQeKnuf{$rg9O^k}XHa41e{FZa=e=z$kS}2W)c#0bd^w-RF zzlW9?bd^EDrQt%~)&X9cXgOrs!lSb3MW7abuGEzkynPU)e zD6Qw`u4tqaCVo|>3{un^jFcvdC2e3crRaa>1LrBdCwu~j7)?f-i>n(w*S#Hj;xb*I{3-JROk zDm9cGcDAM;ceeM8W&>w*pFmt z!jg93dCD4hUWpxr8vpwj9ZACnL31x^4b$Y-#R=g80ex8I=FqI<|J{Y?ivKI%xfh)( znifgpy=fhR>EuS60V}G}ut3K&q4Un7H~!xkZrp&ks@wS}I8}|tiN??N`p_sr%<_h4 zUpfTqXTC2@6K%cWvM-$^{0CjDQ=2#{3cUU3Skd5v_o7o=+;0u2DJF<_a0S|r_NuOV zxY6uk<}3h8$_+s8PwS$lFxsEqK^st70G%d;!SMjvREUCC0klkL0QUp&UqdOR1~!lI zsYHXQAKyzD987DY6{uA(%|Uz7sbCr=nru)WOl!tD4&h-b{yD^55^B*-!cLf7i)IBm{>A3Cei3sKm4D1DdH~D0HSL7Z5ZXo9 z17kwyWFOO5yr%u+R=JZQ7Y>4lA+(1u7~0pSzvJvCFcf+65Ew&glwOnNw=kl$--4u6 zU%7jnzzsnPO{3YXIAd!j?@HoTbGY?s3VPhhsadml9xwCGs{FUWsZffZUM6T?{wQB*H# zvteo!9UvMr;an8O^B>El*HPG`h3gO&O?L`+;e0er^mMEXa454SeKCa9M;TGgRzkaygM&}al>XH$jV092M%wu;yBTtjUGwvipq zG@yYVj41lHD~xPN+X=XFx*=^PnubbO8&dQcYXrfK zX}ExXL5=A+VY{@wG4&FJRM_8y;yL(J;BFIY_U*D$O2r*!?gX@)*-W3p>{yznwDEUv zK9+|0SjQJ+M#>Xhd0pl^piSwALRaY36x+@REKO<8U|a7&T~C;!%;B~Ek@p|f)`Q#| zZA0NnQ#vD1*S8?EH|`_<**m>XfvYOY{a{`k{Xz(U*KyP!)P$sFm@$n3CO1Qwph3ayjX>OKkkn$v@5-k;inZuHT3dj0HTaMdW54t+0l zYN5ZASvZw+fNMOBCtqTv-^7D{@%0M~y$3VnX$vw9S^GBZ<*%RP>z`20Uq3_a9}v?D zUngU$T!P{JbrJ&3!+QQY5dr6*l)o-OVrQUwYot3L0VknbYub!hFxqplw5H+w)$$T{ zw5E~7jMyho%0uy0|1>v&)+3o1s|*?@&~{`VLLb5S1lj=FwWc4?EEA$0KtTc$pM$Tc z)g@q(TPG>*(6C~Mzg9o?jqL|QBeQ^7llW{b%b)+AwE;s*PZXoy(s38hK& zdE%(1xZ%RB^l1DGzJDjH?>_a-(CX#U_`YbfVD<9%l_+oQ@yn9KSn3h{N(r?6RgySjlt7x7#l1Kc`e z=$$h#s5AXUcnS8-*k8Vcz*HQXXF;n}8X+34z~EFmkj3+&j+zU$RGKPgU6DMy&`?1f z^#B@nMP;gZ5=`t$gM{ah-4$8pl~mf5x{BhcGPv4}HW#(?z`r|f5UG)eqd6H{JFgs? zoUzqVV;;0P?8kgu!Zo)v@k$b9FuXhF?KRBrPIJXO^+213jmC|`X(*dUrNWFfsuS;Y zg#&5GhwM2#O+z)s@B*TH(2qWd-JCEoc^5__Ul#$}jAA5lrj zkdk_#{(`R9dwZj-n+i{Q(~q!X^nK{3XoB9=2ekrk^uD2kMRRND)0d7%{Q!HGE1c+y zYT_5*(~mZetKSx_Wna%AA9H`J4lM7Fwb2vy_NVC$ zCa4Bs?Jv6;S(n{b))g#sA4x7-E$(;%foTIeg{ zSIeK(_lYjS%#S4FIghcU{79+z+9WT|a9TCq(k}3dQ`!e1194z%reG#$%dFUb-tTNc zE&i4&MtRFC7&H)d&E!^aeju$Uq~S?uG+l59;~=c)Nw9Vhb%<7g*&oxkQMQ~fF33L6 zW?VCs8_v3X=(8Z)1&!*6sD$t>2p{9{L?Co9YOA^~e#ii>Hh#&+O%Jeg*`Y~=K7)}> zG$}B3Fl~)mSm9vWgOxYq>dzcJSqmjs79Cidyz>H%THkesnI3>!wf zil!te97cQ8+7*D!kMk6tA)9e4#-$4fmF0Jos(T?M9aUsUOUO>glr*@@5exMxcnqii z6IQ_6;rP*73S&oL`YU182)ahpo`U8hQQPiR6D%X?Hem$Bj-u1UY`YannXSP+Y;qZ` zFEZ+-%BH2kVK`VuW4eWKd^DYlo-e7Npc?H4qd&p! zvn3wZeuAxoE6$&wF53-a#vs=XfNo=OZ4{uHqv zLc_6in5Zv+rDN$<^c`$94ksABpx-#G1W7e zjyTC}3LPWFX-hYGyT-lwfe!=d8nRR#P%d(JGT%KJhAD2V|N0#LOVQ5nrhL<0fX$zy z@@mt9$5fi(6*o6UNa2o{xWy?B)=Z`K0;~$F<7{2i(WvU?Hbc>6rOfDvQt^HeG9Amc1$s`$YS;?1r_*wNF2uwyaA0C4dAji> zwEYtQt(C-?^aF0(^`1q?`&glVv5VnYGtNFJc7B9Kv#<@#|vVC-8ndXe+Sh~$OPYm-bB%lmZ@qbMuCx;4i=NmJ=-h7*;uykpsP@Ngb7Mi>NV z&^Ukn=9b5Ku?N`Wj>Q~lY(t3>4#o`H7LTKY^%*#yH8qFF894mW%@CMLj|zL?awayn zJ{XT*!$IWMUa*=`-EReUvpfRaH)98B1JM>5kBdh}3l=dJOcvVP>n+iLQX!ypaNUBF zM*;(~Xs~EWjM;9)qIq#=v+E@K916FVaa@2 zCm<)A?Z=BlUEDf*@KOw_iTQVdBlGDD?$ysp%A4Efoyd&m>vS}{k)3|iC%o{8 zk5|vETcX6_h62a*v7%Yh8g4_f_9Y!t1MF zvmylb%@Fx#g)>Ohvmey7qE1)5)w}jnd<~wyA@?6O%n`of&ry*Z5Rer7iUII*ZuW8nAz{($@BnEsK$w+G8&lBbu;ECH4;XI(IDya|JRdm0&=@wjBMH_~cG~ftKNUzK#Cpfwtm5>Kf z*=zt2t5ICrq>-z+;#3dH*T|NQgs{ONgVMyM#>aheryb#);wR6NV(a z%^%5U$+0kCEgj_PxxS;MkY(tWv=+${^q)ah@f!48M;D^hySk2kjLV*F*CWT&hhghc zbNC-*ucz&5Gj&nY(6j2shpFSM?k`>wZ1`v_+xZsCY2_LJc1paafc?95XZO zb?@5R5>u&qkLw2=mgm-m3M znfi(PKVkbu8WiwXiz45af5$HD4ReY`G@@A}>*C1}8 zL+U=QC}Ov_C=CVoca5SH0q3prwxC*oipA|MG_Ik|w`$v1eJb0gyQ8vQ=qpId!)pE; zEO|KXd;^d3u)6+(kgX_*w;YF6Td~$PaA+$EWEZ%&6(<3aI&`I>tI>NQKOeOvO!HMf z9U)W$<2D?1@NeNZEWZyt+=hd&AJi;Bx`ALSpwGP>Kk;hv)$_Wf!BXb8w5xzcmCkLa zA?VQ25X=7oJpB&&{{xu4gSH9sC5nD$yLuO=Y*Vr8FayO(?hNO4(0*dE4jO)sQwM*T z_&suWEjaW&4uD(YrPtr1v0Ko?ik);ZvU%7p9NHF2#$DLV!U34N8^M`yY&V+eqQP|! z$`T9o*+bi~hNw&0mi!CBJxPOVD_s*)%^6!uytzj#N#q+2T6kd~o`8*kIk^1I_a1bC zA$#dcQBxhB@5L!j3m7fY&xJ&|Dq)(D5V8*ip6y#m*oQ+g+Ng)^qZ>u-UqFAP==1YC z%={5qzAhC0$W?=1;O&p}jA%UqXZB-r8V^9+PiQnZ{s_ZNaR5_TP;{cA7fJ=Hk-ecyF7iOQjxSrA=>?WThz zMYKV+Hep$}4*vNEZy&7RcGB@8Y(&24fqPnTDyG5ci9#)6@mg4QnC5%yx^wKtEbbah zQ=r=sUVsc(dj#utG2B0bN~^gEEIrD#_Lgw=C{FE+W2D$)s5SUFp5WQDWPuJQ%97-X zG{8>h31X+~aJ7V96g8f(_c)y>YKtNIXSzfr<6z&Cpfj7>eqU_hz7#yZg0*h1jOX~4$6KCc zem`aboIQcvAr;=9pxyj+1uh1E4f+@bzR)NJ5}W`TPtq%*HUZk7qGLp3GblKPf;AM} zPUA#yQ#?p0Qa}Yw{cl*s#!zX+Zx}^1dBMi>n07k4BVWKu-9%yS1?07G z3HD#WL`>g8^hMgwL-$h2tL_A3UqtIb_*1Z5q`C;lx{Rdeg4rgqGaYbpxpI>`zcvCn zJ7^v#GeK>Ci1;0+#}1s|{fCYGYzFC3TnO0letOt@N#Q#;35 zcv(u9inbESzJxf_5V(7Zo)>ky;m~DVV=|)e<{!x0=$?P}4|gkGa*!B$=6 zcSi@_mdbZ+2bg~i*Hb3K-D`Xmst44(j%0Nm;m~!uxcem4vb*%q2K3K$K&(8=jlml$ z%8O8k^sm0jHKO+Fqnk7lelpi7>DQ@D%NAOh7fmRvxq;knsspcX(4Ib8JO#hZ@yl9; zsVIJA&1)TGjhqPl@Zh zu`ic{F~=I)gOYoq+HaW!XKx{6$X*&WMl_d0>TQ(E$$!Jz+cabjnXGK2kczp*JJYj5 zpqVGVAD-k>5l)=KU8_}un8zE0u&@11dfc<%1G#ao6y0 zKXNRPpH23D630T{#dt5gLin1;NlWk0H7=sn1`Qw3CDm;|eEbhd9#>>et|7C~rtjg@ z1G)ug%#$BtwV1ZS`iIyxyQAX>PL+GW*hkp2d%~JW*cf%;{3F^v#JbpQh|@1fPDe*I zb29g*B108oot8;EVfd>qk1>I$(e0i$8>Q<@O0i{L7@tI)eB2d|3`(&Kut zQD*Nj@OXx17`#=a>oe@bx?0k_XP6z)B*Kp8v`)3$_K=av(5NRbR-hBkbDAe=KY+{^ zIP=uJguO4&3Zz>Mt6rkn#&Jj5_mZ|mzyI@4{tq9HPQZ#+bf0KC1l|5ckz!mdHGEB@ z(P(@v%G`T*N8hkx@i>+6b9Idj(NX)#qpEMBS>EI!qCt9M=o>ek!l#;Lko|_<^fxZ@ zGv5?&VQpoQUMYocAIq-<8|4_MK377xFF)(taH>)Q^uWZS>3k_CU zSX`hPM<3jE{WUK4uxIMZk-gE%Gweegu0sTdLdOat1$IW%r2-l!2M}9q&^-dnes%YQ ze32!IC>9=zti5PUks7ETDU#juo1`YFJ(D1L0i>UavOo zhA|d^L;Q5cdZQKR3`438bhc+KySi>G=FCMt#zxMUE)SNwvBCa2D~5aWGI&HOIo56f zS9jI`XH&86jPER(=+5d0OJOPg^OH9_@rE6b7b5c#+pfTMcNU4>m~I}dzOWkNJQzB_ z`-0JfH4R$w&q0^I?n2NFKch=YwXQ(X58I`SGaWJzw zYt0IIPc_bf1J&7lF{2Rler!Yq*4`0z`>{Fh-zt=7614Sa+uXM+e=Ujd*q;sHXD*}$ zurx7zA*>Bx9|x$P^_>*Y2y6~xV;sHxSWSouWcA&5s`+XM{Q@!f>R;L(uViJ7D*oEr z!`VOlYxWolKBiRfwye7<#WV1!BAGk#^ zt*G&Zm?#z@Iy@jPimmX`k(h;fmB|x$8pS)d214pF^i_NdY4sS|5nsZ*ddMW&XK=nA z>w*KCHX7SvKiV?lP!mss)M(ZQmjNvAh3Y?o!f5tf)Lel4`uKGN+^o+&6>!&T4En|l zkZLyI)z}A88nSMUHF>_Lxr8*2KyvG`fOu{JFQ9j}ko2L1F05{IdA*#K>j=%%4YB^T zo4~aZ%7adWAg&Rc?r&Yi2eKsGOfcL9VtL0f0UTT7X8aUpV z{oF*$L5?qS$T87Ze{Q9p`53ChJj^;h-1@Z;zVU0#Rdb7EaPVZUlfc%5*9~74$C|WF z29H?Qv!-brzbIjZw6nwy7ZS#!2E{38$HJ6YUf;MMG8Svlfrl-};vljG0-GXh*@i>U zrr2Dzeo)X9bExeD=bN(4fwnFS3?a7gun1w}yM%2?up|z7){z1=o3RbTM%dSkwGcML z<7Oyq9Qz@uIr~-k76MzaZ_uS|Ukl`9Or|9p(qJq1F~EA%dCR*d$KbR{zm@BqJnYN^ z7rvr^0uDpBfwd(I!sUnkEg2fi4nt{6_E>a0myXA?=Ax%=PsPfoxf!@6V9Sk$Rtc;n z9Z`xGz+ZwX30N3Ie>j!ER){PehP7dNILxqXT8)c3p7 zVSRhHMm!z>2_0DDk@=U94vBBYamOzs9ipU_GAz8Y5*}`4p?+@jqr$@~@{uw)JObZe zqR#9Vyfga74!j z&zXNnrYVPwt|`-$-`%RqH1EpTUuBvvTOs}Y-{dmO;VBz1uPpu!hO@1sRvn4|9noxS zz0xD`HL%`T*2qA3@^vT*X5Ack#$RCS*xzbXYr6b z-Ab>jB<7!Zc%tweuJXrX%tot@Dzr;1U`b@t=g{V7OO~FD*CP$8Z+^Dotwp?nBrg3$ z4re9J@Z_-OtB$TJIr~fLZ#-<(@2mbO{exq0-*j_Ky@iCKOMhGS7yrt`k!3N~ZTwcR z#rdOWe=q%O_tAN#ipec^7sMUdfjKa%6AKo`;L-zIfPQFUN$j4mSMp58;VassmKz3b>JPo;nSXd%Wh;ND7Kh@*h z;cQdIHG;H;@;H=$y6F<0;fFo8c_qeF1*4e?uLiM}!NyU7FFg}>O0@f#=gtf1=yI{1 zW~`>ndg2PCe$2wOCcHCBF@KjN#3NNqv5kCNW|~}U;jrjq7Hib&)RYe6&DgS=#vX%` z7wu>zFZ#|Eh&NRbnvs5)!rUM${?5Z%vSydYSaR5i{}$g6?PGBWF0&T=0wIH0$RL_p zK?4t37oF458C4^F7YXYH#p+={oC8Vn84Dy0G;(fTd3^@m!x_dcNu%5npw?IqSTUGs zLv$UK(7A>H!+uL`JeXi91qZKFYdbhQnANPQY5TXtUBUKS5-jh1O~@UB0@2nALWeLs zza<`*!%;QTxJi?Tu#IA<&RwBvHu$1{egK*>D&v|M#0_IHE;iSVurrNJoyjLm3fddXe>*WvoY`zY;;Z#Hhs-e@lDSz!?Iz_Pt>CS zOghtx)-ote=L8>vJsrnb+XMN39pim|C)J!E4od%*i1n^Y1h;jx9M0luYHljI5S(&h zy$+_~>`S!pzaGvy;-mctwh$jDMxefS3~rBLeTAb^`;iQ1)3#!%>nK*>66V0;={II6 zZE5&O;W*k$J|SHv_X9kj{!_MOj)Pw|Aus1up!9t!Q97L;G5UP`?p|>}bH_zxOUL|+ zoHgxp&9VpF1A>QSKdGo{g-b2{RSql0ePzCCuliWw5ltrN9)5yrs;wY0Gd>ch$b@Li zmU=vo$>e0exeyfc+iKtr-J;$-sFcThvf1*m|>5Y}uf(!D8#<2lf8(z=mTzTqc zrb?PY&}uwO>t)N{Ql#c0vMSy_wvwvJcUG?-B?V~;tBSNts6;xv;mUZ{JK*OW;!v-p zC2f`drRxFu39LuJ@f@<$O}WLb;*%p4wol-i+ETbUfrZu7)Hb6=ip=?#|8{r^XL$!T zg@DgQocI_&fY^yFq`H2xQlsY2U@2E3(J(rAB8v%gWX5EA9X2PeKBdId_;D{eq=qwc zPRCIl3J@1)6Bnba2^8`$?Q?|%jIMB>r(qoj9+Q|p(NNs}6hFUswC0nBy)VT}e07)E zRRMIS5^Eb`{2O(=y`-D@FG0#=?8v4GFmW=|df95BnNd#7G@~bU znCDW%1IHej$#e;DXfg|Jr5od#qT?>o3heVR^Sl)m{~RMpY7W##iH7XX48!+>sS{Xv z=B>Wq{~4uYF(zs%i_tpp!gAj0c->1_jEpTM!&m=|Z7XL-a|b3)Wl@yeDbo!6 z4c1O&v2Mk8@X%Gww=dv4ei>x@ul_xBY@T+=wnCF?QCsvGM=bmw9?N=*8u(Yf4(aEr z^Vw3Q@PXm3!Uy!eA5Ckj#4_Jk2a{<^b~US^&ouVoock*4JW@;asItpgO|yFab5Ma> zmlasT=JWMnRJW?cu_$*)$&)YRtk3t%>NR4IAdl=(C$JqXIaD*PBI{+ElUHLh8$H6S zBFewN{PC?htM#!O^`l(!2UoCMkIK?!?K?c}O^s$#(Htl9F_FK1xeo7Vy2s1k0B>q) zaahTmBkR4)-K|m}3zA1D z9YebWCVs(!b;hNN%;&u4)d)}fKc#S-W1aHUSyc{fdQGM!TON7Om%Eo~KAiZ1C5pQF z;5~!Y6s_|hdIt7uEuIHDg9V0Z@;NVu=WQK+SRLlxT65dawPw+sof=9dIExZQOr2Xivj_?cn8ikKw_maub4=^;!~{GqfvfZU%mjs+kzaP>loqX4S!`QVWt`AX zQ1h1ff6#uFXuOqE9#wQ>&7FzLW5x~zmONe>exnDg=<@-xRxKCD+F(KFHwTq0REQD% zZ9h7(wKJbZgJt z)sc)RT?J$GRk;5>-j^B8lyWPA91b&o7a_zr^P?lRLe)~ZUi(mjXR}zH>c*$Zf6j{d zFyg}^Ww15&fT-E5p*A@h`?|tE@7~PyF>ECtAk9C)A zZ+uf5xI7zeK-!Ps^=zD7ZT-8wUBV_sADTGmI)}xKG#v@JwJVJ`x?0%gN?|Q8{HT#B z6@pH-GArqxsF*gDn2A*|nsQztyi2-lVI$Qd9)~M)SV&??2PGbTj&`al@w5+A+KH8z zvsEyTyO3aFU1RWSayaS zOVU|YbE45Nk;Nw3yC@j_8`Q~aI%6~u5-KG)kL+5B@d_c6vQ7+ok# zoyUg1ON&yRztwQ2qYZRUi(_b3E;zYDxMkwCysA zWI3a3m!%!K>?*d>Fa<^#@|c$bN*=Bb{og{tYS#80#^Q$Aba%$!u?DVdSf5ZjN~PnC z7$0Yhc0EjAgX4SNRdiu^uBf~5dE9(9@(OHU!+O4pZTG~zzJboM9XSy4HS3v3N2`_f zK@Ld^se)OgvVoclJz|ViFxG4+{FYM-t^^*&fh6@sn;+7nuBz=ekDFn$BBzg36a z4J@vGy*}YF&pf29X#LDG^bT+Q%%fuSqmpy`3^nJ`$Y>sF;*b;&@j*fjPz3Wi3Y z*)Yr*<7f|Kt!zvsCLA$Q&KUIVdTM10!|n38U{XsPiA8Ab3^X->jo+~B#EJy%QJASv zXN;zhrCTLq)37T(y^JG`N*_XtU$NV6-^OM5s|)OzAs zZ>(UBWs!ohV}8pG&KT=|YR;BaVl)*JOl>gZ8#GF2mezjLKUv~$3oU~Zlh2q_ z!;~#-U#NYRnuS`ZG*pbOYQ{C!AT^Jr2dw+GNa~C;)dii`p=UO}`MGyqCmqSd5ishG zCOqb;$6Uked?^VbnMv#Vzk{GFvlHAoSE zbtT4F1!LVM#csokKRk}_P`Xe(0W1aVVWMTd5=mbNwWNVnDrJ#Mcta&dR|R9thTY$? zU7;0&pS=l6*wFZ5SxdDllR4uo$lQ*L;I~TQ>UOq0RKH237l*^UzcW_*Ddd002EC(a zX^fQ|;fyh*L)Z@1>)n8BZ-kge&KTn$HSe31v^XZVi8Dq!KyCEAN{mmeGse*uuIylA zwfg+`Fio8?y6(84-cd`e38wGa#!&nBDzq6^MRjMWwIiNH$8yJ5wpC&@KF%0pOEv4; zD>2$C7;W>7+3VCUVcAuQn^-lyrl8x&QWEWZ6pX$pcF17o^mGlB^z^$cF{U7AjHW)E z*vV28>5r9|@>GbFg3)QA&n~t+)V^QAP;3@mb7wlb0H8mx)KGdrrPB~G zEuAqoZy5gr>yt=}6pTFvwaE_77!y8uRl(>8(B0@@;AjN>b~D@~QU{Xuuh}amjMJ5~I~R6LPGQPVHy;VyOKW1*F&WV>(pOId#T27M34maoy|}R6+)1J>M#r zQA%~t_b@(HFuDo6yP9q?rt9TQ(>9o^1Ynf)lo~MO5Nj1m zFR6Lxg3VS1Z|w(X53z*AiagL%r0M5OQ~Qz1Mwb;j922WbiDb3Bjx^|6#F9cQ=-4}< zNLN|50%J?X`{da1p7uY~{B*=tYU7-iv2A#*0Mg8STlbF?UW>Tm#%Fodq*vdI)7Ci- z9zb&3#?nIVe<>Kd4%2SujM2qG%fra#`s->LI$+wLRKe84V-8t_mfln_`u1GiE;c!% zG-yvg!a}u{+iH&5aTJ;7j6${@%~AB8nx2f>lHrWf)q=buEKX~Apr**(Ud+W7XOuP& zULL`Abx1hMbXt9xg0i>bs1{#UL3zTOqpVbK|68TihNA)&I-^Xl z)sFhV_fe5mP}*0p?--jr*7EFqRKOx+ zl3P&Bx`ygsDNu^6W>g2H3RW}Tl>F^%wxG4VQ9zcKa&6=|=go9N+Ev2N;8Y7>-p_21 zSnmWle&(hMjS|hCf&*EAb0o(~czps{-7Z#Qbb-zo+gDKjh=ocsPofALX>nC^ii~OM z`VML0oz(cTQgA)1#4N3X(GFCr(4!J#t%7m%gHvZ%aH8F_665%=N?N^DIzE+{@+ufK zQAPj477HIrdw)THy-B38|OZ_C!l# zl}-# z%oc2EnGt!+of`q`{8C^EZ@k$p9>q1T8^%kouHZ8M97}vq^YoDi~w8b&HRX!*j#^Z)w5WzRYVTNy(F}9OXsf~K8?0Zby;CJdH^LcX zW75?dtfz}pj%<^wfX+gk^si?p_?yF}&eZH?!J}^r{(FPP$4ATaFa^fVIL}?OK_?G<8hI zv}N7HI9r-`#~7_(>>pLqF{(OzMW(e;3P#_j5;IZ3G$9orN4T0;|4NXl z3L$GZu9RC;KrXo&Xp_>) zQMn#K&=ol=@Tpvj$Putj%V|YGM2;vo0<8!L$nkq-cSA`1e7?Uw^2+Ycd!BjbnP;wN zW}b16@L}wFx9G(%t8yBa@}J_dT?fD9ydkxvtTF8Tz!#^uS{&Dx=qJ(KB-^bU!ki;f zN#4{M)YBH08&iK&mlQuOH5Syqq#MxGQK5CLPJ190_&EP~@)9k5_jn(saDqQZ0@Z*9 zS09+$4>9Q$Fw?kav`}Y4`cyBgNg6SVad|b&%jjGkGsTDTcooAd$XSqdpQ{aD{$u_+ z+c{MOx<5jRlc$_z(6*7u)}`mQMImNXHH>QtT4IVTmyO<|oKWpw(|z=kEY;{u!baNl z+I~aIF7LV~9DHd0CdR58vhez1<0x-KG!!%@M#9oZIDxP_HNwufkkPUJgykVn^~l`6 zvwNnV_+V^frubuocQgi_x}nOAn2c%|PbSQIY#x(sou$#i%ZH6Fz4J#EQ~B|{q0zDG zhAN8j4iLN;`E?zmo24kmQ;m-FT4qXz{Iy*x3$uTUtG|w+Zvn>#87m9FfT>T+_hY;| zLnA+J=5;2db_*A93u2t}G(N2ZaQraIKfhvAuo}3`823V5ZW5~JM1PFj7+ePKZnjgm zUExK_#zK8I>dlK3spZAARHuWOVsHJ`*%2ai%rYM)NuRNL>3G6&&UE9m76dc#`?@JQ z{&N*y$3zpZ(1*`YBZNSD0EgHAyaKra9C|nW(nq||I}p+tup5C5KIgt{E#ff=z+kjLufwzC+W_&}}!~wCz=T0X~C~y}h5FChiU#Z{)UTdu>40F<8jn z-cQGPJQ^Kmk;WIrNG<*OlFw=w_j(`3Qw@V2T(sJ?!H22RFczbiY2lQz-NYTk#k7qY z$}|e+$esLCW4_aKrkiyrCZih0wH=OdTvWDon~zR~cQokD{nnhmg97JYHgj=dw*#m4 zp6xBt9lkhHO0~2%>C*VlhZ$83xY&~~6gh`uo2DBbybRIt zO$ZkgV>+r4at_1xm#^-(lPyM*2X#gQ9>e2ti@#rPTibjdXu6WndEw#bJFs=ptZx+raTPAl{!Jt1`bF^bbM7d3X7-*x4_;=|ahVO-~6Km>P>mGhxr9c+S3eEmB|5_52nFX^%Ff*Q+p z7jD+)+Qzu=YZ&Kj?0?_!$B2J|wE@>C#`IXHGYh-5YIHo;VO9fd>YWCiPCn}4yZ&^T zi$LNzbZb@y6XUt@Nmiqdor}%y6o0JeSb(iRb3Ur!o%VZxq4^VMLrg<%yz23|A=jd_ zmDggs3$WA&`o|W^v=Vq0GpZWKQvyMaxWDntXkcTmFP_}XY|NqO$0u;5vHI1Mpnh%r zA~%zM-S;AQ4zVkmaIe-}j-Jy@Nr8I$pTXlM+&si6^IqbN1_UimM56O*w0fvxY{>>BOePTfcNto)@59Gp={s@=DK>*#|88w7q>>B+uhuqvr)Wp%=qW?X!%J4ENpp{|2yl~pGuL`?0ye-BiAMxImZ zHs|gbVyt00ItMlC{io%l=E8GJY0{FT^Vo0=WX)BFhJGYH-zm#lb4`#^gidKXj)O#h zO5z&0)P|dYLLbnUJ4*|p!z zdKrY&CzTbi9gWKkWbW^IROfUFZvXr1s)Egwnsbbv+mY+s*;z+tb0M}Kyv9LlB!tis zk!*Txujj)QSHlRY3MX>)aY7fZft>SDADNqC ze6esBkt!u`^73=Ksz2|;WK_dQ^*ZEkP^R`;4qtcXmdBW4HK=<&$}`HJoLEyC(uK1d zvT+?zZQ$IWVxwX82T6DIH0%2?Nj86s@Ru%@hCYm34dbbr+Iy8cH=A!N4R&-*oT=F8 zZs4*FVZ1q&*+%U`*C2!hL_lsT_p4!}B3ZeU2CMr;on|2_VmtqIMVBEB{k>^Da1$TS zQw`_Z1=G56xOVxn4`iOo;Es^^DmNcBd*7?vz!+ar@8(A;@?mC-Gu|H_5i#J_kQ!ec)Ha9Ire>d?9q4+*M)v!?s?Z>4U;;paw zqGh!Ak0x!TT7q6*mMc@<qvOShW1!XBI483X&>36dYf!xyd4y8@Hg~&5np4lT^DE4B zcb$*~9yPI#^~AFD#1K=Q?vD{CB&Xrvf*e?>+#JabL@W9bJ=N7X+DOvC#$g&kR}bZb z4>{r!gB3v@eQ@9fiS1y~D9+BxHz0B}*Ohf-D+5P!ct6le<>(l0UZCK}RtvcB`MuQ& zcpNQYgy&A+rWs?b@9B)JLowFWxgH4>G-vWhiZB&tX(PR@rE@JELDpX453~2s1@NIR z02S4s8cImlQF^PY(HdM0z}Y3075P|*RT?b zbGh#L_b`_e(19r4+KOYWmC)J2b;7?~2bcWv%6Hf5>FWfoUttBlT*^NKm6oE~VFE92>{r`5?7L zF|EO|+2p5usvz+*W%W|-O?4}j7dGA#TVFR zx!OSgFSudT0*MpTSxY!tXzRse8nqM7L z2QIAOTK95(qSHZ)%j8do37w9Y+e}9<%k#pr!X4-&YQLgfqSG_e9AB(aX8%}n4H)$m z7oTJ;)G^zz6Xg6c5;5R`6ndzW>!ium{t~#q;#yJLj@ETa84D-h@c-Ph{u9+VO z7wP@v&0K*~t8gCRrDOUARid^(#{N4rTg}Bcvomo*ARai?E;G@j>0G2ssu-KI2>*D@ z87NrIb*{0hk+z4vbaZ8LehHjf%|$1AK1YqYOf|;5I2p?YZ=YW5(-`rSRCRcu$=CH7 z)L+BR$nNHf)z2T&vnYBmJg+((=Q5R!I(J~Q@6&s=RK<2()?(P_{$DXXljC!Tt7%gU zdcdkO%JViuDVmR=!CLP180!~$p=?A!#rkI$UEeKOi<7(3#c)jj4`0WjYoZFcwT>%c zJvp$wh)c?L*&R0A$q#f3WLc*U<=WHGdL0hwPlgW16a_o~yoUeja6)^sZQNaOzxx)|Ix65C5Kv#omjG_)d=`q%II6fciZkS0z*E(p&6%L%?FFwc^(YRM*dSF16 zzHNnqI*YYp2Uc^lg1UiQ1XgPjvp0vrudzik{slL`=9;hCe}}5|+#{#rMLr#=%dhUyBI1naWHA>TZft{?b^aK<0+egi!MR04 zIuGIKO|R*WtvVk`$w)8ESi7RJtUWcT&^H{b-;EV8_8U&_?B1!fc?8)MG&a37aG#Xg zqFA^4FldKR>z5a!?vvs&yIQ~XVUnKr$H&*&c?A0)Gpial-qf@A1-Y|M)BC&c-_xV6_H9`WTW86NBs~X1h z2&Qb|mc=;BeHiIO|BQ*ZlvZ20csARygzi7h-l}Y+gX+@f=-ZzEtiUUDDw*fkEL@@I z?VwJo996fyKPma3jydGRh}AICejRhfhrw~|MZP!cnm7MwrBL<8S>Xdo)d+b?bV6QX zBSWLAVdQ;~w4FN^@BZ-_IyQf%?VFWSn&H$Hknk-xBF3u(?t@6LPBm;1Z2Fe_;3>vh zhGU8-e+*rE+rc%+s>lkwgPrOOyAgkMHEemQHiv6SLjtwuIu%&~-e+?~7JDb~=~i!5 z0H$La<4&wx8G1MC6_U6F+&j3mY`2cFx>0MJS7TccQC z{OO2uXqO&)DE>e~ZjQ~te)-ArgVEhK9Go8*2y?&Vn#WktV~1+>E5$~?m49S84?N#- zqgdnD&~qmaMcp0^>;4{9sM}L)p*mC^4^=z4K{2M^eVD3h82bn48kK7igWJip(FD>7 zdDWkegstcFMeo(@T)AVkFAb+ibHDO4MdfXcF4dmatjW}$E`Jui zU&9R@8+}*{Z8#IJP`ONF*cwG2*XUiIn5jKw=Utv0{fqXo?4!(IG~k+DnTPeK2hn){ ziUA`xoF9EgBWTOXJcFL%0=0xLzcppA&g8^)hxNoK;mt29lV#J}9j|1PvTzf|m`cW# zt^H>Vs}x)@^cmzs+$}cm7%VuPU%BxKp7lk! zSq5V~cFcA0xU3po{yHJI-1X*R955Tb-=rcq@GA~a7#Rkh<|)+ zAY9v`A}xF}6raU~ zPk91dIm@AEg>k^0L&4j}K-+U%6)O&cCLWw33z8yvxD3o)rn2cb4)4r!wSrT>bFD;A z%Y@viKUQY^@nAL`s*U<=@w;d6KVvc;mDJMkG&7|9sGrtO$TjS*%=iu+&FJYjg^crD z6e}jd$n)GzdQq``vpF0(T;RsAo_et90**?VI&kX(+5*-{F!my6Wkn0@yvUt2xgJi( zLlz*n46F_Rxx}ptv{&)h!4n>c4yrGsQZQGQqnEi8=nwHA6kSEZp;O*NSGh*)Y66ke^Fhgm3!OMugqGg z`h#m0Dtyz!dBV}$*v_EKs2EyY=h8x$FN*Tp?4NE+9!l?WLSf9g&W&Y-1rT_H&Qa%q zc!Miv^I8G9$&EHkw4j-3FykglBJ~nnxXCS`Hw{gy# z;g5W{a=MZm7|1elAl~M3SzG{d-^S*NiG+!FkdB>ObLtMq)|ajXG)RfoV_ptuP@+G3 zE_vyRm*DZ=$d>DCrR_a#jDb4H-FP1t6dbpp-2*fL;JNxS54c|89wi~S@qT*C+6zXF zpsN&4J>X(laT`2-fU`>H=P=+OR0I6~{2yHLaQ_7f4{>tBd;#1eu0M+%?x06pXV!fi z);_`tAk9%iA9FPfH3oI5teX2-xEPxk<{Z=o5}$ArSG@Wa2LPsyc-ocCTw2#jnhfaM~IFn6g>R&4i7O*tsS71BKTiMcp zZ2>&NiWaW~1@ciWi&h}J92f&u6Cc8Qf}x*@j|sOwDas#R%BJ;n&O@KeYMmxfVB%*) z*x9gx7N$+z2WU-$8ir0NW6gXMR`?S#%zV4H;*BM{umw=V?AK9S)hEv%uW$7}3x7Nf zzqV_u_t|w7+-AOKNJ&7Y=lNL%TTXm#OqjDIKxxGBEE_8CEy{iUcp56NMi3pWwRfIIU!Hu}sz!>yZ+#ok5*@#j#mIlDx znml@884WQZ{2^8zq+Ac-cL%bra9CfPuVQ5*d>+AHV;x~oP)8Lz9IeBz5L{=mJr$`y zrPFb%*F~LYjR$%<59r^7Ys!L1ewj&NKH8jHUqrbisnAi4PBz{j?=0}XPlJr-`K1x^ z*!Trm1w48!IpV0v@{`@LyM^If9`mCdj-ogu`A~P)A;5Q(34X zVhuud9wYKQ*is`Tc0#F@nqfvKOstfLZS+0W0;Ds=2Sa*i%vEYlsL=(*VXOs(UHB1f zYN+zC3qKQ0xyXzaxx+?fx0RpAGC0n$@vXbc+q1$}nqpA{@gP}hC?_*sJ_wR&XlEdhj!`r+*&?WMGS8Z>&tq;Ku|+NJ&`(jDhjakxX;r5(XHW zHFPIy>VHWsJnH#oG#AhvV@du-T)rT4RgIo`jqtD3zIU`uL0Uu89guAjks2ZPC;nl z$*YuQ6Zr=$>zM$HC-X^>dEa%YV9W0-@y?*g=8k+uizaOa&tw#uYa}F0p*edGtW)?d zwU4)g$SzrdYZ!<5xRQ(uYUo|_ID9?@)n3X1&lG+Jy-#V-RK9@4rGTobsP^(~$ef1% z4ji{n!>l@S@5nU%b5>)3jym~eYT4%DphI||EXd;n4WXWk#)~2SfCV+b`znZm=gbxZ)i0Z^QlM%ckM79Y zz<~K!b#SdgSionnrF~({0zQ+K;-O*zAI>tr!KDS*lzE<0q89R346Nr41OmS_RJxXs z|H7GgY+}Ks7R)^;2J94sE8qdFoI(|}Sd2ZIv<{@j_}w@k3K#P|BZV*VtT^7tZZ}bv zj3op{QAxSJfU{ro8A{p`eh3b(%3;$|ewSIILChp&{AaY<%d6qgGJaf=JQ+HC!S~i)Tpue-zu-@>tkhK*vw}a%(meKD#b?$i z>su-A*<`Ryw}zQY`ohjtd}r<32Jbf|Xf;0zo2~1xbPd0owR@odTD~YrILF`Ufujy> z`N2^K)Kpz(YV9?o{rkIkT4}KkYc4D9f`MQ2!@}h;&tyMCRg}>*`(vAUWLycUkE0B{ z1BYhB^99b;s-C|cmk=m~nOx0jCkR>$Y`fND^)vpcEM3pza-h9HDc?YQLw5|E-N@s8 zF{2^lKiGBK$ASDGtR>8F<>-HSS73}u&`mOxxTYDR8Ap0I09lpX1EqKi-#LKARgK#U zpO7eA@UF{nsTzbifBfm3tM2}cPSaB{MCC~?g7oclbgqs_YQysF{BYLuIdI?d4e?H; zq;L5mIypZ5E$X2;9`1h2cdGMO5d@T&nO|_Cj=ni66zeD6s%(Z8^G7SF>;hs0*){@Y;)g%<_ zxv1(|FXg~4?2Xz99~R|yJ3PcW-&hg`g*5xj)SQMTwVUVNX8L0*vLnAOwvF_=eeyu( zQAcyfaP%*#zE8q?g82TdXOwbn4>pF0p3c-PghrloxU_@ES9Dk>-&fnyuY#yZ`}nTd z{WgZ8@3C&#Tf*7z`GiQ<%^&v^6W!W00&Ljk{{-~7@EV{!~6?| z=E{M?{I>?Poyx{F2?~C|7K9lMSAO6#BBZRiqLo~LHJq6maR3`eRem2pj|x6E!t+kt z>gr+Gp*Sn}{!yNOaf$1=;L-qhI5Ro|_mVMMTvwLzpn^|C@pXcPqo~-D8#0gbW2432 z{)^v34^7T*=UM>GnJUzvbSyZX*lK*R}b)|kU!J;8SfN^L|NeKl_;C_KS8>r>ho z1+0FN*{m?5aNL%4%=W^YRz+P4D^2i*x|lYl-mj@mykDg!E%$rBmcHcu$~;ygf9Bs~ z8w{Ia|J0Thc8As0m`VrEuvd~$DCULLc!^jK-Kx;R(%GTc0c z{fjM03H_Dd7Er^{Y0*R@)#;UO;96ir3CU}TWW4*O9_5z&iZH%{EUAlEsqJyOP2G`|Hv#%x z<)1f9go#)An4aY`g7?-+ZSayeF!`>zGhKL!MmNPnKEq{|F%24Mt7vpdpmG$a;$LW> z;maoa;g{p8#CW)J6^D+CZ$RQTzMf$cq+P>_t@Nid=NkX9!7vrL>liE@haT7YBW#xi z5OV`ZXIZ%reG>Bc=3f)kko>mQsk)h+sBO(+&GmRUn$-D5$4?F z6N8MGa6&sC*^;)GLitTTrUsLaZP|G(me?I`-{e!IlgoIS-W_9dC*;=p&6t8ks!|m{ z9*+>4)c=Qv$Q{?$GPeRj%cM*d?(|Ql{_sezCtBS3fY&m^dXPE+UZeqtw((Q;db( zRXE;}d&0~=`JL2UV!cJjIT0}87T>OsCr~ld`^VS(kXfNUl^u;frafK$Ia7aH^D7*= z#izu4|G+D^NyK%@8GaRJP6zFVk;(u z!j-#d@nEXp*xz)(bqlzAIODcIgwFT)#8Bp9!tCCE22nq>Y6+l`d&WJaBiw=Q_i!MG z8`I!!|KNDd zvj$o`Uc$DE;M?C{GFVqWIp028_XG0 zTg0hw_A$SamD<3ZCph81{PV&Xf;XuSUO158Ei26yt|jPG{@TJzB#GrNL!^PAXWTcy zZXg3$PdZ#MAj%cAa1M!N?U9hel9X(F=gf>*T|OvEva(?>*^VeX)cN=^4H^v3*dc?@el#{>+>Gl_sJuOn$j-PJ@yf&wOZu z=BsDlTc`K)g}RcVRRHN?+%!KocN0ttAa&_u;1*aGfEmA11g8Q>49o3>2LU9C?K&48 z-r?)j^av@p@Q$q&js;yRUH5K-7)at-ZV3zvq+kc^e37(ZXU&7%fuuQKBh1p>JpYqV z7)WeFD%gN!i(Vp5*0BI)zC>K?%%zZ)NZvIw>TptlX=Z}PjxEZiMAFm%=Q+}aj>H=A z1lK1{LK;tAths#mA=-F^1?;t;dTfDQp6q1H@E#vRMzWGqDJH~VY9Exd-WD|fcs*vI z^O6&){#Hlih8sOo={x*_<7ev$`xu zqb$-rSk{Eu8)xaMx3BvfZhbj8-yCAf3i*d9e_(o_9PFgjA?*Uz+Jf=6gW%Qq`}Xa2 znXHSfBOI4>4qcrRXBX)-#I_0gll)48bE9*J~LrgWMK6%Bk1^U+~GlJ}mhTl+B zx1V|6!Ik=CItGkrK>D-VYkj!ZfV_(=rpFV!9DED(Ye>4`--?E0D}L?Qh+M#F$7$%0 zK!)SzwFzV>CJ^!>!F9iF(DOx9K-VU4zDV9PZ2K=N{G(wHYH*%mJ5}JlhTT+uhp=J_ zRo$21Tq5Ry=|uH+EKdDigv=z8h;}2Gl|;}CnFQ`6GKLizL))h0xte>QRb}%@7}8Wz z<@(J~l|@dO*X-Y_TtQXT^N*h@Yu~E;R9XEd-KVN7uqmAYRXAKRwZT$rC!WGSfthcv zV806ZlbdfI6_|BMF=*QR|JCi0ZBe&f`(SNbtmK|KaJDTO{G6uaYLfE)r#h~&-~#Ct z5}x*dYPE_KN>#1asO&$WV_=viHZdm)MH#KI80SI5mt65oiM>m-BFKELTozfF|&U3 z)u(z~oKB`~7t?l4?PwcY9HW2d$naSG!gtc#AgO29AOK%X-z;dghQEyU6t#&(l zV>!+&gsR?TXmE`H^yCJ`svshjL4C-2L%eu?g{}N2<8S&V1#H4_3#z{T(qRKe?a=l? ztA1omjk47926G2(HvD%gZ0kpaSkIN(zxC|vutk4AukVtw(7sxh;k)SX)u(*S?Y({^ zIlD$qd|8b?j@`IFQBA*6ZK772Yv!!B)zrUT)xPE7w=(ayQwarWj*aM~lE$+CuEz?& zSRvXs<`UJQo(^0WtMy>F#zXz9$N{$vj8`4I~HlRm8J zRk+fhyj}119PD=u#*|Od;#%2Wt$7b~^v}ia}t(?`?S`?>q;+jAE z_7h6YL5Ae_c^X^TVY2@2OeU^}8qTvzPY2_>d)LxGZZz473KExQ#qiNO`A{Su>LV}i z>4PFFa&6qF#bA`I&hkK0>Y`M|%-H)lH(MVtT8O+2MrM-d47Z^G|FUagA6;vHL0zWD zaw@j|&a=9pnROao{5nA|CwaXuR4%6FNn`ZM*Ku3sn@PY|b00jWAz5|a#`~+)0+VU1 zgjv|%YK2*pWtE%JZv(L}#T(C6mH7%1-zI4+vj)xQK@?Q8Kghq0V>8HsUExoHIHDRyl%mR+R>8^gN#)b@tISB7LzrudzWD z+gf+X?n60ioFVjW-+|rb0c)+ba@Lq?#Z&PX^vI_@uv)ey8Xcjq=!nkYrwPvZ)QwJB zp4pUTX6ap6dJDYhZC+mS_x(w{EjqQ%~rs$N()NJ-jfhyD{RD z?R?PvleClX<9Mq0bLl%}CO&nW9#ft}rLaMH8b8}^pY6+&wHD2jng=ZYBL%z5_Z@gP z4@_aZ=ezhj?6 zOG29F)hYdbGK5QHV7M?r?ae9@k2r`H;(A{xkg!Xo6?*+Zsu)(~&_Ggb2r{SEEz_F5 zyi}Muh|GwW!^$fXaQxN$UBn`&?43|=S4aT_#E+sD> zOoVtB*R^6(>c8VwalW`{?L0e}ENXAFViWTJ%~w)AUo1QBoE%Pe z==40#`9kF7ihTqQ&?7Y_M#bqC7F`(jPhiD+*dLi*RZhM~A`Ci(sw9`<3S$Nif)?rms-iNNEvB$KJfJviCOk~cm}c|m;RpncA<2dcNEt({tkfT7jiJ45H;DL%Ou<{eVZldabRDi17LLf`CNbup z`TO_ix3d!^dMxQ;FnkBnIFc2-v$i#VtK!Da!0Frt72}Xm;RvLUCpg6|SLE>|3fC8A zz|IMnkmno(P9znfuIspfcQwmtVKnya=it&r9B#VmLBz*oA}hu~;m70+LymIcV-kwy z&)slu6812zZy{nbv1^wb*N0`3>GX9SY@1Aa(RGiYDTtA8<2o5iQ~DgFDRh?m1+1Qe zY9IF{luse(P_h?nnTqdBPdG6ZyEl8Gk~ob_#7WX1Ses22v7SM=x`h&D2ErIS>NOV6 zHakh>ztk=ib+?AV>7;ctSFg-o^zPT0-8&iRy|H!X|NRJWe(j~0L}uLFS_koNHVjqo zgjGXwdcp_O$x!|)jf|-^oSjYvuwpB8SdVOewG(n@kkoBVgU^oO@^T6;iBF4-O`Hu%&QXTD7*>4j89 zTrp6?fwN%y3rd26+{V%UMG*4HAXYpF&OGt~E1rbAd1Q>qhId9g1^8elDP}!?fsl_Q ze)~dLkWVsL`{gy4@(C8jI^{|M$uL9<#CtCsRkYZWVD(~S+yLry7eTLC^dIu}?S>%8j2daC9JhJ?Jm78)*+ z`ILy+_BBQM{R^h2tt(PcAXvh;lTCCFwEKPBM%+-l+v?6;ywVg)Mrt%BrPd+3G?aZZ z#};VFa+<@trf6Y;t-Vgcde29pxRE~vvHm_=2iH+shkd`>I+Wb9b%43^h#8v9BimVd zK3tkdI!BlNect%@wMwx#qr4>N>lDN5${4);h^Fsp3Muo6*oZly-mv0dklGbIs)WUT zc&ojbWB}<98wn-z$)I-LY*8OlNo}ezW!RRhZY)$2alO!cZ#*t972&m4G*RIt7_@*k zTan;dK<#7SLCQjG0Oapr{6f?%c`$5QNM`m>&L7tc%(Je@*}JRqH;OYaFCjUZ>YFVy zxfRtnt9Bup%BGB)0)&tsy*jkI$ob~eSWvKtL`949DB@!sA$(QjeA|a`A%f0SPcOoG z-GpNh4y2X!??Y#lL`P-egkAUd(Eq+Azv!yLEG}|}aTNjooiFDgpPI-yPza=14dz-= z{;PYnN-4~T3Uu$l+ULVP!1mET2ci~Z`tn?8wV1Ze=U~WUl2Ai9lYm?8^os0+&uN(8 zgd>Y_MB$nZHy0xfVHQLz!S-IPfB{Rejh1oQVF~GwZJ&UfB$&z!A=Z)djRz~gDt~c5 zwJXm{Q4fQuUzl-^6#bq?ulKH>uqTSwu24&zq{mwYGA%#XWW^jL;gFI!*&Y3^|8o*M zJ+)jXKML25fa$m7)yxfOY-I2Nn3{;^JxEzfngn^?!zq*cMcNHhmXgRu@^CbXt)_Lw z?e+I{97ib${>gimz|N&as4ou0ON^N4uJ=ESF4yQVgUZF)`zs3@Ue(?OY0+mSI^3SG zy~>g|L18l_eMVZm&=AT*;Cl1%^NVVhcyX80($o*R*SEuS`nwTraWr9>Ln{=ecnd~unm6&O

6aj-iCu!MIT#@tlt|%_^e`nP_%NNH}gRm8y&XI(AThe{NGIe zwYTTSHMtt7hyKCqIPnjSN#PPQxfX9T=j@^X%AlH7ee37G#Oyy(E`Qr~THIZ5{*d{a zMpix#ZkbL3et=bpn0#vOa1G1%GXg-)Qo%E6aEjy-^W&;NzYOVGhr}0Am9ZzM+ zz2X^;_EL_z>DdyF1+3As56t|szv1v#BsfGo{-tvM`@q{8YxW=E+E=veISQtgI7G+O zEdy4PMngQMs>o|=td<@6->lldp{x$qYrM1%Z#Y9$79#!?Q)70uk6F(K<@!pJiyH+$ zhB51K%7p*&Iug;t)EK=o1SGe_w#k_KmR3DIYw1wwiz@w)vs!-yJhMZquDB!_cc|nv z%u92aZfeP~uhTJ^v?8`STf_q0WK?F~0(Ftnxh495HK z)Uig{E6FxY-<*d>-)S4EHy$d=^|}^|PFIRZeO4L>r;F&QKMU>^(LQ+q2w#(Ut9`(; zX~=JDY1sRD)3CMoPs6R%b2Saz#HR5-9cF!v{k}9Dc79DFV_Z7l+Drfkj}MJ0P0OKB zZNlD$TVLY@hv^Tk*Q2>WN`p-NZ^3joq}E=m(G$}&E(Chjoti@%o+_p}bjxbdsHxkV z!lv~&9uqp@F=g!2JR-zyASr2{XK^-#T!TjYi|YR8%S3+uOozR#5soWCZum9xbLD5jNeFNnq0o6 zu!+_1KoG_guY9k%mPchHooswVjjk1tdT z#RDDPK9yIbHp5MWr2&;fh^U8iwPc5`1`O-Cq9^qjqP`&oolQsdnZdC6#==hi8N@xv zRnn`zAt+ME2Hp8ID}!+4neNYmSXX1gdP2_%Vlt{> zm^!%IGC*t4q+%3t^c~!>sfzfDPycG~)xODRGx0`Rx}S%>H^ZJEhsWOS7J7bl*_yKO zMCR+&7z%+tn`xy#2~#$c6szZic0p<9ZkxKrrp-&E7nS-`alebrS#N(Tf{9jO<6tat zd!keGPatWT}+PIX&n z1^q5ec$(TA?~^X-^~E z#ZA-k*u78kEbo(Rdbd58AC(W!G;hx20`E6hwx%b^@YiA?715bMOp-sD~G`TlzoQ;P-q>Zzu%|eA@ zzdfg$MZ5hQo4Q}a3dt~PC+13e2(xyg#ggd)WEW0A8Qh|{i$t}}`^L9>4eV+Gbp6+t zZoV&VQZ*E=KTg|4;v-y#d|_y59i^(!LD;d2+^vy%T=#+^;pE#5yLV&VNInQBc9Zz{ zzYqMm$B^=y=JQ0$)leTLjd%MHh}}ctqg;b%E2MpM4OCT9jlpEm^F_5`!X8qK_4I~< zJ=l8+!=Yji_I>6;sNo_n*Y;q8;~k7F)Ky%Bo-R75*ba6Vk+Pk-n_1^MY>R7a7fB8N zM#H*V>bJ{n)%{T-2ED~>rRCwp*qiIup(#ELI`H+mU8<^^Re{}c9)L2Rqd*J z9I#;mwt;II_gkw8#N&You2z~V}G7DM$}J0T6quLAGk5ME_}3) z#C7%(cAv&basH8{C|w@93tfs4s$tNCbaEe=*WaXj&UOBZ<)mL9=w(m{*6BQh8I|Cl zmWNb^*x${u}tM`4}~)|ZmxdYYxt zj!q4twAy|gjncIET^HeTDQQwezVp}6z$C4(?OUO>n~ZG2lupO(nswLChx*J(4lNg5 z^jdPz5twf~e+M386RIkaeL7UQ(J-F85JJjGc!U+Vt=j{Y-l!yw(j{6-c*OP44$>q+ zS~)cww?Eb7%LnVVUHG!d@%EWgC3z6tsu;LipBS}-!ZK{d#1^orjI;|CagAz)Bh29q zmu!p5NklK98$SdavC+>4$*qlkP`Qi48tdHV7x`Jd)X|aZBW&*oBg#o^xR@82nVFdt z^fzNj(Xz?pgIrFcL&e9U!q0G*)q>e=I!IJmLVEHGp2}P*vAI%(Fmic&u0SR1p(W&mSYt z(=euMK8!uuA0rh)uY;Jgyp!NONZMwb`Xcvn{uptlHn&O04c@EeM}9q8oL$MJ=x=X4 zGh9<;fo?8TSvY%RGttDKnv{c`ggysJ%-x(UGtHB?GGVql%>B7bpyMGD7h%f4mZQzn zXlfrOOoNGsu*nqe!smxbWVX8pI__!fkMT@w*Xim{dZw>yEKpowHJmg)GxJfMU(RVr z=bt{LTn*{^Xp`-?gF5c64_6Ua4JeKdXq+2BkL6*vrdD!XO6zx+ME8?lF{a+i7})D* zug-67dXqYV@*?CBAM08mb^LKpX2z1sA0OA^O6Uj+ha~8lO6@HI-~L6X*>0SoJ>k;X zp~E=4l9S*brcy(0TFGQ!<)wHg5n_+v5JgS|>k*u(%1vSX5n_!n_4n&IRk7Op!OW+-wfeDVy7&x-`qlG zUchWmPvMLFGw!ybxJLLhD!!~^9_o6681!bYPQtMvP{qx>w8^&Qe0=_X*+1iyp5%|M zV;2)1)rmeGEq?k#bXUiDjalg~96;tGn7tqCIw9ZxQ`ZURuSG|R5X#)-Qt*<}cN6lp zD4t4ac9g`&*sn!ru6we{w)foO3N1vu{^%v`$#n(BAEgG0tFZJaNlFl}zo}$}^XMGu z;w~NgJ2m%Io-A@u>V*^Zc<15vQPM8P)Du;!xqn{8TA3*hb7qMVPi(Ct;fZw*YjLDs zm`v?S{qGzu4M>my@EYudh%b>0prebu8?ZBE-9ErYkpt~Jp-XCvz!a3e)380x^yiNG4~+PQbWUo{R>XWoF7BTDOylpLHsG=No3AZWWY-EtF^9cPi5(~%e6SJ zA;y#j^3-s{AuUf#2(+>rP-UM`G@+*mG?Vf^MX8H5M6li>?5>j(1z0s{) zmyq`UDwU8JE_Pe(NbXGsHL0z&bmcTiI!!D1tI+E-rsHzMtkWdAk<KxwRcJR^Q<9=!%kQ`W1?!HA z3_ni>Mp}of8R+H@bp^qk^Ed}^{Ro%NlO_cJHHA0=(HC$lg>V=KT)^UX4^?9i@sDkP zxWhq@YX4`t7Rz%4R$L(cgyg+N`Rz-?j7;rHX@U!nA0Ng;p|z){f}n0IIRjA_NwZih z8oxq_Mln^==gO5m9F@}F-%agZOP<(cWw4#<0RGD4%;u1%xt%WLz7Vd z$jo`Y%m!%^q!_sx#^up4rk*}baW#zntd1G#!(`~Xqca+27f)+>!U2hzE2b1yUqY)_ z->;$S5?UArzY9T^N$V(EwlN}$FS(kQ~2iBsF>`~~B2Dd`v%&|=L3bYAwiI?q~+ zp2*avhAYq$nff$zH99m?pDu4eH)iUSc^j<#19wN+wkz&G$Ph!MtFO;45nF;yuB=w{ ze<0-s8AR;$wRhKT*mQ$jXXTn8-z4=T-1pES7pEL%&X+TL+ySIsJD zUmxpK?jU=P!GGj8iSF6~r!SPckg?gkj@_Mq8t+>|tV>NX5Hc$1wu4t-z)R@pWKJci zX%3c>m0^6t~Yv*mT-+**ucpdN{d^>g?(BJxce7rmu<3OG1S%RmS}MW zgPyiqOPgXss$o2jHH_(i4$PabQ79I0%J_GF11K4sK_g{(Yz;uTsb#<**7Sh?R zV>@cBq)IR~_&2P*!qC%|Lc^*`0YHA0-jU|5u zQAW#A*0Tj}8ZBc(%>%TJVYZdY-@ zQXNY?eXkK|8P8g~gEP_+OaF@^E%oVtMWn^f%FUr?T}vbSKBcaufHkE77iEc||Ba#$ zkN@dW7Bt2RFe3_a_`W{MGLN-dL99pVSYb##3$EGKghllz9joH1XBmn93kE~tbI1_> zXXyW9p0iZoVKzvKu@thV@ydx93vT_hPEdY--h!v0+@q9JFIYM^V6A^EF*eI$+)~WI z_HLA!U^q$t-H+j({vVlU=@)C_aZ*#qTa7AwW~+(=<9k-D#$R z@lXoBJ0C(ucMLc2P(Kjd|aXCX=b4~7i= zf7I(*!UxoM3tZE`lb)7in6BdKX*sJh;OcFWvQ0)DG)MSyQaMk{iCdq;J5AUL#y=BY zsD)ckdnM>E;mSGHC5)1KrUWWyE&l#|xb2sKh6fB`5l!HWK9(-oR)Q^Ah%b>JoEi~l zfR>1x!REh#9=^V^_=j9Q{4bpe7MX~CCjJa9-2K28KI++UyB_{n4ew$yA%Q|4KtAVf zM*nLQSt+0UR}%^=`&u$%{hRGd`N?f9AzyQ>#P+kuhHQ5LPC6StLdQav1U`)i7Jwm(%w3p`f;gCXWE z%dJ@d&JQKAS&MHqX&H3>qcqE;H36&GwE>p?v}#%3(Q3eucPtXElI7}qFkI39ISIqj zV^|~lkDA|A{~xCR&s6_|VXgjOPXCeq70J@SdQ%|(;L$VWYYGOvtEKCHm(mZ0OYi=d zBK<)Zl=W#Z41)$*4uraDYTXS^xdqxGpu09P%hD{;Zkbv;tYvM+KUBU51z8r{ORy7m zW?}0rcY%I`ECVC*zQnPG&4|vBjOZB|Dh?ne&vvC^kmcI|Lo+BCX2H2E3$2G+@Z1v% zeTG{$*Y3SJk2BQ9E%QtuMsd+740@~@VTq5Bs+w7wmIgFVW6K_HP5f(hK zR}$-~x)-pRQO3u6nMu-~ssJACO=B7+Cb71-+;Iqa66qGTl(Cl;)Kl576?8+qW`DTTZc#mC$+& zb~N@nFl>zFCCeT!z=Jk`F_t%KeeWMnJ`RB&Sr#X_2DaIiQ}!ylGI;dU2wdyFn``r}B7$#l+V4q=uR6GV@JLKy&lY zY)-?1MQM&5;QC&Z0TZ!9#F55tvuuXthBw*D{?FOisGx$F%#y;3dsFcjoi zntFrX)q>@6IF@6Hd(q27JO9|85`+Bd)!DW<{tg4;AuI&x9K_~YdPGU5mfK$4g@-YE zZOWL}i+wZo-8x+k8HO@(>!2Xl@&TLGLV1vD=^wyK9Q2uKK@W_>mH$`OwT46yMd8^o zSKFhdv~4Py>lP(a5-L{y5Gz-sG*px%O*YI*i6SWJPcih+)Si|dvrWg<%+%IW=|+?q znL$PLkY4l{%3eaY5pMkm>fD({wqJ8O_n!Oy&Yb%==XM-|Rb(RWLU$ESuMciEuNoGS zyUr-guYtZCd1mm(l-!&t+0qW_JPP89`eP($iraHDpXUz~qGGXK(RmQdobU3DkU$f-nP)?3}9N57m(rwCV7A9gtDD8!e|HMU)q?ji(`+7+>O1qy)km97I?Z zq&zNtJjXDXj&gXR@+`V4PQMOm36|GW7p{oMd-aeIAn8bhcd0nugN8HkLR4yT^bA4L zT!Xd-h?-iC$5m0d9;+K5($9yFOv^sJ+yLp>nSp5sOQ=896jB~5S51tvys73~jhdG0 zO&!e9sKfc*RC36+@+@>_7kCo~ty)rjkvG+r>d9b(H&s~SDQuHBRbGavb|{%%>P@sI zv1@inAe*8x96tv!+&x@aBg6&RUMw3Rn+4uyWtiUx(X%D1&-^J79MWy%!Y3^wm>Nw2 zQ*E>mj*X3^`VWqyxru*A(9r~k`5TstWC#(9tLTa?)P@V=nq(yFQ&nmz3zvS?LbPc3 zEkk&id`%k%+jF`x68ZuCT-wM<)fn3hyG7|LYj1{1G1x-5@)h_rR%@W#!jx7h&>^$8 zLZU9f#}P~ZDtY~tbbNarhQ$5Pv9%47#TH*S+6J?9p*P5+IGzBpWfGxkPVxa}Y=>O( zc38y9I$#^YsQ_Pf5~r{h!@8h3^rpsGv0;)?;&Ve@f+Jlp&YeFFU4kBw#LaFeEH~-% zv{hHyC(=np?QnTw9X@i>?^a)^#Z`=Q$*9HcD#n0r(!71&viIHK(wX!>JsHfVQ?!`H zC4B2(VuF3S!XYCUqOF%E{GHEO+Y6G#S3!ZJS@>4UzRLrDI_T*m)%T4ke*S5R{ZTHsj*< LclYB>mFNBe(NfQo delta 90980 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 GCark(E1K8#i*hla)+)J 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