Compare commits

...

17 Commits

Author SHA1 Message Date
Robin Müller 1d4fd70101 Merge branch 'mueller/tc-packet-pus-improvement' into mueller/cfdp-state-machine 2022-06-13 16:23:44 +02:00
Robin Müller 15d69e64f3
renamed new class, small tweak 2022-06-13 16:20:37 +02:00
Robin Müller d74bcbb1f8 Merge branch 'mueller/tc-packet-pus-improvement' of https://egit.irs.uni-stuttgart.de/KSat/fsfw into mueller/tc-packet-pus-improvement 2022-06-13 16:14:37 +02:00
Robin Müller c00cb1680d
removed unneeded function 2022-06-13 16:14:30 +02:00
Robin Müller 7109422e2c Merge branch 'development' into mueller/tc-packet-pus-improvement 2022-06-13 16:13:42 +02:00
Robin Müller efd12544df
this should get the job done 2022-06-13 16:13:15 +02:00
Robin Müller f512d98c08 Merge branch 'mueller/spi-com-if-shadowing' into mueller/cfdp-state-machine 2022-06-13 11:00:50 +02:00
Robin Müller 29c4fc33da Merge branch 'mueller/pus-11-printout-fixes' into mueller/cfdp-state-machine 2022-06-13 11:00:41 +02:00
Robin Müller e760f5ab75 Merge branch 'mueller/tc-packet-pus-improvement' into mueller/cfdp-state-machine 2022-06-13 09:41:48 +02:00
Robin Müller b069ed0fec Merge remote-tracking branch 'upstream/development' into mueller/cfdp-state-machine 2022-06-13 09:38:59 +02:00
Robin Müller 72c7bd5e03
Merge remote-tracking branch 'upstream/development' into mueller/cfdp-state-machine 2022-06-13 09:28:39 +02:00
Robin Müller b9fbb4fd4c Merge branch 'development' into mueller/tc-packet-pus-improvement 2022-05-27 15:15:39 +02:00
Robin Müller 9368ae81e5 Merge branch 'development' into mueller/tc-packet-pus-improvement 2022-05-23 15:56:26 +02:00
Robin Müller 618f76ae78
improved TcPacketPus API 2022-05-17 10:14:34 +02:00
Robin Müller ee2f8d6956 Merge pull request 'Update FSFW from Upstream' (#27) from mueller/update-from-upstream into develop
Reviewed-on: KSat/fsfw#27
2022-05-17 10:06:58 +02:00
Robin Müller aa6ffac182
CFDP state machine 2021-12-12 20:30:00 +01:00
Robin Müller f7cb0bbf31 Merge branch 'mueller/cfdp-pdus' into source/develop 2021-12-12 20:18:14 +01:00
6 changed files with 95 additions and 10 deletions

View File

@ -48,7 +48,11 @@
#ifndef FSFW_USE_PUS_C_TELECOMMANDS
#define FSFW_USE_PUS_C_TELECOMMANDS 1
#endif
#endif /* FSFW_USE_PUS_C_TELECOMMANDS */
#ifndef FSFW_DEBUG_CFDP_DISTRIBUTOR
#define FSFW_DEBUG_CFDP_DISTRIBUTOR 0
#endif /* FSFW_DEBUG_CFDP_DISTRIBUTOR */
#ifndef FSFW_TCP_RECV_WIRETAPPING_ENABLED
#define FSFW_TCP_RECV_WIRETAPPING_ENABLED 0

View File

@ -1,12 +1,11 @@
#include "fsfw/FSFW.h"
#include "fsfw/tcdistribution/CCSDSDistributorIF.h"
#include "fsfw/tcdistribution/CFDPDistributor.h"
#include "fsfw/objectmanager/ObjectManager.h"
#include "fsfw/tcdistribution/CCSDSDistributorIF.h"
#include "fsfw/tmtcpacket/cfdp/CFDPPacketStored.h"
#ifndef FSFW_CFDP_DISTRIBUTOR_DEBUGGING
#define FSFW_CFDP_DISTRIBUTOR_DEBUGGING 1
#endif
#include "fsfw/objectmanager/ObjectManager.h"
CFDPDistributor::CFDPDistributor(uint16_t setApid, object_id_t setObjectId,
object_id_t setPacketSource)
@ -19,8 +18,8 @@ CFDPDistributor::CFDPDistributor(uint16_t setApid, object_id_t setObjectId,
CFDPDistributor::~CFDPDistributor() {}
CFDPDistributor::TcMqMapIter CFDPDistributor::selectDestination() {
#if FSFW_CFDP_DISTRIBUTOR_DEBUGGING == 1
store_address_t storeId = this->currentMessage.getStorageId();
#if FSFW_DEBUG_CFDP_DISTRIBUTOR == 1
store_address_t storeId = this->currentMessage.getStorageId();
#if FSFW_CPP_OSTREAM_ENABLED == 1
sif::debug << "CFDPDistributor::handlePacket received: " << storeId.poolIndex << ", "
<< storeId.packetIndex << std::endl;

View File

@ -1,3 +1,4 @@
target_sources(
${LIB_FSFW_NAME} PRIVATE TcPacketPusBase.cpp TcPacketPus.cpp
TcPacketStoredBase.cpp TcPacketStoredPus.cpp)
${LIB_FSFW_NAME}
PRIVATE TcPacketPusBase.cpp TcPacketPus.cpp TcPacketStoredBase.cpp
TcPacketStoredPus.cpp TcPacketSerializer.cpp)

View File

@ -22,7 +22,7 @@ class TcPacketPusBase : public SpacePacketBase, virtual public RedirectableDataP
friend class TcPacketStoredBase;
public:
enum AckField {
enum AckField : uint8_t {
//! No acknowledgements are expected.
ACK_NONE = 0b0000,
//! Acknowledgements on acceptance are expected.

View File

@ -0,0 +1,42 @@
#include "TcPacketSerializer.h"
#include <cstring>
TcPacketSerializer::TcPacketSerializer(uint8_t* store, size_t maxSize, PusConfig& cfg)
: TcPacketPus(nullptr), store(store), maxSize(maxSize), cfg(cfg) {}
ReturnValue_t TcPacketSerializer::serialize(uint8_t** buffer, size_t* size, size_t maxSize,
Endianness streamEndianness) const {
if (*size + getSerializedSize() > maxSize) {
return BUFFER_TOO_SHORT;
}
std::memcpy(*buffer, store, getSerializedSize());
*buffer += getSerializedSize();
*size += getSerializedSize();
return RETURN_OK;
}
size_t TcPacketSerializer::getSerializedSize() const { return TC_PACKET_MIN_SIZE + cfg.appDataLen; }
ReturnValue_t TcPacketSerializer::initialize() {
if (getSerializedSize() > maxSize) {
return SerializeIF::BUFFER_TOO_SHORT;
}
ReturnValue_t result = setData(store, maxSize);
if (result != RETURN_OK) {
return result;
}
initializeTcPacket(cfg.apid, cfg.sequenceCount, cfg.ack, cfg.service, cfg.subservice,
cfg.pusVersion, cfg.sourceId);
if (cfg.appData != nullptr and cfg.appDataLen > 0) {
std::memcpy(&tcData->appData, cfg.appData, cfg.appDataLen);
}
setPacketDataLength(calculateFullPacketLength(cfg.appDataLen) - sizeof(CCSDSPrimaryHeader) - 1);
setErrorControl();
return RETURN_OK;
}
ReturnValue_t TcPacketSerializer::deSerialize(const uint8_t** buffer, size_t* size,
Endianness streamEndianness) {
return RETURN_FAILED;
}

View File

@ -0,0 +1,39 @@
#ifndef FSFW_SRC_FSFW_TMTCPACKET_PUS_TC_TCPACKETPUSINTOBUF_H_
#define FSFW_SRC_FSFW_TMTCPACKET_PUS_TC_TCPACKETPUSINTOBUF_H_
#include <cstdint>
#include "TcPacketPus.h"
#include "fsfw/serialize/SerializeIF.h"
struct PusConfig {
uint16_t apid = 0;
uint8_t service = 0;
uint8_t subservice = 0;
uint16_t sequenceCount = 0;
uint16_t sourceId = 0;
uint8_t* appData = nullptr;
size_t appDataLen = 0;
pus::PusVersion pusVersion = pus::PusVersion::PUS_C_VERSION;
uint8_t ack = TcPacketPus::ACK_ALL;
};
class TcPacketSerializer : public TcPacketPus, public SerializeIF, public HasReturnvaluesIF {
public:
TcPacketSerializer(uint8_t* data, size_t size, PusConfig& cfg);
ReturnValue_t initialize();
ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
Endianness streamEndianness) const override;
size_t getSerializedSize() const override;
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
Endianness streamEndianness) override;
private:
uint8_t* store;
size_t maxSize;
PusConfig& cfg;
};
#endif /* FSFW_SRC_FSFW_TMTCPACKET_PUS_TC_TCPACKETPUSINTOBUF_H_ */