From 956bc3ef2e70245d6bf907f9eaeb0dbfd9fbe192 Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Thu, 9 Oct 2025 04:50:53 -0300 Subject: [PATCH 01/31] fix(release): Fix release scripts (#11907) * fix(release): Update version script check if version already exists * ci(component): Update component upload action to 2.2.0 * fix(release): Update zip filename in json --- .github/ISSUE_TEMPLATE/Issue-report.yml | 1 - .github/scripts/on-release.sh | 3 ++- .github/scripts/update-version.sh | 9 +++++++-- .github/workflows/upload-idf-component.yml | 4 ++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Issue-report.yml b/.github/ISSUE_TEMPLATE/Issue-report.yml index 79d8adb71bb..af97de73644 100644 --- a/.github/ISSUE_TEMPLATE/Issue-report.yml +++ b/.github/ISSUE_TEMPLATE/Issue-report.yml @@ -44,7 +44,6 @@ body: - latest development Release Candidate (RC-X) - latest master (checkout manually) - v3.3.2 - - v3.3.2 - v3.3.1 - v3.3.0 - v3.2.1 diff --git a/.github/scripts/on-release.sh b/.github/scripts/on-release.sh index b65ab371640..e461e77b0c3 100755 --- a/.github/scripts/on-release.sh +++ b/.github/scripts/on-release.sh @@ -433,7 +433,8 @@ echo echo "Updating libs URLs in JSON template ..." # Update all libs URLs in the JSON template -libs_jq_arg="(.packages[0].tools[] | select(.name == \"esp32-arduino-libs\") | .systems[].url) = \"$LIBS_ZIP_URL\"" +libs_jq_arg="(.packages[0].tools[] | select(.name == \"esp32-arduino-libs\") | .systems[].url) = \"$LIBS_ZIP_URL\" |\ + (.packages[0].tools[] | select(.name == \"esp32-arduino-libs\") | .systems[].archiveFileName) = \"$LIBS_ZIP\"" cat "$PACKAGE_JSON_TEMPLATE" | jq "$libs_jq_arg" > "$OUTPUT_DIR/package-libs-updated.json" PACKAGE_JSON_TEMPLATE="$OUTPUT_DIR/package-libs-updated.json" diff --git a/.github/scripts/update-version.sh b/.github/scripts/update-version.sh index ea680a6d801..5dd26d9f40a 100755 --- a/.github/scripts/update-version.sh +++ b/.github/scripts/update-version.sh @@ -39,8 +39,13 @@ echo "New Arduino Version: $ESP_ARDUINO_VERSION" echo "ESP-IDF Version: $ESP_IDF_VERSION" echo "Updating issue template..." -cat .github/ISSUE_TEMPLATE/Issue-report.yml | \ -sed "s/.*\- latest master .*/ - latest master \(checkout manually\)\\n - v$ESP_ARDUINO_VERSION/g" > __issue-report.yml && mv __issue-report.yml .github/ISSUE_TEMPLATE/Issue-report.yml +if ! grep -q "v$ESP_ARDUINO_VERSION" .github/ISSUE_TEMPLATE/Issue-report.yml; then + cat .github/ISSUE_TEMPLATE/Issue-report.yml | \ + sed "s/.*\- latest master .*/ - latest master \(checkout manually\)\\n - v$ESP_ARDUINO_VERSION/g" > __issue-report.yml && mv __issue-report.yml .github/ISSUE_TEMPLATE/Issue-report.yml + echo "Issue template updated with version v$ESP_ARDUINO_VERSION" +else + echo "Version v$ESP_ARDUINO_VERSION already exists in issue template, skipping update" +fi echo "Updating GitLab variables..." cat .gitlab/workflows/common.yml | \ diff --git a/.github/workflows/upload-idf-component.yml b/.github/workflows/upload-idf-component.yml index 687e721fbc2..8bb6956e6da 100644 --- a/.github/workflows/upload-idf-component.yml +++ b/.github/workflows/upload-idf-component.yml @@ -51,9 +51,9 @@ jobs: submodules: "recursive" - name: Upload components to the component registry - uses: espressif/upload-components-ci-action@b78a19fa5424714997596d3ecffa634aef8ae20b # v1.0.5 + uses: espressif/upload-components-ci-action@df9e740b912c009996df639ba7090c24e9a542c2 # v2.2.0 with: - name: arduino-esp32 + components: "arduino-esp32: ." # component_name: directory version: ${{ env.RELEASE_TAG }} namespace: espressif api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }} From b20655a009008e374fd37f5a6c45f3ba53b9ba86 Mon Sep 17 00:00:00 2001 From: luismiKode Date: Thu, 9 Oct 2025 13:27:05 +0200 Subject: [PATCH 02/31] fix(board): update Kode Dot variant pin mapping and OPI flash (#11909) * fix(board): update Kode Dot variant pin mapping and OPI flash * fix(board): restore DebugLevel menu required by CI * fix(board): remove duplicate psram_type line * style(board): remove extra blank lines from DebugLevel section --- boards.txt | 4 +-- variants/kodedot/pins_arduino.h | 45 ++++++++++++++++++--------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/boards.txt b/boards.txt index 038b9727f84..3ed6e80f0b3 100644 --- a/boards.txt +++ b/boards.txt @@ -51760,13 +51760,13 @@ kodedot.build.dfu_on_boot=0 kodedot.build.f_cpu=240000000L kodedot.build.flash_offset=0x400000 -kodedot.build.flash_size=16MB +kodedot.build.flash_size=32MB kodedot.build.flash_freq=80m kodedot.build.flash_mode=dio +kodedot.build.psram_type=opi kodedot.build.custom_partitions=kodedot_partitions -kodedot.build.psram_type=qspi kodedot.build.defines= kodedot.build.loop_core=-DARDUINO_RUNNING_CORE=1 diff --git a/variants/kodedot/pins_arduino.h b/variants/kodedot/pins_arduino.h index f19ddb8a616..e6924435960 100644 --- a/variants/kodedot/pins_arduino.h +++ b/variants/kodedot/pins_arduino.h @@ -1,11 +1,11 @@ /* ──────────────────────────────────────────────────────────────────────── - KodeDot – ESP32-S3R8 Variant + KodeDot – ESP32-S3R8 Variant (rev. with OPI flash/PSRAM) Pin definition file for the Arduino-ESP32 core ──────────────────────────────────────────────────────────────────────── * External 2 × 10 connector → simple aliases PIN1 … PIN20 * On-board QSPI LCD 410×502 @40 MHz (SPI3_HOST) - * micro-SD on SPI2_HOST + * micro-SD on SDMMC (1-bit) * Dual-I²C: external (GPIO37/36) + internal-sensors (GPIO48/47) * USB VID/PID 0x303A:0x1001 */ @@ -33,13 +33,12 @@ static const uint8_t SDA = 36; // GPIO36 – PIN14 #define INT_I2C_SCL 47 // GPIO47 #define INT_I2C_SDA 48 // GPIO48 -/*──────────────── SPI2 – micro-SD ───────────────────────*/ -static const uint8_t SS = 15; // SD_CS -static const uint8_t MOSI = 16; // SD_MOSI -static const uint8_t MISO = 18; // SD_MISO -static const uint8_t SCK = 17; // SD_CLK -#define BOARD_HAS_SD_SPI -#define SD_CS SS +/*──────────────── SDMMC – micro-SD (1-bit) ───────────────*/ +#define BOARD_HAS_SD_SDMMC +#define SDMMC_CMD 5 // SD_CMD +#define SDMMC_CLK 6 // SD_CLK +#define SDMMC_D0 7 // SD_D0 +#define SD_CS -1 // No CS pin in SDMMC mode /*──────────────── QSPI LCD (SPI3_HOST) ─────────────────– * Controller: ST7789 / 4-line SPI (no D/C pin) @@ -52,16 +51,14 @@ static const uint8_t SCK = 17; // SD_CLK #define LCD_HEIGHT 502 #define LCD_HOST SPI3_HOST -#define LCD_SCK 35 // GPIO35 • QSPI_CLK -#define LCD_MOSI 33 // GPIO33 • QSPI_IO0 (D0) -#define LCD_IO1 34 // GPIO34 • QSPI_IO1 (D1) -#define LCD_IO2 37 // GPIO37 • QSPI_IO2 (D2) -#define LCD_IO3 36 // GPIO36 • QSPI_IO3 (D3) -#define LCD_CS 10 // GPIO10 -#define LCD_RST 9 // GPIO09 +#define LCD_SCK 17 // GPIO17 • QSPI_CLK +#define LCD_MOSI 15 // GPIO15 • QSPI_IO0 (D0) +#define LCD_IO1 14 // GPIO14 • QSPI_IO1 (D1) +#define LCD_IO2 16 // GPIO16 • QSPI_IO2 (D2) +#define LCD_IO3 10 // GPIO10 • QSPI_IO3 (D3) +#define LCD_CS 9 // GPIO09 +#define LCD_RST 8 // GPIO08 #define LCD_DC -1 // not used in 4-line SPI -/* Optional: back-light enable shares the NeoPixel pin */ -#define LCD_BL 5 // GPIO05 (same as NEOPIXEL) /*──────────────── Analog / Touch pads ────────────────*/ static const uint8_t A0 = 11; // PIN4 – GPIO11 / TOUCH11 / ADC2_CH0 @@ -71,9 +68,9 @@ static const uint8_t A3 = 14; // PIN10 – GPIO14 / TOUCH14 / ADC2_CH3 static const uint8_t T0 = A0, T1 = A1, T2 = A2, T3 = A3; /*──────────────── On-board controls & indicator ─────────*/ -#define BUTTON_TOP 0 // GPIO00 – BOOT • active-LOW -#define BUTTON_BOTTOM 6 // GPIO06 • active-LOW -#define NEOPIXEL_PIN 5 // GPIO05 – WS2812 +#define BUTTON_TOP 0 // GPIO00 – BOOT • active-LOW +#define BUTTON_BOTTOM -1 // via IO expander • no direct GPIO +#define NEOPIXEL_PIN 4 // GPIO04 – WS2812 #define LED_BUILTIN NEOPIXEL_PIN /*──────────────── JTAG (also on connector) ──────────────*/ @@ -104,4 +101,10 @@ static const uint8_t T0 = A0, T1 = A1, T2 = A2, T3 = A3; /* PIN1, PIN2, PIN19, PIN20 are power/ground and deliberately left undefined – they are **not** usable as GPIO. */ +/* ==== Default SPI pins for library compatibility ==== */ +#define SCK 17 // LCD_SCK • QSPI_CLK +#define MISO -1 // No MISO available in this design +#define MOSI 15 // LCD_MOSI • QSPI_IO0 +#define SS 9 // LCD_CS + #endif /* Pins_Arduino_h */ From 34d9855291c0f51a171cb4a7d50b1320aa77f11f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Andr=C3=BDsek?= Date: Fri, 17 Oct 2025 12:15:44 +0200 Subject: [PATCH 03/31] fix(vfs): fix stat initialization, close #11908 (#11911) * fix(vfs): fix stat initialisation, close #11908 * fix(vfs): change log level from warning to error for stat failure --- libraries/FS/src/vfs_api.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libraries/FS/src/vfs_api.cpp b/libraries/FS/src/vfs_api.cpp index da22ea1962c..9afb4999119 100644 --- a/libraries/FS/src/vfs_api.cpp +++ b/libraries/FS/src/vfs_api.cpp @@ -276,8 +276,12 @@ VFSFileImpl::VFSFileImpl(VFSImpl *fs, const char *fpath, const char *mode) : _fs if (!_f) { log_e("fopen(%s) failed", temp); } - if (_f && (_stat.st_blksize == 0)) { - setvbuf(_f, NULL, _IOFBF, DEFAULT_FILE_BUFFER_SIZE); + if (!stat(temp, &_stat)) { + if (_f && (_stat.st_blksize == 0)) { + setvbuf(_f, NULL, _IOFBF, DEFAULT_FILE_BUFFER_SIZE); + } + } else { + log_e("stat(%s) failed", temp); } } free(temp); From 014d5ef23cec498103c5a6d028bbab7746397424 Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Fri, 17 Oct 2025 07:20:35 -0300 Subject: [PATCH 04/31] fix(ci): Fix bugs in detection and release scripts (#11922) --- .github/CODEOWNERS | 1 + .github/scripts/get_affected.py | 59 +++++++++++++++++++++++++++++-- .github/scripts/on-release.sh | 26 +------------- .github/scripts/update-version.sh | 45 ++++++++++++----------- .github/workflows/docs_deploy.yml | 1 + 5 files changed, 84 insertions(+), 48 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d07ef88044d..6a4d284cd5c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -59,6 +59,7 @@ /libraries/ESP_SR/ @me-no-dev /libraries/ESPmDNS/ @me-no-dev /libraries/Ethernet/ @me-no-dev +/libraries/Hash/ @lucasssvaz /libraries/Matter/ @SuGlider /libraries/NetBIOS/ @me-no-dev /libraries/Network/ @me-no-dev diff --git a/.github/scripts/get_affected.py b/.github/scripts/get_affected.py index 85e35c40e43..a85f30470e2 100755 --- a/.github/scripts/get_affected.py +++ b/.github/scripts/get_affected.py @@ -358,6 +358,59 @@ def build_qname_from_tag(tag: dict) -> str: qname = "::".join([p for p in qparts if p]) return f"{qname}{signature}" +def find_impl_files_for_qname(qname: str, defs_by_qname: dict[str, set[str]], header_path: str = None) -> set[str]: + """ + Find implementation files for a qualified name, handling namespace mismatches. + + Ctags may capture different namespace scopes in headers vs implementations. + For example: + - Header: fs::SDFS::begin(...) + - Implementation: SDFS::begin(...) + + This happens when implementations use "using namespace" directives. + + Strategy: + 1. Try exact match first + 2. If no match and qname has namespaces, try stripping ONLY outer namespace prefixes + (keep at least Class::method structure intact) + 3. If header_path provided, prefer implementations from same directory + """ + # Try exact match first + impl_files = defs_by_qname.get(qname, set()) + if impl_files: + return impl_files + + # If no exact match and the qname contains namespaces (::), try stripping them + if "::" in qname: + parts = qname.split("::") + # Only strip outer namespaces, not the class/method structure + # For "ns1::ns2::Class::method(...)", we want to try: + # - "ns2::Class::method(...)" (strip 1 level) + # - "Class::method(...)" (strip 2 levels) + # But NOT "method(...)" alone (too ambiguous) + + # Only allow stripping if we have more than 2 parts (namespace::Class::method) + # If we only have 2 parts (Class::method), don't strip as it would leave just "method" + if len(parts) > 2: + # Keep at least 2 parts (Class::method) to avoid false positives + max_strip = len(parts) - 2 + + for i in range(1, max_strip + 1): + shorter_qname = "::".join(parts[i:]) + impl_files = defs_by_qname.get(shorter_qname, set()) + + if impl_files: + # If we have the header path, prefer implementations from same directory + if header_path: + header_dir = os.path.dirname(header_path) + same_dir_files = {f for f in impl_files if os.path.dirname(f) == header_dir} + if same_dir_files: + return same_dir_files + + return impl_files + + return set() + def run_ctags_and_index(paths: list[str]) -> tuple[dict[str, set[str]], dict[str, set[str]], str]: """ Run Universal Ctags over given paths (relative to project_root) and build: @@ -582,8 +635,10 @@ def build_dependencies_graph() -> None: if qnames: impl_files = set() for qn in qnames: - # For each qualified name, get the implementation files - impl_files |= ctags_defs_by_qname.get(qn, set()) + # For each qualified name, find implementation files + # This handles namespace mismatches (e.g., fs::SDFS vs SDFS) + # Pass header_path to prefer implementations from same directory + impl_files |= find_impl_files_for_qname(qn, ctags_defs_by_qname, header_path) for impl in impl_files: # Skip .ino files - they should never be dependencies of other files if impl.endswith('.ino'): diff --git a/.github/scripts/on-release.sh b/.github/scripts/on-release.sh index e461e77b0c3..dec2723eabb 100755 --- a/.github/scripts/on-release.sh +++ b/.github/scripts/on-release.sh @@ -54,30 +54,6 @@ if [ -n "${VENDOR}" ]; then echo "Setting packager: $VENDOR" fi -function update_version { - set -e - set -o pipefail - - local tag=$1 - local major - local minor - local patch - - # Extract major, minor, and patch from the tag - # We need to make sure to remove the "v" prefix from the tag and any characters after the patch version - tag=$(echo "$tag" | sed 's/^v//g' | sed 's/-.*//g') - major=$(echo "$tag" | cut -d. -f1) - minor=$(echo "$tag" | cut -d. -f2) - patch=$(echo "$tag" | cut -d. -f3 | sed 's/[^0-9].*//') # Remove non-numeric suffixes like RC1, alpha, beta - - echo "Major: $major, Minor: $minor, Patch: $patch" - - "${SCRIPTS_DIR}/update-version.sh" "$major" "$minor" "$patch" - - set +e - set +o pipefail -} - function get_file_size { local file="$1" if [[ "$OSTYPE" == "darwin"* ]]; then @@ -230,7 +206,7 @@ LIBS_ZIP="$PACKAGE_NAME-libs.zip" LIBS_XZ="$PACKAGE_NAME-libs.tar.xz" echo "Updating version..." -if ! update_version "$RELEASE_TAG"; then +if ! "${SCRIPTS_DIR}/update-version.sh" "$RELEASE_TAG"; then echo "ERROR: update_version failed!" exit 1 fi diff --git a/.github/scripts/update-version.sh b/.github/scripts/update-version.sh index 5dd26d9f40a..814cf24afd6 100755 --- a/.github/scripts/update-version.sh +++ b/.github/scripts/update-version.sh @@ -10,23 +10,26 @@ set -o pipefail # "[board].upload.tool=esptool_py" to "[board].upload.tool=esptool_py\n[board].upload.tool.default=esptool_py\n[board].upload.tool.network=esp_ota" #cat boards.txt | sed "s/\([a-zA-Z0-9_\-]*\)\.upload\.tool\=esptool_py/\1\.upload\.tool\=esptool_py\\n\1\.upload\.tool\.default\=esptool_py\\n\1\.upload\.tool\.network\=esp_ota/" -if [ ! $# -eq 3 ]; then +if [ ! $# -eq 1 ]; then echo "Bad number of arguments: $#" >&2 - echo "usage: $0 " >&2 + echo "usage: $0 " >&2 exit 1 fi -re='^[0-9]+$' -if [[ ! $1 =~ $re ]] || [[ ! $2 =~ $re ]] || [[ ! $3 =~ $re ]] ; then - echo "error: Not a valid version: $1.$2.$3" >&2 - echo "usage: $0 " >&2 +# Version must be in the format of X.Y.Z or X.Y.Z-abc123 (POSIX ERE) +re='^[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z]+[0-9]*)?$' +version=$1 + +if [[ ! $version =~ $re ]] ; then + echo "error: Not a valid version: $version" >&2 + echo "usage: $0 " >&2 exit 1 fi -ESP_ARDUINO_VERSION_MAJOR="$1" -ESP_ARDUINO_VERSION_MINOR="$2" -ESP_ARDUINO_VERSION_PATCH="$3" -ESP_ARDUINO_VERSION="$ESP_ARDUINO_VERSION_MAJOR.$ESP_ARDUINO_VERSION_MINOR.$ESP_ARDUINO_VERSION_PATCH" +ESP_ARDUINO_VERSION_MAJOR=$(echo "$version" | cut -d. -f1) +ESP_ARDUINO_VERSION_MINOR=$(echo "$version" | cut -d. -f2) +ESP_ARDUINO_VERSION_PATCH=$(echo "$version" | cut -d. -f3 | sed 's/[^0-9].*//') # Remove non-numeric suffixes like RC1, alpha, beta +ESP_ARDUINO_VERSION_CLEAN="$ESP_ARDUINO_VERSION_MAJOR.$ESP_ARDUINO_VERSION_MINOR.$ESP_ARDUINO_VERSION_PATCH" # Get ESP-IDF version from build_component.yml (this way we can ensure that the version is correct even if the local libs are not up to date) ESP_IDF_VERSION=$(grep -m 1 "default:" .github/workflows/build_component.yml | sed 's/.*release-v\([^"]*\).*/\1/') @@ -35,38 +38,38 @@ if [ -z "$ESP_IDF_VERSION" ]; then exit 1 fi -echo "New Arduino Version: $ESP_ARDUINO_VERSION" +echo "New Arduino Version: $version" echo "ESP-IDF Version: $ESP_IDF_VERSION" echo "Updating issue template..." -if ! grep -q "v$ESP_ARDUINO_VERSION" .github/ISSUE_TEMPLATE/Issue-report.yml; then +if ! grep -q "v$version" .github/ISSUE_TEMPLATE/Issue-report.yml; then cat .github/ISSUE_TEMPLATE/Issue-report.yml | \ - sed "s/.*\- latest master .*/ - latest master \(checkout manually\)\\n - v$ESP_ARDUINO_VERSION/g" > __issue-report.yml && mv __issue-report.yml .github/ISSUE_TEMPLATE/Issue-report.yml - echo "Issue template updated with version v$ESP_ARDUINO_VERSION" + sed "s/.*\- latest master .*/ - latest master \(checkout manually\)\\n - v$version/g" > __issue-report.yml && mv __issue-report.yml .github/ISSUE_TEMPLATE/Issue-report.yml + echo "Issue template updated with version v$version" else - echo "Version v$ESP_ARDUINO_VERSION already exists in issue template, skipping update" + echo "Version v$version already exists in issue template, skipping update" fi echo "Updating GitLab variables..." cat .gitlab/workflows/common.yml | \ sed "s/ESP_IDF_VERSION:.*/ESP_IDF_VERSION: \"$ESP_IDF_VERSION\"/g" | \ -sed "s/ESP_ARDUINO_VERSION:.*/ESP_ARDUINO_VERSION: \"$ESP_ARDUINO_VERSION\"/g" > .gitlab/workflows/__common.yml && mv .gitlab/workflows/__common.yml .gitlab/workflows/common.yml +sed "s/ESP_ARDUINO_VERSION:.*/ESP_ARDUINO_VERSION: \"$ESP_ARDUINO_VERSION_CLEAN\"/g" > .gitlab/workflows/__common.yml && mv .gitlab/workflows/__common.yml .gitlab/workflows/common.yml echo "Updating platform.txt..." -cat platform.txt | sed "s/version=.*/version=$ESP_ARDUINO_VERSION/g" > __platform.txt && mv __platform.txt platform.txt +cat platform.txt | sed "s/version=.*/version=$ESP_ARDUINO_VERSION_CLEAN/g" > __platform.txt && mv __platform.txt platform.txt echo "Updating package.json..." -cat package.json | sed "s/.*\"version\":.*/ \"version\": \"$ESP_ARDUINO_VERSION\",/g" > __package.json && mv __package.json package.json +cat package.json | sed "s/.*\"version\":.*/ \"version\": \"$ESP_ARDUINO_VERSION_CLEAN\",/g" > __package.json && mv __package.json package.json echo "Updating docs/conf_common.py..." cat docs/conf_common.py | \ -sed "s/.. |version| replace:: .*/.. |version| replace:: $ESP_ARDUINO_VERSION/g" | \ +sed "s/.. |version| replace:: .*/.. |version| replace:: $ESP_ARDUINO_VERSION_CLEAN/g" | \ sed "s/.. |idf_version| replace:: .*/.. |idf_version| replace:: $ESP_IDF_VERSION/g" > docs/__conf_common.py && mv docs/__conf_common.py docs/conf_common.py echo "Updating .gitlab/workflows/common.yml..." cat .gitlab/workflows/common.yml | \ sed "s/ESP_IDF_VERSION:.*/ESP_IDF_VERSION: \"$ESP_IDF_VERSION\"/g" | \ -sed "s/ESP_ARDUINO_VERSION:.*/ESP_ARDUINO_VERSION: \"$ESP_ARDUINO_VERSION\"/g" > .gitlab/workflows/__common.yml && mv .gitlab/workflows/__common.yml .gitlab/workflows/common.yml +sed "s/ESP_ARDUINO_VERSION:.*/ESP_ARDUINO_VERSION: \"$ESP_ARDUINO_VERSION_CLEAN\"/g" > .gitlab/workflows/__common.yml && mv .gitlab/workflows/__common.yml .gitlab/workflows/common.yml echo "Updating cores/esp32/esp_arduino_version.h..." cat cores/esp32/esp_arduino_version.h | \ @@ -78,7 +81,7 @@ libraries=$(find libraries -maxdepth 1 -mindepth 1 -type d -exec basename {} \;) for lib in $libraries; do if [ -f "libraries/$lib/library.properties" ]; then echo "Updating Library $lib..." - cat "libraries/$lib/library.properties" | sed "s/version=.*/version=$ESP_ARDUINO_VERSION/g" > "libraries/$lib/__library.properties" && mv "libraries/$lib/__library.properties" "libraries/$lib/library.properties" + cat "libraries/$lib/library.properties" | sed "s/version=.*/version=$ESP_ARDUINO_VERSION_CLEAN/g" > "libraries/$lib/__library.properties" && mv "libraries/$lib/__library.properties" "libraries/$lib/library.properties" fi done diff --git a/.github/workflows/docs_deploy.yml b/.github/workflows/docs_deploy.yml index 0c54d24aaf9..01eb2b773dc 100644 --- a/.github/workflows/docs_deploy.yml +++ b/.github/workflows/docs_deploy.yml @@ -19,6 +19,7 @@ permissions: jobs: deploy-prod-docs: name: Deploy Documentation on Production + if: github.repository == 'espressif/arduino-esp32' runs-on: ubuntu-22.04 defaults: run: From b86c72eada4f9b8b663f8beb74a91e10e024f6e6 Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Fri, 17 Oct 2025 07:20:49 -0300 Subject: [PATCH 05/31] fix(esptool): Fix deprecated esptool commands (#11923) --- boards.txt | 4 ++-- platform.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boards.txt b/boards.txt index 3ed6e80f0b3..39f2d1df7c8 100644 --- a/boards.txt +++ b/boards.txt @@ -42213,8 +42213,8 @@ nano_nora.debug_config.nano_nora.cortex-debug.custom.overrideRestartCommands.1=m nano_nora.debug_config.nano_nora.cortex-debug.custom.overrideRestartCommands.2=interrupt nano_nora.debug.additional_config=debug_config.nano_nora -nano_nora.tools.esptool_py.program.pattern_args=--chip {build.mcu} --port "{serial.port}" --before default_reset --after hard_reset write_flash -z --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size {build.flash_size} {build.bootloader_addr} "{build.path}/{build.project_name}.bootloader.bin" 0x8000 "{build.path}/{build.project_name}.partitions.bin" 0xe000 "{runtime.platform.path}/tools/partitions/boot_app0.bin" 0xf70000 "{build.variant.path}/extra/nora_recovery/nora_recovery.ino.bin" 0x10000 "{build.path}/{build.project_name}.bin" -nano_nora.tools.esptool_py.erase.pattern_args=--chip {build.mcu} --port "{serial.port}" --before default_reset --after hard_reset erase_flash +nano_nora.tools.esptool_py.program.pattern_args=--chip {build.mcu} --port "{serial.port}" --before default-reset --after hard-reset write-flash -z --flash-mode {build.flash_mode} --flash-freq {build.flash_freq} --flash-size {build.flash_size} {build.bootloader_addr} "{build.path}/{build.project_name}.bootloader.bin" 0x8000 "{build.path}/{build.project_name}.partitions.bin" 0xe000 "{runtime.platform.path}/tools/partitions/boot_app0.bin" 0xf70000 "{build.variant.path}/extra/nora_recovery/nora_recovery.ino.bin" 0x10000 "{build.path}/{build.project_name}.bin" +nano_nora.tools.esptool_py.erase.pattern_args=--chip {build.mcu} --port "{serial.port}" --before default-reset --after hard-reset erase-flash nano_nora.debug.executable= diff --git a/platform.txt b/platform.txt index a9258e8d7a5..bdf1ba7e1b8 100644 --- a/platform.txt +++ b/platform.txt @@ -352,6 +352,6 @@ tools.esptool_py_app_only.upload.protocol=serial tools.esptool_py_app_only.upload.params.verbose= tools.esptool_py_app_only.upload.params.quiet= -tools.esptool_py_app_only.upload.pattern_args=--chip {build.mcu} --port "{serial.port}" --baud {upload.speed} {upload.flags} --before default_reset --after hard_reset write_flash --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size {build.flash_size} {build.flash_offset} "{build.path}/{build.project_name}.bin" {upload.extra_flags} +tools.esptool_py_app_only.upload.pattern_args=--chip {build.mcu} --port "{serial.port}" --baud {upload.speed} {upload.flags} --before default-reset --after hard-reset write-flash --flash-mode {build.flash_mode} --flash-freq {build.flash_freq} --flash-size {build.flash_size} {build.flash_offset} "{build.path}/{build.project_name}.bin" {upload.extra_flags} tools.esptool_py_app_only.upload.pattern="{path}/{cmd}" {tools.esptool_py_app_only.upload.pattern_args} From 0236483ad8c5e4d4f92f943f62e05ca6dd73f9af Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Fri, 17 Oct 2025 07:31:25 -0300 Subject: [PATCH 06/31] fix(component): Remove CI files from component (#11924) --- idf_component.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/idf_component.yml b/idf_component.yml index 9cbe8aac52c..7a883f1658a 100644 --- a/idf_component.yml +++ b/idf_component.yml @@ -1,30 +1,33 @@ -description: "Arduino core for ESP32, ESP32-S and ESP32-C series of SoCs" +description: "Arduino core for ESP32, ESP32-C, ESP32-H, ESP32-P, ESP32-S series of SoCs" url: "https://github.com/espressif/arduino-esp32" license: "LGPL-2.1" targets: - esp32 - - esp32s2 - - esp32s3 - esp32c2 - esp32c3 + - esp32c5 - esp32c6 - esp32h2 - esp32p4 - - esp32c5 + - esp32s2 + - esp32s3 tags: - arduino files: include: - "variants/esp32/**/*" - - "variants/esp32s2/**/*" - - "variants/esp32s3/**/*" - "variants/esp32c2/**/*" - "variants/esp32c3/**/*" + - "variants/esp32c5/**/*" - "variants/esp32c6/**/*" - "variants/esp32h2/**/*" - "variants/esp32p4/**/*" - - "variants/esp32c5/**/*" + - "variants/esp32s2/**/*" + - "variants/esp32s3/**/*" exclude: + - ".*" # All files in the root directory that start with a dot. + - ".gitlab/" + - ".gitlab/**/*" - "docs/" - "docs/**/*" - "idf_component_examples/" @@ -36,9 +39,6 @@ files: - "tools/" - "tools/**/*" - "variants/**/*" - - ".gitignore" - - ".gitmodules" - - ".readthedocs.yaml" - "boards.txt" - "CODE_OF_CONDUCT.md" - "LICENSE.md" From 298e40c765588c5269e224d0fef86806287e8ae1 Mon Sep 17 00:00:00 2001 From: Krzysztof Strehlau Date: Fri, 17 Oct 2025 19:31:51 +0200 Subject: [PATCH 07/31] fix: silence multiple warnings pointed in issue #11917 (#11920) * fix: silence warnings pointed in issue #11917, minor performance fixes * Remove deprecated flush() comment in WebServer.cpp Removed deprecated flush() comment and updated code. * fix: replace clear() with flush() on chunkedClient * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: Me No Dev Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- libraries/AsyncUDP/src/AsyncUDP.cpp | 1 + libraries/DNSServer/src/DNSServer.cpp | 2 +- libraries/Ethernet/src/ETH.cpp | 5 ++++- libraries/Hash/src/PBKDF2_HMACBuilder.cpp | 2 ++ libraries/LittleFS/src/LittleFS.cpp | 1 + libraries/Network/src/NetworkInterface.cpp | 1 + libraries/NetworkClientSecure/src/ssl_client.cpp | 13 +++++++------ libraries/Update/src/Updater.cpp | 2 ++ libraries/WebServer/src/Parsing.cpp | 14 +++++++------- libraries/WebServer/src/WebServer.cpp | 2 ++ .../WebServer/src/detail/RequestHandlersImpl.h | 3 +++ libraries/WebServer/src/middleware/Middleware.h | 1 + libraries/WiFi/src/WiFiGeneric.cpp | 1 + 13 files changed, 33 insertions(+), 15 deletions(-) diff --git a/libraries/AsyncUDP/src/AsyncUDP.cpp b/libraries/AsyncUDP/src/AsyncUDP.cpp index decd35106ec..91b024999b1 100644 --- a/libraries/AsyncUDP/src/AsyncUDP.cpp +++ b/libraries/AsyncUDP/src/AsyncUDP.cpp @@ -164,6 +164,7 @@ static QueueHandle_t _udp_queue; static volatile TaskHandle_t _udp_task_handle = NULL; static void _udp_task(void *pvParameters) { + (void)pvParameters; lwip_event_packet_t *e = NULL; for (;;) { if (xQueueReceive(_udp_queue, &e, portMAX_DELAY) == pdTRUE) { diff --git a/libraries/DNSServer/src/DNSServer.cpp b/libraries/DNSServer/src/DNSServer.cpp index 1f74c96c733..795e735b4fa 100644 --- a/libraries/DNSServer/src/DNSServer.cpp +++ b/libraries/DNSServer/src/DNSServer.cpp @@ -132,7 +132,7 @@ bool DNSServer::requestIncludesOnlyOneQuestion(DNSHeader &dnsHeader) { String DNSServer::getDomainNameWithoutWwwPrefix(const unsigned char *start, size_t len) { String parsedDomainName(start, --len); // exclude trailing null byte from labels length, String constructor will add it anyway - int pos = 0; + size_t pos = 0; while (pos < len) { parsedDomainName.setCharAt(pos, 0x2e); // replace label len byte with dot char "." pos += *(start + pos); diff --git a/libraries/Ethernet/src/ETH.cpp b/libraries/Ethernet/src/ETH.cpp index 7d808c620d8..17b5da6d515 100644 --- a/libraries/Ethernet/src/ETH.cpp +++ b/libraries/Ethernet/src/ETH.cpp @@ -53,7 +53,7 @@ static ETHClass *_ethernets[NUM_SUPPORTED_ETH_PORTS] = {NULL, NULL, NULL}; static esp_event_handler_instance_t _eth_ev_instance = NULL; static void _eth_event_cb(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { - + (void)arg; if (event_base == ETH_EVENT) { esp_eth_handle_t eth_handle = *((esp_eth_handle_t *)event_data); for (int i = 0; i < NUM_SUPPORTED_ETH_PORTS; ++i) { @@ -146,6 +146,9 @@ ETHClass::ETHClass(uint8_t eth_index) ETHClass::~ETHClass() {} bool ETHClass::ethDetachBus(void *bus_pointer) { + if (!bus_pointer) { + return true; + } ETHClass *bus = (ETHClass *)bus_pointer; bus->end(); return true; diff --git a/libraries/Hash/src/PBKDF2_HMACBuilder.cpp b/libraries/Hash/src/PBKDF2_HMACBuilder.cpp index 125d4bcb061..ec06bc642e5 100644 --- a/libraries/Hash/src/PBKDF2_HMACBuilder.cpp +++ b/libraries/Hash/src/PBKDF2_HMACBuilder.cpp @@ -111,6 +111,8 @@ void PBKDF2_HMACBuilder::add(const uint8_t *data, size_t len) { bool PBKDF2_HMACBuilder::addStream(Stream &stream, const size_t maxLen) { log_e("PBKDF2_HMACBuilder does not support addStream. Use setPassword() and setSalt() instead."); + (void)stream; + (void)maxLen; return false; } diff --git a/libraries/LittleFS/src/LittleFS.cpp b/libraries/LittleFS/src/LittleFS.cpp index 761d1ba4c24..c59520aa7a5 100644 --- a/libraries/LittleFS/src/LittleFS.cpp +++ b/libraries/LittleFS/src/LittleFS.cpp @@ -44,6 +44,7 @@ LittleFSFS::~LittleFSFS() { } bool LittleFSFS::begin(bool formatOnFail, const char *basePath, uint8_t maxOpenFiles, const char *partitionLabel) { + (void)maxOpenFiles; if (partitionLabel_) { free(partitionLabel_); diff --git a/libraries/Network/src/NetworkInterface.cpp b/libraries/Network/src/NetworkInterface.cpp index 06cf2a377b0..969ec77b907 100644 --- a/libraries/Network/src/NetworkInterface.cpp +++ b/libraries/Network/src/NetworkInterface.cpp @@ -47,6 +47,7 @@ extern "C" int lwip_hook_ip6_input(struct pbuf *p, struct netif *inp) { #endif static void _ip_event_cb(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { + (void)arg; if (event_base == IP_EVENT) { NetworkInterface *netif = NULL; if (event_id == IP_EVENT_STA_GOT_IP || event_id == IP_EVENT_ETH_GOT_IP || event_id == IP_EVENT_PPP_GOT_IP) { diff --git a/libraries/NetworkClientSecure/src/ssl_client.cpp b/libraries/NetworkClientSecure/src/ssl_client.cpp index f70aefec034..71cfa93b5c0 100644 --- a/libraries/NetworkClientSecure/src/ssl_client.cpp +++ b/libraries/NetworkClientSecure/src/ssl_client.cpp @@ -223,9 +223,10 @@ int start_ssl_client( log_e("pre-shared key not valid hex or too long"); return -1; } - unsigned char psk[MBEDTLS_PSK_MAX_LEN]; - size_t psk_len = strlen(psKey) / 2; - for (int j = 0; j < strlen(psKey); j += 2) { + unsigned char pskBytes[MBEDTLS_PSK_MAX_LEN]; + size_t pskStrLen = strlen(psKey); + size_t pskByteLen = pskStrLen / 2; + for (int j = 0; j < pskStrLen; j += 2) { char c = psKey[j]; if (c >= '0' && c <= '9') { c -= '0'; @@ -236,7 +237,7 @@ int start_ssl_client( } else { return -1; } - psk[j / 2] = c << 4; + pskBytes[j / 2] = c << 4; c = psKey[j + 1]; if (c >= '0' && c <= '9') { c -= '0'; @@ -247,10 +248,10 @@ int start_ssl_client( } else { return -1; } - psk[j / 2] |= c; + pskBytes[j / 2] |= c; } // set mbedtls config - ret = mbedtls_ssl_conf_psk(&ssl_client->ssl_conf, psk, psk_len, (const unsigned char *)pskIdent, strlen(pskIdent)); + ret = mbedtls_ssl_conf_psk(&ssl_client->ssl_conf, pskBytes, pskByteLen, (const unsigned char *)pskIdent, strlen(pskIdent)); if (ret != 0) { log_e("mbedtls_ssl_conf_psk returned %d", ret); return handle_error(ret); diff --git a/libraries/Update/src/Updater.cpp b/libraries/Update/src/Updater.cpp index e9f39f729d3..3d3569f019e 100644 --- a/libraries/Update/src/Updater.cpp +++ b/libraries/Update/src/Updater.cpp @@ -128,6 +128,8 @@ bool UpdateClass::rollBack() { } bool UpdateClass::begin(size_t size, int command, int ledPin, uint8_t ledOn, const char *label) { + (void)label; + if (_size > 0) { log_w("already running"); return false; diff --git a/libraries/WebServer/src/Parsing.cpp b/libraries/WebServer/src/Parsing.cpp index 3030317eeea..df8051022ff 100644 --- a/libraries/WebServer/src/Parsing.cpp +++ b/libraries/WebServer/src/Parsing.cpp @@ -189,8 +189,8 @@ bool WebServer::_parseRequest(NetworkClient &client) { _currentHandler->raw(*this, _currentUri, *_currentRaw); _currentRaw->status = RAW_WRITE; - while (_currentRaw->totalSize < _clientContentLength) { - size_t read_len = std::min(_clientContentLength - _currentRaw->totalSize, (size_t)HTTP_RAW_BUFLEN); + while (_currentRaw->totalSize < (size_t)_clientContentLength) { + size_t read_len = std::min((size_t)_clientContentLength - _currentRaw->totalSize, (size_t)HTTP_RAW_BUFLEN); _currentRaw->currentSize = client.readBytes(_currentRaw->buf, read_len); _currentRaw->totalSize += _currentRaw->currentSize; if (_currentRaw->currentSize == 0) { @@ -206,7 +206,7 @@ bool WebServer::_parseRequest(NetworkClient &client) { } else if (!isForm) { size_t plainLength; char *plainBuf = readBytesWithTimeout(client, _clientContentLength, plainLength, HTTP_MAX_POST_WAIT); - if (plainLength < _clientContentLength) { + if (plainLength < (size_t)_clientContentLength) { free(plainBuf); return false; } @@ -407,7 +407,7 @@ int WebServer::_uploadReadByte(NetworkClient &client) { bool WebServer::_parseForm(NetworkClient &client, const String &boundary, uint32_t len) { (void)len; - log_v("Parse Form: Boundary: %s Length: %d", boundary.c_str(), len); + log_v("Parse Form: Boundary: %s Length: %u", boundary.c_str(), len); String line; int retry = 0; do { @@ -432,7 +432,7 @@ bool WebServer::_parseForm(NetworkClient &client, const String &boundary, uint32 line = client.readStringUntil('\r'); client.readStringUntil('\n'); - if (line.length() > 19 && line.substring(0, 19).equalsIgnoreCase(F("Content-Disposition"))) { + if (line.length() > (size_t)19 && line.substring(0, 19).equalsIgnoreCase(F("Content-Disposition"))) { int nameStart = line.indexOf('='); if (nameStart != -1) { argName = line.substring(nameStart + 2); @@ -455,7 +455,7 @@ bool WebServer::_parseForm(NetworkClient &client, const String &boundary, uint32 line = client.readStringUntil('\r'); client.readStringUntil('\n'); while (line.length() > 0) { - if (line.length() > 12 && line.substring(0, 12).equalsIgnoreCase(FPSTR(Content_Type))) { + if (line.length() > (size_t)12 && line.substring(0, 12).equalsIgnoreCase(FPSTR(Content_Type))) { argType = line.substring(line.indexOf(':') + 2); } //skip over any other headers @@ -470,7 +470,7 @@ bool WebServer::_parseForm(NetworkClient &client, const String &boundary, uint32 if (line.startsWith("--" + boundary)) { break; } - if (argValue.length() > 0) { + if (argValue.length() > (size_t)0) { argValue += "\n"; } argValue += line; diff --git a/libraries/WebServer/src/WebServer.cpp b/libraries/WebServer/src/WebServer.cpp index e67fcec05e4..bc0467a122e 100644 --- a/libraries/WebServer/src/WebServer.cpp +++ b/libraries/WebServer/src/WebServer.cpp @@ -143,6 +143,8 @@ bool WebServer::authenticateBasicSHA1(const char *_username, const char *_sha1Ba bool WebServer::authenticate(const char *_username, const char *_password) { return WebServer::authenticate([_username, _password](HTTPAuthMethod mode, String username, String params[]) -> String * { + (void)mode; + (void)params; return username.equalsConstantTime(_username) ? new String(_password) : NULL; }); } diff --git a/libraries/WebServer/src/detail/RequestHandlersImpl.h b/libraries/WebServer/src/detail/RequestHandlersImpl.h index 3750b594ab2..b77ebd0c90e 100644 --- a/libraries/WebServer/src/detail/RequestHandlersImpl.h +++ b/libraries/WebServer/src/detail/RequestHandlersImpl.h @@ -36,6 +36,7 @@ RequestHandler &RequestHandler::removeMiddleware(Middleware *middleware) { bool RequestHandler::process(WebServer &server, HTTPMethod requestMethod, String requestUri) { if (_chain) { return _chain->runChain(server, [this, &server, &requestMethod, &requestUri]() { + (void)requestUri; return handle(server, requestMethod, requestUri); }); } else { @@ -71,6 +72,7 @@ class FunctionRequestHandler : public RequestHandler { } bool canRaw(const String &requestUri) override { + (void)requestUri; if (!_ufn || _method == HTTP_GET) { return false; } @@ -95,6 +97,7 @@ class FunctionRequestHandler : public RequestHandler { } bool canRaw(WebServer &server, const String &requestUri) override { + (void)requestUri; if (!_ufn || _method == HTTP_GET || (_filter != NULL ? _filter(server) == false : false)) { return false; } diff --git a/libraries/WebServer/src/middleware/Middleware.h b/libraries/WebServer/src/middleware/Middleware.h index 080f5be0aba..01d84a02e34 100644 --- a/libraries/WebServer/src/middleware/Middleware.h +++ b/libraries/WebServer/src/middleware/Middleware.h @@ -15,6 +15,7 @@ class Middleware { virtual ~Middleware() {} virtual bool run(WebServer &server, Callback next) { + (void)server; return next(); }; diff --git a/libraries/WiFi/src/WiFiGeneric.cpp b/libraries/WiFi/src/WiFiGeneric.cpp index 599402250dd..0de8430f3be 100644 --- a/libraries/WiFi/src/WiFiGeneric.cpp +++ b/libraries/WiFi/src/WiFiGeneric.cpp @@ -68,6 +68,7 @@ esp_netif_t *get_esp_interface_netif(esp_interface_t interface) { } static void _arduino_event_cb(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { + (void)arg; arduino_event_t arduino_event; arduino_event.event_id = ARDUINO_EVENT_MAX; From 9432a205098b8563286d33239396d381d37cc92f Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Fri, 17 Oct 2025 20:32:17 +0300 Subject: [PATCH 08/31] fix(spiffs): Adjust log level during SPIFFS formatting (#11929) Set log level to none during formatting and restore afterwards. Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> --- libraries/SPIFFS/src/SPIFFS.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/SPIFFS/src/SPIFFS.cpp b/libraries/SPIFFS/src/SPIFFS.cpp index 0b2cc0d462d..9bb8ff15664 100644 --- a/libraries/SPIFFS/src/SPIFFS.cpp +++ b/libraries/SPIFFS/src/SPIFFS.cpp @@ -91,11 +91,13 @@ void SPIFFSFS::end() { } bool SPIFFSFS::format() { + esp_log_level_set("*", ESP_LOG_NONE); bool wdt_active = disableCore0WDT(); esp_err_t err = esp_spiffs_format(partitionLabel_); if (wdt_active) { enableCore0WDT(); } + esp_log_level_set("*", (esp_log_level_t)CONFIG_LOG_DEFAULT_LEVEL); if (err) { log_e("Formatting SPIFFS failed! Error: %d", err); return false; From 8db8b55982bd637ba06996da429f954a13ac95f7 Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Fri, 17 Oct 2025 14:39:12 -0300 Subject: [PATCH 09/31] change(ci): Overhaul CI test flow management (#11925) * change(ci): Overhaul CI test flow management * fix(docs): Apply suggestions --- .github/CODEOWNERS | 4 +- .github/scripts/generate_missing_junits.py | 330 ++++++++++++++++++ .github/scripts/get_affected.py | 6 +- .github/scripts/on-push-idf.sh | 4 +- .github/scripts/runtime_table_generator.py | 181 ++++++++++ .github/scripts/sketch_utils.sh | 65 ++-- .github/scripts/tests_matrix.sh | 50 ++- .github/scripts/tests_run.sh | 20 +- .github/workflows/build_component.yml | 8 + .github/workflows/push.yml | 11 +- .github/workflows/tests.yml | 16 +- .github/workflows/tests_build.yml | 3 + .github/workflows/tests_hw_wokwi.yml | 142 +++++--- .github/workflows/tests_results.yml | 146 +++++--- .gitlab/scripts/gen_hw_jobs.py | 263 ++++++++++++-- .gitlab/scripts/install_dependencies.sh | 32 ++ .gitlab/workflows/hardware_tests_dynamic.yml | 6 +- .gitlab/workflows/hw_test_template.yml | 3 +- docs/en/contributing.rst | 80 ++--- .../esp_matter_light/ci.json | 11 - .../esp_matter_light/ci.yml | 8 + .../hw_cdc_hello_world/ci.json | 5 - .../hw_cdc_hello_world/ci.yml | 2 + .../ArduinoOTA/examples/BasicOTA/ci.json | 6 - libraries/ArduinoOTA/examples/BasicOTA/ci.yml | 3 + .../AsyncUDP/examples/AsyncUDPClient/ci.json | 6 - .../AsyncUDP/examples/AsyncUDPClient/ci.yml | 3 + .../examples/AsyncUDPMulticastServer/ci.json | 6 - .../examples/AsyncUDPMulticastServer/ci.yml | 3 + .../AsyncUDP/examples/AsyncUDPServer/ci.json | 6 - .../AsyncUDP/examples/AsyncUDPServer/ci.yml | 3 + .../BLE/examples/BLE5_extended_scan/ci.json | 7 - .../BLE/examples/BLE5_extended_scan/ci.yml | 5 + .../examples/BLE5_multi_advertising/ci.json | 7 - .../examples/BLE5_multi_advertising/ci.yml | 5 + .../BLE5_periodic_advertising/ci.json | 7 - .../examples/BLE5_periodic_advertising/ci.yml | 5 + .../BLE/examples/BLE5_periodic_sync/ci.json | 7 - .../BLE/examples/BLE5_periodic_sync/ci.yml | 5 + libraries/BLE/examples/Beacon_Scanner/ci.json | 7 - libraries/BLE/examples/Beacon_Scanner/ci.yml | 5 + libraries/BLE/examples/Client/ci.json | 7 - libraries/BLE/examples/Client/ci.yml | 5 + .../Client_secure_static_passkey/ci.json | 7 - .../Client_secure_static_passkey/ci.yml | 5 + .../BLE/examples/EddystoneTLM_Beacon/ci.json | 7 - .../BLE/examples/EddystoneTLM_Beacon/ci.yml | 5 + .../BLE/examples/EddystoneURL_Beacon/ci.json | 7 - .../BLE/examples/EddystoneURL_Beacon/ci.yml | 5 + libraries/BLE/examples/Notify/ci.json | 7 - libraries/BLE/examples/Notify/ci.yml | 5 + libraries/BLE/examples/Scan/ci.json | 7 - libraries/BLE/examples/Scan/ci.yml | 5 + libraries/BLE/examples/Server/ci.json | 7 - libraries/BLE/examples/Server/ci.yml | 5 + .../BLE/examples/Server_multiconnect/ci.json | 7 - .../BLE/examples/Server_multiconnect/ci.yml | 5 + .../Server_secure_authorization/ci.json | 9 - .../Server_secure_authorization/ci.yml | 7 + .../Server_secure_static_passkey/ci.json | 7 - .../Server_secure_static_passkey/ci.yml | 5 + libraries/BLE/examples/UART/ci.json | 7 - libraries/BLE/examples/UART/ci.yml | 5 + libraries/BLE/examples/Write/ci.json | 7 - libraries/BLE/examples/Write/ci.yml | 5 + libraries/BLE/examples/iBeacon/ci.json | 7 - libraries/BLE/examples/iBeacon/ci.yml | 5 + .../examples/DiscoverConnect/ci.json | 6 - .../examples/DiscoverConnect/ci.yml | 4 + .../examples/GetLocalMAC/ci.json | 6 - .../examples/GetLocalMAC/ci.yml | 4 + .../examples/SerialToSerialBT/ci.json | 6 - .../examples/SerialToSerialBT/ci.yml | 4 + .../examples/SerialToSerialBTM/ci.json | 6 - .../examples/SerialToSerialBTM/ci.yml | 4 + .../examples/SerialToSerialBT_Legacy/ci.json | 6 - .../examples/SerialToSerialBT_Legacy/ci.yml | 4 + .../examples/SerialToSerialBT_SSP/ci.json | 6 - .../examples/SerialToSerialBT_SSP/ci.yml | 4 + .../bt_classic_device_discovery/ci.json | 6 - .../bt_classic_device_discovery/ci.yml | 4 + .../examples/bt_remove_paired_devices/ci.json | 6 - .../examples/bt_remove_paired_devices/ci.yml | 4 + .../DNSServer/examples/CaptivePortal/ci.json | 6 - .../DNSServer/examples/CaptivePortal/ci.yml | 3 + .../examples/AnalogOut/LEDCGammaFade/ci.json | 5 - .../examples/AnalogOut/LEDCGammaFade/ci.yml | 2 + .../examples/Camera/CameraWebServer/ci.json | 20 -- .../examples/Camera/CameraWebServer/ci.yml | 14 + .../examples/DeepSleep/ExternalWakeUp/ci.json | 9 - .../examples/DeepSleep/ExternalWakeUp/ci.yml | 6 + .../DeepSleep/SmoothBlink_ULP_Code/ci.json | 11 - .../DeepSleep/SmoothBlink_ULP_Code/ci.yml | 8 + .../examples/DeepSleep/TimerWakeUp/ci.json | 5 - .../examples/DeepSleep/TimerWakeUp/ci.yml | 2 + .../examples/DeepSleep/TouchWakeUp/ci.json | 8 - .../examples/DeepSleep/TouchWakeUp/ci.yml | 5 + libraries/ESP32/examples/HWCDC_Events/ci.json | 10 - libraries/ESP32/examples/HWCDC_Events/ci.yml | 6 + .../ESP32/examples/TWAI/TWAIreceive/ci.json | 5 - .../ESP32/examples/TWAI/TWAIreceive/ci.yml | 2 + .../ESP32/examples/TWAI/TWAItransmit/ci.json | 5 - .../ESP32/examples/TWAI/TWAItransmit/ci.yml | 2 + .../ESP32/examples/Time/SimpleTime/ci.json | 6 - .../ESP32/examples/Time/SimpleTime/ci.yml | 3 + .../ESP32/examples/Touch/TouchButton/ci.json | 5 - .../ESP32/examples/Touch/TouchButton/ci.yml | 2 + .../examples/Touch/TouchInterrupt/ci.json | 5 - .../examples/Touch/TouchInterrupt/ci.yml | 2 + .../ESP32/examples/Touch/TouchRead/ci.json | 5 - .../ESP32/examples/Touch/TouchRead/ci.yml | 2 + .../ESP_I2S/examples/ES8388_loopback/ci.json | 6 - .../ESP_I2S/examples/ES8388_loopback/ci.yml | 3 + .../ESP_I2S/examples/Record_to_WAV/ci.json | 6 - .../ESP_I2S/examples/Record_to_WAV/ci.yml | 3 + .../ESP_I2S/examples/Simple_tone/ci.json | 5 - libraries/ESP_I2S/examples/Simple_tone/ci.yml | 2 + .../examples/ESP_NOW_Broadcast_Master/ci.json | 5 - .../examples/ESP_NOW_Broadcast_Master/ci.yml | 2 + .../examples/ESP_NOW_Broadcast_Slave/ci.json | 5 - .../examples/ESP_NOW_Broadcast_Slave/ci.yml | 2 + .../ESP_NOW/examples/ESP_NOW_Network/ci.json | 5 - .../ESP_NOW/examples/ESP_NOW_Network/ci.yml | 2 + .../ESP_NOW/examples/ESP_NOW_Serial/ci.json | 5 - .../ESP_NOW/examples/ESP_NOW_Serial/ci.yml | 2 + libraries/ESP_SR/examples/Basic/ci.json | 21 -- libraries/ESP_SR/examples/Basic/ci.yml | 16 + .../ESPmDNS/examples/mDNS-SD_Extended/ci.json | 6 - .../ESPmDNS/examples/mDNS-SD_Extended/ci.yml | 3 + .../ESPmDNS/examples/mDNS_Web_Server/ci.json | 6 - .../ESPmDNS/examples/mDNS_Web_Server/ci.yml | 3 + .../Ethernet/examples/ETH_LAN8720/ci.json | 8 - .../Ethernet/examples/ETH_LAN8720/ci.yml | 5 + .../Ethernet/examples/ETH_TLK110/ci.json | 5 - libraries/Ethernet/examples/ETH_TLK110/ci.yml | 2 + .../Ethernet/examples/ETH_WIFI_BRIDGE/ci.json | 6 - .../Ethernet/examples/ETH_WIFI_BRIDGE/ci.yml | 3 + libraries/FFat/examples/FFat_time/ci.json | 6 - libraries/FFat/examples/FFat_time/ci.yml | 3 + .../HTTPClient/examples/Authorization/ci.json | 6 - .../HTTPClient/examples/Authorization/ci.yml | 3 + .../examples/BasicHttpClient/ci.json | 6 - .../examples/BasicHttpClient/ci.yml | 3 + .../examples/BasicHttpsClient/ci.json | 6 - .../examples/BasicHttpsClient/ci.yml | 3 + .../HTTPClient/examples/CustomHeaders/ci.json | 6 - .../HTTPClient/examples/CustomHeaders/ci.yml | 3 + .../examples/HTTPClientEnterprise/ci.json | 6 - .../examples/HTTPClientEnterprise/ci.yml | 4 + .../examples/ReuseConnection/ci.json | 6 - .../examples/ReuseConnection/ci.yml | 3 + .../examples/StreamHttpClient/ci.json | 6 - .../examples/StreamHttpClient/ci.yml | 3 + .../HTTPUpdate/examples/httpUpdate/ci.json | 6 - .../HTTPUpdate/examples/httpUpdate/ci.yml | 3 + .../examples/httpUpdateSPIFFS/ci.json | 6 - .../examples/httpUpdateSPIFFS/ci.yml | 3 + .../examples/httpUpdateSecure/ci.json | 7 - .../examples/httpUpdateSecure/ci.yml | 5 + .../examples/WebUpdater/ci.json | 6 - .../examples/WebUpdater/ci.yml | 3 + .../examples/DiagnosticsSmokeTest/ci.json | 9 - .../examples/DiagnosticsSmokeTest/ci.yml | 6 + .../examples/MinimalDiagnostics/ci.json | 9 - .../examples/MinimalDiagnostics/ci.yml | 6 + .../LittleFS/examples/LITTLEFS_time/ci.json | 6 - .../LittleFS/examples/LITTLEFS_time/ci.yml | 3 + .../Matter/examples/MatterColorLight/ci.json | 6 - .../Matter/examples/MatterColorLight/ci.yml | 4 + .../examples/MatterCommissionTest/ci.json | 6 - .../examples/MatterCommissionTest/ci.yml | 4 + .../examples/MatterComposedLights/ci.json | 6 - .../examples/MatterComposedLights/ci.yml | 4 + .../examples/MatterContactSensor/ci.json | 6 - .../examples/MatterContactSensor/ci.yml | 4 + .../examples/MatterDimmableLight/ci.json | 6 - .../examples/MatterDimmableLight/ci.yml | 4 + .../examples/MatterEnhancedColorLight/ci.json | 6 - .../examples/MatterEnhancedColorLight/ci.yml | 4 + .../Matter/examples/MatterEvents/ci.json | 6 - libraries/Matter/examples/MatterEvents/ci.yml | 4 + libraries/Matter/examples/MatterFan/ci.json | 6 - libraries/Matter/examples/MatterFan/ci.yml | 4 + .../examples/MatterHumiditySensor/ci.json | 6 - .../examples/MatterHumiditySensor/ci.yml | 4 + .../MatterLambdaSingleCallbackManyEPs/ci.json | 6 - .../MatterLambdaSingleCallbackManyEPs/ci.yml | 4 + .../Matter/examples/MatterMinimum/ci.json | 6 - .../Matter/examples/MatterMinimum/ci.yml | 4 + .../examples/MatterOccupancySensor/ci.json | 6 - .../examples/MatterOccupancySensor/ci.yml | 4 + .../Matter/examples/MatterOnIdentify/ci.json | 6 - .../Matter/examples/MatterOnIdentify/ci.yml | 4 + .../Matter/examples/MatterOnOffLight/ci.json | 6 - .../Matter/examples/MatterOnOffLight/ci.yml | 4 + .../Matter/examples/MatterOnOffPlugin/ci.json | 6 - .../Matter/examples/MatterOnOffPlugin/ci.yml | 4 + .../examples/MatterPressureSensor/ci.json | 6 - .../examples/MatterPressureSensor/ci.yml | 4 + .../Matter/examples/MatterSmartButon/ci.json | 6 - .../Matter/examples/MatterSmartButon/ci.yml | 4 + .../examples/MatterTemperatureLight/ci.json | 6 - .../examples/MatterTemperatureLight/ci.yml | 4 + .../examples/MatterTemperatureSensor/ci.json | 6 - .../examples/MatterTemperatureSensor/ci.yml | 4 + .../Matter/examples/MatterThermostat/ci.json | 6 - .../Matter/examples/MatterThermostat/ci.yml | 4 + libraries/NetBIOS/examples/ESP_NBNST/ci.json | 6 - libraries/NetBIOS/examples/ESP_NBNST/ci.yml | 3 + .../examples/WiFiClientInsecure/ci.json | 6 - .../examples/WiFiClientInsecure/ci.yml | 3 + .../examples/WiFiClientPSK/ci.json | 6 - .../examples/WiFiClientPSK/ci.yml | 3 + .../examples/WiFiClientSecure/ci.json | 7 - .../examples/WiFiClientSecure/ci.yml | 5 + .../WiFiClientSecureEnterprise/ci.json | 6 - .../WiFiClientSecureEnterprise/ci.yml | 4 + .../WiFiClientSecureProtocolUpgrade/ci.json | 6 - .../WiFiClientSecureProtocolUpgrade/ci.yml | 3 + .../WiFiClientShowPeerCredentials/ci.json | 6 - .../WiFiClientShowPeerCredentials/ci.yml | 3 + .../WiFiClientTrustOnFirstUse/ci.json | 6 - .../examples/WiFiClientTrustOnFirstUse/ci.yml | 3 + .../examples/CLI/COAP/coap_lamp/ci.json | 6 - .../examples/CLI/COAP/coap_lamp/ci.yml | 3 + .../examples/CLI/COAP/coap_switch/ci.json | 6 - .../examples/CLI/COAP/coap_switch/ci.yml | 3 + .../OpenThread/examples/CLI/SimpleCLI/ci.json | 6 - .../OpenThread/examples/CLI/SimpleCLI/ci.yml | 3 + .../examples/CLI/SimpleNode/ci.json | 6 - .../OpenThread/examples/CLI/SimpleNode/ci.yml | 3 + .../ExtendedRouterNode/ci.json | 6 - .../ExtendedRouterNode/ci.yml | 3 + .../SimpleThreadNetwork/LeaderNode/ci.json | 6 - .../CLI/SimpleThreadNetwork/LeaderNode/ci.yml | 3 + .../SimpleThreadNetwork/RouterNode/ci.json | 6 - .../CLI/SimpleThreadNetwork/RouterNode/ci.yml | 3 + .../examples/CLI/ThreadScan/ci.json | 6 - .../OpenThread/examples/CLI/ThreadScan/ci.yml | 3 + .../OpenThread/examples/CLI/onReceive/ci.json | 6 - .../OpenThread/examples/CLI/onReceive/ci.yml | 3 + .../SimpleThreadNetwork/LeaderNode/ci.json | 6 - .../SimpleThreadNetwork/LeaderNode/ci.yml | 3 + .../SimpleThreadNetwork/RouterNode/ci.json | 6 - .../SimpleThreadNetwork/RouterNode/ci.yml | 3 + libraries/PPP/examples/PPP_Basic/ci.json | 5 - libraries/PPP/examples/PPP_Basic/ci.yml | 2 + .../PPP/examples/PPP_WIFI_BRIDGE/ci.json | 9 - libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.yml | 6 + .../RainMaker/examples/RMakerCustom/ci.json | 13 - .../RainMaker/examples/RMakerCustom/ci.yml | 11 + .../examples/RMakerCustomAirCooler/ci.json | 13 - .../examples/RMakerCustomAirCooler/ci.yml | 11 + .../examples/RMakerSonoffDualR3/ci.json | 13 - .../examples/RMakerSonoffDualR3/ci.yml | 11 + .../RainMaker/examples/RMakerSwitch/ci.json | 13 - .../RainMaker/examples/RMakerSwitch/ci.yml | 11 + libraries/SD/examples/SD_time/ci.json | 6 - libraries/SD/examples/SD_time/ci.yml | 3 + libraries/SD_MMC/examples/SD2USBMSC/ci.json | 6 - libraries/SD_MMC/examples/SD2USBMSC/ci.yml | 3 + libraries/SD_MMC/examples/SDMMC_Test/ci.json | 5 - libraries/SD_MMC/examples/SDMMC_Test/ci.yml | 2 + libraries/SD_MMC/examples/SDMMC_time/ci.json | 9 - libraries/SD_MMC/examples/SDMMC_time/ci.yml | 6 + .../SPI/examples/SPI_Multiple_Buses/ci.json | 5 - .../SPI/examples/SPI_Multiple_Buses/ci.yml | 2 + libraries/SPIFFS/examples/SPIFFS_time/ci.json | 6 - libraries/SPIFFS/examples/SPIFFS_time/ci.yml | 3 + .../examples/SimpleBleDevice/ci.json | 7 - .../SimpleBLE/examples/SimpleBleDevice/ci.yml | 4 + .../USB/examples/CompositeDevice/ci.json | 5 - libraries/USB/examples/CompositeDevice/ci.yml | 2 + .../USB/examples/ConsumerControl/ci.json | 5 - libraries/USB/examples/ConsumerControl/ci.yml | 2 + .../USB/examples/CustomHIDDevice/ci.json | 5 - libraries/USB/examples/CustomHIDDevice/ci.yml | 2 + libraries/USB/examples/FirmwareMSC/ci.json | 5 - libraries/USB/examples/FirmwareMSC/ci.yml | 2 + libraries/USB/examples/Gamepad/ci.json | 5 - libraries/USB/examples/Gamepad/ci.yml | 2 + libraries/USB/examples/HIDVendor/ci.json | 5 - libraries/USB/examples/HIDVendor/ci.yml | 2 + .../examples/Keyboard/KeyboardLogout/ci.json | 5 - .../examples/Keyboard/KeyboardLogout/ci.yml | 2 + .../examples/Keyboard/KeyboardMessage/ci.json | 5 - .../examples/Keyboard/KeyboardMessage/ci.yml | 2 + .../Keyboard/KeyboardReprogram/ci.json | 5 - .../Keyboard/KeyboardReprogram/ci.yml | 2 + .../examples/Keyboard/KeyboardSerial/ci.json | 5 - .../examples/Keyboard/KeyboardSerial/ci.yml | 2 + .../examples/KeyboardAndMouseControl/ci.json | 5 - .../examples/KeyboardAndMouseControl/ci.yml | 2 + .../USB/examples/MIDI/MidiController/ci.json | 5 - .../USB/examples/MIDI/MidiController/ci.yml | 2 + .../USB/examples/MIDI/MidiInterface/ci.json | 5 - .../USB/examples/MIDI/MidiInterface/ci.yml | 2 + .../USB/examples/MIDI/MidiMusicBox/ci.json | 5 - .../USB/examples/MIDI/MidiMusicBox/ci.yml | 2 + .../USB/examples/MIDI/ReceiveMidi/ci.json | 5 - .../USB/examples/MIDI/ReceiveMidi/ci.yml | 2 + .../examples/Mouse/ButtonMouseControl/ci.json | 5 - .../examples/Mouse/ButtonMouseControl/ci.yml | 2 + libraries/USB/examples/SystemControl/ci.json | 5 - libraries/USB/examples/SystemControl/ci.yml | 2 + libraries/USB/examples/USBMSC/ci.json | 5 - libraries/USB/examples/USBMSC/ci.yml | 2 + libraries/USB/examples/USBSerial/ci.json | 5 - libraries/USB/examples/USBSerial/ci.yml | 2 + libraries/USB/examples/USBVendor/ci.json | 5 - libraries/USB/examples/USBVendor/ci.yml | 2 + .../Update/examples/AWS_S3_OTA_Update/ci.json | 6 - .../Update/examples/AWS_S3_OTA_Update/ci.yml | 3 + .../Update/examples/HTTPS_OTA_Update/ci.json | 6 - .../Update/examples/HTTPS_OTA_Update/ci.yml | 3 + .../HTTP_Client_AES_OTA_Update/ci.json | 6 - .../HTTP_Client_AES_OTA_Update/ci.yml | 3 + .../HTTP_Server_AES_OTA_Update/ci.json | 6 - .../HTTP_Server_AES_OTA_Update/ci.yml | 3 + .../Update/examples/OTAWebUpdater/ci.json | 6 - .../Update/examples/OTAWebUpdater/ci.yml | 3 + .../examples/AdvancedWebServer/ci.json | 6 - .../examples/AdvancedWebServer/ci.yml | 3 + .../WebServer/examples/ChunkWriting/ci.json | 6 - .../WebServer/examples/ChunkWriting/ci.yml | 3 + .../WebServer/examples/FSBrowser/ci.json | 6 - libraries/WebServer/examples/FSBrowser/ci.yml | 3 + libraries/WebServer/examples/Filters/ci.json | 6 - libraries/WebServer/examples/Filters/ci.yml | 3 + .../WebServer/examples/HelloServer/ci.json | 6 - .../WebServer/examples/HelloServer/ci.yml | 3 + .../examples/HttpAdvancedAuth/ci.json | 6 - .../examples/HttpAdvancedAuth/ci.yml | 3 + .../examples/HttpAuthCallback/ci.json | 6 - .../examples/HttpAuthCallback/ci.yml | 3 + .../examples/HttpAuthCallbackInline/ci.json | 6 - .../examples/HttpAuthCallbackInline/ci.yml | 3 + .../WebServer/examples/HttpBasicAuth/ci.json | 6 - .../WebServer/examples/HttpBasicAuth/ci.yml | 3 + .../examples/HttpBasicAuthSHA1/ci.json | 6 - .../examples/HttpBasicAuthSHA1/ci.yml | 3 + .../HttpBasicAuthSHA1orBearerToken/ci.json | 6 - .../HttpBasicAuthSHA1orBearerToken/ci.yml | 3 + .../WebServer/examples/Middleware/ci.json | 5 - .../WebServer/examples/Middleware/ci.yml | 2 + .../examples/MultiHomedServers/ci.json | 6 - .../examples/MultiHomedServers/ci.yml | 3 + .../WebServer/examples/PathArgServer/ci.json | 7 - .../WebServer/examples/PathArgServer/ci.yml | 5 + .../WebServer/examples/SDWebServer/ci.json | 6 - .../WebServer/examples/SDWebServer/ci.yml | 3 + .../examples/SimpleAuthentification/ci.json | 6 - .../examples/SimpleAuthentification/ci.yml | 3 + .../WebServer/examples/UploadHugeFile/ci.json | 7 - .../WebServer/examples/UploadHugeFile/ci.yml | 5 + .../WebServer/examples/WebServer/ci.json | 6 - libraries/WebServer/examples/WebServer/ci.yml | 3 + .../WebServer/examples/WebUpdate/ci.json | 6 - libraries/WebServer/examples/WebUpdate/ci.yml | 3 + .../WiFi/examples/FTM/FTM_Initiator/ci.json | 6 - .../WiFi/examples/FTM/FTM_Initiator/ci.yml | 3 + .../WiFi/examples/FTM/FTM_Responder/ci.json | 6 - .../WiFi/examples/FTM/FTM_Responder/ci.yml | 3 + .../WiFi/examples/SimpleWiFiServer/ci.json | 6 - .../WiFi/examples/SimpleWiFiServer/ci.yml | 3 + libraries/WiFi/examples/WPS/ci.json | 5 - libraries/WiFi/examples/WPS/ci.yml | 2 + .../WiFi/examples/WiFiAccessPoint/ci.json | 6 - .../WiFi/examples/WiFiAccessPoint/ci.yml | 3 + .../WiFi/examples/WiFiBlueToothSwitch/ci.json | 9 - .../WiFi/examples/WiFiBlueToothSwitch/ci.yml | 6 + libraries/WiFi/examples/WiFiClient/ci.json | 6 - libraries/WiFi/examples/WiFiClient/ci.yml | 3 + .../WiFi/examples/WiFiClientBasic/ci.json | 6 - .../WiFi/examples/WiFiClientBasic/ci.yml | 3 + .../WiFi/examples/WiFiClientConnect/ci.json | 6 - .../WiFi/examples/WiFiClientConnect/ci.yml | 3 + .../examples/WiFiClientEnterprise/ci.json | 5 - .../WiFi/examples/WiFiClientEnterprise/ci.yml | 2 + .../WiFi/examples/WiFiClientEvents/ci.json | 6 - .../WiFi/examples/WiFiClientEvents/ci.yml | 3 + .../WiFi/examples/WiFiClientStaticIP/ci.json | 6 - .../WiFi/examples/WiFiClientStaticIP/ci.yml | 3 + libraries/WiFi/examples/WiFiExtender/ci.json | 6 - libraries/WiFi/examples/WiFiExtender/ci.yml | 3 + libraries/WiFi/examples/WiFiIPv6/ci.json | 6 - libraries/WiFi/examples/WiFiIPv6/ci.yml | 3 + libraries/WiFi/examples/WiFiMulti/ci.json | 6 - libraries/WiFi/examples/WiFiMulti/ci.yml | 3 + .../WiFi/examples/WiFiMultiAdvanced/ci.json | 6 - .../WiFi/examples/WiFiMultiAdvanced/ci.yml | 3 + libraries/WiFi/examples/WiFiScan/ci.json | 6 - libraries/WiFi/examples/WiFiScan/ci.yml | 3 + libraries/WiFi/examples/WiFiScanAsync/ci.json | 6 - libraries/WiFi/examples/WiFiScanAsync/ci.yml | 3 + .../WiFi/examples/WiFiScanDualAntenna/ci.json | 6 - .../WiFi/examples/WiFiScanDualAntenna/ci.yml | 3 + libraries/WiFi/examples/WiFiScanTime/ci.json | 6 - libraries/WiFi/examples/WiFiScanTime/ci.yml | 3 + .../WiFi/examples/WiFiSmartConfig/ci.json | 5 - .../WiFi/examples/WiFiSmartConfig/ci.yml | 2 + .../WiFi/examples/WiFiTelnetToSerial/ci.json | 6 - .../WiFi/examples/WiFiTelnetToSerial/ci.yml | 3 + libraries/WiFi/examples/WiFiUDPClient/ci.json | 6 - libraries/WiFi/examples/WiFiUDPClient/ci.yml | 3 + libraries/WiFiProv/examples/WiFiProv/ci.json | 6 - libraries/WiFiProv/examples/WiFiProv/ci.yml | 4 + libraries/Wire/examples/WireMaster/ci.json | 5 - libraries/Wire/examples/WireMaster/ci.yml | 2 + libraries/Wire/examples/WireScan/ci.json | 5 - libraries/Wire/examples/WireScan/ci.yml | 2 + libraries/Wire/examples/WireSlave/ci.json | 5 - libraries/Wire/examples/WireSlave/ci.yml | 2 + .../WireSlaveFunctionalCallback/ci.json | 5 - .../WireSlaveFunctionalCallback/ci.yml | 2 + .../Zigbee_Analog_Input_Output/ci.json | 6 - .../Zigbee_Analog_Input_Output/ci.yml | 4 + .../Zigbee_Binary_Input_Output/ci.json | 7 - .../Zigbee_Binary_Input_Output/ci.yml | 5 + .../Zigbee_CarbonDioxide_Sensor/ci.json | 7 - .../Zigbee_CarbonDioxide_Sensor/ci.yml | 5 + .../Zigbee_Color_Dimmable_Light/ci.json | 7 - .../Zigbee_Color_Dimmable_Light/ci.yml | 5 + .../Zigbee_Color_Dimmer_Switch/ci.json | 6 - .../Zigbee_Color_Dimmer_Switch/ci.yml | 4 + .../examples/Zigbee_Contact_Switch/ci.json | 7 - .../examples/Zigbee_Contact_Switch/ci.yml | 5 + .../examples/Zigbee_Dimmable_Light/ci.json | 7 - .../examples/Zigbee_Dimmable_Light/ci.yml | 5 + .../Zigbee_Electrical_AC_Sensor/ci.json | 6 - .../Zigbee_Electrical_AC_Sensor/ci.yml | 4 + .../ci.json | 6 - .../ci.yml | 4 + .../Zigbee_Electrical_DC_Sensor/ci.json | 7 - .../Zigbee_Electrical_DC_Sensor/ci.yml | 5 + .../examples/Zigbee_Fan_Control/ci.json | 6 - .../Zigbee/examples/Zigbee_Fan_Control/ci.yml | 4 + .../Zigbee/examples/Zigbee_Gateway/ci.json | 10 - .../Zigbee/examples/Zigbee_Gateway/ci.yml | 8 + .../Zigbee_Illuminance_Sensor/ci.json | 7 - .../examples/Zigbee_Illuminance_Sensor/ci.yml | 5 + .../Zigbee_Multistate_Input_Output/ci.json | 6 - .../Zigbee_Multistate_Input_Output/ci.yml | 4 + .../Zigbee/examples/Zigbee_OTA_Client/ci.json | 7 - .../Zigbee/examples/Zigbee_OTA_Client/ci.yml | 5 + .../examples/Zigbee_Occupancy_Sensor/ci.json | 7 - .../examples/Zigbee_Occupancy_Sensor/ci.yml | 5 + .../examples/Zigbee_On_Off_Light/ci.json | 7 - .../examples/Zigbee_On_Off_Light/ci.yml | 5 + .../Zigbee_On_Off_MultiSwitch/ci.json | 6 - .../examples/Zigbee_On_Off_MultiSwitch/ci.yml | 4 + .../examples/Zigbee_On_Off_Switch/ci.json | 6 - .../examples/Zigbee_On_Off_Switch/ci.yml | 4 + .../examples/Zigbee_PM25_Sensor/ci.json | 7 - .../Zigbee/examples/Zigbee_PM25_Sensor/ci.yml | 5 + .../examples/Zigbee_Power_Outlet/ci.json | 6 - .../examples/Zigbee_Power_Outlet/ci.yml | 4 + .../Zigbee_Pressure_Flow_Sensor/ci.json | 7 - .../Zigbee_Pressure_Flow_Sensor/ci.yml | 5 + .../examples/Zigbee_Range_Extender/ci.json | 6 - .../examples/Zigbee_Range_Extender/ci.yml | 4 + .../examples/Zigbee_Scan_Networks/ci.json | 7 - .../examples/Zigbee_Scan_Networks/ci.yml | 5 + .../Zigbee_Temp_Hum_Sensor_Sleepy/ci.json | 7 - .../Zigbee_Temp_Hum_Sensor_Sleepy/ci.yml | 5 + .../Zigbee_Temperature_Sensor/ci.json | 7 - .../examples/Zigbee_Temperature_Sensor/ci.yml | 5 + .../Zigbee/examples/Zigbee_Thermostat/ci.json | 6 - .../Zigbee/examples/Zigbee_Thermostat/ci.yml | 4 + .../examples/Zigbee_Vibration_Sensor/ci.json | 7 - .../examples/Zigbee_Vibration_Sensor/ci.yml | 5 + .../examples/Zigbee_Wind_Speed_Sensor/ci.json | 7 - .../examples/Zigbee_Wind_Speed_Sensor/ci.yml | 5 + .../examples/Zigbee_Window_Covering/ci.json | 7 - .../examples/Zigbee_Window_Covering/ci.yml | 5 + tests/performance/coremark/ci.json | 6 - tests/performance/coremark/ci.yml | 3 + tests/performance/fibonacci/ci.json | 6 - tests/performance/fibonacci/ci.yml | 3 + tests/performance/linpack_double/ci.json | 6 - tests/performance/linpack_double/ci.yml | 3 + tests/performance/linpack_float/ci.json | 6 - tests/performance/linpack_float/ci.yml | 3 + tests/performance/psramspeed/ci.json | 23 -- tests/performance/psramspeed/ci.yml | 16 + tests/performance/ramspeed/ci.json | 17 - tests/performance/ramspeed/ci.yml | 11 + tests/performance/superpi/ci.json | 6 - tests/performance/superpi/ci.yml | 3 + tests/requirements.txt | 8 +- tests/validation/democfg/ci.json | 31 -- tests/validation/democfg/ci.yml | 25 ++ tests/validation/gpio/ci.json | 6 - tests/validation/gpio/ci.yml | 3 + tests/validation/i2c_master/ci.json | 9 - tests/validation/i2c_master/ci.yml | 6 + tests/validation/nvs/ci.json | 42 --- tests/validation/nvs/ci.yml | 32 ++ tests/validation/periman/ci.json | 9 - tests/validation/periman/ci.yml | 6 + tests/validation/psram/ci.json | 22 -- tests/validation/psram/ci.yml | 16 + tests/validation/touch/ci.json | 10 - tests/validation/touch/ci.yml | 8 + tests/validation/uart/ci.json | 5 - tests/validation/uart/ci.yml | 2 + tests/validation/wifi/ci.json | 27 -- tests/validation/wifi/ci.yml | 21 ++ 508 files changed, 2154 insertions(+), 1939 deletions(-) create mode 100644 .github/scripts/generate_missing_junits.py create mode 100644 .github/scripts/runtime_table_generator.py create mode 100644 .gitlab/scripts/install_dependencies.sh delete mode 100644 idf_component_examples/esp_matter_light/ci.json create mode 100644 idf_component_examples/esp_matter_light/ci.yml delete mode 100644 idf_component_examples/hw_cdc_hello_world/ci.json create mode 100644 idf_component_examples/hw_cdc_hello_world/ci.yml delete mode 100644 libraries/ArduinoOTA/examples/BasicOTA/ci.json create mode 100644 libraries/ArduinoOTA/examples/BasicOTA/ci.yml delete mode 100644 libraries/AsyncUDP/examples/AsyncUDPClient/ci.json create mode 100644 libraries/AsyncUDP/examples/AsyncUDPClient/ci.yml delete mode 100644 libraries/AsyncUDP/examples/AsyncUDPMulticastServer/ci.json create mode 100644 libraries/AsyncUDP/examples/AsyncUDPMulticastServer/ci.yml delete mode 100644 libraries/AsyncUDP/examples/AsyncUDPServer/ci.json create mode 100644 libraries/AsyncUDP/examples/AsyncUDPServer/ci.yml delete mode 100644 libraries/BLE/examples/BLE5_extended_scan/ci.json create mode 100644 libraries/BLE/examples/BLE5_extended_scan/ci.yml delete mode 100644 libraries/BLE/examples/BLE5_multi_advertising/ci.json create mode 100644 libraries/BLE/examples/BLE5_multi_advertising/ci.yml delete mode 100644 libraries/BLE/examples/BLE5_periodic_advertising/ci.json create mode 100644 libraries/BLE/examples/BLE5_periodic_advertising/ci.yml delete mode 100644 libraries/BLE/examples/BLE5_periodic_sync/ci.json create mode 100644 libraries/BLE/examples/BLE5_periodic_sync/ci.yml delete mode 100644 libraries/BLE/examples/Beacon_Scanner/ci.json create mode 100644 libraries/BLE/examples/Beacon_Scanner/ci.yml delete mode 100644 libraries/BLE/examples/Client/ci.json create mode 100644 libraries/BLE/examples/Client/ci.yml delete mode 100644 libraries/BLE/examples/Client_secure_static_passkey/ci.json create mode 100644 libraries/BLE/examples/Client_secure_static_passkey/ci.yml delete mode 100644 libraries/BLE/examples/EddystoneTLM_Beacon/ci.json create mode 100644 libraries/BLE/examples/EddystoneTLM_Beacon/ci.yml delete mode 100644 libraries/BLE/examples/EddystoneURL_Beacon/ci.json create mode 100644 libraries/BLE/examples/EddystoneURL_Beacon/ci.yml delete mode 100644 libraries/BLE/examples/Notify/ci.json create mode 100644 libraries/BLE/examples/Notify/ci.yml delete mode 100644 libraries/BLE/examples/Scan/ci.json create mode 100644 libraries/BLE/examples/Scan/ci.yml delete mode 100644 libraries/BLE/examples/Server/ci.json create mode 100644 libraries/BLE/examples/Server/ci.yml delete mode 100644 libraries/BLE/examples/Server_multiconnect/ci.json create mode 100644 libraries/BLE/examples/Server_multiconnect/ci.yml delete mode 100644 libraries/BLE/examples/Server_secure_authorization/ci.json create mode 100644 libraries/BLE/examples/Server_secure_authorization/ci.yml delete mode 100644 libraries/BLE/examples/Server_secure_static_passkey/ci.json create mode 100644 libraries/BLE/examples/Server_secure_static_passkey/ci.yml delete mode 100644 libraries/BLE/examples/UART/ci.json create mode 100644 libraries/BLE/examples/UART/ci.yml delete mode 100644 libraries/BLE/examples/Write/ci.json create mode 100644 libraries/BLE/examples/Write/ci.yml delete mode 100644 libraries/BLE/examples/iBeacon/ci.json create mode 100644 libraries/BLE/examples/iBeacon/ci.yml delete mode 100644 libraries/BluetoothSerial/examples/DiscoverConnect/ci.json create mode 100644 libraries/BluetoothSerial/examples/DiscoverConnect/ci.yml delete mode 100644 libraries/BluetoothSerial/examples/GetLocalMAC/ci.json create mode 100644 libraries/BluetoothSerial/examples/GetLocalMAC/ci.yml delete mode 100644 libraries/BluetoothSerial/examples/SerialToSerialBT/ci.json create mode 100644 libraries/BluetoothSerial/examples/SerialToSerialBT/ci.yml delete mode 100644 libraries/BluetoothSerial/examples/SerialToSerialBTM/ci.json create mode 100644 libraries/BluetoothSerial/examples/SerialToSerialBTM/ci.yml delete mode 100644 libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy/ci.json create mode 100644 libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy/ci.yml delete mode 100644 libraries/BluetoothSerial/examples/SerialToSerialBT_SSP/ci.json create mode 100644 libraries/BluetoothSerial/examples/SerialToSerialBT_SSP/ci.yml delete mode 100644 libraries/BluetoothSerial/examples/bt_classic_device_discovery/ci.json create mode 100644 libraries/BluetoothSerial/examples/bt_classic_device_discovery/ci.yml delete mode 100644 libraries/BluetoothSerial/examples/bt_remove_paired_devices/ci.json create mode 100644 libraries/BluetoothSerial/examples/bt_remove_paired_devices/ci.yml delete mode 100644 libraries/DNSServer/examples/CaptivePortal/ci.json create mode 100644 libraries/DNSServer/examples/CaptivePortal/ci.yml delete mode 100644 libraries/ESP32/examples/AnalogOut/LEDCGammaFade/ci.json create mode 100644 libraries/ESP32/examples/AnalogOut/LEDCGammaFade/ci.yml delete mode 100644 libraries/ESP32/examples/Camera/CameraWebServer/ci.json create mode 100644 libraries/ESP32/examples/Camera/CameraWebServer/ci.yml delete mode 100644 libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ci.json create mode 100644 libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ci.yml delete mode 100644 libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code/ci.json create mode 100644 libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code/ci.yml delete mode 100644 libraries/ESP32/examples/DeepSleep/TimerWakeUp/ci.json create mode 100644 libraries/ESP32/examples/DeepSleep/TimerWakeUp/ci.yml delete mode 100644 libraries/ESP32/examples/DeepSleep/TouchWakeUp/ci.json create mode 100644 libraries/ESP32/examples/DeepSleep/TouchWakeUp/ci.yml delete mode 100644 libraries/ESP32/examples/HWCDC_Events/ci.json create mode 100644 libraries/ESP32/examples/HWCDC_Events/ci.yml delete mode 100644 libraries/ESP32/examples/TWAI/TWAIreceive/ci.json create mode 100644 libraries/ESP32/examples/TWAI/TWAIreceive/ci.yml delete mode 100644 libraries/ESP32/examples/TWAI/TWAItransmit/ci.json create mode 100644 libraries/ESP32/examples/TWAI/TWAItransmit/ci.yml delete mode 100644 libraries/ESP32/examples/Time/SimpleTime/ci.json create mode 100644 libraries/ESP32/examples/Time/SimpleTime/ci.yml delete mode 100644 libraries/ESP32/examples/Touch/TouchButton/ci.json create mode 100644 libraries/ESP32/examples/Touch/TouchButton/ci.yml delete mode 100644 libraries/ESP32/examples/Touch/TouchInterrupt/ci.json create mode 100644 libraries/ESP32/examples/Touch/TouchInterrupt/ci.yml delete mode 100644 libraries/ESP32/examples/Touch/TouchRead/ci.json create mode 100644 libraries/ESP32/examples/Touch/TouchRead/ci.yml delete mode 100644 libraries/ESP_I2S/examples/ES8388_loopback/ci.json create mode 100644 libraries/ESP_I2S/examples/ES8388_loopback/ci.yml delete mode 100644 libraries/ESP_I2S/examples/Record_to_WAV/ci.json create mode 100644 libraries/ESP_I2S/examples/Record_to_WAV/ci.yml delete mode 100644 libraries/ESP_I2S/examples/Simple_tone/ci.json create mode 100644 libraries/ESP_I2S/examples/Simple_tone/ci.yml delete mode 100644 libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master/ci.json create mode 100644 libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master/ci.yml delete mode 100644 libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave/ci.json create mode 100644 libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave/ci.yml delete mode 100644 libraries/ESP_NOW/examples/ESP_NOW_Network/ci.json create mode 100644 libraries/ESP_NOW/examples/ESP_NOW_Network/ci.yml delete mode 100644 libraries/ESP_NOW/examples/ESP_NOW_Serial/ci.json create mode 100644 libraries/ESP_NOW/examples/ESP_NOW_Serial/ci.yml delete mode 100644 libraries/ESP_SR/examples/Basic/ci.json create mode 100644 libraries/ESP_SR/examples/Basic/ci.yml delete mode 100644 libraries/ESPmDNS/examples/mDNS-SD_Extended/ci.json create mode 100644 libraries/ESPmDNS/examples/mDNS-SD_Extended/ci.yml delete mode 100644 libraries/ESPmDNS/examples/mDNS_Web_Server/ci.json create mode 100644 libraries/ESPmDNS/examples/mDNS_Web_Server/ci.yml delete mode 100644 libraries/Ethernet/examples/ETH_LAN8720/ci.json create mode 100644 libraries/Ethernet/examples/ETH_LAN8720/ci.yml delete mode 100644 libraries/Ethernet/examples/ETH_TLK110/ci.json create mode 100644 libraries/Ethernet/examples/ETH_TLK110/ci.yml delete mode 100644 libraries/Ethernet/examples/ETH_WIFI_BRIDGE/ci.json create mode 100644 libraries/Ethernet/examples/ETH_WIFI_BRIDGE/ci.yml delete mode 100644 libraries/FFat/examples/FFat_time/ci.json create mode 100644 libraries/FFat/examples/FFat_time/ci.yml delete mode 100644 libraries/HTTPClient/examples/Authorization/ci.json create mode 100644 libraries/HTTPClient/examples/Authorization/ci.yml delete mode 100644 libraries/HTTPClient/examples/BasicHttpClient/ci.json create mode 100644 libraries/HTTPClient/examples/BasicHttpClient/ci.yml delete mode 100644 libraries/HTTPClient/examples/BasicHttpsClient/ci.json create mode 100644 libraries/HTTPClient/examples/BasicHttpsClient/ci.yml delete mode 100644 libraries/HTTPClient/examples/CustomHeaders/ci.json create mode 100644 libraries/HTTPClient/examples/CustomHeaders/ci.yml delete mode 100644 libraries/HTTPClient/examples/HTTPClientEnterprise/ci.json create mode 100644 libraries/HTTPClient/examples/HTTPClientEnterprise/ci.yml delete mode 100644 libraries/HTTPClient/examples/ReuseConnection/ci.json create mode 100644 libraries/HTTPClient/examples/ReuseConnection/ci.yml delete mode 100644 libraries/HTTPClient/examples/StreamHttpClient/ci.json create mode 100644 libraries/HTTPClient/examples/StreamHttpClient/ci.yml delete mode 100644 libraries/HTTPUpdate/examples/httpUpdate/ci.json create mode 100644 libraries/HTTPUpdate/examples/httpUpdate/ci.yml delete mode 100644 libraries/HTTPUpdate/examples/httpUpdateSPIFFS/ci.json create mode 100644 libraries/HTTPUpdate/examples/httpUpdateSPIFFS/ci.yml delete mode 100644 libraries/HTTPUpdate/examples/httpUpdateSecure/ci.json create mode 100644 libraries/HTTPUpdate/examples/httpUpdateSecure/ci.yml delete mode 100644 libraries/HTTPUpdateServer/examples/WebUpdater/ci.json create mode 100644 libraries/HTTPUpdateServer/examples/WebUpdater/ci.yml delete mode 100644 libraries/Insights/examples/DiagnosticsSmokeTest/ci.json create mode 100644 libraries/Insights/examples/DiagnosticsSmokeTest/ci.yml delete mode 100644 libraries/Insights/examples/MinimalDiagnostics/ci.json create mode 100644 libraries/Insights/examples/MinimalDiagnostics/ci.yml delete mode 100644 libraries/LittleFS/examples/LITTLEFS_time/ci.json create mode 100644 libraries/LittleFS/examples/LITTLEFS_time/ci.yml delete mode 100644 libraries/Matter/examples/MatterColorLight/ci.json create mode 100644 libraries/Matter/examples/MatterColorLight/ci.yml delete mode 100644 libraries/Matter/examples/MatterCommissionTest/ci.json create mode 100644 libraries/Matter/examples/MatterCommissionTest/ci.yml delete mode 100644 libraries/Matter/examples/MatterComposedLights/ci.json create mode 100644 libraries/Matter/examples/MatterComposedLights/ci.yml delete mode 100644 libraries/Matter/examples/MatterContactSensor/ci.json create mode 100644 libraries/Matter/examples/MatterContactSensor/ci.yml delete mode 100644 libraries/Matter/examples/MatterDimmableLight/ci.json create mode 100644 libraries/Matter/examples/MatterDimmableLight/ci.yml delete mode 100644 libraries/Matter/examples/MatterEnhancedColorLight/ci.json create mode 100644 libraries/Matter/examples/MatterEnhancedColorLight/ci.yml delete mode 100644 libraries/Matter/examples/MatterEvents/ci.json create mode 100644 libraries/Matter/examples/MatterEvents/ci.yml delete mode 100644 libraries/Matter/examples/MatterFan/ci.json create mode 100644 libraries/Matter/examples/MatterFan/ci.yml delete mode 100644 libraries/Matter/examples/MatterHumiditySensor/ci.json create mode 100644 libraries/Matter/examples/MatterHumiditySensor/ci.yml delete mode 100644 libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/ci.json create mode 100644 libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/ci.yml delete mode 100644 libraries/Matter/examples/MatterMinimum/ci.json create mode 100644 libraries/Matter/examples/MatterMinimum/ci.yml delete mode 100644 libraries/Matter/examples/MatterOccupancySensor/ci.json create mode 100644 libraries/Matter/examples/MatterOccupancySensor/ci.yml delete mode 100644 libraries/Matter/examples/MatterOnIdentify/ci.json create mode 100644 libraries/Matter/examples/MatterOnIdentify/ci.yml delete mode 100644 libraries/Matter/examples/MatterOnOffLight/ci.json create mode 100644 libraries/Matter/examples/MatterOnOffLight/ci.yml delete mode 100644 libraries/Matter/examples/MatterOnOffPlugin/ci.json create mode 100644 libraries/Matter/examples/MatterOnOffPlugin/ci.yml delete mode 100644 libraries/Matter/examples/MatterPressureSensor/ci.json create mode 100644 libraries/Matter/examples/MatterPressureSensor/ci.yml delete mode 100644 libraries/Matter/examples/MatterSmartButon/ci.json create mode 100644 libraries/Matter/examples/MatterSmartButon/ci.yml delete mode 100644 libraries/Matter/examples/MatterTemperatureLight/ci.json create mode 100644 libraries/Matter/examples/MatterTemperatureLight/ci.yml delete mode 100644 libraries/Matter/examples/MatterTemperatureSensor/ci.json create mode 100644 libraries/Matter/examples/MatterTemperatureSensor/ci.yml delete mode 100644 libraries/Matter/examples/MatterThermostat/ci.json create mode 100644 libraries/Matter/examples/MatterThermostat/ci.yml delete mode 100644 libraries/NetBIOS/examples/ESP_NBNST/ci.json create mode 100644 libraries/NetBIOS/examples/ESP_NBNST/ci.yml delete mode 100644 libraries/NetworkClientSecure/examples/WiFiClientInsecure/ci.json create mode 100644 libraries/NetworkClientSecure/examples/WiFiClientInsecure/ci.yml delete mode 100644 libraries/NetworkClientSecure/examples/WiFiClientPSK/ci.json create mode 100644 libraries/NetworkClientSecure/examples/WiFiClientPSK/ci.yml delete mode 100644 libraries/NetworkClientSecure/examples/WiFiClientSecure/ci.json create mode 100644 libraries/NetworkClientSecure/examples/WiFiClientSecure/ci.yml delete mode 100644 libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.json create mode 100644 libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.yml delete mode 100644 libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.json create mode 100644 libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.yml delete mode 100644 libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.json create mode 100644 libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.yml delete mode 100644 libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.json create mode 100644 libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/COAP/coap_lamp/ci.json create mode 100644 libraries/OpenThread/examples/CLI/COAP/coap_lamp/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/COAP/coap_switch/ci.json create mode 100644 libraries/OpenThread/examples/CLI/COAP/coap_switch/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/SimpleCLI/ci.json create mode 100644 libraries/OpenThread/examples/CLI/SimpleCLI/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/SimpleNode/ci.json create mode 100644 libraries/OpenThread/examples/CLI/SimpleNode/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode/ci.json create mode 100644 libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode/ci.json create mode 100644 libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode/ci.json create mode 100644 libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/ThreadScan/ci.json create mode 100644 libraries/OpenThread/examples/CLI/ThreadScan/ci.yml delete mode 100644 libraries/OpenThread/examples/CLI/onReceive/ci.json create mode 100644 libraries/OpenThread/examples/CLI/onReceive/ci.yml delete mode 100644 libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode/ci.json create mode 100644 libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode/ci.yml delete mode 100644 libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode/ci.json create mode 100644 libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode/ci.yml delete mode 100644 libraries/PPP/examples/PPP_Basic/ci.json create mode 100644 libraries/PPP/examples/PPP_Basic/ci.yml delete mode 100644 libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.json create mode 100644 libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.yml delete mode 100644 libraries/RainMaker/examples/RMakerCustom/ci.json create mode 100644 libraries/RainMaker/examples/RMakerCustom/ci.yml delete mode 100644 libraries/RainMaker/examples/RMakerCustomAirCooler/ci.json create mode 100644 libraries/RainMaker/examples/RMakerCustomAirCooler/ci.yml delete mode 100644 libraries/RainMaker/examples/RMakerSonoffDualR3/ci.json create mode 100644 libraries/RainMaker/examples/RMakerSonoffDualR3/ci.yml delete mode 100644 libraries/RainMaker/examples/RMakerSwitch/ci.json create mode 100644 libraries/RainMaker/examples/RMakerSwitch/ci.yml delete mode 100644 libraries/SD/examples/SD_time/ci.json create mode 100644 libraries/SD/examples/SD_time/ci.yml delete mode 100644 libraries/SD_MMC/examples/SD2USBMSC/ci.json create mode 100644 libraries/SD_MMC/examples/SD2USBMSC/ci.yml delete mode 100644 libraries/SD_MMC/examples/SDMMC_Test/ci.json create mode 100644 libraries/SD_MMC/examples/SDMMC_Test/ci.yml delete mode 100644 libraries/SD_MMC/examples/SDMMC_time/ci.json create mode 100644 libraries/SD_MMC/examples/SDMMC_time/ci.yml delete mode 100644 libraries/SPI/examples/SPI_Multiple_Buses/ci.json create mode 100644 libraries/SPI/examples/SPI_Multiple_Buses/ci.yml delete mode 100644 libraries/SPIFFS/examples/SPIFFS_time/ci.json create mode 100644 libraries/SPIFFS/examples/SPIFFS_time/ci.yml delete mode 100644 libraries/SimpleBLE/examples/SimpleBleDevice/ci.json create mode 100644 libraries/SimpleBLE/examples/SimpleBleDevice/ci.yml delete mode 100644 libraries/USB/examples/CompositeDevice/ci.json create mode 100644 libraries/USB/examples/CompositeDevice/ci.yml delete mode 100644 libraries/USB/examples/ConsumerControl/ci.json create mode 100644 libraries/USB/examples/ConsumerControl/ci.yml delete mode 100644 libraries/USB/examples/CustomHIDDevice/ci.json create mode 100644 libraries/USB/examples/CustomHIDDevice/ci.yml delete mode 100644 libraries/USB/examples/FirmwareMSC/ci.json create mode 100644 libraries/USB/examples/FirmwareMSC/ci.yml delete mode 100644 libraries/USB/examples/Gamepad/ci.json create mode 100644 libraries/USB/examples/Gamepad/ci.yml delete mode 100644 libraries/USB/examples/HIDVendor/ci.json create mode 100644 libraries/USB/examples/HIDVendor/ci.yml delete mode 100644 libraries/USB/examples/Keyboard/KeyboardLogout/ci.json create mode 100644 libraries/USB/examples/Keyboard/KeyboardLogout/ci.yml delete mode 100644 libraries/USB/examples/Keyboard/KeyboardMessage/ci.json create mode 100644 libraries/USB/examples/Keyboard/KeyboardMessage/ci.yml delete mode 100644 libraries/USB/examples/Keyboard/KeyboardReprogram/ci.json create mode 100644 libraries/USB/examples/Keyboard/KeyboardReprogram/ci.yml delete mode 100644 libraries/USB/examples/Keyboard/KeyboardSerial/ci.json create mode 100644 libraries/USB/examples/Keyboard/KeyboardSerial/ci.yml delete mode 100644 libraries/USB/examples/KeyboardAndMouseControl/ci.json create mode 100644 libraries/USB/examples/KeyboardAndMouseControl/ci.yml delete mode 100644 libraries/USB/examples/MIDI/MidiController/ci.json create mode 100644 libraries/USB/examples/MIDI/MidiController/ci.yml delete mode 100644 libraries/USB/examples/MIDI/MidiInterface/ci.json create mode 100644 libraries/USB/examples/MIDI/MidiInterface/ci.yml delete mode 100644 libraries/USB/examples/MIDI/MidiMusicBox/ci.json create mode 100644 libraries/USB/examples/MIDI/MidiMusicBox/ci.yml delete mode 100644 libraries/USB/examples/MIDI/ReceiveMidi/ci.json create mode 100644 libraries/USB/examples/MIDI/ReceiveMidi/ci.yml delete mode 100644 libraries/USB/examples/Mouse/ButtonMouseControl/ci.json create mode 100644 libraries/USB/examples/Mouse/ButtonMouseControl/ci.yml delete mode 100644 libraries/USB/examples/SystemControl/ci.json create mode 100644 libraries/USB/examples/SystemControl/ci.yml delete mode 100644 libraries/USB/examples/USBMSC/ci.json create mode 100644 libraries/USB/examples/USBMSC/ci.yml delete mode 100644 libraries/USB/examples/USBSerial/ci.json create mode 100644 libraries/USB/examples/USBSerial/ci.yml delete mode 100644 libraries/USB/examples/USBVendor/ci.json create mode 100644 libraries/USB/examples/USBVendor/ci.yml delete mode 100644 libraries/Update/examples/AWS_S3_OTA_Update/ci.json create mode 100644 libraries/Update/examples/AWS_S3_OTA_Update/ci.yml delete mode 100644 libraries/Update/examples/HTTPS_OTA_Update/ci.json create mode 100644 libraries/Update/examples/HTTPS_OTA_Update/ci.yml delete mode 100644 libraries/Update/examples/HTTP_Client_AES_OTA_Update/ci.json create mode 100644 libraries/Update/examples/HTTP_Client_AES_OTA_Update/ci.yml delete mode 100644 libraries/Update/examples/HTTP_Server_AES_OTA_Update/ci.json create mode 100644 libraries/Update/examples/HTTP_Server_AES_OTA_Update/ci.yml delete mode 100644 libraries/Update/examples/OTAWebUpdater/ci.json create mode 100644 libraries/Update/examples/OTAWebUpdater/ci.yml delete mode 100644 libraries/WebServer/examples/AdvancedWebServer/ci.json create mode 100644 libraries/WebServer/examples/AdvancedWebServer/ci.yml delete mode 100644 libraries/WebServer/examples/ChunkWriting/ci.json create mode 100644 libraries/WebServer/examples/ChunkWriting/ci.yml delete mode 100644 libraries/WebServer/examples/FSBrowser/ci.json create mode 100644 libraries/WebServer/examples/FSBrowser/ci.yml delete mode 100644 libraries/WebServer/examples/Filters/ci.json create mode 100644 libraries/WebServer/examples/Filters/ci.yml delete mode 100644 libraries/WebServer/examples/HelloServer/ci.json create mode 100644 libraries/WebServer/examples/HelloServer/ci.yml delete mode 100644 libraries/WebServer/examples/HttpAdvancedAuth/ci.json create mode 100644 libraries/WebServer/examples/HttpAdvancedAuth/ci.yml delete mode 100644 libraries/WebServer/examples/HttpAuthCallback/ci.json create mode 100644 libraries/WebServer/examples/HttpAuthCallback/ci.yml delete mode 100644 libraries/WebServer/examples/HttpAuthCallbackInline/ci.json create mode 100644 libraries/WebServer/examples/HttpAuthCallbackInline/ci.yml delete mode 100644 libraries/WebServer/examples/HttpBasicAuth/ci.json create mode 100644 libraries/WebServer/examples/HttpBasicAuth/ci.yml delete mode 100644 libraries/WebServer/examples/HttpBasicAuthSHA1/ci.json create mode 100644 libraries/WebServer/examples/HttpBasicAuthSHA1/ci.yml delete mode 100644 libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken/ci.json create mode 100644 libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken/ci.yml delete mode 100644 libraries/WebServer/examples/Middleware/ci.json create mode 100644 libraries/WebServer/examples/Middleware/ci.yml delete mode 100644 libraries/WebServer/examples/MultiHomedServers/ci.json create mode 100644 libraries/WebServer/examples/MultiHomedServers/ci.yml delete mode 100644 libraries/WebServer/examples/PathArgServer/ci.json create mode 100644 libraries/WebServer/examples/PathArgServer/ci.yml delete mode 100644 libraries/WebServer/examples/SDWebServer/ci.json create mode 100644 libraries/WebServer/examples/SDWebServer/ci.yml delete mode 100644 libraries/WebServer/examples/SimpleAuthentification/ci.json create mode 100644 libraries/WebServer/examples/SimpleAuthentification/ci.yml delete mode 100644 libraries/WebServer/examples/UploadHugeFile/ci.json create mode 100644 libraries/WebServer/examples/UploadHugeFile/ci.yml delete mode 100644 libraries/WebServer/examples/WebServer/ci.json create mode 100644 libraries/WebServer/examples/WebServer/ci.yml delete mode 100644 libraries/WebServer/examples/WebUpdate/ci.json create mode 100644 libraries/WebServer/examples/WebUpdate/ci.yml delete mode 100644 libraries/WiFi/examples/FTM/FTM_Initiator/ci.json create mode 100644 libraries/WiFi/examples/FTM/FTM_Initiator/ci.yml delete mode 100644 libraries/WiFi/examples/FTM/FTM_Responder/ci.json create mode 100644 libraries/WiFi/examples/FTM/FTM_Responder/ci.yml delete mode 100644 libraries/WiFi/examples/SimpleWiFiServer/ci.json create mode 100644 libraries/WiFi/examples/SimpleWiFiServer/ci.yml delete mode 100644 libraries/WiFi/examples/WPS/ci.json create mode 100644 libraries/WiFi/examples/WPS/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiAccessPoint/ci.json create mode 100644 libraries/WiFi/examples/WiFiAccessPoint/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiBlueToothSwitch/ci.json create mode 100644 libraries/WiFi/examples/WiFiBlueToothSwitch/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiClient/ci.json create mode 100644 libraries/WiFi/examples/WiFiClient/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiClientBasic/ci.json create mode 100644 libraries/WiFi/examples/WiFiClientBasic/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiClientConnect/ci.json create mode 100644 libraries/WiFi/examples/WiFiClientConnect/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiClientEnterprise/ci.json create mode 100644 libraries/WiFi/examples/WiFiClientEnterprise/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiClientEvents/ci.json create mode 100644 libraries/WiFi/examples/WiFiClientEvents/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiClientStaticIP/ci.json create mode 100644 libraries/WiFi/examples/WiFiClientStaticIP/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiExtender/ci.json create mode 100644 libraries/WiFi/examples/WiFiExtender/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiIPv6/ci.json create mode 100644 libraries/WiFi/examples/WiFiIPv6/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiMulti/ci.json create mode 100644 libraries/WiFi/examples/WiFiMulti/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiMultiAdvanced/ci.json create mode 100644 libraries/WiFi/examples/WiFiMultiAdvanced/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiScan/ci.json create mode 100644 libraries/WiFi/examples/WiFiScan/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiScanAsync/ci.json create mode 100644 libraries/WiFi/examples/WiFiScanAsync/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiScanDualAntenna/ci.json create mode 100644 libraries/WiFi/examples/WiFiScanDualAntenna/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiScanTime/ci.json create mode 100644 libraries/WiFi/examples/WiFiScanTime/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiSmartConfig/ci.json create mode 100644 libraries/WiFi/examples/WiFiSmartConfig/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiTelnetToSerial/ci.json create mode 100644 libraries/WiFi/examples/WiFiTelnetToSerial/ci.yml delete mode 100644 libraries/WiFi/examples/WiFiUDPClient/ci.json create mode 100644 libraries/WiFi/examples/WiFiUDPClient/ci.yml delete mode 100644 libraries/WiFiProv/examples/WiFiProv/ci.json create mode 100644 libraries/WiFiProv/examples/WiFiProv/ci.yml delete mode 100644 libraries/Wire/examples/WireMaster/ci.json create mode 100644 libraries/Wire/examples/WireMaster/ci.yml delete mode 100644 libraries/Wire/examples/WireScan/ci.json create mode 100644 libraries/Wire/examples/WireScan/ci.yml delete mode 100644 libraries/Wire/examples/WireSlave/ci.json create mode 100644 libraries/Wire/examples/WireSlave/ci.yml delete mode 100644 libraries/Wire/examples/WireSlaveFunctionalCallback/ci.json create mode 100644 libraries/Wire/examples/WireSlaveFunctionalCallback/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Analog_Input_Output/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Analog_Input_Output/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Binary_Input_Output/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Binary_Input_Output/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Contact_Switch/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Contact_Switch/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Dimmable_Light/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Dimmable_Light/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Fan_Control/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Fan_Control/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Gateway/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Gateway/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Multistate_Input_Output/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Multistate_Input_Output/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_OTA_Client/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_OTA_Client/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Occupancy_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Occupancy_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_On_Off_Light/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_On_Off_Light/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_On_Off_Switch/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_On_Off_Switch/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_PM25_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_PM25_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Power_Outlet/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Power_Outlet/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Range_Extender/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Range_Extender/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Scan_Networks/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Scan_Networks/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Temperature_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Temperature_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Thermostat/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Thermostat/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Vibration_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Vibration_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor/ci.yml delete mode 100644 libraries/Zigbee/examples/Zigbee_Window_Covering/ci.json create mode 100644 libraries/Zigbee/examples/Zigbee_Window_Covering/ci.yml delete mode 100644 tests/performance/coremark/ci.json create mode 100644 tests/performance/coremark/ci.yml delete mode 100644 tests/performance/fibonacci/ci.json create mode 100644 tests/performance/fibonacci/ci.yml delete mode 100644 tests/performance/linpack_double/ci.json create mode 100644 tests/performance/linpack_double/ci.yml delete mode 100644 tests/performance/linpack_float/ci.json create mode 100644 tests/performance/linpack_float/ci.yml delete mode 100644 tests/performance/psramspeed/ci.json create mode 100644 tests/performance/psramspeed/ci.yml delete mode 100644 tests/performance/ramspeed/ci.json create mode 100644 tests/performance/ramspeed/ci.yml delete mode 100644 tests/performance/superpi/ci.json create mode 100644 tests/performance/superpi/ci.yml delete mode 100644 tests/validation/democfg/ci.json create mode 100644 tests/validation/democfg/ci.yml delete mode 100644 tests/validation/gpio/ci.json create mode 100644 tests/validation/gpio/ci.yml delete mode 100644 tests/validation/i2c_master/ci.json create mode 100644 tests/validation/i2c_master/ci.yml delete mode 100644 tests/validation/nvs/ci.json create mode 100644 tests/validation/nvs/ci.yml delete mode 100644 tests/validation/periman/ci.json create mode 100644 tests/validation/periman/ci.yml delete mode 100644 tests/validation/psram/ci.json create mode 100644 tests/validation/psram/ci.yml delete mode 100644 tests/validation/touch/ci.json create mode 100644 tests/validation/touch/ci.yml delete mode 100644 tests/validation/uart/ci.json create mode 100644 tests/validation/uart/ci.yml delete mode 100644 tests/validation/wifi/ci.json create mode 100644 tests/validation/wifi/ci.yml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6a4d284cd5c..bd18f7ad973 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -73,9 +73,9 @@ /libraries/Wire/ @me-no-dev /libraries/Zigbee/ @P-R-O-C-H-Y -# CI JSON +# CI YAML # Keep this after other libraries and tests to avoid being overridden. -**/ci.json @lucasssvaz +**/ci.yml @lucasssvaz # The CODEOWNERS file should be owned by the developers of the ESP32 Arduino Core. # Leave this entry as the last one to avoid being overridden. diff --git a/.github/scripts/generate_missing_junits.py b/.github/scripts/generate_missing_junits.py new file mode 100644 index 00000000000..1a2925ead04 --- /dev/null +++ b/.github/scripts/generate_missing_junits.py @@ -0,0 +1,330 @@ +#!/usr/bin/env python3 + +import json +import logging +import os +import re +import sys +from pathlib import Path +from xml.etree.ElementTree import Element, SubElement, ElementTree +import yaml + +# Configure logging +logging.basicConfig(level=logging.DEBUG, format='[%(levelname)s] %(message)s', stream=sys.stderr) + + +def parse_array(value) -> list[str]: + if isinstance(value, list): + return [str(x) for x in value] + if not isinstance(value, str): + return [] + txt = value.strip() + if not txt: + return [] + # Try JSON + try: + return [str(x) for x in json.loads(txt)] + except Exception as e: + logging.debug(f"Failed to parse value as JSON: {e}") + # Normalize single quotes then JSON + try: + fixed = txt.replace("'", '"') + return [str(x) for x in json.loads(fixed)] + except Exception as e: + logging.debug(f"Failed to parse value as JSON with quote normalization: {e}") + # Fallback: CSV + logging.debug(f"Falling back to CSV parsing for value: {txt}") + return [p.strip() for p in txt.strip("[]").split(",") if p.strip()] + + +def _parse_ci_yml(content: str) -> dict: + if not content: + return {} + try: + data = yaml.safe_load(content) or {} + if not isinstance(data, dict): + logging.warning("YAML content is not a dictionary, returning empty dict") + return {} + return data + except Exception as e: + logging.error(f"Failed to parse ci.yml content: {e}") + return {} + + +def _fqbn_counts_from_yaml(ci: dict) -> dict[str, int]: + counts: dict[str, int] = {} + if not isinstance(ci, dict): + return counts + fqbn = ci.get("fqbn") + if not isinstance(fqbn, dict): + return counts + for target, entries in fqbn.items(): + if isinstance(entries, list): + counts[str(target)] = len(entries) + elif entries is not None: + # Single value provided as string + counts[str(target)] = 1 + return counts + + +def _sdkconfig_meets(ci_cfg: dict, sdk_text: str) -> bool: + if not sdk_text: + return True + for req in ci_cfg.get("requires", []): + if not req or not isinstance(req, str): + continue + if not any(line.startswith(req) for line in sdk_text.splitlines()): + return False + req_any = ci_cfg.get("requires_any", []) + if req_any: + if not any(any(line.startswith(r.strip()) for line in sdk_text.splitlines()) for r in req_any if isinstance(r, str)): + return False + return True + + +def expected_from_artifacts(build_root: Path) -> dict[tuple[str, str, str, str], int]: + """Compute expected runs using ci.yml and sdkconfig found in build artifacts. + Returns mapping (platform, target, type, sketch) -> expected_count + """ + expected: dict[tuple[str, str, str, str], int] = {} + if not build_root.exists(): + return expected + print(f"[DEBUG] Scanning build artifacts in: {build_root}", file=sys.stderr) + for artifact_dir in build_root.iterdir(): + if not artifact_dir.is_dir(): + continue + m = re.match(r"test-bin-([A-Za-z0-9_\-]+)-([A-Za-z0-9_\-]+)", artifact_dir.name) + if not m: + continue + target = m.group(1) + test_type = m.group(2) + print(f"[DEBUG] Artifact group target={target} type={test_type} dir={artifact_dir}", file=sys.stderr) + + # Group build*.tmp directories by sketch + # Structure: test-bin--//build*.tmp/ + sketches_processed = set() + + # Find all build*.tmp directories and process each sketch once + for build_tmp in artifact_dir.rglob("build*.tmp"): + if not build_tmp.is_dir(): + continue + if not re.search(r"build\d*\.tmp$", build_tmp.name): + continue + + # Path structure is: test-bin--//build*.tmp/ + sketch = build_tmp.parent.name + + # Skip if we already processed this sketch + if sketch in sketches_processed: + continue + sketches_processed.add(sketch) + + print(f"[DEBUG] Processing sketch={sketch} from artifact {artifact_dir.name}", file=sys.stderr) + + ci_path = build_tmp / "ci.yml" + sdk_path = build_tmp / "sdkconfig" + + # Read ci.yml if it exists, otherwise use empty (defaults) + ci_text = "" + if ci_path.exists(): + try: + ci_text = ci_path.read_text(encoding="utf-8") + except Exception as e: + logging.warning(f"Failed to read ci.yml from {ci_path}: {e}") + else: + logging.debug(f"No ci.yml found at {ci_path}, using defaults") + + try: + sdk_text = sdk_path.read_text(encoding="utf-8", errors="ignore") if sdk_path.exists() else "" + except Exception as e: + logging.warning(f"Failed to read sdkconfig from {sdk_path}: {e}") + sdk_text = "" + + ci = _parse_ci_yml(ci_text) + fqbn_counts = _fqbn_counts_from_yaml(ci) + + # Determine allowed platforms for this test + # Performance tests are only run on hardware + if test_type == "performance": + allowed_platforms = ["hardware"] + else: + allowed_platforms = [] + platforms_cfg = ci.get("platforms") if isinstance(ci, dict) else None + for plat in ("hardware", "wokwi", "qemu"): + dis = None + if isinstance(platforms_cfg, dict): + dis = platforms_cfg.get(plat) + if dis is False: + continue + allowed_platforms.append(plat) + + # Requirements check + minimal = { + "requires": ci.get("requires") or [], + "requires_any": ci.get("requires_any") or [], + } + if not _sdkconfig_meets(minimal, sdk_text): + print(f"[DEBUG] Skip (requirements not met): target={target} type={test_type} sketch={sketch}", file=sys.stderr) + continue + + # Expected runs = number from fqbn_counts in ci.yml (how many FQBNs for this target) + exp_runs = fqbn_counts.get(target, 0) or 1 + print(f"[DEBUG] ci.yml specifies {exp_runs} FQBN(s) for target={target}", file=sys.stderr) + + for plat in allowed_platforms: + expected[(plat, target, test_type, sketch)] = exp_runs + print(f"[DEBUG] Expected: plat={plat} target={target} type={test_type} sketch={sketch} runs={exp_runs}", file=sys.stderr) + + if len(sketches_processed) == 0: + print(f"[DEBUG] No sketches found in this artifact group", file=sys.stderr) + return expected + + +def scan_executed_xml(xml_root: Path, valid_types: set[str]) -> dict[tuple[str, str, str, str], int]: + """Return executed counts per (platform, target, type, sketch). + Type/sketch/target are inferred from ...////.xml + """ + counts: dict[tuple[str, str, str, str], int] = {} + if not xml_root.exists(): + print(f"[DEBUG] Results root not found: {xml_root}", file=sys.stderr) + return counts + print(f"[DEBUG] Scanning executed XMLs in: {xml_root}", file=sys.stderr) + for xml_path in xml_root.rglob("*.xml"): + if not xml_path.is_file(): + continue + rel = str(xml_path) + platform = "hardware" + if "test-results-wokwi-" in rel: + platform = "wokwi" + elif "test-results-qemu-" in rel: + platform = "qemu" + # Expect ...////*.xml + parts = xml_path.parts + t_idx = -1 + for i, p in enumerate(parts): + if p in valid_types: + t_idx = i + if t_idx == -1 or t_idx + 3 >= len(parts): + continue + test_type = parts[t_idx] + sketch = parts[t_idx + 1] + target = parts[t_idx + 2] + key = (platform, target, test_type, sketch) + old_count = counts.get(key, 0) + counts[key] = old_count + 1 + print(f"[DEBUG] Executed XML #{old_count + 1}: plat={platform} target={target} type={test_type} sketch={sketch} file={xml_path.name}", file=sys.stderr) + print(f"[DEBUG] Executed entries discovered: {len(counts)}", file=sys.stderr) + return counts + + +def write_missing_xml(out_root: Path, platform: str, target: str, test_type: str, sketch: str, missing_count: int): + out_tests_dir = out_root / f"test-results-{platform}" / "tests" / test_type / sketch / target + out_tests_dir.mkdir(parents=True, exist_ok=True) + # Create one XML per missing index + for idx in range(missing_count): + suite_name = f"{test_type}_{platform}_{target}_{sketch}" + root = Element("testsuite", name=suite_name, tests="1", failures="0", errors="1") + case = SubElement(root, "testcase", classname=f"{test_type}.{sketch}", name="missing-run") + error = SubElement(case, "error", message="Expected test run missing") + error.text = "This placeholder indicates an expected test run did not execute." + tree = ElementTree(root) + out_file = out_tests_dir / f"{sketch}_missing_{idx}.xml" + tree.write(out_file, encoding="utf-8", xml_declaration=True) + + +def main(): + # Args: + if len(sys.argv) != 4: + print(f"Usage: {sys.argv[0]} ", file=sys.stderr) + return 2 + + build_root = Path(sys.argv[1]).resolve() + results_root = Path(sys.argv[2]).resolve() + out_root = Path(sys.argv[3]).resolve() + + # Validate inputs + if not build_root.is_dir(): + print(f"ERROR: Build artifacts directory not found: {build_root}", file=sys.stderr) + return 2 + if not results_root.is_dir(): + print(f"ERROR: Test results directory not found: {results_root}", file=sys.stderr) + return 2 + # Ensure output directory exists + try: + out_root.mkdir(parents=True, exist_ok=True) + except Exception as e: + print(f"ERROR: Failed to create output directory {out_root}: {e}", file=sys.stderr) + return 2 + + # Read matrices from environment variables injected by workflow + hw_enabled = (os.environ.get("HW_TESTS_ENABLED", "false").lower() == "true") + wokwi_enabled = (os.environ.get("WOKWI_TESTS_ENABLED", "false").lower() == "true") + qemu_enabled = (os.environ.get("QEMU_TESTS_ENABLED", "false").lower() == "true") + + hw_targets = parse_array(os.environ.get("HW_TARGETS", "[]")) + wokwi_targets = parse_array(os.environ.get("WOKWI_TARGETS", "[]")) + qemu_targets = parse_array(os.environ.get("QEMU_TARGETS", "[]")) + + hw_types = parse_array(os.environ.get("HW_TYPES", "[]")) + wokwi_types = parse_array(os.environ.get("WOKWI_TYPES", "[]")) + qemu_types = parse_array(os.environ.get("QEMU_TYPES", "[]")) + + expected = expected_from_artifacts(build_root) # (platform, target, type, sketch) -> expected_count + executed_types = set(hw_types + wokwi_types + qemu_types) + executed = scan_executed_xml(results_root, executed_types) # (platform, target, type, sketch) -> count + print(f"[DEBUG] Expected entries computed: {len(expected)}", file=sys.stderr) + + # Filter expected by enabled platforms and target/type matrices + enabled_plats = set() + if hw_enabled: + enabled_plats.add("hardware") + if wokwi_enabled: + enabled_plats.add("wokwi") + if qemu_enabled: + enabled_plats.add("qemu") + + # Build platform-specific target and type sets + plat_targets = { + "hardware": set(hw_targets), + "wokwi": set(wokwi_targets), + "qemu": set(qemu_targets), + } + plat_types = { + "hardware": set(hw_types), + "wokwi": set(wokwi_types), + "qemu": set(qemu_types), + } + + missing_total = 0 + extra_total = 0 + for (plat, target, test_type, sketch), exp_count in expected.items(): + if plat not in enabled_plats: + continue + # Check if target and type are valid for this specific platform + if target not in plat_targets.get(plat, set()): + continue + if test_type not in plat_types.get(plat, set()): + continue + got = executed.get((plat, target, test_type, sketch), 0) + if got < exp_count: + print(f"[DEBUG] Missing: plat={plat} target={target} type={test_type} sketch={sketch} expected={exp_count} got={got}", file=sys.stderr) + write_missing_xml(out_root, plat, target, test_type, sketch, exp_count - got) + missing_total += (exp_count - got) + elif got > exp_count: + print(f"[DEBUG] Extra runs: plat={plat} target={target} type={test_type} sketch={sketch} expected={exp_count} got={got}", file=sys.stderr) + extra_total += (got - exp_count) + + # Check for executed tests that were not expected at all + for (plat, target, test_type, sketch), got in executed.items(): + if (plat, target, test_type, sketch) not in expected: + print(f"[DEBUG] Unexpected test: plat={plat} target={target} type={test_type} sketch={sketch} got={got} (not in expected)", file=sys.stderr) + + print(f"Generated {missing_total} placeholder JUnit files for missing runs.", file=sys.stderr) + if extra_total > 0: + print(f"WARNING: {extra_total} extra test runs detected (more than expected).", file=sys.stderr) + + +if __name__ == "__main__": + sys.exit(main()) + + diff --git a/.github/scripts/get_affected.py b/.github/scripts/get_affected.py index a85f30470e2..a7d993c4be3 100755 --- a/.github/scripts/get_affected.py +++ b/.github/scripts/get_affected.py @@ -63,7 +63,7 @@ Build file patterns -------------------- - **build_files**: Core Arduino build system files (platform.txt, variants/**, etc.) -- **sketch_build_files**: Sketch-specific files (ci.json, *.csv in example directories) +- **sketch_build_files**: Sketch-specific files (ci.yml, *.csv in example directories) - **idf_build_files**: Core IDF build system files (CMakeLists.txt, idf_component.yml, etc.) - **idf_project_files**: Project-specific IDF files (per-example CMakeLists.txt, sdkconfig, etc.) @@ -128,7 +128,7 @@ # Files that are used by the sketch build system. # If any of these files change, the sketch should be recompiled. sketch_build_files = [ - "libraries/*/examples/**/ci.json", + "libraries/*/examples/**/ci.yml", "libraries/*/examples/**/*.csv", ] @@ -150,7 +150,7 @@ # If any of these files change, the example that uses them should be recompiled. idf_project_files = [ "idf_component_examples/*/CMakeLists.txt", - "idf_component_examples/*/ci.json", + "idf_component_examples/*/ci.yml", "idf_component_examples/*/*.csv", "idf_component_examples/*/sdkconfig*", "idf_component_examples/*/main/*", diff --git a/.github/scripts/on-push-idf.sh b/.github/scripts/on-push-idf.sh index 166bfe13eb1..66a61b2dff6 100644 --- a/.github/scripts/on-push-idf.sh +++ b/.github/scripts/on-push-idf.sh @@ -17,9 +17,9 @@ fi for example in $affected_examples; do example_path="$PWD/components/arduino-esp32/$example" - if [ -f "$example_path/ci.json" ]; then + if [ -f "$example_path/ci.yml" ]; then # If the target is listed as false, skip the sketch. Otherwise, include it. - is_target=$(jq -r --arg target "$IDF_TARGET" '.targets[$target]' "$example_path/ci.json") + is_target=$(yq eval ".targets.${IDF_TARGET}" "$example_path/ci.yml" 2>/dev/null) if [[ "$is_target" == "false" ]]; then printf "\n\033[93mSkipping %s for target %s\033[0m\n\n" "$example" "$IDF_TARGET" continue diff --git a/.github/scripts/runtime_table_generator.py b/.github/scripts/runtime_table_generator.py new file mode 100644 index 00000000000..bf6c544f452 --- /dev/null +++ b/.github/scripts/runtime_table_generator.py @@ -0,0 +1,181 @@ +import json +import logging +import sys +import os +import re +from datetime import datetime + +# Configure logging +logging.basicConfig(level=logging.DEBUG, format='[%(levelname)s] %(message)s', stream=sys.stderr) + +SUCCESS_SYMBOL = ":white_check_mark:" +FAILURE_SYMBOL = ":x:" +ERROR_SYMBOL = ":fire:" + +# Load the JSON file passed as argument to the script +with open(sys.argv[1], "r") as f: + data = json.load(f) + tests = sorted(data["stats"]["suite_details"], key=lambda x: x["name"]) + +# Get commit SHA from command line argument or environment variable +commit_sha = None +if len(sys.argv) < 2 or len(sys.argv) > 3: + print(f"Usage: python {sys.argv[0]} [commit_sha]", file=sys.stderr) + sys.exit(1) +elif len(sys.argv) == 3: # Commit SHA is provided as argument + commit_sha = sys.argv[2] +elif "GITHUB_SHA" in os.environ: # Commit SHA is provided as environment variable + commit_sha = os.environ["GITHUB_SHA"] +else: # Commit SHA is not provided + print("Commit SHA is not provided. Please provide it as an argument or set the GITHUB_SHA environment variable.", file=sys.stderr) + sys.exit(1) + +# Generate the table + +print("## Runtime Test Results") +print("") + +try: + if os.environ["IS_FAILING"] == "true": + print(f"{FAILURE_SYMBOL} **The test workflows are failing. Please check the run logs.** {FAILURE_SYMBOL}") + print("") + else: + print(f"{SUCCESS_SYMBOL} **The test workflows are passing.** {SUCCESS_SYMBOL}") + print("") +except KeyError as e: + logging.debug(f"IS_FAILING environment variable not set: {e}") + +print("### Validation Tests") + +# Read platform-specific target lists from environment variables +# Map env var names to test suite platform names: hw->hardware, wokwi->wokwi, qemu->qemu +platform_targets = {} +try: + hw_targets = json.loads(os.environ.get("HW_TARGETS", "[]")) + wokwi_targets = json.loads(os.environ.get("WOKWI_TARGETS", "[]")) + qemu_targets = json.loads(os.environ.get("QEMU_TARGETS", "[]")) + + platform_targets["hardware"] = sorted(hw_targets) if hw_targets else [] + platform_targets["wokwi"] = sorted(wokwi_targets) if wokwi_targets else [] + platform_targets["qemu"] = sorted(qemu_targets) if qemu_targets else [] +except (json.JSONDecodeError, KeyError) as e: + print(f"Warning: Could not parse platform targets from environment: {e}", file=sys.stderr) + platform_targets = {"hardware": [], "wokwi": [], "qemu": []} + +proc_test_data = {} + +# Build executed tests map and collect targets +executed_tests_index = {} # {(platform, target, test_name): {tests, failures, errors}} +executed_run_counts = {} # {(platform, target, test_name): int} + +for test in tests: + if test["name"].startswith("performance_"): + continue + + try: + test_type, platform, target, rest = test["name"].split("_", 3) + except ValueError as e: + # Unexpected name, skip + test_name = test.get("name", "unknown") + logging.warning(f"Skipping test with unexpected name format '{test_name}': {e}") + continue + + # Remove an optional trailing numeric index (multi-FQBN builds) + m = re.match(r"(.+?)(\d+)?$", rest) + test_name = m.group(1) if m else rest + + if platform not in proc_test_data: + proc_test_data[platform] = {} + + if test_name not in proc_test_data[platform]: + proc_test_data[platform][test_name] = {} + + if target not in proc_test_data[platform][test_name]: + proc_test_data[platform][test_name][target] = { + "failures": 0, + "total": 0, + "errors": 0 + } + + proc_test_data[platform][test_name][target]["total"] += test["tests"] + proc_test_data[platform][test_name][target]["failures"] += test["failures"] + proc_test_data[platform][test_name][target]["errors"] += test["errors"] + + executed_tests_index[(platform, target, test_name)] = proc_test_data[platform][test_name][target] + executed_run_counts[(platform, target, test_name)] = executed_run_counts.get((platform, target, test_name), 0) + 1 + +# Render only executed tests grouped by platform/target/test +for platform in proc_test_data: + print("") + print(f"#### {platform.capitalize()}") + print("") + + # Get platform-specific target list + target_list = platform_targets.get(platform, []) + + if not target_list: + print(f"No targets configured for platform: {platform}") + continue + + print("Test", end="") + + for target in target_list: + # Make target name uppercase and add hyfen if not esp32 + display_target = target + if target != "esp32": + display_target = target.replace("esp32", "esp32-") + + print(f"|{display_target.upper()}", end="") + + print("") + print("-" + "|:-:" * len(target_list)) + + platform_executed = proc_test_data.get(platform, {}) + for test_name in sorted(platform_executed.keys()): + print(f"{test_name}", end="") + for target in target_list: + executed_cell = platform_executed.get(test_name, {}).get(target) + if executed_cell: + if executed_cell["errors"] > 0: + print(f"|Error {ERROR_SYMBOL}", end="") + else: + print(f"|{executed_cell['total']-executed_cell['failures']}/{executed_cell['total']}", end="") + if executed_cell["failures"] > 0: + print(f" {FAILURE_SYMBOL}", end="") + else: + print(f" {SUCCESS_SYMBOL}", end="") + else: + print("|-", end="") + print("") + +print("\n") +print(f"Generated on: {datetime.now().strftime('%Y/%m/%d %H:%M:%S')}") +print("") + +try: + repo = os.environ['GITHUB_REPOSITORY'] + commit_url = f"https://github.com/{repo}/commit/{commit_sha}" + build_workflow_url = f"https://github.com/{repo}/actions/runs/{os.environ['BUILD_RUN_ID']}" + wokwi_hw_workflow_url = f"https://github.com/{repo}/actions/runs/{os.environ['WOKWI_RUN_ID']}" + results_workflow_url = f"https://github.com/{repo}/actions/runs/{os.environ['RESULTS_RUN_ID']}" + results_url = os.environ['RESULTS_URL'] + print(f"[Commit]({commit_url}) / [Build and QEMU run]({build_workflow_url}) / [Hardware and Wokwi run]({wokwi_hw_workflow_url}) / [Results processing]({results_workflow_url})") + print("") + print(f"[Test results]({results_url})") +except KeyError as e: + logging.debug(f"Required environment variable for URL generation not set: {e}") + +# Save test results to JSON file +results_data = { + "commit_sha": commit_sha, + "tests_failed": os.environ["IS_FAILING"] == "true", + "test_data": proc_test_data, + "generated_at": datetime.now().isoformat() +} + +with open("test_results.json", "w") as f: + json.dump(results_data, f, indent=2) + +print(f"\nTest results saved to test_results.json", file=sys.stderr) +print(f"Commit SHA: {commit_sha}", file=sys.stderr) +print(f"Tests failed: {results_data['tests_failed']}", file=sys.stderr) diff --git a/.github/scripts/sketch_utils.sh b/.github/scripts/sketch_utils.sh index 02990ca8914..7452e494084 100755 --- a/.github/scripts/sketch_utils.sh +++ b/.github/scripts/sketch_utils.sh @@ -15,13 +15,13 @@ function check_requirements { # check_requirements local requirements local requirements_or - if [ ! -f "$sdkconfig_path" ] || [ ! -f "$sketchdir/ci.json" ]; then - echo "WARNING: sdkconfig or ci.json not found. Assuming requirements are met." 1>&2 + if [ ! -f "$sdkconfig_path" ] || [ ! -f "$sketchdir/ci.yml" ]; then + echo "WARNING: sdkconfig or ci.yml not found. Assuming requirements are met." 1>&2 # Return 1 on error to force the sketch to be built and fail. This way the # CI will fail and the user will know that the sketch has a problem. else # Check if the sketch requires any configuration options (AND) - requirements=$(jq -r '.requires[]? // empty' "$sketchdir/ci.json") + requirements=$(yq eval '.requires[]' "$sketchdir/ci.yml" 2>/dev/null) if [[ "$requirements" != "null" && "$requirements" != "" ]]; then for requirement in $requirements; do requirement=$(echo "$requirement" | xargs) @@ -33,7 +33,7 @@ function check_requirements { # check_requirements fi # Check if the sketch requires any configuration options (OR) - requirements_or=$(jq -r '.requires_any[]? // empty' "$sketchdir/ci.json") + requirements_or=$(yq eval '.requires_any[]' "$sketchdir/ci.yml" 2>/dev/null) if [[ "$requirements_or" != "null" && "$requirements_or" != "" ]]; then local found=false for requirement in $requirements_or; do @@ -122,13 +122,13 @@ function build_sketch { # build_sketch [ext # precedence. Note that the following logic also falls to the default # parameters if no arguments were passed and no file was found. - if [ -z "$options" ] && [ -f "$sketchdir"/ci.json ]; then + if [ -z "$options" ] && [ -f "$sketchdir"/ci.yml ]; then # The config file could contain multiple FQBNs for one chip. If # that's the case we build one time for every FQBN. - len=$(jq -r --arg target "$target" '.fqbn[$target] | length' "$sketchdir"/ci.json) + len=$(yq eval ".fqbn.${target} | length" "$sketchdir"/ci.yml 2>/dev/null || echo 0) if [ "$len" -gt 0 ]; then - fqbn=$(jq -r --arg target "$target" '.fqbn[$target] | sort' "$sketchdir"/ci.json) + fqbn=$(yq eval ".fqbn.${target} | sort | @json" "$sketchdir"/ci.yml) fi fi @@ -138,8 +138,8 @@ function build_sketch { # build_sketch [ext len=1 - if [ -f "$sketchdir"/ci.json ]; then - fqbn_append=$(jq -r '.fqbn_append' "$sketchdir"/ci.json) + if [ -f "$sketchdir"/ci.yml ]; then + fqbn_append=$(yq eval '.fqbn_append' "$sketchdir"/ci.yml 2>/dev/null) if [ "$fqbn_append" == "null" ]; then fqbn_append="" fi @@ -229,9 +229,9 @@ function build_sketch { # build_sketch [ext sketchname=$(basename "$sketchdir") local has_requirements - if [ -f "$sketchdir"/ci.json ]; then + if [ -f "$sketchdir"/ci.yml ]; then # If the target is listed as false, skip the sketch. Otherwise, include it. - is_target=$(jq -r --arg target "$target" '.targets[$target]' "$sketchdir"/ci.json) + is_target=$(yq eval ".targets.${target}" "$sketchdir"/ci.yml 2>/dev/null) if [[ "$is_target" == "false" ]]; then echo "Skipping $sketchname for target $target" exit 0 @@ -244,7 +244,7 @@ function build_sketch { # build_sketch [ext fi fi - # Install libraries from ci.json if they exist + # Install libraries from ci.yml if they exist install_libs -ai "$ide_path" -s "$sketchdir" install_result=$? if [ $install_result -ne 0 ]; then @@ -294,6 +294,11 @@ function build_sketch { # build_sketch [ext exit "$exit_status" fi + # Copy ci.yml alongside compiled binaries for later consumption by reporting tools + if [ -f "$sketchdir/ci.yml" ]; then + cp -f "$sketchdir/ci.yml" "$build_dir/ci.yml" 2>/dev/null || true + fi + if [ -n "$log_compilation" ]; then #Extract the program storage space and dynamic memory usage in bytes and percentage in separate variables from the output, just the value without the string flash_bytes=$(grep -oE 'Sketch uses ([0-9]+) bytes' "$output_file" | awk '{print $3}') @@ -337,6 +342,10 @@ function build_sketch { # build_sketch [ext echo "ERROR: Compilation failed with error code $exit_status" exit $exit_status fi + # Copy ci.yml alongside compiled binaries for later consumption by reporting tools + if [ -f "$sketchdir/ci.yml" ]; then + cp -f "$sketchdir/ci.yml" "$build_dir/ci.yml" 2>/dev/null || true + fi # $ide_path/arduino-builder -compile -logger=human -core-api-version=10810 \ # -fqbn=\"$currfqbn\" \ # -warnings="all" \ @@ -394,9 +403,9 @@ function count_sketches { # count_sketches [target] [ignore-requirements] if [[ "$sketchdirname.ino" != "$sketchname" ]]; then continue - elif [[ -n $target ]] && [[ -f $sketchdir/ci.json ]]; then + elif [[ -n $target ]] && [[ -f $sketchdir/ci.yml ]]; then # If the target is listed as false, skip the sketch. Otherwise, include it. - is_target=$(jq -r --arg target "$target" '.targets[$target]' "$sketchdir"/ci.json) + is_target=$(yq eval ".targets.${target}" "$sketchdir"/ci.yml 2>/dev/null) if [[ "$is_target" == "false" ]]; then continue fi @@ -637,38 +646,38 @@ function install_libs { # install_libs [-v] return 1 fi - if [ ! -f "$sketchdir/ci.json" ]; then - [ "$verbose" = true ] && echo "No ci.json found in $sketchdir, skipping library installation" + if [ ! -f "$sketchdir/ci.yml" ]; then + [ "$verbose" = true ] && echo "No ci.yml found in $sketchdir, skipping library installation" return 0 fi - if ! jq -e . "$sketchdir/ci.json" >/dev/null 2>&1; then - echo "ERROR: $sketchdir/ci.json is not valid JSON" >&2 + if ! yq eval '.' "$sketchdir/ci.yml" >/dev/null 2>&1; then + echo "ERROR: $sketchdir/ci.yml is not valid YAML" >&2 return 1 fi local libs_type - libs_type=$(jq -r '.libs | type' "$sketchdir/ci.json" 2>/dev/null) - if [ -z "$libs_type" ] || [ "$libs_type" = "null" ]; then - [ "$verbose" = true ] && echo "No libs field found in ci.json, skipping library installation" + libs_type=$(yq eval '.libs | type' "$sketchdir/ci.yml" 2>/dev/null) + if [ -z "$libs_type" ] || [ "$libs_type" = "null" ] || [ "$libs_type" = "!!null" ]; then + [ "$verbose" = true ] && echo "No libs field found in ci.yml, skipping library installation" return 0 - elif [ "$libs_type" != "array" ]; then - echo "ERROR: libs field in ci.json must be an array, found: $libs_type" >&2 + elif [ "$libs_type" != "!!seq" ]; then + echo "ERROR: libs field in ci.yml must be an array, found: $libs_type" >&2 return 1 fi local libs_count - libs_count=$(jq -r '.libs | length' "$sketchdir/ci.json" 2>/dev/null) + libs_count=$(yq eval '.libs | length' "$sketchdir/ci.yml" 2>/dev/null) if [ "$libs_count" -eq 0 ]; then - [ "$verbose" = true ] && echo "libs array is empty in ci.json, skipping library installation" + [ "$verbose" = true ] && echo "libs array is empty in ci.yml, skipping library installation" return 0 fi - echo "Installing $libs_count libraries from $sketchdir/ci.json" + echo "Installing $libs_count libraries from $sketchdir/ci.yml" local needs_unsafe=false local original_unsafe_setting="" local libs - libs=$(jq -r '.libs[]? // empty' "$sketchdir/ci.json") + libs=$(yq eval '.libs[]' "$sketchdir/ci.yml" 2>/dev/null) # Detect any git-like URL (GitHub/GitLab/Bitbucket/self-hosted/ssh) for lib in $libs; do @@ -749,7 +758,7 @@ Available commands: build: Build a sketch. chunk_build: Build a chunk of sketches. check_requirements: Check if target meets sketch requirements. - install_libs: Install libraries from ci.json file. + install_libs: Install libraries from ci.yml file. " cmd=$1 diff --git a/.github/scripts/tests_matrix.sh b/.github/scripts/tests_matrix.sh index 01cc122753c..6b4f8001fc3 100644 --- a/.github/scripts/tests_matrix.sh +++ b/.github/scripts/tests_matrix.sh @@ -1,29 +1,49 @@ #!/bin/bash -build_types="'validation'" -hw_types="'validation'" -wokwi_types="'validation'" -qemu_types="'validation'" +# QEMU is disabled for now +qemu_enabled="false" + +build_types='"validation"' +hw_types='"validation"' +wokwi_types='"validation"' +qemu_types='"validation"' if [[ $IS_PR != 'true' ]] || [[ $PERFORMANCE_ENABLED == 'true' ]]; then - build_types+=",'performance'" - hw_types+=",'performance'" - #wokwi_types+=",'performance'" - #qemu_types+=",'performance'" + build_types+=',"performance"' + hw_types+=',"performance"' + #wokwi_types+=',"performance"' + #qemu_types+=',"performance"' fi -targets="'esp32','esp32s2','esp32s3','esp32c3','esp32c6','esp32h2','esp32p4'" +hw_targets='"esp32","esp32s2","esp32s3","esp32c3","esp32c5","esp32c6","esp32h2","esp32p4"' +wokwi_targets='"esp32","esp32s2","esp32s3","esp32c3","esp32c6","esp32h2","esp32p4"' +qemu_targets='"esp32","esp32c3"' + +# The build targets should be the sum of the hw, wokwi and qemu targets without duplicates +build_targets=$(echo "$hw_targets,$wokwi_targets,$qemu_targets" | tr ',' '\n' | sort -u | tr '\n' ',' | sed 's/,$//') mkdir -p info -echo "[$wokwi_types]" > info/wokwi_types.txt -echo "[$hw_types]" > info/hw_types.txt -echo "[$targets]" > info/targets.txt +# Create a single JSON file with all test matrix information +cat > info/test_matrix.json <> "$GITHUB_OUTPUT" diff --git a/.github/scripts/tests_run.sh b/.github/scripts/tests_run.sh index 26ec1a10d43..8dfda3d5154 100755 --- a/.github/scripts/tests_run.sh +++ b/.github/scripts/tests_run.sh @@ -17,8 +17,8 @@ function run_test { sketchname=$(basename "$sketchdir") test_type=$(basename "$(dirname "$sketchdir")") - if [ "$options" -eq 0 ] && [ -f "$sketchdir"/ci.json ]; then - len=$(jq -r --arg target "$target" '.fqbn[$target] | length' "$sketchdir"/ci.json) + if [ "$options" -eq 0 ] && [ -f "$sketchdir"/ci.yml ]; then + len=$(yq eval ".fqbn.${target} | length" "$sketchdir"/ci.yml 2>/dev/null || echo 0) if [ "$len" -eq 0 ]; then len=1 fi @@ -32,10 +32,10 @@ function run_test { sdkconfig_path="$HOME/.arduino/tests/$target/$sketchname/build0.tmp/sdkconfig" fi - if [ -f "$sketchdir"/ci.json ]; then + if [ -f "$sketchdir"/ci.yml ]; then # If the target or platform is listed as false, skip the sketch. Otherwise, include it. - is_target=$(jq -r --arg target "$target" '.targets[$target]' "$sketchdir"/ci.json) - selected_platform=$(jq -r --arg platform "$platform" '.platforms[$platform]' "$sketchdir"/ci.json) + is_target=$(yq eval ".targets.${target}" "$sketchdir"/ci.yml 2>/dev/null) + selected_platform=$(yq eval ".platforms.${platform}" "$sketchdir"/ci.yml 2>/dev/null) if [[ $is_target == "false" ]] || [[ $selected_platform == "false" ]]; then printf "\033[93mSkipping %s test for %s, platform: %s\033[0m\n" "$sketchname" "$target" "$platform" @@ -68,17 +68,17 @@ function run_test { fqbn="Default" if [ "$len" -ne 1 ]; then - fqbn=$(jq -r --arg target "$target" --argjson i "$i" '.fqbn[$target] | sort | .[$i]' "$sketchdir"/ci.json) - elif [ -f "$sketchdir"/ci.json ]; then - has_fqbn=$(jq -r --arg target "$target" '.fqbn[$target]' "$sketchdir"/ci.json) + fqbn=$(yq eval ".fqbn.${target} | sort | .[${i}]" "$sketchdir"/ci.yml 2>/dev/null) + elif [ -f "$sketchdir"/ci.yml ]; then + has_fqbn=$(yq eval ".fqbn.${target}" "$sketchdir"/ci.yml 2>/dev/null) if [ "$has_fqbn" != "null" ]; then - fqbn=$(jq -r --arg target "$target" '.fqbn[$target] | .[0]' "$sketchdir"/ci.json) + fqbn=$(yq eval ".fqbn.${target} | .[0]" "$sketchdir"/ci.yml 2>/dev/null) fi fi printf "\033[95mRunning test: %s -- Config: %s\033[0m\n" "$sketchname" "$fqbn" if [ "$erase_flash" -eq 1 ]; then - esptool.py -c "$target" erase_flash + esptool -c "$target" erase-flash fi if [ "$len" -ne 1 ]; then diff --git a/.github/workflows/build_component.yml b/.github/workflows/build_component.yml index bc32f7a8999..e5c0f244f65 100644 --- a/.github/workflows/build_component.yml +++ b/.github/workflows/build_component.yml @@ -205,6 +205,14 @@ jobs: - name: Setup jq uses: dcarbone/install-jq-action@e397bd87438d72198f81efd21f876461183d383a # v3.0.1 + - name: Setup yq + run: | + YQ_VERSION="v4.48.1" + YQ_BINARY=yq_linux_amd64 + wget -q https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/${YQ_BINARY} -O /usr/bin/yq + chmod +x /usr/bin/yq + yq --version + - name: Download affected examples uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 with: diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 690993504c2..67ae7505c04 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -29,7 +29,7 @@ on: - "libraries/**/*.c" - "libraries/**/*.h" - "libraries/**/*.ino" - - "libraries/**/ci.json" + - "libraries/**/ci.yml" - "package/**" - "tools/get.*" - "platform.txt" @@ -188,9 +188,18 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.0.4 with: python-version: "3.x" + + # Already installed by default in MacOS and Linux + - name: Install yq (Windows) + if: matrix.os == 'windows-latest' + run: | + choco install yq -y + yq --version + - name: Build Sketches run: bash ./.github/scripts/on-push.sh diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8c46ef07661..6807f108b49 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,9 +4,8 @@ # As the Wokwi tests require access to secrets, they are run in a separate workflow. # We need to ensure that the artifacts from previous tests in the chain are propagated for publishing the results. # This is the current trigger sequence for the tests: -# tests.yml -> tests_wokwi.yml -> tests_results.yml +# tests.yml -> tests_hw_wokwi.yml -> tests_results.yml # ⌙> tests_build.yml -# ⌙> tests_hw.yml # ⌙> tests_qemu.yml name: Runtime Tests @@ -54,10 +53,10 @@ jobs: runs-on: ubuntu-latest outputs: build-types: ${{ steps.set-matrix.outputs.build-types }} - hw-types: ${{ steps.set-matrix.outputs.hw-types }} - wokwi-types: ${{ steps.set-matrix.outputs.wokwi-types }} + build-targets: ${{ steps.set-matrix.outputs.build-targets }} + qemu-enabled: ${{ steps.set-matrix.outputs.qemu-enabled }} qemu-types: ${{ steps.set-matrix.outputs.qemu-types }} - targets: ${{ steps.set-matrix.outputs.targets }} + qemu-targets: ${{ steps.set-matrix.outputs.qemu-targets }} env: IS_PR: ${{ github.event.pull_request.number != null }} PERFORMANCE_ENABLED: ${{ contains(github.event.pull_request.labels.*.name, 'perf_test') }} @@ -84,22 +83,21 @@ jobs: strategy: matrix: type: ${{ fromJson(needs.gen-matrix.outputs.build-types) }} - chip: ${{ fromJson(needs.gen-matrix.outputs.targets) }} + chip: ${{ fromJson(needs.gen-matrix.outputs.build-targets) }} with: type: ${{ matrix.type }} chip: ${{ matrix.chip }} - # This job is disabled for now call-qemu-tests: name: QEMU uses: ./.github/workflows/tests_qemu.yml needs: [gen-matrix, call-build-tests] - if: false + if: ${{ needs.gen-matrix.outputs.qemu-enabled == 'true' }} strategy: fail-fast: false matrix: type: ${{ fromJson(needs.gen-matrix.outputs.qemu-types) }} - chip: ["esp32", "esp32c3"] + chip: ${{ fromJson(needs.gen-matrix.outputs.qemu-targets) }} with: type: ${{ matrix.type }} chip: ${{ matrix.chip }} diff --git a/.github/workflows/tests_build.yml b/.github/workflows/tests_build.yml index bf5a33f538f..cd28cc9afbf 100644 --- a/.github/workflows/tests_build.yml +++ b/.github/workflows/tests_build.yml @@ -33,6 +33,7 @@ jobs: ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.elf ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.json ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/sdkconfig + ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/ci.yml - name: Evaluate if tests should be built id: check-build @@ -80,6 +81,7 @@ jobs: ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.elf ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.json ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/sdkconfig + ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/ci.yml - name: Upload ${{ inputs.chip }} ${{ inputs.type }} binaries as artifacts uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 @@ -91,3 +93,4 @@ jobs: ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.elf ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.json ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/sdkconfig + ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/ci.yml diff --git a/.github/workflows/tests_hw_wokwi.yml b/.github/workflows/tests_hw_wokwi.yml index 14e7085eabb..6603cdf39a0 100644 --- a/.github/workflows/tests_hw_wokwi.yml +++ b/.github/workflows/tests_hw_wokwi.yml @@ -24,10 +24,12 @@ jobs: pr_num: ${{ steps.set-ref.outputs.pr_num }} ref: ${{ steps.set-ref.outputs.ref }} base: ${{ steps.set-ref.outputs.base }} - targets: ${{ steps.set-ref.outputs.targets }} - wokwi_types: ${{ steps.set-ref.outputs.wokwi_types }} hw_types: ${{ steps.set-ref.outputs.hw_types }} + hw_targets: ${{ steps.set-ref.outputs.hw_targets }} + wokwi_types: ${{ steps.set-ref.outputs.wokwi_types }} + wokwi_targets: ${{ steps.set-ref.outputs.wokwi_targets }} hw_tests_enabled: ${{ steps.set-ref.outputs.hw_tests_enabled }} + wokwi_tests_enabled: ${{ steps.set-ref.outputs.wokwi_tests_enabled }} push_time: ${{ steps.set-ref.outputs.push_time }} steps: - name: Report pending @@ -67,8 +69,13 @@ jobs: path: artifacts/matrix_info - name: Get info + env: + GITLAB_ACCESS_TOKEN: ${{ secrets.GITLAB_ACCESS_TOKEN }} + WOKWI_CLI_TOKEN: ${{ secrets.WOKWI_CLI_TOKEN }} id: set-ref run: | + # Get info and sanitize it to avoid security issues + pr_num=$(jq -r '.pull_request.number' artifacts/event_file/event.json | tr -cd "[:digit:]") if [ -z "$pr_num" ] || [ "$pr_num" == "null" ]; then pr_num="" @@ -89,16 +96,28 @@ jobs: base=${{ github.ref }} fi - hw_tests_enabled="true" - if [[ -n "$pr_num" ]]; then - # This is a PR, check for hil_test label - has_hil_label=$(jq -r '.pull_request.labels[]?.name' artifacts/event_file/event.json 2>/dev/null | grep -q "hil_test" && echo "true" || echo "false") - echo "Has hil_test label: $has_hil_label" + if [ -n "$GITLAB_ACCESS_TOKEN" ]; then + hw_tests_enabled="true" + if [[ -n "$pr_num" ]]; then + # This is a PR, check for hil_test label + has_hil_label=$(jq -r '.pull_request.labels[]?.name' artifacts/event_file/event.json 2>/dev/null | grep -q "hil_test" && echo "true" || echo "false") + echo "Has hil_test label: $has_hil_label" - if [[ "$has_hil_label" != "true" ]]; then - echo "PR does not have hil_test label, hardware tests will be disabled" - hw_tests_enabled="false" + if [[ "$has_hil_label" != "true" ]]; then + echo "PR does not have hil_test label, hardware tests will be disabled" + hw_tests_enabled="false" + fi fi + else + echo "GITLAB_ACCESS_TOKEN is not set, hardware tests will be disabled" + hw_tests_enabled="false" + fi + + if [ -n "$WOKWI_CLI_TOKEN" ]; then + wokwi_tests_enabled="true" + else + echo "WOKWI_CLI_TOKEN is not set, wokwi tests will be disabled" + wokwi_tests_enabled="false" fi push_time=$(jq -r '.repository.pushed_at' artifacts/event_file/event.json | tr -cd "[:alnum:]:-") @@ -106,55 +125,74 @@ jobs: push_time="" fi - wokwi_types=$(cat artifacts/matrix_info/wokwi_types.txt | tr -cd "[:alpha:],[]'") - hw_types=$(cat artifacts/matrix_info/hw_types.txt | tr -cd "[:alpha:],[]'") - targets=$(cat artifacts/matrix_info/targets.txt | tr -cd "[:alnum:],[]'") + hw_targets=$(jq -c '.hw_targets' artifacts/matrix_info/test_matrix.json | tr -cd "[:alnum:],[]\"") + hw_types=$(jq -c '.hw_types' artifacts/matrix_info/test_matrix.json | tr -cd "[:alpha:],[]\"") + wokwi_targets=$(jq -c '.wokwi_targets' artifacts/matrix_info/test_matrix.json | tr -cd "[:alnum:],[]\"") + wokwi_types=$(jq -c '.wokwi_types' artifacts/matrix_info/test_matrix.json | tr -cd "[:alpha:],[]\"") + qemu_tests_enabled=$(jq -r '.qemu_enabled' artifacts/matrix_info/test_matrix.json | tr -cd "[:alpha:]") + qemu_targets=$(jq -c '.qemu_targets' artifacts/matrix_info/test_matrix.json | tr -cd "[:alnum:],[]\"") + qemu_types=$(jq -c '.qemu_types' artifacts/matrix_info/test_matrix.json | tr -cd "[:alpha:],[]\"") echo "base = $base" - echo "targets = $targets" - echo "wokwi_types = $wokwi_types" + echo "hw_targets = $hw_targets" echo "hw_types = $hw_types" + echo "wokwi_targets = $wokwi_targets" + echo "wokwi_types = $wokwi_types" + echo "qemu_tests_enabled = $qemu_tests_enabled" + echo "qemu_targets = $qemu_targets" + echo "qemu_types = $qemu_types" echo "pr_num = $pr_num" echo "hw_tests_enabled = $hw_tests_enabled" + echo "wokwi_tests_enabled = $wokwi_tests_enabled" echo "push_time = $push_time" - printf "$ref" >> artifacts/ref.txt - printf "Ref = " - cat artifacts/ref.txt - - printf "${{ github.event.workflow_run.event }}" >> artifacts/event.txt - printf "\nEvent name = " - cat artifacts/event.txt - - printf "${{ github.event.workflow_run.head_sha || github.sha }}" >> artifacts/sha.txt - printf "\nHead SHA = " - cat artifacts/sha.txt - - printf "$action" >> artifacts/action.txt - printf "\nAction = " - cat artifacts/action.txt - - printf "${{ github.event.workflow_run.id }}" >> artifacts/run_id.txt - printf "\nRun ID = " - cat artifacts/run_id.txt + conclusion="${{ github.event.workflow_run.conclusion }}" + run_id="${{ github.event.workflow_run.id }}" + event="${{ github.event.workflow_run.event }}" + sha="${{ github.event.workflow_run.head_sha || github.sha }}" + + # Create a single JSON file with all workflow run information + cat > artifacts/workflow_info.json <> artifacts/conclusion.txt - printf "\nConclusion = " - cat artifacts/conclusion.txt - echo "pr_num=$pr_num" >> $GITHUB_OUTPUT echo "base=$base" >> $GITHUB_OUTPUT - echo "targets=$targets" >> $GITHUB_OUTPUT - echo "wokwi_types=$wokwi_types" >> $GITHUB_OUTPUT + echo "hw_targets=$hw_targets" >> $GITHUB_OUTPUT echo "hw_types=$hw_types" >> $GITHUB_OUTPUT + echo "wokwi_targets=$wokwi_targets" >> $GITHUB_OUTPUT + echo "wokwi_types=$wokwi_types" >> $GITHUB_OUTPUT echo "ref=$ref" >> $GITHUB_OUTPUT echo "hw_tests_enabled=$hw_tests_enabled" >> $GITHUB_OUTPUT + echo "wokwi_tests_enabled=$wokwi_tests_enabled" >> $GITHUB_OUTPUT echo "push_time=$push_time" >> $GITHUB_OUTPUT - name: Download and extract parent QEMU results @@ -256,8 +294,9 @@ jobs: echo "enabled=$enabled" >> $GITHUB_OUTPUT - - name: Wait for GitLab sync + - name: Wait for GitLab sync and prepare variables if: ${{ steps.check-tests.outputs.enabled == 'true' }} + id: prepare-variables env: PUSH_TIME: ${{ needs.get-artifacts.outputs.push_time }} run: | @@ -299,6 +338,16 @@ jobs: echo "Proceeding with GitLab pipeline trigger..." + # Make targets/types comma-separated strings (remove brackets and quotes) + test_types=$(printf '%s' "${{ needs.get-artifacts.outputs.hw_types }}" | sed -e 's/[][]//g' -e 's/"//g') + test_chips=$(printf '%s' "${{ needs.get-artifacts.outputs.hw_targets }}" | sed -e 's/[][]//g' -e 's/"//g') + echo "test_types=$test_types" + echo "test_chips=$test_chips" + + # Expose as step outputs + echo "test_types=$test_types" >> $GITHUB_OUTPUT + echo "test_chips=$test_chips" >> $GITHUB_OUTPUT + - name: Trigger GitLab Pipeline and Download Artifacts if: ${{ steps.check-tests.outputs.enabled == 'true' }} uses: digital-blueprint/gitlab-pipeline-trigger-action@20e77989b24af658ba138a0aa5291bdc657f1505 # v1.3.0 @@ -312,7 +361,7 @@ jobs: download_artifacts: 'true' download_artifacts_on_failure: 'true' download_path: './gitlab-artifacts' - variables: '{"TEST_TYPES":"${{ needs.get-artifacts.outputs.hw_types }}","TEST_CHIPS":"${{ needs.get-artifacts.outputs.targets }}","PIPELINE_ID":"${{ env.id }}","BINARIES_RUN_ID":"${{ github.event.workflow_run.id }}","GITHUB_REPOSITORY":"${{ github.repository }}"}' + variables: '{"TEST_TYPES":"${{ steps.prepare-variables.outputs.test_types }}","TEST_CHIPS":"${{ steps.prepare-variables.outputs.test_chips }}","PIPELINE_ID":"${{ env.id }}","BINARIES_RUN_ID":"${{ github.event.workflow_run.id }}","GITHUB_REPOSITORY":"${{ github.repository }}"}' - name: Process Downloaded Artifacts if: ${{ always() && steps.check-tests.outputs.enabled == 'true' }} @@ -388,9 +437,10 @@ jobs: wokwi-test: name: Wokwi ${{ matrix.chip }} ${{ matrix.type }} tests if: | - github.event.workflow_run.conclusion == 'success' || + (github.event.workflow_run.conclusion == 'success' || github.event.workflow_run.conclusion == 'failure' || - github.event.workflow_run.conclusion == 'timed_out' + github.event.workflow_run.conclusion == 'timed_out') && + needs.get-artifacts.outputs.wokwi_tests_enabled == 'true' runs-on: ubuntu-latest needs: get-artifacts env: @@ -402,7 +452,7 @@ jobs: fail-fast: false matrix: type: ${{ fromJson(needs.get-artifacts.outputs.wokwi_types) }} - chip: ${{ fromJson(needs.get-artifacts.outputs.targets) }} + chip: ${{ fromJson(needs.get-artifacts.outputs.wokwi_targets) }} steps: - name: Report pending uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 diff --git a/.github/workflows/tests_results.yml b/.github/workflows/tests_results.yml index 525b303e486..7b638a0e972 100644 --- a/.github/workflows/tests_results.yml +++ b/.github/workflows/tests_results.yml @@ -21,6 +21,15 @@ jobs: original_ref: ${{ steps.get-info.outputs.original_ref }} original_conclusion: ${{ steps.get-info.outputs.original_conclusion }} original_run_id: ${{ steps.get-info.outputs.original_run_id }} + hw_tests_enabled: ${{ steps.get-info.outputs.hw_tests_enabled }} + hw_targets: ${{ steps.get-info.outputs.hw_targets }} + hw_types: ${{ steps.get-info.outputs.hw_types }} + wokwi_tests_enabled: ${{ steps.get-info.outputs.wokwi_tests_enabled }} + wokwi_targets: ${{ steps.get-info.outputs.wokwi_targets }} + wokwi_types: ${{ steps.get-info.outputs.wokwi_types }} + qemu_tests_enabled: ${{ steps.get-info.outputs.qemu_tests_enabled }} + qemu_targets: ${{ steps.get-info.outputs.qemu_targets }} + qemu_types: ${{ steps.get-info.outputs.qemu_types }} steps: - name: Download and Extract Artifacts uses: dawidd6/action-download-artifact@07ab29fd4a977ae4d2b275087cf67563dfdf0295 # v9 @@ -31,36 +40,34 @@ jobs: - name: Get original info id: get-info run: | - echo "Artifacts:" - ls -laR ./artifacts + # Inputs in workflow_info.json are already sanitized and safe to use - original_event=$(cat ./artifacts/parent-artifacts/event.txt) - original_action=$(cat ./artifacts/parent-artifacts/action.txt) - original_sha=$(cat ./artifacts/parent-artifacts/sha.txt) - original_ref=$(cat ./artifacts/parent-artifacts/ref.txt) - original_conclusion=$(cat ./artifacts/parent-artifacts/conclusion.txt) - original_run_id=$(cat ./artifacts/parent-artifacts/run_id.txt) + original_event=$(jq -r '.event' ./artifacts/parent-artifacts/workflow_info.json) + original_action=$(jq -r '.action' ./artifacts/parent-artifacts/workflow_info.json) + original_sha=$(jq -r '.sha' ./artifacts/parent-artifacts/workflow_info.json) + original_ref=$(jq -r '.ref' ./artifacts/parent-artifacts/workflow_info.json) + original_conclusion=$(jq -r '.conclusion' ./artifacts/parent-artifacts/workflow_info.json) + original_run_id=$(jq -r '.run_id' ./artifacts/parent-artifacts/workflow_info.json) - # Sanitize the values to avoid security issues - - # Event: Allow alphabetical characters and underscores - original_event=$(echo "$original_event" | tr -cd '[:alpha:]_') - - # Action: Allow alphabetical characters and underscores - original_action=$(echo "$original_action" | tr -cd '[:alpha:]_') - - # SHA: Allow alphanumeric characters - original_sha=$(echo "$original_sha" | tr -cd '[:alnum:]') - - # Ref: Allow alphanumeric characters, slashes, underscores, dots, and dashes - original_ref=$(echo "$original_ref" | tr -cd '[:alnum:]/_.-') - - # Conclusion: Allow alphabetical characters and underscores - original_conclusion=$(echo "$original_conclusion" | tr -cd '[:alpha:]_') - - # Run ID: Allow numeric characters - original_run_id=$(echo "$original_run_id" | tr -cd '[:digit:]') + hw_tests_enabled=$(jq -r '.hw_tests_enabled' ./artifacts/parent-artifacts/workflow_info.json) + hw_targets=$(jq -c '.hw_targets' ./artifacts/parent-artifacts/workflow_info.json) + hw_types=$(jq -c '.hw_types' ./artifacts/parent-artifacts/workflow_info.json) + wokwi_tests_enabled=$(jq -r '.wokwi_tests_enabled' ./artifacts/parent-artifacts/workflow_info.json) + wokwi_targets=$(jq -c '.wokwi_targets' ./artifacts/parent-artifacts/workflow_info.json) + wokwi_types=$(jq -c '.wokwi_types' ./artifacts/parent-artifacts/workflow_info.json) + qemu_tests_enabled=$(jq -r '.qemu_tests_enabled' ./artifacts/parent-artifacts/workflow_info.json) + qemu_targets=$(jq -c '.qemu_targets' ./artifacts/parent-artifacts/workflow_info.json) + qemu_types=$(jq -c '.qemu_types' ./artifacts/parent-artifacts/workflow_info.json) + echo "hw_tests_enabled=$hw_tests_enabled" >> $GITHUB_OUTPUT + echo "hw_targets=$hw_targets" >> $GITHUB_OUTPUT + echo "hw_types=$hw_types" >> $GITHUB_OUTPUT + echo "wokwi_tests_enabled=$wokwi_tests_enabled" >> $GITHUB_OUTPUT + echo "wokwi_targets=$wokwi_targets" >> $GITHUB_OUTPUT + echo "wokwi_types=$wokwi_types" >> $GITHUB_OUTPUT + echo "qemu_tests_enabled=$qemu_tests_enabled" >> $GITHUB_OUTPUT + echo "qemu_targets=$qemu_targets" >> $GITHUB_OUTPUT + echo "qemu_types=$qemu_types" >> $GITHUB_OUTPUT echo "original_event=$original_event" >> $GITHUB_OUTPUT echo "original_action=$original_action" >> $GITHUB_OUTPUT echo "original_sha=$original_sha" >> $GITHUB_OUTPUT @@ -68,6 +75,15 @@ jobs: echo "original_conclusion=$original_conclusion" >> $GITHUB_OUTPUT echo "original_run_id=$original_run_id" >> $GITHUB_OUTPUT + echo "hw_tests_enabled = $hw_tests_enabled" + echo "hw_targets = $hw_targets" + echo "hw_types = $hw_types" + echo "wokwi_tests_enabled = $wokwi_tests_enabled" + echo "wokwi_targets = $wokwi_targets" + echo "wokwi_types = $wokwi_types" + echo "qemu_tests_enabled = $qemu_tests_enabled" + echo "qemu_targets = $qemu_targets" + echo "qemu_types = $qemu_types" echo "original_event = $original_event" echo "original_action = $original_action" echo "original_sha = $original_sha" @@ -107,13 +123,41 @@ jobs: run_id: ${{ github.event.workflow_run.id }} path: ./artifacts + - name: Download and Extract Artifacts + uses: dawidd6/action-download-artifact@07ab29fd4a977ae4d2b275087cf67563dfdf0295 # v9 + with: + run_id: ${{ needs.get-artifacts.outputs.original_run_id }} + path: ./build_artifacts + + - name: Generate JUnit files for missing runs + env: + GH_TOKEN: ${{ github.token }} + HW_TESTS_ENABLED: ${{ needs.get-artifacts.outputs.hw_tests_enabled }} + HW_TARGETS: ${{ needs.get-artifacts.outputs.hw_targets }} + HW_TYPES: ${{ needs.get-artifacts.outputs.hw_types }} + WOKWI_TESTS_ENABLED: ${{ needs.get-artifacts.outputs.wokwi_tests_enabled }} + WOKWI_TARGETS: ${{ needs.get-artifacts.outputs.wokwi_targets }} + WOKWI_TYPES: ${{ needs.get-artifacts.outputs.wokwi_types }} + QEMU_TESTS_ENABLED: ${{ needs.get-artifacts.outputs.qemu_tests_enabled }} + QEMU_TARGETS: ${{ needs.get-artifacts.outputs.qemu_targets }} + QEMU_TYPES: ${{ needs.get-artifacts.outputs.qemu_types }} + run: | + ls -la ./artifacts + ls -la ./build_artifacts + pip3 install pyyaml + wget https://raw.githubusercontent.com/${{ github.repository }}/master/.github/scripts/generate_missing_junits.py -O ./generate_missing_junits.py + python3 ./generate_missing_junits.py ./build_artifacts ./artifacts ./test_errors + - name: Publish Unit Test Results + id: publish-test-results uses: EnricoMi/publish-unit-test-result-action@170bf24d20d201b842d7a52403b73ed297e6645b # v2.18.0 with: commit: ${{ needs.get-artifacts.outputs.original_sha }} event_file: ./artifacts/parent-artifacts/event_file/event.json event_name: ${{ needs.get-artifacts.outputs.original_event }} - files: ./artifacts/**/*.xml + files: | + ./artifacts/**/*.xml + ./test_errors/**/*.xml action_fail: true action_fail_on_inconclusive: true compare_to_earlier_commit: false @@ -128,16 +172,6 @@ jobs: overwrite: true path: ./unity_results.json - - name: Fail if tests failed - if: | - needs.get-artifacts.outputs.original_conclusion == 'failure' || - needs.get-artifacts.outputs.original_conclusion == 'cancelled' || - needs.get-artifacts.outputs.original_conclusion == 'timed_out' || - github.event.workflow_run.conclusion == 'failure' || - github.event.workflow_run.conclusion == 'cancelled' || - github.event.workflow_run.conclusion == 'timed_out' - run: exit 1 - - name: Clean up caches if: always() uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 @@ -206,22 +240,36 @@ jobs: (needs.get-artifacts.outputs.original_event == 'schedule' || needs.get-artifacts.outputs.original_event == 'workflow_dispatch') env: - REPORT_FILE: ./runtime-test-results/RUNTIME_TEST_RESULTS.md + HW_TESTS_ENABLED: ${{ needs.get-artifacts.outputs.hw_tests_enabled }} + HW_TARGETS: ${{ needs.get-artifacts.outputs.hw_targets }} + HW_TYPES: ${{ needs.get-artifacts.outputs.hw_types }} + WOKWI_TESTS_ENABLED: ${{ needs.get-artifacts.outputs.wokwi_tests_enabled }} + WOKWI_TARGETS: ${{ needs.get-artifacts.outputs.wokwi_targets }} + WOKWI_TYPES: ${{ needs.get-artifacts.outputs.wokwi_types }} + QEMU_TESTS_ENABLED: ${{ needs.get-artifacts.outputs.qemu_tests_enabled }} + QEMU_TARGETS: ${{ needs.get-artifacts.outputs.qemu_targets }} + QEMU_TYPES: ${{ needs.get-artifacts.outputs.qemu_types }} WOKWI_RUN_ID: ${{ github.event.workflow_run.id }} BUILD_RUN_ID: ${{ needs.get-artifacts.outputs.original_run_id }} - IS_FAILING: | - needs.get-artifacts.outputs.original_conclusion == 'failure' || - needs.get-artifacts.outputs.original_conclusion == 'cancelled' || - needs.get-artifacts.outputs.original_conclusion == 'timed_out' || - github.event.workflow_run.conclusion == 'failure' || - github.event.workflow_run.conclusion == 'cancelled' || - github.event.workflow_run.conclusion == 'timed_out' || - job.status == 'failure' + RESULTS_URL: ${{ fromJSON( steps.publish-test-results.outputs.json ).check_url }} + RESULTS_RUN_ID: ${{ github.run_id }} + REPORT_FILE: ./runtime-test-results/RUNTIME_TEST_RESULTS.md + IS_FAILING: >- + ${{ + needs.get-artifacts.outputs.original_conclusion == 'failure' || + needs.get-artifacts.outputs.original_conclusion == 'cancelled' || + needs.get-artifacts.outputs.original_conclusion == 'timed_out' || + github.event.workflow_run.conclusion == 'failure' || + github.event.workflow_run.conclusion == 'cancelled' || + github.event.workflow_run.conclusion == 'timed_out' || + job.status == 'failure' + }} run: | rm -rf artifacts $REPORT_FILE mv -f ./unity_results.json ./runtime-test-results/unity_results.json touch $REPORT_FILE - python3 ./runtime-test-results/table_generator.py ./runtime-test-results/unity_results.json >> $REPORT_FILE + wget https://raw.githubusercontent.com/${{ github.repository }}/master/.github/scripts/runtime_table_generator.py -O ./runtime-test-results/runtime_table_generator.py + python3 ./runtime-test-results/runtime_table_generator.py ./runtime-test-results/unity_results.json ${{ needs.get-artifacts.outputs.original_sha }} >> $REPORT_FILE mv -f ./test_results.json ./runtime-test-results/test_results.json - name: Generate badge @@ -250,7 +298,7 @@ jobs: git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" if [[ `git status --porcelain` ]]; then - git add --all + git add runtime-test-results/RUNTIME_TEST_RESULTS.md runtime-test-results/badge.svg runtime-test-results/test_results.json runtime-test-results/unity_results.json git commit -m "Updated runtime test results" git push origin HEAD:gh-pages fi diff --git a/.gitlab/scripts/gen_hw_jobs.py b/.gitlab/scripts/gen_hw_jobs.py index 804e245c18f..5dd77cf56af 100644 --- a/.gitlab/scripts/gen_hw_jobs.py +++ b/.gitlab/scripts/gen_hw_jobs.py @@ -8,6 +8,10 @@ import copy import traceback from pathlib import Path +from typing import Iterable +from urllib.parse import urlencode +import urllib.request +import urllib.error # Resolve repository root from this script location SCRIPT_DIR = Path(__file__).resolve().parent @@ -32,12 +36,12 @@ def str_representer(dumper, data): return dumper.represent_scalar("tag:yaml.org,2002:str", data, style=style) -def read_json(p: Path): +def read_yaml(p: Path): try: with p.open("r", encoding="utf-8") as f: - return json.load(f) + return yaml.safe_load(f) or {} except Exception as e: - sys.stderr.write(f"[WARN] Failed to parse JSON file '{p}': {e}\n") + sys.stderr.write(f"[WARN] Failed to parse YAML file '{p}': {e}\n") sys.stderr.write(traceback.format_exc() + "\n") return {} @@ -46,7 +50,7 @@ def find_tests() -> list[Path]: tests = [] if not TESTS_ROOT.exists(): return tests - for ci in TESTS_ROOT.rglob("ci.json"): + for ci in TESTS_ROOT.rglob("ci.yml"): if ci.is_file(): tests.append(ci) return tests @@ -79,12 +83,11 @@ def find_sketch_test_dirs(types_filter: list[str]) -> list[tuple[str, Path]]: def load_tags_for_test(ci_json: dict, chip: str) -> set[str]: tags = set() # Global tags - for key in "tags": - v = ci_json.get(key) - if isinstance(v, list): - for e in v: - if isinstance(e, str) and e.strip(): - tags.add(e.strip()) + v = ci_json.get("tags") + if isinstance(v, list): + for e in v: + if isinstance(e, str) and e.strip(): + tags.add(e.strip()) # Per-SoC tags soc_tags = ci_json.get("soc_tags") if isinstance(soc_tags, dict): @@ -184,6 +187,147 @@ def parse_list_arg(s: str) -> list[str]: return [part.strip() for part in txt.split(",") if part.strip()] +def _gitlab_auth_header() -> tuple[str, str]: + """Return header key and value for GitLab API auth, preferring PRIVATE-TOKEN, then JOB-TOKEN. + + Falls back to empty auth if neither is available. + """ + private = os.environ.get("GITLAB_API_TOKEN") or os.environ.get("PRIVATE_TOKEN") + if private: + return ("PRIVATE-TOKEN", private) + job = os.environ.get("CI_JOB_TOKEN") + if job: + return ("JOB-TOKEN", job) + return ("", "") + + +def _gitlab_api_get(path: str) -> tuple[int, dict | list | None]: + """Perform a GET to GitLab API v4 and return (status_code, json_obj_or_None). + + Uses project-level API base from CI env. Returns (0, None) if base env is missing. + """ + base = os.environ.get("CI_API_V4_URL") + if not base: + return 0, None + url = base.rstrip("/") + "/" + path.lstrip("/") + key, value = _gitlab_auth_header() + req = urllib.request.Request(url) + if key: + req.add_header(key, value) + try: + with urllib.request.urlopen(req, timeout=15) as resp: + status = resp.getcode() + data = resp.read() + try: + obj = json.loads(data.decode("utf-8")) if data else None + except Exception: + obj = None + return status, obj + except urllib.error.HTTPError as e: + try: + body = e.read().decode("utf-8") + except Exception: + body = str(e) + sys.stderr.write(f"[WARN] GitLab API GET {url} failed: {e} body={body}\n") + return e.code, None + except Exception as e: + sys.stderr.write(f"[WARN] GitLab API GET {url} error: {e}\n") + sys.stderr.write(traceback.format_exc() + "\n") + return -1, None + + +def list_project_runners() -> list[dict]: + """List runners available to this project via GitLab API. + + Requires CI vars CI_API_V4_URL and CI_PROJECT_ID and either GITLAB_API_TOKEN or CI_JOB_TOKEN. + Returns an empty list if not accessible. + """ + project_id = os.environ.get("CI_PROJECT_ID") + if not project_id: + return [] + + key, value = _gitlab_auth_header() + sys.stderr.write(f"[DEBUG] Attempting to list runners for project {project_id}\n") + sys.stderr.write(f"[DEBUG] Auth method: {'Authenticated' if key else 'None'}\n") + + runners: list[dict] = [] + page = 1 + per_page = 100 + while True: + q = urlencode({"per_page": per_page, "page": page}) + status, obj = _gitlab_api_get(f"projects/{project_id}/runners?{q}") + if status != 200 or not isinstance(obj, list): + # Project-scoped listing might be restricted for JOB-TOKEN in some instances. + # Return what we have (likely nothing) and let caller decide. + if status == 403: + sys.stderr.write("\n[ERROR] 403 Forbidden when listing project runners\n") + sys.stderr.write(f" Project ID: {project_id}\n") + sys.stderr.write(f" Authentication: {'Present' if key else 'None'}\n") + sys.stderr.write(" Endpoint: projects/{project_id}/runners\n\n") + + sys.stderr.write("Required permissions:\n") + sys.stderr.write(" - Token scope: 'api' (you likely have this)\n") + sys.stderr.write(" - Project role: Maintainer or Owner (you may be missing this)\n\n") + + sys.stderr.write("Solutions:\n") + sys.stderr.write(" 1. Ensure the token owner has Maintainer/Owner role on project {project_id}\n") + sys.stderr.write(" 2. Use a Group Access Token if available (has higher privileges)\n") + sys.stderr.write(" 3. Set environment variable: ASSUME_TAGGED_GROUPS_MISSING=0\n") + sys.stderr.write(" (This will skip runner enumeration and schedule all groups)\n\n") + break + runners.extend(x for x in obj if isinstance(x, dict)) + if len(obj) < per_page: + break + page += 1 + + # The /projects/:id/runners endpoint returns simplified objects without tag_list. + # Fetch full details for each runner to get tags. + sys.stderr.write(f"[DEBUG] Fetching full details for {len(runners)} runners to get tags...\n") + full_runners = [] + for runner in runners: + runner_id = runner.get("id") + if not runner_id: + continue + status, details = _gitlab_api_get(f"runners/{runner_id}") + if status == 200 and isinstance(details, dict): + full_runners.append(details) + else: + # If we can't get details, keep the basic info (no tags) + full_runners.append(runner) + + return full_runners + + +def runner_supports_tags(runner: dict, required_tags: Iterable[str]) -> bool: + tag_list = runner.get("tag_list") or [] + if not isinstance(tag_list, list): + return False + tags = {str(t).strip() for t in tag_list if isinstance(t, str) and t.strip()} + if not tags: + return False + # Skip paused/inactive runners + if runner.get("paused") is True: + return False + if runner.get("active") is False: + return False + return all(t in tags for t in required_tags) + + +def any_runner_matches(required_tags: Iterable[str], runners: list[dict]) -> bool: + req = [t for t in required_tags if t] + for r in runners: + try: + if runner_supports_tags(r, req): + return True + except Exception as e: + # Be robust to unexpected runner payloads + runner_id = r.get("id", "unknown") + sys.stderr.write(f"[WARN] Error checking runner #{runner_id} against required tags: {e}\n") + sys.stderr.write(traceback.format_exc() + "\n") + continue + return False + + def main(): ap = argparse.ArgumentParser() ap.add_argument("--chips", required=True, help="Comma-separated or JSON array list of SoCs") @@ -209,12 +353,12 @@ def main(): # Aggregate mapping: (chip, frozenset(tags or generic), test_type) -> list of test paths group_map: dict[tuple[str, frozenset[str], str], list[str]] = {} all_ci = find_tests() - print(f"Discovered {len(all_ci)} ci.json files under tests/") + print(f"Discovered {len(all_ci)} ci.yml files under tests/") matched_count = 0 for test_type, test_path in find_sketch_test_dirs(types): - ci_path = test_path / "ci.json" - ci = read_json(ci_path) if ci_path.exists() else {} + ci_path = test_path / "ci.yml" + ci = read_yaml(ci_path) if ci_path.exists() else {} test_dir = str(test_path) sketch = test_path.name for chip in chips: @@ -249,26 +393,89 @@ def main(): # Build child pipeline YAML in deterministic order jobs_entries = [] # list of (sort_key, job_name, job_dict) + + # Discover available runners + available_runners = list_project_runners() + if not available_runners: + print("\n[ERROR] Could not enumerate project runners!") + print("This is required to match test groups to runners by tags.") + print("\nPossible causes:") + print(" - No runners are registered to the project") + print(" - API token lacks required permissions (needs 'api' scope + Maintainer/Owner role)") + print(" - Network/API connectivity issues") + sys.exit(1) + + print(f"\n=== Available Runners ({len(available_runners)}) ===") + for runner in available_runners: + runner_id = runner.get("id", "?") + runner_desc = runner.get("description", "") + runner_tags = runner.get("tag_list", []) + runner_active = runner.get("active", False) + runner_paused = runner.get("paused", False) + status = "ACTIVE" if (runner_active and not runner_paused) else "INACTIVE/PAUSED" + print(f" Runner #{runner_id} ({status}): {runner_desc}") + print(f" Tags: {', '.join(runner_tags) if runner_tags else '(none)'}") + print("=" * 60 + "\n") + + # Track skipped groups for reporting + skipped_groups: list[dict] = [] + + print("\n=== Test Group Scheduling ===") for (chip, tagset, test_type), test_dirs in group_map.items(): tag_list = sorted(tagset) # Build name suffix excluding the SOC itself to avoid duplication non_soc_tags = [t for t in tag_list if t != chip] tag_suffix = "-".join(non_soc_tags) if non_soc_tags else "generic" - job_name = f"hw-{chip}-{test_type}-{tag_suffix}"[:255] - - # Clone base job and adjust (preserve key order using deepcopy) - job = copy.deepcopy(base_job) - # Ensure tags include SOC+extras - job["tags"] = tag_list - vars_block = job.get("variables", {}) - vars_block["TEST_CHIP"] = chip - vars_block["TEST_TYPE"] = test_type - # Provide list of test directories for this job - vars_block["TEST_LIST"] = "\n".join(sorted(test_dirs)) - job["variables"] = vars_block - - sort_key = (chip, test_type, tag_suffix) - jobs_entries.append((sort_key, job_name, job)) + + # Determine if any runner can serve this job + can_schedule = any_runner_matches(tag_list, available_runners) + print(f" Group: {chip}-{test_type}-{tag_suffix}") + print(f" Required tags: {', '.join(tag_list)}") + print(f" Tests: {len(test_dirs)}") + if can_schedule: + print(" ✓ Runner found - scheduling") + else: + print(" ✗ NO RUNNER FOUND - skipping") + + if can_schedule: + job_name = f"hw-{chip}-{test_type}-{tag_suffix}"[:255] + + # Clone base job and adjust (preserve key order using deepcopy) + job = copy.deepcopy(base_job) + # Ensure tags include SOC+extras + job["tags"] = tag_list + vars_block = job.get("variables", {}) + vars_block["TEST_CHIP"] = chip + vars_block["TEST_TYPE"] = test_type + # Provide list of test directories for this job + vars_block["TEST_LIST"] = "\n".join(sorted(test_dirs)) + job["variables"] = vars_block + + sort_key = (chip, test_type, tag_suffix) + jobs_entries.append((sort_key, job_name, job)) + else: + # Track skipped groups for reporting + skipped_groups.append( + { + "chip": chip, + "test_type": test_type, + "required_tags": tag_list, + "test_count": len(test_dirs), + } + ) + + # Print summary + print("\n=== Summary ===") + print(f" Scheduled groups: {len(jobs_entries)}") + print(f" Skipped groups (no runner): {len(skipped_groups)}") + if skipped_groups: + print("\n Skipped group details:") + for sg in skipped_groups: + chip = sg.get("chip") + test_type = sg.get("test_type") + tags = sg.get("required_tags", []) + test_count = sg.get("test_count", 0) + print(f" - {chip}-{test_type}: requires tags {tags}, {test_count} tests") # Order jobs by (chip, type, tag_suffix) jobs = {} diff --git a/.gitlab/scripts/install_dependencies.sh b/.gitlab/scripts/install_dependencies.sh new file mode 100644 index 00000000000..ac7c6ff0b0a --- /dev/null +++ b/.gitlab/scripts/install_dependencies.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -euo pipefail + +export DEBIAN_FRONTEND=noninteractive + +echo "[deps] Updating apt indexes" +apt-get update -y + +echo "[deps] Installing base packages" +apt-get install -y jq unzip curl wget + +echo "[deps] Installing Python packages" +pip3 install PyYAML + +echo "[deps] Installing yq (mikefarah/yq) for current architecture" +YQ_VERSION="v4.48.1" +ARCH="$(uname -m)" +case "$ARCH" in + x86_64) YQ_BINARY=yq_linux_amd64 ;; + aarch64|arm64) YQ_BINARY=yq_linux_arm64 ;; + armv7l|armv6l|armhf|arm) YQ_BINARY=yq_linux_arm ;; + i386|i686) YQ_BINARY=yq_linux_386 ;; + *) echo "Unsupported architecture: $ARCH"; exit 1 ;; +esac + +echo "[deps] Downloading mikefarah/yq $YQ_VERSION ($YQ_BINARY)" +wget -q https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/${YQ_BINARY} -O /usr/bin/yq +chmod +x /usr/bin/yq +yq --version + +echo "[deps] Dependencies installed successfully" diff --git a/.gitlab/workflows/hardware_tests_dynamic.yml b/.gitlab/workflows/hardware_tests_dynamic.yml index 2c137f092ab..9b88fabab34 100644 --- a/.gitlab/workflows/hardware_tests_dynamic.yml +++ b/.gitlab/workflows/hardware_tests_dynamic.yml @@ -3,7 +3,7 @@ ############################### # This parent workflow generates a dynamic child pipeline with jobs grouped -# by SOC + runner tags derived from tests' ci.json, then triggers it and waits. +# by SOC + runner tags derived from tests' ci.yml, then triggers it and waits. generate-hw-tests: stage: generate @@ -16,9 +16,7 @@ generate-hw-tests: TEST_TYPES: $TEST_TYPES TEST_CHIPS: $TEST_CHIPS before_script: - - pip install PyYAML - - apt-get update - - apt-get install -y jq unzip curl + - bash .gitlab/scripts/install_dependencies.sh script: - mkdir -p ~/.arduino/tests - | diff --git a/.gitlab/workflows/hw_test_template.yml b/.gitlab/workflows/hw_test_template.yml index 1b09c2cb7eb..c18686bd115 100644 --- a/.gitlab/workflows/hw_test_template.yml +++ b/.gitlab/workflows/hw_test_template.yml @@ -33,8 +33,7 @@ hw-test-template: - echo "Running hardware tests for chip:$TEST_CHIP type:$TEST_TYPE" - echo "Pipeline ID:$PIPELINE_ID" - echo "Running hardware tests for chip:$TEST_CHIP" - - apt-get update - - apt-get install -y jq unzip curl + - bash .gitlab/scripts/install_dependencies.sh - rm -rf ~/.arduino/tests - mkdir -p ~/.arduino/tests/$TEST_CHIP - echo Fetching binaries for $TEST_CHIP $TEST_TYPE diff --git a/docs/en/contributing.rst b/docs/en/contributing.rst index 0a2ff38b95f..c9f83530d36 100644 --- a/docs/en/contributing.rst +++ b/docs/en/contributing.rst @@ -113,21 +113,18 @@ Testing ******* Be sure you have tested the example in all the supported targets. If the example some specific hardware requirements, -edit/add the ``ci.json`` in the same folder as the sketch to specify the regular expression for the +edit/add the ``ci.yml`` in the same folder as the sketch to specify the regular expression for the required configurations from ``sdkconfig``. This will ensure that the CI system will run the test only on the targets that have the required configurations. You can check the available configurations in the ``sdkconfig`` file in the ``tools/esp32-arduino-libs/`` folder. -Here is an example of the ``ci.json`` file where the example requires Wi-Fi to work properly: +Here is an example of the ``ci.yml`` file where the example requires Wi-Fi to work properly: -.. code-block:: json +.. code-block:: yaml - { - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] - } + requires: + - CONFIG_SOC_WIFI_SUPPORTED=y .. note:: @@ -138,21 +135,17 @@ Here is an example of the ``ci.json`` file where the example requires Wi-Fi to w That means that the configuration must be at the beginning of the line in the ``sdkconfig`` file. Sometimes, the example might not be supported by some target, even if the target has the required configurations -(like resources limitations or requiring a specific SoC). To avoid compilation errors, you can add the target to the ``ci.json`` +(like resources limitations or requiring a specific SoC). To avoid compilation errors, you can add the target to the ``ci.yml`` file so the CI system will force to skip the test on that target. -Here is an example of the ``ci.json`` file where the example is requires Wi-Fi to work properly but is also not supported by the ESP32-S2 target: +Here is an example of the ``ci.yml`` file where the example is requires Wi-Fi to work properly but is also not supported by the ESP32-S2 target: -.. code-block:: json +.. code-block:: yaml - { - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ], - "targets": { - "esp32s2": false - } - } + requires: + - CONFIG_SOC_WIFI_SUPPORTED=y + targets: + esp32s2: false You also need to add this information in the ``README.md`` file, on the **Supported Targets**, and in the example code as an inline comment. For example, in the sketch: @@ -183,29 +176,23 @@ Currently, the default FQBNs are: * ``espressif:esp32:esp32h2`` * ``espressif:esp32:esp32p4:USBMode=default`` -There are two ways to alter the FQBNs used to compile the sketches: by using the ``fqbn`` or ``fqbn_append`` fields in the ``ci.json`` file. +There are two ways to alter the FQBNs used to compile the sketches: by using the ``fqbn`` or ``fqbn_append`` fields in the ``ci.yml`` file. If you just want to append a string to the default FQBNs, you can use the ``fqbn_append`` field. For example, to add the ``DebugLevel=debug`` to the FQBNs, you would use: -.. code-block:: json +.. code-block:: yaml - { - "fqbn_append": "DebugLevel=debug" - } + fqbn_append: DebugLevel=debug If you want to override the default FQBNs, you can use the ``fqbn`` field. It is a dictionary where the key is the target name and the value is a list of FQBNs. The FQBNs in the list will be used in sequence to compile the sketch. For example, to compile a sketch for ESP32-S2 with and without PSRAM enabled, you would use: -.. code-block:: json +.. code-block:: yaml - { - "fqbn": { - "esp32s2": [ - "espressif:esp32:esp32s2:PSRAM=enabled,FlashMode=dio", - "espressif:esp32:esp32s2:PSRAM=disabled,FlashMode=dio" - ] - } - } + fqbn: + esp32s2: + - espressif:esp32:esp32s2:PSRAM=enabled,FlashMode=dio + - espressif:esp32:esp32s2:PSRAM=disabled,FlashMode=dio .. note:: @@ -301,6 +288,13 @@ The tests are divided into two categories inside the ``tests`` folder: to the core and libraries have any big impact on the performance. These tests usually run for a longer time than the validation tests and include common benchmark tools like `CoreMark `_. +.. note:: + + Keep in mind that to run the CI scripts locally, you need to have the Go-based ``yq`` from `mikefarah/yq `_ + installed and not the Python-based ``yq`` from PyPI or `kislyuk/yq `_. + The syntax is slightly different and will not work with the CI scripts. + You can install the Go-based ``yq`` through ``brew``, ``chocolatey`` or downloading the binary directly from the `releases page `_. + To run the runtime tests locally, first install the required dependencies by running: .. code-block:: bash @@ -394,9 +388,9 @@ You can use the ``hello_world`` test suite as a starting point and the other tes A test suite contains the following files: -* ``test_.py``: The test file that contains the test cases. Required. -* ``.ino``: The sketch that will be tested. Required. -* ``ci.json``: The file that specifies how the test suite will be run in the CI system. Optional. +* ``test_.py``: Is the test file that contains the test cases. Required. +* ``.ino``: This is the sketch that will be tested. Required. +* ``ci.yml``: The file that specifies how the test suite will be run in the CI system. Optional. * ``diagram..json``: The diagram file that specifies the connections between the components in Wokwi. Optional. * Any other files that are needed for the test suite. @@ -405,10 +399,10 @@ For more information about the Unity testing framework, you can check the `Unity After creating the test suite, make sure to test it locally and run it in the CI system to ensure that it works as expected. -CI JSON File +CI YAML File ############ -The ``ci.json`` file is used to specify how the test suite and sketches will handled by the CI system. It can contain the following fields: +The ``ci.yml`` file is used to specify how the test suite and sketches will handled by the CI system. It can contain the following fields: * ``requires``: A list of configurations in ``sdkconfig`` that are required to run the test suite. The test suite will only run on the targets that have **ALL** the required configurations. By default, no configurations are required. @@ -419,7 +413,9 @@ The ``ci.json`` file is used to specify how the test suite and sketches will han specified in the ``requires`` field. This field is also valid for examples. * ``platforms``: A dictionary that specifies the supported platforms. The key is the platform name and the value is a boolean that specifies if the platform is supported. By default, all platforms are assumed to be supported. -* ``extra_tags``: A list of extra tags that the runner will require when running the test suite in hardware. By default, no extra tags are required. +* ``tags``: A list of tags that all runners will require when running the test suite in hardware. By default, no tags are required. +* ``soc_tags``: A dictionary that specifies SoC-specific tags required for hardware runners. The key is the target name and the value is a list + of tags. By default, no SoC-specific tags are required. * ``fqbn_append``: A string to be appended to the default FQBNs. By default, no string is appended. This has no effect if ``fqbn`` is specified. * ``fqbn``: A dictionary that specifies the FQBNs that will be used to compile the sketch. The key is the target name and the value is a list of FQBNs. The `default FQBNs `_ @@ -429,10 +425,10 @@ The ``ci.json`` file is used to specify how the test suite and sketches will han or by URL (e.g., ``https://github.com/arduino-libraries/WiFi101.git``). More information can be found in the `Arduino CLI documentation `_. -The ``wifi`` test suite is a good example of how to use the ``ci.json`` file: +The ``wifi`` test suite is a good example of how to use the ``ci.yml`` file: -.. literalinclude:: ../../tests/validation/wifi/ci.json - :language: json +.. literalinclude:: ../../tests/validation/wifi/ci.yml + :language: yaml Documentation Checks ^^^^^^^^^^^^^^^^^^^^ diff --git a/idf_component_examples/esp_matter_light/ci.json b/idf_component_examples/esp_matter_light/ci.json deleted file mode 100644 index f23a085285d..00000000000 --- a/idf_component_examples/esp_matter_light/ci.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "targets": { - "esp32c2": false, - "esp32s2": false - }, - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y", - "CONFIG_MBEDTLS_HKDF_C=y" - ] -} diff --git a/idf_component_examples/esp_matter_light/ci.yml b/idf_component_examples/esp_matter_light/ci.yml new file mode 100644 index 00000000000..4eee72b8c3b --- /dev/null +++ b/idf_component_examples/esp_matter_light/ci.yml @@ -0,0 +1,8 @@ +targets: + esp32c2: false + esp32s2: false + +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y + - CONFIG_MBEDTLS_HKDF_C=y diff --git a/idf_component_examples/hw_cdc_hello_world/ci.json b/idf_component_examples/hw_cdc_hello_world/ci.json deleted file mode 100644 index 80669afc2cc..00000000000 --- a/idf_component_examples/hw_cdc_hello_world/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y" - ] -} diff --git a/idf_component_examples/hw_cdc_hello_world/ci.yml b/idf_component_examples/hw_cdc_hello_world/ci.yml new file mode 100644 index 00000000000..7415bc09cc4 --- /dev/null +++ b/idf_component_examples/hw_cdc_hello_world/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y diff --git a/libraries/ArduinoOTA/examples/BasicOTA/ci.json b/libraries/ArduinoOTA/examples/BasicOTA/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/ArduinoOTA/examples/BasicOTA/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/ArduinoOTA/examples/BasicOTA/ci.yml b/libraries/ArduinoOTA/examples/BasicOTA/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/ArduinoOTA/examples/BasicOTA/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/AsyncUDP/examples/AsyncUDPClient/ci.json b/libraries/AsyncUDP/examples/AsyncUDPClient/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/AsyncUDP/examples/AsyncUDPClient/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/AsyncUDP/examples/AsyncUDPClient/ci.yml b/libraries/AsyncUDP/examples/AsyncUDPClient/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/AsyncUDP/examples/AsyncUDPClient/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/AsyncUDP/examples/AsyncUDPMulticastServer/ci.json b/libraries/AsyncUDP/examples/AsyncUDPMulticastServer/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/AsyncUDP/examples/AsyncUDPMulticastServer/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/AsyncUDP/examples/AsyncUDPMulticastServer/ci.yml b/libraries/AsyncUDP/examples/AsyncUDPMulticastServer/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/AsyncUDP/examples/AsyncUDPMulticastServer/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/AsyncUDP/examples/AsyncUDPServer/ci.json b/libraries/AsyncUDP/examples/AsyncUDPServer/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/AsyncUDP/examples/AsyncUDPServer/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/AsyncUDP/examples/AsyncUDPServer/ci.yml b/libraries/AsyncUDP/examples/AsyncUDPServer/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/AsyncUDP/examples/AsyncUDPServer/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/BLE/examples/BLE5_extended_scan/ci.json b/libraries/BLE/examples/BLE5_extended_scan/ci.json deleted file mode 100644 index 8e938055cf2..00000000000 --- a/libraries/BLE/examples/BLE5_extended_scan/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_SOC_BLE_50_SUPPORTED=y", - "CONFIG_BLUEDROID_ENABLED=y" - ] -} diff --git a/libraries/BLE/examples/BLE5_extended_scan/ci.yml b/libraries/BLE/examples/BLE5_extended_scan/ci.yml new file mode 100644 index 00000000000..304e725169c --- /dev/null +++ b/libraries/BLE/examples/BLE5_extended_scan/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_SOC_BLE_50_SUPPORTED=y + - CONFIG_BLUEDROID_ENABLED=y diff --git a/libraries/BLE/examples/BLE5_multi_advertising/ci.json b/libraries/BLE/examples/BLE5_multi_advertising/ci.json deleted file mode 100644 index 8e938055cf2..00000000000 --- a/libraries/BLE/examples/BLE5_multi_advertising/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_SOC_BLE_50_SUPPORTED=y", - "CONFIG_BLUEDROID_ENABLED=y" - ] -} diff --git a/libraries/BLE/examples/BLE5_multi_advertising/ci.yml b/libraries/BLE/examples/BLE5_multi_advertising/ci.yml new file mode 100644 index 00000000000..304e725169c --- /dev/null +++ b/libraries/BLE/examples/BLE5_multi_advertising/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_SOC_BLE_50_SUPPORTED=y + - CONFIG_BLUEDROID_ENABLED=y diff --git a/libraries/BLE/examples/BLE5_periodic_advertising/ci.json b/libraries/BLE/examples/BLE5_periodic_advertising/ci.json deleted file mode 100644 index 8e938055cf2..00000000000 --- a/libraries/BLE/examples/BLE5_periodic_advertising/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_SOC_BLE_50_SUPPORTED=y", - "CONFIG_BLUEDROID_ENABLED=y" - ] -} diff --git a/libraries/BLE/examples/BLE5_periodic_advertising/ci.yml b/libraries/BLE/examples/BLE5_periodic_advertising/ci.yml new file mode 100644 index 00000000000..304e725169c --- /dev/null +++ b/libraries/BLE/examples/BLE5_periodic_advertising/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_SOC_BLE_50_SUPPORTED=y + - CONFIG_BLUEDROID_ENABLED=y diff --git a/libraries/BLE/examples/BLE5_periodic_sync/ci.json b/libraries/BLE/examples/BLE5_periodic_sync/ci.json deleted file mode 100644 index 8e938055cf2..00000000000 --- a/libraries/BLE/examples/BLE5_periodic_sync/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_SOC_BLE_50_SUPPORTED=y", - "CONFIG_BLUEDROID_ENABLED=y" - ] -} diff --git a/libraries/BLE/examples/BLE5_periodic_sync/ci.yml b/libraries/BLE/examples/BLE5_periodic_sync/ci.yml new file mode 100644 index 00000000000..304e725169c --- /dev/null +++ b/libraries/BLE/examples/BLE5_periodic_sync/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_SOC_BLE_50_SUPPORTED=y + - CONFIG_BLUEDROID_ENABLED=y diff --git a/libraries/BLE/examples/Beacon_Scanner/ci.json b/libraries/BLE/examples/Beacon_Scanner/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Beacon_Scanner/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Beacon_Scanner/ci.yml b/libraries/BLE/examples/Beacon_Scanner/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Beacon_Scanner/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/Client/ci.json b/libraries/BLE/examples/Client/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Client/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Client/ci.yml b/libraries/BLE/examples/Client/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Client/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/Client_secure_static_passkey/ci.json b/libraries/BLE/examples/Client_secure_static_passkey/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Client_secure_static_passkey/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Client_secure_static_passkey/ci.yml b/libraries/BLE/examples/Client_secure_static_passkey/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Client_secure_static_passkey/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/EddystoneTLM_Beacon/ci.json b/libraries/BLE/examples/EddystoneTLM_Beacon/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/EddystoneTLM_Beacon/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/EddystoneTLM_Beacon/ci.yml b/libraries/BLE/examples/EddystoneTLM_Beacon/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/EddystoneTLM_Beacon/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/EddystoneURL_Beacon/ci.json b/libraries/BLE/examples/EddystoneURL_Beacon/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/EddystoneURL_Beacon/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/EddystoneURL_Beacon/ci.yml b/libraries/BLE/examples/EddystoneURL_Beacon/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/EddystoneURL_Beacon/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/Notify/ci.json b/libraries/BLE/examples/Notify/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Notify/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Notify/ci.yml b/libraries/BLE/examples/Notify/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Notify/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/Scan/ci.json b/libraries/BLE/examples/Scan/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Scan/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Scan/ci.yml b/libraries/BLE/examples/Scan/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Scan/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/Server/ci.json b/libraries/BLE/examples/Server/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Server/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Server/ci.yml b/libraries/BLE/examples/Server/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Server/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/Server_multiconnect/ci.json b/libraries/BLE/examples/Server_multiconnect/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Server_multiconnect/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Server_multiconnect/ci.yml b/libraries/BLE/examples/Server_multiconnect/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Server_multiconnect/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/Server_secure_authorization/ci.json b/libraries/BLE/examples/Server_secure_authorization/ci.json deleted file mode 100644 index 1e2d20da791..00000000000 --- a/libraries/BLE/examples/Server_secure_authorization/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "targets": { - "esp32": false - }, - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_SOC_BLE_SUPPORTED=y" - ] -} diff --git a/libraries/BLE/examples/Server_secure_authorization/ci.yml b/libraries/BLE/examples/Server_secure_authorization/ci.yml new file mode 100644 index 00000000000..274bd2b41ed --- /dev/null +++ b/libraries/BLE/examples/Server_secure_authorization/ci.yml @@ -0,0 +1,7 @@ +targets: + esp32: false + +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_SOC_BLE_SUPPORTED=y diff --git a/libraries/BLE/examples/Server_secure_static_passkey/ci.json b/libraries/BLE/examples/Server_secure_static_passkey/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Server_secure_static_passkey/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Server_secure_static_passkey/ci.yml b/libraries/BLE/examples/Server_secure_static_passkey/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Server_secure_static_passkey/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/UART/ci.json b/libraries/BLE/examples/UART/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/UART/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/UART/ci.yml b/libraries/BLE/examples/UART/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/UART/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/Write/ci.json b/libraries/BLE/examples/Write/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/Write/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/Write/ci.yml b/libraries/BLE/examples/Write/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Write/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/examples/iBeacon/ci.json b/libraries/BLE/examples/iBeacon/ci.json deleted file mode 100644 index e9657aad729..00000000000 --- a/libraries/BLE/examples/iBeacon/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y" - ] -} diff --git a/libraries/BLE/examples/iBeacon/ci.yml b/libraries/BLE/examples/iBeacon/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/iBeacon/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BluetoothSerial/examples/DiscoverConnect/ci.json b/libraries/BluetoothSerial/examples/DiscoverConnect/ci.json deleted file mode 100644 index b5097688f52..00000000000 --- a/libraries/BluetoothSerial/examples/DiscoverConnect/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_BT_SPP_ENABLED=y" - ] -} diff --git a/libraries/BluetoothSerial/examples/DiscoverConnect/ci.yml b/libraries/BluetoothSerial/examples/DiscoverConnect/ci.yml new file mode 100644 index 00000000000..335e5be5b76 --- /dev/null +++ b/libraries/BluetoothSerial/examples/DiscoverConnect/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_BT_SPP_ENABLED=y diff --git a/libraries/BluetoothSerial/examples/GetLocalMAC/ci.json b/libraries/BluetoothSerial/examples/GetLocalMAC/ci.json deleted file mode 100644 index b5097688f52..00000000000 --- a/libraries/BluetoothSerial/examples/GetLocalMAC/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_BT_SPP_ENABLED=y" - ] -} diff --git a/libraries/BluetoothSerial/examples/GetLocalMAC/ci.yml b/libraries/BluetoothSerial/examples/GetLocalMAC/ci.yml new file mode 100644 index 00000000000..335e5be5b76 --- /dev/null +++ b/libraries/BluetoothSerial/examples/GetLocalMAC/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_BT_SPP_ENABLED=y diff --git a/libraries/BluetoothSerial/examples/SerialToSerialBT/ci.json b/libraries/BluetoothSerial/examples/SerialToSerialBT/ci.json deleted file mode 100644 index b5097688f52..00000000000 --- a/libraries/BluetoothSerial/examples/SerialToSerialBT/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_BT_SPP_ENABLED=y" - ] -} diff --git a/libraries/BluetoothSerial/examples/SerialToSerialBT/ci.yml b/libraries/BluetoothSerial/examples/SerialToSerialBT/ci.yml new file mode 100644 index 00000000000..335e5be5b76 --- /dev/null +++ b/libraries/BluetoothSerial/examples/SerialToSerialBT/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_BT_SPP_ENABLED=y diff --git a/libraries/BluetoothSerial/examples/SerialToSerialBTM/ci.json b/libraries/BluetoothSerial/examples/SerialToSerialBTM/ci.json deleted file mode 100644 index b5097688f52..00000000000 --- a/libraries/BluetoothSerial/examples/SerialToSerialBTM/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_BT_SPP_ENABLED=y" - ] -} diff --git a/libraries/BluetoothSerial/examples/SerialToSerialBTM/ci.yml b/libraries/BluetoothSerial/examples/SerialToSerialBTM/ci.yml new file mode 100644 index 00000000000..335e5be5b76 --- /dev/null +++ b/libraries/BluetoothSerial/examples/SerialToSerialBTM/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_BT_SPP_ENABLED=y diff --git a/libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy/ci.json b/libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy/ci.json deleted file mode 100644 index b5097688f52..00000000000 --- a/libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_BT_SPP_ENABLED=y" - ] -} diff --git a/libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy/ci.yml b/libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy/ci.yml new file mode 100644 index 00000000000..335e5be5b76 --- /dev/null +++ b/libraries/BluetoothSerial/examples/SerialToSerialBT_Legacy/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_BT_SPP_ENABLED=y diff --git a/libraries/BluetoothSerial/examples/SerialToSerialBT_SSP/ci.json b/libraries/BluetoothSerial/examples/SerialToSerialBT_SSP/ci.json deleted file mode 100644 index b5097688f52..00000000000 --- a/libraries/BluetoothSerial/examples/SerialToSerialBT_SSP/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_BT_SPP_ENABLED=y" - ] -} diff --git a/libraries/BluetoothSerial/examples/SerialToSerialBT_SSP/ci.yml b/libraries/BluetoothSerial/examples/SerialToSerialBT_SSP/ci.yml new file mode 100644 index 00000000000..335e5be5b76 --- /dev/null +++ b/libraries/BluetoothSerial/examples/SerialToSerialBT_SSP/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_BT_SPP_ENABLED=y diff --git a/libraries/BluetoothSerial/examples/bt_classic_device_discovery/ci.json b/libraries/BluetoothSerial/examples/bt_classic_device_discovery/ci.json deleted file mode 100644 index b5097688f52..00000000000 --- a/libraries/BluetoothSerial/examples/bt_classic_device_discovery/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_BT_SPP_ENABLED=y" - ] -} diff --git a/libraries/BluetoothSerial/examples/bt_classic_device_discovery/ci.yml b/libraries/BluetoothSerial/examples/bt_classic_device_discovery/ci.yml new file mode 100644 index 00000000000..335e5be5b76 --- /dev/null +++ b/libraries/BluetoothSerial/examples/bt_classic_device_discovery/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_BT_SPP_ENABLED=y diff --git a/libraries/BluetoothSerial/examples/bt_remove_paired_devices/ci.json b/libraries/BluetoothSerial/examples/bt_remove_paired_devices/ci.json deleted file mode 100644 index b5097688f52..00000000000 --- a/libraries/BluetoothSerial/examples/bt_remove_paired_devices/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_BT_SPP_ENABLED=y" - ] -} diff --git a/libraries/BluetoothSerial/examples/bt_remove_paired_devices/ci.yml b/libraries/BluetoothSerial/examples/bt_remove_paired_devices/ci.yml new file mode 100644 index 00000000000..335e5be5b76 --- /dev/null +++ b/libraries/BluetoothSerial/examples/bt_remove_paired_devices/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_BT_SPP_ENABLED=y diff --git a/libraries/DNSServer/examples/CaptivePortal/ci.json b/libraries/DNSServer/examples/CaptivePortal/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/DNSServer/examples/CaptivePortal/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/DNSServer/examples/CaptivePortal/ci.yml b/libraries/DNSServer/examples/CaptivePortal/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/DNSServer/examples/CaptivePortal/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/ESP32/examples/AnalogOut/LEDCGammaFade/ci.json b/libraries/ESP32/examples/AnalogOut/LEDCGammaFade/ci.json deleted file mode 100644 index a9d8603b7bf..00000000000 --- a/libraries/ESP32/examples/AnalogOut/LEDCGammaFade/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_SUPPORTED=y" - ] -} diff --git a/libraries/ESP32/examples/AnalogOut/LEDCGammaFade/ci.yml b/libraries/ESP32/examples/AnalogOut/LEDCGammaFade/ci.yml new file mode 100644 index 00000000000..b001ab0f4a3 --- /dev/null +++ b/libraries/ESP32/examples/AnalogOut/LEDCGammaFade/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_SUPPORTED=y diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/ci.json b/libraries/ESP32/examples/Camera/CameraWebServer/ci.json deleted file mode 100644 index 35c3056dda8..00000000000 --- a/libraries/ESP32/examples/Camera/CameraWebServer/ci.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "fqbn": { - "esp32": [ - "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=custom,FlashMode=dio", - "espressif:esp32:esp32:PSRAM=disabled,PartitionScheme=custom,FlashMode=dio" - ], - "esp32s2": [ - "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=custom,FlashMode=dio", - "espressif:esp32:esp32s2:PSRAM=disabled,PartitionScheme=custom,FlashMode=dio" - ], - "esp32s3": [ - "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=custom,FlashMode=qio", - "espressif:esp32:esp32s3:PSRAM=enabled,USBMode=default,PartitionScheme=custom,FlashMode=qio", - "espressif:esp32:esp32s3:PSRAM=disabled,USBMode=default,PartitionScheme=custom,FlashMode=qio" - ] - }, - "requires": [ - "CONFIG_CAMERA_TASK_STACK_SIZE=[0-9]+" - ] -} diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/ci.yml b/libraries/ESP32/examples/Camera/CameraWebServer/ci.yml new file mode 100644 index 00000000000..aea91ac431c --- /dev/null +++ b/libraries/ESP32/examples/Camera/CameraWebServer/ci.yml @@ -0,0 +1,14 @@ +fqbn: + esp32: + - espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=custom,FlashMode=dio + - espressif:esp32:esp32:PSRAM=disabled,PartitionScheme=custom,FlashMode=dio + esp32s2: + - espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=custom,FlashMode=dio + - espressif:esp32:esp32s2:PSRAM=disabled,PartitionScheme=custom,FlashMode=dio + esp32s3: + - espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=custom,FlashMode=qio + - espressif:esp32:esp32s3:PSRAM=enabled,USBMode=default,PartitionScheme=custom,FlashMode=qio + - espressif:esp32:esp32s3:PSRAM=disabled,USBMode=default,PartitionScheme=custom,FlashMode=qio + +requires: + - CONFIG_CAMERA_TASK_STACK_SIZE=[0-9]+ diff --git a/libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ci.json b/libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ci.json deleted file mode 100644 index dfd49d94fe9..00000000000 --- a/libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "targets": { - "esp32c3": false, - "esp32c6": false, - "esp32h2": false, - "esp32p4": false, - "esp32c5": false - } -} diff --git a/libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ci.yml b/libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ci.yml new file mode 100644 index 00000000000..f0c2d6e9fe2 --- /dev/null +++ b/libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ci.yml @@ -0,0 +1,6 @@ +targets: + esp32c3: false + esp32c6: false + esp32h2: false + esp32p4: false + esp32c5: false diff --git a/libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code/ci.json b/libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code/ci.json deleted file mode 100644 index 5fa2bd14e5d..00000000000 --- a/libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code/ci.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "targets": { - "esp32c3": false, - "esp32c6": false, - "esp32h2": false, - "esp32p4": false, - "esp32s2": false, - "esp32s3": false, - "esp32c5": false - } -} diff --git a/libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code/ci.yml b/libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code/ci.yml new file mode 100644 index 00000000000..556ac03be4c --- /dev/null +++ b/libraries/ESP32/examples/DeepSleep/SmoothBlink_ULP_Code/ci.yml @@ -0,0 +1,8 @@ +targets: + esp32c3: false + esp32c6: false + esp32h2: false + esp32p4: false + esp32s2: false + esp32s3: false + esp32c5: false diff --git a/libraries/ESP32/examples/DeepSleep/TimerWakeUp/ci.json b/libraries/ESP32/examples/DeepSleep/TimerWakeUp/ci.json deleted file mode 100644 index d8b3664bc65..00000000000 --- a/libraries/ESP32/examples/DeepSleep/TimerWakeUp/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "targets": { - "esp32h2": false - } -} diff --git a/libraries/ESP32/examples/DeepSleep/TimerWakeUp/ci.yml b/libraries/ESP32/examples/DeepSleep/TimerWakeUp/ci.yml new file mode 100644 index 00000000000..f2c7072e1c2 --- /dev/null +++ b/libraries/ESP32/examples/DeepSleep/TimerWakeUp/ci.yml @@ -0,0 +1,2 @@ +targets: + esp32h2: false diff --git a/libraries/ESP32/examples/DeepSleep/TouchWakeUp/ci.json b/libraries/ESP32/examples/DeepSleep/TouchWakeUp/ci.json deleted file mode 100644 index ae65fa0df74..00000000000 --- a/libraries/ESP32/examples/DeepSleep/TouchWakeUp/ci.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "targets": { - "esp32c3": false, - "esp32c6": false, - "esp32h2": false, - "esp32c5": false - } -} diff --git a/libraries/ESP32/examples/DeepSleep/TouchWakeUp/ci.yml b/libraries/ESP32/examples/DeepSleep/TouchWakeUp/ci.yml new file mode 100644 index 00000000000..dc765ea8326 --- /dev/null +++ b/libraries/ESP32/examples/DeepSleep/TouchWakeUp/ci.yml @@ -0,0 +1,5 @@ +targets: + esp32c3: false + esp32c6: false + esp32h2: false + esp32c5: false diff --git a/libraries/ESP32/examples/HWCDC_Events/ci.json b/libraries/ESP32/examples/HWCDC_Events/ci.json deleted file mode 100644 index 56e38bbcdf2..00000000000 --- a/libraries/ESP32/examples/HWCDC_Events/ci.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "fqbn": { - "esp32s3": [ - "espressif:esp32:esp32s3:USBMode=hwcdc,PartitionScheme=huge_app,FlashMode=dio" - ] - }, - "requires": [ - "CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y" - ] -} diff --git a/libraries/ESP32/examples/HWCDC_Events/ci.yml b/libraries/ESP32/examples/HWCDC_Events/ci.yml new file mode 100644 index 00000000000..6561aa854a2 --- /dev/null +++ b/libraries/ESP32/examples/HWCDC_Events/ci.yml @@ -0,0 +1,6 @@ +fqbn: + esp32s3: + - espressif:esp32:esp32s3:USBMode=hwcdc,PartitionScheme=huge_app,FlashMode=dio + +requires: + - CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y diff --git a/libraries/ESP32/examples/TWAI/TWAIreceive/ci.json b/libraries/ESP32/examples/TWAI/TWAIreceive/ci.json deleted file mode 100644 index 7379dba8bb9..00000000000 --- a/libraries/ESP32/examples/TWAI/TWAIreceive/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "targets": { - "esp32c5": false - } -} diff --git a/libraries/ESP32/examples/TWAI/TWAIreceive/ci.yml b/libraries/ESP32/examples/TWAI/TWAIreceive/ci.yml new file mode 100644 index 00000000000..655244ef541 --- /dev/null +++ b/libraries/ESP32/examples/TWAI/TWAIreceive/ci.yml @@ -0,0 +1,2 @@ +targets: + esp32c5: false diff --git a/libraries/ESP32/examples/TWAI/TWAItransmit/ci.json b/libraries/ESP32/examples/TWAI/TWAItransmit/ci.json deleted file mode 100644 index 7379dba8bb9..00000000000 --- a/libraries/ESP32/examples/TWAI/TWAItransmit/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "targets": { - "esp32c5": false - } -} diff --git a/libraries/ESP32/examples/TWAI/TWAItransmit/ci.yml b/libraries/ESP32/examples/TWAI/TWAItransmit/ci.yml new file mode 100644 index 00000000000..655244ef541 --- /dev/null +++ b/libraries/ESP32/examples/TWAI/TWAItransmit/ci.yml @@ -0,0 +1,2 @@ +targets: + esp32c5: false diff --git a/libraries/ESP32/examples/Time/SimpleTime/ci.json b/libraries/ESP32/examples/Time/SimpleTime/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/ESP32/examples/Time/SimpleTime/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/ESP32/examples/Time/SimpleTime/ci.yml b/libraries/ESP32/examples/Time/SimpleTime/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/ESP32/examples/Time/SimpleTime/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/ESP32/examples/Touch/TouchButton/ci.json b/libraries/ESP32/examples/Touch/TouchButton/ci.json deleted file mode 100644 index c0ecf9fc0a5..00000000000 --- a/libraries/ESP32/examples/Touch/TouchButton/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y" - ] -} diff --git a/libraries/ESP32/examples/Touch/TouchButton/ci.yml b/libraries/ESP32/examples/Touch/TouchButton/ci.yml new file mode 100644 index 00000000000..feaef91cf65 --- /dev/null +++ b/libraries/ESP32/examples/Touch/TouchButton/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y diff --git a/libraries/ESP32/examples/Touch/TouchInterrupt/ci.json b/libraries/ESP32/examples/Touch/TouchInterrupt/ci.json deleted file mode 100644 index c0ecf9fc0a5..00000000000 --- a/libraries/ESP32/examples/Touch/TouchInterrupt/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y" - ] -} diff --git a/libraries/ESP32/examples/Touch/TouchInterrupt/ci.yml b/libraries/ESP32/examples/Touch/TouchInterrupt/ci.yml new file mode 100644 index 00000000000..feaef91cf65 --- /dev/null +++ b/libraries/ESP32/examples/Touch/TouchInterrupt/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y diff --git a/libraries/ESP32/examples/Touch/TouchRead/ci.json b/libraries/ESP32/examples/Touch/TouchRead/ci.json deleted file mode 100644 index c0ecf9fc0a5..00000000000 --- a/libraries/ESP32/examples/Touch/TouchRead/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y" - ] -} diff --git a/libraries/ESP32/examples/Touch/TouchRead/ci.yml b/libraries/ESP32/examples/Touch/TouchRead/ci.yml new file mode 100644 index 00000000000..feaef91cf65 --- /dev/null +++ b/libraries/ESP32/examples/Touch/TouchRead/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y diff --git a/libraries/ESP_I2S/examples/ES8388_loopback/ci.json b/libraries/ESP_I2S/examples/ES8388_loopback/ci.json deleted file mode 100644 index e0f64e28943..00000000000 --- a/libraries/ESP_I2S/examples/ES8388_loopback/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_I2S_SUPPORTED=y", - "CONFIG_SOC_I2C_SUPPORTED=y" - ] -} diff --git a/libraries/ESP_I2S/examples/ES8388_loopback/ci.yml b/libraries/ESP_I2S/examples/ES8388_loopback/ci.yml new file mode 100644 index 00000000000..1deb186296b --- /dev/null +++ b/libraries/ESP_I2S/examples/ES8388_loopback/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_SOC_I2S_SUPPORTED=y + - CONFIG_SOC_I2C_SUPPORTED=y diff --git a/libraries/ESP_I2S/examples/Record_to_WAV/ci.json b/libraries/ESP_I2S/examples/Record_to_WAV/ci.json deleted file mode 100644 index a45dc2f0120..00000000000 --- a/libraries/ESP_I2S/examples/Record_to_WAV/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_SDMMC_HOST_SUPPORTED=y", - "CONFIG_SOC_I2S_SUPPORTED=y" - ] -} diff --git a/libraries/ESP_I2S/examples/Record_to_WAV/ci.yml b/libraries/ESP_I2S/examples/Record_to_WAV/ci.yml new file mode 100644 index 00000000000..7ab2c964b4b --- /dev/null +++ b/libraries/ESP_I2S/examples/Record_to_WAV/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_SOC_SDMMC_HOST_SUPPORTED=y + - CONFIG_SOC_I2S_SUPPORTED=y diff --git a/libraries/ESP_I2S/examples/Simple_tone/ci.json b/libraries/ESP_I2S/examples/Simple_tone/ci.json deleted file mode 100644 index 9842f2f9b2a..00000000000 --- a/libraries/ESP_I2S/examples/Simple_tone/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_I2S_SUPPORTED=y" - ] -} diff --git a/libraries/ESP_I2S/examples/Simple_tone/ci.yml b/libraries/ESP_I2S/examples/Simple_tone/ci.yml new file mode 100644 index 00000000000..5107c290753 --- /dev/null +++ b/libraries/ESP_I2S/examples/Simple_tone/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_I2S_SUPPORTED=y diff --git a/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master/ci.json b/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master/ci.json deleted file mode 100644 index 36babb82730..00000000000 --- a/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master/ci.yml b/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master/ci.yml new file mode 100644 index 00000000000..86e194b136b --- /dev/null +++ b/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Master/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave/ci.json b/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave/ci.json deleted file mode 100644 index 36babb82730..00000000000 --- a/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave/ci.yml b/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave/ci.yml new file mode 100644 index 00000000000..86e194b136b --- /dev/null +++ b/libraries/ESP_NOW/examples/ESP_NOW_Broadcast_Slave/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/ESP_NOW/examples/ESP_NOW_Network/ci.json b/libraries/ESP_NOW/examples/ESP_NOW_Network/ci.json deleted file mode 100644 index 36babb82730..00000000000 --- a/libraries/ESP_NOW/examples/ESP_NOW_Network/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/ESP_NOW/examples/ESP_NOW_Network/ci.yml b/libraries/ESP_NOW/examples/ESP_NOW_Network/ci.yml new file mode 100644 index 00000000000..86e194b136b --- /dev/null +++ b/libraries/ESP_NOW/examples/ESP_NOW_Network/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/ESP_NOW/examples/ESP_NOW_Serial/ci.json b/libraries/ESP_NOW/examples/ESP_NOW_Serial/ci.json deleted file mode 100644 index 36babb82730..00000000000 --- a/libraries/ESP_NOW/examples/ESP_NOW_Serial/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/ESP_NOW/examples/ESP_NOW_Serial/ci.yml b/libraries/ESP_NOW/examples/ESP_NOW_Serial/ci.yml new file mode 100644 index 00000000000..86e194b136b --- /dev/null +++ b/libraries/ESP_NOW/examples/ESP_NOW_Serial/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/ESP_SR/examples/Basic/ci.json b/libraries/ESP_SR/examples/Basic/ci.json deleted file mode 100644 index ed7699a7857..00000000000 --- a/libraries/ESP_SR/examples/Basic/ci.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "fqbn": { - "esp32s3": [ - "espressif:esp32:esp32s3:USBMode=default,PartitionScheme=esp_sr_16,FlashSize=16M,FlashMode=dio" - ], - "esp32p4": [ - "espressif:esp32:esp32p4:USBMode=default,PartitionScheme=esp_sr_16,FlashSize=16M,FlashMode=qio" - ] - }, - "requires": [ - "CONFIG_SOC_I2S_SUPPORTED=y" - ], - "targets": { - "esp32": false, - "esp32c3": false, - "esp32c6": false, - "esp32h2": false, - "esp32s2": false, - "esp32c5": false - } -} diff --git a/libraries/ESP_SR/examples/Basic/ci.yml b/libraries/ESP_SR/examples/Basic/ci.yml new file mode 100644 index 00000000000..cdd66d7ce39 --- /dev/null +++ b/libraries/ESP_SR/examples/Basic/ci.yml @@ -0,0 +1,16 @@ +fqbn: + esp32s3: + - espressif:esp32:esp32s3:USBMode=default,PartitionScheme=esp_sr_16,FlashSize=16M,FlashMode=dio + esp32p4: + - espressif:esp32:esp32p4:USBMode=default,PartitionScheme=esp_sr_16,FlashSize=16M,FlashMode=qio + +requires: + - CONFIG_SOC_I2S_SUPPORTED=y + +targets: + esp32: false + esp32c3: false + esp32c6: false + esp32h2: false + esp32s2: false + esp32c5: false diff --git a/libraries/ESPmDNS/examples/mDNS-SD_Extended/ci.json b/libraries/ESPmDNS/examples/mDNS-SD_Extended/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/ESPmDNS/examples/mDNS-SD_Extended/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/ESPmDNS/examples/mDNS-SD_Extended/ci.yml b/libraries/ESPmDNS/examples/mDNS-SD_Extended/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/ESPmDNS/examples/mDNS-SD_Extended/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/ESPmDNS/examples/mDNS_Web_Server/ci.json b/libraries/ESPmDNS/examples/mDNS_Web_Server/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/ESPmDNS/examples/mDNS_Web_Server/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/ESPmDNS/examples/mDNS_Web_Server/ci.yml b/libraries/ESPmDNS/examples/mDNS_Web_Server/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/ESPmDNS/examples/mDNS_Web_Server/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/Ethernet/examples/ETH_LAN8720/ci.json b/libraries/Ethernet/examples/ETH_LAN8720/ci.json deleted file mode 100644 index 0eab13b8841..00000000000 --- a/libraries/Ethernet/examples/ETH_LAN8720/ci.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "requires": [ - "CONFIG_ETH_USE_ESP32_EMAC=y" - ], - "targets": { - "esp32p4": false - } -} diff --git a/libraries/Ethernet/examples/ETH_LAN8720/ci.yml b/libraries/Ethernet/examples/ETH_LAN8720/ci.yml new file mode 100644 index 00000000000..87dccc48269 --- /dev/null +++ b/libraries/Ethernet/examples/ETH_LAN8720/ci.yml @@ -0,0 +1,5 @@ +requires: + - CONFIG_ETH_USE_ESP32_EMAC=y + +targets: + esp32p4: false diff --git a/libraries/Ethernet/examples/ETH_TLK110/ci.json b/libraries/Ethernet/examples/ETH_TLK110/ci.json deleted file mode 100644 index dcdfd06db51..00000000000 --- a/libraries/Ethernet/examples/ETH_TLK110/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_ETH_USE_ESP32_EMAC=y" - ] -} diff --git a/libraries/Ethernet/examples/ETH_TLK110/ci.yml b/libraries/Ethernet/examples/ETH_TLK110/ci.yml new file mode 100644 index 00000000000..1c051776e19 --- /dev/null +++ b/libraries/Ethernet/examples/ETH_TLK110/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_ETH_USE_ESP32_EMAC=y diff --git a/libraries/Ethernet/examples/ETH_WIFI_BRIDGE/ci.json b/libraries/Ethernet/examples/ETH_WIFI_BRIDGE/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/Ethernet/examples/ETH_WIFI_BRIDGE/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/Ethernet/examples/ETH_WIFI_BRIDGE/ci.yml b/libraries/Ethernet/examples/ETH_WIFI_BRIDGE/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/Ethernet/examples/ETH_WIFI_BRIDGE/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/FFat/examples/FFat_time/ci.json b/libraries/FFat/examples/FFat_time/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/FFat/examples/FFat_time/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/FFat/examples/FFat_time/ci.yml b/libraries/FFat/examples/FFat_time/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/FFat/examples/FFat_time/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPClient/examples/Authorization/ci.json b/libraries/HTTPClient/examples/Authorization/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPClient/examples/Authorization/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPClient/examples/Authorization/ci.yml b/libraries/HTTPClient/examples/Authorization/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPClient/examples/Authorization/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPClient/examples/BasicHttpClient/ci.json b/libraries/HTTPClient/examples/BasicHttpClient/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPClient/examples/BasicHttpClient/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPClient/examples/BasicHttpClient/ci.yml b/libraries/HTTPClient/examples/BasicHttpClient/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPClient/examples/BasicHttpClient/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPClient/examples/BasicHttpsClient/ci.json b/libraries/HTTPClient/examples/BasicHttpsClient/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPClient/examples/BasicHttpsClient/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPClient/examples/BasicHttpsClient/ci.yml b/libraries/HTTPClient/examples/BasicHttpsClient/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPClient/examples/BasicHttpsClient/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPClient/examples/CustomHeaders/ci.json b/libraries/HTTPClient/examples/CustomHeaders/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPClient/examples/CustomHeaders/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPClient/examples/CustomHeaders/ci.yml b/libraries/HTTPClient/examples/CustomHeaders/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPClient/examples/CustomHeaders/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPClient/examples/HTTPClientEnterprise/ci.json b/libraries/HTTPClient/examples/HTTPClientEnterprise/ci.json deleted file mode 100644 index 04eb62b977a..00000000000 --- a/libraries/HTTPClient/examples/HTTPClientEnterprise/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/HTTPClient/examples/HTTPClientEnterprise/ci.yml b/libraries/HTTPClient/examples/HTTPClientEnterprise/ci.yml new file mode 100644 index 00000000000..e412162e577 --- /dev/null +++ b/libraries/HTTPClient/examples/HTTPClientEnterprise/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/HTTPClient/examples/ReuseConnection/ci.json b/libraries/HTTPClient/examples/ReuseConnection/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPClient/examples/ReuseConnection/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPClient/examples/ReuseConnection/ci.yml b/libraries/HTTPClient/examples/ReuseConnection/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPClient/examples/ReuseConnection/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPClient/examples/StreamHttpClient/ci.json b/libraries/HTTPClient/examples/StreamHttpClient/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPClient/examples/StreamHttpClient/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPClient/examples/StreamHttpClient/ci.yml b/libraries/HTTPClient/examples/StreamHttpClient/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPClient/examples/StreamHttpClient/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPUpdate/examples/httpUpdate/ci.json b/libraries/HTTPUpdate/examples/httpUpdate/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPUpdate/examples/httpUpdate/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPUpdate/examples/httpUpdate/ci.yml b/libraries/HTTPUpdate/examples/httpUpdate/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPUpdate/examples/httpUpdate/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPUpdate/examples/httpUpdateSPIFFS/ci.json b/libraries/HTTPUpdate/examples/httpUpdateSPIFFS/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPUpdate/examples/httpUpdateSPIFFS/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPUpdate/examples/httpUpdateSPIFFS/ci.yml b/libraries/HTTPUpdate/examples/httpUpdateSPIFFS/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPUpdate/examples/httpUpdateSPIFFS/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPUpdate/examples/httpUpdateSecure/ci.json b/libraries/HTTPUpdate/examples/httpUpdateSecure/ci.json deleted file mode 100644 index cbdd28f773d..00000000000 --- a/libraries/HTTPUpdate/examples/httpUpdateSecure/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPUpdate/examples/httpUpdateSecure/ci.yml b/libraries/HTTPUpdate/examples/httpUpdateSecure/ci.yml new file mode 100644 index 00000000000..9f15b3468e6 --- /dev/null +++ b/libraries/HTTPUpdate/examples/httpUpdateSecure/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/HTTPUpdateServer/examples/WebUpdater/ci.json b/libraries/HTTPUpdateServer/examples/WebUpdater/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/HTTPUpdateServer/examples/WebUpdater/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/HTTPUpdateServer/examples/WebUpdater/ci.yml b/libraries/HTTPUpdateServer/examples/WebUpdater/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/HTTPUpdateServer/examples/WebUpdater/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/Insights/examples/DiagnosticsSmokeTest/ci.json b/libraries/Insights/examples/DiagnosticsSmokeTest/ci.json deleted file mode 100644 index cbd69d50029..00000000000 --- a/libraries/Insights/examples/DiagnosticsSmokeTest/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "requires": [ - "CONFIG_ESP_INSIGHTS_ENABLED=y" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/Insights/examples/DiagnosticsSmokeTest/ci.yml b/libraries/Insights/examples/DiagnosticsSmokeTest/ci.yml new file mode 100644 index 00000000000..427f0f5ff51 --- /dev/null +++ b/libraries/Insights/examples/DiagnosticsSmokeTest/ci.yml @@ -0,0 +1,6 @@ +requires: + - CONFIG_ESP_INSIGHTS_ENABLED=y + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/Insights/examples/MinimalDiagnostics/ci.json b/libraries/Insights/examples/MinimalDiagnostics/ci.json deleted file mode 100644 index cbd69d50029..00000000000 --- a/libraries/Insights/examples/MinimalDiagnostics/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "requires": [ - "CONFIG_ESP_INSIGHTS_ENABLED=y" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/Insights/examples/MinimalDiagnostics/ci.yml b/libraries/Insights/examples/MinimalDiagnostics/ci.yml new file mode 100644 index 00000000000..427f0f5ff51 --- /dev/null +++ b/libraries/Insights/examples/MinimalDiagnostics/ci.yml @@ -0,0 +1,6 @@ +requires: + - CONFIG_ESP_INSIGHTS_ENABLED=y + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/LittleFS/examples/LITTLEFS_time/ci.json b/libraries/LittleFS/examples/LITTLEFS_time/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/LittleFS/examples/LITTLEFS_time/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/LittleFS/examples/LITTLEFS_time/ci.yml b/libraries/LittleFS/examples/LITTLEFS_time/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/LittleFS/examples/LITTLEFS_time/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/Matter/examples/MatterColorLight/ci.json b/libraries/Matter/examples/MatterColorLight/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterColorLight/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterColorLight/ci.yml b/libraries/Matter/examples/MatterColorLight/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterColorLight/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterCommissionTest/ci.json b/libraries/Matter/examples/MatterCommissionTest/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterCommissionTest/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterCommissionTest/ci.yml b/libraries/Matter/examples/MatterCommissionTest/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterCommissionTest/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterComposedLights/ci.json b/libraries/Matter/examples/MatterComposedLights/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterComposedLights/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterComposedLights/ci.yml b/libraries/Matter/examples/MatterComposedLights/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterComposedLights/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterContactSensor/ci.json b/libraries/Matter/examples/MatterContactSensor/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterContactSensor/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterContactSensor/ci.yml b/libraries/Matter/examples/MatterContactSensor/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterContactSensor/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterDimmableLight/ci.json b/libraries/Matter/examples/MatterDimmableLight/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterDimmableLight/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterDimmableLight/ci.yml b/libraries/Matter/examples/MatterDimmableLight/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterDimmableLight/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterEnhancedColorLight/ci.json b/libraries/Matter/examples/MatterEnhancedColorLight/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterEnhancedColorLight/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterEnhancedColorLight/ci.yml b/libraries/Matter/examples/MatterEnhancedColorLight/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterEnhancedColorLight/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterEvents/ci.json b/libraries/Matter/examples/MatterEvents/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterEvents/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterEvents/ci.yml b/libraries/Matter/examples/MatterEvents/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterEvents/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterFan/ci.json b/libraries/Matter/examples/MatterFan/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterFan/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterFan/ci.yml b/libraries/Matter/examples/MatterFan/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterFan/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterHumiditySensor/ci.json b/libraries/Matter/examples/MatterHumiditySensor/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterHumiditySensor/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterHumiditySensor/ci.yml b/libraries/Matter/examples/MatterHumiditySensor/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterHumiditySensor/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/ci.json b/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/ci.yml b/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterMinimum/ci.json b/libraries/Matter/examples/MatterMinimum/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterMinimum/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterMinimum/ci.yml b/libraries/Matter/examples/MatterMinimum/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterMinimum/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterOccupancySensor/ci.json b/libraries/Matter/examples/MatterOccupancySensor/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterOccupancySensor/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterOccupancySensor/ci.yml b/libraries/Matter/examples/MatterOccupancySensor/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterOccupancySensor/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterOnIdentify/ci.json b/libraries/Matter/examples/MatterOnIdentify/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterOnIdentify/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterOnIdentify/ci.yml b/libraries/Matter/examples/MatterOnIdentify/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterOnIdentify/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterOnOffLight/ci.json b/libraries/Matter/examples/MatterOnOffLight/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterOnOffLight/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterOnOffLight/ci.yml b/libraries/Matter/examples/MatterOnOffLight/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterOnOffLight/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterOnOffPlugin/ci.json b/libraries/Matter/examples/MatterOnOffPlugin/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterOnOffPlugin/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterOnOffPlugin/ci.yml b/libraries/Matter/examples/MatterOnOffPlugin/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterOnOffPlugin/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterPressureSensor/ci.json b/libraries/Matter/examples/MatterPressureSensor/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterPressureSensor/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterPressureSensor/ci.yml b/libraries/Matter/examples/MatterPressureSensor/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterPressureSensor/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterSmartButon/ci.json b/libraries/Matter/examples/MatterSmartButon/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterSmartButon/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterSmartButon/ci.yml b/libraries/Matter/examples/MatterSmartButon/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterSmartButon/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterTemperatureLight/ci.json b/libraries/Matter/examples/MatterTemperatureLight/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterTemperatureLight/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterTemperatureLight/ci.yml b/libraries/Matter/examples/MatterTemperatureLight/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterTemperatureLight/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterTemperatureSensor/ci.json b/libraries/Matter/examples/MatterTemperatureSensor/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterTemperatureSensor/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterTemperatureSensor/ci.yml b/libraries/Matter/examples/MatterTemperatureSensor/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterTemperatureSensor/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/Matter/examples/MatterThermostat/ci.json b/libraries/Matter/examples/MatterThermostat/ci.json deleted file mode 100644 index 90b393f9156..00000000000 --- a/libraries/Matter/examples/MatterThermostat/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y" - ] -} diff --git a/libraries/Matter/examples/MatterThermostat/ci.yml b/libraries/Matter/examples/MatterThermostat/ci.yml new file mode 100644 index 00000000000..050a80ff543 --- /dev/null +++ b/libraries/Matter/examples/MatterThermostat/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y diff --git a/libraries/NetBIOS/examples/ESP_NBNST/ci.json b/libraries/NetBIOS/examples/ESP_NBNST/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/NetBIOS/examples/ESP_NBNST/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/NetBIOS/examples/ESP_NBNST/ci.yml b/libraries/NetBIOS/examples/ESP_NBNST/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/NetBIOS/examples/ESP_NBNST/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/NetworkClientSecure/examples/WiFiClientInsecure/ci.json b/libraries/NetworkClientSecure/examples/WiFiClientInsecure/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/NetworkClientSecure/examples/WiFiClientInsecure/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/NetworkClientSecure/examples/WiFiClientInsecure/ci.yml b/libraries/NetworkClientSecure/examples/WiFiClientInsecure/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/NetworkClientSecure/examples/WiFiClientInsecure/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/NetworkClientSecure/examples/WiFiClientPSK/ci.json b/libraries/NetworkClientSecure/examples/WiFiClientPSK/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/NetworkClientSecure/examples/WiFiClientPSK/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/NetworkClientSecure/examples/WiFiClientPSK/ci.yml b/libraries/NetworkClientSecure/examples/WiFiClientPSK/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/NetworkClientSecure/examples/WiFiClientPSK/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/NetworkClientSecure/examples/WiFiClientSecure/ci.json b/libraries/NetworkClientSecure/examples/WiFiClientSecure/ci.json deleted file mode 100644 index cbdd28f773d..00000000000 --- a/libraries/NetworkClientSecure/examples/WiFiClientSecure/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/NetworkClientSecure/examples/WiFiClientSecure/ci.yml b/libraries/NetworkClientSecure/examples/WiFiClientSecure/ci.yml new file mode 100644 index 00000000000..9f15b3468e6 --- /dev/null +++ b/libraries/NetworkClientSecure/examples/WiFiClientSecure/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.json b/libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.json deleted file mode 100644 index 04eb62b977a..00000000000 --- a/libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.yml b/libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.yml new file mode 100644 index 00000000000..e412162e577 --- /dev/null +++ b/libraries/NetworkClientSecure/examples/WiFiClientSecureEnterprise/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.json b/libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.yml b/libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/NetworkClientSecure/examples/WiFiClientSecureProtocolUpgrade/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.json b/libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.yml b/libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/NetworkClientSecure/examples/WiFiClientShowPeerCredentials/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.json b/libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.yml b/libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/NetworkClientSecure/examples/WiFiClientTrustOnFirstUse/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/OpenThread/examples/CLI/COAP/coap_lamp/ci.json b/libraries/OpenThread/examples/CLI/COAP/coap_lamp/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/COAP/coap_lamp/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/COAP/coap_lamp/ci.yml b/libraries/OpenThread/examples/CLI/COAP/coap_lamp/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/COAP/coap_lamp/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/CLI/COAP/coap_switch/ci.json b/libraries/OpenThread/examples/CLI/COAP/coap_switch/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/COAP/coap_switch/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/COAP/coap_switch/ci.yml b/libraries/OpenThread/examples/CLI/COAP/coap_switch/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/COAP/coap_switch/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/CLI/SimpleCLI/ci.json b/libraries/OpenThread/examples/CLI/SimpleCLI/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/SimpleCLI/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/SimpleCLI/ci.yml b/libraries/OpenThread/examples/CLI/SimpleCLI/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/SimpleCLI/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/CLI/SimpleNode/ci.json b/libraries/OpenThread/examples/CLI/SimpleNode/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/SimpleNode/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/SimpleNode/ci.yml b/libraries/OpenThread/examples/CLI/SimpleNode/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/SimpleNode/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode/ci.json b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode/ci.yml b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/ExtendedRouterNode/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode/ci.json b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode/ci.yml b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/LeaderNode/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode/ci.json b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode/ci.yml b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/SimpleThreadNetwork/RouterNode/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/CLI/ThreadScan/ci.json b/libraries/OpenThread/examples/CLI/ThreadScan/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/ThreadScan/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/ThreadScan/ci.yml b/libraries/OpenThread/examples/CLI/ThreadScan/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/ThreadScan/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/CLI/onReceive/ci.json b/libraries/OpenThread/examples/CLI/onReceive/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/CLI/onReceive/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/CLI/onReceive/ci.yml b/libraries/OpenThread/examples/CLI/onReceive/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/CLI/onReceive/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode/ci.json b/libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode/ci.yml b/libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/Native/SimpleThreadNetwork/LeaderNode/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode/ci.json b/libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode/ci.json deleted file mode 100644 index 2ee6af3490e..00000000000 --- a/libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_OPENTHREAD_ENABLED=y", - "CONFIG_SOC_IEEE802154_SUPPORTED=y" - ] -} diff --git a/libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode/ci.yml b/libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode/ci.yml new file mode 100644 index 00000000000..452905cdc41 --- /dev/null +++ b/libraries/OpenThread/examples/Native/SimpleThreadNetwork/RouterNode/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_SOC_IEEE802154_SUPPORTED=y diff --git a/libraries/PPP/examples/PPP_Basic/ci.json b/libraries/PPP/examples/PPP_Basic/ci.json deleted file mode 100644 index 314587edcf6..00000000000 --- a/libraries/PPP/examples/PPP_Basic/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_LWIP_PPP_SUPPORT=y" - ] -} diff --git a/libraries/PPP/examples/PPP_Basic/ci.yml b/libraries/PPP/examples/PPP_Basic/ci.yml new file mode 100644 index 00000000000..857734a4d75 --- /dev/null +++ b/libraries/PPP/examples/PPP_Basic/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_LWIP_PPP_SUPPORT=y diff --git a/libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.json b/libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.json deleted file mode 100644 index ccc62161c85..00000000000 --- a/libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "requires": [ - "CONFIG_LWIP_PPP_SUPPORT=y" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.yml b/libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.yml new file mode 100644 index 00000000000..2e80e1b43ca --- /dev/null +++ b/libraries/PPP/examples/PPP_WIFI_BRIDGE/ci.yml @@ -0,0 +1,6 @@ +requires: + - CONFIG_LWIP_PPP_SUPPORT=y + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/RainMaker/examples/RMakerCustom/ci.json b/libraries/RainMaker/examples/RMakerCustom/ci.json deleted file mode 100644 index ce63fe9ccf0..00000000000 --- a/libraries/RainMaker/examples/RMakerCustom/ci.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "targets": { - "esp32": false - }, - "fqbn_append": "PartitionScheme=rainmaker_4MB", - "requires": [ - "CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=[1-9][0-9]*" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/RainMaker/examples/RMakerCustom/ci.yml b/libraries/RainMaker/examples/RMakerCustom/ci.yml new file mode 100644 index 00000000000..fc2a11e6948 --- /dev/null +++ b/libraries/RainMaker/examples/RMakerCustom/ci.yml @@ -0,0 +1,11 @@ +targets: + esp32: false + +fqbn_append: PartitionScheme=rainmaker_4MB + +requires: + - CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=[1-9][0-9]* + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/RainMaker/examples/RMakerCustomAirCooler/ci.json b/libraries/RainMaker/examples/RMakerCustomAirCooler/ci.json deleted file mode 100644 index ce63fe9ccf0..00000000000 --- a/libraries/RainMaker/examples/RMakerCustomAirCooler/ci.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "targets": { - "esp32": false - }, - "fqbn_append": "PartitionScheme=rainmaker_4MB", - "requires": [ - "CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=[1-9][0-9]*" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/RainMaker/examples/RMakerCustomAirCooler/ci.yml b/libraries/RainMaker/examples/RMakerCustomAirCooler/ci.yml new file mode 100644 index 00000000000..fc2a11e6948 --- /dev/null +++ b/libraries/RainMaker/examples/RMakerCustomAirCooler/ci.yml @@ -0,0 +1,11 @@ +targets: + esp32: false + +fqbn_append: PartitionScheme=rainmaker_4MB + +requires: + - CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=[1-9][0-9]* + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/RainMaker/examples/RMakerSonoffDualR3/ci.json b/libraries/RainMaker/examples/RMakerSonoffDualR3/ci.json deleted file mode 100644 index ce63fe9ccf0..00000000000 --- a/libraries/RainMaker/examples/RMakerSonoffDualR3/ci.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "targets": { - "esp32": false - }, - "fqbn_append": "PartitionScheme=rainmaker_4MB", - "requires": [ - "CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=[1-9][0-9]*" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/RainMaker/examples/RMakerSonoffDualR3/ci.yml b/libraries/RainMaker/examples/RMakerSonoffDualR3/ci.yml new file mode 100644 index 00000000000..fc2a11e6948 --- /dev/null +++ b/libraries/RainMaker/examples/RMakerSonoffDualR3/ci.yml @@ -0,0 +1,11 @@ +targets: + esp32: false + +fqbn_append: PartitionScheme=rainmaker_4MB + +requires: + - CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=[1-9][0-9]* + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/RainMaker/examples/RMakerSwitch/ci.json b/libraries/RainMaker/examples/RMakerSwitch/ci.json deleted file mode 100644 index ce63fe9ccf0..00000000000 --- a/libraries/RainMaker/examples/RMakerSwitch/ci.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "targets": { - "esp32": false - }, - "fqbn_append": "PartitionScheme=rainmaker_4MB", - "requires": [ - "CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=[1-9][0-9]*" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/RainMaker/examples/RMakerSwitch/ci.yml b/libraries/RainMaker/examples/RMakerSwitch/ci.yml new file mode 100644 index 00000000000..fc2a11e6948 --- /dev/null +++ b/libraries/RainMaker/examples/RMakerSwitch/ci.yml @@ -0,0 +1,11 @@ +targets: + esp32: false + +fqbn_append: PartitionScheme=rainmaker_4MB + +requires: + - CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=[1-9][0-9]* + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/SD/examples/SD_time/ci.json b/libraries/SD/examples/SD_time/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/SD/examples/SD_time/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/SD/examples/SD_time/ci.yml b/libraries/SD/examples/SD_time/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/SD/examples/SD_time/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/SD_MMC/examples/SD2USBMSC/ci.json b/libraries/SD_MMC/examples/SD2USBMSC/ci.json deleted file mode 100644 index 125eed2e476..00000000000 --- a/libraries/SD_MMC/examples/SD2USBMSC/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_SDMMC_HOST_SUPPORTED=y", - "CONFIG_TINYUSB_MSC_ENABLED=y" - ] -} diff --git a/libraries/SD_MMC/examples/SD2USBMSC/ci.yml b/libraries/SD_MMC/examples/SD2USBMSC/ci.yml new file mode 100644 index 00000000000..e2806a2b62c --- /dev/null +++ b/libraries/SD_MMC/examples/SD2USBMSC/ci.yml @@ -0,0 +1,3 @@ +requires: + - CONFIG_SOC_SDMMC_HOST_SUPPORTED=y + - CONFIG_TINYUSB_MSC_ENABLED=y diff --git a/libraries/SD_MMC/examples/SDMMC_Test/ci.json b/libraries/SD_MMC/examples/SDMMC_Test/ci.json deleted file mode 100644 index a5221dae538..00000000000 --- a/libraries/SD_MMC/examples/SDMMC_Test/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_SDMMC_HOST_SUPPORTED=y" - ] -} diff --git a/libraries/SD_MMC/examples/SDMMC_Test/ci.yml b/libraries/SD_MMC/examples/SDMMC_Test/ci.yml new file mode 100644 index 00000000000..f519ee565aa --- /dev/null +++ b/libraries/SD_MMC/examples/SDMMC_Test/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_SDMMC_HOST_SUPPORTED=y diff --git a/libraries/SD_MMC/examples/SDMMC_time/ci.json b/libraries/SD_MMC/examples/SDMMC_time/ci.json deleted file mode 100644 index 5552b63d32a..00000000000 --- a/libraries/SD_MMC/examples/SDMMC_time/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_SDMMC_HOST_SUPPORTED=y" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/SD_MMC/examples/SDMMC_time/ci.yml b/libraries/SD_MMC/examples/SDMMC_time/ci.yml new file mode 100644 index 00000000000..a6c887da173 --- /dev/null +++ b/libraries/SD_MMC/examples/SDMMC_time/ci.yml @@ -0,0 +1,6 @@ +requires: + - CONFIG_SOC_SDMMC_HOST_SUPPORTED=y + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/SPI/examples/SPI_Multiple_Buses/ci.json b/libraries/SPI/examples/SPI_Multiple_Buses/ci.json deleted file mode 100644 index cd27a02724b..00000000000 --- a/libraries/SPI/examples/SPI_Multiple_Buses/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_SPI_PERIPH_NUM=[2-9]" - ] -} diff --git a/libraries/SPI/examples/SPI_Multiple_Buses/ci.yml b/libraries/SPI/examples/SPI_Multiple_Buses/ci.yml new file mode 100644 index 00000000000..91f0a17f1c0 --- /dev/null +++ b/libraries/SPI/examples/SPI_Multiple_Buses/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_SPI_PERIPH_NUM=[2-9] diff --git a/libraries/SPIFFS/examples/SPIFFS_time/ci.json b/libraries/SPIFFS/examples/SPIFFS_time/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/SPIFFS/examples/SPIFFS_time/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/SPIFFS/examples/SPIFFS_time/ci.yml b/libraries/SPIFFS/examples/SPIFFS_time/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/SPIFFS/examples/SPIFFS_time/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/SimpleBLE/examples/SimpleBleDevice/ci.json b/libraries/SimpleBLE/examples/SimpleBleDevice/ci.json deleted file mode 100644 index 3b6a150b31a..00000000000 --- a/libraries/SimpleBLE/examples/SimpleBleDevice/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_BLE_SUPPORTED=y", - "CONFIG_BT_ENABLED=y", - "CONFIG_BLUEDROID_ENABLED=y" - ] -} diff --git a/libraries/SimpleBLE/examples/SimpleBleDevice/ci.yml b/libraries/SimpleBLE/examples/SimpleBleDevice/ci.yml new file mode 100644 index 00000000000..87d5a470cd1 --- /dev/null +++ b/libraries/SimpleBLE/examples/SimpleBleDevice/ci.yml @@ -0,0 +1,4 @@ +requires: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_BT_ENABLED=y + - CONFIG_BLUEDROID_ENABLED=y diff --git a/libraries/USB/examples/CompositeDevice/ci.json b/libraries/USB/examples/CompositeDevice/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/CompositeDevice/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/CompositeDevice/ci.yml b/libraries/USB/examples/CompositeDevice/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/CompositeDevice/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/ConsumerControl/ci.json b/libraries/USB/examples/ConsumerControl/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/ConsumerControl/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/ConsumerControl/ci.yml b/libraries/USB/examples/ConsumerControl/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/ConsumerControl/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/CustomHIDDevice/ci.json b/libraries/USB/examples/CustomHIDDevice/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/CustomHIDDevice/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/CustomHIDDevice/ci.yml b/libraries/USB/examples/CustomHIDDevice/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/CustomHIDDevice/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/FirmwareMSC/ci.json b/libraries/USB/examples/FirmwareMSC/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/FirmwareMSC/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/FirmwareMSC/ci.yml b/libraries/USB/examples/FirmwareMSC/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/FirmwareMSC/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/Gamepad/ci.json b/libraries/USB/examples/Gamepad/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/Gamepad/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/Gamepad/ci.yml b/libraries/USB/examples/Gamepad/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/Gamepad/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/HIDVendor/ci.json b/libraries/USB/examples/HIDVendor/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/HIDVendor/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/HIDVendor/ci.yml b/libraries/USB/examples/HIDVendor/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/HIDVendor/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/Keyboard/KeyboardLogout/ci.json b/libraries/USB/examples/Keyboard/KeyboardLogout/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/Keyboard/KeyboardLogout/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/Keyboard/KeyboardLogout/ci.yml b/libraries/USB/examples/Keyboard/KeyboardLogout/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/Keyboard/KeyboardLogout/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/Keyboard/KeyboardMessage/ci.json b/libraries/USB/examples/Keyboard/KeyboardMessage/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/Keyboard/KeyboardMessage/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/Keyboard/KeyboardMessage/ci.yml b/libraries/USB/examples/Keyboard/KeyboardMessage/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/Keyboard/KeyboardMessage/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/Keyboard/KeyboardReprogram/ci.json b/libraries/USB/examples/Keyboard/KeyboardReprogram/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/Keyboard/KeyboardReprogram/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/Keyboard/KeyboardReprogram/ci.yml b/libraries/USB/examples/Keyboard/KeyboardReprogram/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/Keyboard/KeyboardReprogram/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/Keyboard/KeyboardSerial/ci.json b/libraries/USB/examples/Keyboard/KeyboardSerial/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/Keyboard/KeyboardSerial/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/Keyboard/KeyboardSerial/ci.yml b/libraries/USB/examples/Keyboard/KeyboardSerial/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/Keyboard/KeyboardSerial/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/KeyboardAndMouseControl/ci.json b/libraries/USB/examples/KeyboardAndMouseControl/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/KeyboardAndMouseControl/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/KeyboardAndMouseControl/ci.yml b/libraries/USB/examples/KeyboardAndMouseControl/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/KeyboardAndMouseControl/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/MIDI/MidiController/ci.json b/libraries/USB/examples/MIDI/MidiController/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/MIDI/MidiController/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/MIDI/MidiController/ci.yml b/libraries/USB/examples/MIDI/MidiController/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/MIDI/MidiController/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/MIDI/MidiInterface/ci.json b/libraries/USB/examples/MIDI/MidiInterface/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/MIDI/MidiInterface/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/MIDI/MidiInterface/ci.yml b/libraries/USB/examples/MIDI/MidiInterface/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/MIDI/MidiInterface/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/MIDI/MidiMusicBox/ci.json b/libraries/USB/examples/MIDI/MidiMusicBox/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/MIDI/MidiMusicBox/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/MIDI/MidiMusicBox/ci.yml b/libraries/USB/examples/MIDI/MidiMusicBox/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/MIDI/MidiMusicBox/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/MIDI/ReceiveMidi/ci.json b/libraries/USB/examples/MIDI/ReceiveMidi/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/MIDI/ReceiveMidi/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/MIDI/ReceiveMidi/ci.yml b/libraries/USB/examples/MIDI/ReceiveMidi/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/MIDI/ReceiveMidi/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/Mouse/ButtonMouseControl/ci.json b/libraries/USB/examples/Mouse/ButtonMouseControl/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/Mouse/ButtonMouseControl/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/Mouse/ButtonMouseControl/ci.yml b/libraries/USB/examples/Mouse/ButtonMouseControl/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/Mouse/ButtonMouseControl/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/SystemControl/ci.json b/libraries/USB/examples/SystemControl/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/SystemControl/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/SystemControl/ci.yml b/libraries/USB/examples/SystemControl/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/SystemControl/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/USBMSC/ci.json b/libraries/USB/examples/USBMSC/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/USBMSC/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/USBMSC/ci.yml b/libraries/USB/examples/USBMSC/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/USBMSC/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/USBSerial/ci.json b/libraries/USB/examples/USBSerial/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/USBSerial/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/USBSerial/ci.yml b/libraries/USB/examples/USBSerial/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/USBSerial/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/USB/examples/USBVendor/ci.json b/libraries/USB/examples/USBVendor/ci.json deleted file mode 100644 index f9ac7d0bec9..00000000000 --- a/libraries/USB/examples/USBVendor/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_USB_OTG_SUPPORTED=y" - ] -} diff --git a/libraries/USB/examples/USBVendor/ci.yml b/libraries/USB/examples/USBVendor/ci.yml new file mode 100644 index 00000000000..047516fdb45 --- /dev/null +++ b/libraries/USB/examples/USBVendor/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_USB_OTG_SUPPORTED=y diff --git a/libraries/Update/examples/AWS_S3_OTA_Update/ci.json b/libraries/Update/examples/AWS_S3_OTA_Update/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/Update/examples/AWS_S3_OTA_Update/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/Update/examples/AWS_S3_OTA_Update/ci.yml b/libraries/Update/examples/AWS_S3_OTA_Update/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/Update/examples/AWS_S3_OTA_Update/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/Update/examples/HTTPS_OTA_Update/ci.json b/libraries/Update/examples/HTTPS_OTA_Update/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/Update/examples/HTTPS_OTA_Update/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/Update/examples/HTTPS_OTA_Update/ci.yml b/libraries/Update/examples/HTTPS_OTA_Update/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/Update/examples/HTTPS_OTA_Update/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/Update/examples/HTTP_Client_AES_OTA_Update/ci.json b/libraries/Update/examples/HTTP_Client_AES_OTA_Update/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/Update/examples/HTTP_Client_AES_OTA_Update/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/Update/examples/HTTP_Client_AES_OTA_Update/ci.yml b/libraries/Update/examples/HTTP_Client_AES_OTA_Update/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/Update/examples/HTTP_Client_AES_OTA_Update/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/Update/examples/HTTP_Server_AES_OTA_Update/ci.json b/libraries/Update/examples/HTTP_Server_AES_OTA_Update/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/Update/examples/HTTP_Server_AES_OTA_Update/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/Update/examples/HTTP_Server_AES_OTA_Update/ci.yml b/libraries/Update/examples/HTTP_Server_AES_OTA_Update/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/Update/examples/HTTP_Server_AES_OTA_Update/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/Update/examples/OTAWebUpdater/ci.json b/libraries/Update/examples/OTAWebUpdater/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/Update/examples/OTAWebUpdater/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/Update/examples/OTAWebUpdater/ci.yml b/libraries/Update/examples/OTAWebUpdater/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/Update/examples/OTAWebUpdater/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/AdvancedWebServer/ci.json b/libraries/WebServer/examples/AdvancedWebServer/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/AdvancedWebServer/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/AdvancedWebServer/ci.yml b/libraries/WebServer/examples/AdvancedWebServer/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/AdvancedWebServer/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/ChunkWriting/ci.json b/libraries/WebServer/examples/ChunkWriting/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/ChunkWriting/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/ChunkWriting/ci.yml b/libraries/WebServer/examples/ChunkWriting/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/ChunkWriting/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/FSBrowser/ci.json b/libraries/WebServer/examples/FSBrowser/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/FSBrowser/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/FSBrowser/ci.yml b/libraries/WebServer/examples/FSBrowser/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/FSBrowser/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/Filters/ci.json b/libraries/WebServer/examples/Filters/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/Filters/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/Filters/ci.yml b/libraries/WebServer/examples/Filters/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/Filters/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/HelloServer/ci.json b/libraries/WebServer/examples/HelloServer/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/HelloServer/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/HelloServer/ci.yml b/libraries/WebServer/examples/HelloServer/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/HelloServer/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/HttpAdvancedAuth/ci.json b/libraries/WebServer/examples/HttpAdvancedAuth/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/HttpAdvancedAuth/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/HttpAdvancedAuth/ci.yml b/libraries/WebServer/examples/HttpAdvancedAuth/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/HttpAdvancedAuth/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/HttpAuthCallback/ci.json b/libraries/WebServer/examples/HttpAuthCallback/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/HttpAuthCallback/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/HttpAuthCallback/ci.yml b/libraries/WebServer/examples/HttpAuthCallback/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/HttpAuthCallback/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/HttpAuthCallbackInline/ci.json b/libraries/WebServer/examples/HttpAuthCallbackInline/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/HttpAuthCallbackInline/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/HttpAuthCallbackInline/ci.yml b/libraries/WebServer/examples/HttpAuthCallbackInline/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/HttpAuthCallbackInline/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/HttpBasicAuth/ci.json b/libraries/WebServer/examples/HttpBasicAuth/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/HttpBasicAuth/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/HttpBasicAuth/ci.yml b/libraries/WebServer/examples/HttpBasicAuth/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/HttpBasicAuth/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/HttpBasicAuthSHA1/ci.json b/libraries/WebServer/examples/HttpBasicAuthSHA1/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/HttpBasicAuthSHA1/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/HttpBasicAuthSHA1/ci.yml b/libraries/WebServer/examples/HttpBasicAuthSHA1/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/HttpBasicAuthSHA1/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken/ci.json b/libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken/ci.yml b/libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/HttpBasicAuthSHA1orBearerToken/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/Middleware/ci.json b/libraries/WebServer/examples/Middleware/ci.json deleted file mode 100644 index 36babb82730..00000000000 --- a/libraries/WebServer/examples/Middleware/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/WebServer/examples/Middleware/ci.yml b/libraries/WebServer/examples/Middleware/ci.yml new file mode 100644 index 00000000000..86e194b136b --- /dev/null +++ b/libraries/WebServer/examples/Middleware/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/WebServer/examples/MultiHomedServers/ci.json b/libraries/WebServer/examples/MultiHomedServers/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/MultiHomedServers/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/MultiHomedServers/ci.yml b/libraries/WebServer/examples/MultiHomedServers/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/MultiHomedServers/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/PathArgServer/ci.json b/libraries/WebServer/examples/PathArgServer/ci.json deleted file mode 100644 index cbdd28f773d..00000000000 --- a/libraries/WebServer/examples/PathArgServer/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/PathArgServer/ci.yml b/libraries/WebServer/examples/PathArgServer/ci.yml new file mode 100644 index 00000000000..9f15b3468e6 --- /dev/null +++ b/libraries/WebServer/examples/PathArgServer/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/SDWebServer/ci.json b/libraries/WebServer/examples/SDWebServer/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/SDWebServer/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/SDWebServer/ci.yml b/libraries/WebServer/examples/SDWebServer/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/SDWebServer/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/SimpleAuthentification/ci.json b/libraries/WebServer/examples/SimpleAuthentification/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/SimpleAuthentification/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/SimpleAuthentification/ci.yml b/libraries/WebServer/examples/SimpleAuthentification/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/SimpleAuthentification/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/UploadHugeFile/ci.json b/libraries/WebServer/examples/UploadHugeFile/ci.json deleted file mode 100644 index cbdd28f773d..00000000000 --- a/libraries/WebServer/examples/UploadHugeFile/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/UploadHugeFile/ci.yml b/libraries/WebServer/examples/UploadHugeFile/ci.yml new file mode 100644 index 00000000000..9f15b3468e6 --- /dev/null +++ b/libraries/WebServer/examples/UploadHugeFile/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/WebServer/ci.json b/libraries/WebServer/examples/WebServer/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/WebServer/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/WebServer/ci.yml b/libraries/WebServer/examples/WebServer/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/WebServer/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WebServer/examples/WebUpdate/ci.json b/libraries/WebServer/examples/WebUpdate/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WebServer/examples/WebUpdate/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WebServer/examples/WebUpdate/ci.yml b/libraries/WebServer/examples/WebUpdate/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WebServer/examples/WebUpdate/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/FTM/FTM_Initiator/ci.json b/libraries/WiFi/examples/FTM/FTM_Initiator/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/FTM/FTM_Initiator/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/FTM/FTM_Initiator/ci.yml b/libraries/WiFi/examples/FTM/FTM_Initiator/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/FTM/FTM_Initiator/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/FTM/FTM_Responder/ci.json b/libraries/WiFi/examples/FTM/FTM_Responder/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/FTM/FTM_Responder/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/FTM/FTM_Responder/ci.yml b/libraries/WiFi/examples/FTM/FTM_Responder/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/FTM/FTM_Responder/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/SimpleWiFiServer/ci.json b/libraries/WiFi/examples/SimpleWiFiServer/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/SimpleWiFiServer/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/SimpleWiFiServer/ci.yml b/libraries/WiFi/examples/SimpleWiFiServer/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/SimpleWiFiServer/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WPS/ci.json b/libraries/WiFi/examples/WPS/ci.json deleted file mode 100644 index 36babb82730..00000000000 --- a/libraries/WiFi/examples/WPS/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/WiFi/examples/WPS/ci.yml b/libraries/WiFi/examples/WPS/ci.yml new file mode 100644 index 00000000000..86e194b136b --- /dev/null +++ b/libraries/WiFi/examples/WPS/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/WiFi/examples/WiFiAccessPoint/ci.json b/libraries/WiFi/examples/WiFiAccessPoint/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiAccessPoint/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiAccessPoint/ci.yml b/libraries/WiFi/examples/WiFiAccessPoint/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiAccessPoint/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiBlueToothSwitch/ci.json b/libraries/WiFi/examples/WiFiBlueToothSwitch/ci.json deleted file mode 100644 index 5be7c616d24..00000000000 --- a/libraries/WiFi/examples/WiFiBlueToothSwitch/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_BT_SUPPORTED=y" - ], - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiBlueToothSwitch/ci.yml b/libraries/WiFi/examples/WiFiBlueToothSwitch/ci.yml new file mode 100644 index 00000000000..62aa0cb6119 --- /dev/null +++ b/libraries/WiFi/examples/WiFiBlueToothSwitch/ci.yml @@ -0,0 +1,6 @@ +requires: + - CONFIG_SOC_BT_SUPPORTED=y + +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiClient/ci.json b/libraries/WiFi/examples/WiFiClient/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiClient/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiClient/ci.yml b/libraries/WiFi/examples/WiFiClient/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiClient/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiClientBasic/ci.json b/libraries/WiFi/examples/WiFiClientBasic/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiClientBasic/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiClientBasic/ci.yml b/libraries/WiFi/examples/WiFiClientBasic/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiClientBasic/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiClientConnect/ci.json b/libraries/WiFi/examples/WiFiClientConnect/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiClientConnect/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiClientConnect/ci.yml b/libraries/WiFi/examples/WiFiClientConnect/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiClientConnect/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiClientEnterprise/ci.json b/libraries/WiFi/examples/WiFiClientEnterprise/ci.json deleted file mode 100644 index 36babb82730..00000000000 --- a/libraries/WiFi/examples/WiFiClientEnterprise/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiClientEnterprise/ci.yml b/libraries/WiFi/examples/WiFiClientEnterprise/ci.yml new file mode 100644 index 00000000000..86e194b136b --- /dev/null +++ b/libraries/WiFi/examples/WiFiClientEnterprise/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/WiFi/examples/WiFiClientEvents/ci.json b/libraries/WiFi/examples/WiFiClientEvents/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiClientEvents/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiClientEvents/ci.yml b/libraries/WiFi/examples/WiFiClientEvents/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiClientEvents/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiClientStaticIP/ci.json b/libraries/WiFi/examples/WiFiClientStaticIP/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiClientStaticIP/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiClientStaticIP/ci.yml b/libraries/WiFi/examples/WiFiClientStaticIP/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiClientStaticIP/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiExtender/ci.json b/libraries/WiFi/examples/WiFiExtender/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiExtender/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiExtender/ci.yml b/libraries/WiFi/examples/WiFiExtender/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiExtender/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiIPv6/ci.json b/libraries/WiFi/examples/WiFiIPv6/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiIPv6/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiIPv6/ci.yml b/libraries/WiFi/examples/WiFiIPv6/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiIPv6/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiMulti/ci.json b/libraries/WiFi/examples/WiFiMulti/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiMulti/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiMulti/ci.yml b/libraries/WiFi/examples/WiFiMulti/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiMulti/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiMultiAdvanced/ci.json b/libraries/WiFi/examples/WiFiMultiAdvanced/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiMultiAdvanced/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiMultiAdvanced/ci.yml b/libraries/WiFi/examples/WiFiMultiAdvanced/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiMultiAdvanced/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiScan/ci.json b/libraries/WiFi/examples/WiFiScan/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiScan/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiScan/ci.yml b/libraries/WiFi/examples/WiFiScan/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiScan/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiScanAsync/ci.json b/libraries/WiFi/examples/WiFiScanAsync/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiScanAsync/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiScanAsync/ci.yml b/libraries/WiFi/examples/WiFiScanAsync/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiScanAsync/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiScanDualAntenna/ci.json b/libraries/WiFi/examples/WiFiScanDualAntenna/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiScanDualAntenna/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiScanDualAntenna/ci.yml b/libraries/WiFi/examples/WiFiScanDualAntenna/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiScanDualAntenna/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiScanTime/ci.json b/libraries/WiFi/examples/WiFiScanTime/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiScanTime/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiScanTime/ci.yml b/libraries/WiFi/examples/WiFiScanTime/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiScanTime/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiSmartConfig/ci.json b/libraries/WiFi/examples/WiFiSmartConfig/ci.json deleted file mode 100644 index 36babb82730..00000000000 --- a/libraries/WiFi/examples/WiFiSmartConfig/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiSmartConfig/ci.yml b/libraries/WiFi/examples/WiFiSmartConfig/ci.yml new file mode 100644 index 00000000000..86e194b136b --- /dev/null +++ b/libraries/WiFi/examples/WiFiSmartConfig/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/WiFi/examples/WiFiTelnetToSerial/ci.json b/libraries/WiFi/examples/WiFiTelnetToSerial/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiTelnetToSerial/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiTelnetToSerial/ci.yml b/libraries/WiFi/examples/WiFiTelnetToSerial/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiTelnetToSerial/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFi/examples/WiFiUDPClient/ci.json b/libraries/WiFi/examples/WiFiUDPClient/ci.json deleted file mode 100644 index 618e46bd244..00000000000 --- a/libraries/WiFi/examples/WiFiUDPClient/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "requires_any": [ - "CONFIG_SOC_WIFI_SUPPORTED=y", - "CONFIG_ESP_WIFI_REMOTE_ENABLED=y" - ] -} diff --git a/libraries/WiFi/examples/WiFiUDPClient/ci.yml b/libraries/WiFi/examples/WiFiUDPClient/ci.yml new file mode 100644 index 00000000000..006e6e07dda --- /dev/null +++ b/libraries/WiFi/examples/WiFiUDPClient/ci.yml @@ -0,0 +1,3 @@ +requires_any: + - CONFIG_SOC_WIFI_SUPPORTED=y + - CONFIG_ESP_WIFI_REMOTE_ENABLED=y diff --git a/libraries/WiFiProv/examples/WiFiProv/ci.json b/libraries/WiFiProv/examples/WiFiProv/ci.json deleted file mode 100644 index 04eb62b977a..00000000000 --- a/libraries/WiFiProv/examples/WiFiProv/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=huge_app", - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/libraries/WiFiProv/examples/WiFiProv/ci.yml b/libraries/WiFiProv/examples/WiFiProv/ci.yml new file mode 100644 index 00000000000..e412162e577 --- /dev/null +++ b/libraries/WiFiProv/examples/WiFiProv/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y diff --git a/libraries/Wire/examples/WireMaster/ci.json b/libraries/Wire/examples/WireMaster/ci.json deleted file mode 100644 index 1844adfc786..00000000000 --- a/libraries/Wire/examples/WireMaster/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_I2C_SUPPORTED=y" - ] -} diff --git a/libraries/Wire/examples/WireMaster/ci.yml b/libraries/Wire/examples/WireMaster/ci.yml new file mode 100644 index 00000000000..f9928773b30 --- /dev/null +++ b/libraries/Wire/examples/WireMaster/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_I2C_SUPPORTED=y diff --git a/libraries/Wire/examples/WireScan/ci.json b/libraries/Wire/examples/WireScan/ci.json deleted file mode 100644 index 1844adfc786..00000000000 --- a/libraries/Wire/examples/WireScan/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_I2C_SUPPORTED=y" - ] -} diff --git a/libraries/Wire/examples/WireScan/ci.yml b/libraries/Wire/examples/WireScan/ci.yml new file mode 100644 index 00000000000..f9928773b30 --- /dev/null +++ b/libraries/Wire/examples/WireScan/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_I2C_SUPPORTED=y diff --git a/libraries/Wire/examples/WireSlave/ci.json b/libraries/Wire/examples/WireSlave/ci.json deleted file mode 100644 index 3c877975d62..00000000000 --- a/libraries/Wire/examples/WireSlave/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_I2C_SUPPORT_SLAVE=y" - ] -} diff --git a/libraries/Wire/examples/WireSlave/ci.yml b/libraries/Wire/examples/WireSlave/ci.yml new file mode 100644 index 00000000000..40e259fda10 --- /dev/null +++ b/libraries/Wire/examples/WireSlave/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_I2C_SUPPORT_SLAVE=y diff --git a/libraries/Wire/examples/WireSlaveFunctionalCallback/ci.json b/libraries/Wire/examples/WireSlaveFunctionalCallback/ci.json deleted file mode 100644 index 3c877975d62..00000000000 --- a/libraries/Wire/examples/WireSlaveFunctionalCallback/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "requires": [ - "CONFIG_SOC_I2C_SUPPORT_SLAVE=y" - ] -} diff --git a/libraries/Wire/examples/WireSlaveFunctionalCallback/ci.yml b/libraries/Wire/examples/WireSlaveFunctionalCallback/ci.yml new file mode 100644 index 00000000000..40e259fda10 --- /dev/null +++ b/libraries/Wire/examples/WireSlaveFunctionalCallback/ci.yml @@ -0,0 +1,2 @@ +requires: + - CONFIG_SOC_I2C_SUPPORT_SLAVE=y diff --git a/libraries/Zigbee/examples/Zigbee_Analog_Input_Output/ci.json b/libraries/Zigbee/examples/Zigbee_Analog_Input_Output/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Analog_Input_Output/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Analog_Input_Output/ci.yml b/libraries/Zigbee/examples/Zigbee_Analog_Input_Output/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Analog_Input_Output/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Binary_Input_Output/ci.json b/libraries/Zigbee/examples/Zigbee_Binary_Input_Output/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Binary_Input_Output/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Binary_Input_Output/ci.yml b/libraries/Zigbee/examples/Zigbee_Binary_Input_Output/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Binary_Input_Output/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_CarbonDioxide_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/ci.json b/libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/ci.yml b/libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Color_Dimmable_Light/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/ci.json b/libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/ci.yml b/libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Color_Dimmer_Switch/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Contact_Switch/ci.json b/libraries/Zigbee/examples/Zigbee_Contact_Switch/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Contact_Switch/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Contact_Switch/ci.yml b/libraries/Zigbee/examples/Zigbee_Contact_Switch/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Contact_Switch/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Dimmable_Light/ci.json b/libraries/Zigbee/examples/Zigbee_Dimmable_Light/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Dimmable_Light/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Dimmable_Light/ci.yml b/libraries/Zigbee/examples/Zigbee_Dimmable_Light/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Dimmable_Light/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase/ci.json b/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase/ci.yml b/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Electrical_AC_Sensor_MultiPhase/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Electrical_DC_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Fan_Control/ci.json b/libraries/Zigbee/examples/Zigbee_Fan_Control/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Fan_Control/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Fan_Control/ci.yml b/libraries/Zigbee/examples/Zigbee_Fan_Control/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Fan_Control/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Gateway/ci.json b/libraries/Zigbee/examples/Zigbee_Gateway/ci.json deleted file mode 100644 index 23e1c59d1da..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Gateway/ci.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr_8MB,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ], - "targets": { - "esp32c6": false, - "esp32h2": false - } -} diff --git a/libraries/Zigbee/examples/Zigbee_Gateway/ci.yml b/libraries/Zigbee/examples/Zigbee_Gateway/ci.yml new file mode 100644 index 00000000000..ab3b5078f03 --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Gateway/ci.yml @@ -0,0 +1,8 @@ +fqbn_append: PartitionScheme=zigbee_zczr_8MB,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y + +targets: + esp32c6: false + esp32h2: false diff --git a/libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Illuminance_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Multistate_Input_Output/ci.json b/libraries/Zigbee/examples/Zigbee_Multistate_Input_Output/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Multistate_Input_Output/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Multistate_Input_Output/ci.yml b/libraries/Zigbee/examples/Zigbee_Multistate_Input_Output/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Multistate_Input_Output/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_OTA_Client/ci.json b/libraries/Zigbee/examples/Zigbee_OTA_Client/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_OTA_Client/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_OTA_Client/ci.yml b/libraries/Zigbee/examples/Zigbee_OTA_Client/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_OTA_Client/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Occupancy_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_Occupancy_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Occupancy_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Occupancy_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_Occupancy_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Occupancy_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_On_Off_Light/ci.json b/libraries/Zigbee/examples/Zigbee_On_Off_Light/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_On_Off_Light/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_On_Off_Light/ci.yml b/libraries/Zigbee/examples/Zigbee_On_Off_Light/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_On_Off_Light/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch/ci.json b/libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch/ci.yml b/libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_On_Off_MultiSwitch/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_On_Off_Switch/ci.json b/libraries/Zigbee/examples/Zigbee_On_Off_Switch/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_On_Off_Switch/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_On_Off_Switch/ci.yml b/libraries/Zigbee/examples/Zigbee_On_Off_Switch/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_On_Off_Switch/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_PM25_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_PM25_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_PM25_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_PM25_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_PM25_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_PM25_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Power_Outlet/ci.json b/libraries/Zigbee/examples/Zigbee_Power_Outlet/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Power_Outlet/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Power_Outlet/ci.yml b/libraries/Zigbee/examples/Zigbee_Power_Outlet/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Power_Outlet/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Pressure_Flow_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Range_Extender/ci.json b/libraries/Zigbee/examples/Zigbee_Range_Extender/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Range_Extender/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Range_Extender/ci.yml b/libraries/Zigbee/examples/Zigbee_Range_Extender/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Range_Extender/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Scan_Networks/ci.json b/libraries/Zigbee/examples/Zigbee_Scan_Networks/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Scan_Networks/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Scan_Networks/ci.yml b/libraries/Zigbee/examples/Zigbee_Scan_Networks/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Scan_Networks/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/ci.json b/libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/ci.yml b/libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Temp_Hum_Sensor_Sleepy/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Temperature_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_Temperature_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Temperature_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Temperature_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_Temperature_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Temperature_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Thermostat/ci.json b/libraries/Zigbee/examples/Zigbee_Thermostat/ci.json deleted file mode 100644 index 15d6190e4ae..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Thermostat/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee_zczr,ZigbeeMode=zczr", - "requires": [ - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Thermostat/ci.yml b/libraries/Zigbee/examples/Zigbee_Thermostat/ci.yml new file mode 100644 index 00000000000..2f21922223c --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Thermostat/ci.yml @@ -0,0 +1,4 @@ +fqbn_append: PartitionScheme=zigbee_zczr,ZigbeeMode=zczr + +requires: + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Vibration_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_Vibration_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Vibration_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Vibration_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_Vibration_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Vibration_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor/ci.json b/libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor/ci.yml b/libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Wind_Speed_Sensor/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/libraries/Zigbee/examples/Zigbee_Window_Covering/ci.json b/libraries/Zigbee/examples/Zigbee_Window_Covering/ci.json deleted file mode 100644 index ceacc367801..00000000000 --- a/libraries/Zigbee/examples/Zigbee_Window_Covering/ci.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fqbn_append": "PartitionScheme=zigbee,ZigbeeMode=ed", - "requires": [ - "CONFIG_SOC_IEEE802154_SUPPORTED=y", - "CONFIG_ZB_ENABLED=y" - ] -} diff --git a/libraries/Zigbee/examples/Zigbee_Window_Covering/ci.yml b/libraries/Zigbee/examples/Zigbee_Window_Covering/ci.yml new file mode 100644 index 00000000000..22315a90f3b --- /dev/null +++ b/libraries/Zigbee/examples/Zigbee_Window_Covering/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=zigbee,ZigbeeMode=ed + +requires: + - CONFIG_SOC_IEEE802154_SUPPORTED=y + - CONFIG_ZB_ENABLED=y diff --git a/tests/performance/coremark/ci.json b/tests/performance/coremark/ci.json deleted file mode 100644 index accee2b2135..00000000000 --- a/tests/performance/coremark/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "platforms": { - "qemu": false, - "wokwi": false - } -} diff --git a/tests/performance/coremark/ci.yml b/tests/performance/coremark/ci.yml new file mode 100644 index 00000000000..a5625fc9fa1 --- /dev/null +++ b/tests/performance/coremark/ci.yml @@ -0,0 +1,3 @@ +platforms: + qemu: false + wokwi: false diff --git a/tests/performance/fibonacci/ci.json b/tests/performance/fibonacci/ci.json deleted file mode 100644 index accee2b2135..00000000000 --- a/tests/performance/fibonacci/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "platforms": { - "qemu": false, - "wokwi": false - } -} diff --git a/tests/performance/fibonacci/ci.yml b/tests/performance/fibonacci/ci.yml new file mode 100644 index 00000000000..a5625fc9fa1 --- /dev/null +++ b/tests/performance/fibonacci/ci.yml @@ -0,0 +1,3 @@ +platforms: + qemu: false + wokwi: false diff --git a/tests/performance/linpack_double/ci.json b/tests/performance/linpack_double/ci.json deleted file mode 100644 index accee2b2135..00000000000 --- a/tests/performance/linpack_double/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "platforms": { - "qemu": false, - "wokwi": false - } -} diff --git a/tests/performance/linpack_double/ci.yml b/tests/performance/linpack_double/ci.yml new file mode 100644 index 00000000000..a5625fc9fa1 --- /dev/null +++ b/tests/performance/linpack_double/ci.yml @@ -0,0 +1,3 @@ +platforms: + qemu: false + wokwi: false diff --git a/tests/performance/linpack_float/ci.json b/tests/performance/linpack_float/ci.json deleted file mode 100644 index accee2b2135..00000000000 --- a/tests/performance/linpack_float/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "platforms": { - "qemu": false, - "wokwi": false - } -} diff --git a/tests/performance/linpack_float/ci.yml b/tests/performance/linpack_float/ci.yml new file mode 100644 index 00000000000..a5625fc9fa1 --- /dev/null +++ b/tests/performance/linpack_float/ci.yml @@ -0,0 +1,3 @@ +platforms: + qemu: false + wokwi: false diff --git a/tests/performance/psramspeed/ci.json b/tests/performance/psramspeed/ci.json deleted file mode 100644 index e981565f0ca..00000000000 --- a/tests/performance/psramspeed/ci.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "soc_tags": { - "esp32": [ - "psram" - ], - "esp32s2": [ - "psram" - ], - "esp32s3": [ - "octal_psram" - ], - "esp32c5": [ - "psram" - ] - }, - "platforms": { - "qemu": false, - "wokwi": false - }, - "requires": [ - "CONFIG_SPIRAM=y" - ] -} diff --git a/tests/performance/psramspeed/ci.yml b/tests/performance/psramspeed/ci.yml new file mode 100644 index 00000000000..7e06eac7cfa --- /dev/null +++ b/tests/performance/psramspeed/ci.yml @@ -0,0 +1,16 @@ +soc_tags: + esp32: + - psram + esp32s2: + - psram + esp32s3: + - octal_psram + esp32c5: + - psram + +platforms: + qemu: false + wokwi: false + +requires: + - CONFIG_SPIRAM=y diff --git a/tests/performance/ramspeed/ci.json b/tests/performance/ramspeed/ci.json deleted file mode 100644 index d880ca64dfb..00000000000 --- a/tests/performance/ramspeed/ci.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "fqbn": { - "esp32": [ - "espressif:esp32:esp32:PSRAM=disabled,PartitionScheme=huge_app" - ], - "esp32s2": [ - "espressif:esp32:esp32s2:PSRAM=disabled,PartitionScheme=huge_app" - ], - "esp32s3": [ - "espressif:esp32:esp32s3:PSRAM=disabled,USBMode=default,PartitionScheme=huge_app" - ] - }, - "platform": { - "qemu": false, - "wokwi": false - } -} diff --git a/tests/performance/ramspeed/ci.yml b/tests/performance/ramspeed/ci.yml new file mode 100644 index 00000000000..1b4f093b0fc --- /dev/null +++ b/tests/performance/ramspeed/ci.yml @@ -0,0 +1,11 @@ +fqbn: + esp32: + - espressif:esp32:esp32:PSRAM=disabled,PartitionScheme=huge_app + esp32s2: + - espressif:esp32:esp32s2:PSRAM=disabled,PartitionScheme=huge_app + esp32s3: + - espressif:esp32:esp32s3:PSRAM=disabled,USBMode=default,PartitionScheme=huge_app + +platforms: + qemu: false + wokwi: false diff --git a/tests/performance/superpi/ci.json b/tests/performance/superpi/ci.json deleted file mode 100644 index accee2b2135..00000000000 --- a/tests/performance/superpi/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "platforms": { - "qemu": false, - "wokwi": false - } -} diff --git a/tests/performance/superpi/ci.yml b/tests/performance/superpi/ci.yml new file mode 100644 index 00000000000..a5625fc9fa1 --- /dev/null +++ b/tests/performance/superpi/ci.yml @@ -0,0 +1,3 @@ +platforms: + qemu: false + wokwi: false diff --git a/tests/requirements.txt b/tests/requirements.txt index 29b7d531bd4..bf7b600352e 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,8 +1,8 @@ cryptography==44.0.1 --only-binary cryptography pytest-cov==5.0.0 -pytest-embedded-serial-esp==2.1.0 -pytest-embedded-arduino==2.1.0 -pytest-embedded-wokwi==2.1.0 -pytest-embedded-qemu==2.1.0 +pytest-embedded-serial-esp==2.1.2 +pytest-embedded-arduino==2.1.2 +pytest-embedded-wokwi==2.1.2 +pytest-embedded-qemu==2.1.2 esptool==5.1.0 diff --git a/tests/validation/democfg/ci.json b/tests/validation/democfg/ci.json deleted file mode 100644 index cf5c796644e..00000000000 --- a/tests/validation/democfg/ci.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "fqbn": { - "esp32": [ - "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=qio" - ], - "esp32s2": [ - "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app" - ], - "esp32s3": [ - "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app" - ] - }, - "platforms": { - "hardware": true, - "qemu": false, - "wokwi": false - }, - "requires": [ - "CONFIG_SOC_UART_SUPPORTED=y" - ], - "targets": { - "esp32": true, - "esp32c3": false, - "esp32c6": true, - "esp32h2": false, - "esp32s2": true, - "esp32s3": true, - "esp32p4": false - } -} diff --git a/tests/validation/democfg/ci.yml b/tests/validation/democfg/ci.yml new file mode 100644 index 00000000000..d78c4b0f4eb --- /dev/null +++ b/tests/validation/democfg/ci.yml @@ -0,0 +1,25 @@ +fqbn: + esp32: + - espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=qio + esp32s2: + - espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app + esp32s3: + - espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app + +platforms: + hardware: true + qemu: false + wokwi: false + +requires: + - CONFIG_SOC_UART_SUPPORTED=y + +targets: + esp32: true + esp32c3: false + esp32c6: true + esp32h2: false + esp32s2: true + esp32s3: true + esp32p4: false diff --git a/tests/validation/gpio/ci.json b/tests/validation/gpio/ci.json deleted file mode 100644 index 7bc6a6ed163..00000000000 --- a/tests/validation/gpio/ci.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "platforms": { - "hardware": false, - "qemu": false - } -} diff --git a/tests/validation/gpio/ci.yml b/tests/validation/gpio/ci.yml new file mode 100644 index 00000000000..3f53d32a04e --- /dev/null +++ b/tests/validation/gpio/ci.yml @@ -0,0 +1,3 @@ +platforms: + hardware: false + qemu: false diff --git a/tests/validation/i2c_master/ci.json b/tests/validation/i2c_master/ci.json deleted file mode 100644 index 2b8792cd131..00000000000 --- a/tests/validation/i2c_master/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "platforms": { - "hardware": false, - "qemu": false - }, - "requires": [ - "CONFIG_SOC_I2C_SUPPORTED=y" - ] -} diff --git a/tests/validation/i2c_master/ci.yml b/tests/validation/i2c_master/ci.yml new file mode 100644 index 00000000000..fcf344e3e07 --- /dev/null +++ b/tests/validation/i2c_master/ci.yml @@ -0,0 +1,6 @@ +platforms: + hardware: false + qemu: false + +requires: + - CONFIG_SOC_I2C_SUPPORTED=y diff --git a/tests/validation/nvs/ci.json b/tests/validation/nvs/ci.json deleted file mode 100644 index 7f8ce83ec54..00000000000 --- a/tests/validation/nvs/ci.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "fqbn": { - "esp32": [ - "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=qio" - ], - "esp32c3": [ - "espressif:esp32:esp32c3:PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32c3:PartitionScheme=huge_app,FlashMode=qio" - ], - "esp32c6": [ - "espressif:esp32:esp32c6:PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32c6:PartitionScheme=huge_app,FlashMode=dio,FlashFreq=40", - "espressif:esp32:esp32c6:PartitionScheme=huge_app,FlashMode=qio", - "espressif:esp32:esp32c6:PartitionScheme=huge_app,FlashMode=qio,FlashFreq=40" - ], - "esp32h2": [ - "espressif:esp32:esp32h2:PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32h2:PartitionScheme=huge_app,FlashMode=dio,FlashFreq=16", - "espressif:esp32:esp32h2:PartitionScheme=huge_app,FlashMode=qio", - "espressif:esp32:esp32h2:PartitionScheme=huge_app,FlashMode=qio,FlashFreq=16" - ], - "esp32s2": [ - "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=qio" - ], - "esp32s3": [ - "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app,FlashMode=qio", - "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app,FlashMode=qio120", - "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app,FlashMode=dio" - ], - "esp32p4": [ - "espressif:esp32:esp32p4:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32p4:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=dio,FlashFreq=40", - "espressif:esp32:esp32p4:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=qio", - "espressif:esp32:esp32p4:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=qio,FlashFreq=40" - ] - }, - "platforms": { - "qemu": false - } -} diff --git a/tests/validation/nvs/ci.yml b/tests/validation/nvs/ci.yml new file mode 100644 index 00000000000..bebad7c1014 --- /dev/null +++ b/tests/validation/nvs/ci.yml @@ -0,0 +1,32 @@ +fqbn: + esp32: + - espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=qio + esp32c3: + - espressif:esp32:esp32c3:PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32c3:PartitionScheme=huge_app,FlashMode=qio + esp32c6: + - espressif:esp32:esp32c6:PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32c6:PartitionScheme=huge_app,FlashMode=dio,FlashFreq=40 + - espressif:esp32:esp32c6:PartitionScheme=huge_app,FlashMode=qio + - espressif:esp32:esp32c6:PartitionScheme=huge_app,FlashMode=qio,FlashFreq=40 + esp32h2: + - espressif:esp32:esp32h2:PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32h2:PartitionScheme=huge_app,FlashMode=dio,FlashFreq=16 + - espressif:esp32:esp32h2:PartitionScheme=huge_app,FlashMode=qio + - espressif:esp32:esp32h2:PartitionScheme=huge_app,FlashMode=qio,FlashFreq=16 + esp32s2: + - espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=qio + esp32s3: + - espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app,FlashMode=qio + - espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app,FlashMode=qio120 + - espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app,FlashMode=dio + esp32p4: + - espressif:esp32:esp32p4:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32p4:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=dio,FlashFreq=40 + - espressif:esp32:esp32p4:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=qio + - espressif:esp32:esp32p4:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=qio,FlashFreq=40 + +platforms: + qemu: false diff --git a/tests/validation/periman/ci.json b/tests/validation/periman/ci.json deleted file mode 100644 index 22ff71c54ff..00000000000 --- a/tests/validation/periman/ci.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "platforms": { - "qemu": false, - "wokwi": false - }, - "targets": { - "esp32p4": false - } -} diff --git a/tests/validation/periman/ci.yml b/tests/validation/periman/ci.yml new file mode 100644 index 00000000000..85d8f908f4e --- /dev/null +++ b/tests/validation/periman/ci.yml @@ -0,0 +1,6 @@ +platforms: + qemu: false + wokwi: false + +targets: + esp32p4: false diff --git a/tests/validation/psram/ci.json b/tests/validation/psram/ci.json deleted file mode 100644 index 4d426d38c30..00000000000 --- a/tests/validation/psram/ci.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "soc_tags": { - "esp32": [ - "psram" - ], - "esp32s2": [ - "psram" - ], - "esp32s3": [ - "octal_psram" - ], - "esp32c5": [ - "psram" - ] - }, - "platforms": { - "qemu": false - }, - "requires": [ - "CONFIG_SPIRAM=y" - ] -} diff --git a/tests/validation/psram/ci.yml b/tests/validation/psram/ci.yml new file mode 100644 index 00000000000..9324401b678 --- /dev/null +++ b/tests/validation/psram/ci.yml @@ -0,0 +1,16 @@ +soc_tags: + esp32: + - psram + esp32s2: + - psram + esp32s3: + - octal_psram + esp32c5: + - psram + # Runners for ESP32-P4 have PSRAM by default. There are no runners with psram tag. + +platforms: + qemu: false + +requires: + - CONFIG_SPIRAM=y diff --git a/tests/validation/touch/ci.json b/tests/validation/touch/ci.json deleted file mode 100644 index 3ccb5dfabe8..00000000000 --- a/tests/validation/touch/ci.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "fqbn_append": "DebugLevel=verbose", - "platforms": { - "qemu": false, - "wokwi": false - }, - "requires": [ - "CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y" - ] -} diff --git a/tests/validation/touch/ci.yml b/tests/validation/touch/ci.yml new file mode 100644 index 00000000000..93fd0a8d591 --- /dev/null +++ b/tests/validation/touch/ci.yml @@ -0,0 +1,8 @@ +fqbn_append: DebugLevel=verbose + +platforms: + qemu: false + wokwi: false + +requires: + - CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y diff --git a/tests/validation/uart/ci.json b/tests/validation/uart/ci.json deleted file mode 100644 index 54da33b6176..00000000000 --- a/tests/validation/uart/ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "platforms": { - "qemu": false - } -} diff --git a/tests/validation/uart/ci.yml b/tests/validation/uart/ci.yml new file mode 100644 index 00000000000..948813f74eb --- /dev/null +++ b/tests/validation/uart/ci.yml @@ -0,0 +1,2 @@ +platforms: + qemu: false diff --git a/tests/validation/wifi/ci.json b/tests/validation/wifi/ci.json deleted file mode 100644 index 54dd47ae9a9..00000000000 --- a/tests/validation/wifi/ci.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "tags": [ - "wifi" - ], - "fqbn": { - "esp32": [ - "espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32:PSRAM=disabled,PartitionScheme=huge_app,FlashMode=dio" - ], - "esp32s2": [ - "espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio", - "espressif:esp32:esp32s2:PSRAM=disabled,PartitionScheme=huge_app,FlashMode=dio" - ], - "esp32s3": [ - "espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app,FlashMode=qio", - "espressif:esp32:esp32s3:PSRAM=disabled,USBMode=default,PartitionScheme=huge_app,FlashMode=qio", - "espressif:esp32:esp32s3:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=qio" - ] - }, - "platforms": { - "hardware": false, - "qemu": false - }, - "requires": [ - "CONFIG_SOC_WIFI_SUPPORTED=y" - ] -} diff --git a/tests/validation/wifi/ci.yml b/tests/validation/wifi/ci.yml new file mode 100644 index 00000000000..56005ad43a0 --- /dev/null +++ b/tests/validation/wifi/ci.yml @@ -0,0 +1,21 @@ +tags: + - wifi_router + +fqbn: + esp32: + - espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32:PSRAM=disabled,PartitionScheme=huge_app,FlashMode=dio + esp32s2: + - espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app,FlashMode=dio + - espressif:esp32:esp32s2:PSRAM=disabled,PartitionScheme=huge_app,FlashMode=dio + esp32s3: + - espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app,FlashMode=qio + - espressif:esp32:esp32s3:PSRAM=disabled,USBMode=default,PartitionScheme=huge_app,FlashMode=qio + - espressif:esp32:esp32s3:PSRAM=enabled,USBMode=default,PartitionScheme=huge_app,FlashMode=qio + +platforms: + hardware: false + qemu: false + +requires: + - CONFIG_SOC_WIFI_SUPPORTED=y From af572377415e3c47d61238af312343223d756056 Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Tue, 21 Oct 2025 00:11:11 +0300 Subject: [PATCH 10/31] fix(i2c): Set I2C master log level to none (#11931) Silence log messages from the I2C master driver. --- cores/esp32/esp32-hal-i2c-ng.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cores/esp32/esp32-hal-i2c-ng.c b/cores/esp32/esp32-hal-i2c-ng.c index a3b2307b8a8..8a55b369d9e 100644 --- a/cores/esp32/esp32-hal-i2c-ng.c +++ b/cores/esp32/esp32-hal-i2c-ng.c @@ -156,6 +156,9 @@ esp_err_t i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) { } } + // Silence messages coming from the IDF driver + esp_log_level_set("i2c.master", ESP_LOG_NONE); + init_fail: #if !CONFIG_DISABLE_HAL_LOCKS //release lock From 7a9a10ca2cf84451fda1289c6e0a143edd2cee4e Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Tue, 21 Oct 2025 00:11:32 +0300 Subject: [PATCH 11/31] fix(net): Rework NO_GLOBALS to not act on dependent network classes (#11933) --- libraries/ESPmDNS/src/ESPmDNS.h | 2 -- libraries/Ethernet/src/ETH.cpp | 2 ++ libraries/Network/src/NetworkManager.h | 2 -- libraries/PPP/src/PPP.cpp | 2 ++ libraries/WiFi/src/WiFi.h | 2 -- 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/libraries/ESPmDNS/src/ESPmDNS.h b/libraries/ESPmDNS/src/ESPmDNS.h index 74f9002461f..1fb90bbf454 100644 --- a/libraries/ESPmDNS/src/ESPmDNS.h +++ b/libraries/ESPmDNS/src/ESPmDNS.h @@ -127,9 +127,7 @@ class MDNSResponder { mdns_txt_item_t *_getResultTxt(int idx, int txtIdx); }; -#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_MDNS) extern MDNSResponder MDNS; -#endif #endif /* CONFIG_MDNS_MAX_INTERFACES */ #endif //ESP32MDNS_H diff --git a/libraries/Ethernet/src/ETH.cpp b/libraries/Ethernet/src/ETH.cpp index 17b5da6d515..a8546c66131 100644 --- a/libraries/Ethernet/src/ETH.cpp +++ b/libraries/Ethernet/src/ETH.cpp @@ -1174,6 +1174,8 @@ size_t ETHClass::printDriverInfo(Print &out) const { return bytes; } +#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_ETH) ETHClass ETH; +#endif #endif /* CONFIG_ETH_ENABLED */ diff --git a/libraries/Network/src/NetworkManager.h b/libraries/Network/src/NetworkManager.h index dafac9cd983..6b9d5e16cfc 100644 --- a/libraries/Network/src/NetworkManager.h +++ b/libraries/Network/src/NetworkManager.h @@ -31,6 +31,4 @@ class NetworkManager : public NetworkEvents, public Printable { } }; -#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_NETWORK) extern NetworkManager Network; -#endif diff --git a/libraries/PPP/src/PPP.cpp b/libraries/PPP/src/PPP.cpp index 2a5c5760287..5e713bc84b0 100644 --- a/libraries/PPP/src/PPP.cpp +++ b/libraries/PPP/src/PPP.cpp @@ -763,6 +763,8 @@ size_t PPPClass::printDriverInfo(Print &out) const { return bytes; } +#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_PPP) PPPClass PPP; +#endif #endif /* CONFIG_LWIP_PPP_SUPPORT */ diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h index 6cfeb1155a0..ea2efd97697 100644 --- a/libraries/WiFi/src/WiFi.h +++ b/libraries/WiFi/src/WiFi.h @@ -72,8 +72,6 @@ class WiFiClass : public WiFiGenericClass, public WiFiSTAClass, public WiFiScanC bool isProvEnabled(); }; -#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_WIFI) extern WiFiClass WiFi; -#endif #endif /* SOC_WIFI_SUPPORTED */ From 01f07438b81601f0cdca87ebf26b3a06c82c245f Mon Sep 17 00:00:00 2001 From: Mitra Ardron Date: Mon, 27 Oct 2025 23:54:20 +1100 Subject: [PATCH 12/31] Update of all variant files to add BAT_VOLT_PIN for all variants that define a battery voltage pin (#11954) * Add BAT_VOLT_PIN for all variants that define a battery voltage pin with any obviously discoverable name. * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- variants/Bee_Data_Logger/pins_arduino.h | 1 + variants/Bee_Motion_S3/pins_arduino.h | 1 + variants/Bee_S3/pins_arduino.h | 1 + variants/Pcbcupid_GLYPH_C3/pins_arduino.h | 3 ++- variants/Pcbcupid_GLYPH_C6/pins_arduino.h | 3 ++- variants/Pcbcupid_GLYPH_H2/pins_arduino.h | 3 ++- variants/XIAO_ESP32S3_Plus/pins_arduino.h | 1 + variants/adafruit_camera_esp32s3/pins_arduino.h | 1 + variants/adafruit_feather_esp32_v2/pins_arduino.h | 1 + variants/adafruit_magtag29_esp32s2/pins_arduino.h | 1 + variants/cyobot_v2_esp32s3/pins_arduino.h | 1 + .../cytron_maker_feather_aiot_s3/pins_arduino.h | 1 + variants/d1_mini32/pins_arduino.h | 1 + variants/d32/pins_arduino.h | 1 + variants/d32_pro/pins_arduino.h | 1 + variants/deneyapkart1Av2/pins_arduino.h | 1 + variants/deneyapkartv2/pins_arduino.h | 1 + variants/esp32c3-devkit-lipo/pins_arduino.h | 1 + variants/esp32micromod/pins_arduino.h | 1 + variants/esp32s2-devkit-lipo-usb/pins_arduino.h | 1 + variants/esp32s2-devkit-lipo/pins_arduino.h | 1 + variants/esp32s3-devkit-lipo/pins_arduino.h | 1 + variants/esp32s3usbotg/pins_arduino.h | 1 + variants/feather_esp32/pins_arduino.h | 1 + variants/fed4/pins_arduino.h | 1 + variants/fobe_quill_esp32s3_mesh/pins_arduino.h | 3 ++- variants/fri3d_2024_esp32s3/pins_arduino.h | 1 + variants/heltec_capsule_sensor_v3/pins_arduino.h | 1 + variants/lilygo_t3_s3_lr1121/pins_arduino.h | 1 + variants/lilygo_t3_s3_sx1262/pins_arduino.h | 1 + variants/lilygo_t3_s3_sx127x/pins_arduino.h | 1 + variants/lilygo_t3_s3_sx1280/pins_arduino.h | 1 + variants/lilygo_t3_s3_sx1280pa/pins_arduino.h | 1 + variants/lilygo_t_display/pins_arduino.h | 1 + variants/lilygo_t_display_s3/pins_arduino.h | 1 + variants/lolin_c3_pico/pins_arduino.h | 1 + variants/oroca_edubot/pins_arduino.h | 1 + variants/rakwireless_rak3112/pins_arduino.h | 1 + variants/roboheart_hercules/pins_arduino.h | 15 ++++++++------- variants/tamc_termod_s3/pins_arduino.h | 1 + variants/thingpulse_epulse_feather/pins_arduino.h | 1 + variants/ttgo-t-oi-plus/pins_arduino.h | 1 + variants/uPesy_esp32c3_basic/pins_arduino.h | 1 + variants/uPesy_esp32c3_mini/pins_arduino.h | 1 + variants/um_bling/pins_arduino.h | 1 + variants/um_feathers2neo/pins_arduino.h | 1 + variants/um_feathers3/pins_arduino.h | 1 + variants/um_feathers3neo/pins_arduino.h | 1 + variants/um_pros3/pins_arduino.h | 1 + variants/um_tinyc6/pins_arduino.h | 1 + variants/um_tinys2/pins_arduino.h | 1 + variants/um_tinys3/pins_arduino.h | 1 + variants/watchy/pins_arduino.h | 3 ++- .../waveshare_esp32_s3_lcd_169/pins_arduino.h | 3 ++- .../pins_arduino.h | 3 ++- .../pins_arduino.h | 3 ++- .../pins_arduino.h | 3 ++- .../pins_arduino.h | 3 ++- .../pins_arduino.h | 3 ++- 59 files changed, 77 insertions(+), 18 deletions(-) diff --git a/variants/Bee_Data_Logger/pins_arduino.h b/variants/Bee_Data_Logger/pins_arduino.h index 1114ff0bdd3..2fa1026589f 100644 --- a/variants/Bee_Data_Logger/pins_arduino.h +++ b/variants/Bee_Data_Logger/pins_arduino.h @@ -60,6 +60,7 @@ static const uint8_t T14 = 14; static const uint8_t BOOT_BTN = 0; static const uint8_t VBAT_VOLTAGE = 1; +#define BAT_VOLT_PIN VBAT_VOLTAGE static const uint8_t VBUS_SENSE = 2; static const uint8_t LDO2 = 34; static const uint8_t RGB_DATA = 40; diff --git a/variants/Bee_Motion_S3/pins_arduino.h b/variants/Bee_Motion_S3/pins_arduino.h index 45f73b56ba0..38a5a9a0660 100644 --- a/variants/Bee_Motion_S3/pins_arduino.h +++ b/variants/Bee_Motion_S3/pins_arduino.h @@ -66,6 +66,7 @@ static const uint8_t T14 = 14; static const uint8_t BOOT_BTN = 0; static const uint8_t VBAT_VOLTAGE = 1; +#define BAT_VOLT_PIN VBAT_VOLTAGE static const uint8_t VBUS_SENSE = 2; static const uint8_t PIR = 4; static const uint8_t LIGHT = 3; diff --git a/variants/Bee_S3/pins_arduino.h b/variants/Bee_S3/pins_arduino.h index 9e76fff803e..906a8c6ec64 100644 --- a/variants/Bee_S3/pins_arduino.h +++ b/variants/Bee_S3/pins_arduino.h @@ -58,6 +58,7 @@ static const uint8_t T9 = 9; static const uint8_t T10 = 10; static const uint8_t VBAT_VOLTAGE = 1; +#define BAT_VOLT_PIN VBAT_VOLTAGE static const uint8_t RGB_DATA = 48; static const uint8_t RGB_PWR = 34; diff --git a/variants/Pcbcupid_GLYPH_C3/pins_arduino.h b/variants/Pcbcupid_GLYPH_C3/pins_arduino.h index 653c2c48828..5475de822ff 100644 --- a/variants/Pcbcupid_GLYPH_C3/pins_arduino.h +++ b/variants/Pcbcupid_GLYPH_C3/pins_arduino.h @@ -10,7 +10,8 @@ static const uint8_t LED_BUILTIN = 1; //MSR Used in on-board battery measurement static const uint8_t BAT_MEASURE = 0; -#define MSR BAT_MEASURE +#define BAT_VOLT_PIN BAT_MEASURE +#define MSR BAT_MEASURE static const uint8_t TX = 21; static const uint8_t RX = 20; diff --git a/variants/Pcbcupid_GLYPH_C6/pins_arduino.h b/variants/Pcbcupid_GLYPH_C6/pins_arduino.h index f06fb151244..223afbc6194 100644 --- a/variants/Pcbcupid_GLYPH_C6/pins_arduino.h +++ b/variants/Pcbcupid_GLYPH_C6/pins_arduino.h @@ -10,7 +10,8 @@ static const uint8_t LED_BUILTIN = 14; //MSR Used in on-board battery measurement static const uint8_t BAT_MEASURE = 0; -#define MSR BAT_MEASURE +#define BAT_VOLT_PIN BAT_MEASURE +#define MSR BAT_MEASURE static const uint8_t TX = 16; static const uint8_t RX = 17; diff --git a/variants/Pcbcupid_GLYPH_H2/pins_arduino.h b/variants/Pcbcupid_GLYPH_H2/pins_arduino.h index 20a385a9817..edc108a2a0d 100644 --- a/variants/Pcbcupid_GLYPH_H2/pins_arduino.h +++ b/variants/Pcbcupid_GLYPH_H2/pins_arduino.h @@ -10,7 +10,8 @@ static const uint8_t LED_BUILTIN = 0; //MSR Used in on-board battery measurement static const uint8_t BAT_MEASURE = 1; -#define MSR BAT_MEASURE +#define BAT_VOLT_PIN BAT_MEASURE +#define MSR BAT_MEASURE static const uint8_t TX = 24; static const uint8_t RX = 23; diff --git a/variants/XIAO_ESP32S3_Plus/pins_arduino.h b/variants/XIAO_ESP32S3_Plus/pins_arduino.h index de1c6093d44..ba7d1a5069d 100644 --- a/variants/XIAO_ESP32S3_Plus/pins_arduino.h +++ b/variants/XIAO_ESP32S3_Plus/pins_arduino.h @@ -55,6 +55,7 @@ static const uint8_t A8 = 7; static const uint8_t A9 = 8; static const uint8_t A10 = 9; static const uint8_t ADC_BAT = 10; +#define BAT_VOLT_PIN ADC_BAT static const uint8_t D0 = 1; static const uint8_t D1 = 2; diff --git a/variants/adafruit_camera_esp32s3/pins_arduino.h b/variants/adafruit_camera_esp32s3/pins_arduino.h index 447204f7345..16dd31d43f5 100644 --- a/variants/adafruit_camera_esp32s3/pins_arduino.h +++ b/variants/adafruit_camera_esp32s3/pins_arduino.h @@ -43,6 +43,7 @@ static const uint8_t MISO = 37; static const uint8_t A0 = 17; static const uint8_t A1 = 18; static const uint8_t BATT_MONITOR = 4; +#define BAT_VOLT_PIN BATT_MONITOR static const uint8_t SHUTTER_BUTTON = 0; static const uint8_t TX = 43; diff --git a/variants/adafruit_feather_esp32_v2/pins_arduino.h b/variants/adafruit_feather_esp32_v2/pins_arduino.h index f4af72aa98b..1b95efdb2f6 100644 --- a/variants/adafruit_feather_esp32_v2/pins_arduino.h +++ b/variants/adafruit_feather_esp32_v2/pins_arduino.h @@ -35,6 +35,7 @@ static const uint8_t A13 = 35; // vbat measure #define BATT_MONITOR 35 +#define BAT_VOLT_PIN BATT_MONITOR // internal switch #define BUTTON 38 diff --git a/variants/adafruit_magtag29_esp32s2/pins_arduino.h b/variants/adafruit_magtag29_esp32s2/pins_arduino.h index 197f2e4c1aa..8e3d2c8e401 100644 --- a/variants/adafruit_magtag29_esp32s2/pins_arduino.h +++ b/variants/adafruit_magtag29_esp32s2/pins_arduino.h @@ -44,6 +44,7 @@ static const uint8_t BUTTON_D = PIN_BUTTON4; static const uint8_t LIGHT_SENSOR = 3; static const uint8_t BATT_MONITOR = 4; +#define BAT_VOLT_PIN BATT_MONITOR static const uint8_t SPEAKER_SHUTDOWN = 16; static const uint8_t SDA = 33; diff --git a/variants/cyobot_v2_esp32s3/pins_arduino.h b/variants/cyobot_v2_esp32s3/pins_arduino.h index 45f0968ef2a..d913251f1ec 100644 --- a/variants/cyobot_v2_esp32s3/pins_arduino.h +++ b/variants/cyobot_v2_esp32s3/pins_arduino.h @@ -12,6 +12,7 @@ static const uint8_t BUTTON1 = 38; static const uint8_t LED = 24; static const uint8_t BAT_MEAS = 6; +#define BAT_VOLT_PIN BAT_MEAS static const uint8_t CHAR_DET = 23; static const uint8_t NEO_BASE = 7; diff --git a/variants/cytron_maker_feather_aiot_s3/pins_arduino.h b/variants/cytron_maker_feather_aiot_s3/pins_arduino.h index 9f7475294e8..566ae2544df 100644 --- a/variants/cytron_maker_feather_aiot_s3/pins_arduino.h +++ b/variants/cytron_maker_feather_aiot_s3/pins_arduino.h @@ -29,6 +29,7 @@ static const uint8_t RGB_BUILTIN = SOC_GPIO_PIN_COUNT + 46; // RGB LED. #define VIN 13 // Vin Sense. #define VBATT 13 +#define BAT_VOLT_PIN VBATT #define VOLTAGE_MONITOR 13 static const uint8_t TX = 15; diff --git a/variants/d1_mini32/pins_arduino.h b/variants/d1_mini32/pins_arduino.h index 826eff64104..12756295c37 100644 --- a/variants/d1_mini32/pins_arduino.h +++ b/variants/d1_mini32/pins_arduino.h @@ -8,6 +8,7 @@ static const uint8_t LED_BUILTIN = 2; #define BUILTIN_LED LED_BUILTIN // backward compatibility #define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN static const uint8_t _VBAT = 35; // battery voltage +#define BAT_VOLT_PIN _VBAT #define PIN_WIRE_SDA SDA // backward compatibility #define PIN_WIRE_SCL SCL // backward compatibility diff --git a/variants/d32/pins_arduino.h b/variants/d32/pins_arduino.h index d5346c38acc..6b94d658624 100644 --- a/variants/d32/pins_arduino.h +++ b/variants/d32/pins_arduino.h @@ -8,5 +8,6 @@ static const uint8_t LED_BUILTIN = 5; #define BUILTIN_LED LED_BUILTIN // backward compatibility #define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN static const uint8_t _VBAT = 35; // battery voltage +#define BAT_VOLT_PIN _VBAT #endif /* Pins_Arduino_h */ diff --git a/variants/d32_pro/pins_arduino.h b/variants/d32_pro/pins_arduino.h index fd3c899ef11..2e016362011 100644 --- a/variants/d32_pro/pins_arduino.h +++ b/variants/d32_pro/pins_arduino.h @@ -9,6 +9,7 @@ static const uint8_t LED_BUILTIN = 5; #define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN static const uint8_t _VBAT = 35; // battery voltage +#define BAT_VOLT_PIN _VBAT #define TF_CS 4 // TF (Micro SD Card) CS pin #define TS_CS 12 // Touch Screen CS pin diff --git a/variants/deneyapkart1Av2/pins_arduino.h b/variants/deneyapkart1Av2/pins_arduino.h index 141367aa4c4..7e1e4097b8f 100644 --- a/variants/deneyapkart1Av2/pins_arduino.h +++ b/variants/deneyapkart1Av2/pins_arduino.h @@ -102,5 +102,6 @@ static const uint8_t SDCS = 11; static const uint8_t SDCK = 13; static const uint8_t BAT = 9; +#define BAT_VOLT_PIN BAT #endif /* Pins_Arduino_h */ diff --git a/variants/deneyapkartv2/pins_arduino.h b/variants/deneyapkartv2/pins_arduino.h index f7eccadb13c..0167516f286 100644 --- a/variants/deneyapkartv2/pins_arduino.h +++ b/variants/deneyapkartv2/pins_arduino.h @@ -119,5 +119,6 @@ static const uint8_t SDCK = 13; static const uint8_t SDDA = 14; static const uint8_t BAT = 3; +#define BAT_VOLT_PIN BAT #endif /* Pins_Arduino_h */ diff --git a/variants/esp32c3-devkit-lipo/pins_arduino.h b/variants/esp32c3-devkit-lipo/pins_arduino.h index 5459b893f27..318882b2541 100644 --- a/variants/esp32c3-devkit-lipo/pins_arduino.h +++ b/variants/esp32c3-devkit-lipo/pins_arduino.h @@ -28,6 +28,7 @@ static const uint8_t SCK = 4; //static const uint8_t PWR_SENSE = 4; // battery measurement - disabled by default - check the schematic //static const uint8_t BAT_SENSE = 3; +// #define BAT_VOLT_PIN BAT_SENSE static const uint8_t A0 = 0; static const uint8_t A1 = 1; static const uint8_t A2 = 2; diff --git a/variants/esp32micromod/pins_arduino.h b/variants/esp32micromod/pins_arduino.h index ea74895edb2..24f6be19bd2 100644 --- a/variants/esp32micromod/pins_arduino.h +++ b/variants/esp32micromod/pins_arduino.h @@ -25,6 +25,7 @@ static const uint8_t SCK = 18; static const uint8_t A0 = 34; static const uint8_t A1 = 35; static const uint8_t BATT_VIN = 39; +#define BAT_VOLT_PIN BATT_VIN static const uint8_t PWM0 = 13; static const uint8_t PWM1 = 12; diff --git a/variants/esp32s2-devkit-lipo-usb/pins_arduino.h b/variants/esp32s2-devkit-lipo-usb/pins_arduino.h index 6dba09dbe43..207fa8a583a 100644 --- a/variants/esp32s2-devkit-lipo-usb/pins_arduino.h +++ b/variants/esp32s2-devkit-lipo-usb/pins_arduino.h @@ -27,6 +27,7 @@ static const uint8_t SCK = 36; //static const uint8_t PWR_SENSE = 7; // battery measurement - disabled by default - check the schematic //static const uint8_t BAT_SENSE = 8; +// #define BAT_VOLT_PIN BAT_SENSE static const uint8_t A0 = 1; static const uint8_t A1 = 2; diff --git a/variants/esp32s2-devkit-lipo/pins_arduino.h b/variants/esp32s2-devkit-lipo/pins_arduino.h index 98116754f5a..fed7bd63e73 100644 --- a/variants/esp32s2-devkit-lipo/pins_arduino.h +++ b/variants/esp32s2-devkit-lipo/pins_arduino.h @@ -29,6 +29,7 @@ static const uint8_t SCK = 36; //static const uint8_t PWR_SENSE = 7; // battery measurement - disabled by default - check the schematic //static const uint8_t BAT_SENSE = 8; +// #define BAT_VOLT_PIN BAT_SENSE static const uint8_t A0 = 1; static const uint8_t A1 = 2; diff --git a/variants/esp32s3-devkit-lipo/pins_arduino.h b/variants/esp32s3-devkit-lipo/pins_arduino.h index 3e1ae6f2381..7ff17f1a636 100644 --- a/variants/esp32s3-devkit-lipo/pins_arduino.h +++ b/variants/esp32s3-devkit-lipo/pins_arduino.h @@ -35,6 +35,7 @@ static const uint8_t SCK = 12; static const uint8_t PWR_SENSE = 5; // battery measurement static const uint8_t BAT_SENSE = 6; +#define BAT_VOLT_PIN BAT_SENSE static const uint8_t A0 = 1; static const uint8_t A1 = 2; diff --git a/variants/esp32s3usbotg/pins_arduino.h b/variants/esp32s3usbotg/pins_arduino.h index 5b873e2d2f1..13b9d245356 100644 --- a/variants/esp32s3usbotg/pins_arduino.h +++ b/variants/esp32s3usbotg/pins_arduino.h @@ -68,6 +68,7 @@ static const uint8_t T3 = 3; #define OVER_CURRENT 21 // Current overrun signal, high level means overrun. #define HOST_VOLTS 1 // USB_DEV voltage monitoring, ADC1 channel 0. actual_v = value_v * 3.7 #define BAT_VOLTS 2 // Battery voltage monitoring, ADC1 channel 1. actual_v = value_v * 2 +#define BAT_VOLT_PIN BAT_VOLTS // USB Port #define USB_DN 19 // USB D- diff --git a/variants/feather_esp32/pins_arduino.h b/variants/feather_esp32/pins_arduino.h index 523ea49f6ec..4078b789079 100644 --- a/variants/feather_esp32/pins_arduino.h +++ b/variants/feather_esp32/pins_arduino.h @@ -38,6 +38,7 @@ static const uint8_t A12 = 13; // vbat measure static const uint8_t BATT_MONITOR = 35; +#define BAT_VOLT_PIN BATT_MONITOR static const uint8_t A13 = 35; //static const uint8_t Ax = 0; // not used/available //static const uint8_t Ax = 2; // not used/available diff --git a/variants/fed4/pins_arduino.h b/variants/fed4/pins_arduino.h index f3741700ffa..46705a32639 100644 --- a/variants/fed4/pins_arduino.h +++ b/variants/fed4/pins_arduino.h @@ -51,6 +51,7 @@ static const uint8_t T6 = 6; static const uint8_t BOOT_BTN = 0; static const uint8_t VBAT_VOLTAGE = 7; +#define BAT_VOLT_PIN VBAT_VOLTAGE static const uint8_t LDO2 = 47; static const uint8_t STATUS_RGB = 35; static const uint8_t RGB_STRIP = 36; diff --git a/variants/fobe_quill_esp32s3_mesh/pins_arduino.h b/variants/fobe_quill_esp32s3_mesh/pins_arduino.h index 491d75333a7..97e587ac0d0 100644 --- a/variants/fobe_quill_esp32s3_mesh/pins_arduino.h +++ b/variants/fobe_quill_esp32s3_mesh/pins_arduino.h @@ -17,7 +17,8 @@ /* * Battery */ -#define PIN_VBAT (10) +#define PIN_VBAT (10) +#define BAT_VOLT_PIN PIN_VBAT /* * Buttons diff --git a/variants/fri3d_2024_esp32s3/pins_arduino.h b/variants/fri3d_2024_esp32s3/pins_arduino.h index 3cdba371f57..7470daf518c 100644 --- a/variants/fri3d_2024_esp32s3/pins_arduino.h +++ b/variants/fri3d_2024_esp32s3/pins_arduino.h @@ -35,6 +35,7 @@ static const uint8_t SCK = 7; #define PIN_BLASTER 10 #define PIN_BUZZER 46 #define PIN_BATTERY 13 +#define BAT_VOLT_PIN PIN_BATTERY #define PIN_SDCARD_CS SS diff --git a/variants/heltec_capsule_sensor_v3/pins_arduino.h b/variants/heltec_capsule_sensor_v3/pins_arduino.h index 2a74e055599..7dd673f1ddf 100644 --- a/variants/heltec_capsule_sensor_v3/pins_arduino.h +++ b/variants/heltec_capsule_sensor_v3/pins_arduino.h @@ -76,6 +76,7 @@ static const uint8_t GPS_RESET_PIN = 3; static const uint8_t GPS_PPS_PIN = 1; static const uint8_t ADC_BATTERY_PIN = 7; +#define BAT_VOLT_PIN ADC_BATTERY_PIN static const uint8_t ADC_BATTERY_CTRL_PIN = 36; static const uint8_t RST_LoRa = 12; diff --git a/variants/lilygo_t3_s3_lr1121/pins_arduino.h b/variants/lilygo_t3_s3_lr1121/pins_arduino.h index 70fc3502dab..4259d4c592e 100644 --- a/variants/lilygo_t3_s3_lr1121/pins_arduino.h +++ b/variants/lilygo_t3_s3_lr1121/pins_arduino.h @@ -12,6 +12,7 @@ static const uint8_t LED_BUILTIN = 37; static const uint8_t BUTTON_1 = 0; static const uint8_t BAT_VOLT = 1; +#define BAT_VOLT_PIN BAT_VOLT static const uint8_t TX = 43; static const uint8_t RX = 44; diff --git a/variants/lilygo_t3_s3_sx1262/pins_arduino.h b/variants/lilygo_t3_s3_sx1262/pins_arduino.h index 8fbf0b31066..8211473bdc8 100644 --- a/variants/lilygo_t3_s3_sx1262/pins_arduino.h +++ b/variants/lilygo_t3_s3_sx1262/pins_arduino.h @@ -12,6 +12,7 @@ static const uint8_t LED_BUILTIN = 37; static const uint8_t BUTTON_1 = 0; static const uint8_t BAT_VOLT = 1; +#define BAT_VOLT_PIN BAT_VOLT static const uint8_t TX = 43; static const uint8_t RX = 44; diff --git a/variants/lilygo_t3_s3_sx127x/pins_arduino.h b/variants/lilygo_t3_s3_sx127x/pins_arduino.h index 8caf05582c9..8b73a6b8385 100644 --- a/variants/lilygo_t3_s3_sx127x/pins_arduino.h +++ b/variants/lilygo_t3_s3_sx127x/pins_arduino.h @@ -12,6 +12,7 @@ static const uint8_t LED_BUILTIN = 37; static const uint8_t BUTTON_1 = 0; static const uint8_t BAT_VOLT = 1; +#define BAT_VOLT_PIN BAT_VOLT static const uint8_t TX = 43; static const uint8_t RX = 44; diff --git a/variants/lilygo_t3_s3_sx1280/pins_arduino.h b/variants/lilygo_t3_s3_sx1280/pins_arduino.h index ba342f3b8e9..567dd65817a 100644 --- a/variants/lilygo_t3_s3_sx1280/pins_arduino.h +++ b/variants/lilygo_t3_s3_sx1280/pins_arduino.h @@ -12,6 +12,7 @@ static const uint8_t LED_BUILTIN = 37; static const uint8_t BUTTON_1 = 0; static const uint8_t BAT_VOLT = 1; +#define BAT_VOLT_PIN BAT_VOLT static const uint8_t TX = 43; static const uint8_t RX = 44; diff --git a/variants/lilygo_t3_s3_sx1280pa/pins_arduino.h b/variants/lilygo_t3_s3_sx1280pa/pins_arduino.h index 03212754a69..e6913208a35 100644 --- a/variants/lilygo_t3_s3_sx1280pa/pins_arduino.h +++ b/variants/lilygo_t3_s3_sx1280pa/pins_arduino.h @@ -12,6 +12,7 @@ static const uint8_t LED_BUILTIN = 37; static const uint8_t BUTTON_1 = 0; static const uint8_t BAT_VOLT = 1; +#define BAT_VOLT_PIN BAT_VOLT static const uint8_t TX = 43; static const uint8_t RX = 44; diff --git a/variants/lilygo_t_display/pins_arduino.h b/variants/lilygo_t_display/pins_arduino.h index 1caeffdfa5f..b560f641bb5 100644 --- a/variants/lilygo_t_display/pins_arduino.h +++ b/variants/lilygo_t_display/pins_arduino.h @@ -52,6 +52,7 @@ static const uint8_t DAC1 = 25; static const uint8_t DAC2 = 26; static const uint8_t VBAT = 34; +#define BAT_VOLT_PIN VBAT static const uint8_t RIGHT_BUTTON = 35; static const uint8_t LEFT_BUTTON = 0; diff --git a/variants/lilygo_t_display_s3/pins_arduino.h b/variants/lilygo_t_display_s3/pins_arduino.h index 8a179e67ef7..179076566a1 100644 --- a/variants/lilygo_t_display_s3/pins_arduino.h +++ b/variants/lilygo_t_display_s3/pins_arduino.h @@ -9,6 +9,7 @@ static const uint8_t BUTTON_1 = 0; static const uint8_t BUTTON_2 = 14; static const uint8_t BAT_VOLT = 4; +#define BAT_VOLT_PIN BAT_VOLT static const uint8_t TX = 43; static const uint8_t RX = 44; diff --git a/variants/lolin_c3_pico/pins_arduino.h b/variants/lolin_c3_pico/pins_arduino.h index 68897e6da05..781d6e6a0be 100644 --- a/variants/lolin_c3_pico/pins_arduino.h +++ b/variants/lolin_c3_pico/pins_arduino.h @@ -25,6 +25,7 @@ static const uint8_t SDA = 8; static const uint8_t SCL = 10; static const uint8_t VBAT = 3; +#define BAT_VOLT_PIN VBAT static const uint8_t SCK = 1; static const uint8_t MISO = 0; diff --git a/variants/oroca_edubot/pins_arduino.h b/variants/oroca_edubot/pins_arduino.h index b9129485beb..3022bcfbddc 100644 --- a/variants/oroca_edubot/pins_arduino.h +++ b/variants/oroca_edubot/pins_arduino.h @@ -35,6 +35,7 @@ static const uint8_t D8 = 33; // vbat measure static const uint8_t VBAT = 35; +#define BAT_VOLT_PIN VBAT static const uint8_t T0 = 4; static const uint8_t T1 = 0; diff --git a/variants/rakwireless_rak3112/pins_arduino.h b/variants/rakwireless_rak3112/pins_arduino.h index f1bcc7a6120..ee26aa570b9 100644 --- a/variants/rakwireless_rak3112/pins_arduino.h +++ b/variants/rakwireless_rak3112/pins_arduino.h @@ -19,6 +19,7 @@ static const uint8_t LED_BUILTIN = LED_GREEN; #define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN static const uint8_t BAT_VOLT = 21; +#define BAT_VOLT_PIN BAT_VOLT static const uint8_t TX = 43; static const uint8_t RX = 44; diff --git a/variants/roboheart_hercules/pins_arduino.h b/variants/roboheart_hercules/pins_arduino.h index aaa91f75799..e4777163142 100644 --- a/variants/roboheart_hercules/pins_arduino.h +++ b/variants/roboheart_hercules/pins_arduino.h @@ -29,13 +29,14 @@ #define TXD1 17 // GSM Vela connector board pins -#define GSM_PWRKEY 12 -#define GSM_DTR 13 -#define GSM_CTS 15 -#define GSM_RTS 14 -#define GSM_TX TXD1 -#define GSM_RX RXD1 -#define BATTERY_PIN 36 // Battery ADC pin +#define GSM_PWRKEY 12 +#define GSM_DTR 13 +#define GSM_CTS 15 +#define GSM_RTS 14 +#define GSM_TX TXD1 +#define GSM_RX RXD1 +#define BATTERY_PIN 36 // Battery ADC pin +#define BAT_VOLT_PIN BATTERY_PIN static const uint8_t TX = 35; static const uint8_t RX = 34; diff --git a/variants/tamc_termod_s3/pins_arduino.h b/variants/tamc_termod_s3/pins_arduino.h index 89d0b5107ae..4e989c88e92 100644 --- a/variants/tamc_termod_s3/pins_arduino.h +++ b/variants/tamc_termod_s3/pins_arduino.h @@ -57,6 +57,7 @@ static const uint8_t T13 = 13; static const uint8_t T14 = 14; static const uint8_t BAT_LV = 1; +#define BAT_VOLT_PIN BAT_LV static const uint8_t CHG = 2; static const uint8_t TFT_CS = 10; static const uint8_t TFT_DC = 18; diff --git a/variants/thingpulse_epulse_feather/pins_arduino.h b/variants/thingpulse_epulse_feather/pins_arduino.h index 62855db018f..92a421ebd56 100644 --- a/variants/thingpulse_epulse_feather/pins_arduino.h +++ b/variants/thingpulse_epulse_feather/pins_arduino.h @@ -32,6 +32,7 @@ static const uint8_t A12 = 13; // vbat measure static const uint8_t BATT_MONITOR = 35; // Note: voltage divider 2.2M/4.7M +#define BAT_VOLT_PIN BATT_MONITOR static const uint8_t A13 = 35; //static const uint8_t Ax = 0; // not used/available //static const uint8_t Ax = 2; // not used/available? GPIO02 is available! diff --git a/variants/ttgo-t-oi-plus/pins_arduino.h b/variants/ttgo-t-oi-plus/pins_arduino.h index 5738ce0277d..e34c92106fd 100644 --- a/variants/ttgo-t-oi-plus/pins_arduino.h +++ b/variants/ttgo-t-oi-plus/pins_arduino.h @@ -23,5 +23,6 @@ static const uint8_t A2 = 4; static const uint8_t A3 = 5; static const uint8_t BAT_ADC_PIN = 2; +#define BAT_VOLT_PIN BAT_ADC_PIN #endif /* Pins_Arduino_h */ diff --git a/variants/uPesy_esp32c3_basic/pins_arduino.h b/variants/uPesy_esp32c3_basic/pins_arduino.h index 7536acec2c8..6dcabdfd1b0 100644 --- a/variants/uPesy_esp32c3_basic/pins_arduino.h +++ b/variants/uPesy_esp32c3_basic/pins_arduino.h @@ -28,5 +28,6 @@ static const uint8_t A4 = 4; static const uint8_t A5 = 5; static const uint8_t VBAT_SENSE = 0; +#define BAT_VOLT_PIN VBAT_SENSE #endif /* Pins_Arduino_h */ diff --git a/variants/uPesy_esp32c3_mini/pins_arduino.h b/variants/uPesy_esp32c3_mini/pins_arduino.h index 71029338133..a2c3e1f9983 100644 --- a/variants/uPesy_esp32c3_mini/pins_arduino.h +++ b/variants/uPesy_esp32c3_mini/pins_arduino.h @@ -27,5 +27,6 @@ static const uint8_t A4 = 4; static const uint8_t A5 = 5; static const uint8_t VBAT_SENSE = 0; +#define BAT_VOLT_PIN VBAT_SENSE #endif /* Pins_Arduino_h */ diff --git a/variants/um_bling/pins_arduino.h b/variants/um_bling/pins_arduino.h index 590eec5efea..0e09f467457 100644 --- a/variants/um_bling/pins_arduino.h +++ b/variants/um_bling/pins_arduino.h @@ -52,6 +52,7 @@ static const uint8_t BUTTON_C = 33; static const uint8_t BUTTON_D = 34; static const uint8_t VBAT_SENSE = 17; +#define BAT_VOLT_PIN VBAT_SENSE static const uint8_t VBUS_SENSE = 16; static const uint8_t I2S_MIC_SEL = 39; diff --git a/variants/um_feathers2neo/pins_arduino.h b/variants/um_feathers2neo/pins_arduino.h index 92c9cd1a099..08434f541a9 100644 --- a/variants/um_feathers2neo/pins_arduino.h +++ b/variants/um_feathers2neo/pins_arduino.h @@ -65,6 +65,7 @@ static const uint8_t LED_BUILTIN = RGB_BUILTIN; static const uint8_t NEOPIXEL_PWR = 39; static const uint8_t VBAT_SENSE = 2; +#define BAT_VOLT_PIN VBAT_SENSE static const uint8_t VBUS_SENSE = 34; #endif /* Pins_Arduino_h */ diff --git a/variants/um_feathers3/pins_arduino.h b/variants/um_feathers3/pins_arduino.h index 1c81339c88e..594d9796983 100644 --- a/variants/um_feathers3/pins_arduino.h +++ b/variants/um_feathers3/pins_arduino.h @@ -54,6 +54,7 @@ static const uint8_t T12 = 12; static const uint8_t T14 = 14; static const uint8_t VBAT_SENSE = 2; +#define BAT_VOLT_PIN VBAT_SENSE static const uint8_t VBUS_SENSE = 34; // User LED diff --git a/variants/um_feathers3neo/pins_arduino.h b/variants/um_feathers3neo/pins_arduino.h index 94d546d22c2..de177c0f57d 100644 --- a/variants/um_feathers3neo/pins_arduino.h +++ b/variants/um_feathers3neo/pins_arduino.h @@ -50,6 +50,7 @@ static const uint8_t T12 = 12; static const uint8_t T14 = 14; static const uint8_t VBAT_SENSE = 2; +#define BAT_VOLT_PIN VBAT_SENSE static const uint8_t VBUS_SENSE = 15; // User LED diff --git a/variants/um_pros3/pins_arduino.h b/variants/um_pros3/pins_arduino.h index 4b9bc8de6aa..59600e74f4a 100644 --- a/variants/um_pros3/pins_arduino.h +++ b/variants/um_pros3/pins_arduino.h @@ -52,6 +52,7 @@ static const uint8_t T13 = 13; static const uint8_t T14 = 14; static const uint8_t VBAT_SENSE = 10; +#define BAT_VOLT_PIN VBAT_SENSE static const uint8_t VBUS_SENSE = 33; static const uint8_t RGB_DATA = 18; diff --git a/variants/um_tinyc6/pins_arduino.h b/variants/um_tinyc6/pins_arduino.h index 6505e1ed50e..21e4f42d140 100644 --- a/variants/um_tinyc6/pins_arduino.h +++ b/variants/um_tinyc6/pins_arduino.h @@ -44,6 +44,7 @@ static const uint8_t T8 = 8; static const uint8_t T9 = 9; static const uint8_t VBAT_SENSE = 4; +#define BAT_VOLT_PIN VBAT_SENSE static const uint8_t VBUS_SENSE = 10; static const uint8_t RGB_DATA = 23; diff --git a/variants/um_tinys2/pins_arduino.h b/variants/um_tinys2/pins_arduino.h index 2a6e03aa078..b72215c3b4a 100644 --- a/variants/um_tinys2/pins_arduino.h +++ b/variants/um_tinys2/pins_arduino.h @@ -63,6 +63,7 @@ static const uint8_t DAC1 = 17; static const uint8_t DAC2 = 18; static const uint8_t VBAT_SENSE = 3; +#define BAT_VOLT_PIN VBAT_SENSE static const uint8_t VBUS_SENSE = 21; static const uint8_t RGB_DATA = 1; diff --git a/variants/um_tinys3/pins_arduino.h b/variants/um_tinys3/pins_arduino.h index 24742781dce..7bc0d8055c4 100644 --- a/variants/um_tinys3/pins_arduino.h +++ b/variants/um_tinys3/pins_arduino.h @@ -44,6 +44,7 @@ static const uint8_t T8 = 8; static const uint8_t T9 = 9; static const uint8_t VBAT_SENSE = 10; +#define BAT_VOLT_PIN VBAT_SENSE static const uint8_t VBUS_SENSE = 33; static const uint8_t RGB_DATA = 18; diff --git a/variants/watchy/pins_arduino.h b/variants/watchy/pins_arduino.h index b77bc3966c1..edb93649228 100644 --- a/variants/watchy/pins_arduino.h +++ b/variants/watchy/pins_arduino.h @@ -29,7 +29,8 @@ static const uint8_t RTC_INT_PIN = 27; #if defined(ARDUINO_WATCHY_V10) static const uint8_t UP_BTN_PIN = 32; static const uint8_t BATT_ADC_PIN = 33; -#define RTC_TYPE 1 //DS3231 +#define BAT_VOLT_PIN BATT_ADC_PIN +#define RTC_TYPE 1 //DS3231 #elif defined(ARDUINO_WATCHY_V15) static const uint8_t UP_BTN_PIN = 32; static const uint8_t BATT_ADC_PIN = 35; diff --git a/variants/waveshare_esp32_s3_lcd_169/pins_arduino.h b/variants/waveshare_esp32_s3_lcd_169/pins_arduino.h index 54663a6810a..5fafc59a02f 100644 --- a/variants/waveshare_esp32_s3_lcd_169/pins_arduino.h +++ b/variants/waveshare_esp32_s3_lcd_169/pins_arduino.h @@ -40,7 +40,8 @@ #define WS_SYS_EN 35 // Partial voltage measurement method -#define WS_BAT_ADC 1 +#define WS_BAT_ADC 1 +#define BAT_VOLT_PIN WS_BAT_ADC // UART0 pins static const uint8_t TX = 43; diff --git a/variants/waveshare_esp32_s3_touch_amoled_143/pins_arduino.h b/variants/waveshare_esp32_s3_touch_amoled_143/pins_arduino.h index ed6df1d3a2c..1c06e9c63cb 100644 --- a/variants/waveshare_esp32_s3_touch_amoled_143/pins_arduino.h +++ b/variants/waveshare_esp32_s3_touch_amoled_143/pins_arduino.h @@ -31,7 +31,8 @@ // RTC #define RTC_INT 15 // Partial voltage measurement method -#define BAT_ADC 4 +#define BAT_ADC 4 +#define BAT_VOLT_PIN BAT_ADC // Onboard QMI8658 IMU #define QMI_INT1 8 diff --git a/variants/waveshare_esp32_s3_touch_amoled_164/pins_arduino.h b/variants/waveshare_esp32_s3_touch_amoled_164/pins_arduino.h index ce17a49972a..47aabe97869 100644 --- a/variants/waveshare_esp32_s3_touch_amoled_164/pins_arduino.h +++ b/variants/waveshare_esp32_s3_touch_amoled_164/pins_arduino.h @@ -32,7 +32,8 @@ //key #define KEY_0 0 //ADC -#define BAT_ADC 4 +#define BAT_ADC 4 +#define BAT_VOLT_PIN BAT_ADC //SD_CARD #define SD_CS 38 diff --git a/variants/waveshare_esp32_s3_touch_amoled_191/pins_arduino.h b/variants/waveshare_esp32_s3_touch_amoled_191/pins_arduino.h index 7e882a7ef46..61454067521 100644 --- a/variants/waveshare_esp32_s3_touch_amoled_191/pins_arduino.h +++ b/variants/waveshare_esp32_s3_touch_amoled_191/pins_arduino.h @@ -29,7 +29,8 @@ #define TP_INT -1 // Partial voltage measurement method -#define BAT_ADC 1 +#define BAT_ADC 1 +#define BAT_VOLT_PIN BAT_ADC // Onboard QMI8658 IMU #define QMI_INT1 45 #define QMI_INT1 46 diff --git a/variants/waveshare_esp32_s3_touch_amoled_241/pins_arduino.h b/variants/waveshare_esp32_s3_touch_amoled_241/pins_arduino.h index cb6c5f40ac1..0b9ee51cfe6 100644 --- a/variants/waveshare_esp32_s3_touch_amoled_241/pins_arduino.h +++ b/variants/waveshare_esp32_s3_touch_amoled_241/pins_arduino.h @@ -42,7 +42,8 @@ #define QMI8658_INT1 -1 // Partial voltage measurement method -#define BAT_ADC 17 +#define BAT_ADC 17 +#define BAT_VOLT_PIN BAT_ADC // Def for I2C that shares the IMU I2C pins static const uint8_t SDA = 47; diff --git a/variants/waveshare_esp32_s3_touch_lcd_169/pins_arduino.h b/variants/waveshare_esp32_s3_touch_lcd_169/pins_arduino.h index 8d1562f4cd7..d512bda8cac 100644 --- a/variants/waveshare_esp32_s3_touch_lcd_169/pins_arduino.h +++ b/variants/waveshare_esp32_s3_touch_lcd_169/pins_arduino.h @@ -46,7 +46,8 @@ #define WS_SYS_EN 35 // Partial voltage measurement method -#define WS_BAT_ADC 1 +#define WS_BAT_ADC 1 +#define BAT_VOLT_PIN WS_BAT_ADC // UART0 pins static const uint8_t TX = 43; From fc8ce8f80800bc271019c67d00ba566ce2bb309f Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Mon, 27 Oct 2025 10:11:00 -0300 Subject: [PATCH 13/31] ci(c5): Enable PSRAM by default (#11955) --- .github/scripts/sketch_utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/sketch_utils.sh b/.github/scripts/sketch_utils.sh index 7452e494084..668d2ab7bd8 100755 --- a/.github/scripts/sketch_utils.sh +++ b/.github/scripts/sketch_utils.sh @@ -156,7 +156,7 @@ function build_sketch { # build_sketch [ext esp32c6_opts=$(echo "$debug_level,$fqbn_append" | sed 's/^,*//;s/,*$//;s/,\{2,\}/,/g') esp32h2_opts=$(echo "$debug_level,$fqbn_append" | sed 's/^,*//;s/,*$//;s/,\{2,\}/,/g') esp32p4_opts=$(echo "PSRAM=enabled,USBMode=default,$debug_level,$fqbn_append" | sed 's/^,*//;s/,*$//;s/,\{2,\}/,/g') - esp32c5_opts=$(echo "$debug_level,$fqbn_append" | sed 's/^,*//;s/,*$//;s/,\{2,\}/,/g') + esp32c5_opts=$(echo "PSRAM=enabled,$debug_level,$fqbn_append" | sed 's/^,*//;s/,*$//;s/,\{2,\}/,/g') # Select the common part of the FQBN based on the target. The rest will be # appended depending on the passed options. From 56a22455d190020227e4da3f3eddfca3698f90ef Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Mon, 3 Nov 2025 07:27:19 -0300 Subject: [PATCH 14/31] fix(ble): Fix broken functions and add IRK retrieval (#11948) * fix(ble): Fix authentication deadlock * feat(irk): Add peer's IRK retrieval methods * fix(ble): Fix deinit function * fix(ble): Fix notification timing * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- .../Client_secure_static_passkey.ino | 93 ++++++- .../Server_secure_static_passkey.ino | 74 +++++- libraries/BLE/src/BLECharacteristic.cpp | 69 +++++- libraries/BLE/src/BLECharacteristic.h | 10 + libraries/BLE/src/BLEDevice.cpp | 227 +++++++++++++++++- libraries/BLE/src/BLEDevice.h | 4 + libraries/BLE/src/BLERemoteCharacteristic.cpp | 8 + libraries/BLE/src/BLESecurity.cpp | 57 +++++ libraries/BLE/src/BLESecurity.h | 5 + 9 files changed, 531 insertions(+), 16 deletions(-) diff --git a/libraries/BLE/examples/Client_secure_static_passkey/Client_secure_static_passkey.ino b/libraries/BLE/examples/Client_secure_static_passkey/Client_secure_static_passkey.ino index ec3c457221c..a3204fcb044 100644 --- a/libraries/BLE/examples/Client_secure_static_passkey/Client_secure_static_passkey.ino +++ b/libraries/BLE/examples/Client_secure_static_passkey/Client_secure_static_passkey.ino @@ -1,10 +1,16 @@ /* - Secure client with static passkey + Secure client with static passkey and IRK retrieval This example demonstrates how to create a secure BLE client that connects to a secure BLE server using a static passkey without prompting the user. The client will automatically use the same passkey (123456) as the server. + After successful bonding, the example demonstrates how to retrieve the + server's Identity Resolving Key (IRK) in multiple formats: + - Comma-separated hex format: 0x1A,0x1B,0x1C,... + - Base64 encoded (for Home Assistant Private BLE Device service) + - Reverse hex order (for Home Assistant ESPresense) + This client is designed to work with the Server_secure_static_passkey example. Note that ESP32 uses Bluedroid by default and the other SoCs use NimBLE. @@ -12,9 +18,10 @@ This means that in NimBLE you can read the insecure characteristic without entering the passkey. This is not possible in Bluedroid. - IMPORTANT: MITM (Man-In-The-Middle protection) must be enabled for password prompts - to work. Without MITM, the BLE stack assumes no user interaction is needed and will use - "Just Works" pairing method (with encryption if secure connection is enabled). + IMPORTANT: + - MITM (Man-In-The-Middle protection) must be enabled for password prompts to work. + - Bonding must be enabled to store and retrieve the IRK. + - The server must distribute its Identity Key during pairing. Based on examples from Neil Kolban and h2zero. Created by lucasssvaz. @@ -36,10 +43,59 @@ static BLEUUID secureCharUUID("ff1d2614-e2d6-4c87-9154-6625d39ca7f8"); static boolean doConnect = false; static boolean connected = false; static boolean doScan = false; +static BLEClient *pClient = nullptr; static BLERemoteCharacteristic *pRemoteInsecureCharacteristic; static BLERemoteCharacteristic *pRemoteSecureCharacteristic; static BLEAdvertisedDevice *myDevice; +// Print an IRK buffer as hex with leading zeros and ':' separator +static void printIrkBinary(uint8_t *irk) { + for (int i = 0; i < 16; i++) { + if (irk[i] < 0x10) { + Serial.print("0"); + } + Serial.print(irk[i], HEX); + if (i < 15) { + Serial.print(":"); + } + } +} + +static void get_peer_irk(BLEAddress peerAddr) { + Serial.println("\n=== Retrieving peer IRK (Server) ===\n"); + + uint8_t irk[16]; + + // Get IRK in binary format + if (BLEDevice::getPeerIRK(peerAddr, irk)) { + Serial.println("Successfully retrieved peer IRK in binary format:"); + printIrkBinary(irk); + Serial.println("\n"); + } + + // Get IRK in different string formats + String irkString = BLEDevice::getPeerIRKString(peerAddr); + String irkBase64 = BLEDevice::getPeerIRKBase64(peerAddr); + String irkReverse = BLEDevice::getPeerIRKReverse(peerAddr); + + if (irkString.length() > 0) { + Serial.println("Successfully retrieved peer IRK in multiple formats:\n"); + Serial.print("IRK (comma-separated hex): "); + Serial.println(irkString); + Serial.print("IRK (Base64 for Home Assistant Private BLE Device): "); + Serial.println(irkBase64); + Serial.print("IRK (reverse hex for Home Assistant ESPresense): "); + Serial.println(irkReverse); + Serial.println(); + } else { + Serial.println("!!! Failed to retrieve peer IRK !!!"); + Serial.println("This is expected if bonding is disabled or the peer doesn't distribute its Identity Key."); + Serial.println("To enable bonding, change setAuthenticationMode to: pSecurity->setAuthenticationMode(true, true, true);\n"); + } + + Serial.println("=======================================\n"); +} + // Callback function to handle notifications static void notifyCallback(BLERemoteCharacteristic *pBLERemoteCharacteristic, uint8_t *pData, size_t length, bool isNotify) { Serial.print("Notify callback for characteristic "); @@ -62,11 +118,30 @@ class MyClientCallback : public BLEClientCallbacks { } }; +// Security callbacks to print IRKs once authentication completes +class MySecurityCallbacks : public BLESecurityCallbacks { +#if defined(CONFIG_BLUEDROID_ENABLED) + void onAuthenticationComplete(esp_ble_auth_cmpl_t desc) override { + // Print the IRK received by the peer + BLEAddress peerAddr(desc.bd_addr); + get_peer_irk(peerAddr); + } +#endif + +#if defined(CONFIG_NIMBLE_ENABLED) + void onAuthenticationComplete(ble_gap_conn_desc *desc) override { + // Print the IRK received by the peer + BLEAddress peerAddr(desc->peer_id_addr.val, desc->peer_id_addr.type); + get_peer_irk(peerAddr); + } +#endif +}; + bool connectToServer() { Serial.print("Forming a secure connection to "); Serial.println(myDevice->getAddress().toString().c_str()); - BLEClient *pClient = BLEDevice::createClient(); + pClient = BLEDevice::createClient(); Serial.println(" - Created client"); pClient->setClientCallbacks(new MyClientCallback()); @@ -192,8 +267,9 @@ void setup() { pSecurity->setPassKey(true, CLIENT_PIN); // Set authentication mode to match server requirements - // Enable secure connection and MITM (for password prompts) for this example - pSecurity->setAuthenticationMode(false, true, true); + // Enable bonding, MITM (for password prompts), and secure connection for this example + // Bonding is required to store and retrieve the IRK + pSecurity->setAuthenticationMode(true, true, true); // Set IO capability to KeyboardOnly // We need the proper IO capability for MITM authentication even @@ -201,6 +277,9 @@ void setup() { // See https://www.bluetooth.com/blog/bluetooth-pairing-part-2-key-generation-methods/ pSecurity->setCapability(ESP_IO_CAP_IN); + // Set callbacks to handle authentication completion and print IRKs + BLEDevice::setSecurityCallbacks(new MySecurityCallbacks()); + // Retrieve a Scanner and set the callback we want to use to be informed when we // have detected a new device. Specify that we want active scanning and start the // scan to run for 5 seconds. diff --git a/libraries/BLE/examples/Server_secure_static_passkey/Server_secure_static_passkey.ino b/libraries/BLE/examples/Server_secure_static_passkey/Server_secure_static_passkey.ino index 79b73695202..fef8c0bd15f 100644 --- a/libraries/BLE/examples/Server_secure_static_passkey/Server_secure_static_passkey.ino +++ b/libraries/BLE/examples/Server_secure_static_passkey/Server_secure_static_passkey.ino @@ -40,6 +40,73 @@ // This is an example passkey. You should use a different or random passkey. #define SERVER_PIN 123456 +// Print an IRK buffer as hex with leading zeros and ':' separator +static void printIrkBinary(uint8_t *irk) { + for (int i = 0; i < 16; i++) { + if (irk[i] < 0x10) { + Serial.print("0"); + } + Serial.print(irk[i], HEX); + if (i < 15) { + Serial.print(":"); + } + } +} + +static void get_peer_irk(BLEAddress peerAddr) { + Serial.println("\n=== Retrieving peer IRK (Client) ===\n"); + + uint8_t irk[16]; + + // Get IRK in binary format + if (BLEDevice::getPeerIRK(peerAddr, irk)) { + Serial.println("Successfully retrieved peer IRK in binary format:"); + printIrkBinary(irk); + Serial.println("\n"); + } + + // Get IRK in different string formats + String irkString = BLEDevice::getPeerIRKString(peerAddr); + String irkBase64 = BLEDevice::getPeerIRKBase64(peerAddr); + String irkReverse = BLEDevice::getPeerIRKReverse(peerAddr); + + if (irkString.length() > 0) { + Serial.println("Successfully retrieved peer IRK in multiple formats:\n"); + Serial.print("IRK (comma-separated hex): "); + Serial.println(irkString); + Serial.print("IRK (Base64 for Home Assistant Private BLE Device): "); + Serial.println(irkBase64); + Serial.print("IRK (reverse hex for Home Assistant ESPresense): "); + Serial.println(irkReverse); + Serial.println(); + } else { + Serial.println("!!! Failed to retrieve peer IRK !!!"); + Serial.println("This is expected if bonding is disabled or the peer doesn't distribute its Identity Key."); + Serial.println("To enable bonding, change setAuthenticationMode to: pSecurity->setAuthenticationMode(true, true, true);\n"); + } + + Serial.println("=======================================\n"); +} + +// Security callbacks to print IRKs once authentication completes +class MySecurityCallbacks : public BLESecurityCallbacks { +#if defined(CONFIG_BLUEDROID_ENABLED) + void onAuthenticationComplete(esp_ble_auth_cmpl_t desc) override { + // Print the IRK received by the peer + BLEAddress peerAddr(desc.bd_addr); + get_peer_irk(peerAddr); + } +#endif + +#if defined(CONFIG_NIMBLE_ENABLED) + void onAuthenticationComplete(ble_gap_conn_desc *desc) override { + // Print the IRK received by the peer + BLEAddress peerAddr(desc->peer_id_addr.val, desc->peer_id_addr.type); + get_peer_irk(peerAddr); + } +#endif +}; + void setup() { Serial.begin(115200); Serial.println("Starting BLE work!"); @@ -76,8 +143,11 @@ void setup() { pSecurity->setCapability(ESP_IO_CAP_OUT); // Set authentication mode - // Require secure connection and MITM (for password prompts) for this example - pSecurity->setAuthenticationMode(false, true, true); + // Enable bonding, MITM (for password prompts), and secure connection for this example + pSecurity->setAuthenticationMode(true, true, true); + + // Set callbacks to handle authentication completion and print IRKs + BLEDevice::setSecurityCallbacks(new MySecurityCallbacks()); BLEServer *pServer = BLEDevice::createServer(); pServer->advertiseOnDisconnect(true); diff --git a/libraries/BLE/src/BLECharacteristic.cpp b/libraries/BLE/src/BLECharacteristic.cpp index a492116b2e6..cb971796b31 100644 --- a/libraries/BLE/src/BLECharacteristic.cpp +++ b/libraries/BLE/src/BLECharacteristic.cpp @@ -904,6 +904,52 @@ void BLECharacteristicCallbacks::onWrite(BLECharacteristic *pCharacteristic, esp #if defined(CONFIG_NIMBLE_ENABLED) +/** + * @brief Process a deferred write callback. + * + * This function is called as a FreeRTOS task to execute the onWrite callback + * after the write response has been sent to the client. This maintains backwards + * compatibility with Bluedroid, where the write response is sent before the + * onWrite callback is invoked. + * + * The delay is based on the connection interval to ensure the write response + * packet has been transmitted over the air before the callback executes. + * + * See: https://github.com/espressif/arduino-esp32/issues/11938 + */ +void BLECharacteristic::processDeferredWriteCallback(void *pvParameters) { + DeferredWriteCallback *pCallback = (DeferredWriteCallback *)pvParameters; + + // Get connection parameters to calculate appropriate delay + ble_gap_conn_desc desc; + int rc = ble_gap_conn_find(pCallback->conn_handle, &desc); + + if (rc == 0) { + // Connection interval is in units of 1.25ms + // Wait for at least one connection interval to ensure the write response + // has been transmitted. Add a small buffer for processing. + uint16_t intervalMs = (desc.conn_itvl * 125) / 100; // Convert to milliseconds + uint16_t delayMs = intervalMs + 5; // Add 5ms buffer + + log_v("Deferring write callback by %dms (conn_interval=%d units, %dms)", delayMs, desc.conn_itvl, intervalMs); + vTaskDelay(pdMS_TO_TICKS(delayMs)); + } else { + // If we can't get connection parameters, use a conservative default + // Most connections use 7.5-30ms intervals, so 50ms should be safe + log_w("Could not get connection parameters, using default 50ms delay"); + vTaskDelay(pdMS_TO_TICKS(50)); + } + + // Call the onWrite callback now that the response has been transmitted + pCallback->pCharacteristic->m_pCallbacks->onWrite(pCallback->pCharacteristic, &pCallback->desc); + + // Free the allocated memory + delete pCallback; + + // Delete this one-shot task + vTaskDelete(NULL); +} + int BLECharacteristic::handleGATTServerEvent(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg) { const ble_uuid_t *uuid; int rc; @@ -955,7 +1001,28 @@ int BLECharacteristic::handleGATTServerEvent(uint16_t conn_handle, uint16_t attr rc = ble_gap_conn_find(conn_handle, &desc); assert(rc == 0); pCharacteristic->setValue(buf, len); - pCharacteristic->m_pCallbacks->onWrite(pCharacteristic, &desc); + + // Defer the onWrite callback to maintain backwards compatibility with Bluedroid. + // In Bluedroid, the write response is sent BEFORE the onWrite callback is invoked. + // In NimBLE, the response is sent implicitly when this function returns. + // By deferring the callback to a separate task with a delay based on the connection + // interval, we ensure the response packet is transmitted before the callback executes. + // See: https://github.com/espressif/arduino-esp32/issues/11938 + DeferredWriteCallback *pCallback = new DeferredWriteCallback(); + pCallback->pCharacteristic = pCharacteristic; + pCallback->desc = desc; + pCallback->conn_handle = conn_handle; + + // Create a one-shot task to execute the callback after the response is transmitted + // Using priority 1 (low priority) and sufficient stack for callback operations + // Note: Stack must be large enough to handle notify() calls from within onWrite() + xTaskCreate( + processDeferredWriteCallback, "BLEWriteCB", + 4096, // Stack size - increased to handle notify() operations + pCallback, + 1, // Priority (low) + NULL // Task handle (not needed for one-shot task) + ); return 0; } diff --git a/libraries/BLE/src/BLECharacteristic.h b/libraries/BLE/src/BLECharacteristic.h index b0ab8f916ea..f7f61cde313 100644 --- a/libraries/BLE/src/BLECharacteristic.h +++ b/libraries/BLE/src/BLECharacteristic.h @@ -47,6 +47,8 @@ #include #include #include "BLEConnInfo.h" +#include +#include #define ESP_GATT_MAX_ATTR_LEN BLE_ATT_ATTR_MAX_LEN #define ESP_GATT_CHAR_PROP_BIT_READ BLE_GATT_CHR_PROP_READ #define ESP_GATT_CHAR_PROP_BIT_WRITE BLE_GATT_CHR_PROP_WRITE @@ -246,6 +248,13 @@ class BLECharacteristic { portMUX_TYPE m_readMux; uint8_t m_removed; std::vector> m_subscribedVec; + + // Deferred callback support for maintaining backwards compatibility with Bluedroid timing + struct DeferredWriteCallback { + BLECharacteristic *pCharacteristic; + ble_gap_conn_desc desc; + uint16_t conn_handle; + }; #endif /*************************************************************************** @@ -271,6 +280,7 @@ class BLECharacteristic { #if defined(CONFIG_NIMBLE_ENABLED) void setSubscribe(struct ble_gap_event *event); static int handleGATTServerEvent(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg); + static void processDeferredWriteCallback(void *pvParameters); #endif }; // BLECharacteristic diff --git a/libraries/BLE/src/BLEDevice.cpp b/libraries/BLE/src/BLEDevice.cpp index d56786e8e18..8b809abdaf3 100644 --- a/libraries/BLE/src/BLEDevice.cpp +++ b/libraries/BLE/src/BLEDevice.cpp @@ -38,6 +38,7 @@ #include "BLEUtils.h" #include "GeneralUtils.h" #include "BLESecurity.h" +#include "base64.h" #if defined(ARDUINO_ARCH_ESP32) #include "esp32-hal-bt.h" @@ -608,6 +609,181 @@ bool BLEDevice::getInitialized() { return initialized; } +/* + * @brief Get a peer device's Identity Resolving Key (IRK). + * @param [in] peerAddress The address of the bonded peer device. + * @param [out] irk Buffer to store the 16-byte IRK. + * @return True if successful, false otherwise. + * @note IRK is only available after bonding has occurred. + */ +bool BLEDevice::getPeerIRK(BLEAddress peerAddress, uint8_t *irk) { + log_v(">> BLEDevice::getPeerIRK()"); + + if (irk == nullptr) { + log_e("IRK buffer is null"); + return false; + } + +#if defined(CONFIG_BLUEDROID_ENABLED) + // Get the list of bonded devices + int dev_num = esp_ble_get_bond_device_num(); + if (dev_num == 0) { + log_e("No bonded devices found"); + return false; + } + + esp_ble_bond_dev_t *bond_dev = (esp_ble_bond_dev_t *)malloc(sizeof(esp_ble_bond_dev_t) * dev_num); + if (bond_dev == nullptr) { + log_e("Failed to allocate memory for bond device list"); + return false; + } + + esp_err_t ret = esp_ble_get_bond_device_list(&dev_num, bond_dev); + if (ret != ESP_OK) { + log_e("Failed to get bond device list: %d", ret); + free(bond_dev); + return false; + } + + // Find the bonded device that matches the peer address + bool found = false; + + for (int i = 0; i < dev_num; i++) { + BLEAddress bondAddr(bond_dev[i].bd_addr); + if (bondAddr.equals(peerAddress)) { + // Check if the PID key (which contains the IRK) is present + if (bond_dev[i].bond_key.key_mask & ESP_LE_KEY_PID) { + memcpy(irk, bond_dev[i].bond_key.pid_key.irk, 16); + found = true; + log_d("IRK found for peer: %s", peerAddress.toString().c_str()); + break; + } else { + log_w("PID key not present for peer: %s", peerAddress.toString().c_str()); + } + } + } + + free(bond_dev); + + if (!found) { + log_e("IRK not found for peer"); + return false; + } + + log_v("<< BLEDevice::getPeerIRK()"); + return true; +#endif // CONFIG_BLUEDROID_ENABLED + +#if defined(CONFIG_NIMBLE_ENABLED) + // Prepare the key structure to search for the peer's security information + struct ble_store_key_sec key_sec; + memset(&key_sec, 0, sizeof(key_sec)); + + // Convert BLEAddress to ble_addr_t + // NOTE: BLEAddress stores bytes in INVERSE order for NimBLE, + // but ble_addr_t.val expects them in normal order, so we reverse them + ble_addr_t addr; + uint8_t *peer_addr = peerAddress.getNative(); + for (int i = 0; i < 6; i++) { + addr.val[i] = peer_addr[5 - i]; + } + + // Try public address first, then random if that fails + addr.type = BLE_ADDR_PUBLIC; + memcpy(&key_sec.peer_addr, &addr, sizeof(ble_addr_t)); + + // Read the peer's security information from the store + struct ble_store_value_sec value_sec; + int rc = ble_store_read_peer_sec(&key_sec, &value_sec); + + // If public address failed, try random address type + if (rc != 0) { + addr.type = BLE_ADDR_RANDOM; + memcpy(&key_sec.peer_addr, &addr, sizeof(ble_addr_t)); + rc = ble_store_read_peer_sec(&key_sec, &value_sec); + + if (rc != 0) { + log_e("IRK not found for peer: %s", peerAddress.toString().c_str()); + return false; + } + } + + // Check if the IRK is present + if (!value_sec.irk_present) { + log_e("IRK not present for peer"); + return false; + } + + // Copy the IRK to the output buffer + memcpy(irk, value_sec.irk, 16); + + log_d("IRK found for peer: %s (type=%d)", peerAddress.toString().c_str(), addr.type); + log_v("<< BLEDevice::getPeerIRK()"); + return true; +#endif // CONFIG_NIMBLE_ENABLED +} + +/* + * @brief Get a peer device's IRK as a comma-separated hex string. + * @param [in] peerAddress The address of the bonded peer device. + * @return String in format "0xXX,0xXX,..." or empty string on failure. + */ +String BLEDevice::getPeerIRKString(BLEAddress peerAddress) { + uint8_t irk[16]; + if (!getPeerIRK(peerAddress, irk)) { + return String(); + } + + String result = ""; + for (int i = 0; i < 16; i++) { + result += "0x"; + if (irk[i] < 0x10) { + result += "0"; + } + result += String(irk[i], HEX); + if (i < 15) { + result += ","; + } + } + return result; +} + +/* + * @brief Get a peer device's IRK as a Base64 encoded string. + * @param [in] peerAddress The address of the bonded peer device. + * @return Base64 encoded string or empty string on failure. + */ +String BLEDevice::getPeerIRKBase64(BLEAddress peerAddress) { + uint8_t irk[16]; + if (!getPeerIRK(peerAddress, irk)) { + return String(); + } + + return base64::encode(irk, 16); +} + +/* + * @brief Get a peer device's IRK in reverse hex format. + * @param [in] peerAddress The address of the bonded peer device. + * @return String in reverse hex format (uppercase) or empty string on failure. + */ +String BLEDevice::getPeerIRKReverse(BLEAddress peerAddress) { + uint8_t irk[16]; + if (!getPeerIRK(peerAddress, irk)) { + return String(); + } + + String result = ""; + for (int i = 15; i >= 0; i--) { + if (irk[i] < 0x10) { + result += "0"; + } + result += String(irk[i], HEX); + } + result.toUpperCase(); + return result; +} + BLEAdvertising *BLEDevice::getAdvertising() { if (m_bleAdvertising == nullptr) { m_bleAdvertising = new BLEAdvertising(); @@ -691,13 +867,47 @@ void BLEDevice::removePeerDevice(uint16_t conn_id, bool _client) { /** * @brief de-Initialize the %BLE environment. - * @param release_memory release the internal BT stack memory + * @param release_memory release the internal BT stack memory (prevents reinitialization) */ void BLEDevice::deinit(bool release_memory) { if (!initialized) { return; } + // Stop advertising and scanning first + if (m_bleAdvertising != nullptr) { + m_bleAdvertising->stop(); + } + + if (m_pScan != nullptr) { + m_pScan->stop(); + } + + // Delete all BLE objects + if (m_bleAdvertising != nullptr) { + delete m_bleAdvertising; + m_bleAdvertising = nullptr; + } + + if (m_pScan != nullptr) { + delete m_pScan; + m_pScan = nullptr; + } + + if (m_pServer != nullptr) { + delete m_pServer; + m_pServer = nullptr; + } + + if (m_pClient != nullptr) { + delete m_pClient; + m_pClient = nullptr; + } + + // Clear the connected clients map + m_connectedClientsMap.clear(); + + // Always deinit the BLE stack #ifdef CONFIG_BLUEDROID_ENABLED esp_bluedroid_disable(); esp_bluedroid_deinit(); @@ -717,19 +927,20 @@ void BLEDevice::deinit(bool release_memory) { esp_bt_controller_deinit(); #endif -#ifdef ARDUINO_ARCH_ESP32 + // Only release memory if requested (this prevents reinitialization) if (release_memory) { +#ifdef ARDUINO_ARCH_ESP32 // Require tests because we released classic BT memory and this can cause crash (most likely not, esp-idf takes care of it) #if CONFIG_BT_CONTROLLER_ENABLED esp_bt_controller_mem_release(ESP_BT_MODE_BTDM); #endif - } else { -#ifdef CONFIG_NIMBLE_ENABLED - m_synced = false; #endif - initialized = false; } + +#ifdef CONFIG_NIMBLE_ENABLED + m_synced = false; #endif + initialized = false; } void BLEDevice::setCustomGapHandler(gap_event_handler handler) { @@ -960,6 +1171,10 @@ void BLEDevice::gapEventHandler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_par { log_i("ESP_GAP_BLE_AUTH_CMPL_EVT"); #ifdef CONFIG_BLE_SMP_ENABLE // Check that BLE SMP (security) is configured in make menuconfig + // Signal that authentication has completed + // This unblocks any GATT operations waiting for pairing when bonding is enabled + BLESecurity::signalAuthenticationComplete(); + if (BLEDevice::m_securityCallbacks != nullptr) { BLEDevice::m_securityCallbacks->onAuthenticationComplete(param->ble_security.auth_cmpl); } diff --git a/libraries/BLE/src/BLEDevice.h b/libraries/BLE/src/BLEDevice.h index ba29c735afd..9d9cbf0421e 100644 --- a/libraries/BLE/src/BLEDevice.h +++ b/libraries/BLE/src/BLEDevice.h @@ -192,6 +192,10 @@ class BLEDevice { static esp_err_t setMTU(uint16_t mtu); static uint16_t getMTU(); static bool getInitialized(); + static bool getPeerIRK(BLEAddress peerAddress, uint8_t *irk); + static String getPeerIRKString(BLEAddress peerAddress); + static String getPeerIRKBase64(BLEAddress peerAddress); + static String getPeerIRKReverse(BLEAddress peerAddress); static BLEAdvertising *getAdvertising(); static void startAdvertising(); static void stopAdvertising(); diff --git a/libraries/BLE/src/BLERemoteCharacteristic.cpp b/libraries/BLE/src/BLERemoteCharacteristic.cpp index d26e2970a10..e964e679897 100644 --- a/libraries/BLE/src/BLERemoteCharacteristic.cpp +++ b/libraries/BLE/src/BLERemoteCharacteristic.cpp @@ -565,6 +565,10 @@ String BLERemoteCharacteristic::readValue() { return String(); } + // Wait for authentication to complete if bonding is enabled + // This prevents the read request from being made while pairing is in progress + BLESecurity::waitForAuthenticationComplete(); + m_semaphoreReadCharEvt.take("readValue"); // Ask the BLE subsystem to retrieve the value for the remote hosted characteristic. @@ -607,6 +611,10 @@ bool BLERemoteCharacteristic::writeValue(uint8_t *data, size_t length, bool resp return false; } + // Wait for authentication to complete if bonding is enabled + // This prevents the write request from being made while pairing is in progress + BLESecurity::waitForAuthenticationComplete(); + m_semaphoreWriteCharEvt.take("writeValue"); // Invoke the ESP-IDF API to perform the write. esp_err_t errRc = ::esp_ble_gattc_write_char( diff --git a/libraries/BLE/src/BLESecurity.cpp b/libraries/BLE/src/BLESecurity.cpp index 7e9269e6000..76757f52135 100644 --- a/libraries/BLE/src/BLESecurity.cpp +++ b/libraries/BLE/src/BLESecurity.cpp @@ -46,6 +46,7 @@ bool BLESecurity::m_securityStarted = false; bool BLESecurity::m_passkeySet = false; bool BLESecurity::m_staticPasskey = true; bool BLESecurity::m_regenOnConnect = false; +bool BLESecurity::m_authenticationComplete = false; uint8_t BLESecurity::m_iocap = ESP_IO_CAP_NONE; uint8_t BLESecurity::m_authReq = 0; uint8_t BLESecurity::m_initKey = 0; @@ -59,6 +60,7 @@ uint32_t BLESecurity::m_passkey = BLE_SM_DEFAULT_PASSKEY; #if defined(CONFIG_BLUEDROID_ENABLED) uint8_t BLESecurity::m_keySize = 16; esp_ble_sec_act_t BLESecurity::m_securityLevel; +FreeRTOS::Semaphore *BLESecurity::m_authCompleteSemaphore = nullptr; #endif /*************************************************************************** @@ -191,6 +193,7 @@ void BLESecurity::regenPassKeyOnConnect(bool enable) { void BLESecurity::resetSecurity() { log_d("resetSecurity: Resetting security state"); m_securityStarted = false; + m_authenticationComplete = false; } // This function sets the authentication mode with bonding, MITM, and secure connection options. @@ -263,6 +266,48 @@ bool BLESecurityCallbacks::onAuthorizationRequest(uint16_t connHandle, uint16_t return true; } +// This function waits for authentication to complete when bonding is enabled +// It prevents GATT operations from proceeding before pairing completes +void BLESecurity::waitForAuthenticationComplete(uint32_t timeoutMs) { +#if defined(CONFIG_BLUEDROID_ENABLED) + // Only wait if bonding is enabled + if ((m_authReq & ESP_LE_AUTH_BOND) == 0) { + return; + } + + // If already authenticated, no need to wait + if (m_authenticationComplete) { + return; + } + + // Semaphore should have been created in startSecurity() + if (m_authCompleteSemaphore == nullptr) { + log_e("Authentication semaphore not initialized"); + return; + } + + // Wait for authentication with timeout + bool success = m_authCompleteSemaphore->timedWait("waitForAuthenticationComplete", timeoutMs / portTICK_PERIOD_MS); + + if (!success) { + log_w("Timeout waiting for authentication to complete"); + } +#endif +} + +// This function signals that authentication has completed +// Called from ESP_GAP_BLE_AUTH_CMPL_EVT handler +void BLESecurity::signalAuthenticationComplete() { +#if defined(CONFIG_BLUEDROID_ENABLED) + m_authenticationComplete = true; + + // Signal waiting threads if semaphore exists + if (m_authCompleteSemaphore != nullptr) { + m_authCompleteSemaphore->give(); + } +#endif +} + /*************************************************************************** * Bluedroid functions * ***************************************************************************/ @@ -285,6 +330,18 @@ bool BLESecurity::startSecurity(esp_bd_addr_t bd_addr, int *rcPtr) { } if (m_securityEnabled) { + // Initialize semaphore before starting security to avoid race condition + if (m_authCompleteSemaphore == nullptr) { + m_authCompleteSemaphore = new FreeRTOS::Semaphore("AuthComplete"); + } + + // Reset authentication complete flag when starting new security negotiation + m_authenticationComplete = false; + + // Consume any pending semaphore signals from previous operations + // This ensures the next wait will block until the new auth completes + m_authCompleteSemaphore->take("startSecurity-reset"); + int rc = esp_ble_set_encryption(bd_addr, m_securityLevel); if (rc != ESP_OK) { log_e("esp_ble_set_encryption: rc=%d %s", rc, GeneralUtils::errorToString(rc)); diff --git a/libraries/BLE/src/BLESecurity.h b/libraries/BLE/src/BLESecurity.h index 2d2306231ac..fc6ff38f6ca 100644 --- a/libraries/BLE/src/BLESecurity.h +++ b/libraries/BLE/src/BLESecurity.h @@ -25,6 +25,7 @@ #include "BLEDevice.h" #include "BLEClient.h" #include "BLEServer.h" +#include "RTOS.h" /*************************************************************************** * Bluedroid includes * @@ -104,6 +105,8 @@ class BLESecurity { static uint32_t generateRandomPassKey(); static void regenPassKeyOnConnect(bool enable = false); static void resetSecurity(); + static void waitForAuthenticationComplete(uint32_t timeoutMs = 10000); + static void signalAuthenticationComplete(); /*************************************************************************** * Bluedroid public declarations * @@ -140,6 +143,7 @@ class BLESecurity { static bool m_passkeySet; static bool m_staticPasskey; static bool m_regenOnConnect; + static bool m_authenticationComplete; static uint8_t m_iocap; static uint8_t m_authReq; static uint8_t m_initKey; @@ -153,6 +157,7 @@ class BLESecurity { #if defined(CONFIG_BLUEDROID_ENABLED) static uint8_t m_keySize; static esp_ble_sec_act_t m_securityLevel; + static class FreeRTOS::Semaphore *m_authCompleteSemaphore; #endif }; // BLESecurity From 4ca6d348022b4418765121f71ceb3f981cf10f14 Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Mon, 3 Nov 2025 07:27:46 -0300 Subject: [PATCH 15/31] ci(hosted): Copy esp-hosted binaries to gh-pages (#11957) --- .github/scripts/on-release.sh | 5 +++++ .github/workflows/release.yml | 42 +++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/.github/scripts/on-release.sh b/.github/scripts/on-release.sh index dec2723eabb..c4dadccc4f7 100755 --- a/.github/scripts/on-release.sh +++ b/.github/scripts/on-release.sh @@ -391,6 +391,11 @@ pushd "$OUTPUT_DIR" >/dev/null tar -cJf "$LIBS_XZ" "esp32-arduino-libs" popd >/dev/null +# Copy esp-hosted binaries + +mkdir -p "$GITHUB_WORKSPACE/hosted" +cp "$OUTPUT_DIR/esp32-arduino-libs/hosted"/*.bin "$GITHUB_WORKSPACE/hosted/" + # Upload ZIP and XZ libs to release page echo "Uploading ZIP libs to release page ..." diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index acba6c54e68..8619cc74904 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,3 +36,45 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.TOOLS_UPLOAD_PAT }} run: bash ./.github/scripts/on-release.sh + + - name: Upload hosted binaries + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: hosted + if-no-files-found: ignore + path: ${{ github.workspace }}/hosted + + upload-hosted-binaries: + name: Upload hosted binaries + needs: build + runs-on: ubuntu-latest + steps: + - name: Checkout gh-pages branch + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: gh-pages + + - name: Download hosted binaries + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 + with: + name: hosted + path: ${{ github.workspace }}/hosted-latest + + - name: Copy hosted binaries to proper directory and commit + env: + GITHUB_TOKEN: ${{ secrets.TOOLS_UPLOAD_PAT }} + run: | + # Create hosted directory if it doesn't exist + mkdir -p ${{ github.workspace }}/hosted + + # Copy hosted binaries to proper directory without overwriting existing files + cp -n ${{ github.workspace }}/hosted-latest/*.bin ${{ github.workspace }}/hosted/ + + # Commit the changes + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add hosted/*.bin + if ! git diff --cached --quiet; then + git commit -m "Add new esp-hosted slave binaries" + git push origin HEAD:gh-pages + fi From 66fd1115da5758727184b20a34c651f132427a5c Mon Sep 17 00:00:00 2001 From: Eric Johnson Date: Mon, 3 Nov 2025 04:28:04 -0600 Subject: [PATCH 16/31] fix(docs): Fix incorrect ARDUINO_USB_MODE for USB CDC usage (#11971) When enabling serial logging over the built-in USB CDC interface, both ARDUINO_USB_CDC_ON_BOOT and ARDUINO_USB_MODE should be set to 1 --- docs/en/troubleshooting.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/troubleshooting.rst b/docs/en/troubleshooting.rst index ea9a6db94d6..3d632d560bb 100644 --- a/docs/en/troubleshooting.rst +++ b/docs/en/troubleshooting.rst @@ -149,7 +149,7 @@ Solution ^^^^^^^^ Newer ESP32 variants have two possible USB connectors - USB and UART. The UART connector will go through a USB->UART adapter, and will typically present itself with the name of that mfr (eg, Silicon Labs CP210x UART Bridge). The USB connector can be used as a USB-CDC bridge and will appear as an Espressif device (Espressif USB JTAG/serial debug unit). On Espressif devkits, both connections are available, and will be labeled. ESP32 can only use UART, so will only have one connector. Other variants with one connector will typically be using USB. Please check in the product [datasheet](https://products.espressif.com) or [hardware guide](https://www.espressif.com/en/products/devkits) to find Espressif products with the appropriate USB connections for your needs. -If you use the UART connector, you should disable USB-CDC on boot under the Tools menu (-D ARDUINO_USB_CDC_ON_BOOT=0). If you use the USB connector, you should have that enabled (-D ARDUINO_USB_CDC_ON_BOOT=1) and set USB Mode to "Hardware CDC and JTAG" (-D ARDUINO_USB_MODE=0). +If you use the UART connector, you should disable USB-CDC on boot under the Tools menu (-D ARDUINO_USB_CDC_ON_BOOT=0). If you use the USB connector, you should have that enabled (-D ARDUINO_USB_CDC_ON_BOOT=1) and set USB Mode to "Hardware CDC and JTAG" (-D ARDUINO_USB_MODE=1). USB-CDC may not be able to initialize in time to catch all the data if your device is in a tight reboot loop. This can make it difficult to troubleshoot initialization issues. SPIFFS mount failed From f096f436683fbd205a1f5a05031b664138446560 Mon Sep 17 00:00:00 2001 From: AlexAls Date: Mon, 3 Nov 2025 15:57:44 +0300 Subject: [PATCH 17/31] fix(esp32): issues on starting touch sensor and attaching interrupt (#11967) * Fix issues on starting touch sensor and attaching interrupt * Fix logical issues --- cores/esp32/esp32-hal-touch-ng.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/cores/esp32/esp32-hal-touch-ng.c b/cores/esp32/esp32-hal-touch-ng.c index 44bde091be8..a28ee4994c4 100644 --- a/cores/esp32/esp32-hal-touch-ng.c +++ b/cores/esp32/esp32-hal-touch-ng.c @@ -117,8 +117,12 @@ bool touchDisable() { if (!enabled) { // Already disabled return true; } - if (!running && (touch_sensor_disable(touch_sensor_handle) != ESP_OK)) { - log_e("Touch sensor still running or disable failed!"); + if (running) { + log_e("Touch sensor still running!"); + return false; + } + if (touch_sensor_disable(touch_sensor_handle) != ESP_OK) { + log_e("Touch sensor disable failed!"); return false; } enabled = false; @@ -129,8 +133,12 @@ bool touchStart() { if (running) { // Already running return true; } - if (enabled && (touch_sensor_start_continuous_scanning(touch_sensor_handle) != ESP_OK)) { - log_e("Touch sensor not enabled or failed to start continuous scanning failed!"); + if (!enabled) { + log_e("Touch sensor not enabled!"); + return false; + } + if (touch_sensor_start_continuous_scanning(touch_sensor_handle) != ESP_OK) { + log_e("Touch sensor failed to start continuous scanning!"); return false; } running = true; @@ -395,7 +403,7 @@ static void __touchConfigInterrupt(uint8_t pin, void (*userFunc)(void), void *Ar return; } - touch_channel_config_t chan_cfg = {}; + touch_channel_config_t chan_cfg = TOUCH_CHANNEL_DEFAULT_CONFIG(); for (int i = 0; i < _sample_num; i++) { #if SOC_TOUCH_SENSOR_VERSION == 1 // ESP32 chan_cfg.abs_active_thresh[i] = threshold; @@ -416,17 +424,17 @@ static void __touchConfigInterrupt(uint8_t pin, void (*userFunc)(void), void *Ar // it keeps backwards compatibility static void __touchAttachInterrupt(uint8_t pin, void (*userFunc)(void), touch_value_t threshold) { - __touchConfigInterrupt(pin, userFunc, NULL, threshold, false); + __touchConfigInterrupt(pin, userFunc, NULL, false, threshold); } // new additional version of the API with User Args static void __touchAttachArgsInterrupt(uint8_t pin, void (*userFunc)(void), void *args, touch_value_t threshold) { - __touchConfigInterrupt(pin, userFunc, args, threshold, true); + __touchConfigInterrupt(pin, userFunc, args, true, threshold); } // new additional API to detach touch ISR static void __touchDettachInterrupt(uint8_t pin) { - __touchConfigInterrupt(pin, NULL, NULL, 0, false); // userFunc as NULL acts as detaching + __touchConfigInterrupt(pin, NULL, NULL, false, 0); // userFunc as NULL acts as detaching } // /* From e2aa34f906bba17af7dce1a0e3c555c836292649 Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Mon, 3 Nov 2025 14:58:09 +0200 Subject: [PATCH 18/31] fix(eth): Use correct ETH MAC address (#11958) --- libraries/Ethernet/src/ETH.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/Ethernet/src/ETH.cpp b/libraries/Ethernet/src/ETH.cpp index a8546c66131..59dd102cced 100644 --- a/libraries/Ethernet/src/ETH.cpp +++ b/libraries/Ethernet/src/ETH.cpp @@ -756,9 +756,9 @@ bool ETHClass::beginSPI( } else { // Derive a new MAC address for this interface uint8_t base_mac_addr[ETH_ADDR_LEN]; - ret = esp_efuse_mac_get_default(base_mac_addr); + ret = esp_read_mac(base_mac_addr, ESP_MAC_ETH); if (ret != ESP_OK) { - log_e("Get EFUSE MAC failed: %d", ret); + log_e("Get ETH MAC failed: %d", ret); return false; } base_mac_addr[ETH_ADDR_LEN - 1] += _eth_index; //Increment by the ETH number From cbd49cf2d4862d43d7cd5541c9f81851bdb60e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Csaba=20Bal=C3=A1zs?= Date: Mon, 3 Nov 2025 13:58:27 +0100 Subject: [PATCH 19/31] fix: _chunkedclient clear (#11974) --- libraries/WebServer/src/WebServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/WebServer/src/WebServer.cpp b/libraries/WebServer/src/WebServer.cpp index bc0467a122e..98ec929f725 100644 --- a/libraries/WebServer/src/WebServer.cpp +++ b/libraries/WebServer/src/WebServer.cpp @@ -615,7 +615,7 @@ void WebServer::chunkResponseEnd() { log_e("Failed to write terminating chunk"); } - _chunkedClient.flush(); + _chunkedClient.clear(); _chunkedResponseActive = false; _chunked = false; _chunkedClient = NetworkClient(); From 7fcd6bd48ee62714c92961e51fd3f835a68e8af8 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Tue, 4 Nov 2025 04:10:52 -0300 Subject: [PATCH 20/31] Initial Commit This is the ESP32 Arduino Matter Enhanced Color Light example code structured to be built using Arduino as IDF Component. The application will use Thread network instead of WiFi using the ESP32-C6. --- .../CMakeLists.txt | 19 + .../README.md | 25 + .../main/CMakeLists.txt | 4 + .../main/MatterEnhancedColorLight.cpp | 215 + .../main/idf_component.yml | 6 + .../partitions.csv | 10 + .../sdkconfig | 3619 +++++++++++++++++ .../sdkconfig.defaults | 70 + 8 files changed, 3968 insertions(+) create mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/CMakeLists.txt create mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/README.md create mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/CMakeLists.txt create mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/MatterEnhancedColorLight.cpp create mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/idf_component.yml create mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/partitions.csv create mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig create mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig.defaults diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/CMakeLists.txt b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/CMakeLists.txt new file mode 100644 index 00000000000..805e7096d73 --- /dev/null +++ b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/CMakeLists.txt @@ -0,0 +1,19 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) + +#target_compile_options(espressif__esp_matter PUBLIC +# -DCHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER= +# -DCHIP_HAVE_CONFIG_H) +#list(APPEND compile_definitions "CHIP_HAVE_CONFIG_H=1") +#list(APPEND compile_definitions "CHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER=") + +project(Matter_C6_Thread_Light) + +idf_build_set_property(CXX_COMPILE_OPTIONS "-std=gnu++2a;-Os;-DCHIP_HAVE_CONFIG_H" APPEND) +idf_build_set_property(C_COMPILE_OPTIONS "-Os" APPEND) +# For RISCV chips, project_include.cmake sets -Wno-format, but does not clear various +# flags that depend on -Wformat +idf_build_set_property(COMPILE_OPTIONS "-Wno-format-nonliteral;-Wno-format-security" APPEND) diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/README.md b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/README.md new file mode 100644 index 00000000000..cf653d5a3aa --- /dev/null +++ b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/README.md @@ -0,0 +1,25 @@ +# Arduino ESP-Matter over Thread example using ESP32-C6 +This is an Arduino as IDF Project to build an ESP-Matter over Thread RGB Light using ESP32-C6 and ESP-Matter Arduino API \ +The example requires IDF 5.5.0 and ESP32 Arduino Core 3.0.0 + +# Instructions: + +1- Install IDF 5.5.0 into your computer. It can be done following the guide in +https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/index.html + +For Windows: https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/index.html \ +For Linux or MacOS: https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/linux-macos-setup.html + +2- Test IDF with `idf.py --version` to check if it is installed and configured correctly. +image + +3- Clone the repository with the Arduino as IDF Component project. +`git clone https://github.com/SuGlider/Arduino_ESP-Matter-over-Thread_ESP32-C6` + +4- Open an IDF terminal and execute `idf.py set-target esp32c6` + +5- Execute `idf.py -p flash monitor` + +6- It will build, upload and show the UART0 output in the screen. + +7- Try to add the Matter RGB light to your Matter environment. diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/CMakeLists.txt b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/CMakeLists.txt new file mode 100644 index 00000000000..47ac4b98794 --- /dev/null +++ b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/CMakeLists.txt @@ -0,0 +1,4 @@ +idf_component_register( + SRCS "MatterEnhancedColorLight.cpp" + INCLUDE_DIRS "" +) diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/MatterEnhancedColorLight.cpp b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/MatterEnhancedColorLight.cpp new file mode 100644 index 00000000000..ac22ae768c5 --- /dev/null +++ b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/MatterEnhancedColorLight.cpp @@ -0,0 +1,215 @@ +// Copyright 2025 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Matter Manager +#include +#if !CONFIG_ENABLE_CHIPOBLE +// if the device can be commissioned using BLE, WiFi is not used - save flash space +#include +#endif +#include + +// List of Matter Endpoints for this Node +// Color Light Endpoint +MatterEnhancedColorLight EnhancedColorLight; + +// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network +#if !CONFIG_ENABLE_CHIPOBLE +// WiFi is manually set and started +const char *ssid = "your-ssid"; // Change this to your WiFi SSID +const char *password = "your-password"; // Change this to your WiFi password +#endif + +// It will use HSV color to control all Matter Attribute Changes +HsvColor_t currentHSVColor = {0, 0, 0}; + +// it will keep last OnOff & HSV Color state stored, using Preferences +Preferences matterPref; +const char *onOffPrefKey = "OnOff"; +const char *hsvColorPrefKey = "HSV"; + +// set your board RGB LED pin here +#ifdef RGB_BUILTIN +const uint8_t ledPin = RGB_BUILTIN; +#else +const uint8_t ledPin = 2; // Set your pin here if your board has not defined LED_BUILTIN +#warning "Do not forget to set the RGB LED pin" +#endif + +// set your board USER BUTTON pin here +const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button. + +// Button control +uint32_t button_time_stamp = 0; // debouncing control +bool button_state = false; // false = released | true = pressed +const uint32_t debouceTime = 250; // button debouncing time (ms) +const uint32_t decommissioningTimeout = 5000; // keep the button pressed for 5s, or longer, to decommission + +// Set the RGB LED Light based on the current state of the Enhanced Color Light +bool setLightState(bool state, espHsvColor_t colorHSV, uint8_t brighteness, uint16_t temperature_Mireds) { + + if (state) { +#ifdef RGB_BUILTIN + // currentHSVColor keeps final color result + espRgbColor_t rgbColor = espHsvColorToRgbColor(currentHSVColor); + // set the RGB LED + rgbLedWrite(ledPin, rgbColor.r, rgbColor.g, rgbColor.b); +#else + // No Color RGB LED, just use the HSV value (brightness) to control the LED + analogWrite(ledPin, colorHSV.v); +#endif + } else { +#ifndef RGB_BUILTIN + // after analogWrite(), it is necessary to set the GPIO to digital mode first + pinMode(ledPin, OUTPUT); +#endif + digitalWrite(ledPin, LOW); + } + // store last HSV Color and OnOff state for when the Light is restarted / power goes off + matterPref.putBool(onOffPrefKey, state); + matterPref.putUInt(hsvColorPrefKey, currentHSVColor.h << 16 | currentHSVColor.s << 8 | currentHSVColor.v); + // This callback must return the success state to Matter core + return true; +} + +void setup() { + // Initialize the USER BUTTON (Boot button) GPIO that will act as a toggle switch + pinMode(buttonPin, INPUT_PULLUP); + // Initialize the LED (light) GPIO and Matter End Point + pinMode(ledPin, OUTPUT); + + Serial.begin(115200); + +// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network +#if !CONFIG_ENABLE_CHIPOBLE + // We start by connecting to a WiFi network + Serial.print("Connecting to "); + Serial.println(ssid); + // Manually connect to WiFi + WiFi.begin(ssid, password); + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println("\r\nWiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + delay(500); +#endif + + // Initialize Matter EndPoint + matterPref.begin("MatterPrefs", false); + // default OnOff state is ON if not stored before + bool lastOnOffState = matterPref.getBool(onOffPrefKey, true); + // default HSV color is (21, 216, 25) - Warm White Color at 10% intensity + uint32_t prefHsvColor = matterPref.getUInt(hsvColorPrefKey, 21 << 16 | 216 << 8 | 25); + currentHSVColor = {uint8_t(prefHsvColor >> 16), uint8_t(prefHsvColor >> 8), uint8_t(prefHsvColor)}; + EnhancedColorLight.begin(lastOnOffState, currentHSVColor); + // set the callback function to handle the Light state change + EnhancedColorLight.onChange(setLightState); + + // lambda functions are used to set the attribute change callbacks + EnhancedColorLight.onChangeOnOff([](bool state) { + Serial.printf("Light OnOff changed to %s\r\n", state ? "ON" : "OFF"); + return true; + }); + EnhancedColorLight.onChangeColorTemperature([](uint16_t colorTemperature) { + Serial.printf("Light Color Temperature changed to %d\r\n", colorTemperature); + // get correspondent Hue and Saturation of the color temperature + HsvColor_t hsvTemperature = espRgbColorToHsvColor(espCTToRgbColor(colorTemperature)); + // keep previous the brightness and just change the Hue and Saturation + currentHSVColor.h = hsvTemperature.h; + currentHSVColor.s = hsvTemperature.s; + return true; + }); + EnhancedColorLight.onChangeBrightness([](uint8_t brightness) { + Serial.printf("Light brightness changed to %d\r\n", brightness); + // change current brightness (HSV value) + currentHSVColor.v = brightness; + return true; + }); + EnhancedColorLight.onChangeColorHSV([](HsvColor_t hsvColor) { + Serial.printf("Light HSV Color changed to (%d,%d,%d)\r\n", hsvColor.h, hsvColor.s, hsvColor.v); + // keep the current brightness and just change Hue and Saturation + currentHSVColor.h = hsvColor.h; + currentHSVColor.s = hsvColor.s; + return true; + }); + + // Matter beginning - Last step, after all EndPoints are initialized + Matter.begin(); + // This may be a restart of a already commissioned Matter accessory + if (Matter.isDeviceCommissioned()) { + Serial.println("Matter Node is commissioned and connected to the network. Ready for use."); + Serial.printf( + "Initial state: %s | RGB Color: (%d,%d,%d) \r\n", EnhancedColorLight ? "ON" : "OFF", EnhancedColorLight.getColorRGB().r, + EnhancedColorLight.getColorRGB().g, EnhancedColorLight.getColorRGB().b + ); + // configure the Light based on initial on-off state and its color + EnhancedColorLight.updateAccessory(); + } +} + +void loop() { + // Check Matter Light Commissioning state, which may change during execution of loop() + if (!Matter.isDeviceCommissioned()) { + Serial.println(""); + Serial.println("Matter Node is not commissioned yet."); + Serial.println("Initiate the device discovery in your Matter environment."); + Serial.println("Commission it to your Matter hub with the manual pairing code or QR code"); + Serial.printf("Manual pairing code: %s\r\n", Matter.getManualPairingCode().c_str()); + Serial.printf("QR code URL: %s\r\n", Matter.getOnboardingQRCodeUrl().c_str()); + // waits for Matter Light Commissioning. + uint32_t timeCount = 0; + while (!Matter.isDeviceCommissioned()) { + delay(100); + if ((timeCount++ % 50) == 0) { // 50*100ms = 5 sec + Serial.println("Matter Node not commissioned yet. Waiting for commissioning."); + } + } + Serial.printf( + "Initial state: %s | RGB Color: (%d,%d,%d) \r\n", EnhancedColorLight ? "ON" : "OFF", EnhancedColorLight.getColorRGB().r, + EnhancedColorLight.getColorRGB().g, EnhancedColorLight.getColorRGB().b + ); + // configure the Light based on initial on-off state and its color + EnhancedColorLight.updateAccessory(); + Serial.println("Matter Node is commissioned and connected to the network. Ready for use."); + } + + // A button is also used to control the light + // Check if the button has been pressed + if (digitalRead(buttonPin) == LOW && !button_state) { + // deals with button debouncing + button_time_stamp = millis(); // record the time while the button is pressed. + button_state = true; // pressed. + } + + // Onboard User Button is used as a Light toggle switch or to decommission it + uint32_t time_diff = millis() - button_time_stamp; + if (button_state && time_diff > debouceTime && digitalRead(buttonPin) == HIGH) { + button_state = false; // released + // Toggle button is released - toggle the light + Serial.println("User button released. Toggling Light!"); + EnhancedColorLight.toggle(); // Matter Controller also can see the change + } + + // Onboard User Button is kept pressed for longer than 5 seconds in order to decommission matter node + if (button_state && time_diff > decommissioningTimeout) { + Serial.println("Decommissioning the Light Matter Accessory. It shall be commissioned again."); + EnhancedColorLight = false; // turn the light off + Matter.decommission(); + button_time_stamp = millis(); // avoid running decommissining again, reboot takes a second or so + } +} diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/idf_component.yml b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/idf_component.yml new file mode 100644 index 00000000000..749c1810875 --- /dev/null +++ b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/idf_component.yml @@ -0,0 +1,6 @@ +dependencies: + espressif/esp_matter: + version: "^1.4.0" + require: public + espressif/arduino-esp32: + version: "3.3.0" \ No newline at end of file diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/partitions.csv b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/partitions.csv new file mode 100644 index 00000000000..c5b0dcea569 --- /dev/null +++ b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/partitions.csv @@ -0,0 +1,10 @@ +# Name, Type, SubType, Offset, Size, Flags +# Note: Firmware partition offset needs to be 64K aligned, initial 36K (9 sectors) are reserved for bootloader and partition table +esp_secure_cert, 0x3F, ,0xd000, 0x2000, encrypted +nvs, data, nvs, 0x10000, 0xC000, +nvs_keys, data, nvs_keys,, 0x1000, encrypted +otadata, data, ota, , 0x2000 +phy_init, data, phy, , 0x1000, +ota_0, app, ota_0, 0x20000, 0x1E0000, +ota_1, app, ota_1, 0x200000, 0x1E0000, +fctry, data, nvs, 0x3E0000, 0x6000 \ No newline at end of file diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig new file mode 100644 index 00000000000..af5a852dce1 --- /dev/null +++ b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig @@ -0,0 +1,3619 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) 5.5.0 Project Configuration +# +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y +CONFIG_SOC_UART_SUPPORTED=y +CONFIG_SOC_UHCI_SUPPORTED=y +CONFIG_SOC_GDMA_SUPPORTED=y +CONFIG_SOC_AHB_GDMA_SUPPORTED=y +CONFIG_SOC_GPTIMER_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_ETM_SUPPORTED=y +CONFIG_SOC_PARLIO_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_IEEE802154_SUPPORTED=y +CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y +CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y +CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y +CONFIG_SOC_PHY_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_LP_CORE_SUPPORTED=y +CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y +CONFIG_SOC_EFUSE_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_GPSPI_SUPPORTED=y +CONFIG_SOC_LEDC_SUPPORTED=y +CONFIG_SOC_I2C_SUPPORTED=y +CONFIG_SOC_SYSTIMER_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_HMAC_SUPPORTED=y +CONFIG_SOC_DIG_SIGN_SUPPORTED=y +CONFIG_SOC_ECC_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_BOD_SUPPORTED=y +CONFIG_SOC_APM_SUPPORTED=y +CONFIG_SOC_PMU_SUPPORTED=y +CONFIG_SOC_PAU_SUPPORTED=y +CONFIG_SOC_LP_TIMER_SUPPORTED=y +CONFIG_SOC_LP_AON_SUPPORTED=y +CONFIG_SOC_LP_PERIPHERALS_SUPPORTED=y +CONFIG_SOC_LP_I2C_SUPPORTED=y +CONFIG_SOC_ULP_LP_UART_SUPPORTED=y +CONFIG_SOC_CLK_TREE_SUPPORTED=y +CONFIG_SOC_ASSIST_DEBUG_SUPPORTED=y +CONFIG_SOC_WDT_SUPPORTED=y +CONFIG_SOC_SPI_FLASH_SUPPORTED=y +CONFIG_SOC_RNG_SUPPORTED=y +CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y +CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y +CONFIG_SOC_MODEM_CLOCK_SUPPORTED=y +CONFIG_SOC_PM_SUPPORTED=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_CLOCK_PATH_DEPENDS_ON_TOP_DOMAIN=y +CONFIG_SOC_AES_SUPPORT_DMA=y +CONFIG_SOC_AES_GDMA=y +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y +CONFIG_SOC_ADC_MONITOR_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=1 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=7 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=1 +CONFIG_SOC_ADC_PATT_LEN_MAX=8 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2 +CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y +CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y +CONFIG_SOC_ADC_CALIB_CHAN_COMPENS_SUPPORTED=y +CONFIG_SOC_ADC_TEMPERATURE_SHARE_INTR=y +CONFIG_SOC_ADC_SHARED_POWER=y +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y +CONFIG_SOC_CPU_CORES_NUM=1 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FLEXIBLE_INTC=y +CONFIG_SOC_INT_PLIC_SUPPORTED=y +CONFIG_SOC_CPU_HAS_CSR_PC=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=4 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=4 +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x80000000 +CONFIG_SOC_CPU_HAS_PMA=y +CONFIG_SOC_CPU_IDRAM_SPLIT_USING_PMP=y +CONFIG_SOC_CPU_PMP_REGION_GRANULARITY=4 +CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=3072 +CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 +CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 +CONFIG_SOC_AHB_GDMA_VERSION=1 +CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1 +CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=3 +CONFIG_SOC_GDMA_SUPPORT_ETM=y +CONFIG_SOC_GDMA_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_ETM_GROUPS=1 +CONFIG_SOC_ETM_CHANNELS_PER_GROUP=50 +CONFIG_SOC_ETM_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=31 +CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y +CONFIG_SOC_GPIO_FLEX_GLITCH_FILTER_NUM=8 +CONFIG_SOC_GPIO_SUPPORT_ETM=y +CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y +CONFIG_SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP=y +CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y +CONFIG_SOC_GPIO_IN_RANGE_MAX=30 +CONFIG_SOC_GPIO_OUT_RANGE_MAX=30 +CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_VALID_GPIO_MASK=0 +CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_SUPPORTED_PIN_CNT=8 +CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x000000007FFFFF00 +CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y +CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y +CONFIG_SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP=y +CONFIG_SOC_GPIO_CLOCKOUT_BY_GPIO_MATRIX=y +CONFIG_SOC_CLOCKOUT_HAS_SOURCE_GATE=y +CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 +CONFIG_SOC_RTCIO_PIN_COUNT=8 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_RTCIO_EDGE_WAKE_SUPPORTED=y +CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 +CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 +CONFIG_SOC_DEDIC_PERIPH_ALWAYS_ENABLE=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_HP_I2C_NUM=1 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_CMD_REG_NUM=8 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_HW_FSM_RST=y +CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y +CONFIG_SOC_I2C_SUPPORT_XTAL=y +CONFIG_SOC_I2C_SUPPORT_RTC=y +CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y +CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y +CONFIG_SOC_I2C_SLAVE_CAN_GET_STRETCH_CAUSE=y +CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y +CONFIG_SOC_I2C_SLAVE_SUPPORT_SLAVE_UNMATCH=y +CONFIG_SOC_I2C_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_LP_I2C_NUM=1 +CONFIG_SOC_LP_I2C_FIFO_LEN=16 +CONFIG_SOC_I2S_NUM=1 +CONFIG_SOC_I2S_HW_VERSION_2=y +CONFIG_SOC_I2S_SUPPORTS_ETM=y +CONFIG_SOC_I2S_SUPPORTS_XTAL=y +CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y +CONFIG_SOC_I2S_SUPPORTS_PCM=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PCM2PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2 +CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1 +CONFIG_SOC_I2S_SUPPORTS_TDM=y +CONFIG_SOC_I2S_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_LEDC_SUPPORT_PLL_DIV_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y +CONFIG_SOC_LEDC_TIMER_NUM=4 +CONFIG_SOC_LEDC_CHANNEL_NUM=6 +CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 +CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y +CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_SUPPORTED=y +CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_RANGE_MAX=16 +CONFIG_SOC_LEDC_FADE_PARAMS_BIT_WIDTH=10 +CONFIG_SOC_LEDC_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_MMU_PAGE_SIZE_CONFIGURABLE=y +CONFIG_SOC_MMU_PAGE_SIZE_8KB_SUPPORTED=y +CONFIG_SOC_MMU_PERIPH_NUM=1 +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1 +CONFIG_SOC_MMU_DI_VADDR_SHARED=y +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=4 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_PCNT_SUPPORT_RUNTIME_THRES_UPDATE=y +CONFIG_SOC_PCNT_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=2 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=2 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=4 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 +CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y +CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y +CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y +CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y +CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y +CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y +CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y +CONFIG_SOC_RMT_SUPPORT_XTAL=y +CONFIG_SOC_RMT_SUPPORT_RC_FAST=y +CONFIG_SOC_RMT_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_MCPWM_GROUPS=1 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y +CONFIG_SOC_MCPWM_SUPPORT_ETM=y +CONFIG_SOC_MCPWM_CAPTURE_CLK_FROM_GROUP=y +CONFIG_SOC_MCPWM_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_PARLIO_GROUPS=1 +CONFIG_SOC_PARLIO_TX_UNITS_PER_GROUP=1 +CONFIG_SOC_PARLIO_RX_UNITS_PER_GROUP=1 +CONFIG_SOC_PARLIO_TX_UNIT_MAX_DATA_WIDTH=16 +CONFIG_SOC_PARLIO_RX_UNIT_MAX_DATA_WIDTH=16 +CONFIG_SOC_PARLIO_TX_RX_SHARE_INTERRUPT=y +CONFIG_SOC_PARLIO_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 +CONFIG_SOC_MPI_OPERATIONS_NUM=3 +CONFIG_SOC_RSA_MAX_BIT_LEN=3072 +CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 +CONFIG_SOC_SHA_SUPPORT_DMA=y +CONFIG_SOC_SHA_SUPPORT_RESUME=y +CONFIG_SOC_SHA_GDMA=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA224=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=4 +CONFIG_SOC_SDM_CLK_SUPPORT_PLL_F80M=y +CONFIG_SOC_SDM_CLK_SUPPORT_XTAL=y +CONFIG_SOC_SPI_PERIPH_NUM=2 +CONFIG_SOC_SPI_MAX_CS_NUM=6 +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_SUPPORT_DDRCLK=y +CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y +CONFIG_SOC_SPI_SUPPORT_CD_SIG=y +CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y +CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y +CONFIG_SOC_SPI_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y +CONFIG_SOC_SPI_SUPPORT_CLK_PLL_F80M=y +CONFIG_SOC_SPI_SUPPORT_CLK_RC_FAST=y +CONFIG_SOC_SPI_SCT_SUPPORTED=y +CONFIG_SOC_SPI_SCT_REG_NUM=14 +CONFIG_SOC_SPI_SCT_BUFFER_NUM_MAX=y +CONFIG_SOC_SPI_SCT_CONF_BITLEN_MAX=0x3FFFA +CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y +CONFIG_SOC_SPI_MEM_SUPPORT_IDLE_INTR=y +CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y +CONFIG_SOC_SPI_MEM_SUPPORT_CHECK_SUS=y +CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_SYSTIMER_COUNTER_NUM=2 +CONFIG_SOC_SYSTIMER_ALARM_NUM=3 +CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 +CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 +CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y +CONFIG_SOC_SYSTIMER_SUPPORT_RC_FAST=y +CONFIG_SOC_SYSTIMER_INT_LEVEL=y +CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y +CONFIG_SOC_SYSTIMER_SUPPORT_ETM=y +CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 +CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=1 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 +CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y +CONFIG_SOC_TIMER_GROUP_SUPPORT_RC_FAST=y +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=2 +CONFIG_SOC_TIMER_SUPPORT_ETM=y +CONFIG_SOC_TIMER_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_MWDT_SUPPORT_XTAL=y +CONFIG_SOC_MWDT_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_TWAI_CONTROLLER_NUM=2 +CONFIG_SOC_TWAI_MASK_FILTER_NUM=1 +CONFIG_SOC_TWAI_CLK_SUPPORT_XTAL=y +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_BRP_MAX=32768 +CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y +CONFIG_SOC_TWAI_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y +CONFIG_SOC_EFUSE_DIS_PAD_JTAG=y +CONFIG_SOC_EFUSE_DIS_USB_JTAG=y +CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y +CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y +CONFIG_SOC_EFUSE_DIS_ICACHE=y +CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y +CONFIG_SOC_SECURE_BOOT_V2_RSA=y +CONFIG_SOC_SECURE_BOOT_V2_ECC=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 +CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64 +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y +CONFIG_SOC_APM_CTRL_FILTER_SUPPORTED=y +CONFIG_SOC_APM_LP_APM0_SUPPORTED=y +CONFIG_SOC_CRYPTO_DPA_PROTECTION_SUPPORTED=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_HP_NUM=2 +CONFIG_SOC_UART_LP_NUM=1 +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_LP_UART_FIFO_LEN=16 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_UART_SUPPORT_PLL_F80M_CLK=y +CONFIG_SOC_UART_SUPPORT_RTC_CLK=y +CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y +CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y +CONFIG_SOC_UART_HAS_LP_UART=y +CONFIG_SOC_UART_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y +CONFIG_SOC_UART_WAKEUP_CHARS_SEQ_MAX_LEN=5 +CONFIG_SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE=y +CONFIG_SOC_UART_WAKEUP_SUPPORT_FIFO_THRESH_MODE=y +CONFIG_SOC_UART_WAKEUP_SUPPORT_START_BIT_MODE=y +CONFIG_SOC_UART_WAKEUP_SUPPORT_CHAR_SEQ_MODE=y +CONFIG_SOC_UHCI_NUM=1 +CONFIG_SOC_COEX_HW_PTI=y +CONFIG_SOC_EXTERNAL_COEX_ADVANCE=y +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 +CONFIG_SOC_RTC_MEM_SUPPORT_SPEED_MODE_SWITCH=y +CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_BEACON_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP_MODE_PER_PIN=y +CONFIG_SOC_PM_SUPPORT_CPU_PD=y +CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +CONFIG_SOC_PM_SUPPORT_XTAL32K_PD=y +CONFIG_SOC_PM_SUPPORT_RC32K_PD=y +CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y +CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y +CONFIG_SOC_PM_SUPPORT_TOP_PD=y +CONFIG_SOC_PM_SUPPORT_HP_AON_PD=y +CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_PMU_MODEM_STATE=y +CONFIG_SOC_PM_SUPPORT_PMU_CLK_ICG=y +CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y +CONFIG_SOC_PM_CPU_RETENTION_BY_SW=y +CONFIG_SOC_PM_MODEM_RETENTION_BY_REGDMA=y +CONFIG_SOC_PM_RETENTION_HAS_CLOCK_BUG=y +CONFIG_SOC_EXT_MEM_CACHE_TAG_IN_CPU_DOMAIN=y +CONFIG_SOC_PM_PAU_LINK_NUM=4 +CONFIG_SOC_PM_PAU_REGDMA_LINK_MULTI_ADDR=y +CONFIG_SOC_PM_PAU_REGDMA_LINK_WIFIMAC=y +CONFIG_SOC_PM_PAU_REGDMA_UPDATE_CACHE_BEFORE_WAIT_COMPARE=y +CONFIG_SOC_PM_PMU_MIN_SLP_SLOW_CLK_CYCLE_FIXED=y +CONFIG_SOC_PM_RETENTION_MODULE_NUM=32 +CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y +CONFIG_SOC_MODEM_CLOCK_IS_INDEPENDENT=y +CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y +CONFIG_SOC_CLK_OSC_SLOW_SUPPORTED=y +CONFIG_SOC_CLK_RC32K_SUPPORTED=y +CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL_D2=y +CONFIG_SOC_RCC_IS_INDEPENDENT=y +CONFIG_SOC_CLK_ANA_I2C_MST_HAS_ROOT_GATE=y +CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y +CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_XTAL=y +CONFIG_SOC_TEMPERATURE_SENSOR_INTR_SUPPORT=y +CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_ETM=y +CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN=y +CONFIG_SOC_RNG_CLOCK_IS_INDEPENDENT=y +CONFIG_SOC_WIFI_HW_TSF=y +CONFIG_SOC_WIFI_FTM_SUPPORT=y +CONFIG_SOC_WIFI_GCMP_SUPPORT=y +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_WIFI_HE_SUPPORT=y +CONFIG_SOC_WIFI_MAC_VERSION_NUM=2 +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_ESP_NIMBLE_CONTROLLER=y +CONFIG_SOC_BLE_50_SUPPORTED=y +CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y +CONFIG_SOC_BLE_POWER_CONTROL_SUPPORTED=y +CONFIG_SOC_BLE_PERIODIC_ADV_ENH_SUPPORTED=y +CONFIG_SOC_BLUFI_SUPPORTED=y +CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y +CONFIG_SOC_BLE_USE_WIFI_PWR_CLK_WORKAROUND=y +CONFIG_SOC_PHY_COMBO_MODULE=y +CONFIG_SOC_CAPS_NO_RESET_BY_ANA_BOD=y +CONFIG_SOC_LP_CORE_SINGLE_INTERRUPT_VECTOR=y +CONFIG_SOC_LP_CORE_SUPPORT_ETM=y +CONFIG_SOC_DEBUG_HAVE_OCD_STUB_BINS=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TOOLCHAIN="gcc" +CONFIG_IDF_TOOLCHAIN_GCC=y +CONFIG_IDF_TARGET_ARCH_RISCV=y +CONFIG_IDF_TARGET_ARCH="riscv" +CONFIG_IDF_TARGET="esp32c6" +CONFIG_IDF_INIT_VERSION="5.5.0" +CONFIG_IDF_TARGET_ESP32C6=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x000D + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# end of Build type + +# +# Bootloader config +# + +# +# Bootloader manager +# +CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y +CONFIG_BOOTLOADER_PROJECT_VER=1 +# end of Bootloader manager + +# +# Application Rollback +# +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# end of Application Rollback + +# +# Bootloader Rollback +# +# end of Bootloader Rollback + +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set + +# +# Log +# +CONFIG_BOOTLOADER_LOG_VERSION_1=y +CONFIG_BOOTLOADER_LOG_VERSION=1 +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_INFO is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=1 + +# +# Format +# +# CONFIG_BOOTLOADER_LOG_COLORS is not set +CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y +# end of Format + +# +# Settings +# +CONFIG_BOOTLOADER_LOG_MODE_TEXT_EN=y +CONFIG_BOOTLOADER_LOG_MODE_TEXT=y +# end of Settings +# end of Log + +# +# Serial Flash Configurations +# +# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Serial Flash Configurations + +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y +CONFIG_SECURE_BOOT_V2_ECC_SUPPORTED=y +CONFIG_SECURE_BOOT_V2_PREFERRED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +CONFIG_SECURE_ROM_DL_MODE_ENABLED=y +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y +CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=3 +CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y +CONFIG_ESP_ROM_GET_CLK_FREQ=y +CONFIG_ESP_ROM_HAS_RVFPLIB=y +CONFIG_ESP_ROM_HAS_HAL_WDT=y +CONFIG_ESP_ROM_HAS_HAL_SYSTIMER=y +CONFIG_ESP_ROM_HAS_HEAP_TLSF=y +CONFIG_ESP_ROM_TLSF_CHECK_PATCH=y +CONFIG_ESP_ROM_MULTI_HEAP_WALK_PATCH=y +CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y +CONFIG_ESP_ROM_HAS_SPI_FLASH=y +CONFIG_ESP_ROM_HAS_SPI_FLASH_MMAP=y +CONFIG_ESP_ROM_HAS_REGI2C_BUG=y +CONFIG_ESP_ROM_HAS_NEWLIB=y +CONFIG_ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT=y +CONFIG_ESP_ROM_REV0_HAS_NO_ECDSA_INTERFACE=y +CONFIG_ESP_ROM_WDT_INIT_PATCH=y +CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y +CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y +CONFIG_ESP_ROM_HAS_SW_FLOAT=y +CONFIG_ESP_ROM_USB_OTG_NUM=-1 +CONFIG_ESP_ROM_HAS_VERSION=y +CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y +CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y +CONFIG_ESP_ROM_NO_USB_SERIAL_OUTPUT_API=y +CONFIG_ESP_ROM_HAS_SUBOPTIMAL_NEWLIB_ON_MISALIGNED_MEMORY=y + +# +# Boot ROM Behavior +# +CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y +# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set +# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set +# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set +# end of Boot ROM Behavior + +# +# ESP-TEE (Trusted Execution Environment) +# +# CONFIG_SECURE_ENABLE_TEE is not set +CONFIG_SECURE_TEE_LOG_LEVEL=0 +# end of ESP-TEE (Trusted Execution Environment) + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +# CONFIG_ESPTOOLPY_FLASHMODE_DIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="80m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" +CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +# CONFIG_PARTITION_TABLE_SINGLE_APP is not set +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# Arduino Configuration +# +CONFIG_ARDUINO_VARIANT="esp32c6" +CONFIG_ENABLE_ARDUINO_DEPENDS=y +CONFIG_AUTOSTART_ARDUINO=y +CONFIG_ARDUINO_RUN_CORE0=y +CONFIG_ARDUINO_RUNNING_CORE=0 +CONFIG_ARDUINO_LOOP_STACK_SIZE=8192 +CONFIG_ARDUINO_EVENT_RUN_CORE0=y +CONFIG_ARDUINO_EVENT_RUNNING_CORE=0 +CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE0=y +CONFIG_ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE=0 +CONFIG_ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE=2048 +CONFIG_ARDUINO_SERIAL_EVENT_TASK_PRIORITY=24 +CONFIG_ARDUINO_UDP_RUN_CORE0=y +CONFIG_ARDUINO_UDP_RUNNING_CORE=0 +CONFIG_ARDUINO_UDP_TASK_PRIORITY=3 +# CONFIG_ARDUINO_ISR_IRAM is not set +# CONFIG_DISABLE_HAL_LOCKS is not set + +# +# Debug Log Configuration +# +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=3 +# CONFIG_ARDUHAL_LOG_COLORS is not set +# CONFIG_ARDUHAL_ESP_LOG is not set +# end of Debug Log Configuration + +CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y +# CONFIG_ARDUHAL_PARTITION_SCHEME_MINIMAL is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_NO_OTA is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_HUGE_APP is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_MIN_SPIFFS is not set +CONFIG_ARDUHAL_PARTITION_SCHEME="default" +# CONFIG_AUTOCONNECT_WIFI is not set +CONFIG_ARDUINO_SELECTIVE_COMPILATION=y +CONFIG_ARDUINO_SELECTIVE_SPI=y +CONFIG_ARDUINO_SELECTIVE_Wire=y +CONFIG_ARDUINO_SELECTIVE_ESP_SR=y +CONFIG_ARDUINO_SELECTIVE_EEPROM=y +CONFIG_ARDUINO_SELECTIVE_Preferences=y +CONFIG_ARDUINO_SELECTIVE_Ticker=y +CONFIG_ARDUINO_SELECTIVE_Update=y +CONFIG_ARDUINO_SELECTIVE_Zigbee=y +CONFIG_ARDUINO_SELECTIVE_FS=y +CONFIG_ARDUINO_SELECTIVE_SD=y +CONFIG_ARDUINO_SELECTIVE_SD_MMC=y +CONFIG_ARDUINO_SELECTIVE_SPIFFS=y +CONFIG_ARDUINO_SELECTIVE_FFat=y +CONFIG_ARDUINO_SELECTIVE_LittleFS=y +CONFIG_ARDUINO_SELECTIVE_Network=y +CONFIG_ARDUINO_SELECTIVE_Ethernet=y +CONFIG_ARDUINO_SELECTIVE_PPP=y +CONFIG_ARDUINO_SELECTIVE_ArduinoOTA=y +CONFIG_ARDUINO_SELECTIVE_AsyncUDP=y +CONFIG_ARDUINO_SELECTIVE_DNSServer=y +CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y +CONFIG_ARDUINO_SELECTIVE_HTTPClient=y +CONFIG_ARDUINO_SELECTIVE_Matter=y +CONFIG_ARDUINO_SELECTIVE_NetBIOS=y +CONFIG_ARDUINO_SELECTIVE_WebServer=y +CONFIG_ARDUINO_SELECTIVE_WiFi=y +CONFIG_ARDUINO_SELECTIVE_NetworkClientSecure=y +CONFIG_ARDUINO_SELECTIVE_WiFiProv=y +CONFIG_ARDUINO_SELECTIVE_BLE=y +CONFIG_ARDUINO_SELECTIVE_BluetoothSerial=y +CONFIG_ARDUINO_SELECTIVE_SimpleBLE=y +CONFIG_ARDUINO_SELECTIVE_RainMaker=y +CONFIG_ARDUINO_SELECTIVE_OpenThread=y +CONFIG_ARDUINO_SELECTIVE_Insights=y +# end of Arduino Configuration + +# +# ESP RainMaker Config +# +# CONFIG_ESP_RMAKER_NO_CLAIM is not set +CONFIG_ESP_RMAKER_SELF_CLAIM=y +# CONFIG_ESP_RMAKER_ASSISTED_CLAIM is not set +CONFIG_ESP_RMAKER_USE_NVS=y +CONFIG_ESP_RMAKER_CLAIM_TYPE=1 +CONFIG_ESP_RMAKER_CLAIM_SERVICE_BASE_URL="https://esp-claiming.rainmaker.espressif.com" +# CONFIG_ESP_RMAKER_READ_MQTT_HOST_FROM_CONFIG is not set +# CONFIG_ESP_RMAKER_READ_NODE_ID_FROM_CERT_CN is not set +CONFIG_ESP_RMAKER_MQTT_HOST="a1p72mufdu6064-ats.iot.us-east-1.amazonaws.com" +CONFIG_ESP_RMAKER_MQTT_USE_BASIC_INGEST_TOPICS=y +CONFIG_ESP_RMAKER_MQTT_ENABLE_BUDGETING=y +CONFIG_ESP_RMAKER_MQTT_DEFAULT_BUDGET=100 +CONFIG_ESP_RMAKER_MQTT_MAX_BUDGET=1024 +CONFIG_ESP_RMAKER_MQTT_BUDGET_REVIVE_PERIOD=5 +CONFIG_ESP_RMAKER_MQTT_BUDGET_REVIVE_COUNT=1 +CONFIG_ESP_RMAKER_MAX_PARAM_DATA_SIZE=1024 +# CONFIG_ESP_RMAKER_DISABLE_USER_MAPPING_PROV is not set +# CONFIG_ESP_RMAKER_USER_ID_CHECK is not set +# CONFIG_RMAKER_NAME_PARAM_CB is not set +# CONFIG_ESP_RMAKER_LOCAL_CTRL_FEATURE_ENABLE is not set +# CONFIG_ESP_RMAKER_LOCAL_CTRL_AUTO_ENABLE is not set +CONFIG_ESP_RMAKER_CONSOLE_UART_NUM_0=y +# CONFIG_ESP_RMAKER_CONSOLE_UART_NUM_1 is not set +CONFIG_ESP_RMAKER_CONSOLE_UART_NUM=0 +CONFIG_ESP_RMAKER_USE_CERT_BUNDLE=y + +# +# ESP RainMaker OTA Config +# +CONFIG_ESP_RMAKER_OTA_AUTOFETCH=y +CONFIG_ESP_RMAKER_OTA_AUTOFETCH_PERIOD=0 +# CONFIG_ESP_RMAKER_SKIP_COMMON_NAME_CHECK is not set +# CONFIG_ESP_RMAKER_SKIP_VERSION_CHECK is not set +# CONFIG_ESP_RMAKER_SKIP_SECURE_VERSION_CHECK is not set +# CONFIG_ESP_RMAKER_SKIP_PROJECT_NAME_CHECK is not set +CONFIG_ESP_RMAKER_OTA_HTTP_RX_BUFFER_SIZE=1024 +CONFIG_ESP_RMAKER_OTA_ROLLBACK_WAIT_PERIOD=90 +# CONFIG_ESP_RMAKER_OTA_DISABLE_AUTO_REBOOT is not set +CONFIG_ESP_RMAKER_OTA_TIME_SUPPORT=y +# end of ESP RainMaker OTA Config + +# +# ESP RainMaker Scheduling +# +CONFIG_ESP_RMAKER_SCHEDULING_MAX_SCHEDULES=10 +# end of ESP RainMaker Scheduling + +# +# ESP RainMaker Scenes +# +CONFIG_ESP_RMAKER_SCENES_MAX_SCENES=10 +# CONFIG_ESP_RMAKER_SCENES_DEACTIVATE_SUPPORT is not set +# end of ESP RainMaker Scenes + +# +# ESP RainMaker Command-Response +# +CONFIG_ESP_RMAKER_CMD_RESP_ENABLE=y +# CONFIG_ESP_RMAKER_CMD_RESP_TEST_ENABLE is not set +# end of ESP RainMaker Command-Response + +CONFIG_ESP_RMAKER_USING_NETWORK_PROV=y +# end of ESP RainMaker Config + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEBUG=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y +# CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_RVFPLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_SAVE_RESTORE_LIBCALLS is not set +CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y +# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +CONFIG_COMPILER_RT_LIB_GCCLIB=y +CONFIG_COMPILER_RT_LIB_NAME="gcc" +CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y +# CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set +# CONFIG_COMPILER_STATIC_ANALYZER is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +CONFIG_BT_ENABLED=y +# CONFIG_BT_BLUEDROID_ENABLED is not set +CONFIG_BT_NIMBLE_ENABLED=y +# CONFIG_BT_CONTROLLER_ONLY is not set +CONFIG_BT_CONTROLLER_ENABLED=y +# CONFIG_BT_CONTROLLER_DISABLED is not set + +# +# NimBLE Options +# +CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y +# CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_NONE is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING is not set +CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y +# CONFIG_BT_NIMBLE_LOG_LEVEL_DEBUG is not set +CONFIG_BT_NIMBLE_LOG_LEVEL=1 +CONFIG_BT_NIMBLE_MAX_CONNECTIONS=3 +CONFIG_BT_NIMBLE_MAX_BONDS=3 +CONFIG_BT_NIMBLE_MAX_CCCDS=8 +CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0 +CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 +CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=4096 +CONFIG_BT_NIMBLE_ROLE_CENTRAL=y +CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y +CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y +CONFIG_BT_NIMBLE_ROLE_OBSERVER=y +CONFIG_BT_NIMBLE_GATT_CLIENT=y +CONFIG_BT_NIMBLE_GATT_SERVER=y +# CONFIG_BT_NIMBLE_NVS_PERSIST is not set +# CONFIG_BT_NIMBLE_SMP_ID_RESET is not set +CONFIG_BT_NIMBLE_SECURITY_ENABLE=y +CONFIG_BT_NIMBLE_SM_LEGACY=y +CONFIG_BT_NIMBLE_SM_SC=y +# CONFIG_BT_NIMBLE_SM_SC_DEBUG_KEYS is not set +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION=y +CONFIG_BT_NIMBLE_SM_LVL=0 +CONFIG_BT_NIMBLE_SM_SC_ONLY=0 +CONFIG_BT_NIMBLE_PRINT_ERR_NAME=y +# CONFIG_BT_NIMBLE_DEBUG is not set +# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set +CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" +CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256 +CONFIG_BT_NIMBLE_ATT_MAX_PREP_ENTRIES=64 +CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0 + +# +# Memory Settings +# +CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=24 +CONFIG_BT_NIMBLE_MSYS_1_BLOCK_SIZE=128 +CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT=24 +CONFIG_BT_NIMBLE_MSYS_2_BLOCK_SIZE=320 +CONFIG_BT_NIMBLE_MSYS_BUF_FROM_HEAP=y +CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=24 +CONFIG_BT_NIMBLE_TRANSPORT_ACL_SIZE=255 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=30 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT=8 +CONFIG_BT_NIMBLE_L2CAP_COC_SDU_BUFF_COUNT=1 +# end of Memory Settings + +CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4 +CONFIG_BT_NIMBLE_RPA_TIMEOUT=900 +# CONFIG_BT_NIMBLE_MESH is not set +CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y +CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000 +CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=y +CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT=3 +# CONFIG_BT_NIMBLE_HANDLE_REPEAT_PAIRING_DELETION is not set +CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_2M_PHY=y +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_CODED_PHY=y +# CONFIG_BT_NIMBLE_EXT_ADV is not set +CONFIG_BT_NIMBLE_EXT_SCAN=y +CONFIG_BT_NIMBLE_ENABLE_PERIODIC_SYNC=y +CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS=0 +CONFIG_BT_NIMBLE_MAX_PERIODIC_ADVERTISER_LIST=5 +# CONFIG_BT_NIMBLE_BLE_POWER_CONTROL is not set +# CONFIG_BT_NIMBLE_GATT_CACHING is not set +# CONFIG_BT_NIMBLE_INCL_SVC_DISCOVERY is not set +CONFIG_BT_NIMBLE_WHITELIST_SIZE=12 +# CONFIG_BT_NIMBLE_TEST_THROUGHPUT_TEST is not set +# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set +CONFIG_BT_NIMBLE_USE_ESP_TIMER=y +# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set + +# +# BLE Services +# +CONFIG_BT_NIMBLE_PROX_SERVICE=y +CONFIG_BT_NIMBLE_ANS_SERVICE=y +CONFIG_BT_NIMBLE_CTS_SERVICE=y +CONFIG_BT_NIMBLE_HTP_SERVICE=y +CONFIG_BT_NIMBLE_IPSS_SERVICE=y +CONFIG_BT_NIMBLE_TPS_SERVICE=y +CONFIG_BT_NIMBLE_IAS_SERVICE=y +CONFIG_BT_NIMBLE_LLS_SERVICE=y +CONFIG_BT_NIMBLE_SPS_SERVICE=y +CONFIG_BT_NIMBLE_HR_SERVICE=y +# CONFIG_BT_NIMBLE_HID_SERVICE is not set +CONFIG_BT_NIMBLE_BAS_SERVICE=y +# CONFIG_BT_NIMBLE_SVC_BAS_BATTERY_LEVEL_NOTIFY is not set +CONFIG_BT_NIMBLE_DIS_SERVICE=y +# CONFIG_BT_NIMBLE_SVC_DIS_MANUFACTURER_NAME is not set +# CONFIG_BT_NIMBLE_SVC_DIS_SERIAL_NUMBER is not set +# CONFIG_BT_NIMBLE_SVC_DIS_HARDWARE_REVISION is not set +# CONFIG_BT_NIMBLE_SVC_DIS_FIRMWARE_REVISION is not set +# CONFIG_BT_NIMBLE_SVC_DIS_SOFTWARE_REVISION is not set +# CONFIG_BT_NIMBLE_SVC_DIS_SYSTEM_ID is not set +# CONFIG_BT_NIMBLE_SVC_DIS_PNP_ID is not set +# CONFIG_BT_NIMBLE_SVC_DIS_INCLUDED is not set +CONFIG_BT_NIMBLE_GAP_SERVICE=y + +# +# GAP Appearance write permissions +# +# CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE is not set +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM=0 +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ENC=0 +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHN=0 +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHR=0 +# end of GAP Appearance write permissions + +CONFIG_BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP=y +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP is not set +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_SUPP is not set +CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 + +# +# GAP device name write permissions +# +# CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE is not set +# end of GAP device name write permissions + +# +# PPCP settings +# +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0 +# end of PPCP settings + +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM=0 +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC=0 +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN=0 +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR=0 +# CONFIG_BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL is not set +# CONFIG_BT_NIMBLE_SVC_GAP_RPA_ONLY is not set +# end of BLE Services + +# CONFIG_BT_NIMBLE_VS_SUPPORT is not set +# CONFIG_BT_NIMBLE_OPTIMIZE_MULTI_CONN is not set +# CONFIG_BT_NIMBLE_ENC_ADV_DATA is not set +# CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL is not set +# CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN is not set +# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set +# CONFIG_BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT is not set + +# +# Host-controller Transport +# +CONFIG_UART_HW_FLOWCTRL_DISABLE=y +# CONFIG_UART_HW_FLOWCTRL_CTS_RTS is not set +CONFIG_BT_NIMBLE_HCI_UART_FLOW_CTRL=0 +CONFIG_BT_NIMBLE_HCI_UART_RTS_PIN=19 +CONFIG_BT_NIMBLE_HCI_UART_CTS_PIN=23 +# end of Host-controller Transport + +CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0 +# CONFIG_BT_NIMBLE_SUBRATE is not set +# end of NimBLE Options + +# +# Controller Options +# + +# +# HCI Config +# +CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y +# CONFIG_BT_LE_HCI_INTERFACE_USE_UART is not set +# end of HCI Config + +CONFIG_BT_LE_CONTROLLER_NPL_OS_PORTING_SUPPORT=y +CONFIG_BT_LE_CONTROLLER_TASK_STACK_SIZE=4096 + +# +# Controller debug features +# +# CONFIG_BT_LE_CONTROLLER_LOG_ENABLED is not set +# CONFIG_BT_LE_ERROR_SIM_ENABLED is not set +# CONFIG_BT_LE_ASSERT_WHEN_ABNORMAL_DISCONN_ENABLED is not set +# CONFIG_BT_LE_DEBUG_REMAIN_SCENE_ENABLED is not set +# CONFIG_BT_LE_PTR_CHECK_ENABLED is not set +# end of Controller debug features + +CONFIG_BT_LE_LL_RESOLV_LIST_SIZE=4 +CONFIG_BT_LE_LL_DUP_SCAN_LIST_COUNT=20 +CONFIG_BT_LE_LL_SCA=60 +# CONFIG_BT_LE_LL_PEER_SCA_SET_ENABLE is not set +# CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EN is not set +CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_DIS=y +CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF=0 +# CONFIG_BT_LE_SLEEP_ENABLE is not set +CONFIG_BT_LE_LP_CLK_SRC_MAIN_XTAL=y +# CONFIG_BT_LE_LP_CLK_SRC_DEFAULT is not set +CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y +CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100 +CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 +CONFIG_BT_LE_SCAN_DUPL=y +CONFIG_BT_LE_SCAN_DUPL_TYPE_DEVICE=y +# CONFIG_BT_LE_SCAN_DUPL_TYPE_DATA is not set +# CONFIG_BT_LE_SCAN_DUPL_TYPE_DATA_DEVICE is not set +CONFIG_BT_LE_SCAN_DUPL_TYPE=0 +CONFIG_BT_LE_SCAN_DUPL_CACHE_REFRESH_PERIOD=0 +CONFIG_BT_LE_MSYS_INIT_IN_CONTROLLER=y +# CONFIG_BT_LE_TX_CCA_ENABLED is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N15 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N12 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N9 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N6 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N3 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N0 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P3 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P6 is not set +CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P9=y +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P12 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P15 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P18 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P20 is not set +CONFIG_BT_LE_DFT_TX_POWER_LEVEL_DBM_EFF=9 +# CONFIG_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS is not set +# CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY is not set + +# +# BLE disconnects when Instant Passed (0x28) occurs +# +# CONFIG_BT_LE_CTRL_LLCP_CONN_UPDATE is not set +# CONFIG_BT_LE_CTRL_LLCP_CHAN_MAP_UPDATE is not set +# CONFIG_BT_LE_CTRL_LLCP_PHY_UPDATE is not set +# end of BLE disconnects when Instant Passed (0x28) occurs + +CONFIG_BT_CTRL_SCAN_BACKOFF_UPPERLIMITMAX=32 +# CONFIG_BT_LE_CTRL_CHAN_ASS_EN is not set +CONFIG_BT_LE_CTRL_ADV_DATA_LENGTH_ZERO_AUX=y +CONFIG_BT_LE_RXBUF_OPT_ENABLED=y +CONFIG_BT_LE_CTRL_FAST_CONN_DATA_TX_EN=y +# end of Controller Options + +# +# Common Options +# +CONFIG_BT_ALARM_MAX_NUM=50 +# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set +# end of Common Options + +# CONFIG_BT_HCI_LOG_DEBUG_EN is not set +# end of Bluetooth + +# CONFIG_BLE_MESH is not set + +# +# Console Library +# +# CONFIG_CONSOLE_SORTED_HELP is not set +# end of Console Library + +# +# Driver Configurations +# + +# +# Legacy TWAI Driver Configurations +# +# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy TWAI Driver Configurations + +# +# Legacy ADC Driver Configuration +# +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set + +# +# Legacy ADC Calibration Configuration +# +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Driver Configuration + +# +# Legacy MCPWM Driver Configurations +# +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy MCPWM Driver Configurations + +# +# Legacy Timer Group Driver Configurations +# +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Timer Group Driver Configurations + +# +# Legacy RMT Driver Configurations +# +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy RMT Driver Configurations + +# +# Legacy I2S Driver Configurations +# +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2S Driver Configurations + +# +# Legacy I2C Driver Configurations +# +# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2C Driver Configurations + +# +# Legacy PCNT Driver Configurations +# +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy PCNT Driver Configurations + +# +# Legacy SDM Driver Configurations +# +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy SDM Driver Configurations + +# +# Legacy Temperature Sensor Driver Configurations +# +# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_TEMP_SENSOR_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Temperature Sensor Driver Configurations +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +CONFIG_EFUSE_MAX_BLK_LEN=256 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set +# CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set +# CONFIG_ADC_ENABLE_DEBUG_LOG is not set +# end of ADC and ADC Calibration + +# +# Wireless Coexistence +# +CONFIG_ESP_COEX_ENABLED=y +CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y +# CONFIG_ESP_COEX_POWER_MANAGEMENT is not set +# CONFIG_ESP_COEX_GPIO_DEBUG is not set +# end of Wireless Coexistence + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# ESP-Driver:GPIO Configurations +# +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:GPIO Configurations + +# +# ESP-Driver:GPTimer Configurations +# +CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_CACHE_SAFE is not set +CONFIG_GPTIMER_OBJ_CACHE_SAFE=y +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:GPTimer Configurations + +# +# ESP-Driver:I2C Configurations +# +# CONFIG_I2C_ISR_IRAM_SAFE is not set +# CONFIG_I2C_ENABLE_DEBUG_LOG is not set +# CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set +CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y +# end of ESP-Driver:I2C Configurations + +# +# ESP-Driver:I2S Configurations +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:I2S Configurations + +# +# ESP-Driver:LEDC Configurations +# +# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:LEDC Configurations + +# +# ESP-Driver:MCPWM Configurations +# +CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y +# CONFIG_MCPWM_ISR_CACHE_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +CONFIG_MCPWM_OBJ_CACHE_SAFE=y +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:MCPWM Configurations + +# +# ESP-Driver:Parallel IO Configurations +# +CONFIG_PARLIO_TX_ISR_HANDLER_IN_IRAM=y +CONFIG_PARLIO_RX_ISR_HANDLER_IN_IRAM=y +# CONFIG_PARLIO_TX_ISR_CACHE_SAFE is not set +# CONFIG_PARLIO_RX_ISR_CACHE_SAFE is not set +CONFIG_PARLIO_OBJ_CACHE_SAFE=y +# CONFIG_PARLIO_ENABLE_DEBUG_LOG is not set +# CONFIG_PARLIO_ISR_IRAM_SAFE is not set +# end of ESP-Driver:Parallel IO Configurations + +# +# ESP-Driver:PCNT Configurations +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:PCNT Configurations + +# +# ESP-Driver:RMT Configurations +# +CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y +CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y +CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y +# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# CONFIG_RMT_TX_ISR_CACHE_SAFE is not set +# CONFIG_RMT_RX_ISR_CACHE_SAFE is not set +CONFIG_RMT_OBJ_CACHE_SAFE=y +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# end of ESP-Driver:RMT Configurations + +# +# ESP-Driver:Sigma Delta Modulator Configurations +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Sigma Delta Modulator Configurations + +# +# ESP-Driver:SPI Configurations +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of ESP-Driver:SPI Configurations + +# +# ESP-Driver:Temperature Sensor Configurations +# +# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set +# CONFIG_TEMP_SENSOR_ISR_IRAM_SAFE is not set +# end of ESP-Driver:Temperature Sensor Configurations + +# +# ESP-Driver:TWAI Configurations +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# CONFIG_TWAI_ISR_CACHE_SAFE is not set +# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:TWAI Configurations + +# +# ESP-Driver:UART Configurations +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of ESP-Driver:UART Configurations + +# +# ESP-Driver:UHCI Configurations +# +# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set +# CONFIG_UHCI_ISR_CACHE_SAFE is not set +# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:UHCI Configurations + +# +# ESP-Driver:USB Serial/JTAG Configuration +# +CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y +# end of ESP-Driver:USB Serial/JTAG Configuration + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +CONFIG_ESP_GDBSTUB_ENABLED=y +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set +CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y +CONFIG_ESP_GDBSTUB_MAX_TASKS=32 +# end of GDB Stub + +# +# ESP HID +# +CONFIG_ESPHID_TASK_SIZE_BT=2048 +CONFIG_ESPHID_TASK_SIZE_BLE=4096 +# end of ESP HID + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set +CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000 +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000 +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000 +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000 +# CONFIG_ESP_HTTPS_SERVER_CERT_SELECT_HOOK is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# Chip revision +# +CONFIG_ESP32C6_REV_MIN_0=y +# CONFIG_ESP32C6_REV_MIN_1 is not set +# CONFIG_ESP32C6_REV_MIN_2 is not set +CONFIG_ESP32C6_REV_MIN_FULL=0 +CONFIG_ESP_REV_MIN_FULL=0 + +# +# Maximum Supported ESP32-C6 Revision (Rev v0.99) +# +CONFIG_ESP32C6_REV_MAX_FULL=99 +CONFIG_ESP_REV_MAX_FULL=99 +CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 +CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 + +# +# Maximum Supported ESP32-C6 eFuse Block Revision (eFuse Block Rev v0.99) +# +# end of Chip revision + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_IEEE802154=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y +CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=0 +# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set +# CONFIG_ESP_SLEEP_DEBUG is not set +CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_USE_DANGEROUS_RC32K_ALLOWED is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=y +CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=y +# end of Peripheral Control + +# +# ETM Configuration +# +# CONFIG_ETM_ENABLE_DEBUG_LOG is not set +# end of ETM Configuration + +# +# GDMA Configurations +# +CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y +CONFIG_GDMA_ISR_HANDLER_IN_IRAM=y +CONFIG_GDMA_OBJ_DRAM_SAFE=y +# CONFIG_GDMA_ENABLE_DEBUG_LOG is not set +# CONFIG_GDMA_ISR_IRAM_SAFE is not set +# end of GDMA Configurations + +# +# Main XTAL Config +# +CONFIG_XTAL_FREQ_40=y +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config + +# +# Power Supplier +# + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=7 +CONFIG_ESP_BROWNOUT_USE_INTR=y +# end of Brownout Detector +# end of Power Supplier + +CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y +CONFIG_ESP_INTR_IN_IRAM=y +# end of Hardware Settings + +# +# ESP-Driver:LCD Controller Configurations +# +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:LCD Controller Configurations + +# +# ESP-MM: Memory Management Configurations +# +# end of ESP-MM: Memory Management Configurations + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +# CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y +CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y +# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF is not set +# end of ESP NETIF Adapter + +# +# Partition API Configuration +# +# end of Partition API Configuration + +# +# PHY +# +CONFIG_ESP_PHY_ENABLED=y +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set +# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set +CONFIG_ESP_PHY_RF_CAL_PARTIAL=y +# CONFIG_ESP_PHY_RF_CAL_NONE is not set +# CONFIG_ESP_PHY_RF_CAL_FULL is not set +CONFIG_ESP_PHY_CALIBRATION_MODE=0 +# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set +# CONFIG_ESP_PHY_RECORD_USED_TIME is not set +CONFIG_ESP_PHY_IRAM_OPT=y +# end of PHY + +# +# Power Management +# +CONFIG_PM_SLEEP_FUNC_IN_IRAM=y +# CONFIG_PM_ENABLE is not set +CONFIG_PM_SLP_IRAM_OPT=y +CONFIG_PM_SLP_DEFAULT_PARAMS_OPT=y +CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y +# CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set +# end of Power Management + +# +# ESP PSRAM +# + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP-ROM +# +CONFIG_ESP_ROM_PRINT_IN_IRAM=y +# end of ESP-ROM + +# +# ESP Security Specific +# + +# +# Crypto DPA Protection +# +CONFIG_ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP=y +CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_LOW=y +# CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_MEDIUM is not set +# CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_HIGH is not set +CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL=1 +# end of Crypto DPA Protection +# end of ESP Security Specific + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_120 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 +CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE=y +CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y +CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y +CONFIG_ESP_SYSTEM_NO_BACKTRACE=y +# CONFIG_ESP_SYSTEM_USE_EH_FRAME is not set +# CONFIG_ESP_SYSTEM_USE_FRAME_POINTER is not set + +# +# Memory protection +# +CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT=y +# CONFIG_ESP_SYSTEM_PMP_LP_CORE_RESERVE_MEM_EXECUTABLE is not set +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set +CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y +CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_TASK_WDT_EN=y +CONFIG_ESP_TASK_WDT_INIT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +# CONFIG_ESP_DEBUG_INCLUDE_OCD_STUB_BINS is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y +CONFIG_ESP_SYSTEM_HW_STACK_GUARD=y +CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y +CONFIG_ESP_SYSTEM_HW_PC_RECORD=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +# end of IPC (Inter-Processor Call) + +# +# ESP Timer (High Resolution Timer) +# +CONFIG_ESP_TIMER_IN_IRAM=y +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set +CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 +CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y +CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_SYSTIMER=y +# end of ESP Timer (High Resolution Timer) + +# +# Wi-Fi +# +CONFIG_ESP_WIFI_ENABLED=y +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y +# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 +CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 +# CONFIG_ESP_WIFI_CSI_ENABLED is not set +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=6 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=6 +CONFIG_ESP_WIFI_NVS_ENABLED=y +CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP_WIFI_IRAM_OPT=y +CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP_WIFI_ENABLE_SAE_PK=y +CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y +CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y +CONFIG_ESP_WIFI_SLP_IRAM_OPT=y +CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 +CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT=y +CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 +CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 +# CONFIG_ESP_WIFI_FTM_ENABLE is not set +CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y +# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set +CONFIG_ESP_WIFI_GMAC_SUPPORT=y +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 +CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y +CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y +# CONFIG_ESP_WIFI_WAPI_PSK is not set +# CONFIG_ESP_WIFI_SUITE_B_192 is not set +# CONFIG_ESP_WIFI_11KV_SUPPORT is not set +# CONFIG_ESP_WIFI_MBO_SUPPORT is not set +# CONFIG_ESP_WIFI_DPP_SUPPORT is not set +# CONFIG_ESP_WIFI_11R_SUPPORT is not set +# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set +# CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS is not set +# CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS is not set +CONFIG_ESP_WIFI_TX_HETB_QUEUE_NUM=3 + +# +# WPS Configuration Options +# +# CONFIG_ESP_WIFI_WPS_STRICT is not set +# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set +# end of WPS Configuration Options + +# CONFIG_ESP_WIFI_DEBUG_PRINT is not set +# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y +# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +# CONFIG_FATFS_SECTOR_512 is not set +CONFIG_FATFS_SECTOR_4096=y +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +CONFIG_FATFS_USE_STRFUNC_NONE=y +# CONFIG_FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV is not set +# CONFIG_FATFS_USE_STRFUNC_WITH_CRLF_CONV is not set +CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 +# CONFIG_FATFS_IMMEDIATE_FSYNC is not set +# CONFIG_FATFS_USE_LABEL is not set +CONFIG_FATFS_LINK_LOCK=y +# CONFIG_FATFS_USE_DYN_BUFFERS is not set + +# +# File system free space calculation behavior +# +CONFIG_FATFS_DONT_TRUST_FREE_CLUSTER_CNT=0 +CONFIG_FATFS_DONT_TRUST_LAST_ALLOC=0 +# end of File system free space calculation behavior +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +CONFIG_FREERTOS_UNICORE=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set +CONFIG_FREERTOS_USE_TIMERS=y +CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set +CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y +CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y +# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y +CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y +# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set +CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +# end of Port + +# +# Extra +# +# end of Extra + +CONFIG_FREERTOS_PORT=y +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y +CONFIG_FREERTOS_NUMBER_OF_CORES=1 +CONFIG_FREERTOS_IN_IRAM=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +CONFIG_HAL_SYSTIMER_USE_ROM_IMPL=y +CONFIG_HAL_WDT_USE_ROM_IMPL=y +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_USE_HOOKS is not set +# CONFIG_HEAP_TASK_TRACKING is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +CONFIG_HEAP_TLSF_USE_ROM_IMPL=y +# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set +# end of Heap memory debugging + +# +# IEEE 802.15.4 +# +CONFIG_IEEE802154_ENABLED=y +CONFIG_IEEE802154_RX_BUFFER_SIZE=20 +# CONFIG_IEEE802154_CCA_CARRIER is not set +CONFIG_IEEE802154_CCA_ED=y +# CONFIG_IEEE802154_CCA_CARRIER_OR_ED is not set +# CONFIG_IEEE802154_CCA_CARRIER_AND_ED is not set +CONFIG_IEEE802154_CCA_MODE=1 +CONFIG_IEEE802154_CCA_THRESHOLD=-60 +CONFIG_IEEE802154_PENDING_TABLE_SIZE=20 +# CONFIG_IEEE802154_MULTI_PAN_ENABLE is not set +CONFIG_IEEE802154_TIMING_OPTIMIZATION=y +# CONFIG_IEEE802154_DEBUG is not set +# CONFIG_IEEE802154_DEBUG_ASSERT_MONITOR is not set +# end of IEEE 802.15.4 + +# +# Log +# +CONFIG_LOG_VERSION_1=y +# CONFIG_LOG_VERSION_2 is not set +CONFIG_LOG_VERSION=1 + +# +# Log Level +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +CONFIG_LOG_DEFAULT_LEVEL_ERROR=y +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +# CONFIG_LOG_DEFAULT_LEVEL_INFO is not set +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=1 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_WARN is not set +# CONFIG_LOG_MAXIMUM_LEVEL_INFO is not set +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=1 + +# +# Level Settings +# +# CONFIG_LOG_MASTER_LEVEL is not set +CONFIG_LOG_DYNAMIC_LEVEL_CONTROL=y +# CONFIG_LOG_TAG_LEVEL_IMPL_NONE is not set +# CONFIG_LOG_TAG_LEVEL_IMPL_LINKED_LIST is not set +CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST=y +# CONFIG_LOG_TAG_LEVEL_CACHE_ARRAY is not set +CONFIG_LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP=y +CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31 +# end of Level Settings +# end of Log Level + +# +# Format +# +# CONFIG_LOG_COLORS is not set +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Format + +# +# Settings +# +CONFIG_LOG_MODE_TEXT_EN=y +CONFIG_LOG_MODE_TEXT=y +# end of Settings + +CONFIG_LOG_IN_IRAM=y +# end of Log + +# +# LWIP +# +CONFIG_LWIP_ENABLE=y +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +CONFIG_LWIP_TCPIP_TASK_PRIO=18 +CONFIG_LWIP_TCPIP_CORE_LOCKING=y +# CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT is not set +CONFIG_LWIP_CHECK_THREAD_SAFETY=y +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_ND6=y +# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF=y +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP_DEFAULT_TTL=64 +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_ESP_MLDV6_REPORT=y +CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DOES_ACD_CHECK is not set +# CONFIG_LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 +CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y +CONFIG_LWIP_DHCPS_ADD_DNS=y +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV4=y +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760 +CONFIG_LWIP_TCP_WND_DEFAULT=5760 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6 +CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4 +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5 +CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3 +CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10 +# CONFIG_LWIP_PPP_SUPPORT is not set +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +CONFIG_LWIP_MULTICAST_PING=y +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +CONFIG_LWIP_SNTP_STARTUP_DELAY=y +CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000 +# end of SNTP + +# +# DNS +# +CONFIG_LWIP_DNS_MAX_HOST_IP=1 +CONFIG_LWIP_DNS_MAX_SERVERS=3 +# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set +# CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set +# CONFIG_LWIP_USE_ESP_GETADDRINFO is not set +# end of DNS + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set +CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_NONE=y +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT is not set +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_NONE is not set +CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +CONFIG_MBEDTLS_PKCS7_C=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +CONFIG_MBEDTLS_CMAC_C=y +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_AES_USE_INTERRUPT=y +CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0 +CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y +CONFIG_MBEDTLS_HARDWARE_MPI=y +CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI=y +CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y +CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0 +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_HARDWARE_ECC=y +CONFIG_MBEDTLS_ECC_OTHER_CURVES_SOFT_FALLBACK=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA1_C=y +CONFIG_MBEDTLS_SHA512_C=y +# CONFIG_MBEDTLS_SHA3_C is not set +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_PK_PARSE_EC_EXTENDED=y +CONFIG_MBEDTLS_PK_PARSE_EC_COMPRESSED=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +CONFIG_MBEDTLS_HKDF_C=y +# CONFIG_MBEDTLS_THREADING_C is not set +CONFIG_MBEDTLS_ERROR_STRINGS=y +CONFIG_MBEDTLS_FS_IO=y +# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# LibC +# +CONFIG_LIBC_NEWLIB=y +CONFIG_LIBC_MISC_IN_IRAM=y +CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=y +CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_LIBC_STDOUT_LINE_ENDING_LF is not set +# CONFIG_LIBC_STDOUT_LINE_ENDING_CR is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_LF is not set +CONFIG_LIBC_STDIN_LINE_ENDING_CR=y +# CONFIG_LIBC_NEWLIB_NANO_FORMAT is not set +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_LIBC_TIME_SYSCALL_USE_RTC is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_HRT is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set +# CONFIG_LIBC_OPTIMIZED_MISALIGNED_ACCESS is not set +# end of LibC + +# +# NVS +# +# CONFIG_NVS_ENCRYPTION is not set +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set +# end of NVS + +# +# OpenThread +# +CONFIG_OPENTHREAD_ENABLED=y + +# +# Thread Version Message +# +CONFIG_OPENTHREAD_PACKAGE_NAME="openthread-esp32" +CONFIG_OPENTHREAD_PLATFORM_INFO="esp32c6" +# end of Thread Version Message + +# +# Thread Console +# +CONFIG_OPENTHREAD_CONSOLE_TYPE_UART=y +# CONFIG_OPENTHREAD_CONSOLE_TYPE_USB_SERIAL_JTAG is not set +# CONFIG_OPENTHREAD_CLI is not set +# end of Thread Console + +# +# Thread Core Features +# + +# +# Thread Operational Dataset +# +CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP" +CONFIG_OPENTHREAD_MESH_LOCAL_PREFIX="fd00:db8:a0:0::/64" +CONFIG_OPENTHREAD_NETWORK_CHANNEL=15 +CONFIG_OPENTHREAD_NETWORK_PANID=0x1234 +CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe" +CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff" +CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53" +# end of Thread Operational Dataset + +CONFIG_OPENTHREAD_FTD=y +# CONFIG_OPENTHREAD_MTD is not set +# CONFIG_OPENTHREAD_RADIO is not set + +# +# Thread 15.4 Radio Link +# +CONFIG_OPENTHREAD_RADIO_NATIVE=y +# CONFIG_OPENTHREAD_RADIO_SPINEL_UART is not set +# CONFIG_OPENTHREAD_RADIO_SPINEL_SPI is not set +# CONFIG_OPENTHREAD_RADIO_154_NONE is not set +# end of Thread 15.4 Radio Link + +# CONFIG_OPENTHREAD_BORDER_ROUTER is not set +# CONFIG_OPENTHREAD_COMMISSIONER is not set +# CONFIG_OPENTHREAD_JOINER is not set +CONFIG_OPENTHREAD_SRP_CLIENT=y + +# +# SRP Client Configurations +# +CONFIG_OPENTHREAD_SRP_CLIENT_MAX_SERVICES=5 +# end of SRP Client Configurations + +CONFIG_OPENTHREAD_DNS_CLIENT=y +# CONFIG_OPENTHREAD_DNS64_CLIENT is not set +# CONFIG_OPENTHREAD_LINK_METRICS is not set +# CONFIG_OPENTHREAD_BORDER_AGENT_ENABLE is not set +# CONFIG_OPENTHREAD_MACFILTER_ENABLE is not set +# CONFIG_OPENTHREAD_CSL_ENABLE is not set + +# +# CSL Configurations +# +CONFIG_OPENTHREAD_CSL_ACCURACY=50 +CONFIG_OPENTHREAD_CSL_UNCERTAIN=0 +# CONFIG_OPENTHREAD_CSL_DEBUG_ENABLE is not set +# end of CSL Configurations + +# CONFIG_OPENTHREAD_TIME_SYNC is not set +# CONFIG_OPENTHREAD_RADIO_STATS_ENABLE is not set +# CONFIG_OPENTHREAD_RX_ON_WHEN_IDLE is not set +CONFIG_OPENTHREAD_DIAG=y + +# +# OpenThread Stack Parameters +# + +# +# Thread Address Query Config +# +CONFIG_OPENTHREAD_ADDRESS_QUERY_TIMEOUT=3 +CONFIG_OPENTHREAD_ADDRESS_QUERY_RETRY_DELAY=15 +CONFIG_OPENTHREAD_ADDRESS_QUERY_MAX_RETRY_DELAY=120 +# end of Thread Address Query Config + +CONFIG_OPENTHREAD_PREFERRED_CHANNEL_MASK=0x7fff800 +CONFIG_OPENTHREAD_SUPPORTED_CHANNEL_MASK=0x7fff800 +CONFIG_OPENTHREAD_NUM_MESSAGE_BUFFERS=65 +CONFIG_OPENTHREAD_XTAL_ACCURACY=10 +CONFIG_OPENTHREAD_BUS_LATENCY=4000 +CONFIG_OPENTHREAD_MLE_MAX_CHILDREN=10 +CONFIG_OPENTHREAD_TMF_ADDR_CACHE_ENTRIES=20 +CONFIG_OPENTHREAD_UART_BUFFER_SIZE=2048 +CONFIG_OPENTHREAD_MAC_MAX_CSMA_BACKOFFS_DIRECT=4 +# end of OpenThread Stack Parameters +# end of Thread Core Features + +# +# Thread Log +# +# CONFIG_OPENTHREAD_LOG_LEVEL_DYNAMIC is not set +# CONFIG_OPENTHREAD_LOG_LEVEL_NONE is not set +# CONFIG_OPENTHREAD_LOG_LEVEL_CRIT is not set +# CONFIG_OPENTHREAD_LOG_LEVEL_WARN is not set +CONFIG_OPENTHREAD_LOG_LEVEL_NOTE=y +# CONFIG_OPENTHREAD_LOG_LEVEL_INFO is not set +# CONFIG_OPENTHREAD_LOG_LEVEL_DEBG is not set +CONFIG_OPENTHREAD_LOG_LEVEL=3 +# end of Thread Log + +# +# Thread Extensioned Features +# +# CONFIG_OPENTHREAD_HEADER_CUSTOM is not set +# end of Thread Extensioned Features + +# +# OpenThread Spinel +# +# CONFIG_OPENTHREAD_SPINEL_ONLY is not set +CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE=2048 +# end of OpenThread Spinel +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +# +# Main Flash configuration +# + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Optional and Experimental Features (READ DOCS FIRST) +# + +# +# Features here require specific hardware (READ DOCS FIRST!) +# +# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set +CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 +# CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set +# CONFIG_SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND is not set +CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=y +# end of Optional and Experimental Features (READ DOCS FIRST) +# end of Main Flash configuration + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +# CONFIG_SPI_FLASH_ROM_IMPL is not set +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y +# CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_GD_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set + +# +# ULP Debugging Options +# +# end of ULP Debugging Options +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# CONFIG_UNITY_TEST_ORDER_BY_FILE_PATH_AND_LINE is not set +# end of Unity unit testing library + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +# CONFIG_VFS_SELECT_IN_RAM is not set +CONFIG_VFS_SUPPORT_TERMIOS=y +CONFIG_VFS_MAX_COUNT=8 + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) + +CONFIG_VFS_INITIALIZE_DEV_NULL=y +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +# CONFIG_WIFI_PROV_BLE_BONDING is not set +CONFIG_WIFI_PROV_BLE_SEC_CONN=y +# CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION is not set +# CONFIG_WIFI_PROV_BLE_NOTIFY is not set +# CONFIG_WIFI_PROV_KEEP_BLE_ON_AFTER_PROV is not set +CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y +# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set +# end of Wi-Fi Provisioning Manager + +# +# DSP Library +# +CONFIG_DSP_ANSI=y +CONFIG_DSP_OPTIMIZATION=0 +# CONFIG_DSP_MAX_FFT_SIZE_512 is not set +# CONFIG_DSP_MAX_FFT_SIZE_1024 is not set +# CONFIG_DSP_MAX_FFT_SIZE_2048 is not set +CONFIG_DSP_MAX_FFT_SIZE_4096=y +# CONFIG_DSP_MAX_FFT_SIZE_8192 is not set +# CONFIG_DSP_MAX_FFT_SIZE_16384 is not set +# CONFIG_DSP_MAX_FFT_SIZE_32768 is not set +CONFIG_DSP_MAX_FFT_SIZE=4096 +# end of DSP Library + +# +# Modbus configuration +# +CONFIG_FMB_COMM_MODE_TCP_EN=y +CONFIG_FMB_TCP_PORT_DEFAULT=502 +CONFIG_FMB_TCP_PORT_MAX_CONN=5 +CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20 +# CONFIG_FMB_TCP_UID_ENABLED is not set +CONFIG_FMB_COMM_MODE_RTU_EN=y +CONFIG_FMB_COMM_MODE_ASCII_EN=y +CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=3000 +CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 +CONFIG_FMB_QUEUE_LENGTH=20 +CONFIG_FMB_PORT_TASK_STACK_SIZE=4096 +CONFIG_FMB_SERIAL_BUF_SIZE=256 +CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8 +CONFIG_FMB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS=0 +CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000 +CONFIG_FMB_PORT_TASK_PRIO=10 +CONFIG_FMB_PORT_TASK_AFFINITY=0x7FFFFFFF +CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y +CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233 +CONFIG_FMB_CONTROLLER_SLAVE_ID_MAX_SIZE=32 +CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 +CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 +# CONFIG_FMB_TIMER_PORT_ENABLED is not set +# CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD is not set +# CONFIG_FMB_EXT_TYPE_SUPPORT is not set +# end of Modbus configuration + +# +# ESP serial flasher +# +CONFIG_SERIAL_FLASHER_MD5_ENABLED=y +CONFIG_SERIAL_FLASHER_RESET_HOLD_TIME_MS=100 +CONFIG_SERIAL_FLASHER_BOOT_HOLD_TIME_MS=50 +# end of ESP serial flasher + +# +# Zigbee +# +# CONFIG_ZB_ENABLED is not set +# end of Zigbee + +# +# Diagnostics data store +# +CONFIG_DIAG_DATA_STORE_RTC=y +# CONFIG_DIAG_DATA_STORE_FLASH is not set +# CONFIG_DIAG_DATA_STORE_DBG_PRINTS is not set +CONFIG_DIAG_DATA_STORE_REPORTING_WATERMARK_PERCENT=80 + +# +# RTC Store +# +CONFIG_RTC_STORE_DATA_SIZE=6144 +CONFIG_RTC_STORE_CRITICAL_DATA_SIZE=4096 +# end of RTC Store +# end of Diagnostics data store + +# +# Diagnostics +# +CONFIG_DIAG_LOG_MSG_ARG_FORMAT_TLV=y +# CONFIG_DIAG_LOG_MSG_ARG_FORMAT_STRING is not set +CONFIG_DIAG_LOG_MSG_ARG_MAX_SIZE=64 +CONFIG_DIAG_LOG_DROP_WIFI_LOGS=y +CONFIG_DIAG_ENABLE_METRICS=y +CONFIG_DIAG_METRICS_MAX_COUNT=20 +CONFIG_DIAG_ENABLE_HEAP_METRICS=y +CONFIG_DIAG_ENABLE_WIFI_METRICS=y +CONFIG_DIAG_ENABLE_VARIABLES=y +CONFIG_DIAG_VARIABLES_MAX_COUNT=20 +CONFIG_DIAG_ENABLE_NETWORK_VARIABLES=y +# CONFIG_DIAG_MORE_NETWORK_VARS is not set +# CONFIG_DIAG_USE_EXTERNAL_LOG_WRAP is not set +# end of Diagnostics + +# +# ESP Insights +# +# CONFIG_ESP_INSIGHTS_ENABLED is not set +# CONFIG_ESP_INSIGHTS_TRANSPORT_MQTT is not set +CONFIG_ESP_INSIGHTS_TRANSPORT_HTTPS=y +CONFIG_ESP_INSIGHTS_TRANSPORT_HTTPS_HOST="https://client.insights.espressif.com" +CONFIG_ESP_INSIGHTS_CLOUD_POST_MIN_INTERVAL_SEC=60 +CONFIG_ESP_INSIGHTS_CLOUD_POST_MAX_INTERVAL_SEC=240 +CONFIG_ESP_INSIGHTS_META_VERSION_10=y +# end of ESP Insights + +# +# CHIP Core +# + +# +# General Options +# +CONFIG_MAX_EXCHANGE_CONTEXTS=8 +CONFIG_MAX_BINDINGS=8 +CONFIG_MAX_FABRICS=5 +CONFIG_MAX_PEER_NODES=16 +CONFIG_MAX_UNSOLICITED_MESSAGE_HANDLERS=8 +# CONFIG_ENABLE_PW_RPC is not set +# CONFIG_USE_MINIMAL_MDNS is not set +# CONFIG_ENABLE_CHIP_SHELL is not set +# CONFIG_ENABLE_CHIP_CONTROLLER_BUILD is not set +# CONFIG_DISABLE_IPV4 is not set +# CONFIG_DISABLE_READ_CLIENT is not set +CONFIG_ENABLE_PERSIST_SUBSCRIPTIONS=y +# CONFIG_BUILD_CHIP_TESTS is not set +CONFIG_DISPATCH_EVENT_LONG_DISPATCH_TIME_WARNING_THRESHOLD_MS=700 +# CONFIG_CHIP_LOG_FILTERING is not set +CONFIG_ENABLE_CHIP_DATA_MODEL=y +# CONFIG_CHIP_SYSTEM_CONFIG_POOL_USE_HEAP is not set +CONFIG_MAX_GROUP_ENDPOINTS_PER_FABRIC=1 +CONFIG_MAX_GROUPS_PER_FABRIC_PER_ENDPOINT=4 +CONFIG_MAX_GROUP_KEYS_PER_FABRIC=3 +# end of General Options + +# +# Networking Options +# +CONFIG_NUM_TCP_ENDPOINTS=8 +CONFIG_NUM_UDP_ENDPOINTS=8 +CONFIG_MAX_CONNECTIONS=8 +CONFIG_DEFAULT_INCOMING_CONNECTION_IDLE_TIMEOUT=15000 +CONFIG_ENABLE_LWIP_THREAD_SAFETY=y +# end of Networking Options + +# +# System Options +# +CONFIG_NUM_TIMERS=32 +# CONFIG_ENABLE_OTA_REQUESTOR is not set +CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y +# CONFIG_ENABLE_SNTP_TIME_SYNC is not set +# end of System Options + +# +# Security Options +# + +# +# Debugging +# +# CONFIG_SECURITY_TEST_MODE is not set +# end of Debugging +# end of Security Options +# end of CHIP Core + +# +# CHIP Device Layer +# + +# +# General Options +# +CONFIG_CHIP_PROJECT_CONFIG="" +CONFIG_CHIP_TASK_STACK_SIZE=8192 +CONFIG_CHIP_TASK_PRIORITY=1 +CONFIG_MAX_EVENT_QUEUE_SIZE=40 +CONFIG_ENABLE_EXTENDED_DISCOVERY=y +# CONFIG_ENABLE_COMMISSIONABLE_DEVICE_TYPE is not set +# CONFIG_ENABLE_BG_EVENT_PROCESSING is not set +# end of General Options + +# +# Device Identification Options +# +CONFIG_DEVICE_VENDOR_ID=0xFFF1 +CONFIG_DEVICE_PRODUCT_ID=0x8000 +CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION=0 +CONFIG_DEVICE_SOFTWARE_VERSION_NUMBER=0 +CONFIG_DEVICE_TYPE=0 +# end of Device Identification Options + +# +# WiFi Station Options +# +# CONFIG_ENABLE_WIFI_STATION is not set +# end of WiFi Station Options + +# +# WiFi AP Options +# +# CONFIG_ENABLE_WIFI_AP is not set +# end of WiFi AP Options + +# +# BLE Options +# +CONFIG_ENABLE_CHIPOBLE=y +CONFIG_BLE_DEVICE_NAME_PREFIX="MATTER-" +CONFIG_BLE_FAST_ADVERTISING_INTERVAL_MIN=40 +CONFIG_BLE_FAST_ADVERTISING_INTERVAL_MAX=40 +CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MIN=800 +CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MAX=800 +CONFIG_CHIPOBLE_SINGLE_CONNECTION=y +CONFIG_CHIPOBLE_ENABLE_ADVERTISING_AUTOSTART=0 +# CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING is not set +# end of BLE Options + +# +# CHIP Thread Options +# +CONFIG_ENABLE_MATTER_OVER_THREAD=y +CONFIG_THREAD_TASK_STACK_SIZE=5120 +# end of CHIP Thread Options + +# +# Time Sync Options +# +CONFIG_ENABLE_SERVICE_DIRECTORY_TIME_SYNC=y +# CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC is not set +# end of Time Sync Options + +# +# Service Provisioning Options +# +CONFIG_SERVICE_PROVISIONING_ENDPOINT_ID=18B4300200000010 +CONFIG_SERVICE_PROVISIONING_CONNECTIVITY_TIMEOUT=10000 +CONFIG_SERVICE_PROVISIONING_REQUEST_TIMEOUT=10000 +# end of Service Provisioning Options + +# +# Commissioning options +# +CONFIG_RENDEZVOUS_WAIT_FOR_COMMISSIONING_COMPLETE=0 +# CONFIG_ENABLE_ROTATING_DEVICE_ID is not set +# CONFIG_ENABLE_ESP32_FACTORY_DATA_PROVIDER is not set +# CONFIG_SEC_CERT_DAC_PROVIDER is not set +# end of Commissioning options + +# +# Testing Options +# +CONFIG_USE_TEST_SERIAL_NUMBER="TEST_SN" +CONFIG_ENABLE_TEST_SETUP_PARAMS=y +CONFIG_TEST_EVENT_TRIGGER_ENABLED=y +CONFIG_TEST_EVENT_TRIGGER_ENABLE_KEY="00112233445566778899aabbccddeeff" +# CONFIG_ENABLE_FIXED_TUNNEL_SERVER is not set +# end of Testing Options + +# +# Network Telemetry Options +# +CONFIG_ENABLE_WIFI_TELEMETRY=y +# CONFIG_ENABLE_THREAD_TELEMETRY is not set +# CONFIG_ENABLE_THREAD_TELEMETRY_FULL is not set +# CONFIG_ENABLE_TUNNEL_TELEMETRY is not set +# CONFIG_ENABLE_ETHERNET_TELEMETRY is not set +# end of Network Telemetry Options + +# +# Event Logging Options +# +CONFIG_EVENT_LOGGING_CRIT_BUFFER_SIZE=4096 +CONFIG_EVENT_LOGGING_INFO_BUFFER_SIZE=1024 +CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE=1024 +CONFIG_CHIP_CONFIG_IM_PRETTY_PRINT=y +CONFIG_CHIP_LOG_DEFAULT_LEVEL_EQUALS_LOG_DEFAULT_LEVEL=y +# CONFIG_CHIP_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_CHIP_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_CHIP_LOG_DEFAULT_LEVEL_PROGRESS is not set +# CONFIG_CHIP_LOG_DEFAULT_LEVEL_DETAIL is not set +# CONFIG_CHIP_LOG_DEFAULT_LEVEL_AUTOMATION is not set +CONFIG_CHIP_LOG_DEFAULT_LEVEL=1 +# end of Event Logging Options + +# CONFIG_CHIP_ENABLE_BDX_LOG_TRANSFER is not set + +# +# Matter OTA Image +# +# CONFIG_CHIP_OTA_IMAGE_BUILD is not set +# end of Matter OTA Image + +# +# External Platform +# +# CONFIG_CHIP_ENABLE_EXTERNAL_PLATFORM is not set +# end of External Platform + +# +# Matter Manufacturing Options +# +CONFIG_CHIP_FACTORY_NAMESPACE_PARTITION_LABEL="nvs" +CONFIG_CHIP_CONFIG_NAMESPACE_PARTITION_LABEL="nvs" +CONFIG_CHIP_COUNTERS_NAMESPACE_PARTITION_LABEL="nvs" +CONFIG_CHIP_KVS_NAMESPACE_PARTITION_LABEL="nvs" +# end of Matter Manufacturing Options + +# +# Commissioning Window Options +# +CONFIG_CHIP_DISCOVERY_TIMEOUT_SECS=900 +# end of Commissioning Window Options + +# +# Enable ESP32 as a BLE Commissioner +# +# CONFIG_ENABLE_ESP32_BLE_CONTROLLER is not set +# end of Enable ESP32 as a BLE Commissioner + +# +# Enable BLE Extended Announcement +# +# CONFIG_ENABLE_BLE_EXT_ANNOUNCEMENT is not set +# end of Enable BLE Extended Announcement + +# +# Message Reliable Protocol Options +# +CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL_FOR_THREAD=800 +CONFIG_MRP_LOCAL_IDLE_RETRY_INTERVAL_FOR_THREAD=800 +CONFIG_MRP_RETRY_INTERVAL_SENDER_BOOST_FOR_THREAD=500 +CONFIG_MRP_MAX_RETRANS=4 +# end of Message Reliable Protocol Options + +# +# Network Commissioning Driver Endpoint Id +# +CONFIG_THREAD_NETWORK_COMMISSIONING_DRIVER=y +CONFIG_THREAD_NETWORK_ENDPOINT_ID=0 +# end of Network Commissioning Driver Endpoint Id + +# +# Cluster Configuration Options +# +# CONFIG_ENABLE_ACCESS_RESTRICTIONS is not set +# end of Cluster Configuration Options +# end of CHIP Device Layer + +# +# ESP Matter +# +CONFIG_ESP_MATTER_MAX_DEVICE_TYPE_COUNT=16 +CONFIG_ESP_MATTER_ATTRIBUTE_BUFFER_LARGEST=259 +CONFIG_ESP_MATTER_NVS_PART_NAME="nvs" +CONFIG_ESP_MATTER_DEFERRED_ATTR_PERSISTENCE_TIME_MS=3000 +CONFIG_EXAMPLE_DAC_PROVIDER=y +# CONFIG_CUSTOM_DAC_PROVIDER is not set +CONFIG_EXAMPLE_COMMISSIONABLE_DATA_PROVIDER=y +# CONFIG_CUSTOM_COMMISSIONABLE_DATA_PROVIDER is not set +CONFIG_EXAMPLE_DEVICE_INSTANCE_INFO_PROVIDER=y +# CONFIG_CUSTOM_DEVICE_INSTANCE_INFO_PROVIDER is not set +CONFIG_NONE_DEVICE_INFO_PROVIDER=y +# CONFIG_CUSTOM_DEVICE_INFO_PROVIDER is not set +CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT=16 +CONFIG_ESP_MATTER_MODE_SELECT_CLUSTER_ENDPOINT_COUNT=0 +CONFIG_ESP_MATTER_TEMPERATURE_CONTROL_CLUSTER_ENDPOINT_COUNT=0 +CONFIG_ESP_MATTER_SCENES_TABLE_SIZE=16 +CONFIG_ESP_MATTER_BINDING_TABLE_SIZE=10 +CONFIG_ESP_MATTER_UNICAST_MESSAGE_COUNT=10 +CONFIG_ESP_MATTER_MEM_ALLOC_MODE_INTERNAL=y +# CONFIG_ESP_MATTER_MEM_ALLOC_MODE_DEFAULT is not set +CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y +CONFIG_ESP_MATTER_ENABLE_MATTER_SERVER=y +CONFIG_ESP_MATTER_ENABLE_OPENTHREAD=y + +# +# Select Supported Matter Clusters +# +CONFIG_SUPPORT_ACCESS_CONTROL_CLUSTER=y +CONFIG_SUPPORT_ACCOUNT_LOGIN_CLUSTER=y +CONFIG_SUPPORT_ACTIVATED_CARBON_FILTER_MONITORING_CLUSTER=y +CONFIG_SUPPORT_ADMINISTRATOR_COMMISSIONING_CLUSTER=y +CONFIG_SUPPORT_AIR_QUALITY_CLUSTER=y +CONFIG_SUPPORT_APPLICATION_BASIC_CLUSTER=y +CONFIG_SUPPORT_APPLICATION_LAUNCHER_CLUSTER=y +CONFIG_SUPPORT_AUDIO_OUTPUT_CLUSTER=y +CONFIG_SUPPORT_BASIC_INFORMATION_CLUSTER=y +CONFIG_SUPPORT_BINDING_CLUSTER=y +CONFIG_SUPPORT_BOOLEAN_STATE_CONFIGURATION_CLUSTER=y +CONFIG_SUPPORT_BRIDGED_DEVICE_BASIC_INFORMATION_CLUSTER=y +CONFIG_SUPPORT_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_CHANNEL_CLUSTER=y +CONFIG_SUPPORT_COLOR_CONTROL_CLUSTER=y +CONFIG_SUPPORT_COMMISSIONER_CONTROL_CLUSTER=y +CONFIG_SUPPORT_CONTENT_LAUNCHER_CLUSTER=y +CONFIG_SUPPORT_CONTENT_CONTROL_CLUSTER=y +CONFIG_SUPPORT_CONTENT_APP_OBSERVER_CLUSTER=y +CONFIG_SUPPORT_DESCRIPTOR_CLUSTER=y +CONFIG_SUPPORT_DEVICE_ENERGY_MANAGEMENT_CLUSTER=y +CONFIG_SUPPORT_DEVICE_ENERGY_MANAGEMENT_MODE_CLUSTER=y +CONFIG_SUPPORT_DIAGNOSTIC_LOGS_CLUSTER=y +CONFIG_SUPPORT_DISHWASHER_ALARM_CLUSTER=y +CONFIG_SUPPORT_DISHWASHER_MODE_CLUSTER=y +CONFIG_SUPPORT_MICROWAVE_OVEN_MODE_CLUSTER=y +CONFIG_SUPPORT_DOOR_LOCK_CLUSTER=y +CONFIG_SUPPORT_ECOSYSTEM_INFORMATION_CLUSTER=y +CONFIG_SUPPORT_ELECTRICAL_ENERGY_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_ELECTRICAL_POWER_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_ENERGY_EVSE_CLUSTER=y +CONFIG_SUPPORT_ENERGY_EVSE_MODE_CLUSTER=y +CONFIG_SUPPORT_ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER=y +CONFIG_SUPPORT_ENERGY_PREFERENCE_CLUSTER=y +CONFIG_SUPPORT_FAN_CONTROL_CLUSTER=y +CONFIG_SUPPORT_FAULT_INJECTION_CLUSTER=y +CONFIG_SUPPORT_FIXED_LABEL_CLUSTER=y +CONFIG_SUPPORT_FORMALDEHYDE_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_GENERAL_COMMISSIONING_CLUSTER=y +CONFIG_SUPPORT_GENERAL_DIAGNOSTICS_CLUSTER=y +CONFIG_SUPPORT_GROUPS_CLUSTER=y +CONFIG_SUPPORT_HEPA_FILTER_MONITORING_CLUSTER=y +CONFIG_SUPPORT_GROUP_KEY_MANAGEMENT_CLUSTER=y +CONFIG_SUPPORT_ICD_MANAGEMENT_CLUSTER=y +CONFIG_SUPPORT_IDENTIFY_CLUSTER=y +CONFIG_SUPPORT_KEYPAD_INPUT_CLUSTER=y +CONFIG_SUPPORT_LAUNDRY_WASHER_MODE_CLUSTER=y +CONFIG_SUPPORT_LEVEL_CONTROL_CLUSTER=y +CONFIG_SUPPORT_LOCALIZATION_CONFIGURATION_CLUSTER=y +CONFIG_SUPPORT_LOW_POWER_CLUSTER=y +CONFIG_SUPPORT_MEDIA_INPUT_CLUSTER=y +CONFIG_SUPPORT_MEDIA_PLAYBACK_CLUSTER=y +CONFIG_SUPPORT_MICROWAVE_OVEN_CONTROL_CLUSTER=y +CONFIG_SUPPORT_MESSAGES_CLUSTER=y +CONFIG_SUPPORT_MODE_SELECT_CLUSTER=y +CONFIG_SUPPORT_NETWORK_COMMISSIONING_CLUSTER=y +CONFIG_SUPPORT_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_SAMPLE_MEI_CLUSTER=y +CONFIG_SUPPORT_OCCUPANCY_SENSING_CLUSTER=y +CONFIG_SUPPORT_ON_OFF_CLUSTER=y +CONFIG_SUPPORT_POWER_TOPOLOGY_CLUSTER=y +CONFIG_SUPPORT_OPERATIONAL_CREDENTIALS_CLUSTER=y +CONFIG_SUPPORT_OPERATIONAL_STATE_CLUSTER=y +CONFIG_SUPPORT_OPERATIONAL_STATE_OVEN_CLUSTER=y +CONFIG_SUPPORT_OPERATIONAL_STATE_RVC_CLUSTER=y +CONFIG_SUPPORT_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER=y +CONFIG_SUPPORT_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER=y +CONFIG_SUPPORT_OVEN_MODE_CLUSTER=y +CONFIG_SUPPORT_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_PM10_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_PM1_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_PM2_5_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_POWER_SOURCE_CLUSTER=y +CONFIG_SUPPORT_POWER_SOURCE_CONFIGURATION_CLUSTER=y +CONFIG_SUPPORT_PUMP_CONFIGURATION_AND_CONTROL_CLUSTER=y +CONFIG_SUPPORT_RADON_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_REFRIGERATOR_ALARM_CLUSTER=y +CONFIG_SUPPORT_REFRIGERATOR_AND_TEMPERATURE_CONTROLLED_CABINET_MODE_CLUSTER=y +CONFIG_SUPPORT_RVC_CLEAN_MODE_CLUSTER=y +CONFIG_SUPPORT_RVC_RUN_MODE_CLUSTER=y +CONFIG_SUPPORT_SCENES_CLUSTER=y +CONFIG_SUPPORT_SERVICE_AREA_CLUSTER=y +CONFIG_SUPPORT_SMOKE_CO_ALARM_CLUSTER=y +CONFIG_SUPPORT_SOFTWARE_DIAGNOSTICS_CLUSTER=y +CONFIG_SUPPORT_SWITCH_CLUSTER=y +CONFIG_SUPPORT_TARGET_NAVIGATOR_CLUSTER=y +CONFIG_SUPPORT_TEMPERATURE_CONTROL_CLUSTER=y +CONFIG_SUPPORT_THERMOSTAT_CLUSTER=y +CONFIG_SUPPORT_THERMOSTAT_USER_INTERFACE_CONFIGURATION_CLUSTER=y +CONFIG_SUPPORT_THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER=y +CONFIG_SUPPORT_THREAD_NETWORK_DIAGNOSTICS_CLUSTER=y +CONFIG_SUPPORT_THREAD_NETWORK_DIRECTORY_CLUSTER=y +CONFIG_SUPPORT_TIME_FORMAT_LOCALIZATION_CLUSTER=y +CONFIG_SUPPORT_TIME_SYNCHRONIZATION_CLUSTER=y +CONFIG_SUPPORT_TIMER_CLUSTER=y +CONFIG_SUPPORT_TVOC_CONCENTRATION_MEASUREMENT_CLUSTER=y +CONFIG_SUPPORT_UNIT_TESTING_CLUSTER=y +CONFIG_SUPPORT_USER_LABEL_CLUSTER=y +CONFIG_SUPPORT_VALVE_CONFIGURATION_AND_CONTROL_CLUSTER=y +CONFIG_SUPPORT_WAKE_ON_LAN_CLUSTER=y +CONFIG_SUPPORT_LAUNDRY_WASHER_CONTROLS_CLUSTER=y +CONFIG_SUPPORT_LAUNDRY_DRYER_CONTROLS_CLUSTER=y +CONFIG_SUPPORT_WIFI_NETWORK_DIAGNOSTICS_CLUSTER=y +CONFIG_SUPPORT_WIFI_NETWORK_MANAGEMENT_CLUSTER=y +CONFIG_SUPPORT_WINDOW_COVERING_CLUSTER=y +CONFIG_SUPPORT_WATER_HEATER_MANAGEMENT_CLUSTER=y +CONFIG_SUPPORT_WATER_HEATER_MODE_CLUSTER=y +# end of Select Supported Matter Clusters +# end of ESP Matter + +# +# ESP Matter Bridge +# +CONFIG_ESP_MATTER_AGGREGATOR_ENDPOINT_COUNT=1 +CONFIG_ESP_MATTER_BRIDGE_INFO_PART_NAME="nvs" +# end of ESP Matter Bridge + +# +# ESP Matter Console +# +CONFIG_ESP_MATTER_CONSOLE_TASK_STACK=2048 +CONFIG_ESP_MATTER_CONSOLE_MAX_COMMANDS=10 +# end of ESP Matter Console + +# +# ESP Matter Controller +# +# CONFIG_ESP_MATTER_CONTROLLER_ENABLE is not set +# end of ESP Matter Controller + +# +# ESP Matter OTA Provider +# +# CONFIG_ESP_MATTER_OTA_PROVIDER_ENABLED is not set +# end of ESP Matter OTA Provider + +# +# esp-modem +# +CONFIG_ESP_MODEM_CMUX_DEFRAGMENT_PAYLOAD=y +# CONFIG_ESP_MODEM_USE_INFLATABLE_BUFFER_IF_NEEDED is not set +CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_DLCI_SETUP=0 +# CONFIG_ESP_MODEM_CMUX_USE_SHORT_PAYLOADS_ONLY is not set +# CONFIG_ESP_MODEM_ADD_CUSTOM_MODULE is not set +CONFIG_ESP_MODEM_C_API_STR_MAX=128 +# CONFIG_ESP_MODEM_URC_HANDLER is not set +# CONFIG_ESP_MODEM_PPP_ESCAPE_BEFORE_EXIT is not set +# CONFIG_ESP_MODEM_ADD_DEBUG_LOGS is not set +# end of esp-modem + +# +# OpenThread RCP Update +# +# CONFIG_AUTO_UPDATE_RCP is not set +# CONFIG_CREATE_OTA_IMAGE_WITH_RCP_FW is not set +# end of OpenThread RCP Update + +# +# ESP Secure Cert Manager +# +CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=y +# CONFIG_ESP_SECURE_CERT_SUPPORT_LEGACY_FORMATS is not set +# end of ESP Secure Cert Manager + +# +# jsmn +# +# CONFIG_JSMN_PARENT_LINKS is not set +# CONFIG_JSMN_STRICT is not set +# CONFIG_JSMN_STATIC is not set +# end of jsmn + +# +# libsodium +# +# end of libsodium + +# +# mDNS +# +CONFIG_MDNS_MAX_INTERFACES=3 +CONFIG_MDNS_MAX_SERVICES=10 +CONFIG_MDNS_TASK_PRIORITY=1 +CONFIG_MDNS_ACTION_QUEUE_LEN=16 +CONFIG_MDNS_TASK_STACK_SIZE=4096 +# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_MDNS_TASK_AFFINITY_CPU0=y +CONFIG_MDNS_TASK_AFFINITY=0x0 + +# +# MDNS Memory Configuration +# +CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y +CONFIG_MDNS_MEMORY_ALLOC_INTERNAL=y +# CONFIG_MDNS_MEMORY_CUSTOM_IMPL is not set +# end of MDNS Memory Configuration + +CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 +CONFIG_MDNS_TIMER_PERIOD_MS=100 +# CONFIG_MDNS_NETWORKING_SOCKET is not set +# CONFIG_MDNS_SKIP_SUPPRESSING_OWN_QUERIES is not set +# CONFIG_MDNS_ENABLE_DEBUG_PRINTS is not set +CONFIG_MDNS_ENABLE_CONSOLE_CLI=y +# CONFIG_MDNS_RESPOND_REVERSE_QUERIES is not set +CONFIG_MDNS_MULTIPLE_INSTANCE=y + +# +# MDNS Predefined interfaces +# +CONFIG_MDNS_PREDEF_NETIF_STA=y +CONFIG_MDNS_PREDEF_NETIF_AP=y +CONFIG_MDNS_PREDEF_NETIF_ETH=y +# end of MDNS Predefined interfaces +# end of mDNS + +# +# Network Provisioning Manager +# +CONFIG_NETWORK_PROV_NETWORK_TYPE_WIFI=y +# CONFIG_NETWORK_PROV_NETWORK_TYPE_THREAD is not set +CONFIG_NETWORK_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_NETWORK_PROV_AUTOSTOP_TIMEOUT=30 +# CONFIG_NETWORK_PROV_BLE_BONDING is not set +CONFIG_NETWORK_PROV_BLE_SEC_CONN=y +# CONFIG_NETWORK_PROV_BLE_FORCE_ENCRYPTION is not set +# CONFIG_NETWORK_PROV_KEEP_BLE_ON_AFTER_PROV is not set +CONFIG_NETWORK_PROV_WIFI_STA_ALL_CHANNEL_SCAN=y +# CONFIG_NETWORK_PROV_WIFI_STA_FAST_SCAN is not set +# end of Network Provisioning Manager + +# +# ESP RainMaker Common +# +CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y +# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set +CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1 +CONFIG_ESP_RMAKER_MQTT_PORT_443=y +# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set +CONFIG_ESP_RMAKER_MQTT_PORT=1 +# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set +CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y +CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0" +CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00" +CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y +CONFIG_ESP_RMAKER_MAX_MQTT_SUBSCRIPTIONS=10 +CONFIG_ESP_RMAKER_MQTT_KEEP_ALIVE_INTERVAL=120 +CONFIG_ESP_RMAKER_NETWORK_OVER_WIFI=y +# CONFIG_ESP_RMAKER_NETWORK_OVER_THREAD is not set +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096 +CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5 +CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry" +CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds" +CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai" +CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org" +CONFIG_ESP_RMAKER_MAX_COMMANDS=10 +# end of ESP RainMaker Common + +# +# LittleFS +# +# CONFIG_LITTLEFS_SDMMC_SUPPORT is not set +CONFIG_LITTLEFS_MAX_PARTITIONS=3 +CONFIG_LITTLEFS_PAGE_SIZE=256 +CONFIG_LITTLEFS_OBJ_NAME_LEN=64 +CONFIG_LITTLEFS_READ_SIZE=128 +CONFIG_LITTLEFS_WRITE_SIZE=128 +CONFIG_LITTLEFS_LOOKAHEAD_SIZE=128 +CONFIG_LITTLEFS_CACHE_SIZE=512 +CONFIG_LITTLEFS_BLOCK_CYCLES=512 +CONFIG_LITTLEFS_USE_MTIME=y +# CONFIG_LITTLEFS_USE_ONLY_HASH is not set +# CONFIG_LITTLEFS_HUMAN_READABLE is not set +CONFIG_LITTLEFS_MTIME_USE_SECONDS=y +# CONFIG_LITTLEFS_MTIME_USE_NONCE is not set +# CONFIG_LITTLEFS_SPIFFS_COMPAT is not set +# CONFIG_LITTLEFS_FLUSH_FILE_EVERY_WRITE is not set +# CONFIG_LITTLEFS_FCNTL_GET_PATH is not set +# CONFIG_LITTLEFS_MULTIVERSION is not set +# CONFIG_LITTLEFS_MALLOC_STRATEGY_DISABLE is not set +CONFIG_LITTLEFS_MALLOC_STRATEGY_DEFAULT=y +# CONFIG_LITTLEFS_MALLOC_STRATEGY_INTERNAL is not set +CONFIG_LITTLEFS_ASSERTS=y +# CONFIG_LITTLEFS_MMAP_PARTITION is not set +# end of LittleFS +# end of Component config + +# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set + +# Deprecated options for backward compatibility +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +# CONFIG_NO_BLOBS is not set +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR=y +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_INFO is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=1 +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +CONFIG_FLASHMODE_QIO=y +# CONFIG_FLASHMODE_QOUT is not set +# CONFIG_FLASHMODE_DIO is not set +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +# CONFIG_ESP_RMAKER_LOCAL_CTRL_ENABLE is not set +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +# CONFIG_BLUEDROID_ENABLED is not set +CONFIG_NIMBLE_ENABLED=y +CONFIG_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y +# CONFIG_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set +CONFIG_NIMBLE_MAX_CONNECTIONS=3 +CONFIG_NIMBLE_MAX_BONDS=3 +CONFIG_NIMBLE_MAX_CCCDS=8 +CONFIG_NIMBLE_L2CAP_COC_MAX_NUM=0 +CONFIG_NIMBLE_PINNED_TO_CORE=0 +CONFIG_NIMBLE_TASK_STACK_SIZE=4096 +CONFIG_BT_NIMBLE_TASK_STACK_SIZE=4096 +CONFIG_NIMBLE_ROLE_CENTRAL=y +CONFIG_NIMBLE_ROLE_PERIPHERAL=y +CONFIG_NIMBLE_ROLE_BROADCASTER=y +CONFIG_NIMBLE_ROLE_OBSERVER=y +# CONFIG_NIMBLE_NVS_PERSIST is not set +CONFIG_NIMBLE_SM_LEGACY=y +CONFIG_NIMBLE_SM_SC=y +# CONFIG_NIMBLE_SM_SC_DEBUG_KEYS is not set +CONFIG_BT_NIMBLE_SM_SC_LVL=0 +# CONFIG_NIMBLE_DEBUG is not set +CONFIG_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" +CONFIG_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_NIMBLE_ATT_PREFERRED_MTU=256 +CONFIG_NIMBLE_SVC_GAP_APPEARANCE=0 +CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=24 +CONFIG_BT_NIMBLE_ACL_BUF_COUNT=24 +CONFIG_BT_NIMBLE_ACL_BUF_SIZE=255 +CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 +CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT=30 +CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT=8 +CONFIG_NIMBLE_RPA_TIMEOUT=900 +# CONFIG_NIMBLE_MESH is not set +CONFIG_NIMBLE_CRYPTO_STACK_MBEDTLS=y +# CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EN is not set +CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_DIS=y +CONFIG_SW_COEXIST_ENABLE=y +CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=y +CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +CONFIG_GDBSTUB_SUPPORT_TASKS=y +CONFIG_GDBSTUB_MAX_TASKS=32 +# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_7=y +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +CONFIG_BROWNOUT_DET_LVL=7 +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +# CONFIG_REDUCE_PHY_TX_POWER is not set +# CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set +CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_TASK_WDT=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5760 +CONFIG_TCP_WND_DEFAULT=5760 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=3000 +CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y +CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233 +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +# CONFIG_MB_TIMER_PORT_ENABLED is not set +# End of deprecated options diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig.defaults b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig.defaults new file mode 100644 index 00000000000..0e8cd3e45a9 --- /dev/null +++ b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig.defaults @@ -0,0 +1,70 @@ +CONFIG_IDF_TARGET="esp32c6" + +# Arduino ESP32 settings +CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y +CONFIG_AUTOSTART_ARDUINO=y +CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LOG_DEFAULT_LEVEL_ERROR=y + +# Enables Arduino Selective Library Compilation: Arduino Matter + Preferences Library +CONFIG_ARDUINO_SELECTIVE_COMPILATION=y +CONFIG_ARDUINO_SELECTIVE_Preferences=y +CONFIG_ARDUINO_SELECTIVE_Network=y +CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y +CONFIG_ARDUINO_SELECTIVE_Matter=y + +# Flash Confinguration +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y +CONFIG_ESPTOOLPY_FLASHFREQ="80m" +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" +CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 + +# libsodium +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# NIMBLE +CONFIG_BT_ENABLED=y +CONFIG_BT_NIMBLE_ENABLED=y +CONFIG_BT_NIMBLE_EXT_ADV=n +CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 +CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n + +# Enable OpenThread +CONFIG_OPENTHREAD_ENABLED=y +CONFIG_OPENTHREAD_SRP_CLIENT=y +CONFIG_OPENTHREAD_DNS_CLIENT=y +CONFIG_OPENTHREAD_LOG_LEVEL_DYNAMIC=n +CONFIG_OPENTHREAD_LOG_LEVEL_NOTE=y +CONFIG_OPENTHREAD_CLI=n + +# Disable lwip ipv6 autoconfig +CONFIG_LWIP_IPV6_AUTOCONFIG=n + +# Use a custom partition table +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" + +# LwIP config for OpenThread +CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 +CONFIG_LWIP_MULTICAST_PING=y + +# MDNS platform +CONFIG_USE_MINIMAL_MDNS=n +CONFIG_ENABLE_EXTENDED_DISCOVERY=y + +# Disable STA and AP for ESP32C6 ==> no Wifi, thread only +CONFIG_ENABLE_WIFI_STATION=n +CONFIG_ENABLE_WIFI_AP=n + +# Enable HKDF in mbedtls +CONFIG_MBEDTLS_HKDF_C=y From a98dad75ff23d71a5b0b9d843f909c5a42a5a43c Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Tue, 4 Nov 2025 04:14:23 -0300 Subject: [PATCH 21/31] fix(matter): roll back commit - create a PR fot it --- .../CMakeLists.txt | 19 - .../README.md | 25 - .../main/CMakeLists.txt | 4 - .../main/MatterEnhancedColorLight.cpp | 215 - .../main/idf_component.yml | 6 - .../partitions.csv | 10 - .../sdkconfig | 3619 ----------------- .../sdkconfig.defaults | 70 - 8 files changed, 3968 deletions(-) delete mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/CMakeLists.txt delete mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/README.md delete mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/CMakeLists.txt delete mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/MatterEnhancedColorLight.cpp delete mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/idf_component.yml delete mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/partitions.csv delete mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig delete mode 100644 idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig.defaults diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/CMakeLists.txt b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/CMakeLists.txt deleted file mode 100644 index 805e7096d73..00000000000 --- a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -# The following lines of boilerplate have to be in your project's -# CMakeLists in this exact order for cmake to work correctly -cmake_minimum_required(VERSION 3.5) - -include($ENV{IDF_PATH}/tools/cmake/project.cmake) - -#target_compile_options(espressif__esp_matter PUBLIC -# -DCHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER= -# -DCHIP_HAVE_CONFIG_H) -#list(APPEND compile_definitions "CHIP_HAVE_CONFIG_H=1") -#list(APPEND compile_definitions "CHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER=") - -project(Matter_C6_Thread_Light) - -idf_build_set_property(CXX_COMPILE_OPTIONS "-std=gnu++2a;-Os;-DCHIP_HAVE_CONFIG_H" APPEND) -idf_build_set_property(C_COMPILE_OPTIONS "-Os" APPEND) -# For RISCV chips, project_include.cmake sets -Wno-format, but does not clear various -# flags that depend on -Wformat -idf_build_set_property(COMPILE_OPTIONS "-Wno-format-nonliteral;-Wno-format-security" APPEND) diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/README.md b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/README.md deleted file mode 100644 index cf653d5a3aa..00000000000 --- a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Arduino ESP-Matter over Thread example using ESP32-C6 -This is an Arduino as IDF Project to build an ESP-Matter over Thread RGB Light using ESP32-C6 and ESP-Matter Arduino API \ -The example requires IDF 5.5.0 and ESP32 Arduino Core 3.0.0 - -# Instructions: - -1- Install IDF 5.5.0 into your computer. It can be done following the guide in -https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/index.html - -For Windows: https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/index.html \ -For Linux or MacOS: https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/linux-macos-setup.html - -2- Test IDF with `idf.py --version` to check if it is installed and configured correctly. -image - -3- Clone the repository with the Arduino as IDF Component project. -`git clone https://github.com/SuGlider/Arduino_ESP-Matter-over-Thread_ESP32-C6` - -4- Open an IDF terminal and execute `idf.py set-target esp32c6` - -5- Execute `idf.py -p flash monitor` - -6- It will build, upload and show the UART0 output in the screen. - -7- Try to add the Matter RGB light to your Matter environment. diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/CMakeLists.txt b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/CMakeLists.txt deleted file mode 100644 index 47ac4b98794..00000000000 --- a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -idf_component_register( - SRCS "MatterEnhancedColorLight.cpp" - INCLUDE_DIRS "" -) diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/MatterEnhancedColorLight.cpp b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/MatterEnhancedColorLight.cpp deleted file mode 100644 index ac22ae768c5..00000000000 --- a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/MatterEnhancedColorLight.cpp +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright 2025 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Matter Manager -#include -#if !CONFIG_ENABLE_CHIPOBLE -// if the device can be commissioned using BLE, WiFi is not used - save flash space -#include -#endif -#include - -// List of Matter Endpoints for this Node -// Color Light Endpoint -MatterEnhancedColorLight EnhancedColorLight; - -// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network -#if !CONFIG_ENABLE_CHIPOBLE -// WiFi is manually set and started -const char *ssid = "your-ssid"; // Change this to your WiFi SSID -const char *password = "your-password"; // Change this to your WiFi password -#endif - -// It will use HSV color to control all Matter Attribute Changes -HsvColor_t currentHSVColor = {0, 0, 0}; - -// it will keep last OnOff & HSV Color state stored, using Preferences -Preferences matterPref; -const char *onOffPrefKey = "OnOff"; -const char *hsvColorPrefKey = "HSV"; - -// set your board RGB LED pin here -#ifdef RGB_BUILTIN -const uint8_t ledPin = RGB_BUILTIN; -#else -const uint8_t ledPin = 2; // Set your pin here if your board has not defined LED_BUILTIN -#warning "Do not forget to set the RGB LED pin" -#endif - -// set your board USER BUTTON pin here -const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button. - -// Button control -uint32_t button_time_stamp = 0; // debouncing control -bool button_state = false; // false = released | true = pressed -const uint32_t debouceTime = 250; // button debouncing time (ms) -const uint32_t decommissioningTimeout = 5000; // keep the button pressed for 5s, or longer, to decommission - -// Set the RGB LED Light based on the current state of the Enhanced Color Light -bool setLightState(bool state, espHsvColor_t colorHSV, uint8_t brighteness, uint16_t temperature_Mireds) { - - if (state) { -#ifdef RGB_BUILTIN - // currentHSVColor keeps final color result - espRgbColor_t rgbColor = espHsvColorToRgbColor(currentHSVColor); - // set the RGB LED - rgbLedWrite(ledPin, rgbColor.r, rgbColor.g, rgbColor.b); -#else - // No Color RGB LED, just use the HSV value (brightness) to control the LED - analogWrite(ledPin, colorHSV.v); -#endif - } else { -#ifndef RGB_BUILTIN - // after analogWrite(), it is necessary to set the GPIO to digital mode first - pinMode(ledPin, OUTPUT); -#endif - digitalWrite(ledPin, LOW); - } - // store last HSV Color and OnOff state for when the Light is restarted / power goes off - matterPref.putBool(onOffPrefKey, state); - matterPref.putUInt(hsvColorPrefKey, currentHSVColor.h << 16 | currentHSVColor.s << 8 | currentHSVColor.v); - // This callback must return the success state to Matter core - return true; -} - -void setup() { - // Initialize the USER BUTTON (Boot button) GPIO that will act as a toggle switch - pinMode(buttonPin, INPUT_PULLUP); - // Initialize the LED (light) GPIO and Matter End Point - pinMode(ledPin, OUTPUT); - - Serial.begin(115200); - -// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network -#if !CONFIG_ENABLE_CHIPOBLE - // We start by connecting to a WiFi network - Serial.print("Connecting to "); - Serial.println(ssid); - // Manually connect to WiFi - WiFi.begin(ssid, password); - // Wait for connection - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); - } - Serial.println("\r\nWiFi connected"); - Serial.println("IP address: "); - Serial.println(WiFi.localIP()); - delay(500); -#endif - - // Initialize Matter EndPoint - matterPref.begin("MatterPrefs", false); - // default OnOff state is ON if not stored before - bool lastOnOffState = matterPref.getBool(onOffPrefKey, true); - // default HSV color is (21, 216, 25) - Warm White Color at 10% intensity - uint32_t prefHsvColor = matterPref.getUInt(hsvColorPrefKey, 21 << 16 | 216 << 8 | 25); - currentHSVColor = {uint8_t(prefHsvColor >> 16), uint8_t(prefHsvColor >> 8), uint8_t(prefHsvColor)}; - EnhancedColorLight.begin(lastOnOffState, currentHSVColor); - // set the callback function to handle the Light state change - EnhancedColorLight.onChange(setLightState); - - // lambda functions are used to set the attribute change callbacks - EnhancedColorLight.onChangeOnOff([](bool state) { - Serial.printf("Light OnOff changed to %s\r\n", state ? "ON" : "OFF"); - return true; - }); - EnhancedColorLight.onChangeColorTemperature([](uint16_t colorTemperature) { - Serial.printf("Light Color Temperature changed to %d\r\n", colorTemperature); - // get correspondent Hue and Saturation of the color temperature - HsvColor_t hsvTemperature = espRgbColorToHsvColor(espCTToRgbColor(colorTemperature)); - // keep previous the brightness and just change the Hue and Saturation - currentHSVColor.h = hsvTemperature.h; - currentHSVColor.s = hsvTemperature.s; - return true; - }); - EnhancedColorLight.onChangeBrightness([](uint8_t brightness) { - Serial.printf("Light brightness changed to %d\r\n", brightness); - // change current brightness (HSV value) - currentHSVColor.v = brightness; - return true; - }); - EnhancedColorLight.onChangeColorHSV([](HsvColor_t hsvColor) { - Serial.printf("Light HSV Color changed to (%d,%d,%d)\r\n", hsvColor.h, hsvColor.s, hsvColor.v); - // keep the current brightness and just change Hue and Saturation - currentHSVColor.h = hsvColor.h; - currentHSVColor.s = hsvColor.s; - return true; - }); - - // Matter beginning - Last step, after all EndPoints are initialized - Matter.begin(); - // This may be a restart of a already commissioned Matter accessory - if (Matter.isDeviceCommissioned()) { - Serial.println("Matter Node is commissioned and connected to the network. Ready for use."); - Serial.printf( - "Initial state: %s | RGB Color: (%d,%d,%d) \r\n", EnhancedColorLight ? "ON" : "OFF", EnhancedColorLight.getColorRGB().r, - EnhancedColorLight.getColorRGB().g, EnhancedColorLight.getColorRGB().b - ); - // configure the Light based on initial on-off state and its color - EnhancedColorLight.updateAccessory(); - } -} - -void loop() { - // Check Matter Light Commissioning state, which may change during execution of loop() - if (!Matter.isDeviceCommissioned()) { - Serial.println(""); - Serial.println("Matter Node is not commissioned yet."); - Serial.println("Initiate the device discovery in your Matter environment."); - Serial.println("Commission it to your Matter hub with the manual pairing code or QR code"); - Serial.printf("Manual pairing code: %s\r\n", Matter.getManualPairingCode().c_str()); - Serial.printf("QR code URL: %s\r\n", Matter.getOnboardingQRCodeUrl().c_str()); - // waits for Matter Light Commissioning. - uint32_t timeCount = 0; - while (!Matter.isDeviceCommissioned()) { - delay(100); - if ((timeCount++ % 50) == 0) { // 50*100ms = 5 sec - Serial.println("Matter Node not commissioned yet. Waiting for commissioning."); - } - } - Serial.printf( - "Initial state: %s | RGB Color: (%d,%d,%d) \r\n", EnhancedColorLight ? "ON" : "OFF", EnhancedColorLight.getColorRGB().r, - EnhancedColorLight.getColorRGB().g, EnhancedColorLight.getColorRGB().b - ); - // configure the Light based on initial on-off state and its color - EnhancedColorLight.updateAccessory(); - Serial.println("Matter Node is commissioned and connected to the network. Ready for use."); - } - - // A button is also used to control the light - // Check if the button has been pressed - if (digitalRead(buttonPin) == LOW && !button_state) { - // deals with button debouncing - button_time_stamp = millis(); // record the time while the button is pressed. - button_state = true; // pressed. - } - - // Onboard User Button is used as a Light toggle switch or to decommission it - uint32_t time_diff = millis() - button_time_stamp; - if (button_state && time_diff > debouceTime && digitalRead(buttonPin) == HIGH) { - button_state = false; // released - // Toggle button is released - toggle the light - Serial.println("User button released. Toggling Light!"); - EnhancedColorLight.toggle(); // Matter Controller also can see the change - } - - // Onboard User Button is kept pressed for longer than 5 seconds in order to decommission matter node - if (button_state && time_diff > decommissioningTimeout) { - Serial.println("Decommissioning the Light Matter Accessory. It shall be commissioned again."); - EnhancedColorLight = false; // turn the light off - Matter.decommission(); - button_time_stamp = millis(); // avoid running decommissining again, reboot takes a second or so - } -} diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/idf_component.yml b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/idf_component.yml deleted file mode 100644 index 749c1810875..00000000000 --- a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/main/idf_component.yml +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: - espressif/esp_matter: - version: "^1.4.0" - require: public - espressif/arduino-esp32: - version: "3.3.0" \ No newline at end of file diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/partitions.csv b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/partitions.csv deleted file mode 100644 index c5b0dcea569..00000000000 --- a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/partitions.csv +++ /dev/null @@ -1,10 +0,0 @@ -# Name, Type, SubType, Offset, Size, Flags -# Note: Firmware partition offset needs to be 64K aligned, initial 36K (9 sectors) are reserved for bootloader and partition table -esp_secure_cert, 0x3F, ,0xd000, 0x2000, encrypted -nvs, data, nvs, 0x10000, 0xC000, -nvs_keys, data, nvs_keys,, 0x1000, encrypted -otadata, data, ota, , 0x2000 -phy_init, data, phy, , 0x1000, -ota_0, app, ota_0, 0x20000, 0x1E0000, -ota_1, app, ota_1, 0x200000, 0x1E0000, -fctry, data, nvs, 0x3E0000, 0x6000 \ No newline at end of file diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig deleted file mode 100644 index af5a852dce1..00000000000 --- a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig +++ /dev/null @@ -1,3619 +0,0 @@ -# -# Automatically generated file. DO NOT EDIT. -# Espressif IoT Development Framework (ESP-IDF) 5.5.0 Project Configuration -# -CONFIG_SOC_ADC_SUPPORTED=y -CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y -CONFIG_SOC_UART_SUPPORTED=y -CONFIG_SOC_UHCI_SUPPORTED=y -CONFIG_SOC_GDMA_SUPPORTED=y -CONFIG_SOC_AHB_GDMA_SUPPORTED=y -CONFIG_SOC_GPTIMER_SUPPORTED=y -CONFIG_SOC_PCNT_SUPPORTED=y -CONFIG_SOC_MCPWM_SUPPORTED=y -CONFIG_SOC_TWAI_SUPPORTED=y -CONFIG_SOC_ETM_SUPPORTED=y -CONFIG_SOC_PARLIO_SUPPORTED=y -CONFIG_SOC_BT_SUPPORTED=y -CONFIG_SOC_IEEE802154_SUPPORTED=y -CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y -CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y -CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y -CONFIG_SOC_PHY_SUPPORTED=y -CONFIG_SOC_WIFI_SUPPORTED=y -CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y -CONFIG_SOC_ULP_SUPPORTED=y -CONFIG_SOC_LP_CORE_SUPPORTED=y -CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y -CONFIG_SOC_EFUSE_SUPPORTED=y -CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y -CONFIG_SOC_RTC_MEM_SUPPORTED=y -CONFIG_SOC_I2S_SUPPORTED=y -CONFIG_SOC_RMT_SUPPORTED=y -CONFIG_SOC_SDM_SUPPORTED=y -CONFIG_SOC_GPSPI_SUPPORTED=y -CONFIG_SOC_LEDC_SUPPORTED=y -CONFIG_SOC_I2C_SUPPORTED=y -CONFIG_SOC_SYSTIMER_SUPPORTED=y -CONFIG_SOC_SUPPORT_COEXISTENCE=y -CONFIG_SOC_AES_SUPPORTED=y -CONFIG_SOC_MPI_SUPPORTED=y -CONFIG_SOC_SHA_SUPPORTED=y -CONFIG_SOC_HMAC_SUPPORTED=y -CONFIG_SOC_DIG_SIGN_SUPPORTED=y -CONFIG_SOC_ECC_SUPPORTED=y -CONFIG_SOC_FLASH_ENC_SUPPORTED=y -CONFIG_SOC_SECURE_BOOT_SUPPORTED=y -CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y -CONFIG_SOC_BOD_SUPPORTED=y -CONFIG_SOC_APM_SUPPORTED=y -CONFIG_SOC_PMU_SUPPORTED=y -CONFIG_SOC_PAU_SUPPORTED=y -CONFIG_SOC_LP_TIMER_SUPPORTED=y -CONFIG_SOC_LP_AON_SUPPORTED=y -CONFIG_SOC_LP_PERIPHERALS_SUPPORTED=y -CONFIG_SOC_LP_I2C_SUPPORTED=y -CONFIG_SOC_ULP_LP_UART_SUPPORTED=y -CONFIG_SOC_CLK_TREE_SUPPORTED=y -CONFIG_SOC_ASSIST_DEBUG_SUPPORTED=y -CONFIG_SOC_WDT_SUPPORTED=y -CONFIG_SOC_SPI_FLASH_SUPPORTED=y -CONFIG_SOC_RNG_SUPPORTED=y -CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y -CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y -CONFIG_SOC_MODEM_CLOCK_SUPPORTED=y -CONFIG_SOC_PM_SUPPORTED=y -CONFIG_SOC_XTAL_SUPPORT_40M=y -CONFIG_SOC_XTAL_CLOCK_PATH_DEPENDS_ON_TOP_DOMAIN=y -CONFIG_SOC_AES_SUPPORT_DMA=y -CONFIG_SOC_AES_GDMA=y -CONFIG_SOC_AES_SUPPORT_AES_128=y -CONFIG_SOC_AES_SUPPORT_AES_256=y -CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y -CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y -CONFIG_SOC_ADC_MONITOR_SUPPORTED=y -CONFIG_SOC_ADC_DMA_SUPPORTED=y -CONFIG_SOC_ADC_PERIPH_NUM=1 -CONFIG_SOC_ADC_MAX_CHANNEL_NUM=7 -CONFIG_SOC_ADC_ATTEN_NUM=4 -CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=1 -CONFIG_SOC_ADC_PATT_LEN_MAX=8 -CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 -CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 -CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2 -CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2 -CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 -CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 -CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 -CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 -CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 -CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 -CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y -CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y -CONFIG_SOC_ADC_CALIB_CHAN_COMPENS_SUPPORTED=y -CONFIG_SOC_ADC_TEMPERATURE_SHARE_INTR=y -CONFIG_SOC_ADC_SHARED_POWER=y -CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y -CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y -CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y -CONFIG_SOC_CPU_CORES_NUM=1 -CONFIG_SOC_CPU_INTR_NUM=32 -CONFIG_SOC_CPU_HAS_FLEXIBLE_INTC=y -CONFIG_SOC_INT_PLIC_SUPPORTED=y -CONFIG_SOC_CPU_HAS_CSR_PC=y -CONFIG_SOC_CPU_BREAKPOINTS_NUM=4 -CONFIG_SOC_CPU_WATCHPOINTS_NUM=4 -CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x80000000 -CONFIG_SOC_CPU_HAS_PMA=y -CONFIG_SOC_CPU_IDRAM_SPLIT_USING_PMP=y -CONFIG_SOC_CPU_PMP_REGION_GRANULARITY=4 -CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=3072 -CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 -CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 -CONFIG_SOC_AHB_GDMA_VERSION=1 -CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1 -CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=3 -CONFIG_SOC_GDMA_SUPPORT_ETM=y -CONFIG_SOC_GDMA_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_ETM_GROUPS=1 -CONFIG_SOC_ETM_CHANNELS_PER_GROUP=50 -CONFIG_SOC_ETM_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_GPIO_PORT=1 -CONFIG_SOC_GPIO_PIN_COUNT=31 -CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y -CONFIG_SOC_GPIO_FLEX_GLITCH_FILTER_NUM=8 -CONFIG_SOC_GPIO_SUPPORT_ETM=y -CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y -CONFIG_SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP=y -CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y -CONFIG_SOC_GPIO_IN_RANGE_MAX=30 -CONFIG_SOC_GPIO_OUT_RANGE_MAX=30 -CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_VALID_GPIO_MASK=0 -CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_SUPPORTED_PIN_CNT=8 -CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x000000007FFFFF00 -CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y -CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y -CONFIG_SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP=y -CONFIG_SOC_GPIO_CLOCKOUT_BY_GPIO_MATRIX=y -CONFIG_SOC_CLOCKOUT_HAS_SOURCE_GATE=y -CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 -CONFIG_SOC_RTCIO_PIN_COUNT=8 -CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y -CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y -CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y -CONFIG_SOC_RTCIO_EDGE_WAKE_SUPPORTED=y -CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 -CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 -CONFIG_SOC_DEDIC_PERIPH_ALWAYS_ENABLE=y -CONFIG_SOC_I2C_NUM=2 -CONFIG_SOC_HP_I2C_NUM=1 -CONFIG_SOC_I2C_FIFO_LEN=32 -CONFIG_SOC_I2C_CMD_REG_NUM=8 -CONFIG_SOC_I2C_SUPPORT_SLAVE=y -CONFIG_SOC_I2C_SUPPORT_HW_FSM_RST=y -CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y -CONFIG_SOC_I2C_SUPPORT_XTAL=y -CONFIG_SOC_I2C_SUPPORT_RTC=y -CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y -CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y -CONFIG_SOC_I2C_SLAVE_CAN_GET_STRETCH_CAUSE=y -CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y -CONFIG_SOC_I2C_SLAVE_SUPPORT_SLAVE_UNMATCH=y -CONFIG_SOC_I2C_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_LP_I2C_NUM=1 -CONFIG_SOC_LP_I2C_FIFO_LEN=16 -CONFIG_SOC_I2S_NUM=1 -CONFIG_SOC_I2S_HW_VERSION_2=y -CONFIG_SOC_I2S_SUPPORTS_ETM=y -CONFIG_SOC_I2S_SUPPORTS_XTAL=y -CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y -CONFIG_SOC_I2S_SUPPORTS_PCM=y -CONFIG_SOC_I2S_SUPPORTS_PDM=y -CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y -CONFIG_SOC_I2S_SUPPORTS_PCM2PDM=y -CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y -CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2 -CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1 -CONFIG_SOC_I2S_SUPPORTS_TDM=y -CONFIG_SOC_I2S_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_LEDC_SUPPORT_PLL_DIV_CLOCK=y -CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y -CONFIG_SOC_LEDC_TIMER_NUM=4 -CONFIG_SOC_LEDC_CHANNEL_NUM=6 -CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 -CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y -CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_SUPPORTED=y -CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_RANGE_MAX=16 -CONFIG_SOC_LEDC_FADE_PARAMS_BIT_WIDTH=10 -CONFIG_SOC_LEDC_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_MMU_PAGE_SIZE_CONFIGURABLE=y -CONFIG_SOC_MMU_PAGE_SIZE_8KB_SUPPORTED=y -CONFIG_SOC_MMU_PERIPH_NUM=1 -CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1 -CONFIG_SOC_MMU_DI_VADDR_SHARED=y -CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 -CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 -CONFIG_SOC_PCNT_GROUPS=1 -CONFIG_SOC_PCNT_UNITS_PER_GROUP=4 -CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 -CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 -CONFIG_SOC_PCNT_SUPPORT_RUNTIME_THRES_UPDATE=y -CONFIG_SOC_PCNT_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_RMT_GROUPS=1 -CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=2 -CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=2 -CONFIG_SOC_RMT_CHANNELS_PER_GROUP=4 -CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 -CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y -CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y -CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y -CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y -CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y -CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y -CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y -CONFIG_SOC_RMT_SUPPORT_XTAL=y -CONFIG_SOC_RMT_SUPPORT_RC_FAST=y -CONFIG_SOC_RMT_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_MCPWM_GROUPS=1 -CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 -CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 -CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 -CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 -CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 -CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 -CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y -CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 -CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 -CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y -CONFIG_SOC_MCPWM_SUPPORT_ETM=y -CONFIG_SOC_MCPWM_CAPTURE_CLK_FROM_GROUP=y -CONFIG_SOC_MCPWM_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_PARLIO_GROUPS=1 -CONFIG_SOC_PARLIO_TX_UNITS_PER_GROUP=1 -CONFIG_SOC_PARLIO_RX_UNITS_PER_GROUP=1 -CONFIG_SOC_PARLIO_TX_UNIT_MAX_DATA_WIDTH=16 -CONFIG_SOC_PARLIO_RX_UNIT_MAX_DATA_WIDTH=16 -CONFIG_SOC_PARLIO_TX_RX_SHARE_INTERRUPT=y -CONFIG_SOC_PARLIO_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 -CONFIG_SOC_MPI_OPERATIONS_NUM=3 -CONFIG_SOC_RSA_MAX_BIT_LEN=3072 -CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 -CONFIG_SOC_SHA_SUPPORT_DMA=y -CONFIG_SOC_SHA_SUPPORT_RESUME=y -CONFIG_SOC_SHA_GDMA=y -CONFIG_SOC_SHA_SUPPORT_SHA1=y -CONFIG_SOC_SHA_SUPPORT_SHA224=y -CONFIG_SOC_SHA_SUPPORT_SHA256=y -CONFIG_SOC_SDM_GROUPS=1 -CONFIG_SOC_SDM_CHANNELS_PER_GROUP=4 -CONFIG_SOC_SDM_CLK_SUPPORT_PLL_F80M=y -CONFIG_SOC_SDM_CLK_SUPPORT_XTAL=y -CONFIG_SOC_SPI_PERIPH_NUM=2 -CONFIG_SOC_SPI_MAX_CS_NUM=6 -CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 -CONFIG_SOC_SPI_SUPPORT_DDRCLK=y -CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y -CONFIG_SOC_SPI_SUPPORT_CD_SIG=y -CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y -CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y -CONFIG_SOC_SPI_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y -CONFIG_SOC_SPI_SUPPORT_CLK_PLL_F80M=y -CONFIG_SOC_SPI_SUPPORT_CLK_RC_FAST=y -CONFIG_SOC_SPI_SCT_SUPPORTED=y -CONFIG_SOC_SPI_SCT_REG_NUM=14 -CONFIG_SOC_SPI_SCT_BUFFER_NUM_MAX=y -CONFIG_SOC_SPI_SCT_CONF_BITLEN_MAX=0x3FFFA -CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y -CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y -CONFIG_SOC_SPI_MEM_SUPPORT_IDLE_INTR=y -CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y -CONFIG_SOC_SPI_MEM_SUPPORT_CHECK_SUS=y -CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y -CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y -CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y -CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y -CONFIG_SOC_SYSTIMER_COUNTER_NUM=2 -CONFIG_SOC_SYSTIMER_ALARM_NUM=3 -CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 -CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 -CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y -CONFIG_SOC_SYSTIMER_SUPPORT_RC_FAST=y -CONFIG_SOC_SYSTIMER_INT_LEVEL=y -CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y -CONFIG_SOC_SYSTIMER_SUPPORT_ETM=y -CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 -CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 -CONFIG_SOC_TIMER_GROUPS=2 -CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=1 -CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 -CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y -CONFIG_SOC_TIMER_GROUP_SUPPORT_RC_FAST=y -CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=2 -CONFIG_SOC_TIMER_SUPPORT_ETM=y -CONFIG_SOC_TIMER_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_MWDT_SUPPORT_XTAL=y -CONFIG_SOC_MWDT_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_TWAI_CONTROLLER_NUM=2 -CONFIG_SOC_TWAI_MASK_FILTER_NUM=1 -CONFIG_SOC_TWAI_CLK_SUPPORT_XTAL=y -CONFIG_SOC_TWAI_BRP_MIN=2 -CONFIG_SOC_TWAI_BRP_MAX=32768 -CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y -CONFIG_SOC_TWAI_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y -CONFIG_SOC_EFUSE_DIS_PAD_JTAG=y -CONFIG_SOC_EFUSE_DIS_USB_JTAG=y -CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y -CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y -CONFIG_SOC_EFUSE_DIS_ICACHE=y -CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y -CONFIG_SOC_SECURE_BOOT_V2_RSA=y -CONFIG_SOC_SECURE_BOOT_V2_ECC=y -CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 -CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y -CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y -CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64 -CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y -CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y -CONFIG_SOC_APM_CTRL_FILTER_SUPPORTED=y -CONFIG_SOC_APM_LP_APM0_SUPPORTED=y -CONFIG_SOC_CRYPTO_DPA_PROTECTION_SUPPORTED=y -CONFIG_SOC_UART_NUM=3 -CONFIG_SOC_UART_HP_NUM=2 -CONFIG_SOC_UART_LP_NUM=1 -CONFIG_SOC_UART_FIFO_LEN=128 -CONFIG_SOC_LP_UART_FIFO_LEN=16 -CONFIG_SOC_UART_BITRATE_MAX=5000000 -CONFIG_SOC_UART_SUPPORT_PLL_F80M_CLK=y -CONFIG_SOC_UART_SUPPORT_RTC_CLK=y -CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y -CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y -CONFIG_SOC_UART_HAS_LP_UART=y -CONFIG_SOC_UART_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y -CONFIG_SOC_UART_WAKEUP_CHARS_SEQ_MAX_LEN=5 -CONFIG_SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE=y -CONFIG_SOC_UART_WAKEUP_SUPPORT_FIFO_THRESH_MODE=y -CONFIG_SOC_UART_WAKEUP_SUPPORT_START_BIT_MODE=y -CONFIG_SOC_UART_WAKEUP_SUPPORT_CHAR_SEQ_MODE=y -CONFIG_SOC_UHCI_NUM=1 -CONFIG_SOC_COEX_HW_PTI=y -CONFIG_SOC_EXTERNAL_COEX_ADVANCE=y -CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 -CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 -CONFIG_SOC_RTC_MEM_SUPPORT_SPEED_MODE_SWITCH=y -CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_BEACON_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP_MODE_PER_PIN=y -CONFIG_SOC_PM_SUPPORT_CPU_PD=y -CONFIG_SOC_PM_SUPPORT_MODEM_PD=y -CONFIG_SOC_PM_SUPPORT_XTAL32K_PD=y -CONFIG_SOC_PM_SUPPORT_RC32K_PD=y -CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y -CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y -CONFIG_SOC_PM_SUPPORT_TOP_PD=y -CONFIG_SOC_PM_SUPPORT_HP_AON_PD=y -CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y -CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y -CONFIG_SOC_PM_SUPPORT_PMU_MODEM_STATE=y -CONFIG_SOC_PM_SUPPORT_PMU_CLK_ICG=y -CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y -CONFIG_SOC_PM_CPU_RETENTION_BY_SW=y -CONFIG_SOC_PM_MODEM_RETENTION_BY_REGDMA=y -CONFIG_SOC_PM_RETENTION_HAS_CLOCK_BUG=y -CONFIG_SOC_EXT_MEM_CACHE_TAG_IN_CPU_DOMAIN=y -CONFIG_SOC_PM_PAU_LINK_NUM=4 -CONFIG_SOC_PM_PAU_REGDMA_LINK_MULTI_ADDR=y -CONFIG_SOC_PM_PAU_REGDMA_LINK_WIFIMAC=y -CONFIG_SOC_PM_PAU_REGDMA_UPDATE_CACHE_BEFORE_WAIT_COMPARE=y -CONFIG_SOC_PM_PMU_MIN_SLP_SLOW_CLK_CYCLE_FIXED=y -CONFIG_SOC_PM_RETENTION_MODULE_NUM=32 -CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y -CONFIG_SOC_MODEM_CLOCK_IS_INDEPENDENT=y -CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y -CONFIG_SOC_CLK_OSC_SLOW_SUPPORTED=y -CONFIG_SOC_CLK_RC32K_SUPPORTED=y -CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL_D2=y -CONFIG_SOC_RCC_IS_INDEPENDENT=y -CONFIG_SOC_CLK_ANA_I2C_MST_HAS_ROOT_GATE=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_XTAL=y -CONFIG_SOC_TEMPERATURE_SENSOR_INTR_SUPPORT=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_ETM=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN=y -CONFIG_SOC_RNG_CLOCK_IS_INDEPENDENT=y -CONFIG_SOC_WIFI_HW_TSF=y -CONFIG_SOC_WIFI_FTM_SUPPORT=y -CONFIG_SOC_WIFI_GCMP_SUPPORT=y -CONFIG_SOC_WIFI_WAPI_SUPPORT=y -CONFIG_SOC_WIFI_CSI_SUPPORT=y -CONFIG_SOC_WIFI_MESH_SUPPORT=y -CONFIG_SOC_WIFI_HE_SUPPORT=y -CONFIG_SOC_WIFI_MAC_VERSION_NUM=2 -CONFIG_SOC_BLE_SUPPORTED=y -CONFIG_SOC_BLE_MESH_SUPPORTED=y -CONFIG_SOC_ESP_NIMBLE_CONTROLLER=y -CONFIG_SOC_BLE_50_SUPPORTED=y -CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y -CONFIG_SOC_BLE_POWER_CONTROL_SUPPORTED=y -CONFIG_SOC_BLE_PERIODIC_ADV_ENH_SUPPORTED=y -CONFIG_SOC_BLUFI_SUPPORTED=y -CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y -CONFIG_SOC_BLE_USE_WIFI_PWR_CLK_WORKAROUND=y -CONFIG_SOC_PHY_COMBO_MODULE=y -CONFIG_SOC_CAPS_NO_RESET_BY_ANA_BOD=y -CONFIG_SOC_LP_CORE_SINGLE_INTERRUPT_VECTOR=y -CONFIG_SOC_LP_CORE_SUPPORT_ETM=y -CONFIG_SOC_DEBUG_HAVE_OCD_STUB_BINS=y -CONFIG_IDF_CMAKE=y -CONFIG_IDF_TOOLCHAIN="gcc" -CONFIG_IDF_TOOLCHAIN_GCC=y -CONFIG_IDF_TARGET_ARCH_RISCV=y -CONFIG_IDF_TARGET_ARCH="riscv" -CONFIG_IDF_TARGET="esp32c6" -CONFIG_IDF_INIT_VERSION="5.5.0" -CONFIG_IDF_TARGET_ESP32C6=y -CONFIG_IDF_FIRMWARE_CHIP_ID=0x000D - -# -# Build type -# -CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y -# CONFIG_APP_BUILD_TYPE_RAM is not set -CONFIG_APP_BUILD_GENERATE_BINARIES=y -CONFIG_APP_BUILD_BOOTLOADER=y -CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y -# CONFIG_APP_REPRODUCIBLE_BUILD is not set -# CONFIG_APP_NO_BLOBS is not set -# end of Build type - -# -# Bootloader config -# - -# -# Bootloader manager -# -CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y -CONFIG_BOOTLOADER_PROJECT_VER=1 -# end of Bootloader manager - -# -# Application Rollback -# -# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set -# end of Application Rollback - -# -# Bootloader Rollback -# -# end of Bootloader Rollback - -CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 -CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y -# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set -# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set - -# -# Log -# -CONFIG_BOOTLOADER_LOG_VERSION_1=y -CONFIG_BOOTLOADER_LOG_VERSION=1 -# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set -CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y -# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set -# CONFIG_BOOTLOADER_LOG_LEVEL_INFO is not set -# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set -# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set -CONFIG_BOOTLOADER_LOG_LEVEL=1 - -# -# Format -# -# CONFIG_BOOTLOADER_LOG_COLORS is not set -CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y -# end of Format - -# -# Settings -# -CONFIG_BOOTLOADER_LOG_MODE_TEXT_EN=y -CONFIG_BOOTLOADER_LOG_MODE_TEXT=y -# end of Settings -# end of Log - -# -# Serial Flash Configurations -# -# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set -CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y -# end of Serial Flash Configurations - -# CONFIG_BOOTLOADER_FACTORY_RESET is not set -# CONFIG_BOOTLOADER_APP_TEST is not set -CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y -CONFIG_BOOTLOADER_WDT_ENABLE=y -# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set -CONFIG_BOOTLOADER_WDT_TIME_MS=9000 -# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set -# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set -# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set -CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 -# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set -# end of Bootloader config - -# -# Security features -# -CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y -CONFIG_SECURE_BOOT_V2_ECC_SUPPORTED=y -CONFIG_SECURE_BOOT_V2_PREFERRED=y -# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set -# CONFIG_SECURE_BOOT is not set -# CONFIG_SECURE_FLASH_ENC_ENABLED is not set -CONFIG_SECURE_ROM_DL_MODE_ENABLED=y -# end of Security features - -# -# Application manager -# -CONFIG_APP_COMPILE_TIME_DATE=y -# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set -# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set -# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set -CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 -# end of Application manager - -CONFIG_ESP_ROM_HAS_CRC_LE=y -CONFIG_ESP_ROM_HAS_CRC_BE=y -CONFIG_ESP_ROM_HAS_JPEG_DECODE=y -CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y -CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=3 -CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y -CONFIG_ESP_ROM_GET_CLK_FREQ=y -CONFIG_ESP_ROM_HAS_RVFPLIB=y -CONFIG_ESP_ROM_HAS_HAL_WDT=y -CONFIG_ESP_ROM_HAS_HAL_SYSTIMER=y -CONFIG_ESP_ROM_HAS_HEAP_TLSF=y -CONFIG_ESP_ROM_TLSF_CHECK_PATCH=y -CONFIG_ESP_ROM_MULTI_HEAP_WALK_PATCH=y -CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y -CONFIG_ESP_ROM_HAS_SPI_FLASH=y -CONFIG_ESP_ROM_HAS_SPI_FLASH_MMAP=y -CONFIG_ESP_ROM_HAS_REGI2C_BUG=y -CONFIG_ESP_ROM_HAS_NEWLIB=y -CONFIG_ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT=y -CONFIG_ESP_ROM_REV0_HAS_NO_ECDSA_INTERFACE=y -CONFIG_ESP_ROM_WDT_INIT_PATCH=y -CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y -CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y -CONFIG_ESP_ROM_HAS_SW_FLOAT=y -CONFIG_ESP_ROM_USB_OTG_NUM=-1 -CONFIG_ESP_ROM_HAS_VERSION=y -CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y -CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y -CONFIG_ESP_ROM_NO_USB_SERIAL_OUTPUT_API=y -CONFIG_ESP_ROM_HAS_SUBOPTIMAL_NEWLIB_ON_MISALIGNED_MEMORY=y - -# -# Boot ROM Behavior -# -CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y -# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set -# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set -# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set -# end of Boot ROM Behavior - -# -# ESP-TEE (Trusted Execution Environment) -# -# CONFIG_SECURE_ENABLE_TEE is not set -CONFIG_SECURE_TEE_LOG_LEVEL=0 -# end of ESP-TEE (Trusted Execution Environment) - -# -# Serial flasher config -# -# CONFIG_ESPTOOLPY_NO_STUB is not set -CONFIG_ESPTOOLPY_FLASHMODE_QIO=y -# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set -# CONFIG_ESPTOOLPY_FLASHMODE_DIO is not set -# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set -CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y -CONFIG_ESPTOOLPY_FLASHMODE="dio" -CONFIG_ESPTOOLPY_FLASHFREQ_80M=y -# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set -# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set -CONFIG_ESPTOOLPY_FLASHFREQ="80m" -# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y -# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE="4MB" -CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE=y -CONFIG_ESPTOOLPY_BEFORE_RESET=y -# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set -CONFIG_ESPTOOLPY_BEFORE="default_reset" -CONFIG_ESPTOOLPY_AFTER_RESET=y -# CONFIG_ESPTOOLPY_AFTER_NORESET is not set -CONFIG_ESPTOOLPY_AFTER="hard_reset" -CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 -# end of Serial flasher config - -# -# Partition Table -# -# CONFIG_PARTITION_TABLE_SINGLE_APP is not set -# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set -# CONFIG_PARTITION_TABLE_TWO_OTA is not set -# CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set -CONFIG_PARTITION_TABLE_CUSTOM=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_OFFSET=0x8000 -CONFIG_PARTITION_TABLE_MD5=y -# end of Partition Table - -# -# Arduino Configuration -# -CONFIG_ARDUINO_VARIANT="esp32c6" -CONFIG_ENABLE_ARDUINO_DEPENDS=y -CONFIG_AUTOSTART_ARDUINO=y -CONFIG_ARDUINO_RUN_CORE0=y -CONFIG_ARDUINO_RUNNING_CORE=0 -CONFIG_ARDUINO_LOOP_STACK_SIZE=8192 -CONFIG_ARDUINO_EVENT_RUN_CORE0=y -CONFIG_ARDUINO_EVENT_RUNNING_CORE=0 -CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE0=y -CONFIG_ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE=0 -CONFIG_ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE=2048 -CONFIG_ARDUINO_SERIAL_EVENT_TASK_PRIORITY=24 -CONFIG_ARDUINO_UDP_RUN_CORE0=y -CONFIG_ARDUINO_UDP_RUNNING_CORE=0 -CONFIG_ARDUINO_UDP_TASK_PRIORITY=3 -# CONFIG_ARDUINO_ISR_IRAM is not set -# CONFIG_DISABLE_HAL_LOCKS is not set - -# -# Debug Log Configuration -# -# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_NONE is not set -# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR is not set -# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN is not set -CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO=y -# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG is not set -# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_VERBOSE is not set -CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=3 -# CONFIG_ARDUHAL_LOG_COLORS is not set -# CONFIG_ARDUHAL_ESP_LOG is not set -# end of Debug Log Configuration - -CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y -# CONFIG_ARDUHAL_PARTITION_SCHEME_MINIMAL is not set -# CONFIG_ARDUHAL_PARTITION_SCHEME_NO_OTA is not set -# CONFIG_ARDUHAL_PARTITION_SCHEME_HUGE_APP is not set -# CONFIG_ARDUHAL_PARTITION_SCHEME_MIN_SPIFFS is not set -CONFIG_ARDUHAL_PARTITION_SCHEME="default" -# CONFIG_AUTOCONNECT_WIFI is not set -CONFIG_ARDUINO_SELECTIVE_COMPILATION=y -CONFIG_ARDUINO_SELECTIVE_SPI=y -CONFIG_ARDUINO_SELECTIVE_Wire=y -CONFIG_ARDUINO_SELECTIVE_ESP_SR=y -CONFIG_ARDUINO_SELECTIVE_EEPROM=y -CONFIG_ARDUINO_SELECTIVE_Preferences=y -CONFIG_ARDUINO_SELECTIVE_Ticker=y -CONFIG_ARDUINO_SELECTIVE_Update=y -CONFIG_ARDUINO_SELECTIVE_Zigbee=y -CONFIG_ARDUINO_SELECTIVE_FS=y -CONFIG_ARDUINO_SELECTIVE_SD=y -CONFIG_ARDUINO_SELECTIVE_SD_MMC=y -CONFIG_ARDUINO_SELECTIVE_SPIFFS=y -CONFIG_ARDUINO_SELECTIVE_FFat=y -CONFIG_ARDUINO_SELECTIVE_LittleFS=y -CONFIG_ARDUINO_SELECTIVE_Network=y -CONFIG_ARDUINO_SELECTIVE_Ethernet=y -CONFIG_ARDUINO_SELECTIVE_PPP=y -CONFIG_ARDUINO_SELECTIVE_ArduinoOTA=y -CONFIG_ARDUINO_SELECTIVE_AsyncUDP=y -CONFIG_ARDUINO_SELECTIVE_DNSServer=y -CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y -CONFIG_ARDUINO_SELECTIVE_HTTPClient=y -CONFIG_ARDUINO_SELECTIVE_Matter=y -CONFIG_ARDUINO_SELECTIVE_NetBIOS=y -CONFIG_ARDUINO_SELECTIVE_WebServer=y -CONFIG_ARDUINO_SELECTIVE_WiFi=y -CONFIG_ARDUINO_SELECTIVE_NetworkClientSecure=y -CONFIG_ARDUINO_SELECTIVE_WiFiProv=y -CONFIG_ARDUINO_SELECTIVE_BLE=y -CONFIG_ARDUINO_SELECTIVE_BluetoothSerial=y -CONFIG_ARDUINO_SELECTIVE_SimpleBLE=y -CONFIG_ARDUINO_SELECTIVE_RainMaker=y -CONFIG_ARDUINO_SELECTIVE_OpenThread=y -CONFIG_ARDUINO_SELECTIVE_Insights=y -# end of Arduino Configuration - -# -# ESP RainMaker Config -# -# CONFIG_ESP_RMAKER_NO_CLAIM is not set -CONFIG_ESP_RMAKER_SELF_CLAIM=y -# CONFIG_ESP_RMAKER_ASSISTED_CLAIM is not set -CONFIG_ESP_RMAKER_USE_NVS=y -CONFIG_ESP_RMAKER_CLAIM_TYPE=1 -CONFIG_ESP_RMAKER_CLAIM_SERVICE_BASE_URL="https://esp-claiming.rainmaker.espressif.com" -# CONFIG_ESP_RMAKER_READ_MQTT_HOST_FROM_CONFIG is not set -# CONFIG_ESP_RMAKER_READ_NODE_ID_FROM_CERT_CN is not set -CONFIG_ESP_RMAKER_MQTT_HOST="a1p72mufdu6064-ats.iot.us-east-1.amazonaws.com" -CONFIG_ESP_RMAKER_MQTT_USE_BASIC_INGEST_TOPICS=y -CONFIG_ESP_RMAKER_MQTT_ENABLE_BUDGETING=y -CONFIG_ESP_RMAKER_MQTT_DEFAULT_BUDGET=100 -CONFIG_ESP_RMAKER_MQTT_MAX_BUDGET=1024 -CONFIG_ESP_RMAKER_MQTT_BUDGET_REVIVE_PERIOD=5 -CONFIG_ESP_RMAKER_MQTT_BUDGET_REVIVE_COUNT=1 -CONFIG_ESP_RMAKER_MAX_PARAM_DATA_SIZE=1024 -# CONFIG_ESP_RMAKER_DISABLE_USER_MAPPING_PROV is not set -# CONFIG_ESP_RMAKER_USER_ID_CHECK is not set -# CONFIG_RMAKER_NAME_PARAM_CB is not set -# CONFIG_ESP_RMAKER_LOCAL_CTRL_FEATURE_ENABLE is not set -# CONFIG_ESP_RMAKER_LOCAL_CTRL_AUTO_ENABLE is not set -CONFIG_ESP_RMAKER_CONSOLE_UART_NUM_0=y -# CONFIG_ESP_RMAKER_CONSOLE_UART_NUM_1 is not set -CONFIG_ESP_RMAKER_CONSOLE_UART_NUM=0 -CONFIG_ESP_RMAKER_USE_CERT_BUNDLE=y - -# -# ESP RainMaker OTA Config -# -CONFIG_ESP_RMAKER_OTA_AUTOFETCH=y -CONFIG_ESP_RMAKER_OTA_AUTOFETCH_PERIOD=0 -# CONFIG_ESP_RMAKER_SKIP_COMMON_NAME_CHECK is not set -# CONFIG_ESP_RMAKER_SKIP_VERSION_CHECK is not set -# CONFIG_ESP_RMAKER_SKIP_SECURE_VERSION_CHECK is not set -# CONFIG_ESP_RMAKER_SKIP_PROJECT_NAME_CHECK is not set -CONFIG_ESP_RMAKER_OTA_HTTP_RX_BUFFER_SIZE=1024 -CONFIG_ESP_RMAKER_OTA_ROLLBACK_WAIT_PERIOD=90 -# CONFIG_ESP_RMAKER_OTA_DISABLE_AUTO_REBOOT is not set -CONFIG_ESP_RMAKER_OTA_TIME_SUPPORT=y -# end of ESP RainMaker OTA Config - -# -# ESP RainMaker Scheduling -# -CONFIG_ESP_RMAKER_SCHEDULING_MAX_SCHEDULES=10 -# end of ESP RainMaker Scheduling - -# -# ESP RainMaker Scenes -# -CONFIG_ESP_RMAKER_SCENES_MAX_SCENES=10 -# CONFIG_ESP_RMAKER_SCENES_DEACTIVATE_SUPPORT is not set -# end of ESP RainMaker Scenes - -# -# ESP RainMaker Command-Response -# -CONFIG_ESP_RMAKER_CMD_RESP_ENABLE=y -# CONFIG_ESP_RMAKER_CMD_RESP_TEST_ENABLE is not set -# end of ESP RainMaker Command-Response - -CONFIG_ESP_RMAKER_USING_NETWORK_PROV=y -# end of ESP RainMaker Config - -# -# Compiler options -# -CONFIG_COMPILER_OPTIMIZATION_DEBUG=y -# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set -# CONFIG_COMPILER_OPTIMIZATION_PERF is not set -# CONFIG_COMPILER_OPTIMIZATION_NONE is not set -CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y -# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set -# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set -CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y -# CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB is not set -CONFIG_COMPILER_FLOAT_LIB_FROM_RVFPLIB=y -CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 -# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set -CONFIG_COMPILER_HIDE_PATHS_MACROS=y -# CONFIG_COMPILER_CXX_EXCEPTIONS is not set -# CONFIG_COMPILER_CXX_RTTI is not set -CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y -# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set -# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set -# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set -# CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set -# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set -# CONFIG_COMPILER_SAVE_RESTORE_LIBCALLS is not set -CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y -# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set -# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set -# CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set -# CONFIG_COMPILER_DUMP_RTL_FILES is not set -CONFIG_COMPILER_RT_LIB_GCCLIB=y -CONFIG_COMPILER_RT_LIB_NAME="gcc" -CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y -# CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set -# CONFIG_COMPILER_STATIC_ANALYZER is not set -# end of Compiler options - -# -# Component config -# - -# -# Application Level Tracing -# -# CONFIG_APPTRACE_DEST_JTAG is not set -CONFIG_APPTRACE_DEST_NONE=y -# CONFIG_APPTRACE_DEST_UART1 is not set -# CONFIG_APPTRACE_DEST_UART2 is not set -CONFIG_APPTRACE_DEST_UART_NONE=y -CONFIG_APPTRACE_UART_TASK_PRIO=1 -CONFIG_APPTRACE_LOCK_ENABLE=y -# end of Application Level Tracing - -# -# Bluetooth -# -CONFIG_BT_ENABLED=y -# CONFIG_BT_BLUEDROID_ENABLED is not set -CONFIG_BT_NIMBLE_ENABLED=y -# CONFIG_BT_CONTROLLER_ONLY is not set -CONFIG_BT_CONTROLLER_ENABLED=y -# CONFIG_BT_CONTROLLER_DISABLED is not set - -# -# NimBLE Options -# -CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y -# CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_NONE is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING is not set -CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y -# CONFIG_BT_NIMBLE_LOG_LEVEL_DEBUG is not set -CONFIG_BT_NIMBLE_LOG_LEVEL=1 -CONFIG_BT_NIMBLE_MAX_CONNECTIONS=3 -CONFIG_BT_NIMBLE_MAX_BONDS=3 -CONFIG_BT_NIMBLE_MAX_CCCDS=8 -CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0 -CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 -CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=4096 -CONFIG_BT_NIMBLE_ROLE_CENTRAL=y -CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y -CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y -CONFIG_BT_NIMBLE_ROLE_OBSERVER=y -CONFIG_BT_NIMBLE_GATT_CLIENT=y -CONFIG_BT_NIMBLE_GATT_SERVER=y -# CONFIG_BT_NIMBLE_NVS_PERSIST is not set -# CONFIG_BT_NIMBLE_SMP_ID_RESET is not set -CONFIG_BT_NIMBLE_SECURITY_ENABLE=y -CONFIG_BT_NIMBLE_SM_LEGACY=y -CONFIG_BT_NIMBLE_SM_SC=y -# CONFIG_BT_NIMBLE_SM_SC_DEBUG_KEYS is not set -CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION=y -CONFIG_BT_NIMBLE_SM_LVL=0 -CONFIG_BT_NIMBLE_SM_SC_ONLY=0 -CONFIG_BT_NIMBLE_PRINT_ERR_NAME=y -# CONFIG_BT_NIMBLE_DEBUG is not set -# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set -CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" -CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 -CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256 -CONFIG_BT_NIMBLE_ATT_MAX_PREP_ENTRIES=64 -CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0 - -# -# Memory Settings -# -CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=24 -CONFIG_BT_NIMBLE_MSYS_1_BLOCK_SIZE=128 -CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT=24 -CONFIG_BT_NIMBLE_MSYS_2_BLOCK_SIZE=320 -CONFIG_BT_NIMBLE_MSYS_BUF_FROM_HEAP=y -CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=24 -CONFIG_BT_NIMBLE_TRANSPORT_ACL_SIZE=255 -CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 -CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=30 -CONFIG_BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT=8 -CONFIG_BT_NIMBLE_L2CAP_COC_SDU_BUFF_COUNT=1 -# end of Memory Settings - -CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4 -CONFIG_BT_NIMBLE_RPA_TIMEOUT=900 -# CONFIG_BT_NIMBLE_MESH is not set -CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y -CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000 -CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=y -CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT=3 -# CONFIG_BT_NIMBLE_HANDLE_REPEAT_PAIRING_DELETION is not set -CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y -CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_2M_PHY=y -CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_CODED_PHY=y -# CONFIG_BT_NIMBLE_EXT_ADV is not set -CONFIG_BT_NIMBLE_EXT_SCAN=y -CONFIG_BT_NIMBLE_ENABLE_PERIODIC_SYNC=y -CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS=0 -CONFIG_BT_NIMBLE_MAX_PERIODIC_ADVERTISER_LIST=5 -# CONFIG_BT_NIMBLE_BLE_POWER_CONTROL is not set -# CONFIG_BT_NIMBLE_GATT_CACHING is not set -# CONFIG_BT_NIMBLE_INCL_SVC_DISCOVERY is not set -CONFIG_BT_NIMBLE_WHITELIST_SIZE=12 -# CONFIG_BT_NIMBLE_TEST_THROUGHPUT_TEST is not set -# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set -CONFIG_BT_NIMBLE_USE_ESP_TIMER=y -# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set - -# -# BLE Services -# -CONFIG_BT_NIMBLE_PROX_SERVICE=y -CONFIG_BT_NIMBLE_ANS_SERVICE=y -CONFIG_BT_NIMBLE_CTS_SERVICE=y -CONFIG_BT_NIMBLE_HTP_SERVICE=y -CONFIG_BT_NIMBLE_IPSS_SERVICE=y -CONFIG_BT_NIMBLE_TPS_SERVICE=y -CONFIG_BT_NIMBLE_IAS_SERVICE=y -CONFIG_BT_NIMBLE_LLS_SERVICE=y -CONFIG_BT_NIMBLE_SPS_SERVICE=y -CONFIG_BT_NIMBLE_HR_SERVICE=y -# CONFIG_BT_NIMBLE_HID_SERVICE is not set -CONFIG_BT_NIMBLE_BAS_SERVICE=y -# CONFIG_BT_NIMBLE_SVC_BAS_BATTERY_LEVEL_NOTIFY is not set -CONFIG_BT_NIMBLE_DIS_SERVICE=y -# CONFIG_BT_NIMBLE_SVC_DIS_MANUFACTURER_NAME is not set -# CONFIG_BT_NIMBLE_SVC_DIS_SERIAL_NUMBER is not set -# CONFIG_BT_NIMBLE_SVC_DIS_HARDWARE_REVISION is not set -# CONFIG_BT_NIMBLE_SVC_DIS_FIRMWARE_REVISION is not set -# CONFIG_BT_NIMBLE_SVC_DIS_SOFTWARE_REVISION is not set -# CONFIG_BT_NIMBLE_SVC_DIS_SYSTEM_ID is not set -# CONFIG_BT_NIMBLE_SVC_DIS_PNP_ID is not set -# CONFIG_BT_NIMBLE_SVC_DIS_INCLUDED is not set -CONFIG_BT_NIMBLE_GAP_SERVICE=y - -# -# GAP Appearance write permissions -# -# CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE is not set -CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM=0 -CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ENC=0 -CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHN=0 -CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHR=0 -# end of GAP Appearance write permissions - -CONFIG_BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP=y -# CONFIG_BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP is not set -# CONFIG_BT_NIMBLE_SVC_GAP_CAR_SUPP is not set -CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 - -# -# GAP device name write permissions -# -# CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE is not set -# end of GAP device name write permissions - -# -# PPCP settings -# -CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL=0 -CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=0 -CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0 -CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0 -# end of PPCP settings - -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR=0 -# CONFIG_BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL is not set -# CONFIG_BT_NIMBLE_SVC_GAP_RPA_ONLY is not set -# end of BLE Services - -# CONFIG_BT_NIMBLE_VS_SUPPORT is not set -# CONFIG_BT_NIMBLE_OPTIMIZE_MULTI_CONN is not set -# CONFIG_BT_NIMBLE_ENC_ADV_DATA is not set -# CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL is not set -# CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN is not set -# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set -# CONFIG_BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT is not set - -# -# Host-controller Transport -# -CONFIG_UART_HW_FLOWCTRL_DISABLE=y -# CONFIG_UART_HW_FLOWCTRL_CTS_RTS is not set -CONFIG_BT_NIMBLE_HCI_UART_FLOW_CTRL=0 -CONFIG_BT_NIMBLE_HCI_UART_RTS_PIN=19 -CONFIG_BT_NIMBLE_HCI_UART_CTS_PIN=23 -# end of Host-controller Transport - -CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0 -# CONFIG_BT_NIMBLE_SUBRATE is not set -# end of NimBLE Options - -# -# Controller Options -# - -# -# HCI Config -# -CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y -# CONFIG_BT_LE_HCI_INTERFACE_USE_UART is not set -# end of HCI Config - -CONFIG_BT_LE_CONTROLLER_NPL_OS_PORTING_SUPPORT=y -CONFIG_BT_LE_CONTROLLER_TASK_STACK_SIZE=4096 - -# -# Controller debug features -# -# CONFIG_BT_LE_CONTROLLER_LOG_ENABLED is not set -# CONFIG_BT_LE_ERROR_SIM_ENABLED is not set -# CONFIG_BT_LE_ASSERT_WHEN_ABNORMAL_DISCONN_ENABLED is not set -# CONFIG_BT_LE_DEBUG_REMAIN_SCENE_ENABLED is not set -# CONFIG_BT_LE_PTR_CHECK_ENABLED is not set -# end of Controller debug features - -CONFIG_BT_LE_LL_RESOLV_LIST_SIZE=4 -CONFIG_BT_LE_LL_DUP_SCAN_LIST_COUNT=20 -CONFIG_BT_LE_LL_SCA=60 -# CONFIG_BT_LE_LL_PEER_SCA_SET_ENABLE is not set -# CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EN is not set -CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_DIS=y -CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF=0 -# CONFIG_BT_LE_SLEEP_ENABLE is not set -CONFIG_BT_LE_LP_CLK_SRC_MAIN_XTAL=y -# CONFIG_BT_LE_LP_CLK_SRC_DEFAULT is not set -CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y -CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100 -CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 -CONFIG_BT_LE_SCAN_DUPL=y -CONFIG_BT_LE_SCAN_DUPL_TYPE_DEVICE=y -# CONFIG_BT_LE_SCAN_DUPL_TYPE_DATA is not set -# CONFIG_BT_LE_SCAN_DUPL_TYPE_DATA_DEVICE is not set -CONFIG_BT_LE_SCAN_DUPL_TYPE=0 -CONFIG_BT_LE_SCAN_DUPL_CACHE_REFRESH_PERIOD=0 -CONFIG_BT_LE_MSYS_INIT_IN_CONTROLLER=y -# CONFIG_BT_LE_TX_CCA_ENABLED is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N15 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N12 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N9 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N6 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N3 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N0 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P3 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P6 is not set -CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P9=y -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P12 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P15 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P18 is not set -# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P20 is not set -CONFIG_BT_LE_DFT_TX_POWER_LEVEL_DBM_EFF=9 -# CONFIG_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS is not set -# CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY is not set - -# -# BLE disconnects when Instant Passed (0x28) occurs -# -# CONFIG_BT_LE_CTRL_LLCP_CONN_UPDATE is not set -# CONFIG_BT_LE_CTRL_LLCP_CHAN_MAP_UPDATE is not set -# CONFIG_BT_LE_CTRL_LLCP_PHY_UPDATE is not set -# end of BLE disconnects when Instant Passed (0x28) occurs - -CONFIG_BT_CTRL_SCAN_BACKOFF_UPPERLIMITMAX=32 -# CONFIG_BT_LE_CTRL_CHAN_ASS_EN is not set -CONFIG_BT_LE_CTRL_ADV_DATA_LENGTH_ZERO_AUX=y -CONFIG_BT_LE_RXBUF_OPT_ENABLED=y -CONFIG_BT_LE_CTRL_FAST_CONN_DATA_TX_EN=y -# end of Controller Options - -# -# Common Options -# -CONFIG_BT_ALARM_MAX_NUM=50 -# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set -# end of Common Options - -# CONFIG_BT_HCI_LOG_DEBUG_EN is not set -# end of Bluetooth - -# CONFIG_BLE_MESH is not set - -# -# Console Library -# -# CONFIG_CONSOLE_SORTED_HELP is not set -# end of Console Library - -# -# Driver Configurations -# - -# -# Legacy TWAI Driver Configurations -# -# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy TWAI Driver Configurations - -# -# Legacy ADC Driver Configuration -# -# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set - -# -# Legacy ADC Calibration Configuration -# -# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set -# end of Legacy ADC Calibration Configuration -# end of Legacy ADC Driver Configuration - -# -# Legacy MCPWM Driver Configurations -# -# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy MCPWM Driver Configurations - -# -# Legacy Timer Group Driver Configurations -# -# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy Timer Group Driver Configurations - -# -# Legacy RMT Driver Configurations -# -# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy RMT Driver Configurations - -# -# Legacy I2S Driver Configurations -# -# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy I2S Driver Configurations - -# -# Legacy I2C Driver Configurations -# -# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy I2C Driver Configurations - -# -# Legacy PCNT Driver Configurations -# -# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy PCNT Driver Configurations - -# -# Legacy SDM Driver Configurations -# -# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy SDM Driver Configurations - -# -# Legacy Temperature Sensor Driver Configurations -# -# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_TEMP_SENSOR_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy Temperature Sensor Driver Configurations -# end of Driver Configurations - -# -# eFuse Bit Manager -# -# CONFIG_EFUSE_CUSTOM_TABLE is not set -# CONFIG_EFUSE_VIRTUAL is not set -CONFIG_EFUSE_MAX_BLK_LEN=256 -# end of eFuse Bit Manager - -# -# ESP-TLS -# -CONFIG_ESP_TLS_USING_MBEDTLS=y -# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set -CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y -# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set -# CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set -# CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set -# CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set -# CONFIG_ESP_TLS_PSK_VERIFICATION is not set -# CONFIG_ESP_TLS_INSECURE is not set -# end of ESP-TLS - -# -# ADC and ADC Calibration -# -# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set -# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set -# CONFIG_ADC_ENABLE_DEBUG_LOG is not set -# end of ADC and ADC Calibration - -# -# Wireless Coexistence -# -CONFIG_ESP_COEX_ENABLED=y -CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y -# CONFIG_ESP_COEX_POWER_MANAGEMENT is not set -# CONFIG_ESP_COEX_GPIO_DEBUG is not set -# end of Wireless Coexistence - -# -# Common ESP-related -# -CONFIG_ESP_ERR_TO_NAME_LOOKUP=y -# end of Common ESP-related - -# -# ESP-Driver:GPIO Configurations -# -# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set -# end of ESP-Driver:GPIO Configurations - -# -# ESP-Driver:GPTimer Configurations -# -CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y -# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set -# CONFIG_GPTIMER_ISR_CACHE_SAFE is not set -CONFIG_GPTIMER_OBJ_CACHE_SAFE=y -# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set -# end of ESP-Driver:GPTimer Configurations - -# -# ESP-Driver:I2C Configurations -# -# CONFIG_I2C_ISR_IRAM_SAFE is not set -# CONFIG_I2C_ENABLE_DEBUG_LOG is not set -# CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set -CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y -# end of ESP-Driver:I2C Configurations - -# -# ESP-Driver:I2S Configurations -# -# CONFIG_I2S_ISR_IRAM_SAFE is not set -# CONFIG_I2S_ENABLE_DEBUG_LOG is not set -# end of ESP-Driver:I2S Configurations - -# -# ESP-Driver:LEDC Configurations -# -# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set -# end of ESP-Driver:LEDC Configurations - -# -# ESP-Driver:MCPWM Configurations -# -CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y -# CONFIG_MCPWM_ISR_CACHE_SAFE is not set -# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set -CONFIG_MCPWM_OBJ_CACHE_SAFE=y -# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set -# end of ESP-Driver:MCPWM Configurations - -# -# ESP-Driver:Parallel IO Configurations -# -CONFIG_PARLIO_TX_ISR_HANDLER_IN_IRAM=y -CONFIG_PARLIO_RX_ISR_HANDLER_IN_IRAM=y -# CONFIG_PARLIO_TX_ISR_CACHE_SAFE is not set -# CONFIG_PARLIO_RX_ISR_CACHE_SAFE is not set -CONFIG_PARLIO_OBJ_CACHE_SAFE=y -# CONFIG_PARLIO_ENABLE_DEBUG_LOG is not set -# CONFIG_PARLIO_ISR_IRAM_SAFE is not set -# end of ESP-Driver:Parallel IO Configurations - -# -# ESP-Driver:PCNT Configurations -# -# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set -# CONFIG_PCNT_ISR_IRAM_SAFE is not set -# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set -# end of ESP-Driver:PCNT Configurations - -# -# ESP-Driver:RMT Configurations -# -CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y -CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y -CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y -# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set -# CONFIG_RMT_TX_ISR_CACHE_SAFE is not set -# CONFIG_RMT_RX_ISR_CACHE_SAFE is not set -CONFIG_RMT_OBJ_CACHE_SAFE=y -# CONFIG_RMT_ENABLE_DEBUG_LOG is not set -# CONFIG_RMT_ISR_IRAM_SAFE is not set -# end of ESP-Driver:RMT Configurations - -# -# ESP-Driver:Sigma Delta Modulator Configurations -# -# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set -# CONFIG_SDM_ENABLE_DEBUG_LOG is not set -# end of ESP-Driver:Sigma Delta Modulator Configurations - -# -# ESP-Driver:SPI Configurations -# -# CONFIG_SPI_MASTER_IN_IRAM is not set -CONFIG_SPI_MASTER_ISR_IN_IRAM=y -# CONFIG_SPI_SLAVE_IN_IRAM is not set -CONFIG_SPI_SLAVE_ISR_IN_IRAM=y -# end of ESP-Driver:SPI Configurations - -# -# ESP-Driver:Temperature Sensor Configurations -# -# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set -# CONFIG_TEMP_SENSOR_ISR_IRAM_SAFE is not set -# end of ESP-Driver:Temperature Sensor Configurations - -# -# ESP-Driver:TWAI Configurations -# -# CONFIG_TWAI_ISR_IN_IRAM is not set -# CONFIG_TWAI_ISR_CACHE_SAFE is not set -# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set -# end of ESP-Driver:TWAI Configurations - -# -# ESP-Driver:UART Configurations -# -# CONFIG_UART_ISR_IN_IRAM is not set -# end of ESP-Driver:UART Configurations - -# -# ESP-Driver:UHCI Configurations -# -# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set -# CONFIG_UHCI_ISR_CACHE_SAFE is not set -# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set -# end of ESP-Driver:UHCI Configurations - -# -# ESP-Driver:USB Serial/JTAG Configuration -# -CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y -# end of ESP-Driver:USB Serial/JTAG Configuration - -# -# Ethernet -# -CONFIG_ETH_ENABLED=y -CONFIG_ETH_USE_SPI_ETHERNET=y -# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set -# CONFIG_ETH_SPI_ETHERNET_W5500 is not set -# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set -# CONFIG_ETH_USE_OPENETH is not set -# CONFIG_ETH_TRANSMIT_MUTEX is not set -# end of Ethernet - -# -# Event Loop Library -# -# CONFIG_ESP_EVENT_LOOP_PROFILING is not set -CONFIG_ESP_EVENT_POST_FROM_ISR=y -CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y -# end of Event Loop Library - -# -# GDB Stub -# -CONFIG_ESP_GDBSTUB_ENABLED=y -# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set -CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y -CONFIG_ESP_GDBSTUB_MAX_TASKS=32 -# end of GDB Stub - -# -# ESP HID -# -CONFIG_ESPHID_TASK_SIZE_BT=2048 -CONFIG_ESPHID_TASK_SIZE_BLE=4096 -# end of ESP HID - -# -# ESP HTTP client -# -CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y -# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set -# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set -# CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set -CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000 -# end of ESP HTTP client - -# -# HTTP Server -# -CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024 -CONFIG_HTTPD_MAX_URI_LEN=512 -CONFIG_HTTPD_ERR_RESP_NO_DELAY=y -CONFIG_HTTPD_PURGE_BUF_LEN=32 -# CONFIG_HTTPD_LOG_PURGE_DATA is not set -# CONFIG_HTTPD_WS_SUPPORT is not set -# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set -CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000 -# end of HTTP Server - -# -# ESP HTTPS OTA -# -# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set -# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set -CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000 -# end of ESP HTTPS OTA - -# -# ESP HTTPS server -# -# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set -CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000 -# CONFIG_ESP_HTTPS_SERVER_CERT_SELECT_HOOK is not set -# end of ESP HTTPS server - -# -# Hardware Settings -# - -# -# Chip revision -# -CONFIG_ESP32C6_REV_MIN_0=y -# CONFIG_ESP32C6_REV_MIN_1 is not set -# CONFIG_ESP32C6_REV_MIN_2 is not set -CONFIG_ESP32C6_REV_MIN_FULL=0 -CONFIG_ESP_REV_MIN_FULL=0 - -# -# Maximum Supported ESP32-C6 Revision (Rev v0.99) -# -CONFIG_ESP32C6_REV_MAX_FULL=99 -CONFIG_ESP_REV_MAX_FULL=99 -CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 -CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 - -# -# Maximum Supported ESP32-C6 eFuse Block Revision (eFuse Block Rev v0.99) -# -# end of Chip revision - -# -# MAC Config -# -CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_IEEE802154=y -CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y -CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 -# CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES_TWO is not set -CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES_FOUR=y -CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES=4 -# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set -# end of MAC Config - -# -# Sleep Config -# -# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set -CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y -# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set -CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y -CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=0 -# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set -# CONFIG_ESP_SLEEP_DEBUG is not set -CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y -# end of Sleep Config - -# -# RTC Clock Config -# -CONFIG_RTC_CLK_SRC_INT_RC=y -# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set -# CONFIG_RTC_CLK_SRC_EXT_OSC is not set -# CONFIG_RTC_CLK_SRC_USE_DANGEROUS_RC32K_ALLOWED is not set -CONFIG_RTC_CLK_CAL_CYCLES=1024 -# end of RTC Clock Config - -# -# Peripheral Control -# -CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=y -CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=y -# end of Peripheral Control - -# -# ETM Configuration -# -# CONFIG_ETM_ENABLE_DEBUG_LOG is not set -# end of ETM Configuration - -# -# GDMA Configurations -# -CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y -CONFIG_GDMA_ISR_HANDLER_IN_IRAM=y -CONFIG_GDMA_OBJ_DRAM_SAFE=y -# CONFIG_GDMA_ENABLE_DEBUG_LOG is not set -# CONFIG_GDMA_ISR_IRAM_SAFE is not set -# end of GDMA Configurations - -# -# Main XTAL Config -# -CONFIG_XTAL_FREQ_40=y -CONFIG_XTAL_FREQ=40 -# end of Main XTAL Config - -# -# Power Supplier -# - -# -# Brownout Detector -# -CONFIG_ESP_BROWNOUT_DET=y -CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set -CONFIG_ESP_BROWNOUT_DET_LVL=7 -CONFIG_ESP_BROWNOUT_USE_INTR=y -# end of Brownout Detector -# end of Power Supplier - -CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y -CONFIG_ESP_INTR_IN_IRAM=y -# end of Hardware Settings - -# -# ESP-Driver:LCD Controller Configurations -# -# CONFIG_LCD_ENABLE_DEBUG_LOG is not set -# end of ESP-Driver:LCD Controller Configurations - -# -# ESP-MM: Memory Management Configurations -# -# end of ESP-MM: Memory Management Configurations - -# -# ESP NETIF Adapter -# -CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 -# CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set -CONFIG_ESP_NETIF_TCPIP_LWIP=y -# CONFIG_ESP_NETIF_LOOPBACK is not set -CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y -CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y -# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set -# CONFIG_ESP_NETIF_L2_TAP is not set -# CONFIG_ESP_NETIF_BRIDGE_EN is not set -# CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF is not set -# end of ESP NETIF Adapter - -# -# Partition API Configuration -# -# end of Partition API Configuration - -# -# PHY -# -CONFIG_ESP_PHY_ENABLED=y -CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y -# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set -CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 -CONFIG_ESP_PHY_MAX_TX_POWER=20 -# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set -# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set -CONFIG_ESP_PHY_RF_CAL_PARTIAL=y -# CONFIG_ESP_PHY_RF_CAL_NONE is not set -# CONFIG_ESP_PHY_RF_CAL_FULL is not set -CONFIG_ESP_PHY_CALIBRATION_MODE=0 -# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set -# CONFIG_ESP_PHY_RECORD_USED_TIME is not set -CONFIG_ESP_PHY_IRAM_OPT=y -# end of PHY - -# -# Power Management -# -CONFIG_PM_SLEEP_FUNC_IN_IRAM=y -# CONFIG_PM_ENABLE is not set -CONFIG_PM_SLP_IRAM_OPT=y -CONFIG_PM_SLP_DEFAULT_PARAMS_OPT=y -CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y -# CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set -# end of Power Management - -# -# ESP PSRAM -# - -# -# ESP Ringbuf -# -# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set -# end of ESP Ringbuf - -# -# ESP-ROM -# -CONFIG_ESP_ROM_PRINT_IN_IRAM=y -# end of ESP-ROM - -# -# ESP Security Specific -# - -# -# Crypto DPA Protection -# -CONFIG_ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP=y -CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_LOW=y -# CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_MEDIUM is not set -# CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_HIGH is not set -CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL=1 -# end of Crypto DPA Protection -# end of ESP Security Specific - -# -# ESP System Settings -# -# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set -# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_120 is not set -CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y -CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 -# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set -CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y -# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set -# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set -CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 -CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE=y -CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y -CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y -CONFIG_ESP_SYSTEM_NO_BACKTRACE=y -# CONFIG_ESP_SYSTEM_USE_EH_FRAME is not set -# CONFIG_ESP_SYSTEM_USE_FRAME_POINTER is not set - -# -# Memory protection -# -CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT=y -# CONFIG_ESP_SYSTEM_PMP_LP_CORE_RESERVE_MEM_EXECUTABLE is not set -# end of Memory protection - -CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 -CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 -CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y -# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set -CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 -CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 -CONFIG_ESP_CONSOLE_UART_DEFAULT=y -# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set -# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set -# CONFIG_ESP_CONSOLE_NONE is not set -# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set -CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y -CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y -CONFIG_ESP_CONSOLE_UART=y -CONFIG_ESP_CONSOLE_UART_NUM=0 -CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 -CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 -CONFIG_ESP_INT_WDT=y -CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 -CONFIG_ESP_TASK_WDT_EN=y -CONFIG_ESP_TASK_WDT_INIT=y -# CONFIG_ESP_TASK_WDT_PANIC is not set -CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 -CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y -# CONFIG_ESP_PANIC_HANDLER_IRAM is not set -# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set -# CONFIG_ESP_DEBUG_INCLUDE_OCD_STUB_BINS is not set -CONFIG_ESP_DEBUG_OCDAWARE=y -CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y -CONFIG_ESP_SYSTEM_HW_STACK_GUARD=y -CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y -CONFIG_ESP_SYSTEM_HW_PC_RECORD=y -# end of ESP System Settings - -# -# IPC (Inter-Processor Call) -# -CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 -# end of IPC (Inter-Processor Call) - -# -# ESP Timer (High Resolution Timer) -# -CONFIG_ESP_TIMER_IN_IRAM=y -# CONFIG_ESP_TIMER_PROFILING is not set -CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y -CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y -CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 -CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 -# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set -CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 -CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y -CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y -# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set -CONFIG_ESP_TIMER_IMPL_SYSTIMER=y -# end of ESP Timer (High Resolution Timer) - -# -# Wi-Fi -# -CONFIG_ESP_WIFI_ENABLED=y -CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 -CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set -CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y -CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 -CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 -CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y -# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set -CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 -CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 -# CONFIG_ESP_WIFI_CSI_ENABLED is not set -CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y -CONFIG_ESP_WIFI_TX_BA_WIN=6 -CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y -CONFIG_ESP_WIFI_RX_BA_WIN=6 -CONFIG_ESP_WIFI_NVS_ENABLED=y -CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 -CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 -CONFIG_ESP_WIFI_IRAM_OPT=y -CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y -CONFIG_ESP_WIFI_RX_IRAM_OPT=y -CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y -CONFIG_ESP_WIFI_ENABLE_SAE_PK=y -CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y -CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y -CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y -CONFIG_ESP_WIFI_SLP_IRAM_OPT=y -CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 -CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT=y -CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 -CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 -# CONFIG_ESP_WIFI_FTM_ENABLE is not set -CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y -# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set -CONFIG_ESP_WIFI_GMAC_SUPPORT=y -CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y -# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set -CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 -CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y -CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y -# CONFIG_ESP_WIFI_WAPI_PSK is not set -# CONFIG_ESP_WIFI_SUITE_B_192 is not set -# CONFIG_ESP_WIFI_11KV_SUPPORT is not set -# CONFIG_ESP_WIFI_MBO_SUPPORT is not set -# CONFIG_ESP_WIFI_DPP_SUPPORT is not set -# CONFIG_ESP_WIFI_11R_SUPPORT is not set -# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set -# CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS is not set -# CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS is not set -CONFIG_ESP_WIFI_TX_HETB_QUEUE_NUM=3 - -# -# WPS Configuration Options -# -# CONFIG_ESP_WIFI_WPS_STRICT is not set -# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set -# end of WPS Configuration Options - -# CONFIG_ESP_WIFI_DEBUG_PRINT is not set -# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set -CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y -# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set -# end of Wi-Fi - -# -# Core dump -# -# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set -# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set -CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y -# end of Core dump - -# -# FAT Filesystem support -# -CONFIG_FATFS_VOLUME_COUNT=2 -CONFIG_FATFS_LFN_NONE=y -# CONFIG_FATFS_LFN_HEAP is not set -# CONFIG_FATFS_LFN_STACK is not set -# CONFIG_FATFS_SECTOR_512 is not set -CONFIG_FATFS_SECTOR_4096=y -# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set -CONFIG_FATFS_CODEPAGE_437=y -# CONFIG_FATFS_CODEPAGE_720 is not set -# CONFIG_FATFS_CODEPAGE_737 is not set -# CONFIG_FATFS_CODEPAGE_771 is not set -# CONFIG_FATFS_CODEPAGE_775 is not set -# CONFIG_FATFS_CODEPAGE_850 is not set -# CONFIG_FATFS_CODEPAGE_852 is not set -# CONFIG_FATFS_CODEPAGE_855 is not set -# CONFIG_FATFS_CODEPAGE_857 is not set -# CONFIG_FATFS_CODEPAGE_860 is not set -# CONFIG_FATFS_CODEPAGE_861 is not set -# CONFIG_FATFS_CODEPAGE_862 is not set -# CONFIG_FATFS_CODEPAGE_863 is not set -# CONFIG_FATFS_CODEPAGE_864 is not set -# CONFIG_FATFS_CODEPAGE_865 is not set -# CONFIG_FATFS_CODEPAGE_866 is not set -# CONFIG_FATFS_CODEPAGE_869 is not set -# CONFIG_FATFS_CODEPAGE_932 is not set -# CONFIG_FATFS_CODEPAGE_936 is not set -# CONFIG_FATFS_CODEPAGE_949 is not set -# CONFIG_FATFS_CODEPAGE_950 is not set -CONFIG_FATFS_CODEPAGE=437 -CONFIG_FATFS_FS_LOCK=0 -CONFIG_FATFS_TIMEOUT_MS=10000 -CONFIG_FATFS_PER_FILE_CACHE=y -# CONFIG_FATFS_USE_FASTSEEK is not set -CONFIG_FATFS_USE_STRFUNC_NONE=y -# CONFIG_FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV is not set -# CONFIG_FATFS_USE_STRFUNC_WITH_CRLF_CONV is not set -CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 -# CONFIG_FATFS_IMMEDIATE_FSYNC is not set -# CONFIG_FATFS_USE_LABEL is not set -CONFIG_FATFS_LINK_LOCK=y -# CONFIG_FATFS_USE_DYN_BUFFERS is not set - -# -# File system free space calculation behavior -# -CONFIG_FATFS_DONT_TRUST_FREE_CLUSTER_CNT=0 -CONFIG_FATFS_DONT_TRUST_LAST_ALLOC=0 -# end of File system free space calculation behavior -# end of FAT Filesystem support - -# -# FreeRTOS -# - -# -# Kernel -# -# CONFIG_FREERTOS_SMP is not set -CONFIG_FREERTOS_UNICORE=y -CONFIG_FREERTOS_HZ=1000 -CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y -# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set -# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set -CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y -CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 -CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 -# CONFIG_FREERTOS_USE_IDLE_HOOK is not set -# CONFIG_FREERTOS_USE_TICK_HOOK is not set -CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 -# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set -CONFIG_FREERTOS_USE_TIMERS=y -CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" -# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set -CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y -CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF -CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 -CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 -CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 -CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 -CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 -# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set -# CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set -# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set -# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set -# end of Kernel - -# -# Port -# -CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y -# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set -CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y -# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set -# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set -CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y -CONFIG_FREERTOS_ISR_STACKSIZE=1536 -CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y -CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y -CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y -# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set -CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y -# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set -# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set -# end of Port - -# -# Extra -# -# end of Extra - -CONFIG_FREERTOS_PORT=y -CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF -CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y -CONFIG_FREERTOS_DEBUG_OCDAWARE=y -CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y -CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y -CONFIG_FREERTOS_NUMBER_OF_CORES=1 -CONFIG_FREERTOS_IN_IRAM=y -# end of FreeRTOS - -# -# Hardware Abstraction Layer (HAL) and Low Level (LL) -# -CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y -# CONFIG_HAL_ASSERTION_DISABLE is not set -# CONFIG_HAL_ASSERTION_SILENT is not set -# CONFIG_HAL_ASSERTION_ENABLE is not set -CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 -CONFIG_HAL_SYSTIMER_USE_ROM_IMPL=y -CONFIG_HAL_WDT_USE_ROM_IMPL=y -# end of Hardware Abstraction Layer (HAL) and Low Level (LL) - -# -# Heap memory debugging -# -CONFIG_HEAP_POISONING_DISABLED=y -# CONFIG_HEAP_POISONING_LIGHT is not set -# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set -CONFIG_HEAP_TRACING_OFF=y -# CONFIG_HEAP_TRACING_STANDALONE is not set -# CONFIG_HEAP_TRACING_TOHOST is not set -# CONFIG_HEAP_USE_HOOKS is not set -# CONFIG_HEAP_TASK_TRACKING is not set -# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set -CONFIG_HEAP_TLSF_USE_ROM_IMPL=y -# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set -# end of Heap memory debugging - -# -# IEEE 802.15.4 -# -CONFIG_IEEE802154_ENABLED=y -CONFIG_IEEE802154_RX_BUFFER_SIZE=20 -# CONFIG_IEEE802154_CCA_CARRIER is not set -CONFIG_IEEE802154_CCA_ED=y -# CONFIG_IEEE802154_CCA_CARRIER_OR_ED is not set -# CONFIG_IEEE802154_CCA_CARRIER_AND_ED is not set -CONFIG_IEEE802154_CCA_MODE=1 -CONFIG_IEEE802154_CCA_THRESHOLD=-60 -CONFIG_IEEE802154_PENDING_TABLE_SIZE=20 -# CONFIG_IEEE802154_MULTI_PAN_ENABLE is not set -CONFIG_IEEE802154_TIMING_OPTIMIZATION=y -# CONFIG_IEEE802154_DEBUG is not set -# CONFIG_IEEE802154_DEBUG_ASSERT_MONITOR is not set -# end of IEEE 802.15.4 - -# -# Log -# -CONFIG_LOG_VERSION_1=y -# CONFIG_LOG_VERSION_2 is not set -CONFIG_LOG_VERSION=1 - -# -# Log Level -# -# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set -CONFIG_LOG_DEFAULT_LEVEL_ERROR=y -# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set -# CONFIG_LOG_DEFAULT_LEVEL_INFO is not set -# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set -# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set -CONFIG_LOG_DEFAULT_LEVEL=1 -CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y -# CONFIG_LOG_MAXIMUM_LEVEL_WARN is not set -# CONFIG_LOG_MAXIMUM_LEVEL_INFO is not set -# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set -# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set -CONFIG_LOG_MAXIMUM_LEVEL=1 - -# -# Level Settings -# -# CONFIG_LOG_MASTER_LEVEL is not set -CONFIG_LOG_DYNAMIC_LEVEL_CONTROL=y -# CONFIG_LOG_TAG_LEVEL_IMPL_NONE is not set -# CONFIG_LOG_TAG_LEVEL_IMPL_LINKED_LIST is not set -CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST=y -# CONFIG_LOG_TAG_LEVEL_CACHE_ARRAY is not set -CONFIG_LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP=y -CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31 -# end of Level Settings -# end of Log Level - -# -# Format -# -# CONFIG_LOG_COLORS is not set -CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y -# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set -# end of Format - -# -# Settings -# -CONFIG_LOG_MODE_TEXT_EN=y -CONFIG_LOG_MODE_TEXT=y -# end of Settings - -CONFIG_LOG_IN_IRAM=y -# end of Log - -# -# LWIP -# -CONFIG_LWIP_ENABLE=y -CONFIG_LWIP_LOCAL_HOSTNAME="espressif" -CONFIG_LWIP_TCPIP_TASK_PRIO=18 -CONFIG_LWIP_TCPIP_CORE_LOCKING=y -# CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT is not set -CONFIG_LWIP_CHECK_THREAD_SAFETY=y -CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y -# CONFIG_LWIP_L2_TO_L3_COPY is not set -# CONFIG_LWIP_IRAM_OPTIMIZATION is not set -# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set -CONFIG_LWIP_TIMERS_ONDEMAND=y -CONFIG_LWIP_ND6=y -# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set -CONFIG_LWIP_MAX_SOCKETS=10 -# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set -# CONFIG_LWIP_SO_LINGER is not set -CONFIG_LWIP_SO_REUSE=y -CONFIG_LWIP_SO_REUSE_RXTOALL=y -CONFIG_LWIP_SO_RCVBUF=y -# CONFIG_LWIP_NETBUF_RECVINFO is not set -CONFIG_LWIP_IP_DEFAULT_TTL=64 -CONFIG_LWIP_IP4_FRAG=y -CONFIG_LWIP_IP6_FRAG=y -# CONFIG_LWIP_IP4_REASSEMBLY is not set -# CONFIG_LWIP_IP6_REASSEMBLY is not set -CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 -# CONFIG_LWIP_IP_FORWARD is not set -# CONFIG_LWIP_STATS is not set -CONFIG_LWIP_ESP_GRATUITOUS_ARP=y -CONFIG_LWIP_GARP_TMR_INTERVAL=60 -CONFIG_LWIP_ESP_MLDV6_REPORT=y -CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 -CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 -CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y -# CONFIG_LWIP_DHCP_DOES_ACD_CHECK is not set -# CONFIG_LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP is not set -# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set -CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y -# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set -CONFIG_LWIP_DHCP_OPTIONS_LEN=68 -CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 -CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 - -# -# DHCP server -# -CONFIG_LWIP_DHCPS=y -CONFIG_LWIP_DHCPS_LEASE_UNIT=60 -CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 -CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y -CONFIG_LWIP_DHCPS_ADD_DNS=y -# end of DHCP server - -# CONFIG_LWIP_AUTOIP is not set -CONFIG_LWIP_IPV4=y -CONFIG_LWIP_IPV6=y -# CONFIG_LWIP_IPV6_AUTOCONFIG is not set -CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 -# CONFIG_LWIP_IPV6_FORWARD is not set -# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set -CONFIG_LWIP_NETIF_LOOPBACK=y -CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 - -# -# TCP -# -CONFIG_LWIP_MAX_ACTIVE_TCP=16 -CONFIG_LWIP_MAX_LISTENING_TCP=16 -CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y -CONFIG_LWIP_TCP_MAXRTX=12 -CONFIG_LWIP_TCP_SYNMAXRTX=12 -CONFIG_LWIP_TCP_MSS=1440 -CONFIG_LWIP_TCP_TMR_INTERVAL=250 -CONFIG_LWIP_TCP_MSL=60000 -CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 -CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760 -CONFIG_LWIP_TCP_WND_DEFAULT=5760 -CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 -CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6 -CONFIG_LWIP_TCP_QUEUE_OOSEQ=y -CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6 -CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4 -# CONFIG_LWIP_TCP_SACK_OUT is not set -CONFIG_LWIP_TCP_OVERSIZE_MSS=y -# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set -# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set -CONFIG_LWIP_TCP_RTO_TIME=1500 -# end of TCP - -# -# UDP -# -CONFIG_LWIP_MAX_UDP_PCBS=16 -CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 -# end of UDP - -# -# Checksums -# -# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set -# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set -CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y -# end of Checksums - -CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 -CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y -# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set -CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF -CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 -CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 -CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5 -CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3 -CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10 -# CONFIG_LWIP_PPP_SUPPORT is not set -# CONFIG_LWIP_SLIP_SUPPORT is not set - -# -# ICMP -# -CONFIG_LWIP_ICMP=y -CONFIG_LWIP_MULTICAST_PING=y -# CONFIG_LWIP_BROADCAST_PING is not set -# end of ICMP - -# -# LWIP RAW API -# -CONFIG_LWIP_MAX_RAW_PCBS=16 -# end of LWIP RAW API - -# -# SNTP -# -CONFIG_LWIP_SNTP_MAX_SERVERS=1 -# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set -CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 -CONFIG_LWIP_SNTP_STARTUP_DELAY=y -CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000 -# end of SNTP - -# -# DNS -# -CONFIG_LWIP_DNS_MAX_HOST_IP=1 -CONFIG_LWIP_DNS_MAX_SERVERS=3 -# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set -# CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set -# CONFIG_LWIP_USE_ESP_GETADDRINFO is not set -# end of DNS - -CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 -CONFIG_LWIP_ESP_LWIP_ASSERT=y - -# -# Hooks -# -# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set -CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y -# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set -CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y -# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set -# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set -CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y -# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set -# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set -CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y -# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set -# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set -CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_NONE=y -# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT is not set -# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM is not set -CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y -# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set -# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set -CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y -# CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set -# CONFIG_LWIP_HOOK_IP6_INPUT_NONE is not set -CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y -# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set -# end of Hooks - -# CONFIG_LWIP_DEBUG is not set -# end of LWIP - -# -# mbedTLS -# -CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y -# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set -# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set -CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y -CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 -CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 -# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set -# CONFIG_MBEDTLS_DEBUG is not set - -# -# mbedTLS v3.x related -# -# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set -# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set -# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set -# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set -CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y -CONFIG_MBEDTLS_PKCS7_C=y -# end of mbedTLS v3.x related - -# -# Certificate Bundle -# -CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y -CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y -# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set -# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set -# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set -# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set -CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 -# end of Certificate Bundle - -# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set -CONFIG_MBEDTLS_CMAC_C=y -CONFIG_MBEDTLS_HARDWARE_AES=y -CONFIG_MBEDTLS_AES_USE_INTERRUPT=y -CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0 -CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y -CONFIG_MBEDTLS_HARDWARE_MPI=y -CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI=y -CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y -CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0 -CONFIG_MBEDTLS_HARDWARE_SHA=y -CONFIG_MBEDTLS_HARDWARE_ECC=y -CONFIG_MBEDTLS_ECC_OTHER_CURVES_SOFT_FALLBACK=y -CONFIG_MBEDTLS_ROM_MD5=y -# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set -# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set -CONFIG_MBEDTLS_HAVE_TIME=y -# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set -# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set -CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y -CONFIG_MBEDTLS_SHA1_C=y -CONFIG_MBEDTLS_SHA512_C=y -# CONFIG_MBEDTLS_SHA3_C is not set -CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y -# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set -# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set -# CONFIG_MBEDTLS_TLS_DISABLED is not set -CONFIG_MBEDTLS_TLS_SERVER=y -CONFIG_MBEDTLS_TLS_CLIENT=y -CONFIG_MBEDTLS_TLS_ENABLED=y - -# -# TLS Key Exchange Methods -# -# CONFIG_MBEDTLS_PSK_MODES is not set -CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y -# end of TLS Key Exchange Methods - -CONFIG_MBEDTLS_SSL_RENEGOTIATION=y -CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y -# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set -# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set -CONFIG_MBEDTLS_SSL_ALPN=y -CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y -CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y - -# -# Symmetric Ciphers -# -CONFIG_MBEDTLS_AES_C=y -# CONFIG_MBEDTLS_CAMELLIA_C is not set -# CONFIG_MBEDTLS_DES_C is not set -# CONFIG_MBEDTLS_BLOWFISH_C is not set -# CONFIG_MBEDTLS_XTEA_C is not set -CONFIG_MBEDTLS_CCM_C=y -CONFIG_MBEDTLS_GCM_C=y -# CONFIG_MBEDTLS_NIST_KW_C is not set -# end of Symmetric Ciphers - -# CONFIG_MBEDTLS_RIPEMD160_C is not set - -# -# Certificates -# -CONFIG_MBEDTLS_PEM_PARSE_C=y -CONFIG_MBEDTLS_PEM_WRITE_C=y -CONFIG_MBEDTLS_X509_CRL_PARSE_C=y -CONFIG_MBEDTLS_X509_CSR_PARSE_C=y -# end of Certificates - -CONFIG_MBEDTLS_ECP_C=y -CONFIG_MBEDTLS_PK_PARSE_EC_EXTENDED=y -CONFIG_MBEDTLS_PK_PARSE_EC_COMPRESSED=y -# CONFIG_MBEDTLS_DHM_C is not set -CONFIG_MBEDTLS_ECDH_C=y -CONFIG_MBEDTLS_ECDSA_C=y -# CONFIG_MBEDTLS_ECJPAKE_C is not set -CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y -CONFIG_MBEDTLS_ECP_NIST_OPTIM=y -# CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set -# CONFIG_MBEDTLS_POLY1305_C is not set -# CONFIG_MBEDTLS_CHACHA20_C is not set -CONFIG_MBEDTLS_HKDF_C=y -# CONFIG_MBEDTLS_THREADING_C is not set -CONFIG_MBEDTLS_ERROR_STRINGS=y -CONFIG_MBEDTLS_FS_IO=y -# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set -# end of mbedTLS - -# -# ESP-MQTT Configurations -# -CONFIG_MQTT_PROTOCOL_311=y -# CONFIG_MQTT_PROTOCOL_5 is not set -CONFIG_MQTT_TRANSPORT_SSL=y -CONFIG_MQTT_TRANSPORT_WEBSOCKET=y -CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y -# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set -# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set -# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set -# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set -# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set -# CONFIG_MQTT_CUSTOM_OUTBOX is not set -# end of ESP-MQTT Configurations - -# -# LibC -# -CONFIG_LIBC_NEWLIB=y -CONFIG_LIBC_MISC_IN_IRAM=y -CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=y -CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y -# CONFIG_LIBC_STDOUT_LINE_ENDING_LF is not set -# CONFIG_LIBC_STDOUT_LINE_ENDING_CR is not set -# CONFIG_LIBC_STDIN_LINE_ENDING_CRLF is not set -# CONFIG_LIBC_STDIN_LINE_ENDING_LF is not set -CONFIG_LIBC_STDIN_LINE_ENDING_CR=y -# CONFIG_LIBC_NEWLIB_NANO_FORMAT is not set -CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y -# CONFIG_LIBC_TIME_SYSCALL_USE_RTC is not set -# CONFIG_LIBC_TIME_SYSCALL_USE_HRT is not set -# CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set -# CONFIG_LIBC_OPTIMIZED_MISALIGNED_ACCESS is not set -# end of LibC - -# -# NVS -# -# CONFIG_NVS_ENCRYPTION is not set -# CONFIG_NVS_ASSERT_ERROR_CHECK is not set -# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set -# end of NVS - -# -# OpenThread -# -CONFIG_OPENTHREAD_ENABLED=y - -# -# Thread Version Message -# -CONFIG_OPENTHREAD_PACKAGE_NAME="openthread-esp32" -CONFIG_OPENTHREAD_PLATFORM_INFO="esp32c6" -# end of Thread Version Message - -# -# Thread Console -# -CONFIG_OPENTHREAD_CONSOLE_TYPE_UART=y -# CONFIG_OPENTHREAD_CONSOLE_TYPE_USB_SERIAL_JTAG is not set -# CONFIG_OPENTHREAD_CLI is not set -# end of Thread Console - -# -# Thread Core Features -# - -# -# Thread Operational Dataset -# -CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP" -CONFIG_OPENTHREAD_MESH_LOCAL_PREFIX="fd00:db8:a0:0::/64" -CONFIG_OPENTHREAD_NETWORK_CHANNEL=15 -CONFIG_OPENTHREAD_NETWORK_PANID=0x1234 -CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe" -CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff" -CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53" -# end of Thread Operational Dataset - -CONFIG_OPENTHREAD_FTD=y -# CONFIG_OPENTHREAD_MTD is not set -# CONFIG_OPENTHREAD_RADIO is not set - -# -# Thread 15.4 Radio Link -# -CONFIG_OPENTHREAD_RADIO_NATIVE=y -# CONFIG_OPENTHREAD_RADIO_SPINEL_UART is not set -# CONFIG_OPENTHREAD_RADIO_SPINEL_SPI is not set -# CONFIG_OPENTHREAD_RADIO_154_NONE is not set -# end of Thread 15.4 Radio Link - -# CONFIG_OPENTHREAD_BORDER_ROUTER is not set -# CONFIG_OPENTHREAD_COMMISSIONER is not set -# CONFIG_OPENTHREAD_JOINER is not set -CONFIG_OPENTHREAD_SRP_CLIENT=y - -# -# SRP Client Configurations -# -CONFIG_OPENTHREAD_SRP_CLIENT_MAX_SERVICES=5 -# end of SRP Client Configurations - -CONFIG_OPENTHREAD_DNS_CLIENT=y -# CONFIG_OPENTHREAD_DNS64_CLIENT is not set -# CONFIG_OPENTHREAD_LINK_METRICS is not set -# CONFIG_OPENTHREAD_BORDER_AGENT_ENABLE is not set -# CONFIG_OPENTHREAD_MACFILTER_ENABLE is not set -# CONFIG_OPENTHREAD_CSL_ENABLE is not set - -# -# CSL Configurations -# -CONFIG_OPENTHREAD_CSL_ACCURACY=50 -CONFIG_OPENTHREAD_CSL_UNCERTAIN=0 -# CONFIG_OPENTHREAD_CSL_DEBUG_ENABLE is not set -# end of CSL Configurations - -# CONFIG_OPENTHREAD_TIME_SYNC is not set -# CONFIG_OPENTHREAD_RADIO_STATS_ENABLE is not set -# CONFIG_OPENTHREAD_RX_ON_WHEN_IDLE is not set -CONFIG_OPENTHREAD_DIAG=y - -# -# OpenThread Stack Parameters -# - -# -# Thread Address Query Config -# -CONFIG_OPENTHREAD_ADDRESS_QUERY_TIMEOUT=3 -CONFIG_OPENTHREAD_ADDRESS_QUERY_RETRY_DELAY=15 -CONFIG_OPENTHREAD_ADDRESS_QUERY_MAX_RETRY_DELAY=120 -# end of Thread Address Query Config - -CONFIG_OPENTHREAD_PREFERRED_CHANNEL_MASK=0x7fff800 -CONFIG_OPENTHREAD_SUPPORTED_CHANNEL_MASK=0x7fff800 -CONFIG_OPENTHREAD_NUM_MESSAGE_BUFFERS=65 -CONFIG_OPENTHREAD_XTAL_ACCURACY=10 -CONFIG_OPENTHREAD_BUS_LATENCY=4000 -CONFIG_OPENTHREAD_MLE_MAX_CHILDREN=10 -CONFIG_OPENTHREAD_TMF_ADDR_CACHE_ENTRIES=20 -CONFIG_OPENTHREAD_UART_BUFFER_SIZE=2048 -CONFIG_OPENTHREAD_MAC_MAX_CSMA_BACKOFFS_DIRECT=4 -# end of OpenThread Stack Parameters -# end of Thread Core Features - -# -# Thread Log -# -# CONFIG_OPENTHREAD_LOG_LEVEL_DYNAMIC is not set -# CONFIG_OPENTHREAD_LOG_LEVEL_NONE is not set -# CONFIG_OPENTHREAD_LOG_LEVEL_CRIT is not set -# CONFIG_OPENTHREAD_LOG_LEVEL_WARN is not set -CONFIG_OPENTHREAD_LOG_LEVEL_NOTE=y -# CONFIG_OPENTHREAD_LOG_LEVEL_INFO is not set -# CONFIG_OPENTHREAD_LOG_LEVEL_DEBG is not set -CONFIG_OPENTHREAD_LOG_LEVEL=3 -# end of Thread Log - -# -# Thread Extensioned Features -# -# CONFIG_OPENTHREAD_HEADER_CUSTOM is not set -# end of Thread Extensioned Features - -# -# OpenThread Spinel -# -# CONFIG_OPENTHREAD_SPINEL_ONLY is not set -CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE=2048 -# end of OpenThread Spinel -# end of OpenThread - -# -# Protocomm -# -CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y -CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y -CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y -CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y -# end of Protocomm - -# -# PThreads -# -CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 -CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 -CONFIG_PTHREAD_STACK_MIN=768 -CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 -CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" -# end of PThreads - -# -# MMU Config -# -CONFIG_MMU_PAGE_SIZE_64KB=y -CONFIG_MMU_PAGE_MODE="64KB" -CONFIG_MMU_PAGE_SIZE=0x10000 -# end of MMU Config - -# -# Main Flash configuration -# - -# -# SPI Flash behavior when brownout -# -CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y -CONFIG_SPI_FLASH_BROWNOUT_RESET=y -# end of SPI Flash behavior when brownout - -# -# Optional and Experimental Features (READ DOCS FIRST) -# - -# -# Features here require specific hardware (READ DOCS FIRST!) -# -# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set -CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 -# CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set -# CONFIG_SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND is not set -CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=y -# end of Optional and Experimental Features (READ DOCS FIRST) -# end of Main Flash configuration - -# -# SPI Flash driver -# -# CONFIG_SPI_FLASH_VERIFY_WRITE is not set -# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set -CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y -# CONFIG_SPI_FLASH_ROM_IMPL is not set -CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y -# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set -# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set -# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set -CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y -CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 -CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 -CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 -# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set -# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set -# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set - -# -# Auto-detect flash chips -# -CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y -# CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP is not set -# CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP is not set -# CONFIG_SPI_FLASH_SUPPORT_GD_CHIP is not set -# CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP is not set -# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set -# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set -# end of Auto-detect flash chips - -CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y -# end of SPI Flash driver - -# -# SPIFFS Configuration -# -CONFIG_SPIFFS_MAX_PARTITIONS=3 - -# -# SPIFFS Cache Configuration -# -CONFIG_SPIFFS_CACHE=y -CONFIG_SPIFFS_CACHE_WR=y -# CONFIG_SPIFFS_CACHE_STATS is not set -# end of SPIFFS Cache Configuration - -CONFIG_SPIFFS_PAGE_CHECK=y -CONFIG_SPIFFS_GC_MAX_RUNS=10 -# CONFIG_SPIFFS_GC_STATS is not set -CONFIG_SPIFFS_PAGE_SIZE=256 -CONFIG_SPIFFS_OBJ_NAME_LEN=32 -# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set -CONFIG_SPIFFS_USE_MAGIC=y -CONFIG_SPIFFS_USE_MAGIC_LENGTH=y -CONFIG_SPIFFS_META_LENGTH=4 -CONFIG_SPIFFS_USE_MTIME=y - -# -# Debug Configuration -# -# CONFIG_SPIFFS_DBG is not set -# CONFIG_SPIFFS_API_DBG is not set -# CONFIG_SPIFFS_GC_DBG is not set -# CONFIG_SPIFFS_CACHE_DBG is not set -# CONFIG_SPIFFS_CHECK_DBG is not set -# CONFIG_SPIFFS_TEST_VISUALISATION is not set -# end of Debug Configuration -# end of SPIFFS Configuration - -# -# TCP Transport -# - -# -# Websocket -# -CONFIG_WS_TRANSPORT=y -CONFIG_WS_BUFFER_SIZE=1024 -# CONFIG_WS_DYNAMIC_BUFFER is not set -# end of Websocket -# end of TCP Transport - -# -# Ultra Low Power (ULP) Co-processor -# -# CONFIG_ULP_COPROC_ENABLED is not set - -# -# ULP Debugging Options -# -# end of ULP Debugging Options -# end of Ultra Low Power (ULP) Co-processor - -# -# Unity unit testing library -# -CONFIG_UNITY_ENABLE_FLOAT=y -CONFIG_UNITY_ENABLE_DOUBLE=y -# CONFIG_UNITY_ENABLE_64BIT is not set -# CONFIG_UNITY_ENABLE_COLOR is not set -CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y -# CONFIG_UNITY_ENABLE_FIXTURE is not set -# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set -# CONFIG_UNITY_TEST_ORDER_BY_FILE_PATH_AND_LINE is not set -# end of Unity unit testing library - -# -# Virtual file system -# -CONFIG_VFS_SUPPORT_IO=y -CONFIG_VFS_SUPPORT_DIR=y -CONFIG_VFS_SUPPORT_SELECT=y -CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y -# CONFIG_VFS_SELECT_IN_RAM is not set -CONFIG_VFS_SUPPORT_TERMIOS=y -CONFIG_VFS_MAX_COUNT=8 - -# -# Host File System I/O (Semihosting) -# -CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 -# end of Host File System I/O (Semihosting) - -CONFIG_VFS_INITIALIZE_DEV_NULL=y -# end of Virtual file system - -# -# Wear Levelling -# -# CONFIG_WL_SECTOR_SIZE_512 is not set -CONFIG_WL_SECTOR_SIZE_4096=y -CONFIG_WL_SECTOR_SIZE=4096 -# end of Wear Levelling - -# -# Wi-Fi Provisioning Manager -# -CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 -CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 -# CONFIG_WIFI_PROV_BLE_BONDING is not set -CONFIG_WIFI_PROV_BLE_SEC_CONN=y -# CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION is not set -# CONFIG_WIFI_PROV_BLE_NOTIFY is not set -# CONFIG_WIFI_PROV_KEEP_BLE_ON_AFTER_PROV is not set -CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y -# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set -# end of Wi-Fi Provisioning Manager - -# -# DSP Library -# -CONFIG_DSP_ANSI=y -CONFIG_DSP_OPTIMIZATION=0 -# CONFIG_DSP_MAX_FFT_SIZE_512 is not set -# CONFIG_DSP_MAX_FFT_SIZE_1024 is not set -# CONFIG_DSP_MAX_FFT_SIZE_2048 is not set -CONFIG_DSP_MAX_FFT_SIZE_4096=y -# CONFIG_DSP_MAX_FFT_SIZE_8192 is not set -# CONFIG_DSP_MAX_FFT_SIZE_16384 is not set -# CONFIG_DSP_MAX_FFT_SIZE_32768 is not set -CONFIG_DSP_MAX_FFT_SIZE=4096 -# end of DSP Library - -# -# Modbus configuration -# -CONFIG_FMB_COMM_MODE_TCP_EN=y -CONFIG_FMB_TCP_PORT_DEFAULT=502 -CONFIG_FMB_TCP_PORT_MAX_CONN=5 -CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20 -# CONFIG_FMB_TCP_UID_ENABLED is not set -CONFIG_FMB_COMM_MODE_RTU_EN=y -CONFIG_FMB_COMM_MODE_ASCII_EN=y -CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=3000 -CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 -CONFIG_FMB_QUEUE_LENGTH=20 -CONFIG_FMB_PORT_TASK_STACK_SIZE=4096 -CONFIG_FMB_SERIAL_BUF_SIZE=256 -CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8 -CONFIG_FMB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS=0 -CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000 -CONFIG_FMB_PORT_TASK_PRIO=10 -CONFIG_FMB_PORT_TASK_AFFINITY=0x7FFFFFFF -CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y -CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233 -CONFIG_FMB_CONTROLLER_SLAVE_ID_MAX_SIZE=32 -CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 -CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 -CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 -CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 -# CONFIG_FMB_TIMER_PORT_ENABLED is not set -# CONFIG_FMB_TIMER_USE_ISR_DISPATCH_METHOD is not set -# CONFIG_FMB_EXT_TYPE_SUPPORT is not set -# end of Modbus configuration - -# -# ESP serial flasher -# -CONFIG_SERIAL_FLASHER_MD5_ENABLED=y -CONFIG_SERIAL_FLASHER_RESET_HOLD_TIME_MS=100 -CONFIG_SERIAL_FLASHER_BOOT_HOLD_TIME_MS=50 -# end of ESP serial flasher - -# -# Zigbee -# -# CONFIG_ZB_ENABLED is not set -# end of Zigbee - -# -# Diagnostics data store -# -CONFIG_DIAG_DATA_STORE_RTC=y -# CONFIG_DIAG_DATA_STORE_FLASH is not set -# CONFIG_DIAG_DATA_STORE_DBG_PRINTS is not set -CONFIG_DIAG_DATA_STORE_REPORTING_WATERMARK_PERCENT=80 - -# -# RTC Store -# -CONFIG_RTC_STORE_DATA_SIZE=6144 -CONFIG_RTC_STORE_CRITICAL_DATA_SIZE=4096 -# end of RTC Store -# end of Diagnostics data store - -# -# Diagnostics -# -CONFIG_DIAG_LOG_MSG_ARG_FORMAT_TLV=y -# CONFIG_DIAG_LOG_MSG_ARG_FORMAT_STRING is not set -CONFIG_DIAG_LOG_MSG_ARG_MAX_SIZE=64 -CONFIG_DIAG_LOG_DROP_WIFI_LOGS=y -CONFIG_DIAG_ENABLE_METRICS=y -CONFIG_DIAG_METRICS_MAX_COUNT=20 -CONFIG_DIAG_ENABLE_HEAP_METRICS=y -CONFIG_DIAG_ENABLE_WIFI_METRICS=y -CONFIG_DIAG_ENABLE_VARIABLES=y -CONFIG_DIAG_VARIABLES_MAX_COUNT=20 -CONFIG_DIAG_ENABLE_NETWORK_VARIABLES=y -# CONFIG_DIAG_MORE_NETWORK_VARS is not set -# CONFIG_DIAG_USE_EXTERNAL_LOG_WRAP is not set -# end of Diagnostics - -# -# ESP Insights -# -# CONFIG_ESP_INSIGHTS_ENABLED is not set -# CONFIG_ESP_INSIGHTS_TRANSPORT_MQTT is not set -CONFIG_ESP_INSIGHTS_TRANSPORT_HTTPS=y -CONFIG_ESP_INSIGHTS_TRANSPORT_HTTPS_HOST="https://client.insights.espressif.com" -CONFIG_ESP_INSIGHTS_CLOUD_POST_MIN_INTERVAL_SEC=60 -CONFIG_ESP_INSIGHTS_CLOUD_POST_MAX_INTERVAL_SEC=240 -CONFIG_ESP_INSIGHTS_META_VERSION_10=y -# end of ESP Insights - -# -# CHIP Core -# - -# -# General Options -# -CONFIG_MAX_EXCHANGE_CONTEXTS=8 -CONFIG_MAX_BINDINGS=8 -CONFIG_MAX_FABRICS=5 -CONFIG_MAX_PEER_NODES=16 -CONFIG_MAX_UNSOLICITED_MESSAGE_HANDLERS=8 -# CONFIG_ENABLE_PW_RPC is not set -# CONFIG_USE_MINIMAL_MDNS is not set -# CONFIG_ENABLE_CHIP_SHELL is not set -# CONFIG_ENABLE_CHIP_CONTROLLER_BUILD is not set -# CONFIG_DISABLE_IPV4 is not set -# CONFIG_DISABLE_READ_CLIENT is not set -CONFIG_ENABLE_PERSIST_SUBSCRIPTIONS=y -# CONFIG_BUILD_CHIP_TESTS is not set -CONFIG_DISPATCH_EVENT_LONG_DISPATCH_TIME_WARNING_THRESHOLD_MS=700 -# CONFIG_CHIP_LOG_FILTERING is not set -CONFIG_ENABLE_CHIP_DATA_MODEL=y -# CONFIG_CHIP_SYSTEM_CONFIG_POOL_USE_HEAP is not set -CONFIG_MAX_GROUP_ENDPOINTS_PER_FABRIC=1 -CONFIG_MAX_GROUPS_PER_FABRIC_PER_ENDPOINT=4 -CONFIG_MAX_GROUP_KEYS_PER_FABRIC=3 -# end of General Options - -# -# Networking Options -# -CONFIG_NUM_TCP_ENDPOINTS=8 -CONFIG_NUM_UDP_ENDPOINTS=8 -CONFIG_MAX_CONNECTIONS=8 -CONFIG_DEFAULT_INCOMING_CONNECTION_IDLE_TIMEOUT=15000 -CONFIG_ENABLE_LWIP_THREAD_SAFETY=y -# end of Networking Options - -# -# System Options -# -CONFIG_NUM_TIMERS=32 -# CONFIG_ENABLE_OTA_REQUESTOR is not set -CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y -# CONFIG_ENABLE_SNTP_TIME_SYNC is not set -# end of System Options - -# -# Security Options -# - -# -# Debugging -# -# CONFIG_SECURITY_TEST_MODE is not set -# end of Debugging -# end of Security Options -# end of CHIP Core - -# -# CHIP Device Layer -# - -# -# General Options -# -CONFIG_CHIP_PROJECT_CONFIG="" -CONFIG_CHIP_TASK_STACK_SIZE=8192 -CONFIG_CHIP_TASK_PRIORITY=1 -CONFIG_MAX_EVENT_QUEUE_SIZE=40 -CONFIG_ENABLE_EXTENDED_DISCOVERY=y -# CONFIG_ENABLE_COMMISSIONABLE_DEVICE_TYPE is not set -# CONFIG_ENABLE_BG_EVENT_PROCESSING is not set -# end of General Options - -# -# Device Identification Options -# -CONFIG_DEVICE_VENDOR_ID=0xFFF1 -CONFIG_DEVICE_PRODUCT_ID=0x8000 -CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION=0 -CONFIG_DEVICE_SOFTWARE_VERSION_NUMBER=0 -CONFIG_DEVICE_TYPE=0 -# end of Device Identification Options - -# -# WiFi Station Options -# -# CONFIG_ENABLE_WIFI_STATION is not set -# end of WiFi Station Options - -# -# WiFi AP Options -# -# CONFIG_ENABLE_WIFI_AP is not set -# end of WiFi AP Options - -# -# BLE Options -# -CONFIG_ENABLE_CHIPOBLE=y -CONFIG_BLE_DEVICE_NAME_PREFIX="MATTER-" -CONFIG_BLE_FAST_ADVERTISING_INTERVAL_MIN=40 -CONFIG_BLE_FAST_ADVERTISING_INTERVAL_MAX=40 -CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MIN=800 -CONFIG_BLE_SLOW_ADVERTISING_INTERVAL_MAX=800 -CONFIG_CHIPOBLE_SINGLE_CONNECTION=y -CONFIG_CHIPOBLE_ENABLE_ADVERTISING_AUTOSTART=0 -# CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING is not set -# end of BLE Options - -# -# CHIP Thread Options -# -CONFIG_ENABLE_MATTER_OVER_THREAD=y -CONFIG_THREAD_TASK_STACK_SIZE=5120 -# end of CHIP Thread Options - -# -# Time Sync Options -# -CONFIG_ENABLE_SERVICE_DIRECTORY_TIME_SYNC=y -# CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC is not set -# end of Time Sync Options - -# -# Service Provisioning Options -# -CONFIG_SERVICE_PROVISIONING_ENDPOINT_ID=18B4300200000010 -CONFIG_SERVICE_PROVISIONING_CONNECTIVITY_TIMEOUT=10000 -CONFIG_SERVICE_PROVISIONING_REQUEST_TIMEOUT=10000 -# end of Service Provisioning Options - -# -# Commissioning options -# -CONFIG_RENDEZVOUS_WAIT_FOR_COMMISSIONING_COMPLETE=0 -# CONFIG_ENABLE_ROTATING_DEVICE_ID is not set -# CONFIG_ENABLE_ESP32_FACTORY_DATA_PROVIDER is not set -# CONFIG_SEC_CERT_DAC_PROVIDER is not set -# end of Commissioning options - -# -# Testing Options -# -CONFIG_USE_TEST_SERIAL_NUMBER="TEST_SN" -CONFIG_ENABLE_TEST_SETUP_PARAMS=y -CONFIG_TEST_EVENT_TRIGGER_ENABLED=y -CONFIG_TEST_EVENT_TRIGGER_ENABLE_KEY="00112233445566778899aabbccddeeff" -# CONFIG_ENABLE_FIXED_TUNNEL_SERVER is not set -# end of Testing Options - -# -# Network Telemetry Options -# -CONFIG_ENABLE_WIFI_TELEMETRY=y -# CONFIG_ENABLE_THREAD_TELEMETRY is not set -# CONFIG_ENABLE_THREAD_TELEMETRY_FULL is not set -# CONFIG_ENABLE_TUNNEL_TELEMETRY is not set -# CONFIG_ENABLE_ETHERNET_TELEMETRY is not set -# end of Network Telemetry Options - -# -# Event Logging Options -# -CONFIG_EVENT_LOGGING_CRIT_BUFFER_SIZE=4096 -CONFIG_EVENT_LOGGING_INFO_BUFFER_SIZE=1024 -CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE=1024 -CONFIG_CHIP_CONFIG_IM_PRETTY_PRINT=y -CONFIG_CHIP_LOG_DEFAULT_LEVEL_EQUALS_LOG_DEFAULT_LEVEL=y -# CONFIG_CHIP_LOG_DEFAULT_LEVEL_NONE is not set -# CONFIG_CHIP_LOG_DEFAULT_LEVEL_ERROR is not set -# CONFIG_CHIP_LOG_DEFAULT_LEVEL_PROGRESS is not set -# CONFIG_CHIP_LOG_DEFAULT_LEVEL_DETAIL is not set -# CONFIG_CHIP_LOG_DEFAULT_LEVEL_AUTOMATION is not set -CONFIG_CHIP_LOG_DEFAULT_LEVEL=1 -# end of Event Logging Options - -# CONFIG_CHIP_ENABLE_BDX_LOG_TRANSFER is not set - -# -# Matter OTA Image -# -# CONFIG_CHIP_OTA_IMAGE_BUILD is not set -# end of Matter OTA Image - -# -# External Platform -# -# CONFIG_CHIP_ENABLE_EXTERNAL_PLATFORM is not set -# end of External Platform - -# -# Matter Manufacturing Options -# -CONFIG_CHIP_FACTORY_NAMESPACE_PARTITION_LABEL="nvs" -CONFIG_CHIP_CONFIG_NAMESPACE_PARTITION_LABEL="nvs" -CONFIG_CHIP_COUNTERS_NAMESPACE_PARTITION_LABEL="nvs" -CONFIG_CHIP_KVS_NAMESPACE_PARTITION_LABEL="nvs" -# end of Matter Manufacturing Options - -# -# Commissioning Window Options -# -CONFIG_CHIP_DISCOVERY_TIMEOUT_SECS=900 -# end of Commissioning Window Options - -# -# Enable ESP32 as a BLE Commissioner -# -# CONFIG_ENABLE_ESP32_BLE_CONTROLLER is not set -# end of Enable ESP32 as a BLE Commissioner - -# -# Enable BLE Extended Announcement -# -# CONFIG_ENABLE_BLE_EXT_ANNOUNCEMENT is not set -# end of Enable BLE Extended Announcement - -# -# Message Reliable Protocol Options -# -CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL_FOR_THREAD=800 -CONFIG_MRP_LOCAL_IDLE_RETRY_INTERVAL_FOR_THREAD=800 -CONFIG_MRP_RETRY_INTERVAL_SENDER_BOOST_FOR_THREAD=500 -CONFIG_MRP_MAX_RETRANS=4 -# end of Message Reliable Protocol Options - -# -# Network Commissioning Driver Endpoint Id -# -CONFIG_THREAD_NETWORK_COMMISSIONING_DRIVER=y -CONFIG_THREAD_NETWORK_ENDPOINT_ID=0 -# end of Network Commissioning Driver Endpoint Id - -# -# Cluster Configuration Options -# -# CONFIG_ENABLE_ACCESS_RESTRICTIONS is not set -# end of Cluster Configuration Options -# end of CHIP Device Layer - -# -# ESP Matter -# -CONFIG_ESP_MATTER_MAX_DEVICE_TYPE_COUNT=16 -CONFIG_ESP_MATTER_ATTRIBUTE_BUFFER_LARGEST=259 -CONFIG_ESP_MATTER_NVS_PART_NAME="nvs" -CONFIG_ESP_MATTER_DEFERRED_ATTR_PERSISTENCE_TIME_MS=3000 -CONFIG_EXAMPLE_DAC_PROVIDER=y -# CONFIG_CUSTOM_DAC_PROVIDER is not set -CONFIG_EXAMPLE_COMMISSIONABLE_DATA_PROVIDER=y -# CONFIG_CUSTOM_COMMISSIONABLE_DATA_PROVIDER is not set -CONFIG_EXAMPLE_DEVICE_INSTANCE_INFO_PROVIDER=y -# CONFIG_CUSTOM_DEVICE_INSTANCE_INFO_PROVIDER is not set -CONFIG_NONE_DEVICE_INFO_PROVIDER=y -# CONFIG_CUSTOM_DEVICE_INFO_PROVIDER is not set -CONFIG_ESP_MATTER_MAX_DYNAMIC_ENDPOINT_COUNT=16 -CONFIG_ESP_MATTER_MODE_SELECT_CLUSTER_ENDPOINT_COUNT=0 -CONFIG_ESP_MATTER_TEMPERATURE_CONTROL_CLUSTER_ENDPOINT_COUNT=0 -CONFIG_ESP_MATTER_SCENES_TABLE_SIZE=16 -CONFIG_ESP_MATTER_BINDING_TABLE_SIZE=10 -CONFIG_ESP_MATTER_UNICAST_MESSAGE_COUNT=10 -CONFIG_ESP_MATTER_MEM_ALLOC_MODE_INTERNAL=y -# CONFIG_ESP_MATTER_MEM_ALLOC_MODE_DEFAULT is not set -CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y -CONFIG_ESP_MATTER_ENABLE_MATTER_SERVER=y -CONFIG_ESP_MATTER_ENABLE_OPENTHREAD=y - -# -# Select Supported Matter Clusters -# -CONFIG_SUPPORT_ACCESS_CONTROL_CLUSTER=y -CONFIG_SUPPORT_ACCOUNT_LOGIN_CLUSTER=y -CONFIG_SUPPORT_ACTIVATED_CARBON_FILTER_MONITORING_CLUSTER=y -CONFIG_SUPPORT_ADMINISTRATOR_COMMISSIONING_CLUSTER=y -CONFIG_SUPPORT_AIR_QUALITY_CLUSTER=y -CONFIG_SUPPORT_APPLICATION_BASIC_CLUSTER=y -CONFIG_SUPPORT_APPLICATION_LAUNCHER_CLUSTER=y -CONFIG_SUPPORT_AUDIO_OUTPUT_CLUSTER=y -CONFIG_SUPPORT_BASIC_INFORMATION_CLUSTER=y -CONFIG_SUPPORT_BINDING_CLUSTER=y -CONFIG_SUPPORT_BOOLEAN_STATE_CONFIGURATION_CLUSTER=y -CONFIG_SUPPORT_BRIDGED_DEVICE_BASIC_INFORMATION_CLUSTER=y -CONFIG_SUPPORT_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_CHANNEL_CLUSTER=y -CONFIG_SUPPORT_COLOR_CONTROL_CLUSTER=y -CONFIG_SUPPORT_COMMISSIONER_CONTROL_CLUSTER=y -CONFIG_SUPPORT_CONTENT_LAUNCHER_CLUSTER=y -CONFIG_SUPPORT_CONTENT_CONTROL_CLUSTER=y -CONFIG_SUPPORT_CONTENT_APP_OBSERVER_CLUSTER=y -CONFIG_SUPPORT_DESCRIPTOR_CLUSTER=y -CONFIG_SUPPORT_DEVICE_ENERGY_MANAGEMENT_CLUSTER=y -CONFIG_SUPPORT_DEVICE_ENERGY_MANAGEMENT_MODE_CLUSTER=y -CONFIG_SUPPORT_DIAGNOSTIC_LOGS_CLUSTER=y -CONFIG_SUPPORT_DISHWASHER_ALARM_CLUSTER=y -CONFIG_SUPPORT_DISHWASHER_MODE_CLUSTER=y -CONFIG_SUPPORT_MICROWAVE_OVEN_MODE_CLUSTER=y -CONFIG_SUPPORT_DOOR_LOCK_CLUSTER=y -CONFIG_SUPPORT_ECOSYSTEM_INFORMATION_CLUSTER=y -CONFIG_SUPPORT_ELECTRICAL_ENERGY_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_ELECTRICAL_POWER_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_ENERGY_EVSE_CLUSTER=y -CONFIG_SUPPORT_ENERGY_EVSE_MODE_CLUSTER=y -CONFIG_SUPPORT_ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER=y -CONFIG_SUPPORT_ENERGY_PREFERENCE_CLUSTER=y -CONFIG_SUPPORT_FAN_CONTROL_CLUSTER=y -CONFIG_SUPPORT_FAULT_INJECTION_CLUSTER=y -CONFIG_SUPPORT_FIXED_LABEL_CLUSTER=y -CONFIG_SUPPORT_FORMALDEHYDE_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_GENERAL_COMMISSIONING_CLUSTER=y -CONFIG_SUPPORT_GENERAL_DIAGNOSTICS_CLUSTER=y -CONFIG_SUPPORT_GROUPS_CLUSTER=y -CONFIG_SUPPORT_HEPA_FILTER_MONITORING_CLUSTER=y -CONFIG_SUPPORT_GROUP_KEY_MANAGEMENT_CLUSTER=y -CONFIG_SUPPORT_ICD_MANAGEMENT_CLUSTER=y -CONFIG_SUPPORT_IDENTIFY_CLUSTER=y -CONFIG_SUPPORT_KEYPAD_INPUT_CLUSTER=y -CONFIG_SUPPORT_LAUNDRY_WASHER_MODE_CLUSTER=y -CONFIG_SUPPORT_LEVEL_CONTROL_CLUSTER=y -CONFIG_SUPPORT_LOCALIZATION_CONFIGURATION_CLUSTER=y -CONFIG_SUPPORT_LOW_POWER_CLUSTER=y -CONFIG_SUPPORT_MEDIA_INPUT_CLUSTER=y -CONFIG_SUPPORT_MEDIA_PLAYBACK_CLUSTER=y -CONFIG_SUPPORT_MICROWAVE_OVEN_CONTROL_CLUSTER=y -CONFIG_SUPPORT_MESSAGES_CLUSTER=y -CONFIG_SUPPORT_MODE_SELECT_CLUSTER=y -CONFIG_SUPPORT_NETWORK_COMMISSIONING_CLUSTER=y -CONFIG_SUPPORT_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_SAMPLE_MEI_CLUSTER=y -CONFIG_SUPPORT_OCCUPANCY_SENSING_CLUSTER=y -CONFIG_SUPPORT_ON_OFF_CLUSTER=y -CONFIG_SUPPORT_POWER_TOPOLOGY_CLUSTER=y -CONFIG_SUPPORT_OPERATIONAL_CREDENTIALS_CLUSTER=y -CONFIG_SUPPORT_OPERATIONAL_STATE_CLUSTER=y -CONFIG_SUPPORT_OPERATIONAL_STATE_OVEN_CLUSTER=y -CONFIG_SUPPORT_OPERATIONAL_STATE_RVC_CLUSTER=y -CONFIG_SUPPORT_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER=y -CONFIG_SUPPORT_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER=y -CONFIG_SUPPORT_OVEN_MODE_CLUSTER=y -CONFIG_SUPPORT_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_PM10_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_PM1_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_PM2_5_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_POWER_SOURCE_CLUSTER=y -CONFIG_SUPPORT_POWER_SOURCE_CONFIGURATION_CLUSTER=y -CONFIG_SUPPORT_PUMP_CONFIGURATION_AND_CONTROL_CLUSTER=y -CONFIG_SUPPORT_RADON_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_REFRIGERATOR_ALARM_CLUSTER=y -CONFIG_SUPPORT_REFRIGERATOR_AND_TEMPERATURE_CONTROLLED_CABINET_MODE_CLUSTER=y -CONFIG_SUPPORT_RVC_CLEAN_MODE_CLUSTER=y -CONFIG_SUPPORT_RVC_RUN_MODE_CLUSTER=y -CONFIG_SUPPORT_SCENES_CLUSTER=y -CONFIG_SUPPORT_SERVICE_AREA_CLUSTER=y -CONFIG_SUPPORT_SMOKE_CO_ALARM_CLUSTER=y -CONFIG_SUPPORT_SOFTWARE_DIAGNOSTICS_CLUSTER=y -CONFIG_SUPPORT_SWITCH_CLUSTER=y -CONFIG_SUPPORT_TARGET_NAVIGATOR_CLUSTER=y -CONFIG_SUPPORT_TEMPERATURE_CONTROL_CLUSTER=y -CONFIG_SUPPORT_THERMOSTAT_CLUSTER=y -CONFIG_SUPPORT_THERMOSTAT_USER_INTERFACE_CONFIGURATION_CLUSTER=y -CONFIG_SUPPORT_THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER=y -CONFIG_SUPPORT_THREAD_NETWORK_DIAGNOSTICS_CLUSTER=y -CONFIG_SUPPORT_THREAD_NETWORK_DIRECTORY_CLUSTER=y -CONFIG_SUPPORT_TIME_FORMAT_LOCALIZATION_CLUSTER=y -CONFIG_SUPPORT_TIME_SYNCHRONIZATION_CLUSTER=y -CONFIG_SUPPORT_TIMER_CLUSTER=y -CONFIG_SUPPORT_TVOC_CONCENTRATION_MEASUREMENT_CLUSTER=y -CONFIG_SUPPORT_UNIT_TESTING_CLUSTER=y -CONFIG_SUPPORT_USER_LABEL_CLUSTER=y -CONFIG_SUPPORT_VALVE_CONFIGURATION_AND_CONTROL_CLUSTER=y -CONFIG_SUPPORT_WAKE_ON_LAN_CLUSTER=y -CONFIG_SUPPORT_LAUNDRY_WASHER_CONTROLS_CLUSTER=y -CONFIG_SUPPORT_LAUNDRY_DRYER_CONTROLS_CLUSTER=y -CONFIG_SUPPORT_WIFI_NETWORK_DIAGNOSTICS_CLUSTER=y -CONFIG_SUPPORT_WIFI_NETWORK_MANAGEMENT_CLUSTER=y -CONFIG_SUPPORT_WINDOW_COVERING_CLUSTER=y -CONFIG_SUPPORT_WATER_HEATER_MANAGEMENT_CLUSTER=y -CONFIG_SUPPORT_WATER_HEATER_MODE_CLUSTER=y -# end of Select Supported Matter Clusters -# end of ESP Matter - -# -# ESP Matter Bridge -# -CONFIG_ESP_MATTER_AGGREGATOR_ENDPOINT_COUNT=1 -CONFIG_ESP_MATTER_BRIDGE_INFO_PART_NAME="nvs" -# end of ESP Matter Bridge - -# -# ESP Matter Console -# -CONFIG_ESP_MATTER_CONSOLE_TASK_STACK=2048 -CONFIG_ESP_MATTER_CONSOLE_MAX_COMMANDS=10 -# end of ESP Matter Console - -# -# ESP Matter Controller -# -# CONFIG_ESP_MATTER_CONTROLLER_ENABLE is not set -# end of ESP Matter Controller - -# -# ESP Matter OTA Provider -# -# CONFIG_ESP_MATTER_OTA_PROVIDER_ENABLED is not set -# end of ESP Matter OTA Provider - -# -# esp-modem -# -CONFIG_ESP_MODEM_CMUX_DEFRAGMENT_PAYLOAD=y -# CONFIG_ESP_MODEM_USE_INFLATABLE_BUFFER_IF_NEEDED is not set -CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_DLCI_SETUP=0 -# CONFIG_ESP_MODEM_CMUX_USE_SHORT_PAYLOADS_ONLY is not set -# CONFIG_ESP_MODEM_ADD_CUSTOM_MODULE is not set -CONFIG_ESP_MODEM_C_API_STR_MAX=128 -# CONFIG_ESP_MODEM_URC_HANDLER is not set -# CONFIG_ESP_MODEM_PPP_ESCAPE_BEFORE_EXIT is not set -# CONFIG_ESP_MODEM_ADD_DEBUG_LOGS is not set -# end of esp-modem - -# -# OpenThread RCP Update -# -# CONFIG_AUTO_UPDATE_RCP is not set -# CONFIG_CREATE_OTA_IMAGE_WITH_RCP_FW is not set -# end of OpenThread RCP Update - -# -# ESP Secure Cert Manager -# -CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=y -# CONFIG_ESP_SECURE_CERT_SUPPORT_LEGACY_FORMATS is not set -# end of ESP Secure Cert Manager - -# -# jsmn -# -# CONFIG_JSMN_PARENT_LINKS is not set -# CONFIG_JSMN_STRICT is not set -# CONFIG_JSMN_STATIC is not set -# end of jsmn - -# -# libsodium -# -# end of libsodium - -# -# mDNS -# -CONFIG_MDNS_MAX_INTERFACES=3 -CONFIG_MDNS_MAX_SERVICES=10 -CONFIG_MDNS_TASK_PRIORITY=1 -CONFIG_MDNS_ACTION_QUEUE_LEN=16 -CONFIG_MDNS_TASK_STACK_SIZE=4096 -# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set -CONFIG_MDNS_TASK_AFFINITY_CPU0=y -CONFIG_MDNS_TASK_AFFINITY=0x0 - -# -# MDNS Memory Configuration -# -CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y -CONFIG_MDNS_MEMORY_ALLOC_INTERNAL=y -# CONFIG_MDNS_MEMORY_CUSTOM_IMPL is not set -# end of MDNS Memory Configuration - -CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 -CONFIG_MDNS_TIMER_PERIOD_MS=100 -# CONFIG_MDNS_NETWORKING_SOCKET is not set -# CONFIG_MDNS_SKIP_SUPPRESSING_OWN_QUERIES is not set -# CONFIG_MDNS_ENABLE_DEBUG_PRINTS is not set -CONFIG_MDNS_ENABLE_CONSOLE_CLI=y -# CONFIG_MDNS_RESPOND_REVERSE_QUERIES is not set -CONFIG_MDNS_MULTIPLE_INSTANCE=y - -# -# MDNS Predefined interfaces -# -CONFIG_MDNS_PREDEF_NETIF_STA=y -CONFIG_MDNS_PREDEF_NETIF_AP=y -CONFIG_MDNS_PREDEF_NETIF_ETH=y -# end of MDNS Predefined interfaces -# end of mDNS - -# -# Network Provisioning Manager -# -CONFIG_NETWORK_PROV_NETWORK_TYPE_WIFI=y -# CONFIG_NETWORK_PROV_NETWORK_TYPE_THREAD is not set -CONFIG_NETWORK_PROV_SCAN_MAX_ENTRIES=16 -CONFIG_NETWORK_PROV_AUTOSTOP_TIMEOUT=30 -# CONFIG_NETWORK_PROV_BLE_BONDING is not set -CONFIG_NETWORK_PROV_BLE_SEC_CONN=y -# CONFIG_NETWORK_PROV_BLE_FORCE_ENCRYPTION is not set -# CONFIG_NETWORK_PROV_KEEP_BLE_ON_AFTER_PROV is not set -CONFIG_NETWORK_PROV_WIFI_STA_ALL_CHANNEL_SCAN=y -# CONFIG_NETWORK_PROV_WIFI_STA_FAST_SCAN is not set -# end of Network Provisioning Manager - -# -# ESP RainMaker Common -# -CONFIG_ESP_RMAKER_LIB_ESP_MQTT=y -# CONFIG_ESP_RMAKER_LIB_AWS_IOT is not set -CONFIG_ESP_RMAKER_MQTT_GLUE_LIB=1 -CONFIG_ESP_RMAKER_MQTT_PORT_443=y -# CONFIG_ESP_RMAKER_MQTT_PORT_8883 is not set -CONFIG_ESP_RMAKER_MQTT_PORT=1 -# CONFIG_ESP_RMAKER_MQTT_PERSISTENT_SESSION is not set -CONFIG_ESP_RMAKER_MQTT_SEND_USERNAME=y -CONFIG_ESP_RMAKER_MQTT_PRODUCT_NAME="RMDev" -CONFIG_ESP_RMAKER_MQTT_PRODUCT_VERSION="1x0" -CONFIG_ESP_RMAKER_MQTT_PRODUCT_SKU="EX00" -CONFIG_ESP_RMAKER_MQTT_USE_CERT_BUNDLE=y -CONFIG_ESP_RMAKER_MAX_MQTT_SUBSCRIPTIONS=10 -CONFIG_ESP_RMAKER_MQTT_KEEP_ALIVE_INTERVAL=120 -CONFIG_ESP_RMAKER_NETWORK_OVER_WIFI=y -# CONFIG_ESP_RMAKER_NETWORK_OVER_THREAD is not set -CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK=4096 -CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_PRIORITY=5 -CONFIG_ESP_RMAKER_FACTORY_PARTITION_NAME="fctry" -CONFIG_ESP_RMAKER_FACTORY_NAMESPACE="rmaker_creds" -CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai" -CONFIG_ESP_RMAKER_SNTP_SERVER_NAME="pool.ntp.org" -CONFIG_ESP_RMAKER_MAX_COMMANDS=10 -# end of ESP RainMaker Common - -# -# LittleFS -# -# CONFIG_LITTLEFS_SDMMC_SUPPORT is not set -CONFIG_LITTLEFS_MAX_PARTITIONS=3 -CONFIG_LITTLEFS_PAGE_SIZE=256 -CONFIG_LITTLEFS_OBJ_NAME_LEN=64 -CONFIG_LITTLEFS_READ_SIZE=128 -CONFIG_LITTLEFS_WRITE_SIZE=128 -CONFIG_LITTLEFS_LOOKAHEAD_SIZE=128 -CONFIG_LITTLEFS_CACHE_SIZE=512 -CONFIG_LITTLEFS_BLOCK_CYCLES=512 -CONFIG_LITTLEFS_USE_MTIME=y -# CONFIG_LITTLEFS_USE_ONLY_HASH is not set -# CONFIG_LITTLEFS_HUMAN_READABLE is not set -CONFIG_LITTLEFS_MTIME_USE_SECONDS=y -# CONFIG_LITTLEFS_MTIME_USE_NONCE is not set -# CONFIG_LITTLEFS_SPIFFS_COMPAT is not set -# CONFIG_LITTLEFS_FLUSH_FILE_EVERY_WRITE is not set -# CONFIG_LITTLEFS_FCNTL_GET_PATH is not set -# CONFIG_LITTLEFS_MULTIVERSION is not set -# CONFIG_LITTLEFS_MALLOC_STRATEGY_DISABLE is not set -CONFIG_LITTLEFS_MALLOC_STRATEGY_DEFAULT=y -# CONFIG_LITTLEFS_MALLOC_STRATEGY_INTERNAL is not set -CONFIG_LITTLEFS_ASSERTS=y -# CONFIG_LITTLEFS_MMAP_PARTITION is not set -# end of LittleFS -# end of Component config - -# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set - -# Deprecated options for backward compatibility -# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set -# CONFIG_NO_BLOBS is not set -# CONFIG_APP_ROLLBACK_ENABLE is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set -CONFIG_LOG_BOOTLOADER_LEVEL_ERROR=y -# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_INFO is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set -CONFIG_LOG_BOOTLOADER_LEVEL=1 -# CONFIG_FLASH_ENCRYPTION_ENABLED is not set -CONFIG_FLASHMODE_QIO=y -# CONFIG_FLASHMODE_QOUT is not set -# CONFIG_FLASHMODE_DIO is not set -# CONFIG_FLASHMODE_DOUT is not set -CONFIG_MONITOR_BAUD=115200 -# CONFIG_ESP_RMAKER_LOCAL_CTRL_ENABLE is not set -CONFIG_OPTIMIZATION_LEVEL_DEBUG=y -CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y -CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y -# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set -# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set -CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y -# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set -# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set -CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 -# CONFIG_CXX_EXCEPTIONS is not set -CONFIG_STACK_CHECK_NONE=y -# CONFIG_STACK_CHECK_NORM is not set -# CONFIG_STACK_CHECK_STRONG is not set -# CONFIG_STACK_CHECK_ALL is not set -# CONFIG_WARN_WRITE_STRINGS is not set -# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set -CONFIG_ESP32_APPTRACE_DEST_NONE=y -CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y -# CONFIG_BLUEDROID_ENABLED is not set -CONFIG_NIMBLE_ENABLED=y -CONFIG_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y -# CONFIG_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set -CONFIG_NIMBLE_MAX_CONNECTIONS=3 -CONFIG_NIMBLE_MAX_BONDS=3 -CONFIG_NIMBLE_MAX_CCCDS=8 -CONFIG_NIMBLE_L2CAP_COC_MAX_NUM=0 -CONFIG_NIMBLE_PINNED_TO_CORE=0 -CONFIG_NIMBLE_TASK_STACK_SIZE=4096 -CONFIG_BT_NIMBLE_TASK_STACK_SIZE=4096 -CONFIG_NIMBLE_ROLE_CENTRAL=y -CONFIG_NIMBLE_ROLE_PERIPHERAL=y -CONFIG_NIMBLE_ROLE_BROADCASTER=y -CONFIG_NIMBLE_ROLE_OBSERVER=y -# CONFIG_NIMBLE_NVS_PERSIST is not set -CONFIG_NIMBLE_SM_LEGACY=y -CONFIG_NIMBLE_SM_SC=y -# CONFIG_NIMBLE_SM_SC_DEBUG_KEYS is not set -CONFIG_BT_NIMBLE_SM_SC_LVL=0 -# CONFIG_NIMBLE_DEBUG is not set -CONFIG_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" -CONFIG_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 -CONFIG_NIMBLE_ATT_PREFERRED_MTU=256 -CONFIG_NIMBLE_SVC_GAP_APPEARANCE=0 -CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=24 -CONFIG_BT_NIMBLE_ACL_BUF_COUNT=24 -CONFIG_BT_NIMBLE_ACL_BUF_SIZE=255 -CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 -CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT=30 -CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT=8 -CONFIG_NIMBLE_RPA_TIMEOUT=900 -# CONFIG_NIMBLE_MESH is not set -CONFIG_NIMBLE_CRYPTO_STACK_MBEDTLS=y -# CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EN is not set -CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_DIS=y -CONFIG_SW_COEXIST_ENABLE=y -CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=y -CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y -# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set -# CONFIG_MCPWM_ISR_IRAM_SAFE is not set -# CONFIG_EVENT_LOOP_PROFILING is not set -CONFIG_POST_EVENTS_FROM_ISR=y -CONFIG_POST_EVENTS_FROM_IRAM_ISR=y -CONFIG_GDBSTUB_SUPPORT_TASKS=y -CONFIG_GDBSTUB_MAX_TASKS=32 -# CONFIG_OTA_ALLOW_HTTP is not set -# CONFIG_ESP_SYSTEM_PD_FLASH is not set -CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y -CONFIG_BROWNOUT_DET=y -CONFIG_BROWNOUT_DET_LVL_SEL_7=y -# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set -CONFIG_BROWNOUT_DET_LVL=7 -CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y -CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y -# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set -CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 -CONFIG_ESP32_PHY_MAX_TX_POWER=20 -# CONFIG_REDUCE_PHY_TX_POWER is not set -# CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set -CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y -CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 -CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_MAIN_TASK_STACK_SIZE=3584 -CONFIG_CONSOLE_UART_DEFAULT=y -# CONFIG_CONSOLE_UART_CUSTOM is not set -# CONFIG_CONSOLE_UART_NONE is not set -# CONFIG_ESP_CONSOLE_UART_NONE is not set -CONFIG_CONSOLE_UART=y -CONFIG_CONSOLE_UART_NUM=0 -CONFIG_CONSOLE_UART_BAUDRATE=115200 -CONFIG_INT_WDT=y -CONFIG_INT_WDT_TIMEOUT_MS=300 -CONFIG_TASK_WDT=y -CONFIG_ESP_TASK_WDT=y -# CONFIG_TASK_WDT_PANIC is not set -CONFIG_TASK_WDT_TIMEOUT_S=5 -CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y -# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set -CONFIG_IPC_TASK_STACK_SIZE=1024 -CONFIG_TIMER_TASK_STACK_SIZE=3584 -CONFIG_ESP32_WIFI_ENABLED=y -CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 -CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 -# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set -CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y -CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 -CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 -# CONFIG_ESP32_WIFI_CSI_ENABLED is not set -CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y -CONFIG_ESP32_WIFI_TX_BA_WIN=6 -CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y -CONFIG_ESP32_WIFI_RX_BA_WIN=6 -CONFIG_ESP32_WIFI_NVS_ENABLED=y -CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 -CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 -CONFIG_ESP32_WIFI_IRAM_OPT=y -CONFIG_ESP32_WIFI_RX_IRAM_OPT=y -CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y -CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y -CONFIG_WPA_MBEDTLS_CRYPTO=y -CONFIG_WPA_MBEDTLS_TLS_CLIENT=y -# CONFIG_WPA_WAPI_PSK is not set -# CONFIG_WPA_SUITE_B_192 is not set -# CONFIG_WPA_11KV_SUPPORT is not set -# CONFIG_WPA_MBO_SUPPORT is not set -# CONFIG_WPA_DPP_SUPPORT is not set -# CONFIG_WPA_11R_SUPPORT is not set -# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set -# CONFIG_WPA_WPS_STRICT is not set -# CONFIG_WPA_DEBUG_PRINT is not set -# CONFIG_WPA_TESTING_OPTIONS is not set -# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set -# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set -CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y -CONFIG_TIMER_TASK_PRIORITY=1 -CONFIG_TIMER_TASK_STACK_DEPTH=2048 -CONFIG_TIMER_QUEUE_LENGTH=10 -# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set -# CONFIG_HAL_ASSERTION_SILIENT is not set -# CONFIG_L2_TO_L3_COPY is not set -CONFIG_ESP_GRATUITOUS_ARP=y -CONFIG_GARP_TMR_INTERVAL=60 -CONFIG_TCPIP_RECVMBOX_SIZE=32 -CONFIG_TCP_MAXRTX=12 -CONFIG_TCP_SYNMAXRTX=12 -CONFIG_TCP_MSS=1440 -CONFIG_TCP_MSL=60000 -CONFIG_TCP_SND_BUF_DEFAULT=5760 -CONFIG_TCP_WND_DEFAULT=5760 -CONFIG_TCP_RECVMBOX_SIZE=6 -CONFIG_TCP_QUEUE_OOSEQ=y -CONFIG_TCP_OVERSIZE_MSS=y -# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set -# CONFIG_TCP_OVERSIZE_DISABLE is not set -CONFIG_UDP_RECVMBOX_SIZE=6 -CONFIG_TCPIP_TASK_STACK_SIZE=3072 -CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y -# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set -CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF -# CONFIG_PPP_SUPPORT is not set -CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y -# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set -# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set -# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set -# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set -CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y -# CONFIG_NEWLIB_NANO_FORMAT is not set -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y -# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set -# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set -# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set -CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 -CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 -CONFIG_ESP32_PTHREAD_STACK_MIN=768 -CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 -CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" -CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y -# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set -# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set -CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y -CONFIG_SUPPORT_TERMIOS=y -CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 -CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=3000 -CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 -CONFIG_MB_QUEUE_LENGTH=20 -CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096 -CONFIG_MB_SERIAL_BUF_SIZE=256 -CONFIG_MB_SERIAL_TASK_PRIO=10 -CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y -CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233 -CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 -CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 -CONFIG_MB_CONTROLLER_STACK_SIZE=4096 -CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 -# CONFIG_MB_TIMER_PORT_ENABLED is not set -# End of deprecated options diff --git a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig.defaults b/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig.defaults deleted file mode 100644 index 0e8cd3e45a9..00000000000 --- a/idf_component_examples/Arduino_ESP-Matter-over-Thread_ESP32-C6/sdkconfig.defaults +++ /dev/null @@ -1,70 +0,0 @@ -CONFIG_IDF_TARGET="esp32c6" - -# Arduino ESP32 settings -CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y -CONFIG_AUTOSTART_ARDUINO=y -CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO=y -CONFIG_FREERTOS_HZ=1000 -CONFIG_LOG_DEFAULT_LEVEL_ERROR=y - -# Enables Arduino Selective Library Compilation: Arduino Matter + Preferences Library -CONFIG_ARDUINO_SELECTIVE_COMPILATION=y -CONFIG_ARDUINO_SELECTIVE_Preferences=y -CONFIG_ARDUINO_SELECTIVE_Network=y -CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y -CONFIG_ARDUINO_SELECTIVE_Matter=y - -# Flash Confinguration -CONFIG_ESPTOOLPY_FLASHMODE_QIO=y -CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y -CONFIG_ESPTOOLPY_FLASHMODE="dio" -CONFIG_ESPTOOLPY_FLASHFREQ_80M=y -CONFIG_ESPTOOLPY_FLASHFREQ="80m" -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y -CONFIG_ESPTOOLPY_FLASHSIZE="4MB" -CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE=y -CONFIG_ESPTOOLPY_BEFORE_RESET=y -CONFIG_ESPTOOLPY_BEFORE="default_reset" -CONFIG_ESPTOOLPY_AFTER_RESET=y -CONFIG_ESPTOOLPY_AFTER="hard_reset" -CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 - -# libsodium -CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y - -# NIMBLE -CONFIG_BT_ENABLED=y -CONFIG_BT_NIMBLE_ENABLED=y -CONFIG_BT_NIMBLE_EXT_ADV=n -CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 -CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n - -# Enable OpenThread -CONFIG_OPENTHREAD_ENABLED=y -CONFIG_OPENTHREAD_SRP_CLIENT=y -CONFIG_OPENTHREAD_DNS_CLIENT=y -CONFIG_OPENTHREAD_LOG_LEVEL_DYNAMIC=n -CONFIG_OPENTHREAD_LOG_LEVEL_NOTE=y -CONFIG_OPENTHREAD_CLI=n - -# Disable lwip ipv6 autoconfig -CONFIG_LWIP_IPV6_AUTOCONFIG=n - -# Use a custom partition table -CONFIG_PARTITION_TABLE_CUSTOM=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" - -# LwIP config for OpenThread -CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 -CONFIG_LWIP_MULTICAST_PING=y - -# MDNS platform -CONFIG_USE_MINIMAL_MDNS=n -CONFIG_ENABLE_EXTENDED_DISCOVERY=y - -# Disable STA and AP for ESP32C6 ==> no Wifi, thread only -CONFIG_ENABLE_WIFI_STATION=n -CONFIG_ENABLE_WIFI_AP=n - -# Enable HKDF in mbedtls -CONFIG_MBEDTLS_HKDF_C=y From 8cb2659f13c1b3472f14b844997b2016c431e339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Tue, 4 Nov 2025 11:19:10 +0100 Subject: [PATCH 22/31] feat(zigbee): Add humidity support for Thermostat + TempSensor fix (#11940) * feat(zigbee): Add humidity support for Thermostat * docs(zigbee): Update Thermostat APIs * fix(zigbee): Update logs format * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- docs/en/zigbee/ep_thermostat.rst | 249 +++++++++-- .../Zigbee_Thermostat/Zigbee_Thermostat.ino | 6 +- libraries/Zigbee/keywords.txt | 10 +- libraries/Zigbee/src/ep/ZigbeeTempSensor.cpp | 8 +- libraries/Zigbee/src/ep/ZigbeeThermostat.cpp | 412 +++++++++++++++++- libraries/Zigbee/src/ep/ZigbeeThermostat.h | 71 ++- 6 files changed, 692 insertions(+), 64 deletions(-) diff --git a/docs/en/zigbee/ep_thermostat.rst b/docs/en/zigbee/ep_thermostat.rst index b7c79254d0f..b7b616b54e7 100644 --- a/docs/en/zigbee/ep_thermostat.rst +++ b/docs/en/zigbee/ep_thermostat.rst @@ -5,13 +5,14 @@ ZigbeeThermostat About ----- -The ``ZigbeeThermostat`` class provides a thermostat endpoint for Zigbee networks that receives temperature data from temperature sensors. This endpoint implements the Zigbee Home Automation (HA) standard for thermostats that can bind to temperature sensors and receive temperature readings. +The ``ZigbeeThermostat`` class provides a thermostat endpoint for Zigbee networks. +This endpoint implements the Zigbee Home Automation (HA) standard for thermostats that can bind to temperature and humidity sensors and receive temperature and humidity readings. **Features:** * Automatic discovery and binding to temperature sensors -* Temperature data reception from bound sensors -* Configurable temperature reporting intervals -* Sensor settings retrieval (min/max temperature, tolerance) +* Temperature and humidity data reception from bound sensors +* Configurable temperature and humidity reporting intervals +* Sensor settings retrieval (min/max/tolerance for temperature and humidity) * Multiple addressing modes (group, specific endpoint, IEEE address) API Reference @@ -60,20 +61,60 @@ Sets a callback function for receiving temperature data with source information. * ``src_endpoint`` - Source endpoint that sent the temperature data * ``src_address`` - Source address information -onConfigReceive -^^^^^^^^^^^^^^^ +onTempConfigReceive +^^^^^^^^^^^^^^^^^^^ Sets a callback function for receiving sensor configuration data. .. code-block:: arduino - void onConfigReceive(void (*callback)(float min_temp, float max_temp, float tolerance)); + void onTempConfigReceive(void (*callback)(float min_temp, float max_temp, float tolerance)); * ``callback`` - Function to call when sensor configuration is received * ``min_temp`` - Minimum temperature supported by the sensor * ``max_temp`` - Maximum temperature supported by the sensor * ``tolerance`` - Temperature tolerance of the sensor +onHumidityReceive +^^^^^^^^^^^^^^^^^ + +Sets a callback function for receiving humidity data. + +.. code-block:: arduino + + void onHumidityReceive(void (*callback)(float humidity)); + +* ``callback`` - Function to call when humidity data is received +* ``humidity`` - Humidity value in percentage + +onHumidityReceiveWithSource +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Sets a callback function for receiving humidity data with source information. + +.. code-block:: arduino + + void onHumidityReceiveWithSource(void (*callback)(float humidity, uint8_t src_endpoint, esp_zb_zcl_addr_t src_address)); + +* ``callback`` - Function to call when humidity data is received +* ``humidity`` - Humidity value in percentage +* ``src_endpoint`` - Source endpoint that sent the humidity data +* ``src_address`` - Source address information + +onHumidityConfigReceive +^^^^^^^^^^^^^^^^^^^^^^^ + +Sets a callback function for receiving humidity sensor configuration data. + +.. code-block:: arduino + + void onHumidityConfigReceive(void (*callback)(float min_humidity, float max_humidity, float tolerance)); + +* ``callback`` - Function to call when humidity sensor configuration is received +* ``min_humidity`` - Minimum humidity supported by the sensor +* ``max_humidity`` - Maximum humidity supported by the sensor +* ``tolerance`` - Humidity tolerance of the sensor + Temperature Data Retrieval ************************** @@ -98,7 +139,7 @@ Requests temperature data from a specific group. * ``group_addr`` - Group address to send the request to getTemperature (Endpoint + Short Address) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Requests temperature data from a specific endpoint using short address. @@ -110,7 +151,7 @@ Requests temperature data from a specific endpoint using short address. * ``short_addr`` - Short address of the target device getTemperature (Endpoint + IEEE Address) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Requests temperature data from a specific endpoint using IEEE address. @@ -121,49 +162,143 @@ Requests temperature data from a specific endpoint using IEEE address. * ``endpoint`` - Target endpoint number * ``ieee_addr`` - IEEE address of the target device -Sensor Settings Retrieval -************************* +Humidity Data Retrieval +*********************** -getSensorSettings -^^^^^^^^^^^^^^^^^ +getHumidity +^^^^^^^^^^^ + +Requests humidity data from all bound sensors. + +.. code-block:: arduino + + void getHumidity(); + +getHumidity (Group) +^^^^^^^^^^^^^^^^^^^ + +Requests humidity data from a specific group. + +.. code-block:: arduino + + void getHumidity(uint16_t group_addr); + +* ``group_addr`` - Group address to send the request to + +getHumidity (Endpoint + Short Address) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Requests humidity data from a specific endpoint using short address. + +.. code-block:: arduino + + void getHumidity(uint8_t endpoint, uint16_t short_addr); + +* ``endpoint`` - Target endpoint number +* ``short_addr`` - Short address of the target device + +getHumidity (Endpoint + IEEE Address) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Requests humidity data from a specific endpoint using IEEE address. + +.. code-block:: arduino + + void getHumidity(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); + +* ``endpoint`` - Target endpoint number +* ``ieee_addr`` - IEEE address of the target device + +Temperature Settings Retrieval +****************************** + +getTemperatureSettings +^^^^^^^^^^^^^^^^^^^^^^ + +Requests temperature sensor settings from all bound sensors. + +.. code-block:: arduino + + void getTemperatureSettings(); + +getTemperatureSettings (Group) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Requests temperature sensor settings from a specific group. -Requests sensor settings from all bound sensors. +.. code-block:: arduino + + void getTemperatureSettings(uint16_t group_addr); + +* ``group_addr`` - Group address to send the request to + +getTemperatureSettings (Endpoint + Short Address) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Requests temperature sensor settings from a specific endpoint using short address. .. code-block:: arduino - void getSensorSettings(); + void getTemperatureSettings(uint8_t endpoint, uint16_t short_addr); + +* ``endpoint`` - Target endpoint number +* ``short_addr`` - Short address of the target device -getSensorSettings (Group) -^^^^^^^^^^^^^^^^^^^^^^^^^ +getTemperatureSettings (Endpoint + IEEE Address) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Requests sensor settings from a specific group. +Requests temperature sensor settings from a specific endpoint using IEEE address. .. code-block:: arduino - void getSensorSettings(uint16_t group_addr); + void getTemperatureSettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); + +* ``endpoint`` - Target endpoint number +* ``ieee_addr`` - IEEE address of the target device + +Humidity Settings Retrieval +*************************** + +getHumiditySettings +^^^^^^^^^^^^^^^^^^^ + +Requests humidity sensor settings from all bound sensors. + +.. code-block:: arduino + + void getHumiditySettings(); + +getHumiditySettings (Group) +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Requests humidity sensor settings from a specific group. + +.. code-block:: arduino + + void getHumiditySettings(uint16_t group_addr); * ``group_addr`` - Group address to send the request to -getSensorSettings (Endpoint + Short Address) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +getHumiditySettings (Endpoint + Short Address) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Requests sensor settings from a specific endpoint using short address. +Requests humidity sensor settings from a specific endpoint using short address. .. code-block:: arduino - void getSensorSettings(uint8_t endpoint, uint16_t short_addr); + void getHumiditySettings(uint8_t endpoint, uint16_t short_addr); * ``endpoint`` - Target endpoint number * ``short_addr`` - Short address of the target device -getSensorSettings (Endpoint + IEEE Address) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +getHumiditySettings (Endpoint + IEEE Address) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Requests sensor settings from a specific endpoint using IEEE address. +Requests humidity sensor settings from a specific endpoint using IEEE address. .. code-block:: arduino - void getSensorSettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); + void getHumiditySettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); * ``endpoint`` - Target endpoint number * ``ieee_addr`` - IEEE address of the target device @@ -228,6 +363,66 @@ Configures temperature reporting for a specific endpoint using IEEE address. * ``max_interval`` - Maximum reporting interval in seconds * ``delta`` - Minimum change in temperature to trigger a report +Humidity Reporting Configuration +******************************** + +setHumidityReporting +^^^^^^^^^^^^^^^^^^^^ + +Configures humidity reporting for all bound sensors. + +.. code-block:: arduino + + void setHumidityReporting(uint16_t min_interval, uint16_t max_interval, float delta); + +* ``min_interval`` - Minimum reporting interval in seconds +* ``max_interval`` - Maximum reporting interval in seconds +* ``delta`` - Minimum change in humidity to trigger a report + +setHumidityReporting (Group) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Configures humidity reporting for a specific group. + +.. code-block:: arduino + + void setHumidityReporting(uint16_t group_addr, uint16_t min_interval, uint16_t max_interval, float delta); + +* ``group_addr`` - Group address to configure +* ``min_interval`` - Minimum reporting interval in seconds +* ``max_interval`` - Maximum reporting interval in seconds +* ``delta`` - Minimum change in humidity to trigger a report + +setHumidityReporting (Endpoint + Short Address) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Configures humidity reporting for a specific endpoint using short address. + +.. code-block:: arduino + + void setHumidityReporting(uint8_t endpoint, uint16_t short_addr, uint16_t min_interval, uint16_t max_interval, float delta); + +* ``endpoint`` - Target endpoint number +* ``short_addr`` - Short address of the target device +* ``min_interval`` - Minimum reporting interval in seconds +* ``max_interval`` - Maximum reporting interval in seconds +* ``delta`` - Minimum change in humidity to trigger a report + +setHumidityReporting (Endpoint + IEEE Address) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Configures humidity reporting for a specific endpoint using IEEE address. + +.. code-block:: arduino + + void setHumidityReporting(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr, uint16_t min_interval, uint16_t max_interval, float delta); + +* ``endpoint`` - Target endpoint number +* ``ieee_addr`` - IEEE address of the target device +* ``min_interval`` - Minimum reporting interval in seconds +* ``max_interval`` - Maximum reporting interval in seconds +* ``delta`` - Minimum change in humidity to trigger a report + Example ------- diff --git a/libraries/Zigbee/examples/Zigbee_Thermostat/Zigbee_Thermostat.ino b/libraries/Zigbee/examples/Zigbee_Thermostat/Zigbee_Thermostat.ino index 6f5934f791d..73125cbf5dc 100644 --- a/libraries/Zigbee/examples/Zigbee_Thermostat/Zigbee_Thermostat.ino +++ b/libraries/Zigbee/examples/Zigbee_Thermostat/Zigbee_Thermostat.ino @@ -90,7 +90,7 @@ void setup() { #endif // Set callback function for receiving sensor configuration - zbThermostat.onConfigReceive(receiveSensorConfig); + zbThermostat.onTempConfigReceive(receiveSensorConfig); //Optional: set Zigbee device name and model zbThermostat.setManufacturerAndModel("Espressif", "ZigbeeThermostat"); @@ -138,10 +138,10 @@ void setup() { "Device on endpoint %d, IEEE Address: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X\r\n", device->endpoint, device->ieee_addr[7], device->ieee_addr[6], device->ieee_addr[5], device->ieee_addr[4], device->ieee_addr[3], device->ieee_addr[2], device->ieee_addr[1], device->ieee_addr[0] ); - zbThermostat.getSensorSettings(device->endpoint, device->ieee_addr); + zbThermostat.getTemperatureSettings(device->endpoint, device->ieee_addr); } else { Serial.printf("Device on endpoint %d, short address: 0x%x\r\n", device->endpoint, device->short_addr); - zbThermostat.getSensorSettings(device->endpoint, device->short_addr); + zbThermostat.getTemperatureSettings(device->endpoint, device->short_addr); } } } diff --git a/libraries/Zigbee/keywords.txt b/libraries/Zigbee/keywords.txt index f203de96da6..44067fc4886 100644 --- a/libraries/Zigbee/keywords.txt +++ b/libraries/Zigbee/keywords.txt @@ -142,11 +142,17 @@ onLightColorChangeWithSource KEYWORD2 # ZigbeeThermostat onTempRecieve KEYWORD2 -onConfigRecieve KEYWORD2 onTempReceiveWithSource KEYWORD2 +onTempConfigReceive KEYWORD2 getTemperature KEYWORD2 -getSensorSettings KEYWORD2 +getTemperatureSettings KEYWORD2 setTemperatureReporting KEYWORD2 +onHumidityReceive KEYWORD2 +onHumidityReceiveWithSource KEYWORD2 +onHumidityConfigReceive KEYWORD2 +getHumidity KEYWORD2 +getHumiditySettings KEYWORD2 +setHumidityReporting KEYWORD2 # Common Zigbee Sensor setMinMaxValue KEYWORD2 diff --git a/libraries/Zigbee/src/ep/ZigbeeTempSensor.cpp b/libraries/Zigbee/src/ep/ZigbeeTempSensor.cpp index 9159464b309..484506e139d 100644 --- a/libraries/Zigbee/src/ep/ZigbeeTempSensor.cpp +++ b/libraries/Zigbee/src/ep/ZigbeeTempSensor.cpp @@ -127,10 +127,10 @@ bool ZigbeeTempSensor::reportTemperature() { } void ZigbeeTempSensor::addHumiditySensor(float min, float max, float tolerance) { - int16_t zb_min = zb_float_to_s16(min); - int16_t zb_max = zb_float_to_s16(max); + uint16_t zb_min = (uint16_t)(min * 100); + uint16_t zb_max = (uint16_t)(max * 100); uint16_t zb_tolerance = (uint16_t)(tolerance * 100); - int16_t default_hum = ESP_ZB_ZCL_REL_HUMIDITY_MEASUREMENT_MEASURED_VALUE_DEFAULT; + uint16_t default_hum = ESP_ZB_ZCL_REL_HUMIDITY_MEASUREMENT_MEASURED_VALUE_DEFAULT; esp_zb_attribute_list_t *humidity_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT); esp_zb_humidity_meas_cluster_add_attr(humidity_cluster, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, &default_hum); esp_zb_humidity_meas_cluster_add_attr(humidity_cluster, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MIN_VALUE_ID, &zb_min); @@ -142,7 +142,7 @@ void ZigbeeTempSensor::addHumiditySensor(float min, float max, float tolerance) bool ZigbeeTempSensor::setHumidity(float humidity) { esp_zb_zcl_status_t ret = ESP_ZB_ZCL_STATUS_SUCCESS; - int16_t zb_humidity = zb_float_to_s16(humidity); + uint16_t zb_humidity = (uint16_t)(humidity * 100); log_v("Updating humidity sensor value..."); /* Update humidity sensor measured value */ log_d("Setting humidity to %d", zb_humidity); diff --git a/libraries/Zigbee/src/ep/ZigbeeThermostat.cpp b/libraries/Zigbee/src/ep/ZigbeeThermostat.cpp index e076aff79f0..9fb26be28e4 100644 --- a/libraries/Zigbee/src/ep/ZigbeeThermostat.cpp +++ b/libraries/Zigbee/src/ep/ZigbeeThermostat.cpp @@ -39,6 +39,7 @@ ZigbeeThermostat::ZigbeeThermostat(uint8_t endpoint) : ZigbeeEP(endpoint) { esp_zb_cluster_list_add_thermostat_cluster(_cluster_list, esp_zb_thermostat_cluster_create(&(thermostat_cfg.thermostat_cfg)), ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); /* Add temperature measurement cluster for attribute reporting */ esp_zb_cluster_list_add_temperature_meas_cluster(_cluster_list, esp_zb_temperature_meas_cluster_create(NULL), ESP_ZB_ZCL_CLUSTER_CLIENT_ROLE); + esp_zb_cluster_list_add_humidity_meas_cluster(_cluster_list, esp_zb_humidity_meas_cluster_create(NULL), ESP_ZB_ZCL_CLUSTER_CLIENT_ROLE); _ep_config = {.endpoint = _endpoint, .app_profile_id = ESP_ZB_AF_HA_PROFILE_ID, .app_device_id = ESP_ZB_HA_THERMOSTAT_DEVICE_ID, .app_device_version = 0}; } @@ -100,21 +101,27 @@ void ZigbeeThermostat::findCb(esp_zb_zdp_status_t zdo_status, uint16_t addr, uin log_i("Request temperature sensor to bind us"); esp_zb_zdo_device_bind_req(&bind_req, ZigbeeThermostat::bindCbWrapper, NULL); + log_i("Request humidity sensor to bind us"); + bind_req.cluster_id = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + esp_zb_zdo_device_bind_req(&bind_req, ZigbeeThermostat::bindCbWrapper, NULL); + /* 2. Send binding request to self */ bind_req.req_dst_addr = esp_zb_get_short_address(); /* populate the src information of the binding */ esp_zb_get_long_address(bind_req.src_address); bind_req.src_endp = instance->_endpoint; - bind_req.cluster_id = ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT; + bind_req.cluster_id = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; bind_req.dst_addr_mode = ESP_ZB_ZDO_BIND_DST_ADDR_MODE_64_BIT_EXTENDED; memcpy(bind_req.dst_address_u.addr_long, sensor->ieee_addr, sizeof(esp_zb_ieee_addr_t)); bind_req.dst_endp = endpoint; - log_i("Try to bind Temperature Measurement"); - //save sensor params in the class + log_i("Try to bind Humidity Measurement"); // Optional cluster to bind, if fails, continue to bind the temperature measurement cluster + // save sensor params in the class instance->_device = sensor; - log_d("Find callback on EP %d", instance->_endpoint); + esp_zb_zdo_device_bind_req(&bind_req, ZigbeeThermostat::bindCbWrapper, NULL); + bind_req.cluster_id = ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT; + log_i("Try to bind Temperature Measurement"); // Mandatory cluster to bind esp_zb_zdo_device_bind_req(&bind_req, ZigbeeThermostat::bindCbWrapper, this); } else { log_d("No temperature sensor endpoint found"); @@ -122,9 +129,9 @@ void ZigbeeThermostat::findCb(esp_zb_zdp_status_t zdo_status, uint16_t addr, uin } void ZigbeeThermostat::findEndpoint(esp_zb_zdo_match_desc_req_param_t *param) { - uint16_t cluster_list[] = {ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT}; + uint16_t cluster_list[] = {ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT}; param->profile_id = ESP_ZB_AF_HA_PROFILE_ID; - param->num_in_clusters = 1; + param->num_in_clusters = 2; param->num_out_clusters = 0; param->cluster_list = cluster_list; esp_zb_zdo_match_cluster(param, ZigbeeThermostat::findCbWrapper, this); @@ -156,18 +163,56 @@ void ZigbeeThermostat::zbAttributeRead(uint16_t cluster_id, const esp_zb_zcl_att } if (attribute->id == ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_TOLERANCE_ID && attribute->data.type == ESP_ZB_ZCL_ATTR_TYPE_U16) { uint16_t tolerance = attribute->data.value ? *(uint16_t *)attribute->data.value : 0; - _tolerance = 1.0 * tolerance / 100; + _tolerance_temp = 1.0 * tolerance / 100; read_config++; - log_d("Received tolerance: %.2f°C from endpoint %d", _tolerance, src_endpoint); + log_d("Received tolerance: %.2f°C from endpoint %d", _tolerance_temp, src_endpoint); } if (read_config == 3) { - log_d("All config attributes processed"); + log_d("All temperature config attributes processed"); read_config = 0; xSemaphoreGive(lock); } } + static uint8_t read_humidity_config = 0; + if (cluster_id == ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT) { + if (attribute->id == ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID && attribute->data.type == ESP_ZB_ZCL_ATTR_TYPE_U16) { + uint16_t value = attribute->data.value ? *(uint16_t *)attribute->data.value : 0; + float humidity = 1.0 * value / 100; + if (_on_humidity_receive) { + _on_humidity_receive(humidity); + } + if (_on_humidity_receive_with_source) { + _on_humidity_receive_with_source(humidity, src_endpoint, src_address); + } + } + if (attribute->id == ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MIN_VALUE_ID && attribute->data.type == ESP_ZB_ZCL_ATTR_TYPE_U16) { + uint16_t min_value = attribute->data.value ? *(uint16_t *)attribute->data.value : 0; + _min_humidity = 1.0 * min_value / 100; + read_humidity_config++; + log_d("Received min humidity: %.2f%% from endpoint %d", _min_humidity, src_endpoint); + } + if (attribute->id == ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MAX_VALUE_ID && attribute->data.type == ESP_ZB_ZCL_ATTR_TYPE_U16) { + uint16_t max_value = attribute->data.value ? *(uint16_t *)attribute->data.value : 0; + _max_humidity = 1.0 * max_value / 100; + read_humidity_config++; + log_d("Received max humidity: %.2f%% from endpoint %d", _max_humidity, src_endpoint); + } + if (attribute->id == ESP_ZB_ZCL_ATTR_REL_HUMIDITY_TOLERANCE_ID && attribute->data.type == ESP_ZB_ZCL_ATTR_TYPE_U16) { + uint16_t tolerance = attribute->data.value ? *(uint16_t *)attribute->data.value : 0; + _tolerance_humidity = 1.0 * tolerance / 100; + read_humidity_config++; + log_d("Received tolerance: %.2f%% from endpoint %d", _tolerance_humidity, src_endpoint); + } + if (read_humidity_config == 3) { + log_d("All humidity config attributes processed"); + read_humidity_config = 0; + xSemaphoreGive(lock); + } + } } +// Temperature measuring methods + void ZigbeeThermostat::getTemperature() { /* Send "read attributes" command to all bound sensors */ esp_zb_zcl_read_attr_cmd_t read_req; @@ -248,7 +293,7 @@ void ZigbeeThermostat::getTemperature(uint8_t endpoint, esp_zb_ieee_addr_t ieee_ esp_zb_lock_release(); } -void ZigbeeThermostat::getSensorSettings() { +void ZigbeeThermostat::getTemperatureSettings() { /* Send "read attributes" command to all bound sensors */ esp_zb_zcl_read_attr_cmd_t read_req; memset(&read_req, 0, sizeof(read_req)); @@ -273,11 +318,11 @@ void ZigbeeThermostat::getSensorSettings() { return; } else { //Call the callback function when all attributes are read - _on_config_receive(_min_temp, _max_temp, _tolerance); + _on_temp_config_receive(_min_temp, _max_temp, _tolerance_temp); } } -void ZigbeeThermostat::getSensorSettings(uint16_t group_addr) { +void ZigbeeThermostat::getTemperatureSettings(uint16_t group_addr) { /* Send "read attributes" command to the group */ esp_zb_zcl_read_attr_cmd_t read_req; memset(&read_req, 0, sizeof(read_req)); @@ -303,11 +348,11 @@ void ZigbeeThermostat::getSensorSettings(uint16_t group_addr) { return; } else { //Call the callback function when all attributes are read - _on_config_receive(_min_temp, _max_temp, _tolerance); + _on_temp_config_receive(_min_temp, _max_temp, _tolerance_temp); } } -void ZigbeeThermostat::getSensorSettings(uint8_t endpoint, uint16_t short_addr) { +void ZigbeeThermostat::getTemperatureSettings(uint8_t endpoint, uint16_t short_addr) { /* Send "read attributes" command to specific endpoint */ esp_zb_zcl_read_attr_cmd_t read_req; memset(&read_req, 0, sizeof(read_req)); @@ -334,11 +379,11 @@ void ZigbeeThermostat::getSensorSettings(uint8_t endpoint, uint16_t short_addr) return; } else { //Call the callback function when all attributes are read - _on_config_receive(_min_temp, _max_temp, _tolerance); + _on_temp_config_receive(_min_temp, _max_temp, _tolerance_temp); } } -void ZigbeeThermostat::getSensorSettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr) { +void ZigbeeThermostat::getTemperatureSettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr) { /* Send "read attributes" command to specific endpoint */ esp_zb_zcl_read_attr_cmd_t read_req; memset(&read_req, 0, sizeof(read_req)); @@ -368,7 +413,7 @@ void ZigbeeThermostat::getSensorSettings(uint8_t endpoint, esp_zb_ieee_addr_t ie return; } else { //Call the callback function when all attributes are read - _on_config_receive(_min_temp, _max_temp, _tolerance); + _on_temp_config_receive(_min_temp, _max_temp, _tolerance_temp); } } @@ -394,7 +439,7 @@ void ZigbeeThermostat::setTemperatureReporting(uint16_t min_interval, uint16_t m report_cmd.record_number = ZB_ARRAY_LENGHT(records); report_cmd.record_field = records; - log_i("Sending 'configure reporting' command"); + log_i("Sending 'configure temperature reporting' command"); esp_zb_lock_acquire(portMAX_DELAY); esp_zb_zcl_config_report_cmd_req(&report_cmd); esp_zb_lock_release(); @@ -423,7 +468,7 @@ void ZigbeeThermostat::setTemperatureReporting(uint16_t group_addr, uint16_t min report_cmd.record_number = ZB_ARRAY_LENGHT(records); report_cmd.record_field = records; - log_i("Sending 'configure reporting' command to group address 0x%x", group_addr); + log_i("Sending 'configure temperature reporting' command to group address 0x%x", group_addr); esp_zb_lock_acquire(portMAX_DELAY); esp_zb_zcl_config_report_cmd_req(&report_cmd); esp_zb_lock_release(); @@ -453,7 +498,7 @@ void ZigbeeThermostat::setTemperatureReporting(uint8_t endpoint, uint16_t short_ report_cmd.record_number = ZB_ARRAY_LENGHT(records); report_cmd.record_field = records; - log_i("Sending 'configure reporting' command to endpoint %d, address 0x%x", endpoint, short_addr); + log_i("Sending 'configure temperature reporting' command to endpoint %d, address 0x%x", endpoint, short_addr); esp_zb_lock_acquire(portMAX_DELAY); esp_zb_zcl_config_report_cmd_req(&report_cmd); esp_zb_lock_release(); @@ -484,12 +529,337 @@ void ZigbeeThermostat::setTemperatureReporting(uint8_t endpoint, esp_zb_ieee_add report_cmd.record_field = records; log_i( - "Sending 'configure reporting' command to endpoint %d, ieee address %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", endpoint, ieee_addr[7], ieee_addr[6], + "Sending 'configure temperature reporting' command to endpoint %d, ieee address %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", endpoint, ieee_addr[7], + ieee_addr[6], ieee_addr[5], ieee_addr[4], ieee_addr[3], ieee_addr[2], ieee_addr[1], ieee_addr[0] + ); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_config_report_cmd_req(&report_cmd); + esp_zb_lock_release(); +} + +// Humidity measuring methods + +void ZigbeeThermostat::getHumidity() { + /* Send "read attributes" command to all bound sensors */ + esp_zb_zcl_read_attr_cmd_t read_req; + memset(&read_req, 0, sizeof(read_req)); + read_req.address_mode = ESP_ZB_APS_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT; + read_req.zcl_basic_cmd.src_endpoint = _endpoint; + read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + uint16_t attributes[] = {ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID}; + read_req.attr_number = ZB_ARRAY_LENGHT(attributes); + read_req.attr_field = attributes; + + log_i("Sending 'read humidity' command"); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_read_attr_cmd_req(&read_req); + esp_zb_lock_release(); +} + +void ZigbeeThermostat::getHumidity(uint16_t group_addr) { + /* Send "read attributes" command to the group */ + esp_zb_zcl_read_attr_cmd_t read_req; + memset(&read_req, 0, sizeof(read_req)); + read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT; + read_req.zcl_basic_cmd.src_endpoint = _endpoint; + read_req.zcl_basic_cmd.dst_addr_u.addr_short = group_addr; + read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + uint16_t attributes[] = {ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID}; + read_req.attr_number = ZB_ARRAY_LENGHT(attributes); + read_req.attr_field = attributes; + + log_i("Sending 'read humidity' command to group address 0x%x", group_addr); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_read_attr_cmd_req(&read_req); + esp_zb_lock_release(); +} + +void ZigbeeThermostat::getHumidity(uint8_t endpoint, uint16_t short_addr) { + /* Send "read attributes" command to specific endpoint */ + esp_zb_zcl_read_attr_cmd_t read_req; + memset(&read_req, 0, sizeof(read_req)); + read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT; + read_req.zcl_basic_cmd.src_endpoint = _endpoint; + read_req.zcl_basic_cmd.dst_endpoint = endpoint; + read_req.zcl_basic_cmd.dst_addr_u.addr_short = short_addr; + read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + uint16_t attributes[] = {ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID}; + read_req.attr_number = ZB_ARRAY_LENGHT(attributes); + read_req.attr_field = attributes; + + log_i("Sending 'read humidity' command to endpoint %d, address 0x%x", endpoint, short_addr); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_read_attr_cmd_req(&read_req); + esp_zb_lock_release(); +} + +void ZigbeeThermostat::getHumidity(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr) { + /* Send "read attributes" command to specific endpoint */ + esp_zb_zcl_read_attr_cmd_t read_req; + memset(&read_req, 0, sizeof(read_req)); + read_req.address_mode = ESP_ZB_APS_ADDR_MODE_64_ENDP_PRESENT; + read_req.zcl_basic_cmd.src_endpoint = _endpoint; + read_req.zcl_basic_cmd.dst_endpoint = endpoint; + read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + memcpy(read_req.zcl_basic_cmd.dst_addr_u.addr_long, ieee_addr, sizeof(esp_zb_ieee_addr_t)); + + uint16_t attributes[] = {ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID}; + read_req.attr_number = ZB_ARRAY_LENGHT(attributes); + read_req.attr_field = attributes; + + log_i( + "Sending 'read humidity' command to endpoint %d, ieee address %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", endpoint, ieee_addr[7], ieee_addr[6], ieee_addr[5], + ieee_addr[4], ieee_addr[3], ieee_addr[2], ieee_addr[1], ieee_addr[0] + ); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_read_attr_cmd_req(&read_req); + esp_zb_lock_release(); +} + +void ZigbeeThermostat::getHumiditySettings() { + /* Send "read attributes" command to all bound sensors */ + esp_zb_zcl_read_attr_cmd_t read_req; + memset(&read_req, 0, sizeof(read_req)); + read_req.address_mode = ESP_ZB_APS_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT; + read_req.zcl_basic_cmd.src_endpoint = _endpoint; + read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + uint16_t attributes[] = { + ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MIN_VALUE_ID, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MAX_VALUE_ID, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_TOLERANCE_ID + }; + read_req.attr_number = ZB_ARRAY_LENGHT(attributes); + read_req.attr_field = attributes; + + log_i("Sending 'read humidity settings' command"); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_read_attr_cmd_req(&read_req); + esp_zb_lock_release(); + + //Take semaphore to wait for response of all attributes + if (xSemaphoreTake(lock, ZB_CMD_TIMEOUT) != pdTRUE) { + log_e("Error while reading attributes"); + return; + } else { + //Call the callback function when all attributes are read + _on_humidity_config_receive(_min_humidity, _max_humidity, _tolerance_humidity); + } +} + +void ZigbeeThermostat::getHumiditySettings(uint16_t group_addr) { + /* Send "read attributes" command to the group */ + esp_zb_zcl_read_attr_cmd_t read_req; + memset(&read_req, 0, sizeof(read_req)); + read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT; + read_req.zcl_basic_cmd.src_endpoint = _endpoint; + read_req.zcl_basic_cmd.dst_addr_u.addr_short = group_addr; + read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + uint16_t attributes[] = { + ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MIN_VALUE_ID, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MAX_VALUE_ID, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_TOLERANCE_ID + }; + read_req.attr_number = ZB_ARRAY_LENGHT(attributes); + read_req.attr_field = attributes; + + log_i("Sending 'read humidity settings' command to group address 0x%x", group_addr); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_read_attr_cmd_req(&read_req); + esp_zb_lock_release(); + + //Take semaphore to wait for response of all attributes + if (xSemaphoreTake(lock, ZB_CMD_TIMEOUT) != pdTRUE) { + log_e("Error while reading attributes"); + return; + } else { + //Call the callback function when all attributes are read + _on_humidity_config_receive(_min_humidity, _max_humidity, _tolerance_humidity); + } +} + +void ZigbeeThermostat::getHumiditySettings(uint8_t endpoint, uint16_t short_addr) { + /* Send "read attributes" command to specific endpoint */ + esp_zb_zcl_read_attr_cmd_t read_req; + memset(&read_req, 0, sizeof(read_req)); + read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT; + read_req.zcl_basic_cmd.src_endpoint = _endpoint; + read_req.zcl_basic_cmd.dst_endpoint = endpoint; + read_req.zcl_basic_cmd.dst_addr_u.addr_short = short_addr; + read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + uint16_t attributes[] = { + ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MIN_VALUE_ID, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MAX_VALUE_ID, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_TOLERANCE_ID + }; + read_req.attr_number = ZB_ARRAY_LENGHT(attributes); + read_req.attr_field = attributes; + + log_i("Sending 'read humidity settings' command to endpoint %d, address 0x%x", endpoint, short_addr); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_read_attr_cmd_req(&read_req); + esp_zb_lock_release(); + + //Take semaphore to wait for response of all attributes + if (xSemaphoreTake(lock, ZB_CMD_TIMEOUT) != pdTRUE) { + log_e("Error while reading attributes"); + return; + } else { + //Call the callback function when all attributes are read + _on_humidity_config_receive(_min_humidity, _max_humidity, _tolerance_humidity); + } +} + +void ZigbeeThermostat::getHumiditySettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr) { + /* Send "read attributes" command to specific endpoint */ + esp_zb_zcl_read_attr_cmd_t read_req; + memset(&read_req, 0, sizeof(read_req)); + read_req.address_mode = ESP_ZB_APS_ADDR_MODE_64_ENDP_PRESENT; + read_req.zcl_basic_cmd.src_endpoint = _endpoint; + read_req.zcl_basic_cmd.dst_endpoint = endpoint; + read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + memcpy(read_req.zcl_basic_cmd.dst_addr_u.addr_long, ieee_addr, sizeof(esp_zb_ieee_addr_t)); + + uint16_t attributes[] = { + ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MIN_VALUE_ID, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MAX_VALUE_ID, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_TOLERANCE_ID + }; + read_req.attr_number = ZB_ARRAY_LENGHT(attributes); + read_req.attr_field = attributes; + + log_i( + "Sending 'read humidity settings' command to endpoint %d, ieee address %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", endpoint, ieee_addr[7], ieee_addr[6], ieee_addr[5], ieee_addr[4], ieee_addr[3], ieee_addr[2], ieee_addr[1], ieee_addr[0] ); esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_read_attr_cmd_req(&read_req); + esp_zb_lock_release(); + + //Take semaphore to wait for response of all attributes + if (xSemaphoreTake(lock, ZB_CMD_TIMEOUT) != pdTRUE) { + log_e("Error while reading attributes"); + return; + } else { + //Call the callback function when all attributes are read + _on_humidity_config_receive(_min_humidity, _max_humidity, _tolerance_humidity); + } +} + +void ZigbeeThermostat::setHumidityReporting(uint16_t min_interval, uint16_t max_interval, float delta) { + /* Send "configure report attribute" command to all bound sensors */ + esp_zb_zcl_config_report_cmd_t report_cmd; + memset(&report_cmd, 0, sizeof(report_cmd)); + report_cmd.address_mode = ESP_ZB_APS_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT; + report_cmd.zcl_basic_cmd.src_endpoint = _endpoint; + report_cmd.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + int16_t report_change = (int16_t)delta * 100; + esp_zb_zcl_config_report_record_t records[] = { + { + .direction = ESP_ZB_ZCL_REPORT_DIRECTION_SEND, + .attributeID = ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, + .attrType = ESP_ZB_ZCL_ATTR_TYPE_U16, + .min_interval = min_interval, + .max_interval = max_interval, + .reportable_change = (void *)&report_change, + }, + }; + report_cmd.record_number = ZB_ARRAY_LENGHT(records); + report_cmd.record_field = records; + + log_i("Sending 'configure humidity reporting' command"); + esp_zb_lock_acquire(portMAX_DELAY); esp_zb_zcl_config_report_cmd_req(&report_cmd); esp_zb_lock_release(); } +void ZigbeeThermostat::setHumidityReporting(uint16_t group_addr, uint16_t min_interval, uint16_t max_interval, float delta) { + /* Send "configure report attribute" command to the group */ + esp_zb_zcl_config_report_cmd_t report_cmd; + memset(&report_cmd, 0, sizeof(report_cmd)); + report_cmd.address_mode = ESP_ZB_APS_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT; + report_cmd.zcl_basic_cmd.src_endpoint = _endpoint; + report_cmd.zcl_basic_cmd.dst_addr_u.addr_short = group_addr; + report_cmd.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + int16_t report_change = (int16_t)delta * 100; + esp_zb_zcl_config_report_record_t records[] = { + { + .direction = ESP_ZB_ZCL_REPORT_DIRECTION_SEND, + .attributeID = ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, + .attrType = ESP_ZB_ZCL_ATTR_TYPE_U16, + .min_interval = min_interval, + .max_interval = max_interval, + .reportable_change = (void *)&report_change, + }, + }; + report_cmd.record_number = ZB_ARRAY_LENGHT(records); + report_cmd.record_field = records; + + log_i("Sending 'configure humidity reporting' command to group address 0x%x", group_addr); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_config_report_cmd_req(&report_cmd); + esp_zb_lock_release(); +} + +void ZigbeeThermostat::setHumidityReporting(uint8_t endpoint, uint16_t short_addr, uint16_t min_interval, uint16_t max_interval, float delta) { + /* Send "configure report attribute" command to specific endpoint */ + esp_zb_zcl_config_report_cmd_t report_cmd; + memset(&report_cmd, 0, sizeof(report_cmd)); + report_cmd.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT; + report_cmd.zcl_basic_cmd.src_endpoint = _endpoint; + report_cmd.zcl_basic_cmd.dst_endpoint = endpoint; + report_cmd.zcl_basic_cmd.dst_addr_u.addr_short = short_addr; + report_cmd.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + + int16_t report_change = (int16_t)delta * 100; + esp_zb_zcl_config_report_record_t records[] = { + { + .direction = ESP_ZB_ZCL_REPORT_DIRECTION_SEND, + .attributeID = ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, + .attrType = ESP_ZB_ZCL_ATTR_TYPE_U16, + .min_interval = min_interval, + .max_interval = max_interval, + .reportable_change = (void *)&report_change, + }, + }; + report_cmd.record_number = ZB_ARRAY_LENGHT(records); + report_cmd.record_field = records; + + log_i("Sending 'configure humidity reporting' command to endpoint %d, address 0x%x", endpoint, short_addr); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_config_report_cmd_req(&report_cmd); + esp_zb_lock_release(); +} + +void ZigbeeThermostat::setHumidityReporting(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr, uint16_t min_interval, uint16_t max_interval, float delta) { + /* Send "configure report attribute" command to specific endpoint */ + esp_zb_zcl_config_report_cmd_t report_cmd; + memset(&report_cmd, 0, sizeof(report_cmd)); + report_cmd.address_mode = ESP_ZB_APS_ADDR_MODE_64_ENDP_PRESENT; + report_cmd.zcl_basic_cmd.src_endpoint = _endpoint; + report_cmd.zcl_basic_cmd.dst_endpoint = endpoint; + report_cmd.clusterID = ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT; + memcpy(report_cmd.zcl_basic_cmd.dst_addr_u.addr_long, ieee_addr, sizeof(esp_zb_ieee_addr_t)); + + int16_t report_change = (int16_t)delta * 100; + esp_zb_zcl_config_report_record_t records[] = { + { + .direction = ESP_ZB_ZCL_REPORT_DIRECTION_SEND, + .attributeID = ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, + .attrType = ESP_ZB_ZCL_ATTR_TYPE_U16, + .min_interval = min_interval, + .max_interval = max_interval, + .reportable_change = (void *)&report_change, + }, + }; + report_cmd.record_number = ZB_ARRAY_LENGHT(records); + report_cmd.record_field = records; + + log_i( + "Sending 'configure humidity reporting' command to endpoint %d, ieee address %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", endpoint, ieee_addr[7], ieee_addr[6], + ieee_addr[5], ieee_addr[4], ieee_addr[3], ieee_addr[2], ieee_addr[1], ieee_addr[0] + ); + esp_zb_lock_acquire(portMAX_DELAY); + esp_zb_zcl_config_report_cmd_req(&report_cmd); + esp_zb_lock_release(); +} #endif // CONFIG_ZB_ENABLED diff --git a/libraries/Zigbee/src/ep/ZigbeeThermostat.h b/libraries/Zigbee/src/ep/ZigbeeThermostat.h index 1f6aef485d6..57a4c934b79 100644 --- a/libraries/Zigbee/src/ep/ZigbeeThermostat.h +++ b/libraries/Zigbee/src/ep/ZigbeeThermostat.h @@ -48,14 +48,20 @@ class ZigbeeThermostat : public ZigbeeEP { ZigbeeThermostat(uint8_t endpoint); ~ZigbeeThermostat() {} + // Temperature measuring methods void onTempReceive(void (*callback)(float)) { _on_temp_receive = callback; } void onTempReceiveWithSource(void (*callback)(float, uint8_t, esp_zb_zcl_addr_t)) { _on_temp_receive_with_source = callback; } + // For backward compatibility: keep onConfigReceive as an alias to onTempConfigReceive (deprecated). + [[deprecated("Use onTempConfigReceive instead.")]] void onConfigReceive(void (*callback)(float, float, float)) { - _on_config_receive = callback; + onTempConfigReceive(callback); + } + void onTempConfigReceive(void (*callback)(float, float, float)) { + _on_temp_config_receive = callback; } void getTemperature(); @@ -63,16 +69,60 @@ class ZigbeeThermostat : public ZigbeeEP { void getTemperature(uint8_t endpoint, uint16_t short_addr); void getTemperature(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); - void getSensorSettings(); - void getSensorSettings(uint16_t group_addr); - void getSensorSettings(uint8_t endpoint, uint16_t short_addr); - void getSensorSettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); + // For backward compatibility: keep getSensorSettings as an alias to getTemperatureSettings (deprecated). + [[deprecated("Use getTemperatureSettings instead.")]] + void getSensorSettings() { + getTemperatureSettings(); + } + [[deprecated("Use getTemperatureSettings instead.")]] + void getSensorSettings(uint16_t group_addr) { + getTemperatureSettings(group_addr); + } + [[deprecated("Use getTemperatureSettings instead.")]] + void getSensorSettings(uint8_t endpoint, uint16_t short_addr) { + getTemperatureSettings(endpoint, short_addr); + } + [[deprecated("Use getTemperatureSettings instead.")]] + void getSensorSettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr) { + getTemperatureSettings(endpoint, ieee_addr); + } + + void getTemperatureSettings(); + void getTemperatureSettings(uint16_t group_addr); + void getTemperatureSettings(uint8_t endpoint, uint16_t short_addr); + void getTemperatureSettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); void setTemperatureReporting(uint16_t min_interval, uint16_t max_interval, float delta); void setTemperatureReporting(uint16_t group_addr, uint16_t min_interval, uint16_t max_interval, float delta); void setTemperatureReporting(uint8_t endpoint, uint16_t short_addr, uint16_t min_interval, uint16_t max_interval, float delta); void setTemperatureReporting(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr, uint16_t min_interval, uint16_t max_interval, float delta); + // Humidity measuring methods + void onHumidityReceive(void (*callback)(float)) { + _on_humidity_receive = callback; + } + void onHumidityReceiveWithSource(void (*callback)(float, uint8_t, esp_zb_zcl_addr_t)) { + _on_humidity_receive_with_source = callback; + } + void onHumidityConfigReceive(void (*callback)(float, float, float)) { + _on_humidity_config_receive = callback; + } + + void getHumidity(); + void getHumidity(uint16_t group_addr); + void getHumidity(uint8_t endpoint, uint16_t short_addr); + void getHumidity(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); + + void getHumiditySettings(); + void getHumiditySettings(uint16_t group_addr); + void getHumiditySettings(uint8_t endpoint, uint16_t short_addr); + void getHumiditySettings(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr); + + void setHumidityReporting(uint16_t min_interval, uint16_t max_interval, float delta); + void setHumidityReporting(uint16_t group_addr, uint16_t min_interval, uint16_t max_interval, float delta); + void setHumidityReporting(uint8_t endpoint, uint16_t short_addr, uint16_t min_interval, uint16_t max_interval, float delta); + void setHumidityReporting(uint8_t endpoint, esp_zb_ieee_addr_t ieee_addr, uint16_t min_interval, uint16_t max_interval, float delta); + private: // save instance of the class in order to use it in static functions static ZigbeeThermostat *_instance; @@ -80,10 +130,17 @@ class ZigbeeThermostat : public ZigbeeEP { void (*_on_temp_receive)(float); void (*_on_temp_receive_with_source)(float, uint8_t, esp_zb_zcl_addr_t); - void (*_on_config_receive)(float, float, float); + void (*_on_temp_config_receive)(float, float, float); float _min_temp; float _max_temp; - float _tolerance; + float _tolerance_temp; + + void (*_on_humidity_receive)(float); + void (*_on_humidity_receive_with_source)(float, uint8_t, esp_zb_zcl_addr_t); + void (*_on_humidity_config_receive)(float, float, float); + float _min_humidity; + float _max_humidity; + float _tolerance_humidity; void findEndpoint(esp_zb_zdo_match_desc_req_param_t *cmd_req); void bindCb(esp_zb_zdp_status_t zdo_status, void *user_ctx); From e3ce2ec82aad70b765f7acce06c76b2d51febef7 Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Wed, 5 Nov 2025 10:32:30 +0200 Subject: [PATCH 23/31] IDF release/v5.5 (#11981) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * IDF release/v5.5 f1a1df9b * fix(usb): Add required callback for tinysub host * fix(sdmmc): Fix missing initializer warnings * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- cores/esp32/esp32-hal-tinyusb.c | 19 +++++++ libraries/SD_MMC/src/SD_MMC.cpp | 12 +++- package/package_esp32_index.template.json | 68 +++++++++++------------ 3 files changed, 64 insertions(+), 35 deletions(-) diff --git a/cores/esp32/esp32-hal-tinyusb.c b/cores/esp32/esp32-hal-tinyusb.c index 30a827baa01..ed1ff2aab60 100644 --- a/cores/esp32/esp32-hal-tinyusb.c +++ b/cores/esp32/esp32-hal-tinyusb.c @@ -477,6 +477,25 @@ __attribute__((weak)) uint16_t tud_network_xmit_cb(uint8_t *dst, void *ref, uint __attribute__((weak)) void tud_network_init_cb(void) {} #endif +#if CFG_TUH_HID +__attribute__((weak)) void tuh_hid_mount_cb(uint8_t dev_addr, uint8_t idx, uint8_t const *report_desc, uint16_t desc_len) {} +__attribute__((weak)) void tuh_hid_umount_cb(uint8_t dev_addr, uint8_t idx) {} +__attribute__((weak)) void tuh_hid_report_received_cb(uint8_t dev_addr, uint8_t idx, uint8_t const *report, uint16_t len) {} +__attribute__((weak)) void tuh_hid_report_sent_cb(uint8_t dev_addr, uint8_t idx, uint8_t const *report, uint16_t len) {} +__attribute__((weak)) void tuh_hid_get_report_complete_cb(uint8_t dev_addr, uint8_t idx, uint8_t report_id, uint8_t report_type, uint16_t len) {} +__attribute__((weak)) void tuh_hid_set_report_complete_cb(uint8_t dev_addr, uint8_t idx, uint8_t report_id, uint8_t report_type, uint16_t len) {} +__attribute__((weak)) void tuh_hid_set_protocol_complete_cb(uint8_t dev_addr, uint8_t idx, uint8_t protocol) {} +#endif +#if CFG_TUH_CDC +__attribute__((weak)) void tuh_cdc_mount_cb(uint8_t idx) {} +__attribute__((weak)) void tuh_cdc_umount_cb(uint8_t idx) {} +__attribute__((weak)) void tuh_cdc_rx_cb(uint8_t idx) {} +__attribute__((weak)) void tuh_cdc_tx_complete_cb(uint8_t idx) {} +#endif +#if CFG_TUH_MSC +__attribute__((weak)) void tuh_msc_mount_cb(uint8_t dev_addr) {} +__attribute__((weak)) void tuh_msc_umount_cb(uint8_t dev_addr) {} +#endif /* * Private API * */ diff --git a/libraries/SD_MMC/src/SD_MMC.cpp b/libraries/SD_MMC/src/SD_MMC.cpp index 4665198c4ae..2d840556c3e 100644 --- a/libraries/SD_MMC/src/SD_MMC.cpp +++ b/libraries/SD_MMC/src/SD_MMC.cpp @@ -228,7 +228,17 @@ bool SDMMCFS::begin(const char *mountpoint, bool mode1bit, bool format_if_mount_ #if defined(CONFIG_IDF_TARGET_ESP32P4) && defined(BOARD_SDMMC_SLOT) && (BOARD_SDMMC_SLOT == 0) host.slot = SDMMC_HOST_SLOT_0; // reconfigure slot_config to remove all pins in order to use IO_MUX - slot_config = { + slot_config = sdmmc_slot_config_t{ + .clk = GPIO_NUM_NC, + .cmd = GPIO_NUM_NC, + .d0 = GPIO_NUM_NC, + .d1 = GPIO_NUM_NC, + .d2 = GPIO_NUM_NC, + .d3 = GPIO_NUM_NC, + .d4 = GPIO_NUM_NC, + .d5 = GPIO_NUM_NC, + .d6 = GPIO_NUM_NC, + .d7 = GPIO_NUM_NC, .cd = SDMMC_SLOT_NO_CD, .wp = SDMMC_SLOT_NO_WP, .width = 4, diff --git a/package/package_esp32_index.template.json b/package/package_esp32_index.template.json index 77b203fc056..3219801be0c 100644 --- a/package/package_esp32_index.template.json +++ b/package/package_esp32_index.template.json @@ -51,7 +51,7 @@ { "packager": "esp32", "name": "esp32-arduino-libs", - "version": "idf-release_v5.5-07e9bf49-v1" + "version": "idf-release_v5.5-f1a1df9b-v3" }, { "packager": "esp32", @@ -104,63 +104,63 @@ "tools": [ { "name": "esp32-arduino-libs", - "version": "idf-release_v5.5-07e9bf49-v1", + "version": "idf-release_v5.5-f1a1df9b-v3", "systems": [ { "host": "i686-mingw32", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "checksum": "SHA-256:e5ae9e62d781df941128a526e653bb82decde844604b5ccee62efd12c6b2eaa6", - "size": "448900656" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "checksum": "SHA-256:35c0cc87b1965d0e70d599472dc6640e0363b05340488e73ccb7481d349906f3", + "size": "451353300" }, { "host": "x86_64-mingw32", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "checksum": "SHA-256:e5ae9e62d781df941128a526e653bb82decde844604b5ccee62efd12c6b2eaa6", - "size": "448900656" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "checksum": "SHA-256:35c0cc87b1965d0e70d599472dc6640e0363b05340488e73ccb7481d349906f3", + "size": "451353300" }, { "host": "arm64-apple-darwin", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "checksum": "SHA-256:e5ae9e62d781df941128a526e653bb82decde844604b5ccee62efd12c6b2eaa6", - "size": "448900656" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "checksum": "SHA-256:35c0cc87b1965d0e70d599472dc6640e0363b05340488e73ccb7481d349906f3", + "size": "451353300" }, { "host": "x86_64-apple-darwin", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "checksum": "SHA-256:e5ae9e62d781df941128a526e653bb82decde844604b5ccee62efd12c6b2eaa6", - "size": "448900656" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "checksum": "SHA-256:35c0cc87b1965d0e70d599472dc6640e0363b05340488e73ccb7481d349906f3", + "size": "451353300" }, { "host": "x86_64-pc-linux-gnu", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "checksum": "SHA-256:e5ae9e62d781df941128a526e653bb82decde844604b5ccee62efd12c6b2eaa6", - "size": "448900656" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "checksum": "SHA-256:35c0cc87b1965d0e70d599472dc6640e0363b05340488e73ccb7481d349906f3", + "size": "451353300" }, { "host": "i686-pc-linux-gnu", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "checksum": "SHA-256:e5ae9e62d781df941128a526e653bb82decde844604b5ccee62efd12c6b2eaa6", - "size": "448900656" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "checksum": "SHA-256:35c0cc87b1965d0e70d599472dc6640e0363b05340488e73ccb7481d349906f3", + "size": "451353300" }, { "host": "aarch64-linux-gnu", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "checksum": "SHA-256:e5ae9e62d781df941128a526e653bb82decde844604b5ccee62efd12c6b2eaa6", - "size": "448900656" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "checksum": "SHA-256:35c0cc87b1965d0e70d599472dc6640e0363b05340488e73ccb7481d349906f3", + "size": "451353300" }, { "host": "arm-linux-gnueabihf", - "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-07e9bf49-v1.zip", - "checksum": "SHA-256:e5ae9e62d781df941128a526e653bb82decde844604b5ccee62efd12c6b2eaa6", - "size": "448900656" + "url": "https://github.com/espressif/esp32-arduino-lib-builder/releases/download/idf-release_v5.5/esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "archiveFileName": "esp32-arduino-libs-idf-release_v5.5-f1a1df9b-v3.zip", + "checksum": "SHA-256:35c0cc87b1965d0e70d599472dc6640e0363b05340488e73ccb7481d349906f3", + "size": "451353300" } ] }, From a8c74c4d32760d7ff6e82b7a6f048fb8fdb2271f Mon Sep 17 00:00:00 2001 From: Andrew Sund Date: Wed, 5 Nov 2025 00:40:52 -0800 Subject: [PATCH 24/31] feat(uart): Add function to invert hardware UART Tx line (#11428) * feat(uart): Add function to invert hardware UART Tx line Simply clone existing Rx functionality for Tx. Allow granular control over both lines. Avoid overloading HardwareSerial::begin() to change the bool invert parameter to a bitmask type. Add an untested implementation for ESP32C6, ESP32H2, ESP32P4 that references the different register naming on those chips. * feat(uart): Refactor UART signal inversion handling Refactor UART inversion functions to use a helper for signal inversion. Update UART bus array structure to include inversion mask. * feat(uart): Add UART signal inversion functions Added functions for UART signal inversion and updated existing function signatures. * feat(uart): Refactor UART signal inversion handling * feat(uart): Change setRxInvert and setTxInvert to return bool * feat(uart) : Refactor serial inversion methods to return bool Changed setRxInvert, setTxInvert to return bool. Added setCtsInvert and setRtsInvert methods. * feat(uart): adds commentatries Added functions for UART pins signal inversion. * feat(uart): add commentaties * feat(uart): Refactor uartPinSignalInversion for mutex locking * Refactor UART inversion functions to use new method * fix(uart): missing uart struct usage * fix(uart): missing function return value * feat(uart): add commentaties * fix(uart): inverting rx instead of tx * feat(uart): logging for UART signal inversion Added logging for signal inversion in UART functions. * feat(uart): standard verbose log message * feat(uart): add not inverted verbose log message * fix(uart): misspeling comment Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(uart): fixes bad code formating Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(uart): fixes misspeling Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(uart): fixes bad code formating Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(uart): fixes bad code formating Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(uart): fixes bad code formating Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(uart): fixes extra spaces Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(uart): extra spacing Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat(uart): Improve logging for UART signal inversion * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: Sugar Glider Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- cores/esp32/HardwareSerial.cpp | 16 ++++- cores/esp32/HardwareSerial.h | 7 ++- cores/esp32/esp32-hal-uart.c | 103 +++++++++++++++++++++++---------- cores/esp32/esp32-hal-uart.h | 10 +++- tests/validation/uart/uart.ino | 8 +++ 5 files changed, 109 insertions(+), 35 deletions(-) diff --git a/cores/esp32/HardwareSerial.cpp b/cores/esp32/HardwareSerial.cpp index 3651667fe07..5c0ed3e50f7 100644 --- a/cores/esp32/HardwareSerial.cpp +++ b/cores/esp32/HardwareSerial.cpp @@ -572,8 +572,20 @@ HardwareSerial::operator bool() const { return uartIsDriverInstalled(_uart); } -void HardwareSerial::setRxInvert(bool invert) { - uartSetRxInvert(_uart, invert); +bool HardwareSerial::setRxInvert(bool invert) { + return uartSetRxInvert(_uart, invert); +} + +bool HardwareSerial::setTxInvert(bool invert) { + return uartSetTxInvert(_uart, invert); +} + +bool HardwareSerial::setCtsInvert(bool invert) { + return uartSetCtsInvert(_uart, invert); +} + +bool HardwareSerial::setRtsInvert(bool invert) { + return uartSetRtsInvert(_uart, invert); } // negative Pin value will keep it unmodified diff --git a/cores/esp32/HardwareSerial.h b/cores/esp32/HardwareSerial.h index bd24e0eec0e..9a4eec5ccb4 100644 --- a/cores/esp32/HardwareSerial.h +++ b/cores/esp32/HardwareSerial.h @@ -356,7 +356,12 @@ class HardwareSerial : public Stream { void setDebugOutput(bool); - void setRxInvert(bool); + // functions used to enable or disable UART pins signal inversion + // returns the requested operation success status + bool setRxInvert(bool); + bool setTxInvert(bool); + bool setCtsInvert(bool); + bool setRtsInvert(bool); // Negative Pin Number will keep it unmodified, thus this function can set individual pins // setPins() can be called after or before begin() diff --git a/cores/esp32/esp32-hal-uart.c b/cores/esp32/esp32-hal-uart.c index 3b88dae5901..8eb6bc1c645 100644 --- a/cores/esp32/esp32-hal-uart.c +++ b/cores/esp32/esp32-hal-uart.c @@ -60,6 +60,7 @@ struct uart_struct_t { bool _inverted; // UART inverted signal uint8_t _rxfifo_full_thrhd; // UART RX FIFO full threshold int8_t _uart_clock_source; // UART Clock Source that should be used if user defines an specific one with setClockSource() + uint32_t inv_mask; // UART inverse mask used to maintain related pin state }; #if CONFIG_DISABLE_HAL_LOCKS @@ -68,21 +69,21 @@ struct uart_struct_t { #define UART_MUTEX_UNLOCK() static uart_t _uart_bus_array[] = { - {0, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {0, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #if SOC_UART_NUM > 1 - {1, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {1, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif #if SOC_UART_NUM > 2 - {2, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {2, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif #if SOC_UART_NUM > 3 - {3, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {3, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif #if SOC_UART_NUM > 4 - {4, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {4, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif #if SOC_UART_NUM > 5 - {5, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {5, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif }; @@ -97,21 +98,21 @@ static uart_t _uart_bus_array[] = { xSemaphoreGive(uart->lock) static uart_t _uart_bus_array[] = { - {NULL, 0, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {NULL, 0, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #if SOC_UART_NUM > 1 - {NULL, 1, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {NULL, 1, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif #if SOC_UART_NUM > 2 - {NULL, 2, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {NULL, 2, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif #if SOC_UART_NUM > 3 - {NULL, 3, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {NULL, 3, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif #if SOC_UART_NUM > 4 - {NULL, 4, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {NULL, 4, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif #if SOC_UART_NUM > 5 - {NULL, 5, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1}, + {NULL, 5, false, 0, NULL, -1, -1, -1, -1, 0, 0, 0, 0, false, 0, -1, 0}, #endif }; @@ -873,10 +874,20 @@ uart_t *uartBegin( if (retCode) { if (inverted) { // invert signal for both Rx and Tx - retCode &= ESP_OK == uart_set_line_inverse(uart_nr, UART_SIGNAL_TXD_INV | UART_SIGNAL_RXD_INV); + uint32_t _inv_mask = uart->inv_mask; + _inv_mask |= UART_SIGNAL_TXD_INV | UART_SIGNAL_RXD_INV; + retCode &= ESP_OK == uart_set_line_inverse(uart_nr, _inv_mask); + if (retCode) { + uart->inv_mask = _inv_mask; + log_v("UART%d: RX and TX signals are set to be inverted.", uart_nr); + } } else { // disable invert signal for both Rx and Tx retCode &= ESP_OK == uart_set_line_inverse(uart_nr, UART_SIGNAL_INV_DISABLE); + if (retCode) { + uart->inv_mask = UART_SIGNAL_INV_DISABLE; + log_v("UART%d: RX and TX signals are set not inverted.", uart_nr); + } } } // if all fine, set internal parameters @@ -978,28 +989,58 @@ void uartEnd(uint8_t uart_num) { UART_MUTEX_UNLOCK(); } -void uartSetRxInvert(uart_t *uart, bool invert) { +// Helper generic function that takes a uart_signal_inv_t mask to be properly applied to the designated uart pin +// invMask can be UART_SIGNAL_RXD_INV, UART_SIGNAL_TXD_INV, UART_SIGNAL_RTS_INV, UART_SIGNAL_CTS_INV +// returns the operation success status +bool uartPinSignalInversion(uart_t *uart, uint32_t invMask, bool inverted) { if (uart == NULL) { - return; + return false; } -#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32H2 || CONFIG_IDF_TARGET_ESP32P4 || CONFIG_IDF_TARGET_ESP32C5 - // POTENTIAL ISSUE :: original code only set/reset rxd_inv bit - // IDF or LL set/reset the whole inv_mask! - // if (invert) - // ESP_ERROR_CHECK(uart_set_line_inverse(uart->num, UART_SIGNAL_RXD_INV)); - // else - // ESP_ERROR_CHECK(uart_set_line_inverse(uart->num, UART_SIGNAL_INV_DISABLE)); - log_e("uartSetRxInvert is not supported in ESP32C6, ESP32H2 and ESP32P4"); -#else - // this implementation is better over IDF API because it only affects RXD - // this is supported in ESP32, ESP32-S2 and ESP32-C3 - uart_dev_t *hw = UART_LL_GET_HW(uart->num); - if (invert) { - hw->conf0.rxd_inv = 1; + UART_MUTEX_LOCK(); + uint32_t _inv_mask = uart->inv_mask; + if (inverted) { + _inv_mask |= invMask; } else { - hw->conf0.rxd_inv = 0; + _inv_mask &= ~invMask; } -#endif + bool retCode = ESP_OK == uart_set_line_inverse(uart->num, _inv_mask); + if (retCode) { + uart->inv_mask = _inv_mask; + } + UART_MUTEX_UNLOCK(); + return retCode; +} + +bool uartSetRxInvert(uart_t *uart, bool invert) { + if (uartPinSignalInversion(uart, UART_SIGNAL_RXD_INV, invert)) { + log_v("UART%d: RX signal inversion %s", uart->num, invert ? "enabled" : "disabled"); + return true; + } + return false; +} + +bool uartSetTxInvert(uart_t *uart, bool invert) { + if (uartPinSignalInversion(uart, UART_SIGNAL_TXD_INV, invert)) { + log_v("UART%d: TX signal inversion %s", uart->num, invert ? "enabled" : "disabled"); + return true; + } + return false; +} + +bool uartSetCtsInvert(uart_t *uart, bool invert) { + if (uartPinSignalInversion(uart, UART_SIGNAL_CTS_INV, invert)) { + log_v("UART%d: CTS signal inversion %s", uart->num, invert ? "enabled" : "disabled"); + return true; + } + return false; +} + +bool uartSetRtsInvert(uart_t *uart, bool invert) { + if (uartPinSignalInversion(uart, UART_SIGNAL_RTS_INV, invert)) { + log_v("UART%d: RTS signal inversion %s", uart->num, invert ? "enabled" : "disabled"); + return true; + } + return false; } uint32_t uartAvailable(uart_t *uart) { diff --git a/cores/esp32/esp32-hal-uart.h b/cores/esp32/esp32-hal-uart.h index 3af0d7ab96c..ab46a3c4f9c 100644 --- a/cores/esp32/esp32-hal-uart.h +++ b/cores/esp32/esp32-hal-uart.h @@ -61,7 +61,15 @@ void uartFlushTxOnly(uart_t *uart, bool txOnly); bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate); uint32_t uartGetBaudRate(uart_t *uart); -void uartSetRxInvert(uart_t *uart, bool invert); +// Helper generic function that takes a uart_signal_inv_t mask to be properly applied to the designated uart pin +// invMask can be UART_SIGNAL_RXD_INV, UART_SIGNAL_TXD_INV, UART_SIGNAL_RTS_INV, UART_SIGNAL_CTS_INV +// returns the operation success status +bool uartPinSignalInversion(uart_t *uart, uint32_t invMask, bool inverted); +// functions used to individually enable or disable UART pins inversion +bool uartSetRxInvert(uart_t *uart, bool invert); +bool uartSetTxInvert(uart_t *uart, bool invert); +bool uartSetCtsInvert(uart_t *uart, bool invert); +bool uartSetRtsInvert(uart_t *uart, bool invert); bool uartSetRxTimeout(uart_t *uart, uint8_t numSymbTimeout); bool uartSetRxFIFOFull(uart_t *uart, uint8_t numBytesFIFOFull); void uartSetFastReading(uart_t *uart); diff --git a/tests/validation/uart/uart.ino b/tests/validation/uart/uart.ino index 794fc9affc2..18da797659b 100644 --- a/tests/validation/uart/uart.ino +++ b/tests/validation/uart/uart.ino @@ -276,6 +276,10 @@ void enabled_uart_calls_test(void) { Serial1.setRxInvert(true); Serial1.setRxInvert(false); + log_d("Checking if Serial 1 TX can be inverted while running"); + Serial1.setTxInvert(true); + Serial1.setTxInvert(false); + Serial.println("Enabled UART calls test successful"); } @@ -351,6 +355,10 @@ void disabled_uart_calls_test(void) { Serial1.setRxInvert(true); Serial1.setRxInvert(false); + log_d("Checking if Serial 1 TX can be inverted when stopped"); + Serial1.setTxInvert(true); + Serial1.setTxInvert(false); + Serial.println("Disabled UART calls test successful"); } From 971c6ca191a407ffacf6252c4e84135377bf2660 Mon Sep 17 00:00:00 2001 From: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Date: Wed, 5 Nov 2025 09:36:51 -0300 Subject: [PATCH 25/31] fix(ble): Fix descriptor loading and add client multiconnect example (#11978) * fix(nimble): Get descriptors on demand * feat(ble): Add client multiconnect example * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- .../Client_multiconnect.ino | 276 ++++++++++++++++++ .../BLE/examples/Client_multiconnect/ci.yml | 5 + libraries/BLE/src/BLERemoteCharacteristic.cpp | 33 ++- libraries/BLE/src/BLERemoteCharacteristic.h | 2 +- 4 files changed, 312 insertions(+), 4 deletions(-) create mode 100644 libraries/BLE/examples/Client_multiconnect/Client_multiconnect.ino create mode 100644 libraries/BLE/examples/Client_multiconnect/ci.yml diff --git a/libraries/BLE/examples/Client_multiconnect/Client_multiconnect.ino b/libraries/BLE/examples/Client_multiconnect/Client_multiconnect.ino new file mode 100644 index 00000000000..712e5bbffe2 --- /dev/null +++ b/libraries/BLE/examples/Client_multiconnect/Client_multiconnect.ino @@ -0,0 +1,276 @@ +/** + * A BLE client example that connects to multiple BLE servers simultaneously. + * + * This example demonstrates how to: + * - Scan for multiple BLE servers + * - Connect to multiple servers at the same time + * - Interact with characteristics on different servers + * - Handle disconnections and reconnections + * + * The example looks for servers advertising the service UUID: 4fafc201-1fb5-459e-8fcc-c5c9c331914b + * and connects to up to MAX_SERVERS servers. + * + * Created by lucasssvaz + * Based on the original Client example by Neil Kolban and chegewara + */ + +#include "BLEDevice.h" + +// The remote service we wish to connect to. +static BLEUUID serviceUUID("4fafc201-1fb5-459e-8fcc-c5c9c331914b"); +// The characteristic of the remote service we are interested in. +static BLEUUID charUUID("beb5483e-36e1-4688-b7f5-ea07361b26a8"); + +// Maximum number of servers to connect to +#define MAX_SERVERS 3 + +// Structure to hold information about each connected server +struct ServerConnection { + BLEClient *pClient; + BLEAdvertisedDevice *pDevice; + BLERemoteCharacteristic *pRemoteCharacteristic; + bool connected; + bool doConnect; + String name; +}; + +// Array to manage multiple server connections +ServerConnection servers[MAX_SERVERS]; +int connectedServers = 0; +static bool doScan = true; + +// Callback function to handle notifications from any server +static void notifyCallback(BLERemoteCharacteristic *pBLERemoteCharacteristic, uint8_t *pData, size_t length, bool isNotify) { + // Find which server this notification came from + for (int i = 0; i < MAX_SERVERS; i++) { + if (servers[i].connected && servers[i].pRemoteCharacteristic == pBLERemoteCharacteristic) { + Serial.print("Notify from server "); + Serial.print(servers[i].name); + Serial.print(" - Characteristic: "); + Serial.print(pBLERemoteCharacteristic->getUUID().toString().c_str()); + Serial.print(" | Length: "); + Serial.print(length); + Serial.print(" | Data: "); + Serial.write(pData, length); + Serial.println(); + break; + } + } +} + +// Client callback class to handle connect/disconnect events +class MyClientCallback : public BLEClientCallbacks { + int serverIndex; + +public: + MyClientCallback(int index) : serverIndex(index) {} + + void onConnect(BLEClient *pclient) { + Serial.print("Connected to server "); + Serial.println(servers[serverIndex].name); + } + + void onDisconnect(BLEClient *pclient) { + servers[serverIndex].connected = false; + connectedServers--; + Serial.print("Disconnected from server "); + Serial.print(servers[serverIndex].name); + Serial.print(" | Total connected: "); + Serial.println(connectedServers); + doScan = true; // Resume scanning to find replacement servers + } +}; + +// Function to connect to a specific server +bool connectToServer(int serverIndex) { + Serial.print("Connecting to server "); + Serial.print(serverIndex); + Serial.print(" at address: "); + Serial.println(servers[serverIndex].pDevice->getAddress().toString().c_str()); + + servers[serverIndex].pClient = BLEDevice::createClient(); + Serial.println(" - Created client"); + + // Set the callback for this specific server connection + servers[serverIndex].pClient->setClientCallbacks(new MyClientCallback(serverIndex)); + + // Connect to the remote BLE Server + servers[serverIndex].pClient->connect(servers[serverIndex].pDevice); + Serial.println(" - Connected to server"); + servers[serverIndex].pClient->setMTU(517); // Request maximum MTU from server + + // Obtain a reference to the service we are after in the remote BLE server + BLERemoteService *pRemoteService = servers[serverIndex].pClient->getService(serviceUUID); + if (pRemoteService == nullptr) { + Serial.print("Failed to find service UUID: "); + Serial.println(serviceUUID.toString().c_str()); + servers[serverIndex].pClient->disconnect(); + return false; + } + Serial.println(" - Found service"); + + // Obtain a reference to the characteristic in the service + servers[serverIndex].pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID); + if (servers[serverIndex].pRemoteCharacteristic == nullptr) { + Serial.print("Failed to find characteristic UUID: "); + Serial.println(charUUID.toString().c_str()); + servers[serverIndex].pClient->disconnect(); + return false; + } + Serial.println(" - Found characteristic"); + + // Read the value of the characteristic + if (servers[serverIndex].pRemoteCharacteristic->canRead()) { + String value = servers[serverIndex].pRemoteCharacteristic->readValue(); + Serial.print("Initial characteristic value: "); + Serial.println(value.c_str()); + } + + // Register for notifications if available + if (servers[serverIndex].pRemoteCharacteristic->canNotify()) { + servers[serverIndex].pRemoteCharacteristic->registerForNotify(notifyCallback); + Serial.println(" - Registered for notifications"); + } + + servers[serverIndex].connected = true; + connectedServers++; + Serial.print("Successfully connected! Total servers connected: "); + Serial.println(connectedServers); + return true; +} + +// Scan callback class to find BLE servers +class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks { + void onResult(BLEAdvertisedDevice advertisedDevice) { + Serial.print("BLE Device found: "); + Serial.println(advertisedDevice.toString().c_str()); + + // Check if this device has the service we're looking for + if (advertisedDevice.haveServiceUUID() && advertisedDevice.isAdvertisingService(serviceUUID)) { + Serial.println(" -> This device has our service!"); + + // Check if we already know about this device + String deviceAddress = advertisedDevice.getAddress().toString().c_str(); + bool alreadyKnown = false; + + for (int i = 0; i < MAX_SERVERS; i++) { + if (servers[i].pDevice != nullptr) { + if (servers[i].pDevice->getAddress().toString() == deviceAddress) { + alreadyKnown = true; + break; + } + } + } + + if (alreadyKnown) { + Serial.println(" -> Already connected or connecting to this device"); + return; + } + + // Find an empty slot for this server + for (int i = 0; i < MAX_SERVERS; i++) { + if (servers[i].pDevice == nullptr || (!servers[i].connected && !servers[i].doConnect)) { + servers[i].pDevice = new BLEAdvertisedDevice(advertisedDevice); + servers[i].doConnect = true; + servers[i].name = "Server_" + String(i); + Serial.print(" -> Assigned to slot "); + Serial.println(i); + + // If we've found enough servers, stop scanning + int pendingConnections = 0; + for (int j = 0; j < MAX_SERVERS; j++) { + if (servers[j].connected || servers[j].doConnect) { + pendingConnections++; + } + } + if (pendingConnections >= MAX_SERVERS) { + Serial.println("Found enough servers, stopping scan"); + BLEDevice::getScan()->stop(); + doScan = false; + } + break; + } + } + } + } +}; + +void setup() { + Serial.begin(115200); + Serial.println("================================="); + Serial.println("BLE Multi-Client Example"); + Serial.println("================================="); + Serial.print("Max servers to connect: "); + Serial.println(MAX_SERVERS); + Serial.println(); + + // Initialize all server connections + for (int i = 0; i < MAX_SERVERS; i++) { + servers[i].pClient = nullptr; + servers[i].pDevice = nullptr; + servers[i].pRemoteCharacteristic = nullptr; + servers[i].connected = false; + servers[i].doConnect = false; + servers[i].name = ""; + } + + // Initialize BLE + BLEDevice::init("ESP32_MultiClient"); + + // Set up BLE scanner + BLEScan *pBLEScan = BLEDevice::getScan(); + pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); + pBLEScan->setInterval(1349); + pBLEScan->setWindow(449); + pBLEScan->setActiveScan(true); + pBLEScan->start(5, false); + + Serial.println("Scanning for BLE servers..."); +} + +void loop() { + // Process any pending connections + for (int i = 0; i < MAX_SERVERS; i++) { + if (servers[i].doConnect) { + if (connectToServer(i)) { + Serial.println("Connection successful"); + } else { + Serial.println("Connection failed"); + // Clear this slot so we can try another server + delete servers[i].pDevice; + servers[i].pDevice = nullptr; + } + servers[i].doConnect = false; + } + } + + // If we're connected to servers, send data to each one + if (connectedServers > 0) { + for (int i = 0; i < MAX_SERVERS; i++) { + if (servers[i].connected && servers[i].pRemoteCharacteristic != nullptr) { + // Create a unique message for each server + String newValue = servers[i].name + " | Time: " + String(millis() / 1000); + + Serial.print("Sending to "); + Serial.print(servers[i].name); + Serial.print(": "); + Serial.println(newValue); + + // Write the value to the characteristic + servers[i].pRemoteCharacteristic->writeValue(newValue.c_str(), newValue.length()); + } + } + } else { + Serial.println("No servers connected"); + } + + // Resume scanning if we have room for more connections + if (doScan && connectedServers < MAX_SERVERS) { + Serial.println("Resuming scan for more servers..."); + BLEDevice::getScan()->start(5, false); + doScan = false; + delay(5000); // Wait for scan to complete + } + + delay(2000); // Delay between loop iterations +} diff --git a/libraries/BLE/examples/Client_multiconnect/ci.yml b/libraries/BLE/examples/Client_multiconnect/ci.yml new file mode 100644 index 00000000000..cfee8c8935f --- /dev/null +++ b/libraries/BLE/examples/Client_multiconnect/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires_any: + - CONFIG_SOC_BLE_SUPPORTED=y + - CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y diff --git a/libraries/BLE/src/BLERemoteCharacteristic.cpp b/libraries/BLE/src/BLERemoteCharacteristic.cpp index e964e679897..70a91288ab2 100644 --- a/libraries/BLE/src/BLERemoteCharacteristic.cpp +++ b/libraries/BLE/src/BLERemoteCharacteristic.cpp @@ -112,6 +112,11 @@ bool BLERemoteCharacteristic::canWriteNoResponse() { * @brief Retrieve the map of descriptors keyed by UUID. */ std::map *BLERemoteCharacteristic::getDescriptors() { + // Retrieve descriptors if not already done (lazy loading) + if (!m_descriptorsRetrieved) { + log_d("Descriptors not yet retrieved, retrieving now..."); + retrieveDescriptors(); + } return &m_descriptorMap; } // getDescriptors @@ -132,6 +137,11 @@ uint16_t BLERemoteCharacteristic::getHandle() { */ BLERemoteDescriptor *BLERemoteCharacteristic::getDescriptor(BLEUUID uuid) { log_v(">> getDescriptor: uuid: %s", uuid.toString().c_str()); + // Retrieve descriptors if not already done (lazy loading) + if (!m_descriptorsRetrieved) { + log_d("Descriptors not yet retrieved, retrieving now..."); + retrieveDescriptors(); + } std::string v = uuid.toString().c_str(); for (auto &myPair : m_descriptorMap) { if (myPair.first == v) { @@ -287,6 +297,7 @@ void BLERemoteCharacteristic::removeDescriptors() { delete myPair.second; } m_descriptorMap.clear(); + m_descriptorsRetrieved = false; // Allow descriptors to be retrieved again } // removeCharacteristics /** @@ -366,6 +377,7 @@ BLERemoteCharacteristic::BLERemoteCharacteristic(uint16_t handle, BLEUUID uuid, m_notifyCallback = nullptr; m_rawData = nullptr; m_auth = ESP_GATT_AUTH_REQ_NONE; + m_descriptorsRetrieved = false; retrieveDescriptors(); // Get the descriptors for this characteristic log_v("<< BLERemoteCharacteristic"); @@ -549,6 +561,7 @@ void BLERemoteCharacteristic::retrieveDescriptors() { offset++; } // while true //m_haveCharacteristics = true; // Remember that we have received the characteristics. + m_descriptorsRetrieved = true; log_v("<< retrieveDescriptors(): Found %d descriptors.", offset); } // getDescriptors @@ -663,14 +676,15 @@ BLERemoteCharacteristic::BLERemoteCharacteristic(BLERemoteService *pRemoteServic m_handle = chr->val_handle; m_defHandle = chr->def_handle; - m_endHandle = 0; m_charProp = chr->properties; m_pRemoteService = pRemoteService; m_notifyCallback = nullptr; m_rawData = nullptr; m_auth = 0; + m_descriptorsRetrieved = false; - retrieveDescriptors(); // Get the descriptors for this characteristic + // Don't retrieve descriptors in constructor for NimBLE to avoid deadlock + // Descriptors will be retrieved on-demand when needed (e.g., for notifications) log_v("<< BLERemoteCharacteristic(): %s", m_uuid.toString().c_str()); } // BLERemoteCharacteristic @@ -781,6 +795,7 @@ bool BLERemoteCharacteristic::retrieveDescriptors(const BLEUUID *uuid_filter) { // If this is the last handle then there are no descriptors if (m_handle == getRemoteService()->getEndHandle()) { + m_descriptorsRetrieved = true; log_d("<< retrieveDescriptors(): No descriptors found"); return true; } @@ -789,7 +804,9 @@ bool BLERemoteCharacteristic::retrieveDescriptors(const BLEUUID *uuid_filter) { desc_filter_t filter = {uuid_filter, &taskData}; int rc = 0; - rc = ble_gattc_disc_all_dscs(getRemoteService()->getClient()->getConnId(), m_handle, m_endHandle, BLERemoteCharacteristic::descriptorDiscCB, &filter); + rc = ble_gattc_disc_all_dscs( + getRemoteService()->getClient()->getConnId(), m_handle, getRemoteService()->getEndHandle(), BLERemoteCharacteristic::descriptorDiscCB, &filter + ); if (rc != 0) { log_e("ble_gattc_disc_all_dscs: rc=%d %s", rc, BLEUtils::returnCodeToString(rc)); @@ -806,6 +823,7 @@ bool BLERemoteCharacteristic::retrieveDescriptors(const BLEUUID *uuid_filter) { return false; } + m_descriptorsRetrieved = true; log_d("<< retrieveDescriptors(): Found %d descriptors.", m_descriptorMap.size() - prevDscCount); return true; } // retrieveDescriptors @@ -966,6 +984,15 @@ bool BLERemoteCharacteristic::setNotify(uint16_t val, notify_callback notifyCall m_notifyCallback = notifyCallback; + // Retrieve descriptors if not already done (lazy loading) + if (!m_descriptorsRetrieved) { + log_d("Descriptors not yet retrieved, retrieving now..."); + if (!retrieveDescriptors()) { + log_e("<< setNotify(): Failed to retrieve descriptors"); + return false; + } + } + BLERemoteDescriptor *desc = getDescriptor(BLEUUID((uint16_t)0x2902)); if (desc == nullptr) { log_w("<< setNotify(): Callback set, CCCD not found"); diff --git a/libraries/BLE/src/BLERemoteCharacteristic.h b/libraries/BLE/src/BLERemoteCharacteristic.h index 5191087d11c..7b04a15c7cb 100644 --- a/libraries/BLE/src/BLERemoteCharacteristic.h +++ b/libraries/BLE/src/BLERemoteCharacteristic.h @@ -152,6 +152,7 @@ class BLERemoteCharacteristic { // We maintain a map of descriptors owned by this characteristic keyed by a string representation of the UUID. std::map m_descriptorMap; + bool m_descriptorsRetrieved; // Flag to track if descriptor retrieval has been attempted /*************************************************************************** * NimBLE private properties * @@ -159,7 +160,6 @@ class BLERemoteCharacteristic { #if defined(CONFIG_NIMBLE_ENABLED) uint16_t m_defHandle; - uint16_t m_endHandle; #endif /*************************************************************************** From 9077b54f20fcdb2454e7cae1535a55416d297f73 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Wed, 5 Nov 2025 09:37:13 -0300 Subject: [PATCH 26/31] feat(matter): esp32-c6 matter over thread example (#11980) * feat(matter): esp32-c6 matter over thread example This is a Enhanced Color Light example using Thread over Matter with Arduino Matter Library code. The example shall be built using Arduino as IDF Component. * fix(matter): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(matter): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(matter): typos * fix(matter): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat(matter): Add CI configuration * feat(matter): Update dependencies in idf_component.yml * feat(matter): allow C5, C6 and H2 as possible targets * feat(matter): CI will target any SoC with Thread radio Removed unsupported target configurations for ESP32. * feat(matter): remove C6 from project name * feat(matter): Revise README for ESP32-C5, C6, and H2 support Updated README to reflect support for ESP32-C5, ESP32-C6, and ESP32-H2. Adjusted Arduino and IDF version compatibility information. * feat(matter): Changes the folder name * feat(matter): Changes the folder name * feat(matter): clarify Matter device addition * feat(matter): limits possible SoC targets * fix(matter): bad dependency declaration * fix(matter): dependencies over Core 3.1.0, IDF 5.3 and Matter 1.3 * fix(matter): Add target configurations to ci.yml * fix(matter): exclude CI failing incompatible targets * fix(matter): fix cloning instructions Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * ci(pre-commit): Apply automatic fixes * fix(pre-commit): Fix spelling --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> --- .../CMakeLists.txt | 19 ++ .../README.md | 38 ++++ .../Arduino_ESP_Matter_over_OpenThread/ci.yml | 9 + .../main/CMakeLists.txt | 2 + .../main/MatterEnhancedColorLight.cpp | 186 ++++++++++++++++++ .../main/idf_component.yml | 8 + .../partitions.csv | 10 + .../sdkconfig.defaults | 68 +++++++ 8 files changed, 340 insertions(+) create mode 100644 idf_component_examples/Arduino_ESP_Matter_over_OpenThread/CMakeLists.txt create mode 100644 idf_component_examples/Arduino_ESP_Matter_over_OpenThread/README.md create mode 100644 idf_component_examples/Arduino_ESP_Matter_over_OpenThread/ci.yml create mode 100644 idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/CMakeLists.txt create mode 100644 idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/MatterEnhancedColorLight.cpp create mode 100644 idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/idf_component.yml create mode 100644 idf_component_examples/Arduino_ESP_Matter_over_OpenThread/partitions.csv create mode 100644 idf_component_examples/Arduino_ESP_Matter_over_OpenThread/sdkconfig.defaults diff --git a/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/CMakeLists.txt b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/CMakeLists.txt new file mode 100644 index 00000000000..282ad5bb137 --- /dev/null +++ b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/CMakeLists.txt @@ -0,0 +1,19 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) + +#target_compile_options(espressif__esp_matter PUBLIC +# -DCHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER= +# -DCHIP_HAVE_CONFIG_H) +#list(APPEND compile_definitions "CHIP_HAVE_CONFIG_H=1") +#list(APPEND compile_definitions "CHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER=") + +project(Matter_Thread_Light) + +idf_build_set_property(CXX_COMPILE_OPTIONS "-std=gnu++2a;-Os;-DCHIP_HAVE_CONFIG_H" APPEND) +idf_build_set_property(C_COMPILE_OPTIONS "-Os" APPEND) +# For RISCV chips, project_include.cmake sets -Wno-format, but does not clear various +# flags that depend on -Wformat +idf_build_set_property(COMPILE_OPTIONS "-Wno-format-nonliteral;-Wno-format-security" APPEND) diff --git a/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/README.md b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/README.md new file mode 100644 index 00000000000..4c88aef7199 --- /dev/null +++ b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/README.md @@ -0,0 +1,38 @@ +| Supported Targets | ESP32-C5 | ESP32-C6 | ESP32-H2 | +| ----------------- | -------- | -------- | -------- | + +# Arduino ESP-Matter over Thread example using ESP32-C5, ESP32-C6 and ESP32-H2 (any SoC with Thread radio) +This is an Arduino as IDF Project to build an ESP-Matter over Thread RGB Light using ESP32-C5/C6/H2 and ESP-Matter Arduino API \ +This example shall work with Arduino 3.3.2+ and also IDF 5.5.1+\ +It is necessary to make sure that the IDF version matches with the one used to release the Arduino Core version.\ +This can be done looking into release information in https://github.com/espressif/arduino-esp32/releases \ + +Any example from [ESP32 Matter Library examples](https://github.com/espressif/arduino-esp32/tree/master/libraries/Matter/examples) +can be used to build the application.\ +Feel free to create your own Arduino Matter sketch!\ +Do not forget to rename the `sketch_file_name.ino` to `sketch_file_name.cpp` in `main` folder. + +The `main/idf_component.yml` file holds the ESP-Matter component version and Arduino Core version.\ +Edit this file to set the target versions, if necessary. + +# General Instructions: + +1- Install the required IDF version into your computer. It can be done following the guide in +https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/index.html + +For Windows: https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/index.html \ +For Linux or macOS: https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/linux-macos-setup.html + +2- Test IDF with `idf.py --version` to check if it is installed and configured correctly. + +3- To create a ESP-IDF project from this example with the latest release of Arduino-esp32, you can simply run command: +`idf.py create-project-from-example "espressif/arduino-esp32:Arduino_ESP_Matter_over_OpenThread"` +ESP-IDF will download all dependencies needed from the component registry and setup the project for you. + +4- Open an IDF terminal and execute `idf.py set-target esp32c6` (esp32c5 and esp32h2 are also possible targets) + +5- Execute `idf.py -p flash monitor` + +6- It will build, upload and show the UART0 output in the screen. + +7- Try to add the new Matter device to your local Matter environment. diff --git a/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/ci.yml b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/ci.yml new file mode 100644 index 00000000000..8fde8e9096c --- /dev/null +++ b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/ci.yml @@ -0,0 +1,9 @@ +targets: + esp32s2: false + esp32s3: false + esp32c2: false + esp32p4: false +requires: + - CONFIG_OPENTHREAD_ENABLED=y + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y + - CONFIG_MBEDTLS_HKDF_C=y diff --git a/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/CMakeLists.txt b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/CMakeLists.txt new file mode 100644 index 00000000000..f18fa805695 --- /dev/null +++ b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRC_DIRS "." + INCLUDE_DIRS ".") diff --git a/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/MatterEnhancedColorLight.cpp b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/MatterEnhancedColorLight.cpp new file mode 100644 index 00000000000..3f4735f0d22 --- /dev/null +++ b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/MatterEnhancedColorLight.cpp @@ -0,0 +1,186 @@ +// Copyright 2025 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Matter Manager +#include +#include + +// List of Matter Endpoints for this Node +// Color Light Endpoint +MatterEnhancedColorLight EnhancedColorLight; + +// It will use HSV color to control all Matter Attribute Changes +HsvColor_t currentHSVColor = {0, 0, 0}; + +// it will keep last OnOff & HSV Color state stored, using Preferences +Preferences matterPref; +const char *onOffPrefKey = "OnOff"; +const char *hsvColorPrefKey = "HSV"; + +// set your board RGB LED pin here +#ifdef RGB_BUILTIN +const uint8_t ledPin = RGB_BUILTIN; +#else +const uint8_t ledPin = 2; // Set your pin here if your board has not defined LED_BUILTIN +#warning "Do not forget to set the RGB LED pin" +#endif + +// set your board USER BUTTON pin here +const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button. + +// Button control +uint32_t button_time_stamp = 0; // debouncing control +bool button_state = false; // false = released | true = pressed +const uint32_t debounceTime = 250; // button debouncing time (ms) +const uint32_t decommissioningTimeout = 5000; // keep the button pressed for 5s, or longer, to decommission + +// Set the RGB LED Light based on the current state of the Enhanced Color Light +bool setLightState(bool state, espHsvColor_t colorHSV, uint8_t brightness, uint16_t temperature_Mireds) { + + if (state) { +#ifdef RGB_BUILTIN + // currentHSVColor keeps final color result + espRgbColor_t rgbColor = espHsvColorToRgbColor(currentHSVColor); + // set the RGB LED + rgbLedWrite(ledPin, rgbColor.r, rgbColor.g, rgbColor.b); +#else + // No Color RGB LED, just use the HSV value (brightness) to control the LED + analogWrite(ledPin, colorHSV.v); +#endif + } else { +#ifndef RGB_BUILTIN + // after analogWrite(), it is necessary to set the GPIO to digital mode first + pinMode(ledPin, OUTPUT); +#endif + digitalWrite(ledPin, LOW); + } + // store last HSV Color and OnOff state for when the Light is restarted / power goes off + matterPref.putBool(onOffPrefKey, state); + matterPref.putUInt(hsvColorPrefKey, currentHSVColor.h << 16 | currentHSVColor.s << 8 | currentHSVColor.v); + // This callback must return the success state to Matter core + return true; +} + +void setup() { + // Initialize the USER BUTTON (Boot button) GPIO that will act as a toggle switch + pinMode(buttonPin, INPUT_PULLUP); + // Initialize the LED (light) GPIO and Matter End Point + pinMode(ledPin, OUTPUT); + + Serial.begin(115200); + + // Initialize Matter EndPoint + matterPref.begin("MatterPrefs", false); + // default OnOff state is ON if not stored before + bool lastOnOffState = matterPref.getBool(onOffPrefKey, true); + // default HSV color is (21, 216, 25) - Warm White Color at 10% intensity + uint32_t prefHsvColor = matterPref.getUInt(hsvColorPrefKey, 21 << 16 | 216 << 8 | 25); + currentHSVColor = {uint8_t(prefHsvColor >> 16), uint8_t(prefHsvColor >> 8), uint8_t(prefHsvColor)}; + EnhancedColorLight.begin(lastOnOffState, currentHSVColor); + // set the callback function to handle the Light state change + EnhancedColorLight.onChange(setLightState); + + // lambda functions are used to set the attribute change callbacks + EnhancedColorLight.onChangeOnOff([](bool state) { + Serial.printf("Light OnOff changed to %s\r\n", state ? "ON" : "OFF"); + return true; + }); + EnhancedColorLight.onChangeColorTemperature([](uint16_t colorTemperature) { + Serial.printf("Light Color Temperature changed to %d\r\n", colorTemperature); + // get correspondent Hue and Saturation of the color temperature + HsvColor_t hsvTemperature = espRgbColorToHsvColor(espCTToRgbColor(colorTemperature)); + // keep previous the brightness and just change the Hue and Saturation + currentHSVColor.h = hsvTemperature.h; + currentHSVColor.s = hsvTemperature.s; + return true; + }); + EnhancedColorLight.onChangeBrightness([](uint8_t brightness) { + Serial.printf("Light brightness changed to %d\r\n", brightness); + // change current brightness (HSV value) + currentHSVColor.v = brightness; + return true; + }); + EnhancedColorLight.onChangeColorHSV([](HsvColor_t hsvColor) { + Serial.printf("Light HSV Color changed to (%d,%d,%d)\r\n", hsvColor.h, hsvColor.s, hsvColor.v); + // keep the current brightness and just change Hue and Saturation + currentHSVColor.h = hsvColor.h; + currentHSVColor.s = hsvColor.s; + return true; + }); + + // Matter beginning - Last step, after all EndPoints are initialized + Matter.begin(); + // This may be a restart of a already commissioned Matter accessory + if (Matter.isDeviceCommissioned()) { + Serial.println("Matter Node is commissioned and connected to the network. Ready for use."); + Serial.printf( + "Initial state: %s | RGB Color: (%d,%d,%d) \r\n", EnhancedColorLight ? "ON" : "OFF", EnhancedColorLight.getColorRGB().r, + EnhancedColorLight.getColorRGB().g, EnhancedColorLight.getColorRGB().b + ); + // configure the Light based on initial on-off state and its color + EnhancedColorLight.updateAccessory(); + } +} + +void loop() { + // Check Matter Light Commissioning state, which may change during execution of loop() + if (!Matter.isDeviceCommissioned()) { + Serial.println(""); + Serial.println("Matter Node is not commissioned yet."); + Serial.println("Initiate the device discovery in your Matter environment."); + Serial.println("Commission it to your Matter hub with the manual pairing code or QR code"); + Serial.printf("Manual pairing code: %s\r\n", Matter.getManualPairingCode().c_str()); + Serial.printf("QR code URL: %s\r\n", Matter.getOnboardingQRCodeUrl().c_str()); + // waits for Matter Light Commissioning. + uint32_t timeCount = 0; + while (!Matter.isDeviceCommissioned()) { + delay(100); + if ((timeCount++ % 50) == 0) { // 50*100ms = 5 sec + Serial.println("Matter Node not commissioned yet. Waiting for commissioning."); + } + } + Serial.printf( + "Initial state: %s | RGB Color: (%d,%d,%d) \r\n", EnhancedColorLight ? "ON" : "OFF", EnhancedColorLight.getColorRGB().r, + EnhancedColorLight.getColorRGB().g, EnhancedColorLight.getColorRGB().b + ); + // configure the Light based on initial on-off state and its color + EnhancedColorLight.updateAccessory(); + Serial.println("Matter Node is commissioned and connected to the network. Ready for use."); + } + + // A button is also used to control the light + // Check if the button has been pressed + if (digitalRead(buttonPin) == LOW && !button_state) { + // deals with button debouncing + button_time_stamp = millis(); // record the time while the button is pressed. + button_state = true; // pressed. + } + + // Onboard User Button is used as a Light toggle switch or to decommission it + uint32_t time_diff = millis() - button_time_stamp; + if (button_state && time_diff > debounceTime && digitalRead(buttonPin) == HIGH) { + button_state = false; // released + // Toggle button is released - toggle the light + Serial.println("User button released. Toggling Light!"); + EnhancedColorLight.toggle(); // Matter Controller also can see the change + } + + // Onboard User Button is kept pressed for longer than 5 seconds in order to decommission matter node + if (button_state && time_diff > decommissioningTimeout) { + Serial.println("Decommissioning the Light Matter Accessory. It shall be commissioned again."); + EnhancedColorLight = false; // turn the light off + Matter.decommission(); + button_time_stamp = millis(); // avoid running decommissining again, reboot takes a second or so + } +} diff --git a/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/idf_component.yml b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/idf_component.yml new file mode 100644 index 00000000000..233b595e654 --- /dev/null +++ b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/main/idf_component.yml @@ -0,0 +1,8 @@ +dependencies: + espressif/esp_matter: + version: ">=1.3.0" + require: public + espressif/arduino-esp32: + version: ">=3.1.0" + override_path: "../../../" + pre_release: true diff --git a/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/partitions.csv b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/partitions.csv new file mode 100644 index 00000000000..ffe5f242e76 --- /dev/null +++ b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/partitions.csv @@ -0,0 +1,10 @@ +# Name, Type, SubType, Offset, Size, Flags +# Note: Firmware partition offset needs to be 64K aligned, initial 36K (9 sectors) are reserved for bootloader and partition table +esp_secure_cert, 0x3F, ,0xd000, 0x2000, encrypted +nvs, data, nvs, 0x10000, 0xC000, +nvs_keys, data, nvs_keys,, 0x1000, encrypted +otadata, data, ota, , 0x2000 +phy_init, data, phy, , 0x1000, +ota_0, app, ota_0, 0x20000, 0x1E0000, +ota_1, app, ota_1, 0x200000, 0x1E0000, +fctry, data, nvs, 0x3E0000, 0x6000 diff --git a/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/sdkconfig.defaults b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/sdkconfig.defaults new file mode 100644 index 00000000000..aa3d5c838eb --- /dev/null +++ b/idf_component_examples/Arduino_ESP_Matter_over_OpenThread/sdkconfig.defaults @@ -0,0 +1,68 @@ +# Arduino ESP32 settings +CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y +CONFIG_AUTOSTART_ARDUINO=y +CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LOG_DEFAULT_LEVEL_ERROR=y + +# Enables Arduino Selective Library Compilation: Arduino Matter + Preferences Library +CONFIG_ARDUINO_SELECTIVE_COMPILATION=y +CONFIG_ARDUINO_SELECTIVE_Preferences=y +CONFIG_ARDUINO_SELECTIVE_Network=y +CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y +CONFIG_ARDUINO_SELECTIVE_Matter=y + +# Flash Configuration +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y +CONFIG_ESPTOOLPY_FLASHFREQ="80m" +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" +CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 + +# libsodium +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# NIMBLE +CONFIG_BT_ENABLED=y +CONFIG_BT_NIMBLE_ENABLED=y +CONFIG_BT_NIMBLE_EXT_ADV=n +CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 +CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n + +# Enable OpenThread +CONFIG_OPENTHREAD_ENABLED=y +CONFIG_OPENTHREAD_SRP_CLIENT=y +CONFIG_OPENTHREAD_DNS_CLIENT=y +CONFIG_OPENTHREAD_LOG_LEVEL_DYNAMIC=n +CONFIG_OPENTHREAD_LOG_LEVEL_NOTE=y +CONFIG_OPENTHREAD_CLI=n + +# Disable lwip ipv6 autoconfig +CONFIG_LWIP_IPV6_AUTOCONFIG=n + +# Use a custom partition table +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" + +# LwIP config for OpenThread +CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 +CONFIG_LWIP_MULTICAST_PING=y + +# MDNS platform +CONFIG_USE_MINIMAL_MDNS=n +CONFIG_ENABLE_EXTENDED_DISCOVERY=y + +# Disable STA and AP for ESP32C6 ==> no Wifi, thread only +CONFIG_ENABLE_WIFI_STATION=n +CONFIG_ENABLE_WIFI_AP=n + +# Enable HKDF in mbedtls +CONFIG_MBEDTLS_HKDF_C=y From 57f03ed8f2543075b20e0591271fd0d7af5aee4d Mon Sep 17 00:00:00 2001 From: Piotr Gniado Date: Wed, 5 Nov 2025 13:37:39 +0100 Subject: [PATCH 27/31] fix(eth): Del mac and phy resources (#11982) * fix(eth): Del mac and phy resources - Delete _mac and _phy resources when initialization of ETH fails - Delete _mac and _phy resources when calling ETHClass::end() and ETH is not fully initialized * fx(pr): Remove call to _delMacAndPhy on MAC creation failure --------- Co-authored-by: Me No Dev Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> --- libraries/Ethernet/src/ETH.cpp | 39 +++++++++++++++++++++++++--------- libraries/Ethernet/src/ETH.h | 2 ++ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/libraries/Ethernet/src/ETH.cpp b/libraries/Ethernet/src/ETH.cpp index 59dd102cced..e1223ea446f 100644 --- a/libraries/Ethernet/src/ETH.cpp +++ b/libraries/Ethernet/src/ETH.cpp @@ -305,6 +305,7 @@ bool ETHClass::begin(eth_phy_type_t type, int32_t phy_addr, int mdc, int mdio, i } if (_phy == NULL) { log_e("esp_eth_phy_new failed"); + _delMacAndPhy(); return false; } @@ -738,15 +739,29 @@ bool ETHClass::beginSPI( return false; } + if (_mac == NULL) { + log_e("esp_eth_mac_new failed"); + _delMacAndPhy(); + return false; + } + + if (_phy == NULL) { + log_e("esp_eth_phy_new failed"); + _delMacAndPhy(); + return false; + } + // Init Ethernet driver to default and install it esp_eth_config_t eth_config = ETH_DEFAULT_CONFIG(_mac, _phy); ret = esp_eth_driver_install(ð_config, &_eth_handle); if (ret != ESP_OK) { log_e("SPI Ethernet driver install failed: %d", ret); + _delMacAndPhy(); return false; } if (_eth_handle == NULL) { log_e("esp_eth_driver_install failed! eth_handle is NULL"); + _delMacAndPhy(); return false; } @@ -923,6 +938,18 @@ static bool empty_ethDetachBus(void *bus_pointer) { return true; } +void ETHClass::_delMacAndPhy() { + if (_mac != NULL) { + _mac->del(_mac); + _mac = NULL; + } + + if (_phy != NULL) { + _phy->del(_phy); + _phy = NULL; + } +} + void ETHClass::end(void) { Network.removeEvent(_eth_connected_event_handle); @@ -954,18 +981,10 @@ void ETHClass::end(void) { return; } _eth_handle = NULL; - //delete mac - if (_mac != NULL) { - _mac->del(_mac); - _mac = NULL; - } - //delete phy - if (_phy != NULL) { - _phy->del(_phy); - _phy = NULL; - } } + _delMacAndPhy(); + if (_eth_ev_instance != NULL) { bool do_not_unreg_ev_handler = false; for (int i = 0; i < NUM_SUPPORTED_ETH_PORTS; ++i) { diff --git a/libraries/Ethernet/src/ETH.h b/libraries/Ethernet/src/ETH.h index f609c651102..ceeaf789848 100644 --- a/libraries/Ethernet/src/ETH.h +++ b/libraries/Ethernet/src/ETH.h @@ -271,6 +271,8 @@ class ETHClass : public NetworkInterface { bool _setLinkSpeed(uint16_t speed); bool _setAutoNegotiation(bool on); + void _delMacAndPhy(); + friend class EthernetClass; // to access beginSPI }; From 21ddb0944df2775b48ebe72aa4701dc1587cc33e Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Wed, 5 Nov 2025 09:37:59 -0300 Subject: [PATCH 28/31] feat(matter): examples documentation (#11983) * feat(matter): Adds README.md file for each example * fix(matter): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(matter): missing information Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat(matter): adds ESP32-C5 to supported list and fixes typos * feat(matter): fixes MatterSmartButton.ino name * fix(matter): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(matter): typo * fix(matter): removes bad example * ci(pre-commit): Apply automatic fixes * fix(pre-commit): Fix spelling --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> --- .../examples/MatterColorLight/README.md | 164 +++++++++++ .../MatterCommissionTest.ino | 2 +- .../examples/MatterCommissionTest/README.md | 151 ++++++++++ .../examples/MatterComposedLights/README.md | 175 ++++++++++++ .../examples/MatterContactSensor/README.md | 172 +++++++++++ .../examples/MatterDimmableLight/README.md | 170 +++++++++++ .../MatterEnhancedColorLight/README.md | 177 ++++++++++++ .../Matter/examples/MatterEvents/README.md | 181 ++++++++++++ libraries/Matter/examples/MatterFan/README.md | 194 +++++++++++++ .../examples/MatterHumiditySensor/README.md | 191 +++++++++++++ .../README.md | 205 ++++++++++++++ .../Matter/examples/MatterMinimum/README.md | 171 +++++++++++ .../examples/MatterOccupancySensor/README.md | 267 ++++++++++++++++++ .../examples/MatterOnIdentify/README.md | 213 ++++++++++++++ .../examples/MatterOnOffLight/README.md | 181 ++++++++++++ .../examples/MatterOnOffPlugin/README.md | 198 +++++++++++++ .../examples/MatterPressureSensor/README.md | 191 +++++++++++++ .../MatterSmartButton.ino} | 0 .../examples/MatterSmartButton/README.md | 175 ++++++++++++ .../ci.yml | 0 .../examples/MatterTemperatureLight/README.md | 207 ++++++++++++++ .../MatterTemperatureSensor/README.md | 206 ++++++++++++++ .../examples/MatterThermostat/README.md | 230 +++++++++++++++ .../examples/MatterThreadLight/README.md | 242 ++++++++++++++++ 24 files changed, 4062 insertions(+), 1 deletion(-) create mode 100644 libraries/Matter/examples/MatterColorLight/README.md create mode 100644 libraries/Matter/examples/MatterCommissionTest/README.md create mode 100644 libraries/Matter/examples/MatterComposedLights/README.md create mode 100644 libraries/Matter/examples/MatterContactSensor/README.md create mode 100644 libraries/Matter/examples/MatterDimmableLight/README.md create mode 100644 libraries/Matter/examples/MatterEnhancedColorLight/README.md create mode 100644 libraries/Matter/examples/MatterEvents/README.md create mode 100644 libraries/Matter/examples/MatterFan/README.md create mode 100644 libraries/Matter/examples/MatterHumiditySensor/README.md create mode 100644 libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/README.md create mode 100644 libraries/Matter/examples/MatterMinimum/README.md create mode 100644 libraries/Matter/examples/MatterOccupancySensor/README.md create mode 100644 libraries/Matter/examples/MatterOnIdentify/README.md create mode 100644 libraries/Matter/examples/MatterOnOffLight/README.md create mode 100644 libraries/Matter/examples/MatterOnOffPlugin/README.md create mode 100644 libraries/Matter/examples/MatterPressureSensor/README.md rename libraries/Matter/examples/{MatterSmartButon/MatterSmartButon.ino => MatterSmartButton/MatterSmartButton.ino} (100%) create mode 100644 libraries/Matter/examples/MatterSmartButton/README.md rename libraries/Matter/examples/{MatterSmartButon => MatterSmartButton}/ci.yml (100%) create mode 100644 libraries/Matter/examples/MatterTemperatureLight/README.md create mode 100644 libraries/Matter/examples/MatterTemperatureSensor/README.md create mode 100644 libraries/Matter/examples/MatterThermostat/README.md create mode 100644 libraries/Matter/examples/MatterThreadLight/README.md diff --git a/libraries/Matter/examples/MatterColorLight/README.md b/libraries/Matter/examples/MatterColorLight/README.md new file mode 100644 index 00000000000..03a5928cd27 --- /dev/null +++ b/libraries/Matter/examples/MatterColorLight/README.md @@ -0,0 +1,164 @@ +# Matter Color Light Example + +This example demonstrates how to create a Matter-compatible color light device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, and manual control using a physical button. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | RGB LED | Status | +| --- | ---- | ------ | ----------------- | ------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a color light device +- Support for both Wi-Fi and Thread(*) connectivity +- RGB color control with HSV color model +- State persistence using `Preferences` library +- Button control for toggling light and factory reset +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- RGB LED connected to GPIO pins (or using built-in RGB LED) +- User button for manual control (uses BOOT button by default) + +## Pin Configuration + +- **RGB LED**: Uses `RGB_BUILTIN` if defined, otherwise pin 2 +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Preferences` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **LED pin configuration** (if not using built-in RGB LED): + ``` cpp + const uint8_t ledPin = 2; // Set your RGB LED pin here + ``` +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for the Light On/Off manual control. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = 0; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterColorLight.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Initial state: ON | RGB Color: (0,0,255) +Matter Node is commissioned and connected to the network. Ready for use. +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides manual control: + +- **Short press of the button**: Toggle light on/off +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a color light in your Home app + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The light will appear in your Alexa app + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup + +## Code Structure + +The MatterColorLight example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, LED), configures Wi-Fi (if needed), sets up the Matter endpoint, restores the last known state from `Preferences`, and registers callbacks for state changes. +2. **`loop()`**: Checks the Matter commissioning state, handles button input for toggling the light and factory reset, and allows the Matter stack to process events. +3. **Callbacks**: + - `setLightState()`: Controls the physical RGB LED. + - `onChangeOnOff()`: Handles on/off state changes. + - `onChangeColorHSV()`: Handles color changes. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **RGB LED not responding**: Verify pin configurations and connections +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterCommissionTest/MatterCommissionTest.ino b/libraries/Matter/examples/MatterCommissionTest/MatterCommissionTest.ino index aa593758548..81e7e6d45f8 100644 --- a/libraries/Matter/examples/MatterCommissionTest/MatterCommissionTest.ino +++ b/libraries/Matter/examples/MatterCommissionTest/MatterCommissionTest.ino @@ -77,5 +77,5 @@ void loop() { Serial.println("====> Decommissioning in 30 seconds. <===="); delay(30000); Matter.decommission(); - Serial.println("Matter Node is decommissioned. Commsssioning widget shall start over."); + Serial.println("Matter Node is decommissioned. Commissioning widget shall start over."); } diff --git a/libraries/Matter/examples/MatterCommissionTest/README.md b/libraries/Matter/examples/MatterCommissionTest/README.md new file mode 100644 index 00000000000..52b2b1eb8e6 --- /dev/null +++ b/libraries/Matter/examples/MatterCommissionTest/README.md @@ -0,0 +1,151 @@ +# Matter Commission Test Example + +This example demonstrates how to test Matter commissioning functionality using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device connection to smart home ecosystems, and automatic decommissioning after a 30-second delay for continuous testing cycles. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for an on/off light device +- Support for both Wi-Fi and Thread(*) connectivity +- Matter commissioning via QR code or manual pairing code +- Automatic decommissioning after 30 seconds for continuous testing +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +- Simple test tool for validating Matter commissioning workflows +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +## Building and Flashing + +1. Open the `MatterCommissionTest.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Fabric not commissioned yet. Waiting for commissioning. +Matter Fabric not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. +====> Decommissioning in 30 seconds. <==== +Matter Node is decommissioned. Commissioning widget shall start over. + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +... +``` + +## Using the Device + +### Test Cycle + +The device operates in a continuous test cycle: + +1. **Commissioning Phase**: The device waits for Matter commissioning. It displays the manual pairing code and QR code URL in the Serial Monitor. +2. **Commissioned Phase**: Once commissioned, the device is connected to the Matter network and ready for use. +3. **Automatic Decommissioning**: After 30 seconds, the device automatically decommissions itself. +4. **Repeat**: The cycle repeats, allowing you to test the commissioning process multiple times. + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device during each test cycle. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as an on/off light in your Home app +7. After 30 seconds, the device will automatically decommission and the cycle will repeat + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The light will appear in your Alexa app +6. After 30 seconds, the device will automatically decommission and the cycle will repeat + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. After 30 seconds, the device will automatically decommission and the cycle will repeat + +## Code Structure + +The MatterCommissionTest example consists of the following main components: + +1. **`setup()`**: Configures Wi-Fi (if needed), initializes the Matter On/Off Light endpoint, and starts the Matter stack. +2. **`loop()`**: Checks the Matter commissioning state, displays pairing information when not commissioned, waits for commissioning, and then automatically decommissions after 30 seconds to repeat the cycle. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Failed to commission**: Try waiting for the next cycle after decommissioning. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection +- **Device keeps decommissioning**: This is expected behavior - the device automatically decommissions after 30 seconds to allow continuous testing + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterComposedLights/README.md b/libraries/Matter/examples/MatterComposedLights/README.md new file mode 100644 index 00000000000..cea56d0151a --- /dev/null +++ b/libraries/Matter/examples/MatterComposedLights/README.md @@ -0,0 +1,175 @@ +# Matter Composed Lights Example + +This example demonstrates how to create a Matter node with multiple light endpoints using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, a single Matter node containing three different light types (On/Off Light, Dimmable Light, and Color Light), and factory reset using a physical button. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a composed device with multiple light endpoints +- Three light endpoints in a single Matter node: + - Light #1: Simple On/Off Light + - Light #2: Dimmable Light (on/off with brightness control) + - Light #3: Color Light (RGB color control) +- Support for both Wi-Fi and Thread(*) connectivity +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +- Periodic state display of all three lights +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- User button for factory reset (uses BOOT button by default) + +## Pin Configuration + +- **Button**: Uses `BOOT_PIN` by default for factory reset (long press >5 seconds) + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterComposedLights.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +====================== +Matter Light #1 is OFF +Matter Light #2 is OFF +Matter Light #3 is OFF +====================== +Light1 changed state to: ON +Light2 changed state to: ON +Light3 changed state to: ON +====================== +Matter Light #1 is ON +Matter Light #2 is ON +Matter Light #3 is ON +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. After commissioning, you will see three separate light devices in your smart home app: + +- **Light #1**: Simple on/off light +- **Light #2**: Dimmable light with brightness control +- **Light #3**: Color light with RGB color control + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as three separate lights in your Home app + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The three lights will appear in your Alexa app + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. The three lights will appear in your Google Home app + +## Code Structure + +The MatterComposedLights example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button), configures Wi-Fi (if needed), sets up three Matter endpoints (OnOffLight, DimmableLight, ColorLight), and registers callbacks for state changes. +2. **`loop()`**: Checks the Matter commissioning state, displays the state of all three lights every 5 seconds, handles button input for factory reset, and allows the Matter stack to process events. +3. **Callbacks**: + - `setLightOnOff1()`: Handles on/off state changes for Light #1. + - `setLightOnOff2()`: Handles on/off state changes for Light #2. + - `setLightOnOff3()`: Handles on/off state changes for Light #3. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Only one or two lights appear**: Some smart home platforms may group or display lights differently. Check your app's device list +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterContactSensor/README.md b/libraries/Matter/examples/MatterContactSensor/README.md new file mode 100644 index 00000000000..3f7e73b4788 --- /dev/null +++ b/libraries/Matter/examples/MatterContactSensor/README.md @@ -0,0 +1,172 @@ +# Matter Contact Sensor Example + +This example demonstrates how to create a Matter-compatible contact sensor device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, manual control using a physical button, and automatic simulation of contact state changes. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | LED | Status | +| --- | ---- | ------ | ----------------- | --- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a contact sensor device +- Support for both Wi-Fi and Thread(*) connectivity +- Contact state indication using LED (ON = Closed, OFF = Open) +- Automatic simulation of contact state changes every 20 seconds +- Button control for toggling contact state and factory reset +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- LED connected to GPIO pins (or using built-in LED) to indicate contact state +- User button for manual control (uses BOOT button by default) + +## Pin Configuration + +- **LED**: Uses `RGB_BUILTIN` if defined, otherwise pin 2 +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **LED pin configuration** (if not using built-in LED): + ```cpp + const uint8_t ledPin = 2; // Set your LED pin here + ``` + +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for the Contact Sensor state toggle and factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterContactSensor.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +User button released. Setting the Contact Sensor to Closed. +User button released. Setting the Contact Sensor to Open. +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides manual control: + +- **Short press of the button**: Toggle contact sensor state (Open/Closed) +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Automatic Simulation + +The contact sensor state automatically toggles every 20 seconds to simulate a real contact sensor (such as a door or window sensor). The LED will reflect the current state: +- **LED ON**: Contact sensor is Closed +- **LED OFF**: Contact sensor is Open + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a contact sensor in your Home app +7. You can monitor the contact state (Open/Closed) and receive notifications when the state changes + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The contact sensor will appear in your Alexa app +6. You can monitor the contact state and set up routines based on state changes + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. The contact sensor will appear in your Google Home app + +## Code Structure + +The MatterContactSensor example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, LED), configures Wi-Fi (if needed), sets up the Matter Contact Sensor endpoint with initial state (Open), and waits for Matter commissioning. +2. **`loop()`**: Handles button input for toggling contact state and factory reset, and automatically simulates contact state changes every 20 seconds. +3. **`simulatedHWContactSensor()`**: Simulates a hardware contact sensor by toggling the contact state every 20 seconds. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **LED not responding**: Verify pin configurations and connections +- **Contact sensor state not updating**: Check Serial Monitor output to verify state changes are being processed +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterDimmableLight/README.md b/libraries/Matter/examples/MatterDimmableLight/README.md new file mode 100644 index 00000000000..0879ae2171d --- /dev/null +++ b/libraries/Matter/examples/MatterDimmableLight/README.md @@ -0,0 +1,170 @@ +# Matter Dimmable Light Example + +This example demonstrates how to create a Matter-compatible dimmable light device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, and manual control using a physical button. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | LED | Status | +| --- | ---- | ------ | ----------------- | --- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a dimmable light device +- Support for both Wi-Fi and Thread(*) connectivity +- Brightness control (0-255 levels) +- State persistence using `Preferences` library +- Button control for toggling light and factory reset +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- LED connected to GPIO pins (or using built-in LED/RGB LED) +- User button for manual control (uses BOOT button by default) + +## Pin Configuration + +- **LED**: Uses `RGB_BUILTIN` if defined, otherwise pin 2 (supports both RGB LED and regular LED with PWM brightness control) +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Preferences` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **LED pin configuration** (if not using built-in LED): + ```cpp + const uint8_t ledPin = 2; // Set your LED pin here + ``` + +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for the Light On/Off manual control. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterDimmableLight.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Initial state: ON | brightness: 15 +Matter Node is commissioned and connected to the network. Ready for use. +Light OnOff changed to ON +Light Brightness changed to 128 +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides manual control: + +- **Short press of the button**: Toggle light on/off +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a dimmable light in your Home app +7. You can control both the on/off state and brightness level (0-100%) + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The dimmable light will appear in your Alexa app +6. You can control brightness using voice commands like "Alexa, set light to 50 percent" + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can control brightness using voice commands or the slider in the app + +## Code Structure + +The MatterDimmableLight example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, LED), configures Wi-Fi (if needed), sets up the Matter endpoint, restores the last known state (on/off and brightness) from `Preferences`, and registers callbacks for state changes. +2. **`loop()`**: Checks the Matter commissioning state, handles button input for toggling the light and factory reset, and allows the Matter stack to process events. +3. **Callbacks**: + - `setLightState()`: Controls the physical LED with brightness level (supports both RGB LED and regular LED with PWM). + - `onChangeOnOff()`: Handles on/off state changes. + - `onChangeBrightness()`: Handles brightness level changes (0-255). + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **LED not responding or brightness not working**: Verify pin configurations and connections. For non-RGB LEDs, ensure the pin supports PWM (analogWrite) +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterEnhancedColorLight/README.md b/libraries/Matter/examples/MatterEnhancedColorLight/README.md new file mode 100644 index 00000000000..59ddc3a2166 --- /dev/null +++ b/libraries/Matter/examples/MatterEnhancedColorLight/README.md @@ -0,0 +1,177 @@ +# Matter Enhanced Color Light Example + +This example demonstrates how to create a Matter-compatible enhanced color light device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, and manual control using a physical button. The enhanced color light provides additional features including color temperature control and brightness adjustment. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | RGB LED | Status | +| --- | ---- | ------ | ----------------- | ------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for an enhanced color light device +- Support for both Wi-Fi and Thread(*) connectivity +- RGB color control with HSV color model +- Color temperature control (warm to cool white) +- Brightness control (0-255 levels) +- State persistence using `Preferences` library +- Button control for toggling light and factory reset +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- RGB LED connected to GPIO pins (or using built-in RGB LED) +- User button for manual control (uses BOOT button by default) + +## Pin Configuration + +- **RGB LED**: Uses `RGB_BUILTIN` if defined, otherwise pin 2 +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Preferences` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **LED pin configuration** (if not using built-in RGB LED): + ```cpp + const uint8_t ledPin = 2; // Set your RGB LED pin here + ``` + +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for the Light On/Off manual control. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterEnhancedColorLight.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Initial state: ON | RGB Color: (255,255,255) +Matter Node is commissioned and connected to the network. Ready for use. +Light OnOff changed to ON +Light Color Temperature changed to 370 +Light brightness changed to 128 +Light HSV Color changed to (120,255,255) +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides manual control: + +- **Short press of the button**: Toggle light on/off +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as an enhanced color light in your Home app +7. You can control RGB color, color temperature (warm/cool white), and brightness + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The enhanced color light will appear in your Alexa app +6. You can control color, color temperature, and brightness using voice commands or the app + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can control color, color temperature, and brightness using voice commands or the app controls + +## Code Structure + +The MatterEnhancedColorLight example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, LED), configures Wi-Fi (if needed), sets up the Matter endpoint, restores the last known state (on/off and HSV color) from `Preferences`, and registers callbacks for state changes. +2. **`loop()`**: Checks the Matter commissioning state, handles button input for toggling the light and factory reset, and allows the Matter stack to process events. +3. **Callbacks**: + - `setLightState()`: Controls the physical RGB LED with state, HSV color, brightness, and color temperature parameters. + - `onChangeOnOff()`: Handles on/off state changes. + - `onChangeColorHSV()`: Handles HSV color changes (Hue and Saturation). + - `onChangeBrightness()`: Handles brightness level changes (0-255, maps to HSV Value). + - `onChangeColorTemperature()`: Handles color temperature changes (warm to cool white). + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **RGB LED not responding**: Verify pin configurations and connections +- **Color temperature not working**: Verify that the color temperature callback is properly handling HSV conversion +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterEvents/README.md b/libraries/Matter/examples/MatterEvents/README.md new file mode 100644 index 00000000000..724e3e73cdb --- /dev/null +++ b/libraries/Matter/examples/MatterEvents/README.md @@ -0,0 +1,181 @@ +# Matter Events Example + +This example demonstrates how to monitor and handle Matter events using an ESP32 SoC microcontroller.\ +The application showcases Matter event handling, commissioning, and automatic decommissioning. It provides a comprehensive view of all Matter events that occur during device operation, making it useful for debugging and understanding the Matter protocol behavior. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation with comprehensive event monitoring +- Support for both Wi-Fi and Thread(*) connectivity +- Event callback handler that displays all Matter events to Serial Monitor +- Monitors connectivity changes (Wi-Fi, Thread, Internet, IPv4/IPv6) +- Tracks commissioning lifecycle events +- Monitors fabric management events +- Tracks BLE/CHIPoBLE events +- Automatic decommissioning after 60 seconds for continuous testing +- Matter commissioning via QR code or manual pairing code +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +## Building and Flashing + +1. Open the `MatterEvents.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning and displays Matter events: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Starting Matter Commission Test... + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +===> Got a Matter Event: CHIPoBLE Advertising Change +===> Got a Matter Event: Commissioning Window Opened +===> Got a Matter Event: Commissioning Session Started +===> Got a Matter Event: Commissioning Complete +===> Got a Matter Event: Operational Network Started +===> Got a Matter Event: Operational Network Enabled +===> Got a Matter Event: Internet Connectivity Change :: IPv4 Connectivity: Established - IP Address: 192.168.1.100 +===> Got a Matter Event: IPv4 Address Assigned +===> Got a Matter Event: Server Ready +===> Got a Matter Event: DNS-SD Initialized +Matter Fabric not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to Wi-Fi. +====> Decommissioning in 60 seconds. <==== +===> Got a Matter Event: Fabric Will Be Removed +===> Got a Matter Event: Fabric Removed +===> Got a Matter Event: Commissioning Window Opened +Matter Node is decommissioned. Commissioning widget shall start over. +``` + +## Using the Device + +### Event Monitoring + +The example continuously monitors and displays Matter events to the Serial Monitor. This includes: + +- **Connectivity Events**: Wi-Fi, Thread, Internet connectivity changes, IP address assignments +- **Commissioning Events**: Commissioning session start/stop, commissioning window open/close, commissioning complete +- **Fabric Events**: Fabric committed, updated, removed +- **BLE Events**: CHIPoBLE connection established/closed, advertising changes +- **Network Events**: Operational network started/enabled, interface IP address changes +- **Service Events**: Service connectivity changes, provisioning changes, DNS-SD events +- **System Events**: Server ready, OTA state changes, time sync changes, fail-safe timer expiration + +### Test Cycle + +The device operates in a continuous test cycle: + +1. **Commissioning Phase**: The device waits for Matter commissioning and displays all related events. +2. **Commissioned Phase**: Once commissioned, the device is connected to the Matter network and ready for use. All network and service events are displayed. +3. **Automatic Decommissioning**: After 60 seconds, the device automatically decommissions itself. +4. **Repeat**: The cycle repeats, allowing you to test the commissioning process multiple times and observe all events. + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device during each test cycle. Monitor the Serial Monitor to see all events that occur during the commissioning process. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. Monitor the Serial Monitor to see all Matter events during commissioning +7. The device will appear as an on/off light in your Home app +8. After 60 seconds, the device will automatically decommission and the cycle will repeat + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. Monitor the Serial Monitor to see all Matter events during commissioning +6. The light will appear in your Alexa app +7. After 60 seconds, the device will automatically decommission and the cycle will repeat + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. Monitor the Serial Monitor to see all Matter events during commissioning +7. After 60 seconds, the device will automatically decommission and the cycle will repeat + +## Code Structure + +The MatterEvents example consists of the following main components: + +1. **`setup()`**: Initializes Serial communication, configures Wi-Fi (if needed), sets up the Matter On/Off Light endpoint, registers the Matter event callback handler, and starts the Matter stack. +2. **`loop()`**: Checks the Matter commissioning state, displays pairing information when not commissioned, waits for commissioning, and then automatically decommissions after 60 seconds to repeat the cycle. +3. **`onMatterEvent()`**: Comprehensive event callback handler that processes and displays all Matter events, including connectivity changes, commissioning events, fabric management, BLE events, and system events. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **No events displayed**: Verify that the event callback is properly registered using `Matter.onEvent()` +- **Failed to commission**: Try waiting for the next cycle after decommissioning. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection +- **Device keeps decommissioning**: This is expected behavior - the device automatically decommissions after 60 seconds to allow continuous testing and event monitoring + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterFan/README.md b/libraries/Matter/examples/MatterFan/README.md new file mode 100644 index 00000000000..89889ace3d6 --- /dev/null +++ b/libraries/Matter/examples/MatterFan/README.md @@ -0,0 +1,194 @@ +# Matter Fan Example + +This example demonstrates how to create a Matter-compatible fan device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, manual control using a physical button, and analog input for speed control. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | PWM Pin | Status | +| --- | ---- | ------ | ----------------- | ------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a fan device +- Support for both Wi-Fi and Thread(*) connectivity +- On/Off control +- Speed control (0-100% in steps of 10%) +- Fan modes (OFF, ON, SMART, HIGH) +- Analog input for manual speed adjustment +- PWM output for DC motor control (simulated with RGB LED brightness) +- Button control for toggling fan and factory reset +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- PWM-capable pin for DC motor control (uses RGB_BUILTIN or pin 2 by default) +- Analog input pin (A0) for speed control via potentiometer or similar +- User button for manual control (uses BOOT button by default) + +## Pin Configuration + +- **DC Motor PWM Pin**: Uses `RGB_BUILTIN` if defined, otherwise pin 2 (for controlling fan speed) +- **Analog Input Pin**: A0 (for reading speed control input, 0-1023 mapped to 10-100% speed) +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **DC Motor PWM pin configuration** (if not using built-in RGB LED): + ```cpp + const uint8_t dcMotorPin = 2; // Set your PWM pin here + ``` + +3. **Analog input pin configuration** (optional): + By default, analog pin A0 is used for speed control. You can change this if needed. + ```cpp + const uint8_t analogPin = A0; // Set your analog pin here + ``` + +4. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for the Fan On/Off manual control and factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterFan.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +Fan State: Mode OFF | 0% speed. +User button released. Setting the Fan ON. +Fan State: Mode ON | 50% speed. +Fan set to SMART mode -- speed percentage will go to 50% +Fan State: Mode SMART | 50% speed. +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides manual control: + +- **Short press of the button**: Toggle fan on/off +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Analog Speed Control + +The analog input pin (A0) allows manual speed adjustment: + +- Connect a potentiometer or similar analog input to pin A0 +- Analog values (0-1023) are mapped to speed percentages (10-100%) in steps of 10% +- The speed automatically updates when the analog input changes +- Speed changes are synchronized with the Matter controller + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a fan in your Home app +7. You can control on/off, speed (0-100%), and fan modes (OFF, ON, SMART, HIGH) + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The fan will appear in your Alexa app +6. You can control speed and modes using voice commands like "Alexa, set fan to 50 percent" or "Alexa, set fan to high" + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can control speed and modes using voice commands or the app controls + +## Code Structure + +The MatterFan example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, analog input, PWM output), configures Wi-Fi (if needed), sets up the Matter Fan endpoint with initial state (OFF, 0% speed), and registers callbacks for state changes. +2. **`loop()`**: Checks the Matter commissioning state, handles button input for toggling the fan and factory reset, reads analog input to adjust fan speed, and allows the Matter stack to process events. +3. **Callbacks**: + - `onChangeSpeedPercent()`: Handles speed percentage changes (0% to 100%). Automatically turns fan on/off based on speed. + - `onChangeMode()`: Handles fan mode changes (OFF, ON, SMART, HIGH). Automatically sets speed to 50% when switching from OFF to another mode. + - `onChange()`: Generic callback that controls the DC motor via PWM and reports the current state. + - `fanDCMotorDrive()`: Drives the DC motor (or simulates it with RGB LED brightness) based on fan state and speed. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Fan speed not responding**: Verify PWM pin configuration and connections. For DC motor control, ensure the pin supports PWM output +- **Analog input not working**: Verify analog pin configuration and that the input voltage is within the ESP32's ADC range (0-3.3V typically) +- **Speed changes not synchronized**: The analog input is read continuously, and speed updates only when the value changes by a step (0-9 steps mapped to 10-100%) +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterHumiditySensor/README.md b/libraries/Matter/examples/MatterHumiditySensor/README.md new file mode 100644 index 00000000000..940516a2194 --- /dev/null +++ b/libraries/Matter/examples/MatterHumiditySensor/README.md @@ -0,0 +1,191 @@ +# Matter Humidity Sensor Example + +This example demonstrates how to create a Matter-compatible humidity sensor device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, sensor data reporting to smart home ecosystems, and automatic simulation of humidity readings. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a humidity sensor device +- Support for both Wi-Fi and Thread(*) connectivity +- Humidity measurement reporting (0-100%) +- Automatic simulation of humidity readings (10% to 30% range) +- Periodic sensor updates every 5 seconds +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- User button for factory reset (uses BOOT button by default) +- Optional: Connect a real humidity sensor (DHT11, DHT22, SHT31, etc.) and replace the simulation function + +## Pin Configuration + +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +3. **Real sensor integration** (optional): + To use a real humidity sensor, replace the `getSimulatedHumidity()` function with your sensor reading code. The function should return a float value representing humidity percentage (0-100%). + +## Building and Flashing + +1. Open the `MatterHumiditySensor.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +Current Humidity is 95.00% +Current Humidity is 10.50% +Current Humidity is 11.00% +Current Humidity is 11.50% +... +Current Humidity is 30.00% +Current Humidity is 10.00% +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Sensor Simulation + +The example includes a simulated humidity sensor that: + +- Starts at 95% humidity (initial value) +- Cycles through 10% to 30% humidity range +- Increases in 0.5% steps +- Updates every 5 seconds +- Resets to 10% when reaching 30% + +To use a real humidity sensor, replace the `getSimulatedHumidity()` function with your sensor library code. For example, with a DHT22: + +```cpp +#include +DHT dht(DHT_PIN, DHT22); + +float getSimulatedHumidity() { + return dht.readHumidity(); +} +``` + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a humidity sensor in your Home app +7. You can monitor the humidity readings and set up automations based on humidity levels + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The humidity sensor will appear in your Alexa app +6. You can monitor humidity readings and create routines based on humidity levels + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can monitor humidity readings and create automations based on humidity levels + +## Code Structure + +The MatterHumiditySensor example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button), configures Wi-Fi (if needed), sets up the Matter Humidity Sensor endpoint with initial value (95%), and waits for Matter commissioning. +2. **`loop()`**: Displays the current humidity value every 5 seconds, updates the sensor reading from the simulated hardware sensor, handles button input for factory reset, and allows the Matter stack to process events. +3. **`getSimulatedHumidity()`**: Simulates a hardware humidity sensor by cycling through values from 10% to 30% in 0.5% steps. Replace this function with your actual sensor reading code. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Humidity readings not updating**: Check that the sensor simulation function is being called correctly. For real sensors, verify sensor wiring and library initialization + +- **Humidity values out of range**: Ensure humidity values are between 0-100%. The Matter protocol stores values as 1/100th of a percent internally + +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/README.md b/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/README.md new file mode 100644 index 00000000000..f31732d66d6 --- /dev/null +++ b/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/README.md @@ -0,0 +1,205 @@ +# Matter Lambda Single Callback Many Endpoints Example + +This example demonstrates how to create multiple Matter endpoints in a single node using a shared lambda function callback with capture in an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, multiple endpoint management, and efficient callback handling using C++ lambda functions with capture variables. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | GPIO Pins | Status | +| --- | ---- | ------ | ----------------- | --------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation with multiple endpoints in a single node +- Six on/off light endpoints sharing a single callback function +- Lambda function with capture variable for efficient endpoint identification +- Support for both Wi-Fi and Thread(*) connectivity +- Each endpoint has a unique GPIO pin and friendly name +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- Optional: Six LEDs connected to GPIO pins (2, 4, 6, 8, 10, 12) for visual feedback + +## Pin Configuration + +By default, the example uses six GPIO pins for the on/off lights: +- **Light 1 (Room 1)**: GPIO 2 +- **Light 2 (Room 2)**: GPIO 4 +- **Light 3 (Room 3)**: GPIO 6 +- **Light 4 (Room 4)**: GPIO 8 +- **Light 5 (Room 5)**: GPIO 10 +- **Light 6 (Room 6)**: GPIO 12 + +You can modify the `lightPins` array to match your hardware configuration: + +```cpp +uint8_t lightPins[MAX_LIGHT_NUMBER] = {2, 4, 6, 8, 10, 12}; +``` + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Preferences` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **GPIO pin configuration** (optional): + Modify the `lightPins` array to match your hardware: + ```cpp + uint8_t lightPins[MAX_LIGHT_NUMBER] = {2, 4, 6, 8, 10, 12}; + ``` + +3. **Light names** (optional): + Modify the `lightName` array to customize the friendly names: + ```cpp + const char *lightName[MAX_LIGHT_NUMBER] = { + "Room 1", "Room 2", "Room 3", "Room 4", "Room 5", "Room 6", + }; + ``` + +4. **Number of endpoints** (optional): + Change `MAX_LIGHT_NUMBER` to create more or fewer endpoints: + ```cpp + const uint8_t MAX_LIGHT_NUMBER = 6; + ``` + +## Building and Flashing + +1. Open the `MatterLambdaSingleCallbackManyEPs.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +Matter App Control: 'Room 1' (OnOffLight[0], Endpoint 1, GPIO 2) changed to: OFF +Matter App Control: 'Room 1' (OnOffLight[0], Endpoint 1, GPIO 2) changed to: ON +Matter App Control: 'Room 5' (OnOffLight[4], Endpoint 5, GPIO 10) changed to: ON +Matter App Control: 'Room 2' (OnOffLight[1], Endpoint 2, GPIO 4) changed to: ON +``` + +## Using the Device + +### Lambda Function with Capture + +This example demonstrates how to use C++ lambda functions with capture variables to efficiently handle multiple endpoints with a single callback function. The lambda capture `[i]` allows the callback to identify which endpoint triggered the event: + +```cpp +OnOffLight[i].onChangeOnOff([i](bool state) -> bool { + Serial.printf( + "Matter App Control: '%s' (OnOffLight[%d], Endpoint %d, GPIO %d) changed to: %s\r\n", + lightName[i], i, OnOffLight[i].getEndPointId(), lightPins[i], state ? "ON" : "OFF" + ); + return true; +}); +``` + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. After commissioning, you will see six separate on/off light devices in your smart home app, each representing a different room. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as six separate on/off lights in your Home app (Room 1 through Room 6) + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The six lights will appear in your Alexa app +6. You can control each room independently + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. The six lights will appear in your Google Home app + +## Code Structure + +The MatterLambdaSingleCallbackManyEPs example consists of the following main components: + +1. **Arrays and Configuration**: + - `OnOffLight[MAX_LIGHT_NUMBER]`: Array of Matter on/off light endpoints + - `lightPins[]`: Array of GPIO pins for each light + - `lightName[]`: Array of friendly names for each light + +2. **`setup()`**: Configures Wi-Fi (if needed), initializes all GPIO pins, initializes all Matter endpoints, registers lambda callbacks with capture variables for each endpoint, and starts the Matter stack. + +3. **`loop()`**: Checks the Matter commissioning state and connection status, displays appropriate messages, and allows the Matter stack to process events. + +4. **Lambda Callback**: + - Uses capture variable `[i]` to identify which endpoint triggered the callback + - Displays detailed information including friendly name, array index, endpoint ID, GPIO pin, and state + - Demonstrates efficient callback handling for multiple endpoints + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Only some endpoints appear**: Some smart home platforms may group or display endpoints differently. Check your app's device list +- **GPIO pins not responding**: Verify pin configurations match your hardware. Ensure pins are not used by other peripherals +- **Failed to commission**: Try erasing the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection +- **Compilation errors with lambda functions**: Ensure you're using a C++11 compatible compiler (ESP32 Arduino Core 2.0+ supports this) + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterMinimum/README.md b/libraries/Matter/examples/MatterMinimum/README.md new file mode 100644 index 00000000000..a91fa651954 --- /dev/null +++ b/libraries/Matter/examples/MatterMinimum/README.md @@ -0,0 +1,171 @@ +# Matter Minimum Example + +This example demonstrates the smallest code required to create a Matter-compatible device using an ESP32 SoC microcontroller.\ +The application showcases the minimal implementation for Matter commissioning and device control via smart home ecosystems. This is an ideal starting point for understanding Matter basics and building more complex devices. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | LED | Status | +| --- | ---- | ------ | ----------------- | --- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Optional | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Optional | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Optional | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Optional | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Optional | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Optional | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Optional | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Minimal Matter protocol implementation for an on/off light device +- Support for both Wi-Fi and Thread(*) connectivity +- Simple on/off control via Matter app +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +- Minimal code footprint - ideal for learning Matter basics +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- Optional: LED connected to GPIO pin (or using built-in LED) for visual feedback +- Optional: User button for factory reset (uses BOOT button by default) + +## Pin Configuration + +- **LED**: Uses `LED_BUILTIN` if defined, otherwise pin 2 +- **Button**: Uses `BOOT_PIN` by default (only for factory reset) + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **LED pin configuration** (if not using built-in LED): + ```cpp + const uint8_t ledPin = 2; // Set your LED pin here + ``` + +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterMinimum.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +``` + +After commissioning, the device will be ready for control via Matter apps. No additional status messages are printed in this minimal example. + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +Note: This minimal example does not include button toggle functionality. To add manual toggle control, you can extend the code with additional button handling logic. + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as an on/off light in your Home app + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The light will appear in your Alexa app + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup + +## Code Structure + +The MatterMinimum example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, LED), configures Wi-Fi (if needed), initializes the Matter on/off light endpoint, registers the callback function, and starts the Matter stack. Displays commissioning information if not yet commissioned. + +2. **`loop()`**: Handles button input for factory reset (long press >5 seconds) and allows the Matter stack to process events. This minimal example does not include commissioning state checking in the loop - it only checks once in setup. + +3. **`onOffLightCallback()`**: Simple callback function that controls the LED based on the on/off state received from the Matter controller. This is the minimal callback implementation. + +## Extending the Example + +This minimal example can be extended with additional features: + +- **State persistence**: Add `Preferences` library to save the last known state +- **Button toggle**: Add button press detection to toggle the light manually +- **Commissioning status check**: Add periodic checking of commissioning state in the loop +- **Multiple endpoints**: Add more Matter endpoints to the same node +- **Enhanced callbacks**: Add more detailed callback functions for better control + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **LED not responding**: Verify pin configurations and connections. The LED will only respond to Matter app commands after commissioning +- **Failed to commission**: Try erasing the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection +- **LED not turning on/off**: Ensure the device is commissioned and you're controlling it via a Matter app. The minimal example only responds to Matter controller commands, not local button presses + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterOccupancySensor/README.md b/libraries/Matter/examples/MatterOccupancySensor/README.md new file mode 100644 index 00000000000..f83dafc4c4f --- /dev/null +++ b/libraries/Matter/examples/MatterOccupancySensor/README.md @@ -0,0 +1,267 @@ +# Matter Occupancy Sensor Example + +This example demonstrates how to create a Matter-compatible occupancy sensor device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, sensor data reporting to smart home ecosystems, and automatic simulation of occupancy state changes. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for an occupancy sensor device +- Support for both Wi-Fi and Thread(*) connectivity +- Occupancy state reporting (Occupied/Unoccupied) +- Automatic simulation of occupancy state changes every 2 minutes +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- User button for factory reset (uses BOOT button by default) +- Optional: PIR (Passive Infrared) motion sensor (e.g., HC-SR501, AM312) for real occupancy detection + +## Pin Configuration + +- **Button**: Uses `BOOT_PIN` by default +- **PIR Sensor** (optional): Connect to any available GPIO pin (e.g., GPIO 4) when using a real sensor + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +3. **PIR sensor pin configuration** (optional, if using a real PIR sensor): + ```cpp + const uint8_t pirPin = 4; // Set your PIR sensor pin here + ``` + See the "PIR Sensor Integration Example" section below for complete integration instructions. + +## Building and Flashing + +1. Open the `MatterOccupancySensor.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +``` + +After commissioning, the occupancy sensor will automatically toggle between occupied and unoccupied states every 2 minutes, and the Matter controller will receive these state updates. + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Sensor Simulation + +The example includes a simulated occupancy sensor that: + +- Starts in the unoccupied state (false) +- Toggles between occupied (true) and unoccupied (false) every 2 minutes +- Updates the Matter attribute automatically + +To use a real occupancy sensor, replace the `simulatedHWOccupancySensor()` function with your sensor library code. + +### PIR Sensor Integration Example + +Here's a complete example for integrating a simple PIR (Passive Infrared) motion sensor: + +#### Hardware Connections + +Connect the PIR sensor to your ESP32: +- **PIR VCC** → ESP32 3.3 V or 5 V (check your PIR sensor specifications) +- **PIR GND** → ESP32 GND +- **PIR OUT** → ESP32 GPIO pin (e.g., GPIO 4) + +Common PIR sensors (HC-SR501, AM312, etc.) typically have three pins: VCC, GND, and OUT (digital output). + +#### Code Modifications + +1. **Add PIR pin definition** at the top of the sketch (after the button pin definition): + +```cpp +// PIR sensor pin +const uint8_t pirPin = 4; // Change this to your PIR sensor pin +``` + +2. **Initialize PIR pin in setup()** (after button initialization): + +```cpp +void setup() { + // ... existing code ... + pinMode(buttonPin, INPUT_PULLUP); + + // Initialize PIR sensor pin + pinMode(pirPin, INPUT); + + // ... rest of setup code ... +} +``` + +3. **Replace the simulated function** with the real PIR reading function: + +```cpp +bool simulatedHWOccupancySensor() { + // Read PIR sensor digital input + // HIGH = motion detected (occupied), LOW = no motion (unoccupied) + return digitalRead(pirPin) == HIGH; +} +``` + +#### Complete Modified Function Example + +Here's the complete modified function with debouncing for more reliable readings: + +```cpp +bool simulatedHWOccupancySensor() { + // Read PIR sensor with debouncing + static bool lastState = false; + static uint32_t lastChangeTime = 0; + const uint32_t debounceTime = 100; // 100ms debounce + + bool currentState = digitalRead(pirPin) == HIGH; + + // Only update if state has changed and debounce time has passed + if (currentState != lastState) { + if (millis() - lastChangeTime > debounceTime) { + lastState = currentState; + lastChangeTime = millis(); + Serial.printf("Occupancy state changed: %s\r\n", currentState ? "OCCUPIED" : "UNOCCUPIED"); + } + } + + return lastState; +} +``` + +#### Testing the PIR Sensor + +After making these changes: +1. Upload the modified sketch to your ESP32 +2. Open the Serial Monitor at 115200 baud +3. Move in front of the PIR sensor - you should see "OCCUPIED" messages +4. Stay still for a few seconds - you should see "UNOCCUPIED" messages +5. The Matter controller will automatically receive these occupancy state updates + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as an occupancy sensor in your Home app +7. You can monitor the occupancy state and set up automations based on occupancy (e.g., turn on lights when occupied) + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The occupancy sensor will appear in your Alexa app +6. You can monitor occupancy readings and create routines based on occupancy state changes + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can monitor occupancy readings and create automations based on occupancy state changes + +## Code Structure + +The MatterOccupancySensor example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button), configures Wi-Fi (if needed), sets up the Matter Occupancy Sensor endpoint with initial state (unoccupied), and waits for Matter commissioning. + +2. **`loop()`**: Handles button input for factory reset, continuously checks the simulated occupancy sensor and updates the Matter attribute, and allows the Matter stack to process events. + +3. **`simulatedHWOccupancySensor()`**: Simulates a hardware occupancy sensor by toggling the occupancy state every 2 minutes. Replace this function with your actual sensor reading code. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Occupancy readings not updating**: Check that the sensor simulation function is being called correctly. For real sensors, verify sensor wiring and library initialization +- **State not changing**: The simulated sensor toggles every 2 minutes (120000 ms). If you're using a real sensor, ensure it's properly connected and reading correctly +- **PIR sensor not detecting motion**: + - Verify PIR sensor wiring (VCC, GND, OUT connections) + - Check if PIR sensor requires 5 V or 3.3 V power (some PIR sensors need 5 V) + - Allow 30-60 seconds for PIR sensor to stabilize after power-on + - Adjust PIR sensor sensitivity and time delay potentiometers (if available on your sensor) + - Ensure the PIR sensor has a clear view of the detection area + - Test the PIR sensor directly by reading the GPIO pin value in Serial Monitor +- **PIR sensor false triggers**: Add debouncing to the sensor reading function (see the "Complete Modified Function Example" above) +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterOnIdentify/README.md b/libraries/Matter/examples/MatterOnIdentify/README.md new file mode 100644 index 00000000000..06d6732466f --- /dev/null +++ b/libraries/Matter/examples/MatterOnIdentify/README.md @@ -0,0 +1,213 @@ +# Matter On Identify Example + +This example demonstrates how to implement the Matter Identify cluster callback for an on/off light device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, and the Identify feature that makes the LED blink when the device is identified from a Matter app. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | LED | Status | +| --- | ---- | ------ | ----------------- | --- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for an on/off light device +- Support for both Wi-Fi and Thread(*) connectivity +- On Identify callback implementation - LED blinks when device is identified +- Visual identification feedback (red blinking for RGB LED, toggling for regular LED) +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- LED connected to GPIO pin (or using built-in LED) for visual feedback +- Optional: RGB LED for red blinking identification (uses RGB_BUILTIN if available) +- User button for factory reset (uses BOOT button by default) + +## Pin Configuration + +- **LED**: Uses `LED_BUILTIN` if defined, otherwise pin 2 +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **LED pin configuration** (if not using built-in LED): + ```cpp + const uint8_t ledPin = 2; // Set your LED pin here + ``` + +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterOnIdentify.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +``` + +When you trigger the Identify command from a Matter app, you should see: +``` +Identify Cluster is Active +Identify Cluster is Inactive +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Identify Feature + +The Identify feature allows you to visually identify a specific device from your Matter app. When you trigger the Identify command: + +1. **For RGB LED (RGB_BUILTIN)**: The LED will blink in red color +2. **For regular LED**: The LED will toggle on/off + +The blinking continues while the Identify cluster is active (typically 3-15 seconds depending on the app). When the Identify period ends, the LED automatically returns to its previous state (on or off). + +### How to Trigger Identify + +#### Apple Home + +1. Open the Home app on your iOS device +2. Find your device in the device list +3. Long press on the device +4. Tap "Identify" or look for the identify option in device settings +5. The LED will start blinking + +#### Amazon Alexa + +1. Open the Alexa app +2. Navigate to your device +3. Look for "Identify" or "Find Device" option in device settings +4. The LED will start blinking + +#### Google Home + +1. Open the Google Home app +2. Select your device +3. Look for "Identify" or "Find Device" option +4. The LED will start blinking + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as an on/off light in your Home app +7. Use the Identify feature to visually locate the device + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The light will appear in your Alexa app +6. Use the Identify feature to visually locate the device + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. Use the Identify feature to visually locate the device + +## Code Structure + +The MatterOnIdentify example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, LED), configures Wi-Fi (if needed), initializes the Matter on/off light endpoint, registers the on/off callback and the Identify callback, and starts the Matter stack. + +2. **`loop()`**: Handles the Identify blinking logic (if identify flag is active, blinks the LED every 500 ms), handles button input for factory reset, and allows the Matter stack to process events. + +3. **Callbacks**: + - `onOffLightCallback()`: Controls the physical LED based on on/off state from Matter controller. + - `onIdentifyLightCallback()`: Handles the Identify cluster activation/deactivation. When active, sets the identify flag to start blinking. When inactive, stops blinking and restores the original light state. + +4. **Identify Blinking Logic**: + - For RGB LEDs: Blinks in red color (brightness 32) when identify is active + - For regular LEDs: Toggles on/off when identify is active + - Blinking rate: Every 500 ms (determined by the delay in loop) + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **LED not responding**: Verify pin configurations and connections +- **Identify feature not working**: Ensure the device is commissioned and you're using a Matter app that supports the Identify cluster. Some apps may not have a visible Identify button +- **LED not blinking during identify**: Check Serial Monitor for "Identify Cluster is Active" message. If you don't see it, the Identify command may not be reaching the device +- **LED state not restored after identify**: The code uses a double-toggle to restore state. If this doesn't work, ensure the light state is properly tracked +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterOnOffLight/README.md b/libraries/Matter/examples/MatterOnOffLight/README.md new file mode 100644 index 00000000000..2a2138ca2c7 --- /dev/null +++ b/libraries/Matter/examples/MatterOnOffLight/README.md @@ -0,0 +1,181 @@ +# Matter On/Off Light Example + +This example demonstrates how to create a Matter-compatible on/off light device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, and manual control using a physical button with state persistence. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | LED | Status | +| --- | ---- | ------ | ----------------- | --- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for an on/off light device +- Support for both Wi-Fi and Thread(*) connectivity +- Simple on/off control +- State persistence using `Preferences` library +- Button control for toggling light and factory reset +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- LED connected to GPIO pin (or using built-in LED) for visual feedback +- User button for manual control (uses BOOT button by default) + +## Pin Configuration + +- **LED**: Uses `LED_BUILTIN` if defined, otherwise pin 2 +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Preferences` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **LED pin configuration** (if not using built-in LED): + ```cpp + const uint8_t ledPin = 2; // Set your LED pin here + ``` + +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for the Light On/Off manual control and factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterOnOffLight.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Initial state: ON +Matter Node is commissioned and connected to the network. Ready for use. +User Callback :: New Light State = ON +User Callback :: New Light State = OFF +User button released. Toggling Light! +User Callback :: New Light State = ON +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides manual control: + +- **Short press of the button**: Toggle light on/off +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### State Persistence + +The device saves the last known on/off state using the `Preferences` library. After a power cycle or restart: + +- The device will restore to the last saved state (ON or OFF) +- The Matter controller will be notified of the restored state +- The LED will reflect the restored state + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as an on/off light in your Home app + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The light will appear in your Alexa app +6. You can control it using voice commands like "Alexa, turn on the light" or "Alexa, turn off the light" + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can control it using voice commands or the app controls + +## Code Structure + +The MatterOnOffLight example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, LED), configures Wi-Fi (if needed), initializes `Preferences` library, sets up the Matter endpoint with the last saved state (defaults to ON if not previously saved), registers the callback function, and starts the Matter stack. + +2. **`loop()`**: Checks the Matter commissioning state, handles button input for toggling the light and factory reset, and allows the Matter stack to process events. + +3. **Callbacks**: + - `setLightOnOff()`: Controls the physical LED based on the on/off state, saves the state to `Preferences` for persistence, and prints the state change to Serial Monitor. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **LED not responding**: Verify pin configurations and connections +- **State not persisting**: Check that the `Preferences` library is properly initialized and that flash memory is not corrupted +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **Button not toggling light**: Ensure the button is properly connected and the debounce time is appropriate. Check Serial Monitor for "User button released" messages +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterOnOffPlugin/README.md b/libraries/Matter/examples/MatterOnOffPlugin/README.md new file mode 100644 index 00000000000..70db06ff0fb --- /dev/null +++ b/libraries/Matter/examples/MatterOnOffPlugin/README.md @@ -0,0 +1,198 @@ +# Matter On/Off Plugin Example + +This example demonstrates how to create a Matter-compatible on/off plugin unit (power relay) device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, and state persistence for power control applications. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Relay/LED | Status | +| --- | ---- | ------ | ----------------- | --------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for an on/off plugin unit (power relay) device +- Support for both Wi-Fi and Thread(*) connectivity +- Simple on/off control for power management +- State persistence using `Preferences` library +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- Power relay module or LED for visualization (for testing, uses built-in LED) +- User button for factory reset (uses BOOT button by default) + +## Pin Configuration + +- **Power Relay/Plugin Pin**: Uses `LED_BUILTIN` if defined (for testing), otherwise pin 2. For production use, connect this to your relay control pin. +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Preferences` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **Power relay pin configuration** (if not using built-in LED): + For production use, change this to the GPIO pin connected to your relay control module: + ```cpp + const uint8_t onoffPin = 2; // Set your relay control pin here + ``` + +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterOnOffPlugin.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Initial state: OFF +Matter Node is commissioned and connected to the network. Ready for use. +User Callback :: New Plugin State = ON +User Callback :: New Plugin State = OFF +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +Note: This example does not include button toggle functionality. The plugin is controlled exclusively via Matter app commands. + +### State Persistence + +The device saves the last known on/off state using the `Preferences` library. After a power cycle or restart: + +- The device will restore to the last saved state (ON or OFF) +- Default state is OFF if no previous state was saved +- The Matter controller will be notified of the restored state +- The relay/LED will reflect the restored state + +### Power Relay Integration + +For production use with a power relay module: + +1. **Connect the relay module** to your ESP32: + - Relay VCC → ESP32 3.3 V or 5 V (check relay module specifications) + - Relay GND → ESP32 GND + - Relay IN → ESP32 GPIO pin (configured as `onoffPin`) + +2. **Update the pin configuration** in the sketch: + ```cpp + const uint8_t onoffPin = 2; // Your relay control pin + ``` + +3. **Test the relay** by controlling it via Matter app - the relay should turn on/off accordingly + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as an on/off switch/outlet in your Home app + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The plugin will appear in your Alexa app +6. You can control it using voice commands like "Alexa, turn on the plugin" or "Alexa, turn off the plugin" + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can control it using voice commands or the app controls + +## Code Structure + +The MatterOnOffPlugin example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, relay/LED pin), configures Wi-Fi (if needed), initializes `Preferences` library, sets up the Matter plugin endpoint with the last saved state (defaults to OFF if not previously saved), registers the callback function, and starts the Matter stack. + +2. **`loop()`**: Checks the Matter commissioning state, handles button input for factory reset, and allows the Matter stack to process events. + +3. **Callbacks**: + - `setPluginOnOff()`: Controls the physical relay/LED based on the on/off state, saves the state to `Preferences` for persistence, and prints the state change to Serial Monitor. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Relay/LED not responding**: Verify pin configurations and connections. For relay modules, ensure proper power supply and wiring +- **State not persisting**: Check that the `Preferences` library is properly initialized and that flash memory is not corrupted +- **Relay not switching**: For relay modules, verify the control signal voltage levels match your relay module requirements (some relays need 5 V, others work with 3.3 V) +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterPressureSensor/README.md b/libraries/Matter/examples/MatterPressureSensor/README.md new file mode 100644 index 00000000000..d18ab9d5198 --- /dev/null +++ b/libraries/Matter/examples/MatterPressureSensor/README.md @@ -0,0 +1,191 @@ +# Matter Pressure Sensor Example + +This example demonstrates how to create a Matter-compatible pressure sensor device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, sensor data reporting to smart home ecosystems, and automatic simulation of pressure readings. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a pressure sensor device +- Support for both Wi-Fi and Thread(*) connectivity +- Pressure measurement reporting in hectopascals (hPa) +- Automatic simulation of pressure readings (950-1100 hPa range) +- Periodic sensor updates every 5 seconds +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- User button for factory reset (uses BOOT button by default) +- Optional: Connect a real pressure sensor (BMP280, BME280, BMP388, etc.) and replace the simulation function + +## Pin Configuration + +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +3. **Real sensor integration** (optional): + To use a real pressure sensor, replace the `getSimulatedPressure()` function with your sensor reading code. The function should return a float value representing pressure in hectopascals (hPa). + +## Building and Flashing + +1. Open the `MatterPressureSensor.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +Current Pressure is 900.00hPa +Current Pressure is 950.00hPa +Current Pressure is 960.00hPa +... +Current Pressure is 1100.00hPa +Current Pressure is 950.00hPa +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Sensor Simulation + +The example includes a simulated pressure sensor that: + +- Starts at 900 hPa (initial value) +- Cycles through 950 to 1100 hPa range +- Increases in 10 hPa steps +- Updates every 5 seconds +- Resets to 950 hPa when reaching 1100 hPa + +To use a real pressure sensor, replace the `getSimulatedPressure()` function with your sensor library code. For example, with a BMP280: + +```cpp +#include +Adafruit_BMP280 bmp; + +float getSimulatedPressure() { + return bmp.readPressure() / 100.0; // Convert Pa to hPa +} +``` + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a pressure sensor in your Home app +7. You can monitor the pressure readings and set up automations based on pressure levels (e.g., weather monitoring) + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The pressure sensor will appear in your Alexa app +6. You can monitor pressure readings and create routines based on pressure changes + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can monitor pressure readings and create automations based on pressure changes + +## Code Structure + +The MatterPressureSensor example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button), configures Wi-Fi (if needed), sets up the Matter Pressure Sensor endpoint with initial value (900 hPa), and waits for Matter commissioning. + +2. **`loop()`**: Displays the current pressure value every 5 seconds, updates the sensor reading from the simulated hardware sensor, handles button input for factory reset, and allows the Matter stack to process events. + +3. **`getSimulatedPressure()`**: Simulates a hardware pressure sensor by cycling through values from 950 to 1100 hPa in 10 hPa steps. Replace this function with your actual sensor reading code. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Pressure readings not updating**: Check that the sensor simulation function is being called correctly. For real sensors, verify sensor wiring and library initialization +- **Pressure values out of range**: Ensure pressure values are in hectopascals (hPa). The Matter protocol stores values as uint16_t internally. Typical atmospheric pressure ranges from 950-1050 hPa at sea level +- **State not changing**: The simulated sensor increases by 10 hPa every 5 seconds. If you're using a real sensor, ensure it's properly connected and reading correctly +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterSmartButon/MatterSmartButon.ino b/libraries/Matter/examples/MatterSmartButton/MatterSmartButton.ino similarity index 100% rename from libraries/Matter/examples/MatterSmartButon/MatterSmartButon.ino rename to libraries/Matter/examples/MatterSmartButton/MatterSmartButton.ino diff --git a/libraries/Matter/examples/MatterSmartButton/README.md b/libraries/Matter/examples/MatterSmartButton/README.md new file mode 100644 index 00000000000..2928897503f --- /dev/null +++ b/libraries/Matter/examples/MatterSmartButton/README.md @@ -0,0 +1,175 @@ +# Matter Smart Button Example + +This example demonstrates how to create a Matter-compatible smart button (generic switch) device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, sending button click events to smart home ecosystems, and triggering automations based on button presses. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a smart button (generic switch) device +- Support for both Wi-Fi and Thread(*) connectivity +- Button click event reporting to Matter controller +- Button control for triggering events and factory reset +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +- Automation trigger support - button presses can trigger actions in smart home apps +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- User button for triggering events (uses BOOT button by default) + +## Pin Configuration + +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for triggering click events and factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterSmartButton.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +User button released. Sending Click to the Matter Controller! +User button released. Sending Click to the Matter Controller! +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides the following functionality: + +- **Short press and release**: Sends a click event to the Matter controller (triggers automations) +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Button Click Events + +When you press and release the button: + +1. The button press is detected and debounced +2. A click event is sent to the Matter controller via the Generic Switch cluster +3. The Matter controller receives the event and can trigger programmed automations +4. The event is logged to Serial Monitor for debugging + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. After commissioning, you can set up automations that trigger when the button is pressed. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a switch/button in your Home app +7. Set up automations: Go to Automation tab > Create Automation > When an accessory is controlled > Select the smart button > Choose the action (e.g., turn on lights, activate scene) + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The smart button will appear in your Alexa app +6. Create routines: Tap More > Routines > Create Routine > When this happens > Select the smart button > Add action (e.g., turn on lights, control other devices) + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. Create automations: Tap Automations > Create Automation > When button is pressed > Choose action + +## Code Structure + +The MatterSmartButton example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button), configures Wi-Fi (if needed), initializes the Matter Generic Switch endpoint, and starts the Matter stack. + +2. **`loop()`**: Checks the Matter commissioning state, handles button input for sending click events and factory reset, and allows the Matter stack to process events. + +3. **Button Event Handling**: + - Detects button press and release with debouncing (250 ms) + - Sends click event to Matter controller using `SmartButton.click()` when button is released + - Handles long press (>5 seconds) for factory reset + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Button clicks not registering**: Check Serial Monitor for "User button released" messages. Verify button wiring and that debounce time is appropriate +- **Automations not triggering**: Ensure the device is commissioned and that automations are properly configured in your Matter app. The button sends events, but automations must be set up in the app +- **Button not responding**: Verify button pin configuration and connections. Check that the button is properly connected with pull-up resistor (INPUT_PULLUP mode) +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection +- **Multiple clicks registered for single press**: Increase the debounce time in the code if needed + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterSmartButon/ci.yml b/libraries/Matter/examples/MatterSmartButton/ci.yml similarity index 100% rename from libraries/Matter/examples/MatterSmartButon/ci.yml rename to libraries/Matter/examples/MatterSmartButton/ci.yml diff --git a/libraries/Matter/examples/MatterTemperatureLight/README.md b/libraries/Matter/examples/MatterTemperatureLight/README.md new file mode 100644 index 00000000000..68a05632192 --- /dev/null +++ b/libraries/Matter/examples/MatterTemperatureLight/README.md @@ -0,0 +1,207 @@ +# Matter Color Temperature Light Example + +This example demonstrates how to create a Matter-compatible color temperature light device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, device control via smart home ecosystems, and manual control using a physical button. The color temperature light provides warm white to cool white control with adjustable brightness. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | RGB LED | Status | +| --- | ---- | ------ | ----------------- | ------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a color temperature light device +- Support for both Wi-Fi and Thread(*) connectivity +- Color temperature control (warm white to cool white, 100-500 mireds) +- Brightness level control (0-255) +- State persistence using `Preferences` library +- Button control for toggling light and factory reset +- RGB LED support with color temperature to RGB conversion +- Regular LED support with PWM brightness control +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- RGB LED connected to GPIO pins (or using built-in RGB LED), or regular LED for PWM brightness control +- User button for manual control (uses BOOT button by default) + +## Pin Configuration + +- **RGB LED**: Uses `RGB_BUILTIN` if defined, otherwise pin 2 +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Preferences` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **LED pin configuration** (if not using built-in RGB LED): + ```cpp + const uint8_t ledPin = 2; // Set your RGB LED pin here + ``` + +3. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for the Light On/Off manual control. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +## Building and Flashing + +1. Open the `MatterTemperatureLight.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Initial state: ON | brightness: 15 | Color Temperature: 454 mireds +Matter Node is commissioned and connected to the network. Ready for use. +Light OnOff changed to ON +Light Brightness changed to 128 +Light Color Temperature changed to 370 +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides manual control: + +- **Short press of the button**: Toggle light on/off +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Color Temperature Control + +The light supports color temperature adjustment from warm white to cool white: + +- **Warm White**: Higher mired values (400-500 mireds) - warmer, more yellow light +- **Cool White**: Lower mired values (100-200 mireds) - cooler, more blue light +- **Default**: 454 mireds (Warm White) + +The color temperature is stored in `Preferences` and restored after power cycles. + +### Brightness Control + +The light supports brightness adjustment from 0 to 255: + +- **0**: Light is off +- **1-254**: Various brightness levels +- **255**: Maximum brightness +- **Default**: 15 (~6% brightness) + +The brightness level is stored in `Preferences` and restored after power cycles. + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a color temperature light in your Home app +7. You can adjust the color temperature (warm/cool) and brightness from the Home app + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The light will appear in your Alexa app +6. You can control color temperature and brightness using voice commands or the app + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can adjust color temperature and brightness from the Google Home app + +## Code Structure + +The MatterTemperatureLight example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button, LED), configures Wi-Fi (if needed), sets up the Matter Color Temperature Light endpoint, restores the last known state from `Preferences` (on/off, brightness, color temperature), and registers callbacks for state changes. + +2. **`loop()`**: Checks the Matter commissioning state, handles button input for toggling the light and factory reset, and allows the Matter stack to process events. + +3. **Callbacks**: + - `setLightState()`: Controls the physical LED. For RGB LEDs, converts color temperature (mireds) to RGB color and applies brightness. For regular LEDs, uses PWM brightness control. + - `onChangeOnOff()`: Handles on/off state changes and logs to Serial Monitor. + - `onChangeBrightness()`: Handles brightness changes and logs to Serial Monitor. + - `onChangeColorTemperature()`: Handles color temperature changes and logs to Serial Monitor. + +4. **State Persistence**: Uses `Preferences` library to store and restore: + - On/off state (default: ON if not previously stored) + - Brightness level (default: 15 if not previously stored) + - Color temperature in mireds (default: 454 mireds - Warm White if not previously stored) + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **RGB LED not responding**: Verify pin configurations and connections. For RGB LEDs, ensure the board defines `RGB_BUILTIN` or set the pin manually +- **LED not showing color temperature correctly**: RGB LED conversion uses `espCTToRgbColor()` function. For regular LEDs, only brightness is controlled via PWM +- **Color temperature not changing**: Verify that color temperature is within valid range (100-500 mireds). Check Serial Monitor for callback messages +- **Brightness not responding**: Ensure LED pin supports PWM output. Check Serial Monitor for brightness change messages +- **State not persisting**: Verify `Preferences` library is working correctly. Check that flash memory is not full +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterTemperatureSensor/README.md b/libraries/Matter/examples/MatterTemperatureSensor/README.md new file mode 100644 index 00000000000..017f3ee9abc --- /dev/null +++ b/libraries/Matter/examples/MatterTemperatureSensor/README.md @@ -0,0 +1,206 @@ +# Matter Temperature Sensor Example + +This example demonstrates how to create a Matter-compatible temperature sensor device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, sensor data reporting to smart home ecosystems, and automatic simulation of temperature readings. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a temperature sensor device +- Support for both Wi-Fi and Thread(*) connectivity +- Temperature measurement reporting in Celsius +- Automatic simulation of temperature readings (-10°C to 10°C range) +- Periodic sensor updates every 5 seconds +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- User button for factory reset (uses BOOT button by default) +- Optional: Connect a real temperature sensor (DS18B20, DHT22, BMP280, BME280, etc.) and replace the simulation function + +## Pin Configuration + +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +3. **Real sensor integration** (optional): + To use a real temperature sensor, replace the `getSimulatedTemperature()` function with your sensor reading code. The function should return a float value representing temperature in Celsius. + +## Building and Flashing + +1. Open the `MatterTemperatureSensor.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. +Current Temperature is -25.00C +Current Temperature is -10.00C +Current Temperature is -9.50C +... +Current Temperature is 10.00C +Current Temperature is -10.00C +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Sensor Simulation + +The example includes a simulated temperature sensor that: + +- Starts at -25°C (initial value) +- Cycles through -10°C to 10°C range +- Increases in 0.5°C steps +- Updates every 5 seconds +- Resets to -10°C when reaching 10°C + +To use a real temperature sensor, replace the `getSimulatedTemperature()` function with your sensor library code. For example, with a DS18B20: + +```cpp +#include +#include + +OneWire oneWire(4); // GPIO pin connected to DS18B20 +DallasTemperature sensors(&oneWire); + +float getSimulatedTemperature() { + sensors.requestTemperatures(); + return sensors.getTempCByIndex(0); +} +``` + +Or with a DHT22: + +```cpp +#include +DHT dht(DHT_PIN, DHT22); + +float getSimulatedTemperature() { + return dht.readTemperature(); +} +``` + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a temperature sensor in your Home app +7. You can monitor the temperature readings and set up automations based on temperature levels (e.g., turn on AC when temperature exceeds threshold) + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The temperature sensor will appear in your Alexa app +6. You can monitor temperature readings and create routines based on temperature changes + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can monitor temperature readings and create automations based on temperature changes + +## Code Structure + +The MatterTemperatureSensor example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button), configures Wi-Fi (if needed), sets up the Matter Temperature Sensor endpoint with initial value (-25°C), and waits for Matter commissioning. + +2. **`loop()`**: Displays the current temperature value every 5 seconds, updates the sensor reading from the simulated hardware sensor, handles button input for factory reset, and allows the Matter stack to process events. + +3. **`getSimulatedTemperature()`**: Simulates a hardware temperature sensor by cycling through values from -10°C to 10°C in 0.5°C steps. Replace this function with your actual sensor reading code. + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Temperature readings not updating**: Check that the sensor simulation function is being called correctly. For real sensors, verify sensor wiring and library initialization +- **Temperature values out of range**: Ensure temperature values are in Celsius. The Matter protocol stores values as int16_t internally (1/100th of a degree Celsius), so -273.15°C (absolute zero) to 327.67°C is the valid range +- **State not changing**: The simulated sensor increases by 0.5°C every 5 seconds. If you're using a real sensor, ensure it's properly connected and reading correctly +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterThermostat/README.md b/libraries/Matter/examples/MatterThermostat/README.md new file mode 100644 index 00000000000..8f0a69abe08 --- /dev/null +++ b/libraries/Matter/examples/MatterThermostat/README.md @@ -0,0 +1,230 @@ +# Matter Thermostat Example + +This example demonstrates how to create a Matter-compatible thermostat device using an ESP32 SoC microcontroller.\ +The application showcases Matter commissioning, thermostat control via smart home ecosystems, temperature setpoint management, and simulated heating/cooling systems with automatic temperature regulation. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | Status | +| --- | ---- | ------ | ----------------- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been pre compiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for a thermostat device +- Support for both Wi-Fi and Thread(*) connectivity +- Multiple thermostat modes: OFF, HEAT, COOL, AUTO +- Heating and cooling setpoint control +- Automatic temperature regulation in AUTO mode +- Simulated heating/cooling systems with temperature changes +- Serial input for manual temperature setting +- Button control for factory reset (decommission) +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home +(*) It is necessary to compile the project using Arduino as IDF Component. + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- User button for factory reset (uses BOOT button by default) +- Optional: Connect a real temperature sensor and replace the simulation function + +## Pin Configuration + +- **Button**: Uses `BOOT_PIN` by default + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi credentials** (if not using BLE commissioning - mandatory for ESP32 | ESP32-S2): + ```cpp + const char *ssid = "your-ssid"; // Change to your Wi-Fi SSID + const char *password = "your-password"; // Change to your Wi-Fi password + ``` + +2. **Button pin configuration** (optional): + By default, the `BOOT` button (GPIO 0) is used for factory reset. You can change this to a different pin if needed. + ```cpp + const uint8_t buttonPin = BOOT_PIN; // Set your button pin here + ``` + +3. **Real sensor integration** (optional): + To use a real temperature sensor, replace the `getSimulatedTemperature()` function with your sensor reading code. The function should return a float value representing temperature in Celsius. + +## Building and Flashing + +1. Open the `MatterThermostat.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Connect your ESP32 board to your computer via USB. +4. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. The Wi-Fi connection messages will be displayed only for ESP32 and ESP32-S2. Other targets will use Matter CHIPoBLE to automatically setup the IP Network. You should see output similar to the following, which provides the necessary information for commissioning: + +``` +Connecting to your-wifi-ssid +....... +Wi-Fi connected +IP address: 192.168.1.100 + +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00 +Matter Node not commissioned yet. Waiting for commissioning. +Matter Node not commissioned yet. Waiting for commissioning. +... +Matter Node is commissioned and connected to the network. Ready for use. + +Initial Setpoints are 23.0C to 20.0C with a minimum 2.5C difference +Auto mode is ON. Initial Temperature of 12.5C +Local Temperature Sensor will be simulated every 10 seconds and changed by a simulated heater and cooler to move in between setpoints. +Current Local Temperature is 12.5C + Thermostat Mode: AUTO >>> Heater is ON -- Cooler is OFF +Current Local Temperature is 13.0C + Thermostat Mode: AUTO >>> Heater is ON -- Cooler is OFF +... +Current Local Temperature is 20.0C + Thermostat Mode: AUTO >>> Heater is OFF -- Cooler is OFF +Current Local Temperature is 23.0C + Thermostat Mode: AUTO >>> Heater is OFF -- Cooler is ON +``` + +## Using the Device + +### Manual Control + +The user button (BOOT button by default) provides factory reset functionality: + +- **Long press (>5 seconds)**: Factory reset the device (decommission) + +### Serial Input + +You can manually set the temperature by typing a value in the Serial Monitor: + +1. Open Serial Monitor at 115200 baud +2. Type a temperature value between -50°C and 50°C +3. Press Enter +4. The thermostat will update the local temperature reading + +Example: +``` +15.5 +New Temperature is 15.5C +``` + +### Thermostat Modes + +The thermostat supports four operating modes: + +- **OFF**: Heating and cooling systems are turned off +- **HEAT**: Only heating system is active. Turns off when temperature exceeds heating setpoint +- **COOL**: Only cooling system is active. Turns off when temperature falls below cooling setpoint +- **AUTO**: Automatically switches between heating and cooling to maintain temperature between setpoints + +### Setpoints + +- **Heating Setpoint**: Target temperature for heating (default: 23.0°C) +- **Cooling Setpoint**: Target temperature for cooling (default: 20.0°C) +- **Deadband**: Minimum difference between heating and cooling setpoints (2.5°C required in AUTO mode) + +### Temperature Simulation + +The example includes a simulated heating/cooling system: + +- **Heating**: Temperature increases by 0.5°C every 10 seconds when heating is active +- **Cooling**: Temperature decreases by 0.5°C every 10 seconds when cooling is active +- **No heating/cooling**: Temperature remains stable + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. + +#### Apple Home + +1. Open the Home app on your iOS device +2. Tap the "+" button > Add Accessory +3. Scan the QR code displayed in the Serial Monitor, or +4. Tap "I Don't Have a Code or Cannot Scan" and enter the manual pairing code +5. Follow the prompts to complete setup +6. The device will appear as a thermostat in your Home app +7. You can control the mode (OFF, HEAT, COOL, AUTO) and adjust heating/cooling setpoints +8. Monitor the current temperature and set up automations based on temperature + +#### Amazon Alexa + +1. Open the Alexa app +2. Tap More > Add Device > Matter +3. Select "Scan QR code" or "Enter code manually" +4. Complete the setup process +5. The thermostat will appear in your Alexa app +6. You can control the mode and setpoints using voice commands or the app +7. Create routines based on temperature changes + +#### Google Home + +1. Open the Google Home app +2. Tap "+" > Set up device > New device +3. Choose "Matter device" +4. Scan the QR code or enter the manual pairing code +5. Follow the prompts to complete setup +6. You can control the mode and setpoints using voice commands or the app +7. Create automations based on temperature + +## Code Structure + +The MatterThermostat example consists of the following main components: + +1. **`setup()`**: Initializes hardware (button), configures Wi-Fi (if needed), sets up the Matter Thermostat endpoint with cooling/heating sequence of operation and AUTO mode enabled, sets initial setpoints (heating: 23.0°C, cooling: 20.0°C) and initial temperature (12.5°C), and waits for Matter commissioning. + +2. **`loop()`**: Reads serial input for manual temperature setting, simulates heating/cooling systems and temperature changes every 10 seconds, controls heating/cooling based on thermostat mode and setpoints, handles button input for factory reset, and allows the Matter stack to process events. + +3. **`getSimulatedTemperature()`**: Simulates temperature changes based on heating/cooling state. Temperature increases when heating is active, decreases when cooling is active. Replace this function with your actual sensor reading code. + +4. **`readSerialForNewTemperature()`**: Reads temperature values from Serial Monitor input, validates the range (-50°C to 50°C), and updates the thermostat's local temperature. + +5. **Thermostat Control Logic**: + - **OFF mode**: Both heating and cooling are disabled + - **AUTO mode**: Automatically switches between heating and cooling to maintain temperature between setpoints + - **HEAT mode**: Activates heating until temperature exceeds heating setpoint + - **COOL mode**: Activates cooling until temperature falls below cooling setpoint + +## Troubleshooting + +- **Device not visible during commissioning**: Ensure Wi-Fi or Thread connectivity is properly configured +- **Temperature not updating**: Check that the simulation function is being called correctly. For real sensors, verify sensor wiring and library initialization +- **Heating/cooling not responding**: Verify that the thermostat mode is set correctly and that setpoints are properly configured +- **Setpoints not working**: Ensure cooling setpoint is at least 2.5°C lower than heating setpoint in AUTO mode +- **Serial input not working**: Make sure Serial Monitor is set to 115200 baud and "No line ending" or "Newline" is selected +- **Invalid temperature values**: Temperature must be between -50°C and 50°C. The Matter protocol stores values as int16_t internally (1/100th of a degree Celsius) +- **Failed to commission**: Try factory resetting the device by long-pressing the button. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` +- **No serial output**: Check baudrate (115200) and USB connection + +## License + +This example is licensed under the Apache License, Version 2.0. diff --git a/libraries/Matter/examples/MatterThreadLight/README.md b/libraries/Matter/examples/MatterThreadLight/README.md new file mode 100644 index 00000000000..3a971b279b5 --- /dev/null +++ b/libraries/Matter/examples/MatterThreadLight/README.md @@ -0,0 +1,242 @@ +# Matter Thread Light Example + +This example demonstrates a Matter Light device that uses Thread network commissioning exclusively. Thread is a low-power, mesh networking protocol that's ideal for Matter smart home devices. + +## Features + +- **Thread-only commissioning**: Device can only be commissioned over Thread network +- **On/Off Light control**: Simple light that can be controlled via Matter +- **Automatic fallback**: On non-Thread capable devices, falls back to Wi-Fi +- **Status monitoring**: Displays network and commissioning status +- **Decommissioning support**: Long-press boot button to decommission + +## Hardware Requirements + +### Thread-Capable ESP32 Variants +- **ESP32-H2**: Native Thread support +- **ESP32-C6**: Native Thread support +- **ESP32-C5**: Native Thread support + +### Other ESP32 Variants +- **ESP32, ESP32-S2, ESP32-S3, ESP32-C3**: Will automatically fall back to Wi-Fi commissioning + +## Hardware Setup + +### Basic Setup +``` +ESP32-H2/C6/C5 Board +├── LED (GPIO 2 or LED_BUILTIN) - Visual feedback +└── Boot Button (GPIO 0) - Decommissioning +``` + +### Pin Configuration +- **LED Pin**: Uses `LED_BUILTIN` if available, otherwise GPIO 2 +- **Button Pin**: Uses `BOOT_PIN` (typically GPIO 0) + +## Network Requirements + +### Thread Border Router +To use Thread commissioning, you need a Thread Border Router in your network: + +**Apple HomePod/Apple TV (tvOS 15+)** +``` +- Supports Thread Border Router functionality +- Automatically discovered by Matter controllers +``` + +**Google Nest Hub Max (2nd gen)** +``` +- Built-in Thread Border Router +- Works with Google Home ecosystem +``` + +**OpenThread Border Router** +``` +- Raspberry Pi with Thread radio +- Custom Thread Border Router setup +``` + +## Usage + +### 1. Upload and Monitor +```bash +# Upload the sketch to your ESP32-H2/C6 +# Open Serial Monitor at 115200 baud +``` + +### 2. Check Thread Status +The device will display: +``` +=== Matter Thread Light Status === +Device commissioned: No +Device connected: No +Thread connected: No +Thread commissioning: Enabled +Wi-Fi commissioning: Disabled +Light state: OFF +================================ +``` + +### 3. Commission the Device +Use a Matter controller that supports Thread: + +**Apple Home** +1. Open Home app on iPhone/iPad +2. Tap "Add Accessory" +3. Scan QR code or enter manual pairing code +4. Follow commissioning steps + +**Google Home** +1. Open Google Home app +2. Tap "Add" → "Set up device" +3. Choose "Works with Google" +4. Scan QR code or enter pairing code + +### 4. Control the Light +Once commissioned, you can: +- Turn the light on/off from your Matter controller +- Monitor status in Serial Monitor +- See LED respond to commands + +### 5. Decommission (if needed) +1. Hold the boot button for 5+ seconds +2. Device will reset and become available for commissioning again + +## Serial Output + +### Successful Thread Commissioning +``` +Starting Thread-only Matter Light... +✓ Thread-only commissioning mode enabled +Matter Node is not commissioned yet. +Manual pairing code: 12345678901 +QR code URL: https://... + +This device is configured for Thread commissioning only. +Make sure your Matter controller supports Thread commissioning. + +Waiting for Matter commissioning... +Looking for Thread Border Router... +Thread connected: Yes +Device commissioned: Yes +Light ON +``` + +### Non-Thread Device Fallback +``` +Starting Thread-only Matter Light... +⚠ Thread support not compiled in, using Wi-Fi commissioning +Matter Node is not commissioned yet. +Wi-Fi commissioning: Enabled +``` + +## Troubleshooting + +### Device Not Commissioning +**Problem**: Device stuck on "Waiting for Matter commissioning..." + +**Solutions**: +1. **Check Thread Border Router**: + - Ensure Thread Border Router is online + - Verify controller supports Thread commissioning + +2. **Verify Network**: + - Check Thread network is operational + - Ensure Matter controller is on same network as Border Router + +3. **Reset and Retry**: + - Hold boot button for 5+ seconds to decommission + - Try commissioning again + +### Thread Connection Issues +**Problem**: "Thread connected: No" in status + +**Solutions**: +1. **Border Router Setup**: + - Verify Thread Border Router is functioning + - Check Border Router connectivity + +2. **Device Placement**: + - Move device closer to Thread Border Router + - Ensure no interference with Thread radio + +3. **Thread Network**: + - Verify Thread network credentials + - Check Thread network topology + +### Compilation Issues +**Problem**: Compilation errors related to Thread + +**Solutions**: +1. **ESP-IDF Version**: + ```bash + # Ensure ESP-IDF supports Thread for your board + # Update to latest ESP-IDF if needed + ``` + +2. **Board Configuration**: + ```bash + # Make sure you've selected the correct board + # ESP32-H2/C6/C5 for Thread support + ``` + +## API Reference + +### Network Commissioning Control +```cpp +// Enable Thread-only commissioning +Matter.setNetworkCommissioningMode(false, true); + +// Check Thread commissioning status +bool enabled = Matter.isThreadNetworkCommissioningEnabled(); + +// Check Thread connection +bool connected = Matter.isThreadConnected(); +``` + +### Device Status +```cpp +// Check if device is commissioned +bool commissioned = Matter.isDeviceCommissioned(); + +// Check if device has network connectivity +bool connected = Matter.isDeviceConnected(); +``` + +### Light Control +```cpp +// Set light state +OnOffLight.setOnOff(true); // Turn on +OnOffLight.setOnOff(false); // Turn off + +// Get current state +bool isOn = OnOffLight.getOnOff(); + +// Toggle light +OnOffLight.toggle(); +``` + +## Thread vs Wi-Fi Comparison + +| Feature | Thread | Wi-Fi | +|---------|--------|------| +| **Power Consumption** | Low | Higher | +| **Range** | Mesh network, self-healing | Single point to router | +| **Setup** | Requires Border Router | Direct to Wi-Fi router | +| **Reliability** | High (mesh redundancy) | Depends on Wi-Fi quality | +| **Device Limit** | 250+ devices per network | Limited by router | +| **Security** | Built-in mesh security | WPA2/WPA3 | + +## Related Examples + +- **[SimpleNetworkCommissioning](../SimpleNetworkCommissioning/)**: Basic Wi-Fi/Thread selection +- **[MatterNetworkCommissioning](../MatterNetworkCommissioning/)**: Interactive commissioning control +- **[MatterMinimum](../MatterMinimum/)**: Simplest Wi-Fi-only setup +- **[MatterOnOffLight](../MatterOnOffLight/)**: Wi-Fi-based light with persistence + +## Further Reading + +- [Thread Group Specification](https://www.threadgroup.org/) +- [OpenThread Documentation](https://openthread.io/) +- [Matter Thread Integration Guide](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/thread_primer.md) +- [ESP32 Thread Programming Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/thread.html) From ff5866b1ddd4b48ac75df269b3cdb4beba6aa15d Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Wed, 5 Nov 2025 11:55:59 -0300 Subject: [PATCH 29/31] feat(matter): adds Arduino Matter Library documentation (#11984) * feat(matter): adds Arduino Matter Library documentation * fix(matter): title format * fix(matter): fixes SmartButton path Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(matter): Fix typo in cooling temperature variable name * fix(matter): Fix typo in parameter name for setCoolingHeatingSetpoints * fix(matter): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(matter): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(matter): fixes title alligments * fix(matter): examples url * fix(matter): Fix swapped function arguments * fix(matter): Add matter to libraries section * ci(pre-commit): Apply automatic fixes * fix(pre-commit): Fix spelling --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Me No Dev Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- docs/en/libraries.rst | 11 + docs/en/matter/ep_color_light.rst | 212 ++++++++++++ docs/en/matter/ep_color_temperature_light.rst | 258 +++++++++++++++ docs/en/matter/ep_contact_sensor.rst | 137 ++++++++ docs/en/matter/ep_dimmable_light.rst | 236 +++++++++++++ docs/en/matter/ep_enhanced_color_light.rst | 303 +++++++++++++++++ docs/en/matter/ep_fan.rst | 292 +++++++++++++++++ docs/en/matter/ep_generic_switch.rst | 94 ++++++ docs/en/matter/ep_humidity_sensor.rst | 136 ++++++++ docs/en/matter/ep_occupancy_sensor.rst | 152 +++++++++ docs/en/matter/ep_on_off_light.rst | 190 +++++++++++ docs/en/matter/ep_on_off_plugin.rst | 187 +++++++++++ docs/en/matter/ep_pressure_sensor.rst | 133 ++++++++ docs/en/matter/ep_temperature_sensor.rst | 136 ++++++++ docs/en/matter/ep_thermostat.rst | 310 ++++++++++++++++++ docs/en/matter/matter.rst | 216 ++++++++++++ docs/en/matter/matter_ep.rst | 200 +++++++++++ .../src/MatterEndpoints/MatterThermostat.cpp | 12 +- .../src/MatterEndpoints/MatterThermostat.h | 8 +- 19 files changed, 3213 insertions(+), 10 deletions(-) create mode 100644 docs/en/matter/ep_color_light.rst create mode 100644 docs/en/matter/ep_color_temperature_light.rst create mode 100644 docs/en/matter/ep_contact_sensor.rst create mode 100644 docs/en/matter/ep_dimmable_light.rst create mode 100644 docs/en/matter/ep_enhanced_color_light.rst create mode 100644 docs/en/matter/ep_fan.rst create mode 100644 docs/en/matter/ep_generic_switch.rst create mode 100644 docs/en/matter/ep_humidity_sensor.rst create mode 100644 docs/en/matter/ep_occupancy_sensor.rst create mode 100644 docs/en/matter/ep_on_off_light.rst create mode 100644 docs/en/matter/ep_on_off_plugin.rst create mode 100644 docs/en/matter/ep_pressure_sensor.rst create mode 100644 docs/en/matter/ep_temperature_sensor.rst create mode 100644 docs/en/matter/ep_thermostat.rst create mode 100644 docs/en/matter/matter.rst create mode 100644 docs/en/matter/matter_ep.rst diff --git a/docs/en/libraries.rst b/docs/en/libraries.rst index 07f0978be68..daddca2b1d8 100644 --- a/docs/en/libraries.rst +++ b/docs/en/libraries.rst @@ -92,6 +92,17 @@ The Arduino ESP32 offers some unique APIs, described in this section: api/* +Matter APIs +----------- + +.. toctree:: + :maxdepth: 1 + :glob: + + matter/matter + matter/matter_ep + matter/ep_* + Zigbee APIs ----------- diff --git a/docs/en/matter/ep_color_light.rst b/docs/en/matter/ep_color_light.rst new file mode 100644 index 00000000000..17f9b47e817 --- /dev/null +++ b/docs/en/matter/ep_color_light.rst @@ -0,0 +1,212 @@ +################ +MatterColorLight +################ + +About +----- + +The ``MatterColorLight`` class provides a color light endpoint for Matter networks with RGB color control using the HSV color model. This endpoint implements the Matter lighting standard for full-color lighting control. + +**Features:** +* On/off control +* RGB color control with HSV color model +* State persistence support +* Callback support for state and color changes +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* RGB smart lights +* Color-changing lights +* Mood lighting +* Entertainment lighting control +* Smart home color automation + +API Reference +------------- + +Constructor +*********** + +MatterColorLight +^^^^^^^^^^^^^^^^ + +Creates a new Matter color light endpoint. + +.. code-block:: arduino + + MatterColorLight(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter color light endpoint with optional initial state and color. + +.. code-block:: arduino + + bool begin(bool initialState = false, espHsvColor_t colorHSV = {0, 254, 31}); + +* ``initialState`` - Initial on/off state (default: ``false`` = off) +* ``colorHSV`` - Initial HSV color (default: red 12% intensity HSV(0, 254, 31)) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter light events. + +.. code-block:: arduino + + void end(); + +On/Off Control +************** + +setOnOff +^^^^^^^^ + +Sets the on/off state of the light. + +.. code-block:: arduino + + bool setOnOff(bool newState); + +getOnOff +^^^^^^^^ + +Gets the current on/off state. + +.. code-block:: arduino + + bool getOnOff(); + +toggle +^^^^^^ + +Toggles the on/off state. + +.. code-block:: arduino + + bool toggle(); + +Color Control +************* + +setColorRGB +^^^^^^^^^^^ + +Sets the color using RGB values. + +.. code-block:: arduino + + bool setColorRGB(espRgbColor_t rgbColor); + +* ``rgbColor`` - RGB color structure with red, green, and blue values (0-255 each) + +getColorRGB +^^^^^^^^^^^ + +Gets the current color as RGB values. + +.. code-block:: arduino + + espRgbColor_t getColorRGB(); + +setColorHSV +^^^^^^^^^^^ + +Sets the color using HSV values. + +.. code-block:: arduino + + bool setColorHSV(espHsvColor_t hsvColor); + +* ``hsvColor`` - HSV color structure with hue (0-360), saturation (0-254), and value/brightness (0-254) + +getColorHSV +^^^^^^^^^^^ + +Gets the current color as HSV values. + +.. code-block:: arduino + + espHsvColor_t getColorHSV(); + +Event Handling +************** + +onChange +^^^^^^^^ + +Sets a callback for when any parameter changes. + +.. code-block:: arduino + + void onChange(EndPointCB onChangeCB); + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(bool newState, espHsvColor_t newColor); + +onChangeOnOff +^^^^^^^^^^^^^ + +Sets a callback for on/off state changes. + +.. code-block:: arduino + + void onChangeOnOff(EndPointOnOffCB onChangeCB); + +onChangeColorHSV +^^^^^^^^^^^^^^^^ + +Sets a callback for color changes. + +.. code-block:: arduino + + void onChangeColorHSV(EndPointRGBColorCB onChangeCB); + +updateAccessory +^^^^^^^^^^^^^^^ + +Updates the physical light state using current Matter internal state. + +.. code-block:: arduino + + void updateAccessory(); + +Operators +********* + +bool operator +^^^^^^^^^^^^^ + +Returns current on/off state. + +.. code-block:: arduino + + operator bool(); + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Turns light on or off. + +.. code-block:: arduino + + void operator=(bool state); + +Example +------- + +Color Light +*********** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterColorLight/MatterColorLight.ino + :language: arduino diff --git a/docs/en/matter/ep_color_temperature_light.rst b/docs/en/matter/ep_color_temperature_light.rst new file mode 100644 index 00000000000..2a2cfe2395e --- /dev/null +++ b/docs/en/matter/ep_color_temperature_light.rst @@ -0,0 +1,258 @@ +########################### +MatterColorTemperatureLight +########################### + +About +----- + +The ``MatterColorTemperatureLight`` class provides a color temperature light endpoint for Matter networks with brightness and color temperature control. This endpoint implements the Matter lighting standard for lights that support color temperature adjustment (warm white to cool white). + +**Features:** +* On/off control +* Brightness level control (0-255) +* Color temperature control (100-500 mireds) +* State persistence support +* Callback support for state, brightness, and temperature changes +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Tunable white lights +* Color temperature adjustable lights +* Smart lighting with warm/cool control +* Circadian lighting +* Smart home lighting automation + +API Reference +------------- + +Constructor +*********** + +MatterColorTemperatureLight +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter color temperature light endpoint. + +.. code-block:: arduino + + MatterColorTemperatureLight(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter color temperature light endpoint with optional initial state, brightness, and color temperature. + +.. code-block:: arduino + + bool begin(bool initialState = false, uint8_t brightness = 64, uint16_t colorTemperature = 370); + +* ``initialState`` - Initial on/off state (default: ``false`` = off) +* ``brightness`` - Initial brightness level (0-255, default: 64 = 25%) +* ``colorTemperature`` - Initial color temperature in mireds (100-500, default: 370 = Soft White) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter light events. + +.. code-block:: arduino + + void end(); + +Constants +********* + +MAX_BRIGHTNESS +^^^^^^^^^^^^^^ + +Maximum brightness value (255). + +.. code-block:: arduino + + static const uint8_t MAX_BRIGHTNESS = 255; + +MAX_COLOR_TEMPERATURE +^^^^^^^^^^^^^^^^^^^^^ + +Maximum color temperature value (500 mireds = cool white). + +.. code-block:: arduino + + static const uint16_t MAX_COLOR_TEMPERATURE = 500; + +MIN_COLOR_TEMPERATURE +^^^^^^^^^^^^^^^^^^^^^ + +Minimum color temperature value (100 mireds = warm white). + +.. code-block:: arduino + + static const uint16_t MIN_COLOR_TEMPERATURE = 100; + +On/Off Control +************** + +setOnOff +^^^^^^^^ + +Sets the on/off state of the light. + +.. code-block:: arduino + + bool setOnOff(bool newState); + +getOnOff +^^^^^^^^ + +Gets the current on/off state. + +.. code-block:: arduino + + bool getOnOff(); + +toggle +^^^^^^ + +Toggles the on/off state. + +.. code-block:: arduino + + bool toggle(); + +Brightness Control +****************** + +setBrightness +^^^^^^^^^^^^^ + +Sets the brightness level. + +.. code-block:: arduino + + bool setBrightness(uint8_t newBrightness); + +* ``newBrightness`` - Brightness level (0-255) + +getBrightness +^^^^^^^^^^^^^ + +Gets the current brightness level. + +.. code-block:: arduino + + uint8_t getBrightness(); + +Color Temperature Control +************************* + +setColorTemperature +^^^^^^^^^^^^^^^^^^^ + +Sets the color temperature. + +.. code-block:: arduino + + bool setColorTemperature(uint16_t newTemperature); + +* ``newTemperature`` - Color temperature in mireds (100-500) + +**Note:** Color temperature is measured in mireds (micro reciprocal degrees). Lower values (100-200) are warm white, higher values (400-500) are cool white. + +getColorTemperature +^^^^^^^^^^^^^^^^^^^ + +Gets the current color temperature. + +.. code-block:: arduino + + uint16_t getColorTemperature(); + +Event Handling +************** + +onChange +^^^^^^^^ + +Sets a callback for when any parameter changes. + +.. code-block:: arduino + + void onChange(EndPointCB onChangeCB); + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(bool newState, uint8_t newBrightness, uint16_t newTemperature); + +onChangeOnOff +^^^^^^^^^^^^^ + +Sets a callback for on/off state changes. + +.. code-block:: arduino + + void onChangeOnOff(EndPointOnOffCB onChangeCB); + +onChangeBrightness +^^^^^^^^^^^^^^^^^^ + +Sets a callback for brightness changes. + +.. code-block:: arduino + + void onChangeBrightness(EndPointBrightnessCB onChangeCB); + +onChangeColorTemperature +^^^^^^^^^^^^^^^^^^^^^^^^ + +Sets a callback for color temperature changes. + +.. code-block:: arduino + + void onChangeColorTemperature(EndPointTemperatureCB onChangeCB); + +updateAccessory +^^^^^^^^^^^^^^^ + +Updates the physical light state using current Matter internal state. + +.. code-block:: arduino + + void updateAccessory(); + +Operators +********* + +bool operator +^^^^^^^^^^^^^ + +Returns current on/off state. + +.. code-block:: arduino + + operator bool(); + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Turns light on or off. + +.. code-block:: arduino + + void operator=(bool state); + +Example +------- + +Color Temperature Light +*********************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterTemperatureLight/MatterTemperatureLight.ino + :language: arduino diff --git a/docs/en/matter/ep_contact_sensor.rst b/docs/en/matter/ep_contact_sensor.rst new file mode 100644 index 00000000000..cdb5e131936 --- /dev/null +++ b/docs/en/matter/ep_contact_sensor.rst @@ -0,0 +1,137 @@ +################### +MatterContactSensor +################### + +About +----- + +The ``MatterContactSensor`` class provides a contact sensor endpoint for Matter networks. This endpoint implements the Matter contact sensing standard for detecting open/closed states (e.g., doors, windows). + +**Features:** +* Contact state reporting (open/closed) +* Simple boolean state +* Read-only sensor (no control functionality) +* Automatic state updates +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Door/window sensors +* Contact switches +* Security systems +* Access control +* Smart home automation triggers + +API Reference +------------- + +Constructor +*********** + +MatterContactSensor +^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter contact sensor endpoint. + +.. code-block:: arduino + + MatterContactSensor(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter contact sensor endpoint with an initial contact state. + +.. code-block:: arduino + + bool begin(bool _contactState = false); + +* ``_contactState`` - Initial contact state (``true`` = closed, ``false`` = open, default: ``false``) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter contact sensor events. + +.. code-block:: arduino + + void end(); + +Contact State Control +********************* + +setContact +^^^^^^^^^^ + +Sets the contact state. + +.. code-block:: arduino + + bool setContact(bool _contactState); + +* ``_contactState`` - Contact state (``true`` = closed, ``false`` = open) + +This function will return ``true`` if successful, ``false`` otherwise. + +getContact +^^^^^^^^^^ + +Gets the current contact state. + +.. code-block:: arduino + + bool getContact(); + +This function will return ``true`` if closed, ``false`` if open. + +Operators +********* + +bool operator +^^^^^^^^^^^^^ + +Returns the current contact state. + +.. code-block:: arduino + + operator bool(); + +Example: + +.. code-block:: arduino + + if (mySensor) { + Serial.println("Contact is closed"); + } else { + Serial.println("Contact is open"); + } + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Sets the contact state. + +.. code-block:: arduino + + void operator=(bool _contactState); + +Example: + +.. code-block:: arduino + + mySensor = true; // Set contact to closed + mySensor = false; // Set contact to open + +Example +------- + +Contact Sensor +************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterContactSensor/MatterContactSensor.ino + :language: arduino diff --git a/docs/en/matter/ep_dimmable_light.rst b/docs/en/matter/ep_dimmable_light.rst new file mode 100644 index 00000000000..7a442e4e4dc --- /dev/null +++ b/docs/en/matter/ep_dimmable_light.rst @@ -0,0 +1,236 @@ +################### +MatterDimmableLight +################### + +About +----- + +The ``MatterDimmableLight`` class provides a dimmable light endpoint for Matter networks. This endpoint implements the Matter lighting standard for lights with brightness control. + +**Features:** +* On/off control +* Brightness level control (0-255) +* State persistence support +* Callback support for state and brightness changes +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Dimmable smart lights +* Brightness control switches +* Smart home lighting automation +* Variable brightness lighting + +API Reference +------------- + +Constructor +*********** + +MatterDimmableLight +^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter dimmable light endpoint. + +.. code-block:: arduino + + MatterDimmableLight(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter dimmable light endpoint with optional initial state and brightness. + +.. code-block:: arduino + + bool begin(bool initialState = false, uint8_t brightness = 64); + +* ``initialState`` - Initial on/off state (``true`` = on, ``false`` = off, default: ``false``) +* ``brightness`` - Initial brightness level (0-255, default: 64 = 25%) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter light events. + +.. code-block:: arduino + + void end(); + +On/Off Control +************** + +setOnOff +^^^^^^^^ + +Sets the on/off state of the light. + +.. code-block:: arduino + + bool setOnOff(bool newState); + +* ``newState`` - New state (``true`` = on, ``false`` = off) + +This function will return ``true`` if successful, ``false`` otherwise. + +getOnOff +^^^^^^^^ + +Gets the current on/off state of the light. + +.. code-block:: arduino + + bool getOnOff(); + +This function will return ``true`` if the light is on, ``false`` if off. + +toggle +^^^^^^ + +Toggles the on/off state of the light. + +.. code-block:: arduino + + bool toggle(); + +This function will return ``true`` if successful, ``false`` otherwise. + +Brightness Control +****************** + +setBrightness +^^^^^^^^^^^^^ + +Sets the brightness level of the light. + +.. code-block:: arduino + + bool setBrightness(uint8_t newBrightness); + +* ``newBrightness`` - New brightness level (0-255, where 0 = off, 255 = maximum brightness) + +This function will return ``true`` if successful, ``false`` otherwise. + +getBrightness +^^^^^^^^^^^^^ + +Gets the current brightness level of the light. + +.. code-block:: arduino + + uint8_t getBrightness(); + +This function will return the brightness level (0-255). + +Constants +********* + +MAX_BRIGHTNESS +^^^^^^^^^^^^^^ + +Maximum brightness value constant. + +.. code-block:: arduino + + static const uint8_t MAX_BRIGHTNESS = 255; + +Operators +********* + +bool operator +^^^^^^^^^^^^^ + +Returns the current on/off state of the light. + +.. code-block:: arduino + + operator bool(); + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Turns the light on or off. + +.. code-block:: arduino + + void operator=(bool state); + +Event Handling +************** + +onChange +^^^^^^^^ + +Sets a callback function to be called when any parameter changes. + +.. code-block:: arduino + + void onChange(EndPointCB onChangeCB); + +* ``onChangeCB`` - Function to call when state changes + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(bool newState, uint8_t newBrightness); + +* ``newState`` - New on/off state +* ``newBrightness`` - New brightness level (0-255) + +onChangeOnOff +^^^^^^^^^^^^^ + +Sets a callback function to be called when the on/off state changes. + +.. code-block:: arduino + + void onChangeOnOff(EndPointOnOffCB onChangeCB); + +* ``onChangeCB`` - Function to call when on/off state changes + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(bool newState); + +onChangeBrightness +^^^^^^^^^^^^^^^^^^ + +Sets a callback function to be called when the brightness level changes. + +.. code-block:: arduino + + void onChangeBrightness(EndPointBrightnessCB onChangeCB); + +* ``onChangeCB`` - Function to call when brightness changes + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(uint8_t newBrightness); + +updateAccessory +^^^^^^^^^^^^^^^ + +Updates the state of the light using the current Matter Light internal state. + +.. code-block:: arduino + + void updateAccessory(); + +Example +------- + +Dimmable Light +************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterDimmableLight/MatterDimmableLight.ino + :language: arduino diff --git a/docs/en/matter/ep_enhanced_color_light.rst b/docs/en/matter/ep_enhanced_color_light.rst new file mode 100644 index 00000000000..3463c1c9d02 --- /dev/null +++ b/docs/en/matter/ep_enhanced_color_light.rst @@ -0,0 +1,303 @@ +######################## +MatterEnhancedColorLight +######################## + +About +----- + +The ``MatterEnhancedColorLight`` class provides an enhanced color light endpoint for Matter networks with full RGB color control, brightness, and color temperature. This endpoint implements the Matter lighting standard for advanced color lighting with all features. + +**Features:** +* On/off control +* RGB color control with HSV color model +* Brightness level control (0-255) +* Color temperature control (100-500 mireds) +* State persistence support +* Callback support for all parameter changes +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Full-featured RGB smart lights +* Advanced color and temperature control +* Mood lighting with all features +* Entertainment lighting +* Circadian lighting with color temperature +* Smart home advanced lighting automation + +API Reference +------------- + +Constructor +*********** + +MatterEnhancedColorLight +^^^^^^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter enhanced color light endpoint. + +.. code-block:: arduino + + MatterEnhancedColorLight(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter enhanced color light endpoint with optional initial state, color, brightness, and color temperature. + +.. code-block:: arduino + + bool begin(bool initialState = false, espHsvColor_t colorHSV = {21, 216, 25}, uint8_t newBrightness = 25, uint16_t colorTemperature = 454); + +* ``initialState`` - Initial on/off state (default: ``false`` = off) +* ``colorHSV`` - Initial HSV color (default: HSV(21, 216, 25) = warm white) +* ``newBrightness`` - Initial brightness level (0-255, default: 25 = 10%) +* ``colorTemperature`` - Initial color temperature in mireds (100-500, default: 454 = Warm White) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter light events. + +.. code-block:: arduino + + void end(); + +Constants +********* + +MAX_BRIGHTNESS +^^^^^^^^^^^^^^ + +Maximum brightness value (255). + +.. code-block:: arduino + + static const uint8_t MAX_BRIGHTNESS = 255; + +MAX_COLOR_TEMPERATURE +^^^^^^^^^^^^^^^^^^^^^ + +Maximum color temperature value (500 mireds = cool white). + +.. code-block:: arduino + + static const uint16_t MAX_COLOR_TEMPERATURE = 500; + +MIN_COLOR_TEMPERATURE +^^^^^^^^^^^^^^^^^^^^^ + +Minimum color temperature value (100 mireds = warm white). + +.. code-block:: arduino + + static const uint16_t MIN_COLOR_TEMPERATURE = 100; + +On/Off Control +************** + +setOnOff +^^^^^^^^ + +Sets the on/off state of the light. + +.. code-block:: arduino + + bool setOnOff(bool newState); + +getOnOff +^^^^^^^^ + +Gets the current on/off state. + +.. code-block:: arduino + + bool getOnOff(); + +toggle +^^^^^^ + +Toggles the on/off state. + +.. code-block:: arduino + + bool toggle(); + +Color Control +************* + +setColorRGB +^^^^^^^^^^^ + +Sets the color using RGB values. + +.. code-block:: arduino + + bool setColorRGB(espRgbColor_t rgbColor); + +getColorRGB +^^^^^^^^^^^ + +Gets the current color as RGB values. + +.. code-block:: arduino + + espRgbColor_t getColorRGB(); + +setColorHSV +^^^^^^^^^^^ + +Sets the color using HSV values. + +.. code-block:: arduino + + bool setColorHSV(espHsvColor_t hsvColor); + +getColorHSV +^^^^^^^^^^^ + +Gets the current color as HSV values. + +.. code-block:: arduino + + espHsvColor_t getColorHSV(); + +Brightness Control +****************** + +setBrightness +^^^^^^^^^^^^^ + +Sets the brightness level. + +.. code-block:: arduino + + bool setBrightness(uint8_t newBrightness); + +getBrightness +^^^^^^^^^^^^^ + +Gets the current brightness level. + +.. code-block:: arduino + + uint8_t getBrightness(); + +Color Temperature Control +************************* + +setColorTemperature +^^^^^^^^^^^^^^^^^^^^ + +Sets the color temperature. + +.. code-block:: arduino + + bool setColorTemperature(uint16_t newTemperature); + +getColorTemperature +^^^^^^^^^^^^^^^^^^^ + +Gets the current color temperature. + +.. code-block:: arduino + + uint16_t getColorTemperature(); + +Event Handling +************** + +onChange +^^^^^^^^ + +Sets a callback for when any parameter changes. + +.. code-block:: arduino + + void onChange(EndPointCB onChangeCB); + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(bool newState, espHsvColor_t newColor, uint8_t newBrightness, uint16_t newTemperature); + +onChangeOnOff +^^^^^^^^^^^^^ + +Sets a callback for on/off state changes. + +.. code-block:: arduino + + void onChangeOnOff(EndPointOnOffCB onChangeCB); + +onChangeBrightness +^^^^^^^^^^^^^^^^^^ + +Sets a callback for brightness changes. + +.. code-block:: arduino + + void onChangeBrightness(EndPointBrightnessCB onChangeCB); + +onChangeColorHSV +^^^^^^^^^^^^^^^^ + +Sets a callback for color changes. + +.. code-block:: arduino + + void onChangeColorHSV(EndPointRGBColorCB onChangeCB); + +onChangeColorTemperature +^^^^^^^^^^^^^^^^^^^^^^^^ + +Sets a callback for color temperature changes. + +.. code-block:: arduino + + void onChangeColorTemperature(EndPointTemperatureCB onChangeCB); + +updateAccessory +^^^^^^^^^^^^^^^ + +Updates the physical light state using current Matter internal state. + +.. code-block:: arduino + + void updateAccessory(); + +Operators +********* + +bool operator +^^^^^^^^^^^^^ + +Returns current on/off state. + +.. code-block:: arduino + + operator bool(); + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Turns light on or off. + +.. code-block:: arduino + + void operator=(bool state); + +Example +------- + +Enhanced Color Light +******************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterEnhancedColorLight/MatterEnhancedColorLight.ino + :language: arduino diff --git a/docs/en/matter/ep_fan.rst b/docs/en/matter/ep_fan.rst new file mode 100644 index 00000000000..8abc9d2933e --- /dev/null +++ b/docs/en/matter/ep_fan.rst @@ -0,0 +1,292 @@ +######### +MatterFan +######### + +About +----- + +The ``MatterFan`` class provides a fan endpoint for Matter networks with speed and mode control. This endpoint implements the Matter fan control standard. + +**Features:** +* On/off control +* Fan speed control (0-100%) +* Fan mode control (OFF, LOW, MEDIUM, HIGH, ON, AUTO, SMART) +* Fan mode sequence configuration +* Callback support for state, speed, and mode changes +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Smart ceiling fans +* Exhaust fans +* Ventilation fans +* Fan speed controllers +* HVAC fan control + +API Reference +------------- + +Constructor +*********** + +MatterFan +^^^^^^^^^ + +Creates a new Matter fan endpoint. + +.. code-block:: arduino + + MatterFan(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter fan endpoint with optional initial speed, mode, and mode sequence. + +.. code-block:: arduino + + bool begin(uint8_t percent = 0, FanMode_t fanMode = FAN_MODE_OFF, FanModeSequence_t fanModeSeq = FAN_MODE_SEQ_OFF_HIGH); + +* ``percent`` - Initial speed percentage (0-100, default: 0) +* ``fanMode`` - Initial fan mode (default: ``FAN_MODE_OFF``) +* ``fanModeSeq`` - Fan mode sequence configuration (default: ``FAN_MODE_SEQ_OFF_HIGH``) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter fan events. + +.. code-block:: arduino + + void end(); + +Constants +********* + +MAX_SPEED +^^^^^^^^^ + +Maximum speed value (100%). + +.. code-block:: arduino + + static const uint8_t MAX_SPEED = 100; + +MIN_SPEED +^^^^^^^^^ + +Minimum speed value (1%). + +.. code-block:: arduino + + static const uint8_t MIN_SPEED = 1; + +OFF_SPEED +^^^^^^^^^ + +Speed value when fan is off (0%). + +.. code-block:: arduino + + static const uint8_t OFF_SPEED = 0; + +Fan Modes +********* + +FanMode_t +^^^^^^^^^ + +Fan mode enumeration: + +* ``FAN_MODE_OFF`` - Fan is off +* ``FAN_MODE_LOW`` - Low speed +* ``FAN_MODE_MEDIUM`` - Medium speed +* ``FAN_MODE_HIGH`` - High speed +* ``FAN_MODE_ON`` - Fan is on +* ``FAN_MODE_AUTO`` - Auto mode +* ``FAN_MODE_SMART`` - Smart mode + +Fan Mode Sequences +****************** + +FanModeSequence_t +^^^^^^^^^^^^^^^^^ + +Fan mode sequence enumeration: + +* ``FAN_MODE_SEQ_OFF_LOW_MED_HIGH`` - OFF, LOW, MEDIUM, HIGH +* ``FAN_MODE_SEQ_OFF_LOW_HIGH`` - OFF, LOW, HIGH +* ``FAN_MODE_SEQ_OFF_LOW_MED_HIGH_AUTO`` - OFF, LOW, MEDIUM, HIGH, AUTO +* ``FAN_MODE_SEQ_OFF_LOW_HIGH_AUTO`` - OFF, LOW, HIGH, AUTO +* ``FAN_MODE_SEQ_OFF_HIGH_AUTO`` - OFF, HIGH, AUTO +* ``FAN_MODE_SEQ_OFF_HIGH`` - OFF, HIGH + +On/Off Control +************** + +setOnOff +^^^^^^^^ + +Sets the on/off state of the fan. + +.. code-block:: arduino + + bool setOnOff(bool newState, bool performUpdate = true); + +* ``newState`` - New state (``true`` = on, ``false`` = off) +* ``performUpdate`` - Perform update after setting (default: ``true``) + +getOnOff +^^^^^^^^ + +Gets the current on/off state. + +.. code-block:: arduino + + bool getOnOff(); + +toggle +^^^^^^ + +Toggles the on/off state. + +.. code-block:: arduino + + bool toggle(bool performUpdate = true); + +Speed Control +************* + +setSpeedPercent +^^^^^^^^^^^^^^^ + +Sets the fan speed percentage. + +.. code-block:: arduino + + bool setSpeedPercent(uint8_t newPercent, bool performUpdate = true); + +* ``newPercent`` - Speed percentage (0-100) +* ``performUpdate`` - Perform update after setting (default: ``true``) + +getSpeedPercent +^^^^^^^^^^^^^^^ + +Gets the current speed percentage. + +.. code-block:: arduino + + uint8_t getSpeedPercent(); + +Mode Control +************ + +setMode +^^^^^^^ + +Sets the fan mode. + +.. code-block:: arduino + + bool setMode(FanMode_t newMode, bool performUpdate = true); + +* ``newMode`` - Fan mode to set +* ``performUpdate`` - Perform update after setting (default: ``true``) + +getMode +^^^^^^^ + +Gets the current fan mode. + +.. code-block:: arduino + + FanMode_t getMode(); + +getFanModeString +^^^^^^^^^^^^^^^^ + +Gets a friendly string for the fan mode. + +.. code-block:: arduino + + static const char *getFanModeString(uint8_t mode); + +Event Handling +************** + +onChange +^^^^^^^^ + +Sets a callback for when any parameter changes. + +.. code-block:: arduino + + void onChange(EndPointCB onChangeCB); + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(FanMode_t newMode, uint8_t newPercent); + +onChangeMode +^^^^^^^^^^^^ + +Sets a callback for mode changes. + +.. code-block:: arduino + + void onChangeMode(EndPointModeCB onChangeCB); + +onChangeSpeedPercent +^^^^^^^^^^^^^^^^^^^^ + +Sets a callback for speed changes. + +.. code-block:: arduino + + void onChangeSpeedPercent(EndPointSpeedCB onChangeCB); + +updateAccessory +^^^^^^^^^^^^^^^ + +Updates the physical fan state using current Matter internal state. + +.. code-block:: arduino + + void updateAccessory(); + +Operators +********* + +uint8_t operator +^^^^^^^^^^^^^^^^ + +Returns the current speed percentage. + +.. code-block:: arduino + + operator uint8_t(); + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Sets the speed percentage. + +.. code-block:: arduino + + void operator=(uint8_t speedPercent); + +Example +------- + +Fan Control +*********** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterFan/MatterFan.ino + :language: arduino diff --git a/docs/en/matter/ep_generic_switch.rst b/docs/en/matter/ep_generic_switch.rst new file mode 100644 index 00000000000..902133dce4e --- /dev/null +++ b/docs/en/matter/ep_generic_switch.rst @@ -0,0 +1,94 @@ +################### +MatterGenericSwitch +################### + +About +----- + +The ``MatterGenericSwitch`` class provides a generic switch endpoint for Matter networks. This endpoint works as a smart button that can send click events to the Matter controller, enabling automation triggers. + +**Features:** +* Click event reporting to Matter controller +* Simple button functionality +* Automation trigger support +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Smart buttons +* Automation triggers +* Remote controls +* Scene activation buttons +* Event generators for smart home automation + +API Reference +------------- + +Constructor +*********** + +MatterGenericSwitch +^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter generic switch endpoint. + +.. code-block:: arduino + + MatterGenericSwitch(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter generic switch endpoint. + +.. code-block:: arduino + + bool begin(); + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter switch events. + +.. code-block:: arduino + + void end(); + +Event Generation +**************** + +click +^^^^^ + +Sends a click event to the Matter controller. + +.. code-block:: arduino + + void click(); + +This function sends a click event that can be used to trigger automations in smart home apps. The event is sent immediately and the Matter controller will receive it. + +**Usage Example:** + +When a physical button is pressed and released, call this function to send the click event: + +.. code-block:: arduino + + if (buttonReleased) { + mySwitch.click(); + Serial.println("Click event sent to Matter controller"); + } + +Example +------- + +Generic Switch (Smart Button) +***************************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterSmartButton/MatterSmartButton.ino + :language: arduino diff --git a/docs/en/matter/ep_humidity_sensor.rst b/docs/en/matter/ep_humidity_sensor.rst new file mode 100644 index 00000000000..d680f157c84 --- /dev/null +++ b/docs/en/matter/ep_humidity_sensor.rst @@ -0,0 +1,136 @@ +#################### +MatterHumiditySensor +#################### + +About +----- + +The ``MatterHumiditySensor`` class provides a humidity sensor endpoint for Matter networks. This endpoint implements the Matter humidity sensing standard for read-only humidity reporting. + +**Features:** +* Humidity measurement reporting (0-100%) +* 1/100th percent precision +* Read-only sensor (no control functionality) +* Automatic humidity updates +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Room humidity monitoring +* Weather stations +* HVAC systems +* Humidity logging +* Smart home climate monitoring + +API Reference +------------- + +Constructor +*********** + +MatterHumiditySensor +^^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter humidity sensor endpoint. + +.. code-block:: arduino + + MatterHumiditySensor(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter humidity sensor endpoint with an initial humidity value. + +.. code-block:: arduino + + bool begin(double humidityPercent = 0.00); + +* ``humidityPercent`` - Initial humidity percentage (0.0-100.0, default: 0.00) + +This function will return ``true`` if successful, ``false`` otherwise. + +**Note:** The implementation stores humidity with 1/100th percent precision internally. Values must be between 0.0 and 100.0. + +end +^^^ + +Stops processing Matter humidity sensor events. + +.. code-block:: arduino + + void end(); + +Humidity Control +**************** + +setHumidity +^^^^^^^^^^^ + +Sets the reported humidity percentage. + +.. code-block:: arduino + + bool setHumidity(double humidityPercent); + +* ``humidityPercent`` - Humidity percentage (0.0-100.0) + +This function will return ``true`` if successful, ``false`` otherwise. + +**Note:** Humidity is stored with 1/100th percent precision. Values outside the 0.0-100.0 range will be rejected. + +getHumidity +^^^^^^^^^^^ + +Gets the current reported humidity percentage. + +.. code-block:: arduino + + double getHumidity(); + +This function will return the humidity percentage with 1/100th percent precision. + +Operators +********* + +double operator +^^^^^^^^^^^^^^^ + +Returns the current humidity percentage. + +.. code-block:: arduino + + operator double(); + +Example: + +.. code-block:: arduino + + double humidity = mySensor; // Get current humidity + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Sets the humidity percentage. + +.. code-block:: arduino + + void operator=(double humidityPercent); + +Example: + +.. code-block:: arduino + + mySensor = 45.5; // Set humidity to 45.5% + +Example +------- + +Humidity Sensor +*************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterHumiditySensor/MatterHumiditySensor.ino + :language: arduino diff --git a/docs/en/matter/ep_occupancy_sensor.rst b/docs/en/matter/ep_occupancy_sensor.rst new file mode 100644 index 00000000000..456cafccefe --- /dev/null +++ b/docs/en/matter/ep_occupancy_sensor.rst @@ -0,0 +1,152 @@ +##################### +MatterOccupancySensor +##################### + +About +----- + +The ``MatterOccupancySensor`` class provides an occupancy sensor endpoint for Matter networks. This endpoint implements the Matter occupancy sensing standard for detecting occupied/unoccupied states (e.g., motion sensors, PIR sensors). + +**Features:** +* Occupancy state reporting (occupied/unoccupied) +* Multiple sensor type support (PIR, Ultrasonic, Physical Contact) +* Simple boolean state +* Read-only sensor (no control functionality) +* Automatic state updates +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Motion sensors (PIR) +* Occupancy detection +* Security systems +* Smart lighting automation +* Energy management (turn off lights when unoccupied) + +API Reference +------------- + +Constructor +*********** + +MatterOccupancySensor +^^^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter occupancy sensor endpoint. + +.. code-block:: arduino + + MatterOccupancySensor(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter occupancy sensor endpoint with an initial occupancy state and sensor type. + +.. code-block:: arduino + + bool begin(bool _occupancyState = false, OccupancySensorType_t _occupancySensorType = OCCUPANCY_SENSOR_TYPE_PIR); + +* ``_occupancyState`` - Initial occupancy state (``true`` = occupied, ``false`` = unoccupied, default: ``false``) +* ``_occupancySensorType`` - Sensor type (default: ``OCCUPANCY_SENSOR_TYPE_PIR``) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter occupancy sensor events. + +.. code-block:: arduino + + void end(); + +Sensor Types +************ + +OccupancySensorType_t +^^^^^^^^^^^^^^^^^^^^^^ + +Occupancy sensor type enumeration: + +* ``OCCUPANCY_SENSOR_TYPE_PIR`` - Passive Infrared (PIR) sensor +* ``OCCUPANCY_SENSOR_TYPE_ULTRASONIC`` - Ultrasonic sensor +* ``OCCUPANCY_SENSOR_TYPE_PIR_AND_ULTRASONIC`` - Combined PIR and Ultrasonic +* ``OCCUPANCY_SENSOR_TYPE_PHYSICAL_CONTACT`` - Physical contact sensor + +Occupancy State Control +*********************** + +setOccupancy +^^^^^^^^^^^^ + +Sets the occupancy state. + +.. code-block:: arduino + + bool setOccupancy(bool _occupancyState); + +* ``_occupancyState`` - Occupancy state (``true`` = occupied, ``false`` = unoccupied) + +This function will return ``true`` if successful, ``false`` otherwise. + +getOccupancy +^^^^^^^^^^^^ + +Gets the current occupancy state. + +.. code-block:: arduino + + bool getOccupancy(); + +This function will return ``true`` if occupied, ``false`` if unoccupied. + +Operators +********* + +bool operator +^^^^^^^^^^^^^ + +Returns the current occupancy state. + +.. code-block:: arduino + + operator bool(); + +Example: + +.. code-block:: arduino + + if (mySensor) { + Serial.println("Room is occupied"); + } else { + Serial.println("Room is unoccupied"); + } + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Sets the occupancy state. + +.. code-block:: arduino + + void operator=(bool _occupancyState); + +Example: + +.. code-block:: arduino + + mySensor = true; // Set to occupied + mySensor = false; // Set to unoccupied + +Example +------- + +Occupancy Sensor +**************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterOccupancySensor/MatterOccupancySensor.ino + :language: arduino diff --git a/docs/en/matter/ep_on_off_light.rst b/docs/en/matter/ep_on_off_light.rst new file mode 100644 index 00000000000..8d30851ea1b --- /dev/null +++ b/docs/en/matter/ep_on_off_light.rst @@ -0,0 +1,190 @@ +################ +MatterOnOffLight +################ + +About +----- + +The ``MatterOnOffLight`` class provides a simple on/off light endpoint for Matter networks. This endpoint implements the Matter lighting standard for basic light control without dimming or color features. + +**Features:** +* Simple on/off control +* State persistence support +* Callback support for state changes +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Simple smart lights +* On/off switches +* Basic lighting control +* Smart home automation + +API Reference +------------- + +Constructor +*********** + +MatterOnOffLight +^^^^^^^^^^^^^^^^ + +Creates a new Matter on/off light endpoint. + +.. code-block:: arduino + + MatterOnOffLight(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter on/off light endpoint with an optional initial state. + +.. code-block:: arduino + + bool begin(bool initialState = false); + +* ``initialState`` - Initial on/off state (``true`` = on, ``false`` = off, default: ``false``) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter light events. This will just stop processing Light Matter events but won't remove the endpoint. + +.. code-block:: arduino + + void end(); + +On/Off Control +************** + +setOnOff +^^^^^^^^ + +Sets the on/off state of the light. + +.. code-block:: arduino + + bool setOnOff(bool newState); + +* ``newState`` - New state (``true`` = on, ``false`` = off) + +This function will return ``true`` if successful, ``false`` otherwise. + +getOnOff +^^^^^^^^ + +Gets the current on/off state of the light. + +.. code-block:: arduino + + bool getOnOff(); + +This function will return ``true`` if the light is on, ``false`` if off. + +toggle +^^^^^^ + +Toggles the on/off state of the light. + +.. code-block:: arduino + + bool toggle(); + +This function will return ``true`` if successful, ``false`` otherwise. + +Operators +********* + +bool operator +^^^^^^^^^^^^^ + +Returns the current on/off state of the light. + +.. code-block:: arduino + + operator bool(); + +Example: + +.. code-block:: arduino + + if (myLight) { + Serial.println("Light is on"); + } + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Turns the light on or off. + +.. code-block:: arduino + + void operator=(bool state); + +Example: + +.. code-block:: arduino + + myLight = true; // Turn light on + myLight = false; // Turn light off + +Event Handling +************** + +onChange +^^^^^^^^ + +Sets a callback function to be called when the light state changes. + +.. code-block:: arduino + + void onChange(EndPointCB onChangeCB); + +* ``onChangeCB`` - Function to call when state changes + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(bool newState); + +* ``newState`` - New on/off state (``true`` = on, ``false`` = off) + +The callback should return ``true`` if the change was handled successfully. + +onChangeOnOff +^^^^^^^^^^^^^ + +Sets a callback function to be called when the on/off state changes (same as ``onChange``). + +.. code-block:: arduino + + void onChangeOnOff(EndPointCB onChangeCB); + +* ``onChangeCB`` - Function to call when state changes + +updateAccessory +^^^^^^^^^^^^^^^ + +Updates the state of the light using the current Matter Light internal state. It is necessary to set a user callback function using ``onChange()`` to handle the physical light state. + +.. code-block:: arduino + + void updateAccessory(); + +This function will call the registered callback with the current state. + +Example +------- + +Basic On/Off Light +****************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterOnOffLight/MatterOnOffLight.ino + :language: arduino diff --git a/docs/en/matter/ep_on_off_plugin.rst b/docs/en/matter/ep_on_off_plugin.rst new file mode 100644 index 00000000000..dee2b040492 --- /dev/null +++ b/docs/en/matter/ep_on_off_plugin.rst @@ -0,0 +1,187 @@ +################# +MatterOnOffPlugin +################# + +About +----- + +The ``MatterOnOffPlugin`` class provides an on/off plugin unit endpoint for Matter networks. This endpoint implements the Matter on/off plugin standard for controlling power outlets, relays, and other on/off devices. + +**Features:** +* Simple on/off control +* State persistence support +* Callback support for state changes +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Smart power outlets +* Relay control +* Power switches +* Smart plugs +* On/off device control + +API Reference +------------- + +Constructor +*********** + +MatterOnOffPlugin +^^^^^^^^^^^^^^^^^ + +Creates a new Matter on/off plugin endpoint. + +.. code-block:: arduino + + MatterOnOffPlugin(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter on/off plugin endpoint with an optional initial state. + +.. code-block:: arduino + + bool begin(bool initialState = false); + +* ``initialState`` - Initial on/off state (``true`` = on, ``false`` = off, default: ``false``) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter plugin events. + +.. code-block:: arduino + + void end(); + +On/Off Control +************** + +setOnOff +^^^^^^^^ + +Sets the on/off state of the plugin. + +.. code-block:: arduino + + bool setOnOff(bool newState); + +* ``newState`` - New state (``true`` = on, ``false`` = off) + +This function will return ``true`` if successful, ``false`` otherwise. + +getOnOff +^^^^^^^^ + +Gets the current on/off state of the plugin. + +.. code-block:: arduino + + bool getOnOff(); + +This function will return ``true`` if the plugin is on, ``false`` if off. + +toggle +^^^^^^ + +Toggles the on/off state of the plugin. + +.. code-block:: arduino + + bool toggle(); + +This function will return ``true`` if successful, ``false`` otherwise. + +Operators +********* + +bool operator +^^^^^^^^^^^^^ + +Returns the current on/off state of the plugin. + +.. code-block:: arduino + + operator bool(); + +Example: + +.. code-block:: arduino + + if (myPlugin) { + Serial.println("Plugin is on"); + } + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Turns the plugin on or off. + +.. code-block:: arduino + + void operator=(bool state); + +Example: + +.. code-block:: arduino + + myPlugin = true; // Turn plugin on + myPlugin = false; // Turn plugin off + +Event Handling +************** + +onChange +^^^^^^^^ + +Sets a callback function to be called when the plugin state changes. + +.. code-block:: arduino + + void onChange(EndPointCB onChangeCB); + +* ``onChangeCB`` - Function to call when state changes + +The callback signature is: + +.. code-block:: arduino + + bool onChangeCallback(bool newState); + +* ``newState`` - New on/off state (``true`` = on, ``false`` = off) + +onChangeOnOff +^^^^^^^^^^^^^ + +Sets a callback function to be called when the on/off state changes (same as ``onChange``). + +.. code-block:: arduino + + void onChangeOnOff(EndPointCB onChangeCB); + +updateAccessory +^^^^^^^^^^^^^^^ + +Updates the state of the plugin using the current Matter Plugin internal state. + +.. code-block:: arduino + + void updateAccessory(); + +This function will call the registered callback with the current state. + +Example +------- + +On/Off Plugin +************* + +.. literalinclude:: ../../../libraries/Matter/examples/MatterOnOffPlugin/MatterOnOffPlugin.ino + :language: arduino diff --git a/docs/en/matter/ep_pressure_sensor.rst b/docs/en/matter/ep_pressure_sensor.rst new file mode 100644 index 00000000000..713d43c5d7e --- /dev/null +++ b/docs/en/matter/ep_pressure_sensor.rst @@ -0,0 +1,133 @@ +#################### +MatterPressureSensor +#################### + +About +----- + +The ``MatterPressureSensor`` class provides a pressure sensor endpoint for Matter networks. This endpoint implements the Matter pressure sensing standard for read-only pressure reporting. + +**Features:** +* Pressure measurement reporting in hectopascals (hPa) +* Read-only sensor (no control functionality) +* Automatic pressure updates +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Atmospheric pressure monitoring +* Weather stations +* Barometric pressure sensors +* Pressure logging +* Smart home weather monitoring + +API Reference +------------- + +Constructor +*********** + +MatterPressureSensor +^^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter pressure sensor endpoint. + +.. code-block:: arduino + + MatterPressureSensor(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter pressure sensor endpoint with an initial pressure value. + +.. code-block:: arduino + + bool begin(double pressure = 0.00); + +* ``pressure`` - Initial pressure in hectopascals (hPa, default: 0.00) + +This function will return ``true`` if successful, ``false`` otherwise. + +**Note:** Typical atmospheric pressure at sea level is around 1013.25 hPa. Pressure values typically range from 950-1050 hPa. + +end +^^^ + +Stops processing Matter pressure sensor events. + +.. code-block:: arduino + + void end(); + +Pressure Control +**************** + +setPressure +^^^^^^^^^^^ + +Sets the reported pressure value. + +.. code-block:: arduino + + bool setPressure(double pressure); + +* ``pressure`` - Pressure in hectopascals (hPa) + +This function will return ``true`` if successful, ``false`` otherwise. + +getPressure +^^^^^^^^^^^ + +Gets the current reported pressure value. + +.. code-block:: arduino + + double getPressure(); + +This function will return the pressure in hectopascals (hPa). + +Operators +********* + +double operator +^^^^^^^^^^^^^^^ + +Returns the current pressure. + +.. code-block:: arduino + + operator double(); + +Example: + +.. code-block:: arduino + + double pressure = mySensor; // Get current pressure + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Sets the pressure value. + +.. code-block:: arduino + + void operator=(double pressure); + +Example: + +.. code-block:: arduino + + mySensor = 1013.25; // Set pressure to 1013.25 hPa + +Example +------- + +Pressure Sensor +*************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterPressureSensor/MatterPressureSensor.ino + :language: arduino diff --git a/docs/en/matter/ep_temperature_sensor.rst b/docs/en/matter/ep_temperature_sensor.rst new file mode 100644 index 00000000000..0202ba54395 --- /dev/null +++ b/docs/en/matter/ep_temperature_sensor.rst @@ -0,0 +1,136 @@ +####################### +MatterTemperatureSensor +####################### + +About +----- + +The ``MatterTemperatureSensor`` class provides a temperature sensor endpoint for Matter networks. This endpoint implements the Matter temperature sensing standard for read-only temperature reporting. + +**Features:** +* Temperature measurement reporting in Celsius +* 1/100th degree Celsius precision +* Read-only sensor (no control functionality) +* Automatic temperature updates +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* Room temperature monitoring +* Weather stations +* HVAC systems +* Temperature logging +* Smart home climate monitoring + +API Reference +------------- + +Constructor +*********** + +MatterTemperatureSensor +^^^^^^^^^^^^^^^^^^^^^^^ + +Creates a new Matter temperature sensor endpoint. + +.. code-block:: arduino + + MatterTemperatureSensor(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter temperature sensor endpoint with an initial temperature value. + +.. code-block:: arduino + + bool begin(double temperature = 0.00); + +* ``temperature`` - Initial temperature in Celsius (default: 0.00) + +This function will return ``true`` if successful, ``false`` otherwise. + +**Note:** The implementation stores temperature with 1/100th degree Celsius precision internally. + +end +^^^ + +Stops processing Matter temperature sensor events. + +.. code-block:: arduino + + void end(); + +Temperature Control +******************* + +setTemperature +^^^^^^^^^^^^^^ + +Sets the reported temperature value. + +.. code-block:: arduino + + bool setTemperature(double temperature); + +* ``temperature`` - Temperature in Celsius + +This function will return ``true`` if successful, ``false`` otherwise. + +**Note:** Temperature is stored with 1/100th degree Celsius precision. The valid range is typically -273.15°C (absolute zero) to 327.67°C. + +getTemperature +^^^^^^^^^^^^^^ + +Gets the current reported temperature value. + +.. code-block:: arduino + + double getTemperature(); + +This function will return the temperature in Celsius with 1/100th degree precision. + +Operators +********* + +double operator +^^^^^^^^^^^^^^^ + +Returns the current temperature. + +.. code-block:: arduino + + operator double(); + +Example: + +.. code-block:: arduino + + double temp = mySensor; // Get current temperature + +Assignment operator +^^^^^^^^^^^^^^^^^^^ + +Sets the temperature value. + +.. code-block:: arduino + + void operator=(double temperature); + +Example: + +.. code-block:: arduino + + mySensor = 25.5; // Set temperature to 25.5°C + +Example +------- + +Temperature Sensor +****************** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterTemperatureSensor/MatterTemperatureSensor.ino + :language: arduino diff --git a/docs/en/matter/ep_thermostat.rst b/docs/en/matter/ep_thermostat.rst new file mode 100644 index 00000000000..1a736383443 --- /dev/null +++ b/docs/en/matter/ep_thermostat.rst @@ -0,0 +1,310 @@ +################ +MatterThermostat +################ + +About +----- + +The ``MatterThermostat`` class provides a thermostat endpoint for Matter networks with temperature control, setpoints, and multiple operating modes. This endpoint implements the Matter thermostat standard. + +**Features:** +* Multiple operating modes (OFF, HEAT, COOL, AUTO, etc.) +* Heating and cooling setpoint control +* Local temperature reporting +* Automatic temperature regulation +* Deadband control for AUTO mode +* Callback support for mode, temperature, and setpoint changes +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Matter standard compliance + +**Use Cases:** +* HVAC systems +* Smart thermostats +* Temperature control systems +* Climate control automation +* Energy management systems + +API Reference +------------- + +Constructor +*********** + +MatterThermostat +^^^^^^^^^^^^^^^^ + +Creates a new Matter thermostat endpoint. + +.. code-block:: arduino + + MatterThermostat(); + +Initialization +************** + +begin +^^^^^ + +Initializes the Matter thermostat endpoint with control sequence and auto mode settings. + +.. code-block:: arduino + + bool begin(ControlSequenceOfOperation_t controlSequence = THERMOSTAT_SEQ_OP_COOLING, ThermostatAutoMode_t autoMode = THERMOSTAT_AUTO_MODE_DISABLED); + +* ``controlSequence`` - Control sequence of operation (default: ``THERMOSTAT_SEQ_OP_COOLING``) +* ``autoMode`` - Auto mode enabled/disabled (default: ``THERMOSTAT_AUTO_MODE_DISABLED``) + +This function will return ``true`` if successful, ``false`` otherwise. + +end +^^^ + +Stops processing Matter thermostat events. + +.. code-block:: arduino + + void end(); + +Control Sequences +***************** + +ControlSequenceOfOperation_t +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Control sequence enumeration: + +* ``THERMOSTAT_SEQ_OP_COOLING`` - Cooling only +* ``THERMOSTAT_SEQ_OP_COOLING_REHEAT`` - Cooling with reheat +* ``THERMOSTAT_SEQ_OP_HEATING`` - Heating only +* ``THERMOSTAT_SEQ_OP_HEATING_REHEAT`` - Heating with reheat +* ``THERMOSTAT_SEQ_OP_COOLING_HEATING`` - Cooling and heating +* ``THERMOSTAT_SEQ_OP_COOLING_HEATING_REHEAT`` - Cooling and heating with reheat + +Thermostat Modes +**************** + +ThermostatMode_t +^^^^^^^^^^^^^^^^ + +Thermostat mode enumeration: + +* ``THERMOSTAT_MODE_OFF`` - Off +* ``THERMOSTAT_MODE_AUTO`` - Auto mode +* ``THERMOSTAT_MODE_COOL`` - Cooling mode +* ``THERMOSTAT_MODE_HEAT`` - Heating mode +* ``THERMOSTAT_MODE_EMERGENCY_HEAT`` - Emergency heat +* ``THERMOSTAT_MODE_PRECOOLING`` - Precooling +* ``THERMOSTAT_MODE_FAN_ONLY`` - Fan only +* ``THERMOSTAT_MODE_DRY`` - Dry mode +* ``THERMOSTAT_MODE_SLEEP`` - Sleep mode + +Mode Control +************ + +setMode +^^^^^^^ + +Sets the thermostat mode. + +.. code-block:: arduino + + bool setMode(ThermostatMode_t mode); + +getMode +^^^^^^^ + +Gets the current thermostat mode. + +.. code-block:: arduino + + ThermostatMode_t getMode(); + +getThermostatModeString +^^^^^^^^^^^^^^^^^^^^^^^ + +Gets a friendly string for the thermostat mode. + +.. code-block:: arduino + + static const char *getThermostatModeString(uint8_t mode); + +Temperature Control +******************* + +setLocalTemperature +^^^^^^^^^^^^^^^^^^^ + +Sets the local temperature reading. + +.. code-block:: arduino + + bool setLocalTemperature(double temperature); + +* ``temperature`` - Temperature in Celsius + +getLocalTemperature +^^^^^^^^^^^^^^^^^^^ + +Gets the current local temperature. + +.. code-block:: arduino + + double getLocalTemperature(); + +Setpoint Control +**************** + +setCoolingHeatingSetpoints +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Sets both cooling and heating setpoints. + +.. code-block:: arduino + + bool setCoolingHeatingSetpoints(double _setpointHeatingTemperature, double _setpointCoolingTemperature); + +* ``_setpointHeatingTemperature`` - Heating setpoint in Celsius (or 0xffff to keep current) +* ``_setpointCoolingTemperature`` - Cooling setpoint in Celsius (or 0xffff to keep current) + +**Note:** Heating setpoint must be lower than cooling setpoint. In AUTO mode, cooling setpoint must be at least 2.5°C higher than heating setpoint (deadband). + +setHeatingSetpoint +^^^^^^^^^^^^^^^^^^ + +Sets the heating setpoint. + +.. code-block:: arduino + + bool setHeatingSetpoint(double _setpointHeatingTemperature); + +getHeatingSetpoint +^^^^^^^^^^^^^^^^^^ + +Gets the heating setpoint. + +.. code-block:: arduino + + double getHeatingSetpoint(); + +setCoolingSetpoint +^^^^^^^^^^^^^^^^^^ + +Sets the cooling setpoint. + +.. code-block:: arduino + + bool setCoolingSetpoint(double _setpointCoolingTemperature); + +getCoolingSetpoint +^^^^^^^^^^^^^^^^^^ + +Gets the cooling setpoint. + +.. code-block:: arduino + + double getCoolingSetpoint(); + +Setpoint Limits +*************** + +getMinHeatSetpoint +^^^^^^^^^^^^^^^^^^ + +Gets the minimum heating setpoint limit. + +.. code-block:: arduino + + float getMinHeatSetpoint(); + +getMaxHeatSetpoint +^^^^^^^^^^^^^^^^^^ + +Gets the maximum heating setpoint limit. + +.. code-block:: arduino + + float getMaxHeatSetpoint(); + +getMinCoolSetpoint +^^^^^^^^^^^^^^^^^^ + +Gets the minimum cooling setpoint limit. + +.. code-block:: arduino + + float getMinCoolSetpoint(); + +getMaxCoolSetpoint +^^^^^^^^^^^^^^^^^^ + +Gets the maximum cooling setpoint limit. + +.. code-block:: arduino + + float getMaxCoolSetpoint(); + +getDeadBand +^^^^^^^^^^^ + +Gets the deadband value (minimum difference between heating and cooling setpoints in AUTO mode). + +.. code-block:: arduino + + float getDeadBand(); + +Event Handling +************** + +onChange +^^^^^^^^ + +Sets a callback for when any parameter changes. + +.. code-block:: arduino + + void onChange(EndPointCB onChangeCB); + +onChangeMode +^^^^^^^^^^^^ + +Sets a callback for mode changes. + +.. code-block:: arduino + + void onChangeMode(EndPointModeCB onChangeCB); + +onChangeLocalTemperature +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Sets a callback for local temperature changes. + +.. code-block:: arduino + + void onChangeLocalTemperature(EndPointTemperatureCB onChangeCB); + +onChangeCoolingSetpoint +^^^^^^^^^^^^^^^^^^^^^^^ + +Sets a callback for cooling setpoint changes. + +.. code-block:: arduino + + void onChangeCoolingSetpoint(EndPointCoolingSetpointCB onChangeCB); + +onChangeHeatingSetpoint +^^^^^^^^^^^^^^^^^^^^^^^ + +Sets a callback for heating setpoint changes. + +.. code-block:: arduino + + void onChangeHeatingSetpoint(EndPointHeatingSetpointCB onChangeCB); + +Example +------- + +Thermostat +********** + +.. literalinclude:: ../../../libraries/Matter/examples/MatterThermostat/MatterThermostat.ino + :language: arduino diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst new file mode 100644 index 00000000000..7ed1afaeac6 --- /dev/null +++ b/docs/en/matter/matter.rst @@ -0,0 +1,216 @@ +###### +Matter +###### + +About +----- + +The Matter library provides support for creating Matter-compatible devices including: + +* Support for Wi-Fi and Thread connectivity +* Matter commissioning via QR code or manual pairing code +* Multiple endpoint types for various device categories +* Event monitoring and callback support +* Integration with Apple HomeKit, Amazon Alexa, and Google Home +* Smart home ecosystem compatibility + +The Matter library is built on top of `ESP Matter SDK `_ and provides a high-level Arduino-style interface for creating Matter devices. + +Matter Protocol Overview +************************ + +Matter (formerly Project CHIP - Connected Home over IP) is an open-source connectivity standard for smart home devices. It enables seamless communication between devices from different manufacturers, allowing them to work together within a single ecosystem. + +**Key Features:** + +* **Multi-Protocol Support**: Works over Wi-Fi, Thread, and Ethernet +* **Interoperability**: Devices from different manufacturers work together +* **Security**: Built-in security features including encryption and authentication +* **Local Control**: Devices can communicate locally without requiring cloud connectivity +* **Simple Setup**: Easy commissioning via QR code or pairing code + +Matter Network Topology +*********************** + +.. code-block:: text + + ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ + │ Matter Hub │◄─────►│ Wi-Fi Router │◄─────►│ ESP Border │ + │ (HomePod etc) │ │ │ │ Border Router │ + └─────────────────┘ └──────────────────┘ └─────────────────┘ + │ │ │ + │ ▼ │ + │ ┌─────────────────┐ │ + │ │ Matter Device │ │ + │ │ (via Wi-Fi) │ │ + │ └─────────────────┘ │ + │ │ + ▼ ▼ + ┌─────────────────┐ ┌─────────────────┐ + │ Matter Device │ │ Matter Device │ + │ (via Wi-Fi) │ │ (via Thread) │ + └─────────────────┘ └─────────────────┘ + + +**Network Interfaces:** + +* **Wi-Fi**: High-bandwidth connection for devices that require constant power +* **Thread**: Low-power mesh networking for battery-operated devices +* **Ethernet**: Wired connection for stationary devices + +Matter Library Structure +------------------------ + +**The library is split into three main components:** + +* ``Matter``: The main class that manages the Matter network and device commissioning +* ``MatterEndPoint``: The base class for all Matter endpoints, which provides common functionality for all endpoint types +* ``Specific endpoint classes``: The classes for all Matter endpoints, which provides the specific functionality for each endpoint type + +Matter +****** + +The ``Matter`` class is the main entry point for all Matter operations. It serves as the central manager that handles: + +* **Device Commissioning**: Managing the commissioning process via QR code or manual pairing code +* **Network Connectivity**: Checking and managing Wi-Fi and Thread connections +* **Event Handling**: Monitoring Matter events and device state changes +* **Device Management**: Decommissioning and factory reset functionality + +The ``Matter`` class is implemented as a singleton, meaning there's only one instance available globally. You access it directly as ``Matter`` without creating an instance. + +The ``Matter`` class provides the following key methods: + +* ``begin()``: Initializes the Matter stack +* ``isDeviceCommissioned()``: Checks if the device is commissioned +* ``isWi-FiConnected()``: Checks Wi-Fi connection status (if Wi-Fi is enabled) +* ``isThreadConnected()``: Checks Thread connection status (if Thread is enabled) +* ``isDeviceConnected()``: Checks overall device connectivity +* ``decommission()``: Factory resets the device +* ``getManualPairingCode()``: Gets the manual pairing code for commissioning +* ``getOnboardingQRCodeUrl()``: Gets the QR code URL for commissioning +* ``onEvent()``: Sets a callback for Matter events + +MatterEndPoint +************** + +The ``MatterEndPoint`` class is the base class for all Matter endpoints. It provides common functionality for all endpoint types. + +* **Endpoint Management**: Each endpoint has a unique endpoint ID for identification +* **Attribute Access**: Methods to get and set attribute values from Matter clusters +* **Identify Cluster**: Support for device identification (visual feedback) +* **Secondary Network Interfaces**: Support for multiple network interfaces (Wi-Fi, Thread, Ethernet) +* **Attribute Change Callbacks**: Base framework for handling attribute changes from Matter controllers + +.. toctree:: + :maxdepth: 2 + + matter_ep + +Specific endpoint classes +************************* + +The library provides specialized endpoint classes for different device types. Each endpoint type includes specific clusters and functionality relevant to that device category. + +**Lighting Endpoints:** + +* ``MatterOnOffLight``: Simple on/off light control +* ``MatterDimmableLight``: Light with brightness control +* ``MatterColorTemperatureLight``: Light with color temperature control +* ``MatterColorLight``: Light with RGB color control (HSV color model) +* ``MatterEnhancedColorLight``: Enhanced color light with color temperature and brightness control + +**Sensor Endpoints:** + +* ``MatterTemperatureSensor``: Temperature sensor (read-only) +* ``MatterHumiditySensor``: Humidity sensor (read-only) +* ``MatterPressureSensor``: Pressure sensor (read-only) +* ``MatterContactSensor``: Contact sensor (open/closed state) +* ``MatterOccupancySensor``: Occupancy sensor (occupied/unoccupied state) + +**Control Endpoints:** + +* ``MatterFan``: Fan with speed and mode control +* ``MatterThermostat``: Thermostat with temperature control and setpoints +* ``MatterOnOffPlugin``: On/off plugin unit (power outlet/relay) +* ``MatterGenericSwitch``: Generic switch endpoint (smart button) + +.. toctree:: + :maxdepth: 1 + :glob: + + ep_* + +Common Problems and Issues +-------------------------- + +Troubleshooting +--------------- + +Common Issues +************* + +**Device won't commission** + * Ensure the Matter hub is in pairing mode + * Check that Wi-Fi or Thread connectivity is properly configured + * Verify the QR code or pairing code is correct + * For ESP32/ESP32-S2, ensure Wi-Fi credentials are set in the code + +**Commissioning fails** + * Try factory resetting the device by calling ``Matter.decommission()`` + * Erase flash memory: ``Arduino IDE Menu`` -> ``Tools`` -> ``Erase All Flash Before Sketch Upload: "Enabled"`` + * Or use esptool: ``esptool.py --port erase_flash`` + +**Wi-Fi connection issues** + * Verify Wi-Fi credentials (SSID and password) are correct + * Check that the device is within range of the Wi-Fi router + * Ensure the Wi-Fi network is 2.4 GHz (Matter requires 2.4 GHz Wi-Fi) + +**Thread connection issues** + * Verify Thread border router is properly configured + * Check that Thread network credentials are correct + * Ensure device supports Thread (ESP32-H2, ESP32-C6 with Thread enabled) + +**Device not responding** + * Check Serial Monitor for error messages (115200 baud) + * Verify endpoint initialization with ``begin()`` method + * Ensure ``Matter.begin()`` is called after all endpoints are initialized + +**Callbacks not firing** + * Verify callback functions are registered before commissioning + * Check that callback functions are properly defined + * Ensure endpoint is properly initialized with ``begin()`` + +Factory Reset +************* + +If you have problems with commissioning or device connectivity, you can try to factory reset the device. This will erase all the Matter network settings and act as a brand new device. + +.. code-block:: arduino + + Matter.decommission(); + +This will reset the device and it will need to be commissioned again. + +Event Monitoring +**************** + +For debugging and monitoring Matter events, you can set up an event callback: + +.. code-block:: arduino + + Matter.onEvent([](matterEvent_t event, const chip::DeviceLayer::ChipDeviceEvent *eventData) { + Serial.printf("Matter Event: 0x%04X\r\n", event); + // Handle specific events + switch(event) { + case MATTER_COMMISSIONING_COMPLETE: + Serial.println("Device commissioned!"); + break; + case MATTER_WIFI_CONNECTIVITY_CHANGE: + Serial.println("Wi-Fi connectivity changed"); + break; + // ... handle other events + } + }); + +This allows you to monitor commissioning progress, connectivity changes, and other Matter events in real-time. diff --git a/docs/en/matter/matter_ep.rst b/docs/en/matter/matter_ep.rst new file mode 100644 index 00000000000..084d22e2125 --- /dev/null +++ b/docs/en/matter/matter_ep.rst @@ -0,0 +1,200 @@ +############## +MatterEndPoint +############## + +About +----- + +The ``MatterEndPoint`` class is the base class for all Matter endpoints. It provides common functionality for all endpoint types. + +* **Endpoint Management**: Each endpoint has a unique endpoint ID for identification within the Matter network +* **Attribute Access**: Methods to get and set attribute values from Matter clusters +* **Identify Cluster**: Support for device identification (visual feedback like LED blinking) +* **Secondary Network Interfaces**: Support for multiple network interfaces (Wi-Fi, Thread, Ethernet) +* **Attribute Change Callbacks**: Base framework for handling attribute changes from Matter controllers + +All Matter endpoint classes inherit from ``MatterEndPoint``, providing a consistent interface and common functionality across all device types. + +MatterEndPoint APIs +------------------- + +Endpoint Management +******************* + +getEndPointId +^^^^^^^^^^^^^ + +Gets the current Matter Accessory endpoint ID. + +.. code-block:: arduino + + uint16_t getEndPointId(); + +This function will return the endpoint number (typically 1-254). + +setEndPointId +^^^^^^^^^^^^^ + +Sets the current Matter Accessory endpoint ID. + +.. code-block:: arduino + + void setEndPointId(uint16_t ep); + +* ``ep`` - Endpoint number to set + +Secondary Network Interface +*************************** + +createSecondaryNetworkInterface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Creates a secondary network interface endpoint. This can be used for devices that support multiple network interfaces, such as Ethernet, Thread and Wi-Fi. + +.. code-block:: arduino + + bool createSecondaryNetworkInterface(); + +This function will return ``true`` if successful, ``false`` otherwise. + +getSecondaryNetworkEndPointId +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Gets the secondary network interface endpoint ID. + +.. code-block:: arduino + + uint16_t getSecondaryNetworkEndPointId(); + +This function will return the secondary network endpoint ID, or 0 if not created. + +Attribute Management +******************** + +getAttribute +^^^^^^^^^^^^ + +Gets a pointer to an attribute from its cluster ID and attribute ID. + +.. code-block:: arduino + + esp_matter::attribute_t *getAttribute(uint32_t cluster_id, uint32_t attribute_id); + +* ``cluster_id`` - Cluster ID (e.g., ``OnOff::Attributes::OnOff::Id``) +* ``attribute_id`` - Attribute ID (e.g., ``OnOff::Attributes::OnOff::Id``) + +This function will return a pointer to the attribute, or ``NULL`` if not found. + +getAttributeVal +^^^^^^^^^^^^^^^ + +Gets the value of an attribute from its cluster ID and attribute ID. + +.. code-block:: arduino + + bool getAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal); + +* ``cluster_id`` - Cluster ID +* ``attribute_id`` - Attribute ID +* ``attrVal`` - Pointer to store the attribute value + +This function will return ``true`` if successful, ``false`` otherwise. + +setAttributeVal +^^^^^^^^^^^^^^^ + +Sets the value of an attribute from its cluster ID and attribute ID. + +.. code-block:: arduino + + bool setAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal); + +* ``cluster_id`` - Cluster ID +* ``attribute_id`` - Attribute ID +* ``attrVal`` - Pointer to the attribute value to set + +This function will return ``true`` if successful, ``false`` otherwise. + +updateAttributeVal +^^^^^^^^^^^^^^^^^^ + +Updates the value of an attribute from its cluster ID. This is typically used for read-only attributes that are updated by the device itself (e.g., sensor readings). + +.. code-block:: arduino + + bool updateAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal); + +* ``cluster_id`` - Cluster ID +* ``attribute_id`` - Attribute ID +* ``attrVal`` - Pointer to the attribute value to update + +This function will return ``true`` if successful, ``false`` otherwise. + +Identify Cluster +**************** + +onIdentify +^^^^^^^^^^ + +Sets a callback function for the Identify cluster. This callback is invoked when clients interact with the Identify Cluster of a specific endpoint. + +.. code-block:: arduino + + void onIdentify(EndPointIdentifyCB onEndPointIdentifyCB); + +* ``onEndPointIdentifyCB`` - Function pointer to the callback function. The callback receives a boolean parameter indicating if identify is enabled. + +The callback signature is: + +.. code-block:: arduino + + bool identifyCallback(bool identifyIsEnabled); + +When ``identifyIsEnabled`` is ``true``, the device should provide visual feedback (e.g., blink an LED). When ``false``, the device should stop the identification feedback. + +Example usage: + +.. code-block:: arduino + + myEndpoint.onIdentify([](bool identifyIsEnabled) { + if (identifyIsEnabled) { + // Start blinking LED + digitalWrite(LED_PIN, HIGH); + } else { + // Stop blinking LED + digitalWrite(LED_PIN, LOW); + } + return true; + }); + +Attribute Change Callback +************************* + +attributeChangeCB +^^^^^^^^^^^^^^^^^ + +This function is called by the Matter internal event processor when an attribute changes. It can be overridden by the application if necessary. + +.. code-block:: arduino + + virtual bool attributeChangeCB(uint16_t endpoint_id, uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *val); + +* ``endpoint_id`` - Endpoint ID where the attribute changed +* ``cluster_id`` - Cluster ID of the changed attribute +* ``attribute_id`` - Attribute ID that changed +* ``val`` - Pointer to the new attribute value + +This function should return ``true`` if the change was handled successfully, ``false`` otherwise. + +All endpoint classes implement this function to handle attribute changes specific to their device type. You typically don't need to override this unless you need custom behavior. + +Supported Endpoints +------------------- + +The Matter library provides specialized endpoint classes that inherit from ``MatterEndPoint``. Each endpoint type includes specific clusters and functionality relevant to that device category. + +.. toctree:: + :maxdepth: 1 + :glob: + + ep_* diff --git a/libraries/Matter/src/MatterEndpoints/MatterThermostat.cpp b/libraries/Matter/src/MatterEndpoints/MatterThermostat.cpp index 6ee18ef0cc9..667929bd6ed 100644 --- a/libraries/Matter/src/MatterEndpoints/MatterThermostat.cpp +++ b/libraries/Matter/src/MatterEndpoints/MatterThermostat.cpp @@ -302,16 +302,16 @@ bool MatterThermostat::setRawTemperature(int16_t _rawTemperature, uint32_t attri return true; } -bool MatterThermostat::setCoolingHeatingSetpoints(double _setpointHeatingTemperature, double _setpointCollingTemperature) { +bool MatterThermostat::setCoolingHeatingSetpoints(double _setpointHeatingTemperature, double _setpointCoolingTemperature) { // at least one of the setpoints must be valid - bool settingCooling = _setpointCollingTemperature != (float)0xffff; + bool settingCooling = _setpointCoolingTemperature != (float)0xffff; bool settingHeating = _setpointHeatingTemperature != (float)0xffff; if (!settingCooling && !settingHeating) { log_e("Invalid Setpoints values. Set correctly at least one of them in Celsius."); return false; } int16_t _rawHeatValue = static_cast(_setpointHeatingTemperature * 100.0f); - int16_t _rawCoolValue = static_cast(_setpointCollingTemperature * 100.0f); + int16_t _rawCoolValue = static_cast(_setpointCoolingTemperature * 100.0f); // check limits for the setpoints if (settingHeating && (_rawHeatValue < kDefaultMinHeatSetpointLimit || _rawHeatValue > kDefaultMaxHeatSetpointLimit)) { @@ -323,7 +323,7 @@ bool MatterThermostat::setCoolingHeatingSetpoints(double _setpointHeatingTempera } if (settingCooling && (_rawCoolValue < kDefaultMinCoolSetpointLimit || _rawCoolValue > kDefaultMaxCoolSetpointLimit)) { log_e( - "Invalid Cooling Setpoint value: %.01fC - valid range %d..%d", _setpointCollingTemperature, kDefaultMinCoolSetpointLimit / 100, + "Invalid Cooling Setpoint value: %.01fC - valid range %d..%d", _setpointCoolingTemperature, kDefaultMinCoolSetpointLimit / 100, kDefaultMaxCoolSetpointLimit / 100 ); return false; @@ -337,7 +337,7 @@ bool MatterThermostat::setCoolingHeatingSetpoints(double _setpointHeatingTempera // only setting Cooling Setpoint if (settingCooling && !settingHeating && _rawCoolValue < (heatingSetpointTemperature + (kDefaultDeadBand * 10))) { log_e( - "AutoMode :: Invalid Cooling Setpoint value: %.01fC - must be higher or equal than %.01fC", _setpointCollingTemperature, getHeatingSetpoint() + deadband + "AutoMode :: Invalid Cooling Setpoint value: %.01fC - must be higher or equal than %.01fC", _setpointCoolingTemperature, getHeatingSetpoint() + deadband ); return false; } @@ -352,7 +352,7 @@ bool MatterThermostat::setCoolingHeatingSetpoints(double _setpointHeatingTempera if (settingCooling && settingHeating && (_rawCoolValue <= _rawHeatValue || _rawCoolValue - _rawHeatValue < kDefaultDeadBand * 10.0)) { log_e( "AutoMode :: Error - Heating Setpoint %.01fC must be lower than Cooling Setpoint %.01fC with a minimum difference of %0.1fC", - _setpointHeatingTemperature, _setpointCollingTemperature, deadband + _setpointHeatingTemperature, _setpointCoolingTemperature, deadband ); return false; } diff --git a/libraries/Matter/src/MatterEndpoints/MatterThermostat.h b/libraries/Matter/src/MatterEndpoints/MatterThermostat.h index 53df61d191e..e4fdefd34ad 100644 --- a/libraries/Matter/src/MatterEndpoints/MatterThermostat.h +++ b/libraries/Matter/src/MatterEndpoints/MatterThermostat.h @@ -101,19 +101,19 @@ class MatterThermostat : public MatterEndPoint { // Heating Setpoint must be lower than Cooling Setpoint // When using AUTO mode the Cooling Setpoint must be higher than Heating Setpoint by at least the 2.5C (deadband) // Thermostat Matter Server will enforce those rules and the Max/Min setpoints limits as in the Matter Specification - bool setCoolingHeatingSetpoints(double _setpointHeatingTemperature, double _setpointCollingTemperature); + bool setCoolingHeatingSetpoints(double _setpointHeatingTemperature, double _setpointCoolingTemperature); // set the heating setpoint in 1/100th of a Celsio degree bool setHeatingSetpoint(double _setpointHeatingTemperature) { - return setCoolingHeatingSetpoints((double)0xffff, _setpointHeatingTemperature); + return setCoolingHeatingSetpoints(_setpointHeatingTemperature, (double)0xffff); } // get the heating setpoint in 1/100th of a Celsio degree double getHeatingSetpoint() { return heatingSetpointTemperature / 100.0; } // set the cooling setpoint in 1/100th of a Celsio degree - bool setCoolingSetpoint(double _setpointCollingTemperature) { - return setCoolingHeatingSetpoints(_setpointCollingTemperature, (double)0xffff); + bool setCoolingSetpoint(double _setpointCoolingTemperature) { + return setCoolingHeatingSetpoints((double)0xffff, _setpointCoolingTemperature); } // get the cooling setpoint in 1/100th of a Celsio degree double getCoolingSetpoint() { From d1eb62d7c6dda16c254c374504aa93188d7c386b Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 5 Nov 2025 17:10:52 +0100 Subject: [PATCH 30/31] feat(board): add support for Arduino Nesso N1 (#11985) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add Arduino Nesso N1 Also implement an oveload for digital* operation to abstract the various gpio expanders. TODO: change WireInternal into default Wire (will require the user to explicitly include "Wire.h" (as in https://github.com/arduino/ArduinoCore-mbed/blob/main/variants/NANO_RP2040_CONNECT/nina_pins.h#L14-L18 ) * feat: nesso_n1: protect digital* calls from misuse * feat: nesso_n1: enable battery only charging for now * ci(pre-commit): Apply automatic fixes * fix: Spelling error --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com> --- boards.txt | 146 +++++++++++++++++++++++ variants/arduino_nesso_n1/expander.cpp | 129 ++++++++++++++++++++ variants/arduino_nesso_n1/pins_arduino.h | 77 ++++++++++++ 3 files changed, 352 insertions(+) create mode 100644 variants/arduino_nesso_n1/expander.cpp create mode 100644 variants/arduino_nesso_n1/pins_arduino.h diff --git a/boards.txt b/boards.txt index 39f2d1df7c8..9add21d43e7 100644 --- a/boards.txt +++ b/boards.txt @@ -52955,3 +52955,149 @@ soldered_nula_mini_esp32c6.menu.ZigbeeMode.zczr.build.zigbee_mode=-DZIGBEE_MODE_ soldered_nula_mini_esp32c6.menu.ZigbeeMode.zczr.build.zigbee_libs=-lesp_zb_api.zczr -lzboss_stack.zczr -lzboss_port.native ############################################################## + +arduino_nesso_n1.name=Arduino Nesso N1 + +arduino_nesso_n1.bootloader.tool=esptool_py +arduino_nesso_n1.bootloader.tool.default=esptool_py + +arduino_nesso_n1.upload.tool=esptool_py +arduino_nesso_n1.upload.tool.default=esptool_py +arduino_nesso_n1.upload.tool.network=esp_ota + +arduino_nesso_n1.upload.maximum_size=1310720 +arduino_nesso_n1.upload.maximum_data_size=327680 +arduino_nesso_n1.upload.flags= +arduino_nesso_n1.upload.extra_flags= +arduino_nesso_n1.upload.use_1200bps_touch=false +arduino_nesso_n1.upload.wait_for_upload_port=false + +arduino_nesso_n1.serial.disableDTR=false +arduino_nesso_n1.serial.disableRTS=false + +arduino_nesso_n1.build.tarch=riscv32 +arduino_nesso_n1.build.target=esp +arduino_nesso_n1.build.mcu=esp32c6 +arduino_nesso_n1.build.core=esp32 +arduino_nesso_n1.build.variant=arduino_nesso_n1 +arduino_nesso_n1.build.board=ARDUINO_NESSO_N1 +arduino_nesso_n1.build.bootloader_addr=0x0 + +arduino_nesso_n1.build.cdc_on_boot=1 +arduino_nesso_n1.build.f_cpu=160000000L +arduino_nesso_n1.build.flash_size=16MB +arduino_nesso_n1.build.flash_freq=80m +arduino_nesso_n1.build.flash_mode=qio +arduino_nesso_n1.build.boot=qio +arduino_nesso_n1.build.partitions=default +arduino_nesso_n1.build.defines= + +## IDE 2.0 Seems to not update the value +arduino_nesso_n1.menu.JTAGAdapter.default=Disabled +arduino_nesso_n1.menu.JTAGAdapter.default.build.copy_jtag_files=0 +arduino_nesso_n1.menu.JTAGAdapter.builtin=Integrated USB JTAG +arduino_nesso_n1.menu.JTAGAdapter.builtin.build.openocdscript=esp32c6-builtin.cfg +arduino_nesso_n1.menu.JTAGAdapter.builtin.build.copy_jtag_files=1 +arduino_nesso_n1.menu.JTAGAdapter.external=FTDI Adapter +arduino_nesso_n1.menu.JTAGAdapter.external.build.openocdscript=esp32c6-ftdi.cfg +arduino_nesso_n1.menu.JTAGAdapter.external.build.copy_jtag_files=1 +arduino_nesso_n1.menu.JTAGAdapter.bridge=ESP USB Bridge +arduino_nesso_n1.menu.JTAGAdapter.bridge.build.openocdscript=esp32c6-bridge.cfg +arduino_nesso_n1.menu.JTAGAdapter.bridge.build.copy_jtag_files=1 + +arduino_nesso_n1.menu.CDCOnBoot.default=Enabled +arduino_nesso_n1.menu.CDCOnBoot.default.build.cdc_on_boot=1 +arduino_nesso_n1.menu.CDCOnBoot.cdc=Disabled +arduino_nesso_n1.menu.CDCOnBoot.cdc.build.cdc_on_boot=0 + +arduino_nesso_n1.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +arduino_nesso_n1.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +arduino_nesso_n1.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 +arduino_nesso_n1.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +arduino_nesso_n1.menu.PartitionScheme.default.build.partitions=default +arduino_nesso_n1.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +arduino_nesso_n1.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +arduino_nesso_n1.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +arduino_nesso_n1.menu.PartitionScheme.no_ota.build.partitions=no_ota +arduino_nesso_n1.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +arduino_nesso_n1.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +arduino_nesso_n1.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +arduino_nesso_n1.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +arduino_nesso_n1.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +arduino_nesso_n1.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +arduino_nesso_n1.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +arduino_nesso_n1.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +arduino_nesso_n1.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +arduino_nesso_n1.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +arduino_nesso_n1.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +arduino_nesso_n1.menu.PartitionScheme.huge_app.build.partitions=huge_app +arduino_nesso_n1.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +arduino_nesso_n1.menu.PartitionScheme.zigbee=Zigbee 4MB with spiffs +arduino_nesso_n1.menu.PartitionScheme.zigbee.build.partitions=zigbee +arduino_nesso_n1.menu.PartitionScheme.zigbee.upload.maximum_size=1310720 +arduino_nesso_n1.menu.PartitionScheme.zigbee_zczr=Zigbee ZCZR 4MB with spiffs +arduino_nesso_n1.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr +arduino_nesso_n1.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 + +arduino_nesso_n1.menu.CPUFreq.160=160MHz (WiFi) +arduino_nesso_n1.menu.CPUFreq.160.build.f_cpu=160000000L +arduino_nesso_n1.menu.CPUFreq.80=80MHz (WiFi) +arduino_nesso_n1.menu.CPUFreq.80.build.f_cpu=80000000L +arduino_nesso_n1.menu.CPUFreq.40=40MHz +arduino_nesso_n1.menu.CPUFreq.40.build.f_cpu=40000000L +arduino_nesso_n1.menu.CPUFreq.20=20MHz +arduino_nesso_n1.menu.CPUFreq.20.build.f_cpu=20000000L +arduino_nesso_n1.menu.CPUFreq.10=10MHz +arduino_nesso_n1.menu.CPUFreq.10.build.f_cpu=10000000L + +arduino_nesso_n1.menu.FlashMode.qio=QIO +arduino_nesso_n1.menu.FlashMode.qio.build.flash_mode=dio +arduino_nesso_n1.menu.FlashMode.qio.build.boot=qio +arduino_nesso_n1.menu.FlashMode.dio=DIO +arduino_nesso_n1.menu.FlashMode.dio.build.flash_mode=dio +arduino_nesso_n1.menu.FlashMode.dio.build.boot=dio + +arduino_nesso_n1.menu.UploadSpeed.921600=921600 +arduino_nesso_n1.menu.UploadSpeed.921600.upload.speed=921600 +arduino_nesso_n1.menu.UploadSpeed.115200=115200 +arduino_nesso_n1.menu.UploadSpeed.115200.upload.speed=115200 +arduino_nesso_n1.menu.UploadSpeed.256000.windows=256000 +arduino_nesso_n1.menu.UploadSpeed.256000.upload.speed=256000 +arduino_nesso_n1.menu.UploadSpeed.230400.windows.upload.speed=256000 +arduino_nesso_n1.menu.UploadSpeed.230400=230400 +arduino_nesso_n1.menu.UploadSpeed.230400.upload.speed=230400 +arduino_nesso_n1.menu.UploadSpeed.460800.linux=460800 +arduino_nesso_n1.menu.UploadSpeed.460800.macosx=460800 +arduino_nesso_n1.menu.UploadSpeed.460800.upload.speed=460800 +arduino_nesso_n1.menu.UploadSpeed.512000.windows=512000 +arduino_nesso_n1.menu.UploadSpeed.512000.upload.speed=512000 + +arduino_nesso_n1.menu.DebugLevel.none=None +arduino_nesso_n1.menu.DebugLevel.none.build.code_debug=0 +arduino_nesso_n1.menu.DebugLevel.error=Error +arduino_nesso_n1.menu.DebugLevel.error.build.code_debug=1 +arduino_nesso_n1.menu.DebugLevel.warn=Warn +arduino_nesso_n1.menu.DebugLevel.warn.build.code_debug=2 +arduino_nesso_n1.menu.DebugLevel.info=Info +arduino_nesso_n1.menu.DebugLevel.info.build.code_debug=3 +arduino_nesso_n1.menu.DebugLevel.debug=Debug +arduino_nesso_n1.menu.DebugLevel.debug.build.code_debug=4 +arduino_nesso_n1.menu.DebugLevel.verbose=Verbose +arduino_nesso_n1.menu.DebugLevel.verbose.build.code_debug=5 + +arduino_nesso_n1.menu.EraseFlash.none=Disabled +arduino_nesso_n1.menu.EraseFlash.none.upload.erase_cmd= +arduino_nesso_n1.menu.EraseFlash.all=Enabled +arduino_nesso_n1.menu.EraseFlash.all.upload.erase_cmd=-e + +arduino_nesso_n1.menu.ZigbeeMode.default=Disabled +arduino_nesso_n1.menu.ZigbeeMode.default.build.zigbee_mode= +arduino_nesso_n1.menu.ZigbeeMode.default.build.zigbee_libs= +arduino_nesso_n1.menu.ZigbeeMode.ed=Zigbee ED (end device) +arduino_nesso_n1.menu.ZigbeeMode.ed.build.zigbee_mode=-DZIGBEE_MODE_ED +arduino_nesso_n1.menu.ZigbeeMode.ed.build.zigbee_libs=-lesp_zb_api.ed -lzboss_stack.ed -lzboss_port.native +arduino_nesso_n1.menu.ZigbeeMode.zczr=Zigbee ZCZR (coordinator/router) +arduino_nesso_n1.menu.ZigbeeMode.zczr.build.zigbee_mode=-DZIGBEE_MODE_ZCZR +arduino_nesso_n1.menu.ZigbeeMode.zczr.build.zigbee_libs=-lesp_zb_api.zczr -lzboss_stack.zczr -lzboss_port.native + +############################################################## diff --git a/variants/arduino_nesso_n1/expander.cpp b/variants/arduino_nesso_n1/expander.cpp new file mode 100644 index 00000000000..d905cad44ca --- /dev/null +++ b/variants/arduino_nesso_n1/expander.cpp @@ -0,0 +1,129 @@ +#define TwoWire TwoWireInternal +#define Wire WireInternal +#define Wire1 WireInternal1 + +#include "pins_arduino.h" +#include "../../libraries/Wire/src/Wire.h" +#include "../../libraries/Wire/src/Wire.cpp" + +static bool wireInitialized = false; + +// From https://www.diodes.com/datasheet/download/PI4IOE5V6408.pdf +static void writeRegister(uint8_t address, uint8_t reg, uint8_t value) { + WireInternal.beginTransmission(address); + WireInternal.write(reg); + WireInternal.write(value); + WireInternal.endTransmission(); +} + +static uint8_t readRegister(uint8_t address, uint8_t reg) { + WireInternal.beginTransmission(address); + WireInternal.write(reg); + WireInternal.endTransmission(false); + WireInternal.requestFrom(address, 1); + return WireInternal.read(); +} + +static void writeBitRegister(uint8_t address, uint8_t reg, uint8_t bit, uint8_t value) { + uint8_t val = readRegister(address, reg); + if (value) { + writeRegister(address, reg, val | (1 << bit)); + } else { + writeRegister(address, reg, val & ~(1 << bit)); + } +} + +static bool readBitRegister(uint8_t address, uint8_t reg, uint8_t bit) { + uint8_t val = readRegister(address, reg); + return ((val & (1 << bit)) > 0); +} + +void pinMode(ExpanderPin pin, uint8_t mode) { + if (!wireInitialized) { + WireInternal.begin(SDA, SCL); + wireInitialized = true; + // reset all registers to default state + writeRegister(pin.address, 0x1, 0x1); + // set all pins as high as default state + writeRegister(pin.address, 0x9, 0xFF); + // interrupt mask to all pins + writeRegister(pin.address, 0x11, 0xFF); + // all input + writeRegister(pin.address, 0x3, 0); + } + writeBitRegister(pin.address, 0x3, pin.pin, mode == OUTPUT); + if (mode == OUTPUT) { + // remove high impedance + writeBitRegister(pin.address, 0x7, pin.pin, false); + } else if (mode == INPUT_PULLUP) { + // set pull-up resistor + writeBitRegister(pin.address, 0xB, pin.pin, true); + writeBitRegister(pin.address, 0xD, pin.pin, true); + } else if (mode == INPUT_PULLDOWN) { + // disable pull-up resistor + writeBitRegister(pin.address, 0xB, pin.pin, true); + writeBitRegister(pin.address, 0xD, pin.pin, false); + } else if (mode == INPUT) { + // disable pull selector resistor + writeBitRegister(pin.address, 0xB, pin.pin, false); + } +} + +void digitalWrite(ExpanderPin pin, uint8_t val) { + if (!wireInitialized) { + WireInternal.begin(SDA, SCL); + wireInitialized = true; + } + writeBitRegister(pin.address, 0x5, pin.pin, val == HIGH); +} + +int digitalRead(ExpanderPin pin) { + if (!wireInitialized) { + WireInternal.begin(SDA, SCL); + wireInitialized = true; + } + return readBitRegister(pin.address, 0xF, pin.pin); +} + +void NessoBattery::enableCharge() { + // AW32001E - address 0x49 + // set CEB bit low (charge enable) + if (!wireInitialized) { + WireInternal.begin(SDA, SCL); + wireInitialized = true; + } + writeBitRegister(0x49, 0x1, 3, false); +} + +float NessoBattery::getVoltage() { + // BQ27220 - address 0x55 + if (!wireInitialized) { + WireInternal.begin(SDA, SCL); + wireInitialized = true; + } + uint16_t voltage = (readRegister(0x55, 0x9) << 8) | readRegister(0x55, 0x8); + return (float)voltage / 1000.0f; +} + +uint16_t NessoBattery::getChargeLevel() { + // BQ27220 - address 0x55 + if (!wireInitialized) { + WireInternal.begin(SDA, SCL); + wireInitialized = true; + } + uint16_t current_capacity = readRegister(0x55, 0x11) << 8 | readRegister(0x55, 0x10); + uint16_t total_capacity = readRegister(0x55, 0x13) << 8 | readRegister(0x55, 0x12); + return (current_capacity * 100) / total_capacity; +} + +ExpanderPin LORA_LNA_ENABLE(5); +ExpanderPin LORA_ANTENNA_SWITCH(6); +ExpanderPin LORA_ENABLE(7); +ExpanderPin KEY1(0); +ExpanderPin KEY2(1); +ExpanderPin POWEROFF((1 << 8) | 0); +ExpanderPin LCD_RESET((1 << 8) | 1); +ExpanderPin GROVE_POWER_EN((1 << 8) | 2); +ExpanderPin VIN_DETECT((1 << 8) | 5); +ExpanderPin LCD_BACKLIGHT((1 << 8) | 6); +ExpanderPin LED_BUILTIN((1 << 8) | 7); diff --git a/variants/arduino_nesso_n1/pins_arduino.h b/variants/arduino_nesso_n1/pins_arduino.h new file mode 100644 index 00000000000..fc1414b361d --- /dev/null +++ b/variants/arduino_nesso_n1/pins_arduino.h @@ -0,0 +1,77 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include +#include "soc/soc_caps.h" + +#define USB_VID 0x303A +#define USB_PID 0x1001 +#define USB_MANUFACTURER "Arduino" +#define USB_PRODUCT "Nesso N1" +#define USB_SERIAL "" + +static const uint8_t TX = -1; +static const uint8_t RX = -1; + +static const uint8_t SDA = 10; +static const uint8_t SCL = 8; + +static const uint8_t MOSI = 21; +static const uint8_t MISO = 22; +static const uint8_t SCK = 20; +static const uint8_t SS = 23; + +static const uint8_t D1 = 7; +static const uint8_t D2 = 2; +static const uint8_t D3 = 6; + +static const uint8_t IR_TX_PIN = 9; +static const uint8_t BEEP_PIN = 11; + +static const uint8_t GROVE_IO_0 = 5; +static const uint8_t GROVE_IO_1 = 4; + +static const uint8_t LORA_IRQ = 15; +static const uint8_t LORA_CS = 23; +static const uint8_t LORA_BUSY = 19; + +static const uint8_t SYS_IRQ = 3; + +static const uint8_t LCD_CS = 17; +static const uint8_t LCD_RS = 16; + +#if !defined(MAIN_ESP32_HAL_GPIO_H_) && defined(__cplusplus) +/* address: 0x43/0x44 */ +class ExpanderPin { +public: + ExpanderPin(uint16_t _pin) : pin(_pin & 0xFF), address(_pin & 0x100 ? 0x44 : 0x43){}; + uint8_t pin; + uint8_t address; +}; + +class NessoBattery { +public: + NessoBattery(){}; + void enableCharge(); // enable charging + float getVoltage(); // get battery voltage in Volts + uint16_t getChargeLevel(); // get battery charge level in percents +}; + +extern ExpanderPin LORA_LNA_ENABLE; +extern ExpanderPin LORA_ANTENNA_SWITCH; +extern ExpanderPin LORA_ENABLE; +extern ExpanderPin POWEROFF; +extern ExpanderPin GROVE_POWER_EN; +extern ExpanderPin VIN_DETECT; +extern ExpanderPin LCD_RESET; +extern ExpanderPin LCD_BACKLIGHT; +extern ExpanderPin LED_BUILTIN; +extern ExpanderPin KEY1; +extern ExpanderPin KEY2; + +void pinMode(ExpanderPin pin, uint8_t mode); +void digitalWrite(ExpanderPin pin, uint8_t val); +int digitalRead(ExpanderPin pin); +#endif + +#endif /* Pins_Arduino_h */ From 0b6e560d78754861232d0e20a1999b5786ab6230 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Nov 2025 16:30:03 +0000 Subject: [PATCH 31/31] change(version): Update core version to 3.3.3 --- .github/ISSUE_TEMPLATE/Issue-report.yml | 1 + .gitlab/workflows/common.yml | 2 +- cores/esp32/esp_arduino_version.h | 2 +- docs/conf_common.py | 2 +- libraries/ArduinoOTA/library.properties | 2 +- libraries/AsyncUDP/library.properties | 2 +- libraries/BLE/library.properties | 2 +- libraries/BluetoothSerial/library.properties | 2 +- libraries/DNSServer/library.properties | 2 +- libraries/EEPROM/library.properties | 2 +- libraries/ESP32/library.properties | 2 +- libraries/ESP_I2S/library.properties | 2 +- libraries/ESP_NOW/library.properties | 2 +- libraries/ESP_SR/library.properties | 2 +- libraries/ESPmDNS/library.properties | 2 +- libraries/Ethernet/library.properties | 2 +- libraries/FFat/library.properties | 2 +- libraries/FS/library.properties | 2 +- libraries/HTTPClient/library.properties | 2 +- libraries/HTTPUpdate/library.properties | 2 +- libraries/HTTPUpdateServer/library.properties | 2 +- libraries/Hash/library.properties | 2 +- libraries/Insights/library.properties | 2 +- libraries/LittleFS/library.properties | 2 +- libraries/Matter/library.properties | 2 +- libraries/NetBIOS/library.properties | 2 +- libraries/Network/library.properties | 2 +- libraries/NetworkClientSecure/library.properties | 2 +- libraries/OpenThread/library.properties | 2 +- libraries/PPP/library.properties | 2 +- libraries/Preferences/library.properties | 2 +- libraries/RainMaker/library.properties | 2 +- libraries/SD/library.properties | 2 +- libraries/SD_MMC/library.properties | 2 +- libraries/SPI/library.properties | 2 +- libraries/SPIFFS/library.properties | 2 +- libraries/SimpleBLE/library.properties | 2 +- libraries/TFLiteMicro/library.properties | 2 +- libraries/Ticker/library.properties | 2 +- libraries/USB/library.properties | 2 +- libraries/Update/library.properties | 2 +- libraries/WebServer/library.properties | 2 +- libraries/WiFi/library.properties | 2 +- libraries/WiFiProv/library.properties | 2 +- libraries/Wire/library.properties | 2 +- libraries/Zigbee/library.properties | 2 +- package.json | 2 +- platform.txt | 2 +- 48 files changed, 48 insertions(+), 47 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Issue-report.yml b/.github/ISSUE_TEMPLATE/Issue-report.yml index af97de73644..b3c3e4a944c 100644 --- a/.github/ISSUE_TEMPLATE/Issue-report.yml +++ b/.github/ISSUE_TEMPLATE/Issue-report.yml @@ -43,6 +43,7 @@ body: - latest stable Release (if not listed below) - latest development Release Candidate (RC-X) - latest master (checkout manually) + - v3.3.3 - v3.3.2 - v3.3.1 - v3.3.0 diff --git a/.gitlab/workflows/common.yml b/.gitlab/workflows/common.yml index 5702954e9e9..b5183114dc9 100644 --- a/.gitlab/workflows/common.yml +++ b/.gitlab/workflows/common.yml @@ -13,7 +13,7 @@ stages: variables: ESP_IDF_VERSION: "5.5" - ESP_ARDUINO_VERSION: "3.3.2" + ESP_ARDUINO_VERSION: "3.3.3" ############# # `default` # diff --git a/cores/esp32/esp_arduino_version.h b/cores/esp32/esp_arduino_version.h index 20cb911956d..2919a4979a2 100644 --- a/cores/esp32/esp_arduino_version.h +++ b/cores/esp32/esp_arduino_version.h @@ -23,7 +23,7 @@ extern "C" { /** Minor version number (x.X.x) */ #define ESP_ARDUINO_VERSION_MINOR 3 /** Patch version number (x.x.X) */ -#define ESP_ARDUINO_VERSION_PATCH 2 +#define ESP_ARDUINO_VERSION_PATCH 3 /** * Macro to convert ARDUINO version number into an integer diff --git a/docs/conf_common.py b/docs/conf_common.py index 1ef2e5ee2e6..0fb4fb8e306 100644 --- a/docs/conf_common.py +++ b/docs/conf_common.py @@ -4,7 +4,7 @@ # Used for substituting variables in the documentation rst_prolog = """ -.. |version| replace:: 3.3.2 +.. |version| replace:: 3.3.3 .. |idf_version| replace:: 5.5 """ diff --git a/libraries/ArduinoOTA/library.properties b/libraries/ArduinoOTA/library.properties index c4e5ff88a65..19e4ff49497 100644 --- a/libraries/ArduinoOTA/library.properties +++ b/libraries/ArduinoOTA/library.properties @@ -1,5 +1,5 @@ name=ArduinoOTA -version=3.3.2 +version=3.3.3 author=Ivan Grokhotkov and Hristo Gochkov maintainer=Hristo Gochkov sentence=Enables Over The Air upgrades, via wifi and espota.py UDP request/TCP download. diff --git a/libraries/AsyncUDP/library.properties b/libraries/AsyncUDP/library.properties index 24b48d2e4de..2bddae6ed53 100644 --- a/libraries/AsyncUDP/library.properties +++ b/libraries/AsyncUDP/library.properties @@ -1,5 +1,5 @@ name=ESP32 Async UDP -version=3.3.2 +version=3.3.3 author=Me-No-Dev maintainer=Me-No-Dev sentence=Async UDP Library for ESP32 diff --git a/libraries/BLE/library.properties b/libraries/BLE/library.properties index 730ab0ea315..2c2b07649b7 100644 --- a/libraries/BLE/library.properties +++ b/libraries/BLE/library.properties @@ -1,5 +1,5 @@ name=BLE -version=3.3.2 +version=3.3.3 author=Neil Kolban maintainer=lucasssvaz sentence=BLE functions for ESP32 diff --git a/libraries/BluetoothSerial/library.properties b/libraries/BluetoothSerial/library.properties index 3ced43c52ea..0ed931d2e2a 100644 --- a/libraries/BluetoothSerial/library.properties +++ b/libraries/BluetoothSerial/library.properties @@ -1,5 +1,5 @@ name=BluetoothSerial -version=3.3.2 +version=3.3.3 author=Evandro Copercini maintainer=Evandro Copercini sentence=Simple UART to Classical Bluetooth bridge for ESP32 diff --git a/libraries/DNSServer/library.properties b/libraries/DNSServer/library.properties index e30f5a39555..3f880f80b1e 100644 --- a/libraries/DNSServer/library.properties +++ b/libraries/DNSServer/library.properties @@ -1,5 +1,5 @@ name=DNSServer -version=3.3.2 +version=3.3.3 author=Kristijan Novoselić maintainer=Kristijan Novoselić, sentence=A simple DNS server for ESP32. diff --git a/libraries/EEPROM/library.properties b/libraries/EEPROM/library.properties index e6728c5d808..4e69f9ea949 100644 --- a/libraries/EEPROM/library.properties +++ b/libraries/EEPROM/library.properties @@ -1,5 +1,5 @@ name=EEPROM -version=3.3.2 +version=3.3.3 author=Ivan Grokhotkov maintainer=Paolo Becchi sentence=Enables reading and writing data a sequential, addressable FLASH storage diff --git a/libraries/ESP32/library.properties b/libraries/ESP32/library.properties index 864c315224b..122a53435a9 100644 --- a/libraries/ESP32/library.properties +++ b/libraries/ESP32/library.properties @@ -1,5 +1,5 @@ name=ESP32 -version=3.3.2 +version=3.3.3 author=Hristo Gochkov, Ivan Grokhtkov maintainer=Hristo Gochkov sentence=ESP32 sketches examples diff --git a/libraries/ESP_I2S/library.properties b/libraries/ESP_I2S/library.properties index 7145fb7dccd..e1dc8e34a03 100644 --- a/libraries/ESP_I2S/library.properties +++ b/libraries/ESP_I2S/library.properties @@ -1,5 +1,5 @@ name=ESP_I2S -version=3.3.2 +version=3.3.3 author=me-no-dev maintainer=me-no-dev sentence=Library for ESP I2S communication diff --git a/libraries/ESP_NOW/library.properties b/libraries/ESP_NOW/library.properties index a1868930307..4483af3c038 100644 --- a/libraries/ESP_NOW/library.properties +++ b/libraries/ESP_NOW/library.properties @@ -1,5 +1,5 @@ name=ESP_NOW -version=3.3.2 +version=3.3.3 author=me-no-dev maintainer=P-R-O-C-H-Y sentence=Library for ESP_NOW diff --git a/libraries/ESP_SR/library.properties b/libraries/ESP_SR/library.properties index b39120f015d..8752b08b2ee 100644 --- a/libraries/ESP_SR/library.properties +++ b/libraries/ESP_SR/library.properties @@ -1,5 +1,5 @@ name=ESP_SR -version=3.3.2 +version=3.3.3 author=me-no-dev maintainer=me-no-dev sentence=Library for ESP Sound Recognition diff --git a/libraries/ESPmDNS/library.properties b/libraries/ESPmDNS/library.properties index 4d0f1d4eef9..68327251265 100644 --- a/libraries/ESPmDNS/library.properties +++ b/libraries/ESPmDNS/library.properties @@ -1,5 +1,5 @@ name=ESPmDNS -version=3.3.2 +version=3.3.3 author=Hristo Gochkov, Ivan Grokhtkov maintainer=Hristo Gochkov sentence=ESP32 mDNS Library diff --git a/libraries/Ethernet/library.properties b/libraries/Ethernet/library.properties index a9bff23f7f1..d5cf3006131 100644 --- a/libraries/Ethernet/library.properties +++ b/libraries/Ethernet/library.properties @@ -1,5 +1,5 @@ name=Ethernet -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=Enables network connection (local and Internet) using the ESP32 Ethernet. diff --git a/libraries/FFat/library.properties b/libraries/FFat/library.properties index a94339dc87e..dcce91754b8 100644 --- a/libraries/FFat/library.properties +++ b/libraries/FFat/library.properties @@ -1,5 +1,5 @@ name=FFat -version=3.3.2 +version=3.3.3 author=Hristo Gochkov, Ivan Grokhtkov, Larry Bernstone maintainer=Hristo Gochkov sentence=ESP32 FAT on Flash File System diff --git a/libraries/FS/library.properties b/libraries/FS/library.properties index 8dac5fc3235..c5c63775763 100644 --- a/libraries/FS/library.properties +++ b/libraries/FS/library.properties @@ -1,5 +1,5 @@ name=FS -version=3.3.2 +version=3.3.3 author=Hristo Gochkov, Ivan Grokhtkov maintainer=Hristo Gochkov sentence=ESP32 File System diff --git a/libraries/HTTPClient/library.properties b/libraries/HTTPClient/library.properties index 79717c13b37..c685164c092 100644 --- a/libraries/HTTPClient/library.properties +++ b/libraries/HTTPClient/library.properties @@ -1,5 +1,5 @@ name=HTTPClient -version=3.3.2 +version=3.3.3 author=Markus Sattler maintainer=Markus Sattler sentence=HTTP Client for ESP32 diff --git a/libraries/HTTPUpdate/library.properties b/libraries/HTTPUpdate/library.properties index c61ceee9fac..f5a5bbe25bd 100644 --- a/libraries/HTTPUpdate/library.properties +++ b/libraries/HTTPUpdate/library.properties @@ -1,5 +1,5 @@ name=HTTPUpdate -version=3.3.2 +version=3.3.3 author=Markus Sattler maintainer=Markus Sattler sentence=Http Update for ESP32 diff --git a/libraries/HTTPUpdateServer/library.properties b/libraries/HTTPUpdateServer/library.properties index e391d05ae91..9529c3831a8 100644 --- a/libraries/HTTPUpdateServer/library.properties +++ b/libraries/HTTPUpdateServer/library.properties @@ -1,5 +1,5 @@ name=HTTPUpdateServer -version=3.3.2 +version=3.3.3 author=Hristo Kapanakov maintainer= sentence=Simple HTTP Update server based on the WebServer diff --git a/libraries/Hash/library.properties b/libraries/Hash/library.properties index 6e7ed56919c..8e416c03005 100644 --- a/libraries/Hash/library.properties +++ b/libraries/Hash/library.properties @@ -1,5 +1,5 @@ name=Hash -version=3.3.2 +version=3.3.3 author=lucasssvaz maintainer=lucasssvaz sentence=Bundle of hashing functions for the ESP32 diff --git a/libraries/Insights/library.properties b/libraries/Insights/library.properties index 24904296fe8..49ffe5c0a1b 100644 --- a/libraries/Insights/library.properties +++ b/libraries/Insights/library.properties @@ -1,5 +1,5 @@ name=ESP Insights -version=3.3.2 +version=3.3.3 author=Sanket Wadekar maintainer=Sanket Wadekar sentence=ESP Insights diff --git a/libraries/LittleFS/library.properties b/libraries/LittleFS/library.properties index e94daaa9602..e85cd5b4810 100644 --- a/libraries/LittleFS/library.properties +++ b/libraries/LittleFS/library.properties @@ -1,5 +1,5 @@ name=LittleFS -version=3.3.2 +version=3.3.3 author= maintainer= sentence=LittleFS for esp32 diff --git a/libraries/Matter/library.properties b/libraries/Matter/library.properties index 522e777f852..29d698d9f0e 100644 --- a/libraries/Matter/library.properties +++ b/libraries/Matter/library.properties @@ -1,5 +1,5 @@ name=Matter -version=3.3.2 +version=3.3.3 author=Rodrigo Garcia | GitHub @SuGlider maintainer=Rodrigo Garcia sentence=Library for supporting Matter environment on ESP32. diff --git a/libraries/NetBIOS/library.properties b/libraries/NetBIOS/library.properties index 7a28a36e016..32609f02d6a 100644 --- a/libraries/NetBIOS/library.properties +++ b/libraries/NetBIOS/library.properties @@ -1,5 +1,5 @@ name=NetBIOS -version=3.3.2 +version=3.3.3 author=Pablo@xpablo.cz maintainer=Hristo Gochkov sentence=Enables NBNS (NetBIOS) name resolution. diff --git a/libraries/Network/library.properties b/libraries/Network/library.properties index 5c848a0fcc1..4e11bf73edc 100644 --- a/libraries/Network/library.properties +++ b/libraries/Network/library.properties @@ -1,5 +1,5 @@ name=Networking -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=General network management library. diff --git a/libraries/NetworkClientSecure/library.properties b/libraries/NetworkClientSecure/library.properties index 8d74c2b8f37..02c0e566e38 100644 --- a/libraries/NetworkClientSecure/library.properties +++ b/libraries/NetworkClientSecure/library.properties @@ -1,5 +1,5 @@ name=NetworkClientSecure -version=3.3.2 +version=3.3.3 author=Evandro Luis Copercini maintainer=Github Community sentence=Enables secure network connection (local and Internet) using the ESP32 built-in WiFi. diff --git a/libraries/OpenThread/library.properties b/libraries/OpenThread/library.properties index 147793e59d6..d29ce033544 100644 --- a/libraries/OpenThread/library.properties +++ b/libraries/OpenThread/library.properties @@ -1,5 +1,5 @@ name=OpenThread -version=3.3.2 +version=3.3.3 author=Rodrigo Garcia | GitHub @SuGlider maintainer=Rodrigo Garcia sentence=Library for OpenThread Network on ESP32. diff --git a/libraries/PPP/library.properties b/libraries/PPP/library.properties index eaaf349d847..8a4590ce1ac 100644 --- a/libraries/PPP/library.properties +++ b/libraries/PPP/library.properties @@ -1,5 +1,5 @@ name=PPP -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=Enables network connection using GSM Modem. diff --git a/libraries/Preferences/library.properties b/libraries/Preferences/library.properties index aa64864c7bd..ea452b9e363 100644 --- a/libraries/Preferences/library.properties +++ b/libraries/Preferences/library.properties @@ -1,5 +1,5 @@ name=Preferences -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=Provides friendly access to ESP32's Non-Volatile Storage diff --git a/libraries/RainMaker/library.properties b/libraries/RainMaker/library.properties index 580c9115cfb..6c7d63a1c1f 100644 --- a/libraries/RainMaker/library.properties +++ b/libraries/RainMaker/library.properties @@ -1,5 +1,5 @@ name=ESP RainMaker -version=3.3.2 +version=3.3.3 author=Sweety Mhaiske maintainer=Hristo Gochkov sentence=ESP RainMaker Support diff --git a/libraries/SD/library.properties b/libraries/SD/library.properties index 2c5a2b6a16c..81fcfc705b5 100644 --- a/libraries/SD/library.properties +++ b/libraries/SD/library.properties @@ -1,5 +1,5 @@ name=SD -version=3.3.2 +version=3.3.3 author=Arduino, SparkFun maintainer=Arduino sentence=Enables reading and writing on SD cards. For all Arduino boards. diff --git a/libraries/SD_MMC/library.properties b/libraries/SD_MMC/library.properties index f7fe194e586..31447c8b95a 100644 --- a/libraries/SD_MMC/library.properties +++ b/libraries/SD_MMC/library.properties @@ -1,5 +1,5 @@ name=SD_MMC -version=3.3.2 +version=3.3.3 author=Hristo Gochkov, Ivan Grokhtkov maintainer=Hristo Gochkov sentence=ESP32 SDMMC File System diff --git a/libraries/SPI/library.properties b/libraries/SPI/library.properties index 1e9b1aa5a5b..9c4c8abec3e 100644 --- a/libraries/SPI/library.properties +++ b/libraries/SPI/library.properties @@ -1,5 +1,5 @@ name=SPI -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=Enables the communication with devices that use the Serial Peripheral Interface (SPI) Bus. For all Arduino boards, BUT Arduino DUE. diff --git a/libraries/SPIFFS/library.properties b/libraries/SPIFFS/library.properties index f516aed2ee2..5e73cf85f84 100644 --- a/libraries/SPIFFS/library.properties +++ b/libraries/SPIFFS/library.properties @@ -1,5 +1,5 @@ name=SPIFFS -version=3.3.2 +version=3.3.3 author=Hristo Gochkov, Ivan Grokhtkov maintainer=Hristo Gochkov sentence=ESP32 SPIFFS File System diff --git a/libraries/SimpleBLE/library.properties b/libraries/SimpleBLE/library.properties index b6f189bb7f0..78c6d010b4b 100644 --- a/libraries/SimpleBLE/library.properties +++ b/libraries/SimpleBLE/library.properties @@ -1,5 +1,5 @@ name=SimpleBLE -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=Provides really simple BLE advertizer with just on and off diff --git a/libraries/TFLiteMicro/library.properties b/libraries/TFLiteMicro/library.properties index 8e5f6d95718..7aa9c1381e9 100644 --- a/libraries/TFLiteMicro/library.properties +++ b/libraries/TFLiteMicro/library.properties @@ -1,5 +1,5 @@ name=TFLite Micro -version=3.3.2 +version=3.3.3 author=Sanket Wadekar maintainer=Sanket Wadekar sentence=TensorFlow Lite for Microcontrollers diff --git a/libraries/Ticker/library.properties b/libraries/Ticker/library.properties index b978f9a805e..ccb63ec4f98 100644 --- a/libraries/Ticker/library.properties +++ b/libraries/Ticker/library.properties @@ -1,5 +1,5 @@ name=Ticker -version=3.3.2 +version=3.3.3 author=Bert Melis maintainer=Hristo Gochkov sentence=Allows to call functions with a given interval. diff --git a/libraries/USB/library.properties b/libraries/USB/library.properties index d9229c9d7b9..cb4ddfe231b 100644 --- a/libraries/USB/library.properties +++ b/libraries/USB/library.properties @@ -1,5 +1,5 @@ name=USB -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=ESP32S2 USB Library diff --git a/libraries/Update/library.properties b/libraries/Update/library.properties index a192318bb73..bb1ce7dd38d 100644 --- a/libraries/Update/library.properties +++ b/libraries/Update/library.properties @@ -1,5 +1,5 @@ name=Update -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=ESP32 Sketch Update Library diff --git a/libraries/WebServer/library.properties b/libraries/WebServer/library.properties index e89eb90221c..33a24010ecc 100644 --- a/libraries/WebServer/library.properties +++ b/libraries/WebServer/library.properties @@ -1,5 +1,5 @@ name=WebServer -version=3.3.2 +version=3.3.3 author=Ivan Grokhotkov maintainer=Ivan Grokhtkov sentence=Simple web server library diff --git a/libraries/WiFi/library.properties b/libraries/WiFi/library.properties index 9c9a267361b..3f22467ad0d 100644 --- a/libraries/WiFi/library.properties +++ b/libraries/WiFi/library.properties @@ -1,5 +1,5 @@ name=WiFi -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=Enables network connection (local and Internet) using the ESP32 built-in WiFi. diff --git a/libraries/WiFiProv/library.properties b/libraries/WiFiProv/library.properties index 87bc5691201..134d86472f8 100644 --- a/libraries/WiFiProv/library.properties +++ b/libraries/WiFiProv/library.properties @@ -1,5 +1,5 @@ name=WiFiProv -version=3.3.2 +version=3.3.3 author=Switi Mhaiske maintainer=Hristo Gochkov sentence=Enables provisioning. diff --git a/libraries/Wire/library.properties b/libraries/Wire/library.properties index c4abd55152d..72f3278a8d7 100644 --- a/libraries/Wire/library.properties +++ b/libraries/Wire/library.properties @@ -1,5 +1,5 @@ name=Wire -version=3.3.2 +version=3.3.3 author=Hristo Gochkov maintainer=Hristo Gochkov sentence=Allows the communication between devices or sensors connected via Two Wire Interface Bus. For esp8266 boards. diff --git a/libraries/Zigbee/library.properties b/libraries/Zigbee/library.properties index 8cb401d713a..9f5fc6ef46e 100644 --- a/libraries/Zigbee/library.properties +++ b/libraries/Zigbee/library.properties @@ -1,5 +1,5 @@ name=Zigbee -version=3.3.2 +version=3.3.3 author=P-R-O-C-H-Y maintainer=Jan Procházka sentence=Enables zigbee connection with the ESP32 diff --git a/package.json b/package.json index f4b8a6824da..6c609c154bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "framework-arduinoespressif32", - "version": "3.3.2", + "version": "3.3.3", "description": "Arduino Wiring-based Framework for the Espressif ESP32, ESP32-P4, ESP32-S and ESP32-C series of SoCs", "keywords": [ "framework", diff --git a/platform.txt b/platform.txt index bdf1ba7e1b8..ff0f7c92062 100644 --- a/platform.txt +++ b/platform.txt @@ -1,5 +1,5 @@ name=ESP32 Arduino -version=3.3.2 +version=3.3.3 tools.esp32-arduino-libs.path={runtime.platform.path}/tools/esp32-arduino-libs tools.esp32-arduino-libs.path.windows={runtime.platform.path}\tools\esp32-arduino-libs