add CFDP APID to TCP parse list
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good

This commit is contained in:
Robin Müller 2022-09-16 18:10:23 +02:00
parent 9411b740ae
commit 8aa412e865
No known key found for this signature in database
GPG Key ID: 11D4952C8CCEF814
12 changed files with 31 additions and 17 deletions

View File

@ -6,10 +6,10 @@
#include <mission/core/GenericFactory.h> #include <mission/core/GenericFactory.h>
#include <mission/tmtc/TmFunnel.h> #include <mission/tmtc/TmFunnel.h>
#include <objects/systemObjectList.h> #include <objects/systemObjectList.h>
#include "eive/definitions.h"
#include <tmtc/pusIds.h> #include <tmtc/pusIds.h>
#include "OBSWConfig.h" #include "OBSWConfig.h"
#include "eive/definitions.h"
#include "fsfw_tests/integration/task/TestTask.h" #include "fsfw_tests/integration/task/TestTask.h"
#if OBSW_USE_TMTC_TCP_BRIDGE == 0 #if OBSW_USE_TMTC_TCP_BRIDGE == 0

View File

@ -1,10 +1,10 @@
#ifndef CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_ #ifndef CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_
#define CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_ #define CONFIG_EVENTS_SUBSYSTEMIDRANGES_H_
#include "eive/eventSubsystemIds.h"
#include <cstdint> #include <cstdint>
#include "eive/eventSubsystemIds.h"
/** /**
* These IDs are part of the ID for an event thrown by a subsystem. * These IDs are part of the ID for an event thrown by a subsystem.
* Numbers 0-80 are reserved for FSFW Subsystem IDs (framework/events/) * Numbers 0-80 are reserved for FSFW Subsystem IDs (framework/events/)

View File

@ -1,10 +1,10 @@
#ifndef HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ #ifndef HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_
#define HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ #define HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_
#include "eive/objects.h"
#include <cstdint> #include <cstdint>
#include "eive/objects.h"
// The objects will be instantiated in the ID order // The objects will be instantiated in the ID order
namespace objects { namespace objects {
enum sourceObjects : uint32_t { enum sourceObjects : uint32_t {

View File

@ -84,6 +84,10 @@ void initmission::initTasks() {
if (result != returnvalue::OK) { if (result != returnvalue::OK) {
initmission::printAddObjectError("PUS_PACKET_DISTRIB", objects::PUS_PACKET_DISTRIBUTOR); initmission::printAddObjectError("PUS_PACKET_DISTRIB", objects::PUS_PACKET_DISTRIBUTOR);
} }
result = tmTcDistributor->addComponent(objects::CFDP_DISTRIBUTOR);
if (result != returnvalue::OK) {
initmission::printAddObjectError("CFDP_DISTRIBUTOR", objects::CFDP_DISTRIBUTOR);
}
result = tmTcDistributor->addComponent(objects::TM_FUNNEL); result = tmTcDistributor->addComponent(objects::TM_FUNNEL);
if (result != returnvalue::OK) { if (result != returnvalue::OK) {
initmission::printAddObjectError("TM_FUNNEL", objects::TM_FUNNEL); initmission::printAddObjectError("TM_FUNNEL", objects::TM_FUNNEL);

View File

@ -5,4 +5,7 @@
const fsfw::Version common::OBSW_VERSION{OBSW_VERSION_MAJOR, OBSW_VERSION_MINOR, const fsfw::Version common::OBSW_VERSION{OBSW_VERSION_MAJOR, OBSW_VERSION_MINOR,
OBSW_VERSION_REVISION, OBSW_VERSION_CST_GIT_SHA1}; OBSW_VERSION_REVISION, OBSW_VERSION_CST_GIT_SHA1};
const uint16_t common::PUS_PACKET_ID = ccsds::getTcSpacePacketIdFromApid(config::EIVE_PUS_APID); const uint16_t common::PUS_PACKET_ID =
ccsds::getTcSpacePacketIdFromApid(config::EIVE_PUS_APID, true);
const uint16_t common::CFDP_PACKET_ID =
ccsds::getTcSpacePacketIdFromApid(config::EIVE_CFDP_APID, false);

View File

@ -41,6 +41,7 @@ static constexpr uint32_t OBSW_MAX_SCHEDULED_TCS = @OBSW_MAX_SCHEDULED_TCS@;
extern const fsfw::Version OBSW_VERSION; extern const fsfw::Version OBSW_VERSION;
extern const uint16_t PUS_PACKET_ID; extern const uint16_t PUS_PACKET_ID;
extern const uint16_t CFDP_PACKET_ID;
static constexpr uint32_t CCSDS_HANDLER_QUEUE_SIZE = 50; static constexpr uint32_t CCSDS_HANDLER_QUEUE_SIZE = 50;
static constexpr uint8_t NUMBER_OF_VIRTUAL_CHANNELS = 4; static constexpr uint8_t NUMBER_OF_VIRTUAL_CHANNELS = 4;

View File

@ -123,6 +123,7 @@ enum commonObjects : uint32_t {
TCS_BOARD_ASS = 0x73000003, TCS_BOARD_ASS = 0x73000003,
RW_ASS = 0x73000004, RW_ASS = 0x73000004,
CFDP_HANDLER = 0x73000005, CFDP_HANDLER = 0x73000005,
CFDP_DISTRIBUTOR = 0x73000006
}; };
} }

2
fsfw

@ -1 +1 @@
Subproject commit e2c115833762f1887804fef76baebedf914e36d2 Subproject commit c5b24f2516227ad84d92f34b12e386c7e0945a09

View File

@ -0,0 +1 @@

View File

@ -52,6 +52,6 @@ class EiveFaultHandler : public cfdp::FaultHandlerBase {
} }
}; };
} } // namespace cfdp
#endif /* MISSION_CFDP_CONFIG_H_ */ #endif /* MISSION_CFDP_CONFIG_H_ */

