[Silabs] Refactor Silabs Test Event Trigger impl to be compliant with its requirements (#32927)
* refactor test event trigger for efr32 hardware
* remove 917 specific code
* port test event trigger changes to 917 build.gn
* clean up
* Fix build and remove test key when not in debug build
* add missing dependency
* fix syncing typo
diff --git a/examples/light-switch-app/silabs/openthread.gni b/examples/light-switch-app/silabs/openthread.gni
index 17cc588..30c7efb 100644
--- a/examples/light-switch-app/silabs/openthread.gni
+++ b/examples/light-switch-app/silabs/openthread.gni
@@ -28,7 +28,7 @@
# ICD Default configurations
chip_enable_icd_server = true
chip_subscription_timeout_resumption = false
-sl_use_subscription_synching = true
+sl_use_subscription_syncing = true
# Openthread Configuration flags
sl_ot_idle_interval_ms = 15000 # 15s Idle Intervals
diff --git a/examples/lit-icd-app/silabs/build_for_wifi_args.gni b/examples/lit-icd-app/silabs/build_for_wifi_args.gni
index 3531a31..cdc711c 100644
--- a/examples/lit-icd-app/silabs/build_for_wifi_args.gni
+++ b/examples/lit-icd-app/silabs/build_for_wifi_args.gni
@@ -26,7 +26,7 @@
# ICD Default configurations
chip_enable_icd_server = true
chip_subscription_timeout_resumption = false
-sl_use_subscription_synching = true
+sl_use_subscription_syncing = true
icd_enforce_sit_slow_poll_limit = true
chip_enable_icd_lit = true
diff --git a/examples/lit-icd-app/silabs/openthread.gni b/examples/lit-icd-app/silabs/openthread.gni
index 9d06737..4b49740 100644
--- a/examples/lit-icd-app/silabs/openthread.gni
+++ b/examples/lit-icd-app/silabs/openthread.gni
@@ -29,7 +29,7 @@
# ICD Default configurations
chip_enable_icd_server = true
chip_subscription_timeout_resumption = false
-sl_use_subscription_synching = true
+sl_use_subscription_syncing = true
icd_enforce_sit_slow_poll_limit = true
chip_icd_report_on_active_mode = true
chip_enable_icd_lit = true
diff --git a/examples/lock-app/silabs/build_for_wifi_args.gni b/examples/lock-app/silabs/build_for_wifi_args.gni
index 25c5a24..84596e9 100644
--- a/examples/lock-app/silabs/build_for_wifi_args.gni
+++ b/examples/lock-app/silabs/build_for_wifi_args.gni
@@ -24,7 +24,7 @@
# ICD Default configurations
chip_enable_icd_server = true
chip_subscription_timeout_resumption = false
-sl_use_subscription_synching = true
+sl_use_subscription_syncing = true
# ICD Matter Configuration flags
sl_idle_mode_duration_s = 600 # 10min Idle Mode Duration
diff --git a/examples/lock-app/silabs/openthread.gni b/examples/lock-app/silabs/openthread.gni
index 3bfa566..8d1c75d 100644
--- a/examples/lock-app/silabs/openthread.gni
+++ b/examples/lock-app/silabs/openthread.gni
@@ -28,7 +28,7 @@
# ICD Default configurations
chip_enable_icd_server = true
chip_subscription_timeout_resumption = false
-sl_use_subscription_synching = true
+sl_use_subscription_syncing = true
# Openthread Configuration flags
sl_ot_idle_interval_ms = 5000 # 5s Idle Intervals
diff --git a/examples/platform/silabs/MatterConfig.cpp b/examples/platform/silabs/MatterConfig.cpp
index 9be9f07..d85f10d 100644
--- a/examples/platform/silabs/MatterConfig.cpp
+++ b/examples/platform/silabs/MatterConfig.cpp
@@ -54,10 +54,13 @@
#endif
#include "SilabsDeviceDataProvider.h"
-#include "SilabsTestEventTriggerDelegate.h"
#include <app/InteractionModelEngine.h>
#include <app/TimerDelegates.h>
+#ifdef SL_MATTER_TEST_EVENT_TRIGGER_ENABLED
+#include "SilabsTestEventTriggerDelegate.h" // nogncheck
+#endif
+
#if CHIP_CONFIG_SYNCHRONOUS_REPORTS_ENABLED
#include <app/reporting/SynchronizedReportSchedulerImpl.h>
#else
@@ -219,12 +222,6 @@
}
}
-#if SILABS_TEST_EVENT_TRIGGER_ENABLED
-static uint8_t sTestEventTriggerEnableKey[TestEventTriggerDelegate::kEnableKeyLength] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55,
- 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
- 0xcc, 0xdd, 0xee, 0xff };
-#endif // SILABS_TEST_EVENT_TRIGGER_ENABLED
-
CHIP_ERROR SilabsMatterConfig::InitMatter(const char * appName)
{
CHIP_ERROR err;
@@ -283,18 +280,10 @@
initParams.reportScheduler = &sReportScheduler;
-#if SILABS_TEST_EVENT_TRIGGER_ENABLED
- if (Encoding::HexToBytes(SILABS_TEST_EVENT_TRIGGER_ENABLE_KEY, strlen(SILABS_TEST_EVENT_TRIGGER_ENABLE_KEY),
- sTestEventTriggerEnableKey,
- TestEventTriggerDelegate::kEnableKeyLength) != TestEventTriggerDelegate::kEnableKeyLength)
- {
- SILABS_LOG("Failed to convert the EnableKey string to octstr type value");
- memset(sTestEventTriggerEnableKey, 0, sizeof(sTestEventTriggerEnableKey));
- }
- // TODO(#31723): Show to customers that they can do `Server::GetInstance().GetTestEventTriggerDelegate().AddHandler()`
- static SilabsTestEventTriggerDelegate sTestEventTriggerDelegate{ ByteSpan(sTestEventTriggerEnableKey) };
+#ifdef SL_MATTER_TEST_EVENT_TRIGGER_ENABLED
+ static SilabsTestEventTriggerDelegate sTestEventTriggerDelegate;
initParams.testEventTriggerDelegate = &sTestEventTriggerDelegate;
-#endif // SILABS_TEST_EVENT_TRIGGER_ENABLED
+#endif // SL_MATTER_TEST_EVENT_TRIGGER_ENABLED
#if CHIP_CRYPTO_PLATFORM && !(defined(SLI_SI91X_MCU_INTERFACE))
// When building with EFR32 crypto, use the opaque key store
@@ -303,13 +292,6 @@
initParams.operationalKeystore = &gOperationalKeystore;
#endif
-#ifdef PERFORMANCE_TEST_ENABLED
- // Set up Test Event Trigger command of the General Diagnostics cluster. Used only in performance testing
- // TODO(#31723): Show to customers that they can do `Server::GetInstance().GetTestEventTriggerDelegate().AddHandler()`
- static SilabsTestEventTriggerDelegate sTestEventTriggerDelegate{ ByteSpan(kTestEventTriggerEnableKey) };
- initParams.testEventTriggerDelegate = &sTestEventTriggerDelegate;
-#endif
-
// Initialize the remaining (not overridden) providers to the SDK example defaults
(void) initParams.InitializeStaticResourcesBeforeServerInit();
diff --git a/examples/platform/silabs/SiWx917/BUILD.gn b/examples/platform/silabs/SiWx917/BUILD.gn
index 73e70c1..87df30d 100644
--- a/examples/platform/silabs/SiWx917/BUILD.gn
+++ b/examples/platform/silabs/SiWx917/BUILD.gn
@@ -34,9 +34,6 @@
# Argument to force enable WPA3 security on rs91x
rs91x_wpa3_transition = true
- # use commissionable data for SiWx917
- siwx917_commissionable_data = false
-
#default WiFi SSID
chip_default_wifi_ssid = ""
@@ -44,11 +41,11 @@
chip_default_wifi_psk = ""
# Enable TestEventTrigger in GeneralDiagnostics cluster
- silabs_test_event_trigger_enabled = false
+ sl_enable_test_event_trigger = false
# The EnableKey in hex string format used by TestEventTrigger command in
- # GeneralDiagnostics cluster. The length of the string should be 32.
- silabs_test_event_trigger_enable_key = "00112233445566778899aabbccddeeff"
+ # GeneralDiagnostics cluster. The length of the string should be 16 bytes.
+ sl_test_event_trigger_enable_key = "00112233445566778899AABBCCDDEEFF"
}
# Sanity check
@@ -80,6 +77,30 @@
]
}
+config("test-event-trigger-config") {
+ defines = [ "SL_MATTER_TEST_EVENT_TRIGGER_ENABLED" ]
+
+ if (is_debug) {
+ defines += [ "SL_MATTER_TEST_EVENT_TRIGGER_ENABLE_KEY=\"${sl_test_event_trigger_enable_key}\"" ]
+ }
+}
+
+source_set("test-event-trigger") {
+ sources = [
+ "${silabs_common_plat_dir}/SilabsTestEventTriggerDelegate.cpp",
+ "${silabs_common_plat_dir}/SilabsTestEventTriggerDelegate.h",
+ ]
+
+ public_configs = [ ":test-event-trigger-config" ]
+
+ public_deps = [
+ ":silabs-factory-data-provider",
+ "${chip_root}/src/app:test-event-trigger",
+ "${chip_root}/src/lib/core",
+ "${chip_root}/src/lib/support",
+ ]
+}
+
source_set("siwx917-matter-shell") {
if (chip_build_libshell) {
defines = [ "ENABLE_CHIP_SHELL" ]
@@ -129,6 +150,10 @@
]
public_configs = [ ":siwx917-common-config" ]
+
+ if (sl_enable_test_event_trigger) {
+ public_configs += [ ":test-event-trigger-config" ]
+ }
}
config("siwx917-common-config") {
@@ -152,10 +177,6 @@
defines += [ "HEAP_MONITORING" ]
}
- if (siwx917_commissionable_data) {
- defines += [ "SIWX917_USE_COMISSIONABLE_DATA=1" ]
- }
-
ldflags = [ "-Wl,--no-warn-rwx-segment" ]
}
@@ -274,18 +295,16 @@
public_deps += [ ":silabs-factory-data-provider" ]
}
- if (silabs_test_event_trigger_enabled) {
- sources +=
- [ "${silabs_common_plat_dir}/SilabsTestEventTriggerDelegate.cpp" ]
- defines += [ "SILABS_TEST_EVENT_TRIGGER_ENABLE_KEY=\"${silabs_test_event_trigger_enable_key}\"" ]
- }
-
public_deps += [
"${chip_root}/examples/providers:device_info_provider",
"${chip_root}/src/lib",
"${chip_root}/src/setup_payload",
]
+ if (sl_enable_test_event_trigger) {
+ public_deps += [ ":test-event-trigger" ]
+ }
+
if (app_data_model != "") {
public_deps += [ app_data_model ]
}
diff --git a/examples/platform/silabs/SilabsDeviceDataProvider.cpp b/examples/platform/silabs/SilabsDeviceDataProvider.cpp
index c487c33..0bf11cd 100644
--- a/examples/platform/silabs/SilabsDeviceDataProvider.cpp
+++ b/examples/platform/silabs/SilabsDeviceDataProvider.cpp
@@ -23,13 +23,6 @@
#include <setup_payload/Base38Encode.h>
#include <setup_payload/SetupPayload.h>
-#ifdef SIWX917_USE_COMISSIONABLE_DATA
-#include "DeviceConfig.h"
-#include "silabs_utils.h"
-#include <setup_payload/Base38Decode.h>
-#include <setup_payload/QRCodeSetupPayloadGenerator.h>
-#endif // SIWX917_USE_COMISSIONABLE_DATA
-
#include <string>
namespace chip {
@@ -39,142 +32,6 @@
// using namespace chip::Credentials;
using namespace chip::DeviceLayer::Internal;
-// TODO Remove once Commander supports (doesn't erase) NVM3 for 917
-#ifdef SIWX917_USE_COMISSIONABLE_DATA
-void SilabsDeviceDataProvider::setupPayload(uint8_t * outBuf)
-{
- SetupPayload payload;
- std::string result;
- ChipError err = CHIP_NO_ERROR;
- payload.version = 0;
- payload.discriminator.SetLongValue(discriminatorValue);
- payload.setUpPINCode = passcode;
- payload.rendezvousInformation.SetValue(static_cast<RendezvousInformationFlags>(rendezvousFlag));
- payload.commissioningFlow = static_cast<CommissioningFlow>(commissionableFlow);
- payload.vendorID = vendorId;
- payload.productID = productId;
-
- QRCodeSetupPayloadGenerator generator(payload);
- err = generator.payloadBase38Representation(result);
- if (err != CHIP_NO_ERROR)
- {
- SILABS_LOG("Failed to get the payload: %d", err);
- }
- SILABS_LOG("Payload value in string format : %s", result.c_str());
- std::vector<uint8_t> result1;
- // skipping the MT: from the payload during decoding
- err = base38Decode(result.substr(3), result1);
- if (err == CHIP_NO_ERROR)
- {
- for (uint8_t i = 0; i < result1.size(); i++)
- {
- outBuf[i] = result1.at(i);
- }
- }
-}
-
-// writing to the flash based on the value given in the DeviceConfig.h
-CHIP_ERROR SilabsDeviceDataProvider::FlashFactoryData()
-{
- // flashing the value to the nvm3 section of the flash
- // TODO: remove this once it is removed SiWx917 have the nvm3 simiplicity commander support
- CHIP_ERROR err;
- // Checking for the value of CM and flag
- if ((commissionableFlow > 3) || (rendezvousFlag > 7))
- {
- return CHIP_ERROR_INTERNAL;
- }
- if (discriminatorValue != 0)
- {
- err = SilabsConfig::WriteConfigValue(SilabsConfig::kConfigKey_SetupDiscriminator, discriminatorValue);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- uint8_t payload[kTotalPayloadDataSizeInBytes];
- setupPayload(payload);
- err = SilabsConfig::WriteConfigValueBin(SilabsConfig::kConfigKey_SetupPayloadBitSet, payload, kTotalPayloadDataSizeInBytes);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- if (spake2Interation != 0)
- {
- err = SilabsConfig::WriteConfigValue(SilabsConfig::kConfigKey_Spake2pIterationCount, spake2Interation);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- if (spake2Salt != NULL)
- {
- err = SilabsConfig::WriteConfigValueStr(SilabsConfig::kConfigKey_Spake2pSalt, spake2Salt);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- if (spake2Verifier != NULL)
- {
- err = SilabsConfig::WriteConfigValueStr(SilabsConfig::kConfigKey_Spake2pVerifier, spake2Verifier);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- if (productId != 0)
- {
- err = SilabsConfig::WriteConfigValue(SilabsConfig::kConfigKey_ProductId, productId);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- if (vendorId != 0)
- {
- err = SilabsConfig::WriteConfigValue(SilabsConfig::kConfigKey_VendorId, vendorId);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- if (strlen(productName) != 0)
- {
- err = SilabsConfig::WriteConfigValueStr(SilabsConfig::kConfigKey_ProductName, productName);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- if (strlen(vendorName) != 0)
- {
- err = SilabsConfig::WriteConfigValueStr(SilabsConfig::kConfigKey_VendorName, vendorName);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- if (strlen(hwVersionString) != 0)
- {
- err = SilabsConfig::WriteConfigValueStr(SilabsConfig::kConfigKey_HardwareVersionString, hwVersionString);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- if (rotatingId != 0)
- {
- err = SilabsConfig::WriteConfigValue(SilabsConfig::kConfigKey_UniqueId, rotatingId);
- if (err != CHIP_NO_ERROR)
- {
- return err;
- }
- }
- return CHIP_NO_ERROR;
-}
-#endif
-
CHIP_ERROR SilabsDeviceDataProvider::GetSetupDiscriminator(uint16_t & setupDiscriminator)
{
CHIP_ERROR err;
@@ -510,6 +367,43 @@
return SilabsConfig::ReadConfigValueStr(SilabsConfig::KConfigKey_ProductLabel, buf, bufSize, productLabelLen);
}
+#ifdef SL_MATTER_TEST_EVENT_TRIGGER_ENABLED
+/**
+ * @brief Reads the test event trigger key from NVM. If the key isn't present, returns default value if defined.
+ *
+ * @param[out] keySpan output buffer. Must be at least large enough for 16 bytes (ken length)
+ * @return CHIP_ERROR
+ */
+CHIP_ERROR SilabsDeviceDataProvider::GetTestEventTriggerKey(MutableByteSpan & keySpan)
+{
+ constexpr size_t kEnableKeyLength = 16; // Expected byte size of the EnableKey
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ size_t keyLength = 0;
+
+ VerifyOrReturnError(keySpan.size() >= kEnableKeyLength, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+ err = SilabsConfig::ReadConfigValueBin(SilabsConfig::kConfigKey_Test_Event_Trigger_Key, keySpan.data(), kEnableKeyLength,
+ keyLength);
+#ifndef NDEBUG
+ if (err == CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND)
+ {
+
+ constexpr char enableKey[] = SL_MATTER_TEST_EVENT_TRIGGER_ENABLE_KEY;
+ if (Encoding::HexToBytes(enableKey, strlen(enableKey), keySpan.data(), kEnableKeyLength) != kEnableKeyLength)
+ {
+ // enableKey Hex String doesn't have the correct length
+ memset(keySpan.data(), 0, keySpan.size());
+ return CHIP_ERROR_INTERNAL;
+ }
+ err = CHIP_NO_ERROR;
+ }
+#endif // NDEBUG
+
+ keySpan.reduce_size(kEnableKeyLength);
+ return err;
+}
+#endif // SL_MATTER_TEST_EVENT_TRIGGER_ENABLED
+
SilabsDeviceDataProvider & SilabsDeviceDataProvider::GetDeviceDataProvider()
{
static SilabsDeviceDataProvider sDataProvider;
diff --git a/examples/platform/silabs/SilabsDeviceDataProvider.h b/examples/platform/silabs/SilabsDeviceDataProvider.h
index f29e6be..76caac0 100644
--- a/examples/platform/silabs/SilabsDeviceDataProvider.h
+++ b/examples/platform/silabs/SilabsDeviceDataProvider.h
@@ -37,12 +37,6 @@
Internal::GenericDeviceInstanceInfoProvider<Internal::SilabsConfig>(ConfigurationManagerImpl::GetDefaultInstance())
{}
-// TODO Remove once Commander supports (doesn't erase) NVM3 for 917
-#ifdef SIWX917_USE_COMISSIONABLE_DATA
- void setupPayload(uint8_t * outBuf);
- CHIP_ERROR FlashFactoryData();
-#endif /* SIWX917_USE_COMISSIONABLE_DATA */
-
static SilabsDeviceDataProvider & GetDeviceDataProvider();
CHIP_ERROR GetSetupPayload(MutableCharSpan & payloadBuf);
// ===== Members functions that implement the CommissionableDataProvider
@@ -68,6 +62,9 @@
CHIP_ERROR GetPartNumber(char * buf, size_t bufSize) override;
CHIP_ERROR GetProductURL(char * buf, size_t bufSzie) override;
CHIP_ERROR GetProductLabel(char * buf, size_t bufSize) override;
+
+ // ===== Member functions that are Silabs Specific
+ CHIP_ERROR GetTestEventTriggerKey(MutableByteSpan & keySpan);
};
} // namespace Silabs
diff --git a/examples/platform/silabs/SilabsTestEventTriggerDelegate.cpp b/examples/platform/silabs/SilabsTestEventTriggerDelegate.cpp
index f9a11df..ef42c0d 100644
--- a/examples/platform/silabs/SilabsTestEventTriggerDelegate.cpp
+++ b/examples/platform/silabs/SilabsTestEventTriggerDelegate.cpp
@@ -17,6 +17,7 @@
*/
#include "SilabsTestEventTriggerDelegate.h"
+#include "SilabsDeviceDataProvider.h"
using namespace ::chip::DeviceLayer;
@@ -24,7 +25,14 @@
bool SilabsTestEventTriggerDelegate::DoesEnableKeyMatch(const ByteSpan & enableKey) const
{
- return !mEnableKey.empty() && mEnableKey.data_equal(enableKey);
+ uint8_t storedEnableKey[TestEventTriggerDelegate::kEnableKeyLength];
+ MutableByteSpan enableKeySpan(storedEnableKey);
+
+ // Return false if we were not able to get the enableKey
+ VerifyOrReturnValue(
+ Silabs::SilabsDeviceDataProvider::GetDeviceDataProvider().GetTestEventTriggerKey(enableKeySpan) == CHIP_NO_ERROR, false);
+
+ return (!enableKeySpan.empty() && enableKeySpan.data_equal(enableKey));
}
} // namespace chip
diff --git a/examples/platform/silabs/SilabsTestEventTriggerDelegate.h b/examples/platform/silabs/SilabsTestEventTriggerDelegate.h
index 03ceabd..8359e48 100644
--- a/examples/platform/silabs/SilabsTestEventTriggerDelegate.h
+++ b/examples/platform/silabs/SilabsTestEventTriggerDelegate.h
@@ -46,10 +46,7 @@
class SilabsTestEventTriggerDelegate : public TestEventTriggerDelegate, TestEventTriggerHandler
{
public:
- explicit SilabsTestEventTriggerDelegate(const ByteSpan & enableKey) : mEnableKey(enableKey)
- {
- VerifyOrDie(AddHandler(this) == CHIP_NO_ERROR);
- }
+ explicit SilabsTestEventTriggerDelegate() { VerifyOrDie(AddHandler(this) == CHIP_NO_ERROR); }
/**
* @brief Checks to see if `enableKey` provided matches value chosen by the manufacturer.
@@ -69,9 +66,6 @@
// WARNING: LEGACY SUPPORT ONLY, DO NOT EXTEND FOR STANDARD CLUSTERS
return (emberAfHandleEventTrigger(eventTrigger)) ? CHIP_NO_ERROR : CHIP_ERROR_INVALID_ARGUMENT;
}
-
-private:
- ByteSpan mEnableKey;
};
} // namespace chip
diff --git a/examples/platform/silabs/efr32/BUILD.gn b/examples/platform/silabs/efr32/BUILD.gn
index 8b7b1eb..ee0b891 100644
--- a/examples/platform/silabs/efr32/BUILD.gn
+++ b/examples/platform/silabs/efr32/BUILD.gn
@@ -41,11 +41,11 @@
chip_default_wifi_psk = ""
# Enable TestEventTrigger in GeneralDiagnostics cluster
- silabs_test_event_trigger_enabled = false
+ sl_enable_test_event_trigger = false
# The EnableKey in hex string format used by TestEventTrigger command in
- # GeneralDiagnostics cluster. The length of the string should be 32.
- silabs_test_event_trigger_enable_key = "00112233445566778899aabbccddeeff"
+ # GeneralDiagnostics cluster. The length of the string should be 16 bytes.
+ sl_test_event_trigger_enable_key = "00112233445566778899AABBCCDDEEFF"
}
silabs_common_plat_dir = "${chip_root}/examples/platform/silabs"
@@ -94,6 +94,30 @@
]
}
+config("test-event-trigger-config") {
+ defines = [ "SL_MATTER_TEST_EVENT_TRIGGER_ENABLED" ]
+
+ if (is_debug) {
+ defines += [ "SL_MATTER_TEST_EVENT_TRIGGER_ENABLE_KEY=\"${sl_test_event_trigger_enable_key}\"" ]
+ }
+}
+
+source_set("test-event-trigger") {
+ sources = [
+ "${silabs_common_plat_dir}/SilabsTestEventTriggerDelegate.cpp",
+ "${silabs_common_plat_dir}/SilabsTestEventTriggerDelegate.h",
+ ]
+
+ public_configs = [ ":test-event-trigger-config" ]
+
+ public_deps = [
+ ":silabs-factory-data-provider",
+ "${chip_root}/src/app:test-event-trigger",
+ "${chip_root}/src/lib/core",
+ "${chip_root}/src/lib/support",
+ ]
+}
+
source_set("openthread_core_config_efr32_chip_examples") {
if (chip_enable_openthread) {
sources = [ "project_include/OpenThreadConfig.h" ]
@@ -157,6 +181,10 @@
"${chip_root}/src/platform:platform_base",
"${chip_root}/src/setup_payload",
]
+
+ if (sl_enable_test_event_trigger) {
+ public_configs = [ ":test-event-trigger-config" ]
+ }
}
config("efr32-common-config") {
@@ -206,6 +234,7 @@
if (sl_wfx_config_softap) {
defines += [ "SL_WFX_CONFIG_SOFTAP" ]
}
+
if (sl_wfx_config_scan) {
defines += [ "SL_WFX_CONFIG_SCAN" ]
}
@@ -213,6 +242,7 @@
if (chip_enable_wifi_ipv4) {
defines += [ "CHIP_DEVICE_CONFIG_ENABLE_IPV4" ]
}
+
if (rs91x_wpa3_transition) {
# TODO: Change this macro once WF200 support is provided
defines += [ "WIFI_ENABLE_SECURITY_WPA3_TRANSITION=1" ]
@@ -322,15 +352,6 @@
public_deps += [ ":silabs-factory-data-provider" ]
}
- if (silabs_test_event_trigger_enabled) {
- sources +=
- [ "${silabs_common_plat_dir}/SilabsTestEventTriggerDelegate.cpp" ]
- defines += [
- "SILABS_TEST_EVENT_TRIGGER_ENABLED=true",
- "SILABS_TEST_EVENT_TRIGGER_ENABLE_KEY=\"${silabs_test_event_trigger_enable_key}\"",
- ]
- }
-
public_deps += [
"${chip_root}/examples/providers:device_info_provider",
"${chip_root}/src/app/server",
@@ -338,6 +359,10 @@
"${chip_root}/src/setup_payload",
]
+ if (sl_enable_test_event_trigger) {
+ public_deps += [ ":test-event-trigger" ]
+ }
+
if (app_data_model != "") {
public_deps += [ app_data_model ]
}
diff --git a/examples/smoke-co-alarm-app/silabs/README.md b/examples/smoke-co-alarm-app/silabs/README.md
index b5548b6..03ff976 100644
--- a/examples/smoke-co-alarm-app/silabs/README.md
+++ b/examples/smoke-co-alarm-app/silabs/README.md
@@ -384,10 +384,10 @@
### Enabling test event trigger
-`silabs_test_event_trigger_enabled, silabs_test_event_trigger_enable_key`
+`sl_enable_test_event_trigger`
```
- The value of silabs_test_event_trigger_enable_key is specific to each device manufacturer
+ The enable the test event trigger, `sl_enable_test_event_trigger` must be true.
- $ ./scripts/examples/gn_silabs_example.sh ./examples/smoke-co-alarm-app/silabs ./out/smoke-co-alarm-app BRD4164A silabs_test_event_trigger_enabled=true silabs_test_event_trigger_enable_key=\"00112233445566778899aabbccddeeff\"
+ $ ./scripts/examples/gn_silabs_example.sh ./examples/smoke-co-alarm-app/silabs ./out/smoke-co-alarm-app BRD4164A sl_enable_test_event_trigger=true
```
diff --git a/examples/smoke-co-alarm-app/silabs/build_for_wifi_args.gni b/examples/smoke-co-alarm-app/silabs/build_for_wifi_args.gni
index 047de7f..0619082 100644
--- a/examples/smoke-co-alarm-app/silabs/build_for_wifi_args.gni
+++ b/examples/smoke-co-alarm-app/silabs/build_for_wifi_args.gni
@@ -21,3 +21,17 @@
chip_enable_ota_requestor = true
app_data_model =
"${chip_root}/examples/smoke-co-alarm-app/smoke-co-alarm-common"
+
+sl_enable_test_event_trigger = true
+
+# ICD Default configurations
+chip_enable_icd_server = true
+chip_subscription_timeout_resumption = false
+sl_use_subscription_syncing = true
+icd_enforce_sit_slow_poll_limit = true
+chip_enable_icd_lit = true
+
+# ICD Matter Configuration flags
+sl_idle_mode_duration_s = 3600 # 60min Idle Mode Duration
+sl_active_mode_duration_ms = 0 # 0 Active Mode Duration
+sl_active_mode_threshold_ms = 30000 # 30s Active Mode Threshold
diff --git a/examples/smoke-co-alarm-app/silabs/openthread.gni b/examples/smoke-co-alarm-app/silabs/openthread.gni
index 650b338..845b222 100644
--- a/examples/smoke-co-alarm-app/silabs/openthread.gni
+++ b/examples/smoke-co-alarm-app/silabs/openthread.gni
@@ -25,3 +25,22 @@
openthread_external_platform =
"${chip_root}/third_party/openthread/platforms/efr32:libopenthread-efr32"
+
+sl_enable_test_event_trigger = true
+
+# ICD Default configurations
+chip_enable_icd_server = true
+chip_subscription_timeout_resumption = false
+sl_use_subscription_syncing = true
+icd_enforce_sit_slow_poll_limit = true
+chip_icd_report_on_active_mode = true
+chip_enable_icd_lit = true
+
+# Openthread Configuration flags
+sl_ot_idle_interval_ms = 3600000 # 60mins Idle Polling Interval
+sl_ot_active_interval_ms = 1000 # 1000ms Active Polling Interval
+
+# ICD Matter Configuration flags
+sl_idle_mode_duration_s = 3600 # 60min Idle Mode Duration
+sl_active_mode_duration_ms = 0 # 0 Active Mode Duration
+sl_active_mode_threshold_ms = 5000 # 5s Active Mode Threshold
diff --git a/examples/window-app/silabs/openthread.gni b/examples/window-app/silabs/openthread.gni
index d3d50ab..9fd09bd 100644
--- a/examples/window-app/silabs/openthread.gni
+++ b/examples/window-app/silabs/openthread.gni
@@ -29,7 +29,7 @@
chip_enable_icd_server = true
enable_synchronized_sed = true
chip_subscription_timeout_resumption = false
-sl_use_subscription_synching = true
+sl_use_subscription_syncing = true
# Openthread Configuration flags
sl_ot_idle_interval_ms = 1000 # 1s Idle Intervals
diff --git a/src/platform/silabs/SilabsConfig.h b/src/platform/silabs/SilabsConfig.h
index 0f820f6..3bd5abf 100644
--- a/src/platform/silabs/SilabsConfig.h
+++ b/src/platform/silabs/SilabsConfig.h
@@ -93,34 +93,35 @@
// Key definitions for well-known configuration values.
// Factory config keys
- static constexpr Key kConfigKey_SerialNum = SilabsConfigKey(kMatterFactory_KeyBase, 0x00);
- static constexpr Key kConfigKey_MfrDeviceId = SilabsConfigKey(kMatterFactory_KeyBase, 0x01);
- static constexpr Key kConfigKey_MfrDeviceCert = SilabsConfigKey(kMatterFactory_KeyBase, 0x02);
- static constexpr Key kConfigKey_MfrDevicePrivateKey = SilabsConfigKey(kMatterFactory_KeyBase, 0x03);
- static constexpr Key kConfigKey_ManufacturingDate = SilabsConfigKey(kMatterFactory_KeyBase, 0x04);
- static constexpr Key kConfigKey_SetupPayloadBitSet = SilabsConfigKey(kMatterFactory_KeyBase, 0x05);
- static constexpr Key kConfigKey_MfrDeviceICACerts = SilabsConfigKey(kMatterFactory_KeyBase, 0x06);
- static constexpr Key kConfigKey_SetupDiscriminator = SilabsConfigKey(kMatterFactory_KeyBase, 0x07);
- static constexpr Key kConfigKey_Spake2pIterationCount = SilabsConfigKey(kMatterFactory_KeyBase, 0x08);
- static constexpr Key kConfigKey_Spake2pSalt = SilabsConfigKey(kMatterFactory_KeyBase, 0x09);
- static constexpr Key kConfigKey_Spake2pVerifier = SilabsConfigKey(kMatterFactory_KeyBase, 0x0A);
- static constexpr Key kConfigKey_ProductId = SilabsConfigKey(kMatterFactory_KeyBase, 0x0B);
- static constexpr Key kConfigKey_VendorId = SilabsConfigKey(kMatterFactory_KeyBase, 0x0C);
- static constexpr Key kConfigKey_VendorName = SilabsConfigKey(kMatterFactory_KeyBase, 0x0D);
- static constexpr Key kConfigKey_ProductName = SilabsConfigKey(kMatterFactory_KeyBase, 0x0E);
- static constexpr Key kConfigKey_HardwareVersionString = SilabsConfigKey(kMatterFactory_KeyBase, 0x0F);
- static constexpr Key KConfigKey_ProductLabel = SilabsConfigKey(kMatterFactory_KeyBase, 0x10);
- static constexpr Key kConfigKey_ProductURL = SilabsConfigKey(kMatterFactory_KeyBase, 0x11);
- static constexpr Key kConfigKey_PartNumber = SilabsConfigKey(kMatterFactory_KeyBase, 0x12);
- static constexpr Key kConfigKey_UniqueId = SilabsConfigKey(kMatterFactory_KeyBase, 0x1F);
- static constexpr Key kConfigKey_Creds_KeyId = SilabsConfigKey(kMatterFactory_KeyBase, 0x20);
- static constexpr Key kConfigKey_Creds_Base_Addr = SilabsConfigKey(kMatterFactory_KeyBase, 0x21);
- static constexpr Key kConfigKey_Creds_DAC_Offset = SilabsConfigKey(kMatterFactory_KeyBase, 0x22);
- static constexpr Key kConfigKey_Creds_DAC_Size = SilabsConfigKey(kMatterFactory_KeyBase, 0x23);
- static constexpr Key kConfigKey_Creds_PAI_Offset = SilabsConfigKey(kMatterFactory_KeyBase, 0x24);
- static constexpr Key kConfigKey_Creds_PAI_Size = SilabsConfigKey(kMatterFactory_KeyBase, 0x25);
- static constexpr Key kConfigKey_Creds_CD_Offset = SilabsConfigKey(kMatterFactory_KeyBase, 0x26);
- static constexpr Key kConfigKey_Creds_CD_Size = SilabsConfigKey(kMatterFactory_KeyBase, 0x27);
+ static constexpr Key kConfigKey_SerialNum = SilabsConfigKey(kMatterFactory_KeyBase, 0x00);
+ static constexpr Key kConfigKey_MfrDeviceId = SilabsConfigKey(kMatterFactory_KeyBase, 0x01);
+ static constexpr Key kConfigKey_MfrDeviceCert = SilabsConfigKey(kMatterFactory_KeyBase, 0x02);
+ static constexpr Key kConfigKey_MfrDevicePrivateKey = SilabsConfigKey(kMatterFactory_KeyBase, 0x03);
+ static constexpr Key kConfigKey_ManufacturingDate = SilabsConfigKey(kMatterFactory_KeyBase, 0x04);
+ static constexpr Key kConfigKey_SetupPayloadBitSet = SilabsConfigKey(kMatterFactory_KeyBase, 0x05);
+ static constexpr Key kConfigKey_MfrDeviceICACerts = SilabsConfigKey(kMatterFactory_KeyBase, 0x06);
+ static constexpr Key kConfigKey_SetupDiscriminator = SilabsConfigKey(kMatterFactory_KeyBase, 0x07);
+ static constexpr Key kConfigKey_Spake2pIterationCount = SilabsConfigKey(kMatterFactory_KeyBase, 0x08);
+ static constexpr Key kConfigKey_Spake2pSalt = SilabsConfigKey(kMatterFactory_KeyBase, 0x09);
+ static constexpr Key kConfigKey_Spake2pVerifier = SilabsConfigKey(kMatterFactory_KeyBase, 0x0A);
+ static constexpr Key kConfigKey_ProductId = SilabsConfigKey(kMatterFactory_KeyBase, 0x0B);
+ static constexpr Key kConfigKey_VendorId = SilabsConfigKey(kMatterFactory_KeyBase, 0x0C);
+ static constexpr Key kConfigKey_VendorName = SilabsConfigKey(kMatterFactory_KeyBase, 0x0D);
+ static constexpr Key kConfigKey_ProductName = SilabsConfigKey(kMatterFactory_KeyBase, 0x0E);
+ static constexpr Key kConfigKey_HardwareVersionString = SilabsConfigKey(kMatterFactory_KeyBase, 0x0F);
+ static constexpr Key KConfigKey_ProductLabel = SilabsConfigKey(kMatterFactory_KeyBase, 0x10);
+ static constexpr Key kConfigKey_ProductURL = SilabsConfigKey(kMatterFactory_KeyBase, 0x11);
+ static constexpr Key kConfigKey_PartNumber = SilabsConfigKey(kMatterFactory_KeyBase, 0x12);
+ static constexpr Key kConfigKey_UniqueId = SilabsConfigKey(kMatterFactory_KeyBase, 0x1F);
+ static constexpr Key kConfigKey_Creds_KeyId = SilabsConfigKey(kMatterFactory_KeyBase, 0x20);
+ static constexpr Key kConfigKey_Creds_Base_Addr = SilabsConfigKey(kMatterFactory_KeyBase, 0x21);
+ static constexpr Key kConfigKey_Creds_DAC_Offset = SilabsConfigKey(kMatterFactory_KeyBase, 0x22);
+ static constexpr Key kConfigKey_Creds_DAC_Size = SilabsConfigKey(kMatterFactory_KeyBase, 0x23);
+ static constexpr Key kConfigKey_Creds_PAI_Offset = SilabsConfigKey(kMatterFactory_KeyBase, 0x24);
+ static constexpr Key kConfigKey_Creds_PAI_Size = SilabsConfigKey(kMatterFactory_KeyBase, 0x25);
+ static constexpr Key kConfigKey_Creds_CD_Offset = SilabsConfigKey(kMatterFactory_KeyBase, 0x26);
+ static constexpr Key kConfigKey_Creds_CD_Size = SilabsConfigKey(kMatterFactory_KeyBase, 0x27);
+ static constexpr Key kConfigKey_Test_Event_Trigger_Key = SilabsConfigKey(kMatterFactory_KeyBase, 0x28);
// Matter Config Keys
static constexpr Key kConfigKey_ServiceConfig = SilabsConfigKey(kMatterConfig_KeyBase, 0x01);
static constexpr Key kConfigKey_PairedAccountId = SilabsConfigKey(kMatterConfig_KeyBase, 0x02);