[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);