View File

@ -1,5 +1,6 @@
#include "GenericFactory.h" #include "GenericFactory.h"
#include <fsfw/cfdp/CfdpDistributor.h>
#include <fsfw/cfdp/handler/CfdpHandler.h> #include <fsfw/cfdp/handler/CfdpHandler.h>
#include <fsfw/cfdp/handler/RemoteConfigTableIF.h> #include <fsfw/cfdp/handler/RemoteConfigTableIF.h>
#include <fsfw/events/EventManager.h> #include <fsfw/events/EventManager.h>
@ -24,9 +25,9 @@
#include <mission/tmtc/TmFunnel.h> #include <mission/tmtc/TmFunnel.h>
#include "OBSWConfig.h" #include "OBSWConfig.h"
#include "mission/cfdp/Config.h"
#include "eive/definitions.h" #include "eive/definitions.h"
#include "fsfw/pus/Service11TelecommandScheduling.h" #include "fsfw/pus/Service11TelecommandScheduling.h"
#include "mission/cfdp/Config.h"
#include "objects/systemObjectList.h" #include "objects/systemObjectList.h"
#include "tmtc/pusIds.h" #include "tmtc/pusIds.h"
@ -61,8 +62,7 @@ HostFilesystem HOST_FS;
EiveUserHandler USER_HANDLER(HOST_FS); EiveUserHandler USER_HANDLER(HOST_FS);
EiveFaultHandler EIVE_FAULT_HANDLER; EiveFaultHandler EIVE_FAULT_HANDLER;
} } // namespace cfdp
void ObjectFactory::produceGenericObjects(HealthTableIF** healthTable_) { void ObjectFactory::produceGenericObjects(HealthTableIF** healthTable_) {
// Framework objects // Framework objects
@ -141,7 +141,7 @@ void ObjectFactory::produceGenericObjects(HealthTableIF** healthTable_) {
auto tmtcBridge = new TcpTmTcBridge(objects::TMTC_BRIDGE, objects::CCSDS_PACKET_DISTRIBUTOR); auto tmtcBridge = new TcpTmTcBridge(objects::TMTC_BRIDGE, objects::CCSDS_PACKET_DISTRIBUTOR);
auto tcpServer = new TcpTmTcServer(objects::TMTC_POLLING_TASK, objects::TMTC_BRIDGE); auto tcpServer = new TcpTmTcServer(objects::TMTC_POLLING_TASK, objects::TMTC_BRIDGE);
// TCP is stream based. Use packet ID as start marker when parsing for space packets // TCP is stream based. Use packet ID as start marker when parsing for space packets
tcpServer->setSpacePacketParsingOptions({common::PUS_PACKET_ID}); tcpServer->setSpacePacketParsingOptions({common::PUS_PACKET_ID, common::CFDP_PACKET_ID});
sif::info << "Created TCP server for TMTC commanding with listener port " sif::info << "Created TCP server for TMTC commanding with listener port "
<< tcpServer->getTcpPort() << std::endl; << tcpServer->getTcpPort() << std::endl;
#if OBSW_TCP_SERVER_WIRETAPPING == 1 #if OBSW_TCP_SERVER_WIRETAPPING == 1
@ -153,15 +153,19 @@ void ObjectFactory::produceGenericObjects(HealthTableIF** healthTable_) {
#if OBSW_ADD_CFDP_COMPONENTS == 1 #if OBSW_ADD_CFDP_COMPONENTS == 1
using namespace cfdp; using namespace cfdp;
MessageQueueIF* cfdpMsgQueue = QueueFactory::instance()->createMessageQueue(32);
CfdpDistribCfg distribCfg(objects::CFDP_DISTRIBUTOR, *tcStore, cfdpMsgQueue);
new CfdpDistributor(distribCfg);
auto* msgQueue = QueueFactory::instance()->createMessageQueue(32); auto* msgQueue = QueueFactory::instance()->createMessageQueue(32);
FsfwHandlerParams params(objects::CFDP_HANDLER, HOST_FS, *funnel, *tcStore, *tmStore, *msgQueue); FsfwHandlerParams params(objects::CFDP_HANDLER, HOST_FS, *funnel, *tcStore, *tmStore, *msgQueue);
cfdp::IndicationCfg indicationCfg; cfdp::IndicationCfg indicationCfg;
UnsignedByteField<uint16_t> apid(config::EIVE_LOCAL_CFDP_ENTITY_ID); UnsignedByteField<uint16_t> apid(config::EIVE_LOCAL_CFDP_ENTITY_ID);
cfdp::EntityId localId(apid); cfdp::EntityId localId(apid);
GROUND_REMOTE_CFG.defaultChecksum = cfdp::ChecksumType::CRC_32; GROUND_REMOTE_CFG.defaultChecksum = cfdp::ChecksumType::CRC_32;
CfdpHandlerCfg cfg(localId, indicationCfg, USER_HANDLER, EIVE_FAULT_HANDLER, PACKET_LIST, CfdpHandlerCfg cfdpCfg(localId, indicationCfg, USER_HANDLER, EIVE_FAULT_HANDLER, PACKET_LIST,
LOST_SEGMENTS, REMOTE_CFG_PROVIDER); LOST_SEGMENTS, REMOTE_CFG_PROVIDER);
auto* cfdpHandler = new CfdpHandler(params, cfg); auto* cfdpHandler = new CfdpHandler(params, cfdpCfg);
// All CFDP packets arrive wrapped inside CCSDS space packets // All CFDP packets arrive wrapped inside CCSDS space packets
CcsdsDistributorIF::DestInfo info("CFDP Destination", config::EIVE_CFDP_APID, CcsdsDistributorIF::DestInfo info("CFDP Destination", config::EIVE_CFDP_APID,
cfdpHandler->getRequestQueue(), true); cfdpHandler->getRequestQueue(), true);

2
tmtc

@ -1 +1 @@
Subproject commit 91f85537ce9903514c411c02654410bc7489d6f4 Subproject commit 2210ddb168508f0c2c1426a783725ccb78dadf3a