create and schedule CFDP components

This commit is contained in:
Robin Müller 2022-09-08 17:39:59 +02:00
parent e0837683fe
commit b5ac8cded7
No known key found for this signature in database
GPG Key ID: 71B58F8A3CDFA9AC
5 changed files with 40 additions and 6 deletions

View File

@ -142,3 +142,8 @@ ReturnValue_t CfdpHandler::handleCfdpPacket(TmTcMessage& msg) {
}
return result;
}
void CfdpHandler::noticeOfSuspensionCb(cfdp::ConditionCode code) {}
void CfdpHandler::noticeOfCancellationCb(cfdp::ConditionCode code) {}
void CfdpHandler::abandonCb(cfdp::ConditionCode code) {}
void CfdpHandler::ignoreCb(cfdp::ConditionCode code) {}

View File

@ -66,6 +66,10 @@ class CfdpHandler : public SystemObject,
void abandonedIndication(const cfdp::TransactionId& id, cfdp::ConditionCode code,
size_t progress) override;
void eofRecvIndication(const cfdp::TransactionId& id) override;
void noticeOfSuspensionCb(cfdp::ConditionCode code) override;
void noticeOfCancellationCb(cfdp::ConditionCode code) override;
void abandonCb(cfdp::ConditionCode code) override;
void ignoreCb(cfdp::ConditionCode code) override;
private:
MessageQueueIF* msgQueue = nullptr;

View File

@ -48,11 +48,27 @@ void InitMission::createTasks() {
if (result != returnvalue::OK) {
task::printInitError("PUS distributor", objects::PUS_DISTRIBUTOR);
}
result = distributerTask->addComponent(objects::CFDP_DISTRIBUTOR);
if (result != returnvalue::OK) {
task::printInitError("CFDP distributor", objects::CFDP_DISTRIBUTOR);
}
result = distributerTask->addComponent(objects::TM_FUNNEL);
if (result != returnvalue::OK) {
task::printInitError("TM funnel", objects::TM_FUNNEL);
}
#if OBSW_ADD_CFDP_COMPONENTS == 1
#ifdef __unix__
currPrio = 50;
#endif
PeriodicTaskIF* cfdpTask = taskFactory->createPeriodicTask(
"CFDP Handler", currPrio, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.4, deadlineMissedFunc);
result = cfdpTask->addComponent(objects::CFDP_HANDLER);
if (result != returnvalue::OK) {
task::printInitError("CFDP Handler", objects::CFDP_HANDLER);
}
#endif
#ifdef __unix__
currPrio = 50;
#endif
@ -247,6 +263,10 @@ void InitMission::createTasks() {
eventTask->startTask();
#endif /* OBSW_ADD_CORE_COMPONENTS == 1 */
#if OBSW_ADD_CFDP_COMPONENTS == 1
cfdpTask->startTask();
#endif
#if OBSW_ADD_PUS_STACK == 1
pusVerification->startTask();
pusHighPrio->startTask();

View File

@ -42,7 +42,7 @@ void ObjectFactory::produce(void* args) {
new PoolManager(objects::IPC_STORE, poolCfg);
}
TmFunnel* funnel;
ObjectFactory::produceGenericObjects(&funnel);
ObjectFactory::produceGenericObjects(&funnel, *tcStore);
// TMTC Reception via TCP/IP socket
#if OBSW_USE_TCP_SERVER == 0
auto tmtcBridge = new UdpTmTcBridge(objects::TCPIP_TMTC_BRIDGE, objects::CCSDS_DISTRIBUTOR);
@ -63,13 +63,18 @@ void ObjectFactory::produce(void* args) {
periodicEvent = true;
#endif
new FsfwTestTask(objects::TEST_TASK, periodicEvent);
#if OBSW_ADD_CFDP_COMPONENTS == 1
auto* hostFs = new HostFilesystem();
FsfwHandlerParams params(objects::CFDP_HANDLER, *hostFs, *funnel, *tcStore, *tmStore);
cfdp::IndicationCfg indicationCfg;
UnsignedByteField<uint16_t> apid(COMMON_APID);
cfdp::EntityId localId(apid);
cfdp::RemoteEntityCfg cfg;
cfdp::OneRemoteConfigProvider remoteCfgProvider(cfg);
// CfdpHandlerCfg cfg(localId, indicationCfg);
// new CfdpHandler();
cfdp::RemoteEntityCfg remoteCfg;
cfdp::OneRemoteConfigProvider remoteCfgProvider(remoteCfg);
cfdp::PacketInfoList<64> packetList;
cfdp::LostSegmentsList<128> lostSegments;
CfdpHandlerCfg cfg(localId, indicationCfg, packetList, lostSegments, remoteCfgProvider);
new CfdpHandler(params, cfg);
#endif
}

@ -1 +1 @@
Subproject commit a36d951209568bc750bb78e314ea4dcd14b74c62
Subproject commit 081836621790614f3b44cf10fa8c7186d28eb2cf