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