[silabs] reworked main.cpp  (#32667)

* reworked silabs main.cpp to follow template. Moved functionality to matterconfig.cpp

* restryled

* restryled

* minor fixes

* minor fixes

* using blank namespace for application_start() function

* restyled

* restyled

* restyled
diff --git a/examples/platform/silabs/MatterConfig.cpp b/examples/platform/silabs/MatterConfig.cpp
index dd2368f..d41a415 100644
--- a/examples/platform/silabs/MatterConfig.cpp
+++ b/examples/platform/silabs/MatterConfig.cpp
@@ -46,10 +46,6 @@
 #include "wfx_rsi.h"
 #endif /* SLI_SI91X_MCU_INTERFACE */
 
-using namespace ::chip;
-using namespace ::chip::Inet;
-using namespace ::chip::DeviceLayer;
-
 #include <crypto/CHIPCryptoPAL.h>
 // If building with the EFR32-provided crypto backend, we can use the
 // opaque keystore
@@ -75,6 +71,36 @@
 #include <performance_test_commands.h>
 #endif
 
+#include <AppTask.h>
+
+#include <DeviceInfoProviderImpl.h>
+#include <app/server/Server.h>
+#include <credentials/DeviceAttestationCredsProvider.h>
+#include <examples/platform/silabs/SilabsDeviceAttestationCreds.h>
+
+#include <platform/silabs/platformAbstraction/SilabsPlatform.h>
+
+#include "FreeRTOSConfig.h"
+#include "event_groups.h"
+#include "task.h"
+
+/**********************************************************
+ * Defines
+ *********************************************************/
+
+#define MAIN_TASK_STACK_SIZE (1024 * 5)
+#define MAIN_TASK_PRIORITY (configMAX_PRIORITIES - 1)
+
+using namespace ::chip;
+using namespace ::chip::Inet;
+using namespace ::chip::DeviceLayer;
+using namespace ::chip::Credentials::Silabs;
+using namespace chip::DeviceLayer::Silabs;
+
+TaskHandle_t main_Task;
+volatile int apperror_cnt;
+static chip::DeviceLayer::DeviceInfoProviderImpl gExampleDeviceInfoProvider;
+
 #if CHIP_ENABLE_OPENTHREAD
 #include <inet/EndPointStateOpenThread.h>
 #include <openthread/cli.h>
@@ -129,6 +155,44 @@
 }
 #endif // CHIP_ENABLE_OPENTHREAD
 
