diff --git a/bsp_stm32_freertos/core/InitMission.cpp b/bsp_stm32_freertos/core/InitMission.cpp index 068df10..1b9cdcd 100644 --- a/bsp_stm32_freertos/core/InitMission.cpp +++ b/bsp_stm32_freertos/core/InitMission.cpp @@ -1,23 +1,29 @@ #include "InitMission.h" +#include "OBSWConfig.h" -#include +#include "objects/systemObjectList.h" +#include "pollingsequence/pollingSequenceFactory.h" -#include +#include "mission/utility/TaskCreation.h" +#include "mission/assemblies/TestAssembly.h" -#include -#include -#include -#include -#include -#include -#include -#include +#include "fsfw/returnvalues/HasReturnvaluesIF.h" +#include "fsfw/serviceinterface/ServiceInterfaceStream.h" +#include "fsfw/tasks/FixedTimeslotTaskIF.h" +#include "fsfw/tasks/PeriodicTaskIF.h" +#include "fsfw/tasks/TaskFactory.h" +#include "fsfw/devicehandlers/DeviceHandlerIF.h" +#include "fsfw/modes/HasModesIF.h" +#include "fsfw/modes/ModeMessage.h" + +#include "freertos/FreeRTOS.h" void InitMission::createTasks() { + TaskFactory* taskFactory = TaskFactory::instance(); #if OBSW_ADD_CORE_COMPONENTS == 1 /* TMTC Distribution */ - PeriodicTaskIF* distributerTask = TaskFactory::instance()->createPeriodicTask( + PeriodicTaskIF* distributerTask = taskFactory->createPeriodicTask( "DIST", 5, 1024 * 2, 0.2, nullptr); ReturnValue_t result = distributerTask->addComponent(objects::CCSDS_DISTRIBUTOR); if(result!=HasReturnvaluesIF::RETURN_OK) { @@ -128,6 +134,15 @@ void InitMission::createTasks() { sif::printError("InitMission::createTasks: Test PST initialization faiedl!\n"); #endif } + PeriodicTaskIF* assemblyTask = taskFactory->createPeriodicTask("ASS_TASK", 3, + 1024, 2.0, nullptr); + if(assemblyTask == nullptr){ + task::printInitError("ASS_TASK", objects::TEST_ASSEMBLY); + } + result = assemblyTask->addComponent(objects::TEST_ASSEMBLY); + if(result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("ASS_TASK", objects::TEST_ASSEMBLY); + } #endif /* OBSW_ADD_DEVICE_HANDLER_DEMO == 1 */ PeriodicTaskIF* testTask = TaskFactory::instance()->createPeriodicTask( @@ -164,6 +179,7 @@ void InitMission::createTasks() { #if OBSW_ADD_DEVICE_HANDLER_DEMO == 1 testDevicesTask->startTask(); + assemblyTask->startTask(); #endif /* OBSW_ADD_DEVICE_HANDLER_DEMO == 1 */ testTask->startTask(); @@ -177,5 +193,29 @@ void InitMission::createTasks() { static_cast(xPortGetFreeHeapSize())); sif::printInfo("Tasks started..\n"); #endif + +#if OBSW_ADD_DEVICE_HANDLER_DEMO + HasModesIF* assembly = objectManager->get(objects::TEST_ASSEMBLY); + if (assembly == nullptr){ + return; + } +#if FSFW_CPP_OSTREAM_ENABLED == 1 + sif::info << "Waiting 5 Seconds and then command Test Assembly to Normal, Dual" << std::endl; +#else + sif::printInfo("Waiting 5 Seconds and then command Test Assembly to Normal, Dual \n"); +#endif + + TaskFactory::delayTask(5000); + CommandMessage modeMessage; + ModeMessage::setModeMessage(&modeMessage, ModeMessage::CMD_MODE_COMMAND, + DeviceHandlerIF::MODE_NORMAL, TestAssembly::submodes::DUAL); +#if FSFW_CPP_OSTREAM_ENABLED == 1 + sif::info << "Commanding Test Assembly to Normal, Dual" << std::endl; +#else + sif::printInfo("Commanding Test Assembly to Normal, Dual \n"); +#endif + MessageQueueSenderIF::sendMessage(assembly->getCommandQueue(), &modeMessage, + MessageQueueIF::NO_QUEUE); +#endif /* OBSW_ADD_DEVICE_HANDLER_DEMO */ } diff --git a/bsp_stm32_freertos/main.cpp b/bsp_stm32_freertos/main.cpp index e66cc86..8383bbe 100644 --- a/bsp_stm32_freertos/main.cpp +++ b/bsp_stm32_freertos/main.cpp @@ -1,20 +1,20 @@ -#include -#include -#include -#include +#include "hardware_init.h" +#include "lwip/init.h" +#include "boardconfig.h" +#include "OBSWVersion.h" -#include +#include "common/utility/utility.h" -#include -#include -#include +#include "fsfw/objectmanager/ObjectManager.h" +#include "fsfw/serviceinterface/ServiceInterface.h" +#include "fsfw/tasks/TaskFactory.h" -#include -#include +#include "bsp_stm32_freertos/core/InitMission.h" +#include "bsp_stm32_freertos/core/ObjectFactory.h" -#include -#include -#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "cmsis_os.h" #include #if FSFW_CPP_OSTREAM_ENABLED == 1 diff --git a/fsfw b/fsfw index 5676999..54e60f4 160000 --- a/fsfw +++ b/fsfw @@ -1 +1 @@ -Subproject commit 567699954c0e91f0a5ebd692f3e27ab51d94d1f3 +Subproject commit 54e60f4ddc88a8e108588c5a8b69ae744686a295 diff --git a/misc/eclipse/cmake/FreeRTOS/fsfw-stm32-freertos-debug.launch b/misc/eclipse/cmake/FreeRTOS/fsfw-stm32-freertos-debug.launch index 8a926ad..0df7d54 100644 --- a/misc/eclipse/cmake/FreeRTOS/fsfw-stm32-freertos-debug.launch +++ b/misc/eclipse/cmake/FreeRTOS/fsfw-stm32-freertos-debug.launch @@ -47,11 +47,11 @@ - + - + @@ -59,6 +59,6 @@ - + diff --git a/mission/core/GenericFactory.cpp b/mission/core/GenericFactory.cpp index 9343c69..9369c0f 100644 --- a/mission/core/GenericFactory.cpp +++ b/mission/core/GenericFactory.cpp @@ -100,8 +100,8 @@ void ObjectFactory::produceGenericObjects() { new TestEchoComIF(objects::TEST_ECHO_COM_IF); new TestDevice(objects::TEST_DEVICE_HANDLER_0, objects::TEST_ECHO_COM_IF, testCookie, testdevice::DeviceIndex::DEVICE_0, enableInfoPrintout); - testCookie = new DummyCookie( - static_cast(testdevice::DeviceIndex::DEVICE_1), expectedMaxReplyLen); + testCookie = new DummyCookie(static_cast(testdevice::DeviceIndex::DEVICE_1), + expectedMaxReplyLen); new TestDevice(objects::TEST_DEVICE_HANDLER_1, objects::TEST_ECHO_COM_IF, testCookie, testdevice::DeviceIndex::DEVICE_1, enableInfoPrintout);