From 980119e86c048304c1012621447c405ca1f0f4e7 Mon Sep 17 00:00:00 2001 From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> Date: Tue, 6 Aug 2024 14:15:14 -0400 Subject: [PATCH 1/4] Create a separte source_set for the provision storage implementation --- examples/platform/silabs/SiWx917/BUILD.gn | 10 +--- examples/platform/silabs/efr32/BUILD.gn | 7 +-- examples/platform/silabs/provision/BUILD.gn | 56 +++++++++++++++++++++ 3 files changed, 58 insertions(+), 15 deletions(-) create mode 100644 examples/platform/silabs/provision/BUILD.gn diff --git a/examples/platform/silabs/SiWx917/BUILD.gn b/examples/platform/silabs/SiWx917/BUILD.gn index 8acee7c3b9cfcd..b6adabbf8f9495 100644 --- a/examples/platform/silabs/SiWx917/BUILD.gn +++ b/examples/platform/silabs/SiWx917/BUILD.gn @@ -115,12 +115,6 @@ source_set("siwx917-matter-shell") { config("siwx917-common-config") { defines = [ "OTA_PERIODIC_TIMEOUT=${ota_periodic_query_timeout_sec}" ] - if (sl_si91x_crypto_flavor == "psa") { - libs = - [ "${sdk_support_root}/matter/provision/lib/libProvisionPSA_si917.a" ] - } else { - libs = [ "${sdk_support_root}/matter/provision/lib/libProvision_si917.a" ] - } if (!disable_lcd) { include_dirs = [ "${silabs_common_plat_dir}/display" ] @@ -177,7 +171,7 @@ config("silabs-wifi-config") { } source_set("siwx917-common") { - deps = [ "${chip_root}/src/platform/silabs/provision:provision-headers" ] + deps = [ "${silabs_common_plat_dir}/provision:provision-storage" ] defines = [] public_deps = [] public_configs = [ @@ -197,8 +191,6 @@ source_set("siwx917-common") { "${silabs_common_plat_dir}/LEDWidget.cpp", "${silabs_common_plat_dir}/MatterConfig.cpp", "${silabs_common_plat_dir}/SoftwareFaultReports.cpp", - "${silabs_common_plat_dir}/provision/ProvisionStorageCustom.cpp", - "${silabs_common_plat_dir}/provision/ProvisionStorageFlash.cpp", "${silabs_common_plat_dir}/silabs_utils.cpp", "${silabs_common_plat_dir}/syscalls_stubs.cpp", "${silabs_plat_si91x_wifi_dir}/dhcp_client.cpp", diff --git a/examples/platform/silabs/efr32/BUILD.gn b/examples/platform/silabs/efr32/BUILD.gn index 6cf43897f43b10..5ff17504787614 100644 --- a/examples/platform/silabs/efr32/BUILD.gn +++ b/examples/platform/silabs/efr32/BUILD.gn @@ -148,9 +148,6 @@ source_set("efr-matter-shell") { config("efr32-common-config") { defines = [ "OTA_PERIODIC_TIMEOUT=${ota_periodic_query_timeout_sec}" ] - libs = [ - "${sdk_support_root}/matter/provision/lib/libProvision_${silabs_family}.a", - ] if (!disable_lcd) { include_dirs = [ "${silabs_common_plat_dir}/display" ] @@ -212,7 +209,7 @@ config("silabs-wifi-config") { } source_set("efr32-common") { - deps = [ "${chip_root}/src/platform/silabs/provision:provision-headers" ] + deps = [ "${silabs_common_plat_dir}/provision:provision-storage" ] defines = [] public_deps = [] public_configs = [ @@ -241,8 +238,6 @@ source_set("efr32-common") { "${silabs_common_plat_dir}/LEDWidget.cpp", "${silabs_common_plat_dir}/MatterConfig.cpp", "${silabs_common_plat_dir}/SoftwareFaultReports.cpp", - "${silabs_common_plat_dir}/provision/ProvisionStorageCustom.cpp", - "${silabs_common_plat_dir}/provision/ProvisionStorageDefault.cpp", "${silabs_common_plat_dir}/silabs_utils.cpp", "${silabs_common_plat_dir}/syscalls_stubs.cpp", ] diff --git a/examples/platform/silabs/provision/BUILD.gn b/examples/platform/silabs/provision/BUILD.gn new file mode 100644 index 00000000000000..2090bdd682e1ad --- /dev/null +++ b/examples/platform/silabs/provision/BUILD.gn @@ -0,0 +1,56 @@ +# Copyright (c) 2020 Project CHIP Authors +# +# 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. + +import("//build_overrides/chip.gni") +import("//build_overrides/efr32_sdk.gni") +import("${efr32_sdk_build_root}/silabs_board.gni") + +if (wifi_soc) { + import("${efr32_sdk_build_root}/SiWx917_sdk.gni") +} else { + import("${efr32_sdk_build_root}/efr32_sdk.gni") +} + +declare_args() { + use_flash_storage = wifi_soc +} + +source_set("provision-storage") { + sources = [ "ProvisionStorageCustom.cpp" ] + + if (use_flash_storage) { + sources += [ "ProvisionStorageFlash.cpp" ] + } else { + sources += [ "ProvisionStorageDefault.cpp" ] + } + + if (wifi_soc) { + if (sl_si91x_crypto_flavor == "psa") { + libs = + [ "${sdk_support_root}/matter/provision/lib/libProvisionPSA_si917.a" ] + } else { + libs = [ "${sdk_support_root}/matter/provision/lib/libProvision_si917.a" ] + } + } else { + if (use_flash_storage) { + libs = [ "${sdk_support_root}/matter/provision/lib/libProvisionFlash_${silabs_family}.a" ] + } else { + libs = [ "${sdk_support_root}/matter/provision/lib/libProvision_${silabs_family}.a" ] + } + } + + deps = [ "${chip_root}/src/lib" ] + public_deps = + [ "${chip_root}/src/platform/silabs/provision:provision-headers" ] +} From 8b78a083f4d6aa4fe709467f22f538788b5eaa34 Mon Sep 17 00:00:00 2001 From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> Date: Mon, 12 Aug 2024 11:11:53 -0400 Subject: [PATCH 2/4] Fix efr32 build using provision flash storage --- examples/platform/silabs/provision/BUILD.gn | 6 +----- src/platform/silabs/efr32/efr32-chip-mbedtls-config.h | 6 ++++++ third_party/silabs/SiWx917_sdk.gni | 3 +++ third_party/silabs/efr32_sdk.gni | 9 +++++++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/examples/platform/silabs/provision/BUILD.gn b/examples/platform/silabs/provision/BUILD.gn index 2090bdd682e1ad..c5a487f3c88705 100644 --- a/examples/platform/silabs/provision/BUILD.gn +++ b/examples/platform/silabs/provision/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2020 Project CHIP Authors +# Copyright (c) 2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,10 +22,6 @@ if (wifi_soc) { import("${efr32_sdk_build_root}/efr32_sdk.gni") } -declare_args() { - use_flash_storage = wifi_soc -} - source_set("provision-storage") { sources = [ "ProvisionStorageCustom.cpp" ] diff --git a/src/platform/silabs/efr32/efr32-chip-mbedtls-config.h b/src/platform/silabs/efr32/efr32-chip-mbedtls-config.h index 6ecfae7d3e4476..b6cea53dec9b8b 100644 --- a/src/platform/silabs/efr32/efr32-chip-mbedtls-config.h +++ b/src/platform/silabs/efr32/efr32-chip-mbedtls-config.h @@ -87,6 +87,12 @@ #define PSA_WANT_ALG_SOME_PAKE #endif // SL_USE_COAP_CONFIG +#if SL_PROVISION_FLASH +#define MBEDTLS_SHA256_C +#define MBEDTLS_HMAC_DRBG_C +#define MBEDTLS_ECDSA_DETERMINISTIC +#endif + #define MBEDTLS_PLATFORM_SNPRINTF_MACRO snprintf #define MBEDTLS_AES_ROM_TABLES diff --git a/third_party/silabs/SiWx917_sdk.gni b/third_party/silabs/SiWx917_sdk.gni index 5faba08acd3d3b..e9e46cd1bb4c39 100644 --- a/third_party/silabs/SiWx917_sdk.gni +++ b/third_party/silabs/SiWx917_sdk.gni @@ -38,6 +38,9 @@ declare_args() { # enable 917 SoC M4 sleep wakeup si917_m4_sleep_enabled = false + + # Factory Provision storage + use_flash_storage = true } # Defines an siwx917 SDK build target. diff --git a/third_party/silabs/efr32_sdk.gni b/third_party/silabs/efr32_sdk.gni index ccbae7f1ec23ff..4fa3562d0ccfe6 100644 --- a/third_party/silabs/efr32_sdk.gni +++ b/third_party/silabs/efr32_sdk.gni @@ -82,6 +82,9 @@ declare_args() { chip_enable_multi_ota_requestor = false chip_enable_multi_ota_encryption = false chip_enable_ota_custom_tlv_testing = false + + # Factory Provision storage + use_flash_storage = false } examples_plat_dir = "${chip_root}/examples/platform/silabs/efr32" @@ -469,6 +472,12 @@ template("efr32_sdk") { defines += [ "SL_USE_COAP_CONFIG=0" ] } + if (use_flash_storage) { + defines += [ "SL_PROVISION_FLASH=1" ] + } else { + defines += [ "SL_PROVISION_FLASH=0" ] + } + if (chip_enable_ble_rs911x) { defines += [ "RSI_BLE_ENABLE=1", From 37d15c3d2323714a312204d2657db6ccab4c7c51 Mon Sep 17 00:00:00 2001 From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> Date: Mon, 12 Aug 2024 14:10:57 -0400 Subject: [PATCH 3/4] fix argument duplication which is not needed. --- third_party/silabs/SiWx917_sdk.gni | 3 --- third_party/silabs/efr32_sdk.gni | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/third_party/silabs/SiWx917_sdk.gni b/third_party/silabs/SiWx917_sdk.gni index e9e46cd1bb4c39..5faba08acd3d3b 100644 --- a/third_party/silabs/SiWx917_sdk.gni +++ b/third_party/silabs/SiWx917_sdk.gni @@ -38,9 +38,6 @@ declare_args() { # enable 917 SoC M4 sleep wakeup si917_m4_sleep_enabled = false - - # Factory Provision storage - use_flash_storage = true } # Defines an siwx917 SDK build target. diff --git a/third_party/silabs/efr32_sdk.gni b/third_party/silabs/efr32_sdk.gni index 4fa3562d0ccfe6..68f313f6398d28 100644 --- a/third_party/silabs/efr32_sdk.gni +++ b/third_party/silabs/efr32_sdk.gni @@ -84,7 +84,7 @@ declare_args() { chip_enable_ota_custom_tlv_testing = false # Factory Provision storage - use_flash_storage = false + use_flash_storage = wifi_soc } examples_plat_dir = "${chip_root}/examples/platform/silabs/efr32" From 61d2873e988f5e09f9e71ec114d56e67b9c20fda Mon Sep 17 00:00:00 2001 From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> Date: Tue, 13 Aug 2024 09:26:56 -0400 Subject: [PATCH 4/4] apply suggested renames --- examples/platform/silabs/SiWx917/BUILD.gn | 2 +- examples/platform/silabs/efr32/BUILD.gn | 2 +- examples/platform/silabs/provision/BUILD.gn | 6 +++--- src/platform/silabs/efr32/efr32-chip-mbedtls-config.h | 4 ++-- third_party/silabs/efr32_sdk.gni | 8 ++++---- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/platform/silabs/SiWx917/BUILD.gn b/examples/platform/silabs/SiWx917/BUILD.gn index b6adabbf8f9495..b21eb08fa8ab74 100644 --- a/examples/platform/silabs/SiWx917/BUILD.gn +++ b/examples/platform/silabs/SiWx917/BUILD.gn @@ -171,7 +171,7 @@ config("silabs-wifi-config") { } source_set("siwx917-common") { - deps = [ "${silabs_common_plat_dir}/provision:provision-storage" ] + deps = [ "${silabs_common_plat_dir}/provision:storage" ] defines = [] public_deps = [] public_configs = [ diff --git a/examples/platform/silabs/efr32/BUILD.gn b/examples/platform/silabs/efr32/BUILD.gn index 5ff17504787614..18a68fbe1f2031 100644 --- a/examples/platform/silabs/efr32/BUILD.gn +++ b/examples/platform/silabs/efr32/BUILD.gn @@ -209,7 +209,7 @@ config("silabs-wifi-config") { } source_set("efr32-common") { - deps = [ "${silabs_common_plat_dir}/provision:provision-storage" ] + deps = [ "${silabs_common_plat_dir}/provision:storage" ] defines = [] public_deps = [] public_configs = [ diff --git a/examples/platform/silabs/provision/BUILD.gn b/examples/platform/silabs/provision/BUILD.gn index c5a487f3c88705..ccd5b919bc0379 100644 --- a/examples/platform/silabs/provision/BUILD.gn +++ b/examples/platform/silabs/provision/BUILD.gn @@ -22,10 +22,10 @@ if (wifi_soc) { import("${efr32_sdk_build_root}/efr32_sdk.gni") } -source_set("provision-storage") { +source_set("storage") { sources = [ "ProvisionStorageCustom.cpp" ] - if (use_flash_storage) { + if (use_provision_flash_storage) { sources += [ "ProvisionStorageFlash.cpp" ] } else { sources += [ "ProvisionStorageDefault.cpp" ] @@ -39,7 +39,7 @@ source_set("provision-storage") { libs = [ "${sdk_support_root}/matter/provision/lib/libProvision_si917.a" ] } } else { - if (use_flash_storage) { + if (use_provision_flash_storage) { libs = [ "${sdk_support_root}/matter/provision/lib/libProvisionFlash_${silabs_family}.a" ] } else { libs = [ "${sdk_support_root}/matter/provision/lib/libProvision_${silabs_family}.a" ] diff --git a/src/platform/silabs/efr32/efr32-chip-mbedtls-config.h b/src/platform/silabs/efr32/efr32-chip-mbedtls-config.h index b6cea53dec9b8b..c707fe9e9ff323 100644 --- a/src/platform/silabs/efr32/efr32-chip-mbedtls-config.h +++ b/src/platform/silabs/efr32/efr32-chip-mbedtls-config.h @@ -87,11 +87,11 @@ #define PSA_WANT_ALG_SOME_PAKE #endif // SL_USE_COAP_CONFIG -#if SL_PROVISION_FLASH +#if SL_MATTER_PROVISION_FLASH #define MBEDTLS_SHA256_C #define MBEDTLS_HMAC_DRBG_C #define MBEDTLS_ECDSA_DETERMINISTIC -#endif +#endif // SL_MATTER_PROVISION_FLASH #define MBEDTLS_PLATFORM_SNPRINTF_MACRO snprintf diff --git a/third_party/silabs/efr32_sdk.gni b/third_party/silabs/efr32_sdk.gni index 68f313f6398d28..c9126d02e43a9f 100644 --- a/third_party/silabs/efr32_sdk.gni +++ b/third_party/silabs/efr32_sdk.gni @@ -84,7 +84,7 @@ declare_args() { chip_enable_ota_custom_tlv_testing = false # Factory Provision storage - use_flash_storage = wifi_soc + use_provision_flash_storage = wifi_soc } examples_plat_dir = "${chip_root}/examples/platform/silabs/efr32" @@ -472,10 +472,10 @@ template("efr32_sdk") { defines += [ "SL_USE_COAP_CONFIG=0" ] } - if (use_flash_storage) { - defines += [ "SL_PROVISION_FLASH=1" ] + if (use_provision_flash_storage) { + defines += [ "SL_MATTER_PROVISION_FLASH=1" ] } else { - defines += [ "SL_PROVISION_FLASH=0" ] + defines += [ "SL_MATTER_PROVISION_FLASH=0" ] } if (chip_enable_ble_rs911x) {