From 9e9eb27d0aa41b9a72a691e5e597dd5182f46d78 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Wed, 5 Nov 2025 23:33:37 -0300 Subject: [PATCH 01/17] fix(matter): IDF 5.4 CI error with ESP_OpenThread Include --- idf_component_examples/esp_matter_light/main/idf_component.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index e0286324591..bc6ee9312bb 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,6 +1,7 @@ dependencies: espressif/esp_matter: version: ">=1.3.0" + require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: version: ">=3.0.5" From e2520768be4f58f9715497f8b9cf4a45488e0f3c Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Wed, 5 Nov 2025 23:59:23 -0300 Subject: [PATCH 02/17] fix(matter): CMakeLists.txt simplification --- idf_component_examples/esp_matter_light/main/CMakeLists.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/idf_component_examples/esp_matter_light/main/CMakeLists.txt b/idf_component_examples/esp_matter_light/main/CMakeLists.txt index 6b91a8cf510..f18fa805695 100644 --- a/idf_component_examples/esp_matter_light/main/CMakeLists.txt +++ b/idf_component_examples/esp_matter_light/main/CMakeLists.txt @@ -1,5 +1,2 @@ idf_component_register(SRC_DIRS "." INCLUDE_DIRS ".") - -set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17) -target_compile_options(${COMPONENT_LIB} PRIVATE "-DCHIP_HAVE_CONFIG_H") From 186810d550b21d275cc23df834eb6fad4c4ebd0c Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 00:00:40 -0300 Subject: [PATCH 03/17] fix(matter): minimum Arduino Core version to 3.1.0 --- idf_component_examples/esp_matter_light/main/idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index bc6ee9312bb..65e0407d5f9 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -4,7 +4,7 @@ dependencies: require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: - version: ">=3.0.5" + version: ">=3.1.0" override_path: "../../../" pre_release: true From d074e57da3aeeb206e1805d2a7cefa45c643fa78 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 00:42:18 -0300 Subject: [PATCH 04/17] fix(matter): forcing openthread disabled - testing Added configuration to disable Matter over Thread. --- idf_component_examples/esp_matter_light/sdkconfig.defaults | 3 +++ 1 file changed, 3 insertions(+) diff --git a/idf_component_examples/esp_matter_light/sdkconfig.defaults b/idf_component_examples/esp_matter_light/sdkconfig.defaults index 8688318fa36..931c0491907 100644 --- a/idf_component_examples/esp_matter_light/sdkconfig.defaults +++ b/idf_component_examples/esp_matter_light/sdkconfig.defaults @@ -36,6 +36,9 @@ CONFIG_PARTITION_TABLE_OFFSET=0xC000 # Disable chip shell CONFIG_ENABLE_CHIP_SHELL=n +# Disable Matter over Thread +CONFIG_ENABLE_MATTER_OVER_THREAD=n + # Enable OTA Requester CONFIG_ENABLE_OTA_REQUESTOR=n From 9e1ff28d1448b68c46f32e5d93152bec3ca75ad4 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 01:18:10 -0300 Subject: [PATCH 05/17] fix(matter): enforces ESP Matter 1.3 --- idf_component_examples/esp_matter_light/main/idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index 65e0407d5f9..9f20b96777c 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,6 +1,6 @@ dependencies: espressif/esp_matter: - version: ">=1.3.0" + version: "^1.3.0" require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: From 202fdf03a1613cd368dab36ad211a72fb0ddff93 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 03:55:31 -0300 Subject: [PATCH 06/17] fix(matter): roll back change --- idf_component_examples/esp_matter_light/sdkconfig.defaults | 3 --- 1 file changed, 3 deletions(-) diff --git a/idf_component_examples/esp_matter_light/sdkconfig.defaults b/idf_component_examples/esp_matter_light/sdkconfig.defaults index 931c0491907..8688318fa36 100644 --- a/idf_component_examples/esp_matter_light/sdkconfig.defaults +++ b/idf_component_examples/esp_matter_light/sdkconfig.defaults @@ -36,9 +36,6 @@ CONFIG_PARTITION_TABLE_OFFSET=0xC000 # Disable chip shell CONFIG_ENABLE_CHIP_SHELL=n -# Disable Matter over Thread -CONFIG_ENABLE_MATTER_OVER_THREAD=n - # Enable OTA Requester CONFIG_ENABLE_OTA_REQUESTOR=n From 029c3cb74a42dbd9da753f32b57e96e092228f59 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 03:56:30 -0300 Subject: [PATCH 07/17] fix(matter): adjust matter version --- .../esp_matter_light/main/idf_component.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index 9f20b96777c..1241a423363 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,10 +1,10 @@ dependencies: espressif/esp_matter: - version: "^1.3.0" + version: "~1.3.0" require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: - version: ">=3.1.0" + version: ">=3.0.5" override_path: "../../../" pre_release: true From 17aa35695fbbf016b88c148a8068292b9cb6949c Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 04:29:34 -0300 Subject: [PATCH 08/17] fix(matter): reverses changes --- idf_component_examples/esp_matter_light/main/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/idf_component_examples/esp_matter_light/main/CMakeLists.txt b/idf_component_examples/esp_matter_light/main/CMakeLists.txt index f18fa805695..6b91a8cf510 100644 --- a/idf_component_examples/esp_matter_light/main/CMakeLists.txt +++ b/idf_component_examples/esp_matter_light/main/CMakeLists.txt @@ -1,2 +1,5 @@ idf_component_register(SRC_DIRS "." INCLUDE_DIRS ".") + +set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17) +target_compile_options(${COMPONENT_LIB} PRIVATE "-DCHIP_HAVE_CONFIG_H") From ed34d9d43c34050c6b5e644e998fe306b0c0b12e Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 04:30:24 -0300 Subject: [PATCH 09/17] fix(matter): reverse changes --- .../esp_matter_light/main/idf_component.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index 1241a423363..1c2b38cab37 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,7 +1,7 @@ dependencies: espressif/esp_matter: - version: "~1.3.0" - require: public + version: ">=1.3.0" +# require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: version: ">=3.0.5" From 22212ebb2c0bccc3fa2b5195ca59864fc33dde52 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 04:52:56 -0300 Subject: [PATCH 10/17] fix(matter): fixing versions --- .../esp_matter_light/main/idf_component.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index 1c2b38cab37..f8e99c46007 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,10 +1,12 @@ dependencies: + idf: + version: "5.1.4" espressif/esp_matter: - version: ">=1.3.0" + version: "1.3.0" # require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: - version: ">=3.0.5" + version: "3.0.5" override_path: "../../../" pre_release: true From aa4083996ed201fe2e906cb4aac78d64cd853141 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 04:56:16 -0300 Subject: [PATCH 11/17] fix(matter): fixes matter and arduino versions Removed idf dependency version from YAML. --- idf_component_examples/esp_matter_light/main/idf_component.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index f8e99c46007..86c4c68ac28 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,6 +1,4 @@ dependencies: - idf: - version: "5.1.4" espressif/esp_matter: version: "1.3.0" # require: public From c56f0df1e40f87617d8776ca27a6c96ea473ce6b Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 05:00:18 -0300 Subject: [PATCH 12/17] fix(matter): esp_matter version to 1.3.1 --- idf_component_examples/esp_matter_light/main/idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index 86c4c68ac28..b9091397ba7 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,6 +1,6 @@ dependencies: espressif/esp_matter: - version: "1.3.0" + version: "1.3.1" # require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: From b36dad361fa77a65d8577dff71646d51011a367b Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 05:30:05 -0300 Subject: [PATCH 13/17] fix(matter): guards secondary network interface creation --- libraries/Matter/src/MatterEndPoint.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/Matter/src/MatterEndPoint.cpp b/libraries/Matter/src/MatterEndPoint.cpp index ecf1acff579..a4d82b2fdb1 100644 --- a/libraries/Matter/src/MatterEndPoint.cpp +++ b/libraries/Matter/src/MatterEndPoint.cpp @@ -27,6 +27,8 @@ bool MatterEndPoint::createSecondaryNetworkInterface() { log_v("Secondary network interface endpoint already exists with ID %d", secondary_network_endpoint_id); return false; } + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD && CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION // Create a secondary network interface endpoint endpoint::secondary_network_interface::config_t secondary_network_interface_config; secondary_network_interface_config.network_commissioning.feature_map = chip::to_underlying( @@ -40,6 +42,11 @@ bool MatterEndPoint::createSecondaryNetworkInterface() { } secondary_network_endpoint_id = endpoint::get_id(endpoint); log_i("Secondary Network Interface created with endpoint_id %d", secondary_network_endpoint_id); +#else + log_i("Secondary Network Interface not supported"); + return false; +#endif + return true; } From c19090b67265a8607a0bba3bbe31dc52c65f4749 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 05:45:07 -0300 Subject: [PATCH 14/17] fix(matter): adds public requirement for esp_matter --- idf_component_examples/esp_matter_light/main/idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index b9091397ba7..e1a9a510040 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,7 +1,7 @@ dependencies: espressif/esp_matter: version: "1.3.1" -# require: public + require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: version: "3.0.5" From a57f256d22606161ee5e25636ac8d8d32eff3def Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 06:11:32 -0300 Subject: [PATCH 15/17] fix(matter): set esp_matter dependency version to 1.3.0 --- idf_component_examples/esp_matter_light/main/idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml index e1a9a510040..0a0ac4f046f 100644 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ b/idf_component_examples/esp_matter_light/main/idf_component.yml @@ -1,6 +1,6 @@ dependencies: espressif/esp_matter: - version: "1.3.1" + version: "1.3.0" require: public # Adds Arduino Core from GitHub repository using main branch espressif/arduino-esp32: From b1b5e1524d27bfc92a7eaecac05a3a91a78757e1 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Thu, 6 Nov 2025 06:25:30 -0300 Subject: [PATCH 16/17] feat(matter): removes very old esp_matter_light example This examples is outdated. --- .../esp_matter_light/CMakeLists.txt | 28 -- .../esp_matter_light/README.md | 124 ------ .../esp_matter_light/ci.yml | 8 - .../esp_matter_light/main/CMakeLists.txt | 5 - .../esp_matter_light/main/Kconfig.projbuild | 42 -- .../esp_matter_light/main/builtinLED.cpp | 237 ----------- .../esp_matter_light/main/builtinLED.h | 74 ---- .../esp_matter_light/main/idf_component.yml | 13 - .../main/matter_accessory_driver.cpp | 89 ---- .../main/matter_accessory_driver.h | 47 --- .../esp_matter_light/main/matter_light.cpp | 384 ------------------ .../esp_matter_light/partitions.csv | 10 - .../esp_matter_light/sdkconfig.defaults | 67 --- .../sdkconfig.defaults.c6_thread | 79 ---- .../sdkconfig.defaults.esp32c6 | 16 - 15 files changed, 1223 deletions(-) delete mode 100644 idf_component_examples/esp_matter_light/CMakeLists.txt delete mode 100644 idf_component_examples/esp_matter_light/README.md delete mode 100644 idf_component_examples/esp_matter_light/ci.yml delete mode 100644 idf_component_examples/esp_matter_light/main/CMakeLists.txt delete mode 100644 idf_component_examples/esp_matter_light/main/Kconfig.projbuild delete mode 100644 idf_component_examples/esp_matter_light/main/builtinLED.cpp delete mode 100644 idf_component_examples/esp_matter_light/main/builtinLED.h delete mode 100644 idf_component_examples/esp_matter_light/main/idf_component.yml delete mode 100644 idf_component_examples/esp_matter_light/main/matter_accessory_driver.cpp delete mode 100644 idf_component_examples/esp_matter_light/main/matter_accessory_driver.h delete mode 100644 idf_component_examples/esp_matter_light/main/matter_light.cpp delete mode 100644 idf_component_examples/esp_matter_light/partitions.csv delete mode 100644 idf_component_examples/esp_matter_light/sdkconfig.defaults delete mode 100644 idf_component_examples/esp_matter_light/sdkconfig.defaults.c6_thread delete mode 100644 idf_component_examples/esp_matter_light/sdkconfig.defaults.esp32c6 diff --git a/idf_component_examples/esp_matter_light/CMakeLists.txt b/idf_component_examples/esp_matter_light/CMakeLists.txt deleted file mode 100644 index 1430df8ff78..00000000000 --- a/idf_component_examples/esp_matter_light/CMakeLists.txt +++ /dev/null @@ -1,28 +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) - -set(PROJECT_VER "1.0") -set(PROJECT_VER_NUMBER 1) - -# This should be done before using the IDF_TARGET variable. -include($ENV{IDF_PATH}/tools/cmake/project.cmake) - -idf_build_set_property(MINIMAL_BUILD ON) -project(arduino_managed_component_light) - -# WARNING: This is just an example for using key for decrypting the encrypted OTA image -# Please do not use it as is. -if(CONFIG_ENABLE_ENCRYPTED_OTA) - target_add_binary_data(light.elf "esp_image_encryption_key.pem" TEXT) -endif() - -if(CONFIG_IDF_TARGET_ESP32C2) - include(relinker) -endif() - -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/esp_matter_light/README.md b/idf_component_examples/esp_matter_light/README.md deleted file mode 100644 index b0173f6a437..00000000000 --- a/idf_component_examples/esp_matter_light/README.md +++ /dev/null @@ -1,124 +0,0 @@ -| Supported Targets | ESP32-S3 | ESP32-C3 | ESP32-C6 | -| ----------------- | -------- | -------- | -------- | - - -# Managed Component Light - -This example sets automatically the RGB LED GPIO and BOOT Button GPIO based on the default pin used by the selected Devkit Board. - -This example creates a Color Temperature Light device using the esp_matter component downloaded from the [Espressif Component Registry](https://components.espressif.com/) instead of an extra component locally, so the example can work without setting up the esp-matter environment. - -Read the [documentation](https://docs.espressif.com/projects/esp-matter/en/latest/esp32/developing.html) for more information about building and flashing the firmware. - -The code is based on the Arduino API and uses Arduino as an IDF Component. - -## How to use it - -Once the device runs for the first time, it must be commissioned to the Matter Fabric of the available Matter Environment. -Possible Matter Environments are: -- Amazon Alexa -- Google Home Assistant (*) -- Apple Home -- Open Source Home Assistant - -(*) Google Home Assistant requires the user to set up a Matter Light using the [Google Home Developer Console](https://developers.home.google.com/codelabs/matter-device#2). It is necessary to create a Matter Light device with VID = 0xFFF1 and PID = 0x8000. Otherwise, the Light won't show up in the GHA APP. This action is necessary because the Firmware uses Testing credentials and Google requires the user to create the testing device before using it. - -**There is no QR Code** to be used when the Smartphone APP wants to add the Matter Device. -Please enter the code manually: `34970112332` - -Each Devkit Board has a built-in LED that will be used as the Matter Light. -The default setting for ESP32-S3 is pin 48, for ESP32-C3 and ESP32-C6, it is pin 8. -The BOOT Button pin of ESP32-S3 is GPIO 0, by toher hand, the ESP32-C3 and ESP32-C6 use GPIO 9. -Please change it in using the MenuConfig executing `idf.py menuconfig` and selecting `Menu->Light Matter Accessory` options. - -## LED Status and Factory Mode - -The WS2812b built-in LED will turn purple as soon as the device is flashed and runs for the first time. -The purple color indicates that the Matter Accessory has not been commissioned yet. -After using a Matter provider Smartphone APP to add a Matter device to your Home Application, it may turn orange to indicate that it has no Wi-Fi connection. - -Once it connects to the Wi-Fi network, the LED will turn white to indicate that Matter is working and the device is connected to the Matter Environment. -Please note that Matter over Wi-Fi using an ESP32 device will connect to a 2.4 GHz Wi-Fi SSID, therefore the Commissioner APP Smartphone shall be connected to this SSID. - -The Matter and Wi-Fi configuration will be stored in NVS to ensure that it will connect to the Matter Fabric and Wi-Fi Network again once it is reset. - -The Matter Smartphone APP will control the light state (ON/OFF), temperature (Warm/Cold White), and brightness. - -## On Board Light toggle button - -The built-in BOOT button will toggle On/Off and replicate the new state to the Matter Environment, making it visible in the Matter Smartphone APP as well. - -## Returning to the Factory State - -Holding the BOOT button pressed for more than 10 seconds and then releasing it will erase all Matter and Wi-Fi configuration, forcing it to reset to factory state. After that, the device needs to be commissioned again. -Previous setups done in the Smartphone APP won't work again; therefore, the virtual device shall be removed from the APP. - -## Building the Application using Wi-Fi and Matter - -Use ESP-IDF 5.1.4 from https://github.com/espressif/esp-idf/tree/release/v5.1 -This example has been tested with Arduino Core 3.0.4 - -The project will download all necessary components, including the Arduino Core. -Execute this sequence: - ` using linux rm command or Windows rmdir command` - `idf.py set-target ` - `idf.py -D SDKCONFIG_DEFAULTS="sdkconfig_file1;sdkconfig_file2;sdkconfig_fileX" -p flash monitor` - -Example for ESP32-S3/Linux | macOS: -``` -rm -rf build -idf.py set-target esp32s3 -idf.py -D SDKCONFIG_DEFAULTS="sdkconfig.defaults" -p /dev/ttyACM0 flash monitor -``` -Example for ESP32-C3/Windows: -``` -rmdir /s/q build -idf.py set-target esp32c3 -idf.py -D SDKCONFIG_DEFAULTS="sdkconfig.defaults" -p com3 flash monitor -``` - -It may be necessary to delete some folders and files before running `idf.py` -- Linux/macOS: - ``` - rm -rf build managed_components sdkconfig dependencies.lock - ``` -- Windows: - ``` - rmdir /s/q build managed_components && del sdkconfig dependencies.lock - ``` - -There is a configuration file for these SoC: esp32s3, esp32c3, esp32c6. -Those are the tested devices that have a WS2812 RGB LED and can run BLE, Wi-Fi and Matter. - -In case it is necessary to change the Button Pin or the REG LED Pin, please use the `menuconfig` -`idf.py menuconfig` and change the Menu Option `Light Matter Accessory` - -## Building the Application using OpenThread and Matter - -This is possible with the ESP32-C6. -It is necessary to have a Thread Border Router in the Matter Environment. -Check your Matter hardware provider. -In order to build the application that will use Thread Networking instead of Wi-Fi, please execute: - -Example for ESP32-C6/Linux | macOS: -``` -rm -rf build -idf.py set-target esp32c6 -idf.py -D SDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.defaults.c6_thread" -p /dev/ttyACM0 flash monitor -``` -Example for ESP32-C6/Windows: -``` -rmdir /s/q build -idf.py set-targt esp32c6 -idf.py -D SDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.defaults.c6_thread" -p com3 flash monitor -``` - -It may be necessary to delete some folders and files before running `idf.py` -- Linux/macOS - ``` - rm -rf build managed_components sdkconfig dependencies.lock - ``` -- Windows - ``` - rmdir /s/q build managed_components && del sdkconfig dependencies.lock - ``` diff --git a/idf_component_examples/esp_matter_light/ci.yml b/idf_component_examples/esp_matter_light/ci.yml deleted file mode 100644 index 4eee72b8c3b..00000000000 --- a/idf_component_examples/esp_matter_light/ci.yml +++ /dev/null @@ -1,8 +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/main/CMakeLists.txt b/idf_component_examples/esp_matter_light/main/CMakeLists.txt deleted file mode 100644 index 6b91a8cf510..00000000000 --- a/idf_component_examples/esp_matter_light/main/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -idf_component_register(SRC_DIRS "." - INCLUDE_DIRS ".") - -set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17) -target_compile_options(${COMPONENT_LIB} PRIVATE "-DCHIP_HAVE_CONFIG_H") diff --git a/idf_component_examples/esp_matter_light/main/Kconfig.projbuild b/idf_component_examples/esp_matter_light/main/Kconfig.projbuild deleted file mode 100644 index 3e0a35c5e15..00000000000 --- a/idf_component_examples/esp_matter_light/main/Kconfig.projbuild +++ /dev/null @@ -1,42 +0,0 @@ -menu "Light Matter Accessory" - menu "On Board Light ON/OFF Button" - config BUTTON_PIN - int - prompt "Button 1 GPIO" - default 9 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 - default 0 - range -1 ENV_GPIO_IN_RANGE_MAX - help - The GPIO pin for button that will be used to turn on/off the Matter Light. It shall be connected to a push button. It can use the BOOT button of the development board. - endmenu - - menu "LEDs" - config WS2812_PIN - int - prompt "WS2812 RGB LED GPIO" - default 8 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 - default 48 - range -1 ENV_GPIO_OUT_RANGE_MAX - help - The GPIO pin for the Matter Light that will be driven by RMT. It shall be connected to one single WS2812 RGB LED. - endmenu - - config ENV_GPIO_RANGE_MIN - int - default 0 - - config ENV_GPIO_RANGE_MAX - int - default 19 if IDF_TARGET_ESP32C3 - default 30 if IDF_TARGET_ESP32C6 - default 48 - - config ENV_GPIO_IN_RANGE_MAX - int - default ENV_GPIO_RANGE_MAX - - config ENV_GPIO_OUT_RANGE_MAX - int - default ENV_GPIO_RANGE_MAX - -endmenu diff --git a/idf_component_examples/esp_matter_light/main/builtinLED.cpp b/idf_component_examples/esp_matter_light/main/builtinLED.cpp deleted file mode 100644 index 8795dde2756..00000000000 --- a/idf_component_examples/esp_matter_light/main/builtinLED.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/* - This example code is in the Public Domain (or CC0 licensed, at your option.) - Unless required by applicable law or agreed to in writing, this - software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. - This will implement the onboard WS2812b LED as a LED indicator - It can be used to indicate some state or status of the device - The LED can be controlled using RGB, HSV or color temperature, brightness - - In this example, the LED Indicator class is used as the Matter light accessory -*/ - -#include "builtinLED.h" - -typedef struct { - uint16_t hue; - uint8_t saturation; -} HS_color_t; - -static const HS_color_t temperatureTable[] = { - {4, 100}, {8, 100}, {11, 100}, {14, 100}, {16, 100}, {18, 100}, {20, 100}, {22, 100}, {24, 100}, {25, 100}, {27, 100}, {28, 100}, {30, 100}, {31, 100}, - {31, 95}, {30, 89}, {30, 85}, {29, 80}, {29, 76}, {29, 73}, {29, 69}, {28, 66}, {28, 63}, {28, 60}, {28, 57}, {28, 54}, {28, 52}, {27, 49}, - {27, 47}, {27, 45}, {27, 43}, {27, 41}, {27, 39}, {27, 37}, {27, 35}, {27, 33}, {27, 31}, {27, 30}, {27, 28}, {27, 26}, {27, 25}, {27, 23}, - {27, 22}, {27, 21}, {27, 19}, {27, 18}, {27, 17}, {27, 15}, {28, 14}, {28, 13}, {28, 12}, {29, 10}, {29, 9}, {30, 8}, {31, 7}, {32, 6}, - {34, 5}, {36, 4}, {41, 3}, {49, 2}, {0, 0}, {294, 2}, {265, 3}, {251, 4}, {242, 5}, {237, 6}, {233, 7}, {231, 8}, {229, 9}, {228, 10}, - {227, 11}, {226, 11}, {226, 12}, {225, 13}, {225, 13}, {224, 14}, {224, 14}, {224, 15}, {224, 15}, {223, 16}, {223, 16}, {223, 17}, {223, 17}, {223, 17}, - {222, 18}, {222, 18}, {222, 19}, {222, 19}, {222, 19}, {222, 19}, {222, 20}, {222, 20}, {222, 20}, {222, 21}, {222, 21} -}; - -/* step brightness table: gamma = 2.3 */ -static const uint8_t gamma_table[MAX_PROGRESS] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, - 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, - 21, 22, 22, 23, 23, 24, 25, 25, 26, 26, 27, 28, 28, 29, 30, 30, 31, 32, 33, 33, 34, 35, 36, 36, 37, 38, 39, 40, 40, - 41, 42, 43, 44, 45, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 91, 92, 93, 95, 96, 97, 99, 100, 101, 103, 104, - 105, 107, 108, 110, 111, 112, 114, 115, 117, 118, 120, 121, 123, 124, 126, 128, 129, 131, 132, 134, 135, 137, 139, 140, 142, 144, 145, 147, 149, - 150, 152, 154, 156, 157, 159, 161, 163, 164, 166, 168, 170, 172, 174, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, - 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 226, 228, 230, 232, 234, 236, 239, 241, 243, 245, 248, 250, 252, 255, -}; - -BuiltInLED::BuiltInLED() { - pin_number = (uint8_t)-1; // no pin number - state = false; // LED is off - hsv_color.value = 0; // black color -} - -BuiltInLED::~BuiltInLED() { - end(); -} - -led_indicator_color_hsv_t BuiltInLED::rgb2hsv(led_indicator_color_rgb_t rgb) { - led_indicator_color_hsv_t hsv; - uint8_t minRGB, maxRGB; - uint8_t delta; - - minRGB = rgb.r < rgb.g ? (rgb.r < rgb.b ? rgb.r : rgb.b) : (rgb.g < rgb.b ? rgb.g : rgb.b); - maxRGB = rgb.r > rgb.g ? (rgb.r > rgb.b ? rgb.r : rgb.b) : (rgb.g > rgb.b ? rgb.g : rgb.b); - hsv.value = 0; - hsv.v = maxRGB; - delta = maxRGB - minRGB; - - if (delta == 0) { - hsv.h = 0; - hsv.s = 0; - } else { - hsv.s = delta * 255 / maxRGB; - - if (rgb.r == maxRGB) { - hsv.h = (60 * (rgb.g - rgb.b) / delta + 360) % 360; - } else if (rgb.g == maxRGB) { - hsv.h = (60 * (rgb.b - rgb.r) / delta + 120); - } else { - hsv.h = (60 * (rgb.r - rgb.g) / delta + 240); - } - } - return hsv; -} - -led_indicator_color_rgb_t BuiltInLED::hsv2rgb(led_indicator_color_hsv_t hsv) { - led_indicator_color_rgb_t rgb; - uint8_t rgb_max = hsv.v; - uint8_t rgb_min = rgb_max * (255 - hsv.s) / 255.0f; - - uint8_t i = hsv.h / 60; - uint8_t diff = hsv.h % 60; - - // RGB adjustment amount by hue - uint8_t rgb_adj = (rgb_max - rgb_min) * diff / 60; - rgb.value = 0; - switch (i) { - case 0: - rgb.r = rgb_max; - rgb.g = rgb_min + rgb_adj; - rgb.b = rgb_min; - break; - case 1: - rgb.r = rgb_max - rgb_adj; - rgb.g = rgb_max; - rgb.b = rgb_min; - break; - case 2: - rgb.r = rgb_min; - rgb.g = rgb_max; - rgb.b = rgb_min + rgb_adj; - break; - case 3: - rgb.r = rgb_min; - rgb.g = rgb_max - rgb_adj; - rgb.b = rgb_max; - break; - case 4: - rgb.r = rgb_min + rgb_adj; - rgb.g = rgb_min; - rgb.b = rgb_max; - break; - default: - rgb.r = rgb_max; - rgb.g = rgb_min; - rgb.b = rgb_max - rgb_adj; - break; - } - - // gamma correction - rgb.r = gamma_table[rgb.r]; - rgb.g = gamma_table[rgb.g]; - rgb.b = gamma_table[rgb.b]; - return rgb; -} - -void BuiltInLED::begin(uint8_t pin) { - if (pin < NUM_DIGITAL_PINS) { - pin_number = pin; - log_i("Initializing pin %d", pin); - } else { - log_e("Invalid pin (%d) number", pin); - } -} -void BuiltInLED::end() { - state = false; - write(); // turn off the LED - if (pin_number < NUM_DIGITAL_PINS) { - if (!rmtDeinit(pin_number)) { - log_e("Failed to deinitialize RMT"); - } - } -} - -void BuiltInLED::on() { - state = true; -} - -void BuiltInLED::off() { - state = false; -} - -void BuiltInLED::toggle() { - state = !state; -} - -bool BuiltInLED::getState() { - return state; -} - -bool BuiltInLED::write() { - led_indicator_color_rgb_t rgb_color = getRGB(); - log_d("Writing to pin %d with state = %s", pin_number, state ? "ON" : "OFF"); - log_d("HSV: %d, %d, %d", hsv_color.h, hsv_color.s, hsv_color.v); - log_d("RGB: %d, %d, %d", rgb_color.r, rgb_color.g, rgb_color.b); - if (pin_number < NUM_DIGITAL_PINS) { - if (state) { - rgbLedWrite(pin_number, rgb_color.r, rgb_color.g, rgb_color.b); - } else { - rgbLedWrite(pin_number, 0, 0, 0); - } - return true; - } else { - log_e("Invalid pin (%d) number", pin_number); - return false; - } -} - -void BuiltInLED::setBrightness(uint8_t brightness) { - hsv_color.v = brightness; -} - -uint8_t BuiltInLED::getBrightness() { - return hsv_color.v; -} - -void BuiltInLED::setHSV(led_indicator_color_hsv_t hsv) { - if (hsv.h > MAX_HUE) { - hsv.h = MAX_HUE; - } - hsv_color.value = hsv.value; -} - -led_indicator_color_hsv_t BuiltInLED::getHSV() { - return hsv_color; -} - -void BuiltInLED::setRGB(led_indicator_color_rgb_t rgb_color) { - hsv_color = rgb2hsv(rgb_color); -} - -led_indicator_color_rgb_t BuiltInLED::getRGB() { - return hsv2rgb(hsv_color); -} - -void BuiltInLED::setTemperature(uint32_t temperature) { - uint16_t hue; - uint8_t saturation; - - log_d("Requested Temperature: %ld", temperature); - //hsv_color.v = gamma_table[((temperature >> 25) & 0x7F)]; - temperature &= 0xFFFFFF; - if (temperature < 600) { - hue = 0; - saturation = 100; - } else { - if (temperature > 10000) { - hue = 222; - saturation = 21 + (temperature - 10000) * 41 / 990000; - } else { - temperature -= 600; - temperature /= 100; - hue = temperatureTable[temperature].hue; - saturation = temperatureTable[temperature].saturation; - } - } - saturation = (saturation * 255) / 100; - // brightness is not changed - hsv_color.h = hue; - hsv_color.s = saturation; - log_d("Calculated Temperature: %ld, Hue: %d, Saturation: %d, Brightness: %d", temperature, hue, saturation, hsv_color.v); -} diff --git a/idf_component_examples/esp_matter_light/main/builtinLED.h b/idf_component_examples/esp_matter_light/main/builtinLED.h deleted file mode 100644 index 1ca8c935569..00000000000 --- a/idf_component_examples/esp_matter_light/main/builtinLED.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - This example code is in the Public Domain (or CC0 licensed, at your option.) - Unless required by applicable law or agreed to in writing, this - software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. - This will implement the onboard WS2812b LED as a LED indicator - It can be used to indicate some state or status of the device - The LED can be controlled using RGB, HSV or color temperature, brightness - - In this example, the BuiltInLED class is used as the Matter light accessory -*/ - -#pragma once - -#include - -#define MAX_HUE 360 -#define MAX_SATURATION 255 -#define MAX_BRIGHTNESS 255 -#define MAX_PROGRESS 256 - -typedef struct { - union { - struct { - uint32_t v : 8; /*!< Brightness/Value of the LED. 0-255 */ - uint32_t s : 8; /*!< Saturation of the LED. 0-255 */ - uint32_t h : 9; /*!< Hue of the LED. 0-360 */ - }; - uint32_t value; /*!< IHSV value of the LED. */ - }; -} led_indicator_color_hsv_t; - -typedef struct { - union { - struct { - uint32_t r : 8; /*!< Red component of the LED color. Range: 0-255. */ - uint32_t g : 8; /*!< Green component of the LED color. Range: 0-255. */ - uint32_t b : 8; /*!< Blue component of the LED color. Range: 0-255. */ - }; - uint32_t value; /*!< Combined RGB value of the LED color. */ - }; -} led_indicator_color_rgb_t; - -class BuiltInLED { -private: - uint8_t pin_number; - bool state; - led_indicator_color_hsv_t hsv_color; - -public: - BuiltInLED(); - ~BuiltInLED(); - - static led_indicator_color_hsv_t rgb2hsv(led_indicator_color_rgb_t rgb_value); - static led_indicator_color_rgb_t hsv2rgb(led_indicator_color_hsv_t hsv); - - void begin(uint8_t pin); - void end(); - - void on(); - void off(); - void toggle(); - bool getState(); - - bool write(); - - void setBrightness(uint8_t brightness); - uint8_t getBrightness(); - void setHSV(led_indicator_color_hsv_t hsv); - led_indicator_color_hsv_t getHSV(); - void setRGB(led_indicator_color_rgb_t color); - led_indicator_color_rgb_t getRGB(); - void setTemperature(uint32_t temperature); -}; diff --git a/idf_component_examples/esp_matter_light/main/idf_component.yml b/idf_component_examples/esp_matter_light/main/idf_component.yml deleted file mode 100644 index 0a0ac4f046f..00000000000 --- a/idf_component_examples/esp_matter_light/main/idf_component.yml +++ /dev/null @@ -1,13 +0,0 @@ -dependencies: - espressif/esp_matter: - version: "1.3.0" - require: public - # Adds Arduino Core from GitHub repository using main branch - espressif/arduino-esp32: - version: "3.0.5" - override_path: "../../../" - pre_release: true - - # testing - using Arduino from the repository - # version: "master" # branch or commit - # git: https://github.com/espressif/arduino-esp32.git diff --git a/idf_component_examples/esp_matter_light/main/matter_accessory_driver.cpp b/idf_component_examples/esp_matter_light/main/matter_accessory_driver.cpp deleted file mode 100644 index 523c38e6855..00000000000 --- a/idf_component_examples/esp_matter_light/main/matter_accessory_driver.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* - This example code is in the Public Domain (or CC0 licensed, at your option.) - Unless required by applicable law or agreed to in writing, this - software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. -*/ -#include -#include -#include -#include "builtinLED.h" -#include "matter_accessory_driver.h" - -/* Do any conversions/remapping for the actual value here */ -esp_err_t light_accessory_set_power(void *led, uint8_t val) { - BuiltInLED *builtinLED = (BuiltInLED *)led; - esp_err_t err = ESP_OK; - if (val) { - builtinLED->on(); - } else { - builtinLED->off(); - } - if (!builtinLED->write()) { - err = ESP_FAIL; - } - log_i("LED set power: %d", val); - return err; -} - -esp_err_t light_accessory_set_brightness(void *led, uint8_t val) { - esp_err_t err = ESP_OK; - BuiltInLED *builtinLED = (BuiltInLED *)led; - int value = REMAP_TO_RANGE(val, MATTER_BRIGHTNESS, STANDARD_BRIGHTNESS); - - builtinLED->setBrightness(value); - if (!builtinLED->write()) { - err = ESP_FAIL; - } - log_i("LED set brightness: %d", value); - return err; -} - -esp_err_t light_accessory_set_hue(void *led, uint8_t val) { - esp_err_t err = ESP_OK; - BuiltInLED *builtinLED = (BuiltInLED *)led; - int value = REMAP_TO_RANGE(val, MATTER_HUE, STANDARD_HUE); - led_indicator_color_hsv_t hsv = builtinLED->getHSV(); - hsv.h = value; - builtinLED->setHSV(hsv); - if (!builtinLED->write()) { - err = ESP_FAIL; - } - log_i("LED set hue: %d", value); - return err; -} - -esp_err_t light_accessory_set_saturation(void *led, uint8_t val) { - esp_err_t err = ESP_OK; - BuiltInLED *builtinLED = (BuiltInLED *)led; - int value = REMAP_TO_RANGE(val, MATTER_SATURATION, STANDARD_SATURATION); - led_indicator_color_hsv_t hsv = builtinLED->getHSV(); - hsv.s = value; - builtinLED->setHSV(hsv); - if (!builtinLED->write()) { - err = ESP_FAIL; - } - log_i("LED set saturation: %d", value); - return err; -} - -esp_err_t light_accessory_set_temperature(void *led, uint16_t val) { - esp_err_t err = ESP_OK; - BuiltInLED *builtinLED = (BuiltInLED *)led; - uint32_t value = REMAP_TO_RANGE_INVERSE(val, STANDARD_TEMPERATURE_FACTOR); - builtinLED->setTemperature(value); - if (!builtinLED->write()) { - err = ESP_FAIL; - } - log_i("LED set temperature: %ld", value); - return err; -} - -app_driver_handle_t light_accessory_init() { - /* Initialize led */ - static BuiltInLED builtinLED; - - const uint8_t pin = WS2812_PIN; // set your board WS2812b pin here - builtinLED.begin(pin); - return (app_driver_handle_t)&builtinLED; -} diff --git a/idf_component_examples/esp_matter_light/main/matter_accessory_driver.h b/idf_component_examples/esp_matter_light/main/matter_accessory_driver.h deleted file mode 100644 index 3bf6655ab16..00000000000 --- a/idf_component_examples/esp_matter_light/main/matter_accessory_driver.h +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include - -// set your board WS2812b pin here (e.g. 48 is the default pin for the ESP32-S3 devkit) -#ifndef CONFIG_WS2812_PIN -#define WS2812_PIN 48 // ESP32-S3 DevKitC built-in LED -#else -#define WS2812_PIN CONFIG_WS2812_PIN // From sdkconfig.defaults. -#endif - -#ifndef RGB_BUILTIN -#define RGB_BUILTIN WS2812_PIN -#endif - -// Set your board button pin here (e.g. 0 is the default pin for the ESP32-S3 devkit) -#ifndef CONFIG_BUTTON_PIN -#define BUTTON_PIN 0 // ESP32-S3 DevKitC built-in button -#else -#define BUTTON_PIN CONFIG_BUTTON_PIN // From sdkconfig.defaults. -#endif - -/** Standard max values (used for remapping attributes) */ -#define STANDARD_BRIGHTNESS 255 -#define STANDARD_HUE 360 -#define STANDARD_SATURATION 255 -#define STANDARD_TEMPERATURE_FACTOR 1000000 - -/** Matter max values (used for remapping attributes) */ -#define MATTER_BRIGHTNESS 254 -#define MATTER_HUE 254 -#define MATTER_SATURATION 254 -#define MATTER_TEMPERATURE_FACTOR 1000000 - -/** Default attribute values used during initialization */ -#define DEFAULT_POWER true -#define DEFAULT_BRIGHTNESS 64 -#define DEFAULT_HUE 128 -#define DEFAULT_SATURATION 254 - -typedef void *app_driver_handle_t; - -esp_err_t light_accessory_set_power(void *led, uint8_t val); -esp_err_t light_accessory_set_brightness(void *led, uint8_t val); -esp_err_t light_accessory_set_hue(void *led, uint8_t val); -esp_err_t light_accessory_set_saturation(void *led, uint8_t val); -esp_err_t light_accessory_set_temperature(void *led, uint16_t val); -app_driver_handle_t light_accessory_init(); diff --git a/idf_component_examples/esp_matter_light/main/matter_light.cpp b/idf_component_examples/esp_matter_light/main/matter_light.cpp deleted file mode 100644 index 6079ce46add..00000000000 --- a/idf_component_examples/esp_matter_light/main/matter_light.cpp +++ /dev/null @@ -1,384 +0,0 @@ -/* - This example code is in the Public Domain (or CC0 licensed, at your option.) - Unless required by applicable law or agreed to in writing, this - software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. -*/ -#include -#include "matter_accessory_driver.h" - -#include - -#include -#include -#include - -#include -#include - -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD -#include -#include "esp_openthread_types.h" - -#define ESP_OPENTHREAD_DEFAULT_RADIO_CONFIG() \ - { .radio_mode = RADIO_MODE_NATIVE, } - -#define ESP_OPENTHREAD_DEFAULT_HOST_CONFIG() \ - { .host_connection_mode = HOST_CONNECTION_MODE_NONE, } - -#define ESP_OPENTHREAD_DEFAULT_PORT_CONFIG() \ - { .storage_partition_name = "nvs", .netif_queue_size = 10, .task_queue_size = 10, } -#endif - -// set your board button pin here -const uint8_t button_gpio = BUTTON_PIN; // GPIO BOOT Button - -uint16_t light_endpoint_id = 0; - -using namespace esp_matter; -using namespace esp_matter::attribute; -using namespace esp_matter::endpoint; -using namespace chip::app::Clusters; - -constexpr auto k_timeout_seconds = 300; - -#if CONFIG_ENABLE_ENCRYPTED_OTA -extern const char decryption_key_start[] asm("_binary_esp_image_encryption_key_pem_start"); -extern const char decryption_key_end[] asm("_binary_esp_image_encryption_key_pem_end"); - -static const char *s_decryption_key = decryption_key_start; -static const uint16_t s_decryption_key_len = decryption_key_end - decryption_key_start; -#endif // CONFIG_ENABLE_ENCRYPTED_OTA - -bool isAccessoryCommissioned() { - return chip::Server::GetInstance().GetFabricTable().FabricCount() > 0; -} - -#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION -bool isWifiConnected() { - return chip::DeviceLayer::ConnectivityMgr().IsWiFiStationConnected(); -} -#endif - -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD -bool isThreadConnected() { - return chip::DeviceLayer::ConnectivityMgr().IsThreadAttached(); -} -#endif - -static void app_event_cb(const ChipDeviceEvent *event, intptr_t arg) { - switch (event->Type) { - case chip::DeviceLayer::DeviceEventType::kInterfaceIpAddressChanged: - log_i( - "Interface %s Address changed", event->InterfaceIpAddressChanged.Type == chip::DeviceLayer::InterfaceIpChangeType::kIpV4_Assigned ? "IPv4" : "IPV6" - ); - break; - - case chip::DeviceLayer::DeviceEventType::kCommissioningComplete: log_i("Commissioning complete"); break; - - case chip::DeviceLayer::DeviceEventType::kFailSafeTimerExpired: log_i("Commissioning failed, fail safe timer expired"); break; - - case chip::DeviceLayer::DeviceEventType::kCommissioningSessionStarted: log_i("Commissioning session started"); break; - - case chip::DeviceLayer::DeviceEventType::kCommissioningSessionStopped: log_i("Commissioning session stopped"); break; - - case chip::DeviceLayer::DeviceEventType::kCommissioningWindowOpened: log_i("Commissioning window opened"); break; - - case chip::DeviceLayer::DeviceEventType::kCommissioningWindowClosed: log_i("Commissioning window closed"); break; - - case chip::DeviceLayer::DeviceEventType::kFabricRemoved: - { - log_i("Fabric removed successfully"); - if (chip::Server::GetInstance().GetFabricTable().FabricCount() == 0) { - chip::CommissioningWindowManager &commissionMgr = chip::Server::GetInstance().GetCommissioningWindowManager(); - constexpr auto kTimeoutSeconds = chip::System::Clock::Seconds16(k_timeout_seconds); - if (!commissionMgr.IsCommissioningWindowOpen()) { - /* After removing last fabric, this example does not remove the Wi-Fi credentials - * and still has IP connectivity so, only advertising on DNS-SD. - */ - CHIP_ERROR err = commissionMgr.OpenBasicCommissioningWindow(kTimeoutSeconds, chip::CommissioningWindowAdvertisement::kDnssdOnly); - if (err != CHIP_NO_ERROR) { - log_e("Failed to open commissioning window, err:%" CHIP_ERROR_FORMAT, err.Format()); - } - } - } - break; - } - - case chip::DeviceLayer::DeviceEventType::kFabricWillBeRemoved: log_i("Fabric will be removed"); break; - - case chip::DeviceLayer::DeviceEventType::kFabricUpdated: log_i("Fabric is updated"); break; - - case chip::DeviceLayer::DeviceEventType::kFabricCommitted: log_i("Fabric is committed"); break; - - case chip::DeviceLayer::DeviceEventType::kBLEDeinitialized: log_i("BLE deinitialized and memory reclaimed"); break; - - default: break; - } -} - -esp_err_t matter_light_attribute_update( - app_driver_handle_t driver_handle, uint16_t endpoint_id, uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *val -) { - esp_err_t err = ESP_OK; - if (endpoint_id == light_endpoint_id) { - void *led = (void *)driver_handle; - if (cluster_id == OnOff::Id) { - if (attribute_id == OnOff::Attributes::OnOff::Id) { - err = light_accessory_set_power(led, val->val.b); - } - } else if (cluster_id == LevelControl::Id) { - if (attribute_id == LevelControl::Attributes::CurrentLevel::Id) { - err = light_accessory_set_brightness(led, val->val.u8); - } - } else if (cluster_id == ColorControl::Id) { - if (attribute_id == ColorControl::Attributes::CurrentHue::Id) { - err = light_accessory_set_hue(led, val->val.u8); - } else if (attribute_id == ColorControl::Attributes::CurrentSaturation::Id) { - err = light_accessory_set_saturation(led, val->val.u8); - } else if (attribute_id == ColorControl::Attributes::ColorTemperatureMireds::Id) { - err = light_accessory_set_temperature(led, val->val.u16); - } - } - } - return err; -} - -esp_err_t matter_light_set_defaults(uint16_t endpoint_id) { - esp_err_t err = ESP_OK; - - void *led = endpoint::get_priv_data(endpoint_id); - node_t *node = node::get(); - endpoint_t *endpoint = endpoint::get(node, endpoint_id); - cluster_t *cluster = NULL; - attribute_t *attribute = NULL; - esp_matter_attr_val_t val = esp_matter_invalid(NULL); - - /* Setting brightness */ - cluster = cluster::get(endpoint, LevelControl::Id); - attribute = attribute::get(cluster, LevelControl::Attributes::CurrentLevel::Id); - attribute::get_val(attribute, &val); - err |= light_accessory_set_brightness(led, val.val.u8); - - /* Setting color */ - cluster = cluster::get(endpoint, ColorControl::Id); - attribute = attribute::get(cluster, ColorControl::Attributes::ColorMode::Id); - attribute::get_val(attribute, &val); - if (val.val.u8 == (uint8_t)ColorControl::ColorMode::kCurrentHueAndCurrentSaturation) { - /* Setting hue */ - attribute = attribute::get(cluster, ColorControl::Attributes::CurrentHue::Id); - attribute::get_val(attribute, &val); - err |= light_accessory_set_hue(led, val.val.u8); - /* Setting saturation */ - attribute = attribute::get(cluster, ColorControl::Attributes::CurrentSaturation::Id); - attribute::get_val(attribute, &val); - err |= light_accessory_set_saturation(led, val.val.u8); - } else if (val.val.u8 == (uint8_t)ColorControl::ColorMode::kColorTemperature) { - /* Setting temperature */ - attribute = attribute::get(cluster, ColorControl::Attributes::ColorTemperatureMireds::Id); - attribute::get_val(attribute, &val); - err |= light_accessory_set_temperature(led, val.val.u16); - } else { - log_e("Color mode not supported"); - } - - /* Setting power */ - cluster = cluster::get(endpoint, OnOff::Id); - attribute = attribute::get(cluster, OnOff::Attributes::OnOff::Id); - attribute::get_val(attribute, &val); - err |= light_accessory_set_power(led, val.val.b); - - return err; -} - -void button_driver_init() { - /* Initialize button */ - pinMode(button_gpio, INPUT_PULLUP); -} - -// This callback is called for every attribute update. The callback implementation shall -// handle the desired attributes and return an appropriate error code. If the attribute -// is not of your interest, please do not return an error code and strictly return ESP_OK. -static esp_err_t app_attribute_update_cb( - attribute::callback_type_t type, uint16_t endpoint_id, uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *val, void *priv_data -) { - esp_err_t err = ESP_OK; - - if (type == PRE_UPDATE) { - /* Driver update */ - app_driver_handle_t driver_handle = (app_driver_handle_t)priv_data; - err = matter_light_attribute_update(driver_handle, endpoint_id, cluster_id, attribute_id, val); - } - - return err; -} - -// This callback is invoked when clients interact with the Identify Cluster. -// In the callback implementation, an endpoint can identify itself. (e.g., by flashing an LED or light). -static esp_err_t app_identification_cb(identification::callback_type_t type, uint16_t endpoint_id, uint8_t effect_id, uint8_t effect_variant, void *priv_data) { - log_i("Identification callback: type: %u, effect: %u, variant: %u", type, effect_id, effect_variant); - return ESP_OK; -} - -void setup() { - esp_err_t err = ESP_OK; - - /* Initialize driver */ - app_driver_handle_t light_handle = light_accessory_init(); - button_driver_init(); - - /* Create a Matter node and add the mandatory Root Node device type on endpoint 0 */ - node::config_t node_config; - - // node handle can be used to add/modify other endpoints. - node_t *node = node::create(&node_config, app_attribute_update_cb, app_identification_cb); - if (node == nullptr) { - log_e("Failed to create Matter node"); - abort(); - } - - extended_color_light::config_t light_config; - light_config.on_off.on_off = DEFAULT_POWER; - light_config.on_off.lighting.start_up_on_off = nullptr; - light_config.level_control.current_level = DEFAULT_BRIGHTNESS; - light_config.level_control.lighting.start_up_current_level = DEFAULT_BRIGHTNESS; - light_config.color_control.color_mode = (uint8_t)ColorControl::ColorMode::kColorTemperature; - light_config.color_control.enhanced_color_mode = (uint8_t)ColorControl::ColorMode::kColorTemperature; - light_config.color_control.color_temperature.startup_color_temperature_mireds = nullptr; - - // endpoint handles can be used to add/modify clusters. - endpoint_t *endpoint = extended_color_light::create(node, &light_config, ENDPOINT_FLAG_NONE, light_handle); - if (endpoint == nullptr) { - log_e("Failed to create extended color light endpoint"); - abort(); - } - - light_endpoint_id = endpoint::get_id(endpoint); - log_i("Light created with endpoint_id %d", light_endpoint_id); - - /* Mark deferred persistence for some attributes that might be changed rapidly */ - cluster_t *level_control_cluster = cluster::get(endpoint, LevelControl::Id); - attribute_t *current_level_attribute = attribute::get(level_control_cluster, LevelControl::Attributes::CurrentLevel::Id); - attribute::set_deferred_persistence(current_level_attribute); - - cluster_t *color_control_cluster = cluster::get(endpoint, ColorControl::Id); - attribute_t *current_x_attribute = attribute::get(color_control_cluster, ColorControl::Attributes::CurrentX::Id); - attribute::set_deferred_persistence(current_x_attribute); - attribute_t *current_y_attribute = attribute::get(color_control_cluster, ColorControl::Attributes::CurrentY::Id); // codespell:ignore - attribute::set_deferred_persistence(current_y_attribute); - attribute_t *color_temp_attribute = attribute::get(color_control_cluster, ColorControl::Attributes::ColorTemperatureMireds::Id); - attribute::set_deferred_persistence(color_temp_attribute); - -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD - /* Set OpenThread platform config */ - esp_openthread_platform_config_t config = { - .radio_config = ESP_OPENTHREAD_DEFAULT_RADIO_CONFIG(), - .host_config = ESP_OPENTHREAD_DEFAULT_HOST_CONFIG(), - .port_config = ESP_OPENTHREAD_DEFAULT_PORT_CONFIG(), - }; - set_openthread_platform_config(&config); -#endif - - /* Matter start */ - err = esp_matter::start(app_event_cb); - if (err != ESP_OK) { - log_e("Failed to start Matter, err:%d", err); - abort(); - } - -#if CONFIG_ENABLE_ENCRYPTED_OTA - err = esp_matter_ota_requestor_encrypted_init(s_decryption_key, s_decryption_key_len); - if (err != ESP_OK) { - log_e("Failed to initialized the encrypted OTA, err: %d", err); - abort(); - } -#endif // CONFIG_ENABLE_ENCRYPTED_OTA - -#if CONFIG_ENABLE_CHIP_SHELL - esp_matter::console::diagnostics_register_commands(); - esp_matter::console::wifi_register_commands(); -#if CONFIG_OPENTHREAD_CLI - esp_matter::console::otcli_register_commands(); -#endif - esp_matter::console::init(); -#endif -} - -void loop() { - static uint32_t button_time_stamp = 0; - static bool button_state = false; - static bool started = false; - - if (!isAccessoryCommissioned()) { - log_w("Accessory not commissioned yet. Waiting for commissioning."); -#ifdef RGB_BUILTIN - rgbLedWrite(RGB_BUILTIN, 48, 0, 20); // Purple indicates accessory not commissioned -#endif - delay(5000); - return; - } - -#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION - if (!isWifiConnected()) { - log_w("Wi-Fi not connected yet. Waiting for connection."); -#ifdef RGB_BUILTIN - rgbLedWrite(RGB_BUILTIN, 48, 20, 0); // Orange indicates accessory not connected to Wi-Fi -#endif - delay(5000); - return; - } -#endif - -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD - if (!isThreadConnected()) { - log_w("Thread not connected yet. Waiting for connection."); -#ifdef RGB_BUILTIN - rgbLedWrite(RGB_BUILTIN, 0, 20, 48); // Blue indicates accessory not connected to Trhead -#endif - delay(5000); - return; - } -#endif - - // Once all network connections are established, the accessory is ready for use - // Run it only once - if (!started) { - log_i("Accessory is commissioned and connected to Wi-Fi. Ready for use."); - started = true; - // Starting driver with default values - matter_light_set_defaults(light_endpoint_id); - } - - // Check if the button is pressed and toggle the light right away - if (digitalRead(button_gpio) == LOW && !button_state) { - // deals with button debounce - button_time_stamp = millis(); // record the time while the button is pressed. - button_state = true; // pressed. - - // Toggle button is pressed - toggle the light - log_i("Toggle button pressed"); - - endpoint_t *endpoint = endpoint::get(node::get(), light_endpoint_id); - cluster_t *cluster = cluster::get(endpoint, OnOff::Id); - attribute_t *attribute = attribute::get(cluster, OnOff::Attributes::OnOff::Id); - - esp_matter_attr_val_t val = esp_matter_invalid(NULL); - attribute::get_val(attribute, &val); - val.val.b = !val.val.b; - attribute::update(light_endpoint_id, OnOff::Id, OnOff::Attributes::OnOff::Id, &val); - } - - // Check if the button is released and handle the factory reset - uint32_t time_diff = millis() - button_time_stamp; - if (button_state && time_diff > 100 && digitalRead(button_gpio) == HIGH) { - button_state = false; // released. It can be pressed again after 100ms debounce. - - // Factory reset is triggered if the button is pressed for more than 10 seconds - if (time_diff > 10000) { - log_i("Factory reset triggered. Light will restored to factory settings."); - esp_matter::factory_reset(); - } - } - - delay(50); // WDT is happier with a delay -} diff --git a/idf_component_examples/esp_matter_light/partitions.csv b/idf_component_examples/esp_matter_light/partitions.csv deleted file mode 100644 index ffe5f242e76..00000000000 --- a/idf_component_examples/esp_matter_light/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 diff --git a/idf_component_examples/esp_matter_light/sdkconfig.defaults b/idf_component_examples/esp_matter_light/sdkconfig.defaults deleted file mode 100644 index 8688318fa36..00000000000 --- a/idf_component_examples/esp_matter_light/sdkconfig.defaults +++ /dev/null @@ -1,67 +0,0 @@ -# Arduino Settings -CONFIG_FREERTOS_HZ=1000 -CONFIG_AUTOSTART_ARDUINO=y - -# Log Levels -# Boot Messages - Log level -CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y -# Arduino Log Level -CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO=y -# IDF Log Level -CONFIG_LOG_DEFAULT_LEVEL_ERROR=y - -# Default to 921600 baud when flashing and monitoring device -CONFIG_ESPTOOLPY_BAUD_921600B=y -CONFIG_ESPTOOLPY_BAUD=921600 -CONFIG_ESPTOOLPY_COMPRESSED=y -CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y -CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y - -#enable BT -CONFIG_BT_ENABLED=y -CONFIG_BT_NIMBLE_ENABLED=y - -#disable BT connection reattempt -CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=n - -#enable lwip ipv6 autoconfig -CONFIG_LWIP_IPV6_AUTOCONFIG=y - -# Use a custom partition table -CONFIG_PARTITION_TABLE_CUSTOM=y -CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_OFFSET=0xC000 - -# Disable chip shell -CONFIG_ENABLE_CHIP_SHELL=n - -# Enable OTA Requester -CONFIG_ENABLE_OTA_REQUESTOR=n - -#enable lwIP route hooks -CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y -CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y - -# disable softap by default -CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n -CONFIG_ENABLE_WIFI_STATION=y -CONFIG_ENABLE_WIFI_AP=n - -# Disable DS Peripheral -CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n - -# Use compact attribute storage mode -CONFIG_ESP_MATTER_NVS_USE_COMPACT_ATTR_STORAGE=y - -# Enable HKDF in mbedtls -CONFIG_MBEDTLS_HKDF_C=y - -# Increase LwIP IPv6 address number to 6 (MAX_FABRIC + 1) -# unique local addresses for fabrics(MAX_FABRIC), a link local address(1) -CONFIG_LWIP_IPV6_NUM_ADDRESSES=6 - -# -# DIAGNOSTICS -# -CONFIG_DIAG_USE_EXTERNAL_LOG_WRAP=y diff --git a/idf_component_examples/esp_matter_light/sdkconfig.defaults.c6_thread b/idf_component_examples/esp_matter_light/sdkconfig.defaults.c6_thread deleted file mode 100644 index 502480f94b1..00000000000 --- a/idf_component_examples/esp_matter_light/sdkconfig.defaults.c6_thread +++ /dev/null @@ -1,79 +0,0 @@ -CONFIG_IDF_TARGET="esp32c6" - -# Arduino Settings -CONFIG_FREERTOS_HZ=1000 -CONFIG_AUTOSTART_ARDUINO=y - -# Log Levels -# Boot Messages - Log level -CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y -# Arduino Log Level -CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO=y -# IDF Log Level -CONFIG_LOG_DEFAULT_LEVEL_ERROR=y - -# Default to 921600 baud when flashing and monitoring device -CONFIG_ESPTOOLPY_BAUD_921600B=y -CONFIG_ESPTOOLPY_BAUD=921600 -CONFIG_ESPTOOLPY_COMPRESSED=y -CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y -CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y - -# 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 - -# FreeRTOS should use legacy API -CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y - -# 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 - -# Enable OTA Requester -CONFIG_ENABLE_OTA_REQUESTOR=n - -# Disable STA and AP for ESP32C6 -CONFIG_ENABLE_WIFI_STATION=n -CONFIG_ENABLE_WIFI_AP=n - -# Enable chip shell -CONFIG_ENABLE_CHIP_SHELL=n - -# Disable persist subscriptions -CONFIG_ENABLE_PERSIST_SUBSCRIPTIONS=n - -# MRP configs -CONFIG_MRP_LOCAL_ACTIVE_RETRY_INTERVAL_FOR_THREAD=5000 -CONFIG_MRP_LOCAL_IDLE_RETRY_INTERVAL_FOR_THREAD=5000 -CONFIG_MRP_RETRY_INTERVAL_SENDER_BOOST_FOR_THREAD=5000 -CONFIG_MRP_MAX_RETRANS=3 - -# Enable HKDF in mbedtls -CONFIG_MBEDTLS_HKDF_C=y diff --git a/idf_component_examples/esp_matter_light/sdkconfig.defaults.esp32c6 b/idf_component_examples/esp_matter_light/sdkconfig.defaults.esp32c6 deleted file mode 100644 index 9fe589613ef..00000000000 --- a/idf_component_examples/esp_matter_light/sdkconfig.defaults.esp32c6 +++ /dev/null @@ -1,16 +0,0 @@ -CONFIG_IDF_TARGET="esp32c6" - -# libsodium -CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y - -# NIMBLE -CONFIG_BT_NIMBLE_EXT_ADV=n -CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 -CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=y - -# FreeRTOS should use legacy API -CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y - -# Use minimal mDNS -CONFIG_USE_MINIMAL_MDNS=y -CONFIG_ENABLE_EXTENDED_DISCOVERY=y From 47392ff83ddb61cba4f6c5640a594bf0f3180a4d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 13:59:59 +0000 Subject: [PATCH 17/17] ci(pre-commit): Apply automatic fixes --- libraries/Matter/src/MatterEndPoint.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/Matter/src/MatterEndPoint.cpp b/libraries/Matter/src/MatterEndPoint.cpp index a4d82b2fdb1..8ef1c5d63ba 100644 --- a/libraries/Matter/src/MatterEndPoint.cpp +++ b/libraries/Matter/src/MatterEndPoint.cpp @@ -27,7 +27,7 @@ bool MatterEndPoint::createSecondaryNetworkInterface() { log_v("Secondary network interface endpoint already exists with ID %d", secondary_network_endpoint_id); return false; } - + #if CHIP_DEVICE_CONFIG_ENABLE_THREAD && CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION // Create a secondary network interface endpoint endpoint::secondary_network_interface::config_t secondary_network_interface_config; @@ -46,7 +46,7 @@ bool MatterEndPoint::createSecondaryNetworkInterface() { log_i("Secondary Network Interface not supported"); return false; #endif - + return true; }