+namespace {
+void application_start(void * unused)
+{
+    CHIP_ERROR err = SilabsMatterConfig::InitMatter(BLE_DEV_NAME);
+    if (err != CHIP_NO_ERROR)
+        appError(err);
+
+    gExampleDeviceInfoProvider.SetStorageDelegate(&chip::Server::GetInstance().GetPersistentStorage());
+    chip::DeviceLayer::SetDeviceInfoProvider(&gExampleDeviceInfoProvider);
+
+    chip::DeviceLayer::PlatformMgr().LockChipStack();
+    // Initialize device attestation config
+    SetDeviceAttestationCredentialsProvider(Credentials::Silabs::GetSilabsDacProvider());
+    chip::DeviceLayer::PlatformMgr().UnlockChipStack();
+
+    SILABS_LOG("Starting App Task");
+    err = AppTask::GetAppTask().StartAppTask();
+    if (err != CHIP_NO_ERROR)
+        appError(err);
+
+    vTaskDelete(main_Task);
+}
+} // namespace
+
+void SilabsMatterConfig::AppInit()
+{
+    GetPlatform().Init();
+
+    xTaskCreate(application_start, "main_task", MAIN_TASK_STACK_SIZE, NULL, MAIN_TASK_PRIORITY, &main_Task);
+    SILABS_LOG("Starting scheduler");
+    GetPlatform().StartScheduler();
+
+    // Should never get here.
+    chip::Platform::MemoryShutdown();
+    SILABS_LOG("Start Scheduler Failed");
+    appError(CHIP_ERROR_INTERNAL);
+}
+
 #if SILABS_OTA_ENABLED
 void SilabsMatterConfig::InitOTARequestorHandler(System::Layer * systemLayer, void * appState)
 {
diff --git a/examples/platform/silabs/MatterConfig.h b/examples/platform/silabs/MatterConfig.h
index 86c8b7e..4725e02 100644
--- a/examples/platform/silabs/MatterConfig.h
+++ b/examples/platform/silabs/MatterConfig.h
@@ -26,6 +26,7 @@
 {
 public:
     static CHIP_ERROR InitMatter(const char * appName);
+    static void AppInit();
 
 private:
     static CHIP_ERROR InitOpenThread(void);
diff --git a/examples/platform/silabs/main.cpp b/examples/platform/silabs/main.cpp
index a315519..d01e27f 100644
--- a/examples/platform/silabs/main.cpp
+++ b/examples/platform/silabs/main.cpp
@@ -16,77 +16,16 @@
  *    See the License for the specific language governing permissions and
  *    limitations under the License.
  */
-
-#include <AppTask.h>
-
-#include "AppConfig.h"
-
-#include <DeviceInfoProviderImpl.h>
+#include "sl_component_catalog.h"
+#include "sl_system_init.h"
+#include "sl_system_kernel.h"
 #include <MatterConfig.h>
-#include <app/server/Server.h>
-#include <credentials/DeviceAttestationCredsProvider.h>
-#include <examples/platform/silabs/SilabsDeviceAttestationCreds.h>
 
-#include <platform/silabs/platformAbstraction/SilabsPlatform.h>
-
-#include "FreeRTOS.h"
-#include "FreeRTOSConfig.h"
-#include "event_groups.h"
-#include "task.h"
-
-/**********************************************************
- * Defines
- *********************************************************/
-
-#define MAIN_TASK_STACK_SIZE (1024 * 5)
-#define MAIN_TASK_PRIORITY (configMAX_PRIORITIES - 1)
-
-using namespace ::chip;
-using namespace ::chip::DeviceLayer;
-using namespace ::chip::Credentials;
-using namespace chip::DeviceLayer::Silabs;
-
-TaskHandle_t main_Task;
-void application_start(void * unused);
-volatile int apperror_cnt;
-static chip::DeviceLayer::DeviceInfoProviderImpl gExampleDeviceInfoProvider;
-
-// ================================================================================
-// Main Code
-// ================================================================================
 int main(void)
 {
-    GetPlatform().Init();
+    sl_system_init();
 
-    xTaskCreate(application_start, "main_task", MAIN_TASK_STACK_SIZE, NULL, MAIN_TASK_PRIORITY, &main_Task);
-
-    SILABS_LOG("Starting scheduler");
-    GetPlatform().StartScheduler();
-
-    // Should never get here.
-    chip::Platform::MemoryShutdown();
-    SILABS_LOG("vTaskStartScheduler() failed");
-    appError(CHIP_ERROR_INTERNAL);
-}
-
-void application_start(void * unused)
-{
-    CHIP_ERROR err = SilabsMatterConfig::InitMatter(BLE_DEV_NAME);
-    if (err != CHIP_NO_ERROR)
-        appError(err);
-
-    gExampleDeviceInfoProvider.SetStorageDelegate(&chip::Server::GetInstance().GetPersistentStorage());
-    chip::DeviceLayer::SetDeviceInfoProvider(&gExampleDeviceInfoProvider);
-
-    chip::DeviceLayer::PlatformMgr().LockChipStack();
-    // Initialize device attestation config
-    SetDeviceAttestationCredentialsProvider(Credentials::Silabs::GetSilabsDacProvider());
-    chip::DeviceLayer::PlatformMgr().UnlockChipStack();
-
-    SILABS_LOG("Starting App Task");
-    err = AppTask::GetAppTask().StartAppTask();
-    if (err != CHIP_NO_ERROR)
-        appError(err);
-
-    vTaskDelete(main_Task);
+    // Initialize the application. For example, create periodic timer(s) or
+    // task(s) if the kernel is present.
+    SilabsMatterConfig::AppInit();
 }
diff --git a/src/platform/silabs/platformAbstraction/GsdkSpam.cpp b/src/platform/silabs/platformAbstraction/GsdkSpam.cpp
index 5527fbf..8bfce2f 100644
--- a/src/platform/silabs/platformAbstraction/GsdkSpam.cpp
+++ b/src/platform/silabs/platformAbstraction/GsdkSpam.cpp
@@ -44,7 +44,6 @@
 
 #include "sl_component_catalog.h"
 #include "sl_mbedtls.h"
-#include "sl_system_init.h"
 #if SILABS_LOG_OUT_UART || ENABLE_CHIP_SHELL || CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI
 #include "uart.h"
 #endif
@@ -68,8 +67,6 @@
 
 CHIP_ERROR SilabsPlatform::Init(void)
 {
-    sl_system_init();
-
     mRebootCause = RMU_ResetCauseGet();
     // Clear register so it does accumualate the causes of each reset
     RMU_ResetCauseClear();
diff --git a/src/platform/silabs/platformAbstraction/WiseMcuSpam.cpp b/src/platform/silabs/platformAbstraction/WiseMcuSpam.cpp
index f57b73f..8a03e8a 100644
--- a/src/platform/silabs/platformAbstraction/WiseMcuSpam.cpp
+++ b/src/platform/silabs/platformAbstraction/WiseMcuSpam.cpp
@@ -31,7 +31,6 @@
 #include "sl_event_handler.h"
 #include "sl_si91x_led.h"
 #include "sl_si91x_led_config.h"
-#include "sl_system_init.h"
 void soc_pll_config(void);
 }
 
@@ -50,8 +49,6 @@
 {
     mButtonCallback = nullptr;
 
-    sl_system_init();
-
     // TODO: Setting the highest priority for SVCall_IRQn to avoid the HardFault issue
     NVIC_SetPriority(SVCall_IRQn, CORE_INTERRUPT_HIGHEST_PRIORITY);