move cfdp code to example common where applicable
This commit is contained in:
parent
42cdca76b6
commit
02046f043c
@ -2,15 +2,12 @@
|
|||||||
|
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
#include "bsp_hosted/fsfwconfig/objects/systemObjectList.h"
|
#include "bsp_hosted/fsfwconfig/objects/systemObjectList.h"
|
||||||
#include "common/definitions.h"
|
|
||||||
#include "commonConfig.h"
|
#include "commonConfig.h"
|
||||||
#include "example/core/GenericFactory.h"
|
#include "example/core/GenericFactory.h"
|
||||||
#include "example/test/FsfwTestTask.h"
|
#include "example/test/FsfwTestTask.h"
|
||||||
#include "example/utility/TmFunnel.h"
|
#include "example/utility/TmFunnel.h"
|
||||||
#include "fsfw/cfdp.h"
|
|
||||||
#include "fsfw/storagemanager/PoolManager.h"
|
#include "fsfw/storagemanager/PoolManager.h"
|
||||||
#include "fsfw/tcdistribution/CcsdsDistributor.h"
|
#include "fsfw/tcdistribution/CcsdsDistributor.h"
|
||||||
#include "fsfw/tcdistribution/CcsdsDistributorIF.h"
|
|
||||||
#include "fsfw/tmtcservices/CommandingServiceBase.h"
|
#include "fsfw/tmtcservices/CommandingServiceBase.h"
|
||||||
#include "fsfw_hal/host/HostFilesystem.h"
|
#include "fsfw_hal/host/HostFilesystem.h"
|
||||||
|
|
||||||
@ -22,56 +19,21 @@
|
|||||||
#include "fsfw/osal/common/TcpTmTcServer.h"
|
#include "fsfw/osal/common/TcpTmTcServer.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class CfdpExampleUserHandler : public cfdp::UserBase {
|
#if OBSW_ADD_CFDP_COMPONENTS == 1
|
||||||
public:
|
// These CFDP containers are user supplied because their size might differ depending on
|
||||||
explicit CfdpExampleUserHandler(HasFileSystemIF& vfs) : cfdp::UserBase(vfs) {}
|
// which system the example is run on
|
||||||
|
namespace cfdp {
|
||||||
void transactionIndication(const cfdp::TransactionId& id) override {}
|
PacketInfoList<128> PACKET_INFO;
|
||||||
void eofSentIndication(const cfdp::TransactionId& id) override {}
|
PacketInfoListBase* PACKET_LIST_PTR = &PACKET_INFO;
|
||||||
void transactionFinishedIndication(const cfdp::TransactionFinishedParams& params) override {
|
LostSegmentsList<128> LOST_SEGMENTS;
|
||||||
sif::info << "File transaction finished for transaction with " << params.id << std::endl;
|
LostSegmentsListBase* LOST_SEGMENTS_PTR = &LOST_SEGMENTS;
|
||||||
}
|
} // namespace cfdp
|
||||||
void metadataRecvdIndication(const cfdp::MetadataRecvdParams& params) override {
|
#endif
|
||||||
sif::info << "Metadata received for transaction with " << params.id << std::endl;
|
|
||||||
}
|
|
||||||
void fileSegmentRecvdIndication(const cfdp::FileSegmentRecvdParams& params) override {}
|
|
||||||
void reportIndication(const cfdp::TransactionId& id, cfdp::StatusReportIF& report) override {}
|
|
||||||
void suspendedIndication(const cfdp::TransactionId& id, cfdp::ConditionCode code) override {}
|
|
||||||
void resumedIndication(const cfdp::TransactionId& id, size_t progress) override {}
|
|
||||||
void faultIndication(const cfdp::TransactionId& id, cfdp::ConditionCode code,
|
|
||||||
size_t progress) override {}
|
|
||||||
void abandonedIndication(const cfdp::TransactionId& id, cfdp::ConditionCode code,
|
|
||||||
size_t progress) override {}
|
|
||||||
void eofRecvIndication(const cfdp::TransactionId& id) override {
|
|
||||||
sif::info << "EOF PDU received for transaction with " << id << std::endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfdpExampleFaultHandler : public cfdp::FaultHandlerBase {
|
|
||||||
public:
|
|
||||||
void noticeOfSuspensionCb(cfdp::TransactionId& id, cfdp::ConditionCode code) override {
|
|
||||||
sif::warning << "Notice of suspension detected for transaction " << id
|
|
||||||
<< " with condition code: " << cfdp::getConditionCodeString(code) << std::endl;
|
|
||||||
}
|
|
||||||
void noticeOfCancellationCb(cfdp::TransactionId& id, cfdp::ConditionCode code) override {
|
|
||||||
sif::warning << "Notice of suspension detected for transaction " << id
|
|
||||||
<< " with condition code: " << cfdp::getConditionCodeString(code) << std::endl;
|
|
||||||
}
|
|
||||||
void abandonCb(cfdp::TransactionId& id, cfdp::ConditionCode code) override {
|
|
||||||
sif::warning << "Transaction " << id
|
|
||||||
<< " was abandoned, condition code : " << cfdp::getConditionCodeString(code)
|
|
||||||
<< std::endl;
|
|
||||||
}
|
|
||||||
void ignoreCb(cfdp::TransactionId& id, cfdp::ConditionCode code) override {
|
|
||||||
sif::warning << "Fault ignored for transaction " << id
|
|
||||||
<< ", condition code: " << cfdp::getConditionCodeString(code) << std::endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
void ObjectFactory::produce(void* args) {
|
void ObjectFactory::produce(void* args) {
|
||||||
Factory::setStaticFrameworkObjectIds();
|
Factory::setStaticFrameworkObjectIds();
|
||||||
StorageManagerIF* tcStore = nullptr;
|
StorageManagerIF* tcStore;
|
||||||
StorageManagerIF* tmStore = nullptr;
|
StorageManagerIF* tmStore;
|
||||||
#if OBSW_ADD_CORE_COMPONENTS == 1
|
#if OBSW_ADD_CORE_COMPONENTS == 1
|
||||||
{
|
{
|
||||||
LocalPool::LocalPoolConfig poolCfg = {{100, 16}, {50, 32}, {40, 64},
|
LocalPool::LocalPoolConfig poolCfg = {{100, 16}, {50, 32}, {40, 64},
|
||||||
@ -92,7 +54,7 @@ void ObjectFactory::produce(void* args) {
|
|||||||
}
|
}
|
||||||
TmFunnel* funnel;
|
TmFunnel* funnel;
|
||||||
CcsdsDistributor* ccsdsDistrib;
|
CcsdsDistributor* ccsdsDistrib;
|
||||||
ObjectFactory::produceGenericObjects(&funnel, &ccsdsDistrib, *tcStore);
|
ObjectFactory::produceGenericObjects(&funnel, &ccsdsDistrib, *tcStore, *tmStore);
|
||||||
// TMTC Reception via TCP/IP socket
|
// TMTC Reception via TCP/IP socket
|
||||||
#if OBSW_USE_TCP_SERVER == 0
|
#if OBSW_USE_TCP_SERVER == 0
|
||||||
auto tmtcBridge = new UdpTmTcBridge(objects::TCPIP_TMTC_BRIDGE, objects::CCSDS_DISTRIBUTOR);
|
auto tmtcBridge = new UdpTmTcBridge(objects::TCPIP_TMTC_BRIDGE, objects::CCSDS_DISTRIBUTOR);
|
||||||
@ -113,27 +75,4 @@ void ObjectFactory::produce(void* args) {
|
|||||||
periodicEvent = true;
|
periodicEvent = true;
|
||||||
#endif
|
#endif
|
||||||
new FsfwTestTask(objects::TEST_TASK, periodicEvent);
|
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::COMMON_CFDP_APID);
|
|
||||||
cfdp::EntityId localId(apid);
|
|
||||||
UnsignedByteField<uint16_t> remoteEntityId(common::COMMON_CFDP_CLIENT_ENTITY_ID);
|
|
||||||
cfdp::EntityId remoteId(remoteEntityId);
|
|
||||||
cfdp::RemoteEntityCfg remoteCfg(remoteId);
|
|
||||||
remoteCfg.defaultChecksum = cfdp::ChecksumType::CRC_32;
|
|
||||||
auto* remoteCfgProvider = new cfdp::OneRemoteConfigProvider(remoteCfg);
|
|
||||||
auto* cfdpUserHandler = new CfdpExampleUserHandler(*hostFs);
|
|
||||||
auto* cfdpFaultHandler = new CfdpExampleFaultHandler();
|
|
||||||
cfdp::PacketInfoList<64> packetList;
|
|
||||||
cfdp::LostSegmentsList<128> lostSegments;
|
|
||||||
CfdpHandlerCfg cfg(localId, indicationCfg, *cfdpUserHandler, *cfdpFaultHandler, packetList,
|
|
||||||
lostSegments, *remoteCfgProvider);
|
|
||||||
auto* cfdpHandler = new CfdpHandler(params, cfg);
|
|
||||||
CcsdsDistributorIF::DestInfo info("CFDP Destination", common::COMMON_CFDP_APID,
|
|
||||||
cfdpHandler->getRequestQueue(), true);
|
|
||||||
ccsdsDistrib->registerApplication(info);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 29593e31420fa85cb67b8f2b10020ebde5c05ca2
|
Subproject commit 86797bb6db5fde3303d3862cea47f965f5da0c2b
|
2
fsfw
2
fsfw
@ -1 +1 @@
|
|||||||
Subproject commit c38088c64bd4ba63246e5c44f5dae6d7c2efc0e2
|
Subproject commit bdbe0cc9da5edcaa8b01af4f6462a2f46d4628bd
|
Loading…
x
Reference in New Issue
Block a user