From 327b33685c46ee527fedfa9fd0cc4e9bb2069b09 Mon Sep 17 00:00:00 2001 From: SuGliger Date: Thu, 19 Sep 2024 20:35:48 -0300 Subject: [PATCH 1/2] feat(matter): adds necessary setup --- CMakeLists.txt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 88cede199..53abed11c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,3 +33,25 @@ add_custom_command( VERBATIM ) add_custom_target(mem-variant DEPENDS "mem_variant") + +################## +### ESP Matter ### +################## + +idf_build_set_property(CXX_COMPILE_OPTIONS "-std=gnu++17;-DCHIP_HAVE_CONFIG_H" APPEND) + +# 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++17;-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) From b45dbb4324cfafc2c922cdbf925bbe5581be9b8a Mon Sep 17 00:00:00 2001 From: SuGliger Date: Thu, 19 Sep 2024 20:36:17 -0300 Subject: [PATCH 2/2] feat(matter): sdkconfig for each SoC --- configs/defconfig.esp32 | 47 +++++++++++++++++++++++++++++++++++++ configs/defconfig.esp32c3 | 44 +++++++++++++++++++++++++++++++++++ configs/defconfig.esp32c6 | 30 ++++++++++++++++++++++++ configs/defconfig.esp32h2 | 37 +++++++++++++++++++++++++++++ configs/defconfig.esp32s2 | 49 +++++++++++++++++++++++++++++++++++++++ configs/defconfig.esp32s3 | 48 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 255 insertions(+) diff --git a/configs/defconfig.esp32 b/configs/defconfig.esp32 index 2e88a27ed..a337c6978 100644 --- a/configs/defconfig.esp32 +++ b/configs/defconfig.esp32 @@ -19,3 +19,50 @@ CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y + +# Matter Configuration + +# +# mbedTLS +# +CONFIG_MBEDTLS_KEY_EXCHANGE_ECJPAKE=y +CONFIG_MBEDTLS_ECJPAKE_C=y +CONFIG_MBEDTLS_HKDF_C=y +# libsodium +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y +# end of mbedTLS + + +# +# lwIP +# +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y +CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y +CONFIG_LWIP_IPV6_AUTOCONFIG=y +# Increase LwIP IPv6 address number to 8 (MAX_FABRIC + 1) +# unique local addresses for fabrics(MAX_FABRIC), a link local address(1) +CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 + +# +# Other +# + +# Disable Matter BLE - needs nimBLE to run +CONFIG_ENABLE_CHIPOBLE=n +CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n + +# ESP Insights +CONFIG_ENABLE_ESP_INSIGHTS_TRACE=n + +# Use minimal mDNS +CONFIG_USE_MINIMAL_MDNS=y +CONFIG_ENABLE_EXTENDED_DISCOVERY=y + +# FreeRTOS should use legacy API +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y + +# Use compact attribute storage mode +CONFIG_ESP_MATTER_NVS_USE_COMPACT_ATTR_STORAGE=y + diff --git a/configs/defconfig.esp32c3 b/configs/defconfig.esp32c3 index c497b562d..ecc0437d5 100644 --- a/configs/defconfig.esp32c3 +++ b/configs/defconfig.esp32c3 @@ -6,3 +6,47 @@ CONFIG_ESP_WIFI_11KV_SUPPORT=y CONFIG_ESP_WIFI_SCAN_CACHE=y CONFIG_ESP_WIFI_MBO_SUPPORT=y CONFIG_ESP_WIFI_11R_SUPPORT=y + +# Matter Configuration + +# +# mbedTLS +# +CONFIG_MBEDTLS_KEY_EXCHANGE_ECJPAKE=y +CONFIG_MBEDTLS_ECJPAKE_C=y +CONFIG_MBEDTLS_HKDF_C=y +# libsodium +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y +# end of mbedTLS + + +# +# lwIP +# +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y +CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y +CONFIG_LWIP_IPV6_AUTOCONFIG=y +# Increase LwIP IPv6 address number to 8 (MAX_FABRIC + 1) +# unique local addresses for fabrics(MAX_FABRIC), a link local address(1) +CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 + +# +# Other +# + +# Disable Matter BLE - needs nimBLE to run +CONFIG_ENABLE_CHIPOBLE=n +CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n + +# Use minimal mDNS +CONFIG_USE_MINIMAL_MDNS=y +CONFIG_ENABLE_EXTENDED_DISCOVERY=y + +# FreeRTOS should use legacy API +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y + +# Use compact attribute storage mode +CONFIG_ESP_MATTER_NVS_USE_COMPACT_ATTR_STORAGE=y + diff --git a/configs/defconfig.esp32c6 b/configs/defconfig.esp32c6 index e2c9c33ea..a9363a316 100644 --- a/configs/defconfig.esp32c6 +++ b/configs/defconfig.esp32c6 @@ -9,6 +9,19 @@ CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304 #CONFIG_ULP_COPROC_RESERVE_MEM=4096 # +# Matter and Thread Configuration +# + +# Disable Matter BLE - needs nimBLE to run +CONFIG_ENABLE_CHIPOBLE=n +CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n + +# ESP Insights +CONFIG_ENABLE_ESP_INSIGHTS_TRACE=n + +# Matter over Thread +CONFIG_ENABLE_MATTER_OVER_THREAD=y + # ESP32 Arduino OpenThread Configuration # # lwIP @@ -16,6 +29,9 @@ CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304 CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 CONFIG_LWIP_MULTICAST_PING=y CONFIG_LWIP_BROADCAST_PING=y +CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y +CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y +CONFIG_LWIP_IPV6_AUTOCONFIG=y # end of lwip # @@ -23,8 +39,22 @@ CONFIG_LWIP_BROADCAST_PING=y # CONFIG_MBEDTLS_KEY_EXCHANGE_ECJPAKE=y CONFIG_MBEDTLS_ECJPAKE_C=y +CONFIG_MBEDTLS_HKDF_C=y +# libsodium +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y # end of mbedTLS +# Use minimal mDNS +CONFIG_USE_MINIMAL_MDNS=y +CONFIG_ENABLE_EXTENDED_DISCOVERY=y + +# FreeRTOS should use legacy API +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y + +# Use compact attribute storage mode +CONFIG_ESP_MATTER_NVS_USE_COMPACT_ATTR_STORAGE=y + + # # OpenThread # diff --git a/configs/defconfig.esp32h2 b/configs/defconfig.esp32h2 index 79a13544d..a8b8da769 100644 --- a/configs/defconfig.esp32h2 +++ b/configs/defconfig.esp32h2 @@ -12,6 +12,9 @@ CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304 CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 CONFIG_LWIP_MULTICAST_PING=y CONFIG_LWIP_BROADCAST_PING=y +CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y +CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y +CONFIG_LWIP_IPV6_AUTOCONFIG=n # end of lwip # @@ -20,6 +23,11 @@ CONFIG_LWIP_BROADCAST_PING=y CONFIG_MBEDTLS_KEY_EXCHANGE_ECJPAKE=y CONFIG_MBEDTLS_ECJPAKE_C=y # end of mbedTLS +# Enable HKDF in mbedtls +CONFIG_MBEDTLS_HKDF_C=y +# libsodium +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y +# end of mbedTLS # # OpenThread @@ -47,3 +55,32 @@ CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe" CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff" CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53" # end of OpenThread + +# Matter Configuration + +# Disable Matter BLE +CONFIG_ENABLE_CHIPOBLE=n +CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n + +# Use minimal mDNS +CONFIG_USE_MINIMAL_MDNS=y +CONFIG_ENABLE_EXTENDED_DISCOVERY=y + +# FreeRTOS should use legacy API +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y + +# Use compact attribute storage mode +CONFIG_ESP_MATTER_NVS_USE_COMPACT_ATTR_STORAGE=y + +# 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 + +# ESP Insights +CONFIG_ENABLE_ESP_INSIGHTS_TRACE=n + +# Matter over Thread +CONFIG_ENABLE_MATTER_OVER_THREAD=y + diff --git a/configs/defconfig.esp32s2 b/configs/defconfig.esp32s2 index 3b0af548a..560b54b91 100644 --- a/configs/defconfig.esp32s2 +++ b/configs/defconfig.esp32s2 @@ -15,3 +15,52 @@ CONFIG_ULP_COPROC_ENABLED=y CONFIG_ULP_COPROC_TYPE_FSM=y # CONFIG_ULP_COPROC_TYPE_RISCV=y CONFIG_ULP_COPROC_RESERVE_MEM=512 + + +# Matter Configuration + +# +# mbedTLS +# +CONFIG_MBEDTLS_KEY_EXCHANGE_ECJPAKE=y +CONFIG_MBEDTLS_ECJPAKE_C=y +# Enable HKDF in mbedtls +CONFIG_MBEDTLS_HKDF_C=y +# libsodium +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y +# end of mbedTLS + + +# +# lwIP +# +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y +CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y +CONFIG_LWIP_IPV6_AUTOCONFIG=y +# Increase LwIP IPv6 address number to 8 (MAX_FABRIC + 1) +# unique local addresses for fabrics(MAX_FABRIC), a link local address(1) +CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 + +# +# Other +# + +# Disable Matter BLE +CONFIG_ENABLE_CHIPOBLE=n +CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n + +# ESP Insights +CONFIG_ENABLE_ESP_INSIGHTS_TRACE=n + +# Use minimal mDNS +CONFIG_USE_MINIMAL_MDNS=y +CONFIG_ENABLE_EXTENDED_DISCOVERY=y + +# FreeRTOS should use legacy API +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y + +# Use compact attribute storage mode +CONFIG_ESP_MATTER_NVS_USE_COMPACT_ATTR_STORAGE=y + diff --git a/configs/defconfig.esp32s3 b/configs/defconfig.esp32s3 index 2c2cba3cd..0c5dccc00 100644 --- a/configs/defconfig.esp32s3 +++ b/configs/defconfig.esp32s3 @@ -17,3 +17,51 @@ CONFIG_ULP_COPROC_ENABLED=y CONFIG_ULP_COPROC_TYPE_FSM=y # CONFIG_ULP_COPROC_TYPE_RISCV=y CONFIG_ULP_COPROC_RESERVE_MEM=512 + +# Matter Configuration + +# +# mbedTLS +# +CONFIG_MBEDTLS_KEY_EXCHANGE_ECJPAKE=y +CONFIG_MBEDTLS_ECJPAKE_C=y +# Enable HKDF in mbedtls +CONFIG_MBEDTLS_HKDF_C=y +# libsodium +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y +# end of mbedTLS + + +# +# lwIP +# +CONFIG_LWIP_MULTICAST_PING=y +CONFIG_LWIP_BROADCAST_PING=y +CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y +CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y +CONFIG_LWIP_IPV6_AUTOCONFIG=y +# Increase LwIP IPv6 address number to 8 (MAX_FABRIC + 1) +# unique local addresses for fabrics(MAX_FABRIC), a link local address(1) +CONFIG_LWIP_IPV6_NUM_ADDRESSES=8 + +# +# Other +# + +# Disable Matter BLE +CONFIG_ENABLE_CHIPOBLE=n +CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING=n + +# ESP Insights +CONFIG_ENABLE_ESP_INSIGHTS_TRACE=n + +# Use minimal mDNS +CONFIG_USE_MINIMAL_MDNS=y +CONFIG_ENABLE_EXTENDED_DISCOVERY=y + +# FreeRTOS should use legacy API +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y + +# Use compact attribute storage mode +CONFIG_ESP_MATTER_NVS_USE_COMPACT_ATTR_STORAGE=y +