diff --git a/bsp_hosted/scheduling.cpp b/bsp_hosted/scheduling.cpp index 270de82e..9f859b6c 100644 --- a/bsp_hosted/scheduling.cpp +++ b/bsp_hosted/scheduling.cpp @@ -95,46 +95,43 @@ void scheduling::initTasks() { sif::error << "Add component UDP Polling failed" << std::endl; } - /* PUS Services */ - PeriodicTaskIF* pusVerification = factory->createPeriodicTask( - "PUS_VERIF", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc); - result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION); + PeriodicTaskIF* pusHighPrio = factory->createPeriodicTask( + "PUS_HIGH_PRIO", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc); + result = pusHighPrio->addComponent(objects::PUS_SERVICE_1_VERIFICATION); if (result != returnvalue::OK) { sif::error << "Object add component failed" << std::endl; } - - PeriodicTaskIF* eventHandling = factory->createPeriodicTask( - "EVENTS", 60, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc); - result = eventHandling->addComponent(objects::EVENT_MANAGER); + result = pusHighPrio->addComponent(objects::EVENT_MANAGER); if (result != returnvalue::OK) { - scheduling::printAddObjectError("EVENT_MNGR", objects::EVENT_MANAGER); + scheduling::printAddObjectError("EVENT_MGMT", objects::EVENT_MANAGER); } - result = eventHandling->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING); + result = pusHighPrio->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING); if (result != returnvalue::OK) { scheduling::printAddObjectError("PUS5", objects::PUS_SERVICE_5_EVENT_REPORTING); } - - PeriodicTaskIF* pusHighPrio = factory->createPeriodicTask( - "PUS_HIGH_PRIO", 50, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.200, missedDeadlineFunc); - result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS); - if (result != returnvalue::OK) { - scheduling::printAddObjectError("PUS2", objects::PUS_SERVICE_2_DEVICE_ACCESS); - } result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT); if (result != returnvalue::OK) { scheduling::printAddObjectError("PUS9", objects::PUS_SERVICE_9_TIME_MGMT); } + + PeriodicTaskIF* pusMedPrio = factory->createPeriodicTask( + "PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc); + result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS); + if (result != returnvalue::OK) { + scheduling::printAddObjectError("PUS2", objects::PUS_SERVICE_2_DEVICE_ACCESS); + } result = pusHighPrio->addComponent(objects::PUS_SERVICE_3_HOUSEKEEPING); if (result != returnvalue::OK) { scheduling::printAddObjectError("PUS3", objects::PUS_SERVICE_3_HOUSEKEEPING); } - - PeriodicTaskIF* pusMedPrio = factory->createPeriodicTask( - "PUS_MED_PRIO", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.8, missedDeadlineFunc); result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT); if (result != returnvalue::OK) { scheduling::printAddObjectError("PUS8", objects::PUS_SERVICE_8_FUNCTION_MGMT); } + result = pusMedPrio->addComponent(objects::PUS_SERVICE_15_TM_STORAGE); + if (result != returnvalue::OK) { + scheduling::printAddObjectError("PUS15", objects::PUS_SERVICE_15_TM_STORAGE); + } result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT); if (result != returnvalue::OK) { scheduling::printAddObjectError("PUS200", objects::PUS_SERVICE_200_MODE_MGMT); @@ -143,10 +140,7 @@ void scheduling::initTasks() { if (result != returnvalue::OK) { scheduling::printAddObjectError("PUS20", objects::PUS_SERVICE_20_PARAMETERS); } - - PeriodicTaskIF* pusLowPrio = factory->createPeriodicTask( - "PUS_LOW_PRIO", 30, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.6, missedDeadlineFunc); - result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST); + result = pusMedPrio->addComponent(objects::PUS_SERVICE_17_TEST); if (result != returnvalue::OK) { scheduling::printAddObjectError("PUS17", objects::PUS_SERVICE_17_TEST); } @@ -220,11 +214,8 @@ void scheduling::initTasks() { udpPollingTask->startTask(); tcpPollingTask->startTask(); - pusVerification->startTask(); - eventHandling->startTask(); pusHighPrio->startTask(); pusMedPrio->startTask(); - pusLowPrio->startTask(); pstTask->startTask(); thermalTask->startTask(); diff --git a/common/config/tmtc/pusIds.h b/common/config/tmtc/pusIds.h index 0891992d..b44d7e20 100644 --- a/common/config/tmtc/pusIds.h +++ b/common/config/tmtc/pusIds.h @@ -12,6 +12,7 @@ enum Ids { PUS_SERVICE_8 = 8, PUS_SERVICE_9 = 9, PUS_SERVICE_11 = 11, + PUS_SERVICE_15 = 15, PUS_SERVICE_17 = 17, PUS_SERVICE_19 = 19, PUS_SERVICE_20 = 20, diff --git a/fsfw b/fsfw index e1711f03..2a0c2444 160000 --- a/fsfw +++ b/fsfw @@ -1 +1 @@ -Subproject commit e1711f0345bdcd471a308ebd080071f8974c8e91 +Subproject commit 2a0c244468e40c4d036a2c4d5eeec3af03a2f064 diff --git a/mission/core/GenericFactory.cpp b/mission/core/GenericFactory.cpp index 821af001..dcf19a7b 100644 --- a/mission/core/GenericFactory.cpp +++ b/mission/core/GenericFactory.cpp @@ -57,6 +57,7 @@ // TCP server includes #include "fsfw/osal/common/TcpTmTcBridge.h" #include "fsfw/osal/common/TcpTmTcServer.h" +#include "mission/tmtc/Service15TmStorage.h" #endif #endif @@ -173,6 +174,7 @@ void ObjectFactory::produceGenericObjects(HealthTableIF** healthTable_, PusTmFun new Service11TelecommandScheduling( PsbParams(objects::PUS_SERVICE_11_TC_SCHEDULER, config::EIVE_PUS_APID, pus::PUS_SERVICE_11), ccsdsDistrib); + new Service15TmStorage(objects::PUS_SERVICE_15_TM_STORAGE, config::EIVE_PUS_APID, 10); new Service17Test( PsbParams(objects::PUS_SERVICE_17_TEST, config::EIVE_PUS_APID, pus::PUS_SERVICE_17)); new Service20ParameterManagement(objects::PUS_SERVICE_20_PARAMETERS, config::EIVE_PUS_APID, diff --git a/mission/tmtc/Service15TmStorage.h b/mission/tmtc/Service15TmStorage.h index 2074754a..33be0634 100644 --- a/mission/tmtc/Service15TmStorage.h +++ b/mission/tmtc/Service15TmStorage.h @@ -7,7 +7,7 @@ class Service15TmStorage : public CommandingServiceBase { public: enum Subservices : uint8_t { START_BY_TIME_RANGE_RETRIEVAL = 9, DELETE_UP_TO = 11 }; explicit Service15TmStorage(object_id_t objectId, uint16_t apid, uint8_t numParallelCommands, - uint16_t commandTimeoutSecs, size_t queueDepth); + uint16_t commandTimeoutSecs = 60, size_t queueDepth = 10); private: ReturnValue_t isValidSubservice(uint8_t subservice) override; diff --git a/tmtc b/tmtc index 6a6d9c0a..8f5f7064 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 6a6d9c0a7a6342c23aa4c602ef33b5950f54409c +Subproject commit 8f5f7064e934f9cf325548b9d05dd87e77d9be61