#include "hardware_init.h" #include "boardconfig.h" #include "OBSWVersion.h" #include "OBSWConfig.h" #if OBSW_ADD_LWIP_COMPONENTS == 1 #include #endif #include "core/InitMission.h" #include "core/ObjectFactory.h" #include "example_common/utility/utility.h" #include #include #include #include "FreeRTOS.h" #include "task.h" #include "cmsis_os.h" #include #if FSFW_CPP_OSTREAM_ENABLED == 1 #include #endif #if !defined(BOARD_NAME) #define BOARD_NAME "unknown board" #endif #if FSFW_CPP_OSTREAM_ENABLED == 1 ServiceInterfaceStream sif::debug("DEBUG", true); ServiceInterfaceStream sif::info("INFO", true); ServiceInterfaceStream sif::warning("WARNING", true); ServiceInterfaceStream sif::error("ERROR", true); #endif void initTask(void *parameters); /** * @brief Core function for the STM32 FreeRTOS BSP * @return * @author R. Mueller, J. Meier */ int main() { performHardwareInit(); xTaskCreate(initTask, "INIT_TASK", 2048, nullptr, 9, nullptr); /* Start scheduler */ osKernelStart(); /* Should not be reached, scheduler should now be running. */ for(;;) {} return 0; } void initTask(void *parameters) { #if OBSW_ADD_LWIP_COMPONENTS == 1 /* Initialize the LwIP stack */ lwip_init(); /* Configure the Network interface */ Netif_Config(); #endif utility::commonInitPrint("FreeRTOS", BOARD_NAME); #if FSFW_CPP_OSTREAM_ENABLED == 1 sif::info << "Creating objects.." << std::endl; #else sif::printInfo("Creating objects..\n\r"); #endif ObjectManager* objManager = ObjectManager::instance(); objManager->setObjectFactoryFunction(ObjectFactory::produce, nullptr); objManager->initialize(); #if FSFW_CPP_OSTREAM_ENABLED == 1 sif::info << "Creating tasks.." << std::endl; #else sif::printInfo("Creating tasks..\n\r"); #endif InitMission::createTasks(); TaskFactory::instance()->deleteTask(nullptr); }