diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 162102105..4351608ef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -680,7 +680,7 @@ build_docs: script: - cd docs - pip install -r requirements.txt - - build-docs -bs html latex -t esp32 esp32s3 esp32c2 esp32c3 esp32c6 esp32h2 esp32p4 esp32c5 -l en + - build-docs -bs html latex -t esp32 esp32s3 esp32c2 esp32c3 esp32c6 esp32h2 esp32p4 esp32c5 esp32c61 -l en # disable link checks for now, as it is failing due to some links taking longer time to respond # - build-docs -t esp32 -l en linkcheck diff --git a/README.md b/README.md index fc08d78e1..b12e3c77a 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ section in the ESP-Matter Programming Guide. - This SDK currently works with commit [bdc38cd772] (https://github.com/project-chip/connectedhomeip/tree/bdc38cd772) of connectedhomeip. - For Matter projects development with this SDK, it is recommended to utilize ESP-IDF [v5.4.1](https://github.com/espressif/esp-idf/tree/v5.4.1). -- For ESP32C5, it is recommended to utilize ESP-IDF [98cd765953](https://github.com/espressif/esp-idf/commit/98cd765953dfe0e7bb1c5df8367e1b54bd966cce). +- For ESP32C5 and ESP32C61, it is recommended to utilize ESP-IDF [v5.5.1](https://github.com/espressif/esp-idf/tree/v5.5.1). ## Documentation diff --git a/device_hal/device/esp32c5_devkit_c/esp_matter_device.cmake b/device_hal/device/esp32c5_devkit_c/esp_matter_device.cmake index ac606e4c6..6f5634af8 100644 --- a/device_hal/device/esp32c5_devkit_c/esp_matter_device.cmake +++ b/device_hal/device/esp32c5_devkit_c/esp_matter_device.cmake @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.5) if (NOT ("${IDF_TARGET}" STREQUAL "esp32c5" )) - message(FATAL_ERROR "please set esp32c5 as the IDF_TARGET using 'idf.py --preview set-target esp32c5'") + message(FATAL_ERROR "please set esp32c5 as the IDF_TARGET using 'idf.py set-target esp32c5'") endif() SET(device_type esp32c5_devkit_c) diff --git a/device_hal/device/esp32c61_devkit_c/device.c b/device_hal/device/esp32c61_devkit_c/device.c new file mode 100644 index 000000000..79d1b658d --- /dev/null +++ b/device_hal/device/esp32c61_devkit_c/device.c @@ -0,0 +1,42 @@ +// Copyright 2025 Espressif Systems (Shanghai) CO 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 + +#include +#include +#include +#include +#include + +#define LED_GPIO_PIN GPIO_NUM_8 +#define LED_CHANNEL 0 /* RMT_CHANNEL_0 */ +#define BUTTON_GPIO_PIN GPIO_NUM_9 + +static const char *TAG = "device"; + +led_driver_config_t led_driver_get_config() +{ + led_driver_config_t config = { + .gpio = LED_GPIO_PIN, + .channel = LED_CHANNEL, + }; + return config; +} + +button_gpio_config_t button_driver_get_config() +{ + button_gpio_config_t config = { + .gpio_num = BUTTON_GPIO_PIN, + .active_level = 0, + }; + return config; +} diff --git a/device_hal/device/esp32c61_devkit_c/esp_matter_device.cmake b/device_hal/device/esp32c61_devkit_c/esp_matter_device.cmake new file mode 100644 index 000000000..631f5d37e --- /dev/null +++ b/device_hal/device/esp32c61_devkit_c/esp_matter_device.cmake @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.5) +if (NOT ("${IDF_TARGET}" STREQUAL "esp32c61" )) + message(FATAL_ERROR "please set esp32c61 as the IDF_TARGET using 'idf.py set-target esp32c61'") +endif() + +SET(device_type esp32c61_devkit_c) +SET(led_type gpio) +SET(button_type iot) + +SET(extra_components_dirs_append "$ENV{ESP_MATTER_DEVICE_PATH}/../../led_driver" + "$ENV{ESP_MATTER_DEVICE_PATH}/../../button_driver/iot_button") diff --git a/docs/_static/esp_sdk_matter_version.js b/docs/_static/esp_sdk_matter_version.js index dbad7cd2f..ddcebfa58 100644 --- a/docs/_static/esp_sdk_matter_version.js +++ b/docs/_static/esp_sdk_matter_version.js @@ -3,14 +3,13 @@ var DOCUMENTATION_VERSIONS = { supported_targets: [ "esp32" ] }, VERSIONS: [ - { name: "latest", has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c5", "esp32c6", "esp32s3", "esp32h2", "esp32p4" ] }, + { name: "latest", has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c5", "esp32c6", "esp32c61", "esp32s3", "esp32h2", "esp32p4" ] }, { name: "release-v1.4.2", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c5", "esp32c6", "esp32s3", "esp32h2", "esp32p4" ]}, { name: "release-v1.4", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32s3", "esp32h2", "esp32p4" ]}, { name: "release-v1.3", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]}, { name: "release-v1.2", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]}, { name: "release-v1.1", old: true, end_of_life: true, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]}, { name: "release-v1.0", old: true, end_of_life: true, has_targets: true, supported_targets: [ "esp32", "esp32c3", "esp32h2", "esp32s3" ]}, - ], IDF_TARGETS: [ { text: "ESP32", value: "esp32" }, @@ -19,6 +18,7 @@ var DOCUMENTATION_VERSIONS = { { text: "ESP32-C3", value: "esp32c3" }, { text: "ESP32-C5", value: "esp32c5" }, { text: "ESP32-C6", value: "esp32c6" }, + { text: "ESP32-C61", value: "esp32c61" }, { text: "ESP32-H2", value: "esp32h2" }, { text: "ESP32-P4", value: "esp32p4" }, ] diff --git a/docs/conf_common.py b/docs/conf_common.py index 9d74a5f69..8555d89f7 100644 --- a/docs/conf_common.py +++ b/docs/conf_common.py @@ -2,7 +2,7 @@ from esp_docs.conf_docs import * # noqa: F403,F401 import subprocess languages = ['en'] -idf_targets = ['esp32', 'esp32s3', 'esp32c2', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32h2', 'esp32p4'] +idf_targets = ['esp32', 'esp32s3', 'esp32c2', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4'] extensions += ['sphinx_copybutton', # Needed as a trigger for running doxygen diff --git a/docs/en/certification.rst b/docs/en/certification.rst index 7ba1fe0ff..2bf977caf 100644 --- a/docs/en/certification.rst +++ b/docs/en/certification.rst @@ -99,7 +99,7 @@ The option ``-n`` (count) is the number of generated binaries. In the above comm The option ``--paa-trust-store-path`` should be added when using chip-tool to pair the device for manual tests. -.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32c5 +.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32c5 or esp32c61 :: diff --git a/docs/en/developing.rst b/docs/en/developing.rst index 1b9219c53..edc9189ce 100644 --- a/docs/en/developing.rst +++ b/docs/en/developing.rst @@ -52,16 +52,16 @@ The Prerequisites for ESP-IDF: - Please get the `Prerequisites for ESP-IDF`_. For beginners, please check `step by step installation guide`_ for esp-idf. -.. only:: esp32c5 +.. only:: esp32c5 or esp32c61 - - For ``ESP32C5``, the IDF version should be `98cd765953 `__ or newer. + - For ``ESP32C5`` and ``ESP32C61``, the IDF version should be `v5.5.1 `__ or newer. .. note:: ``git clone`` command accepts the optional argument ``--jobs N``, which can significantly speed up the process by parallelizing submodule cloning. Consider using this option when cloning repositories. -.. only:: not esp32c5 +.. only:: not esp32c5 and not esp32c61 Cloning esp-idf: @@ -72,14 +72,14 @@ The Prerequisites for ESP-IDF: ./install.sh cd .. -.. only:: esp32c5 +.. only:: esp32c5 or esp32c61 Cloning esp-idf: :: git clone --recursive https://github.com/espressif/esp-idf.git - cd esp-idf; git checkout 98cd765953; git submodule update --init --recursive; + cd esp-idf; git checkout v5.5.1; git submodule update --init --recursive; ./install.sh cd .. @@ -283,7 +283,13 @@ Choose IDF target. :: - idf.py --preview set-target esp32c5 + idf.py set-target esp32c5 + +.. only:: esp32c61 + + :: + + idf.py set-target esp32c61 .. only:: esp32p4 @@ -387,7 +393,7 @@ Use ``chip-tool`` in interactive mode to commission the device: chip-tool interactive start -.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 +.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 or esp32c61 :: @@ -414,7 +420,7 @@ Above method commissions the device using setup passcode and discriminator. Devi To Commission the device using manual pairing code 34970112332 -.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 +.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 or esp32c61 :: @@ -441,7 +447,7 @@ Above default manual pairing code contains following values: To commission the device using QR code MT:Y.K9042C00KA0648G00 -.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 +.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 or esp32c61 :: @@ -913,7 +919,7 @@ For example: Thermostat cluster has O.a+ conformance for Heating and Cooling fea thermostat_config.features.heating.occupied_heating_setpoint = 2200; thermostat_config.feature_flags = thermostat::feature::heating::get_id(); cluster::thermostat::create(endpoint, &(config->thermostat_config), CLUSTER_FLAG_SERVER); - + Optional features which are applicable to a cluster can also be added. - feature: tag_list: Descriptor cluster: diff --git a/docs/en/security.rst b/docs/en/security.rst index b0f303b05..2532be27a 100644 --- a/docs/en/security.rst +++ b/docs/en/security.rst @@ -59,7 +59,7 @@ DAC private needs to be protected from remote as well as physical attacks in the Recommended ways for DAC private key protection: -.. only:: esp32h2 or esp32c5 +.. only:: esp32h2 or esp32c5 or esp32c61 - {IDF_TARGET_NAME} supports ECDSA hardware peripheral with the ECDSA key programmed in the eFuse. This key is software read protected (in default mode). This peripheral can help to protect the identity of the DAC private key on the device. diff --git a/examples/light/CMakeLists.txt b/examples/light/CMakeLists.txt index 7a8bb37a6..abaf5015d 100644 --- a/examples/light/CMakeLists.txt +++ b/examples/light/CMakeLists.txt @@ -19,6 +19,8 @@ if(NOT DEFINED ENV{ESP_MATTER_DEVICE_PATH}) set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32s3_devkit_c) elseif("${IDF_TARGET}" STREQUAL "esp32c6") set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c6_devkit_c) + elseif("${IDF_TARGET}" STREQUAL "esp32c61") + set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c61_devkit_c) elseif("${IDF_TARGET}" STREQUAL "esp32c5") set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c5_devkit_c) elseif("${IDF_TARGET}" STREQUAL "esp32p4") diff --git a/examples/light/sdkconfig.defaults.esp32c61 b/examples/light/sdkconfig.defaults.esp32c61 new file mode 100644 index 000000000..d1821a599 --- /dev/null +++ b/examples/light/sdkconfig.defaults.esp32c61 @@ -0,0 +1,10 @@ +CONFIG_IDF_TARGET="esp32c61" + +# ESP Ringbuf +CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y +# FreeRTOS +CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y + +CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n diff --git a/examples/light_switch/sdkconfig.defaults.esp32c61 b/examples/light_switch/sdkconfig.defaults.esp32c61 new file mode 100644 index 000000000..d1821a599 --- /dev/null +++ b/examples/light_switch/sdkconfig.defaults.esp32c61 @@ -0,0 +1,10 @@ +CONFIG_IDF_TARGET="esp32c61" + +# ESP Ringbuf +CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y +# FreeRTOS +CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y + +CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n diff --git a/examples/multiple_on_off_plugin_units/sdkconfig.defaults.esp32c61 b/examples/multiple_on_off_plugin_units/sdkconfig.defaults.esp32c61 new file mode 100644 index 000000000..d1821a599 --- /dev/null +++ b/examples/multiple_on_off_plugin_units/sdkconfig.defaults.esp32c61 @@ -0,0 +1,10 @@ +CONFIG_IDF_TARGET="esp32c61" + +# ESP Ringbuf +CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y +# FreeRTOS +CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y + +CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n diff --git a/examples/refrigerator/sdkconfig.defaults.esp32c61 b/examples/refrigerator/sdkconfig.defaults.esp32c61 new file mode 100644 index 000000000..d1821a599 --- /dev/null +++ b/examples/refrigerator/sdkconfig.defaults.esp32c61 @@ -0,0 +1,10 @@ +CONFIG_IDF_TARGET="esp32c61" + +# ESP Ringbuf +CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y +# FreeRTOS +CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y + +CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n