PUS TM creator tests done
This commit is contained in:
@ -1,10 +0,0 @@
|
||||
#ifndef FSFW_TMTCPACKET_CREATORDATAIF_H
|
||||
#define FSFW_TMTCPACKET_CREATORDATAIF_H
|
||||
|
||||
#include "defs.h"
|
||||
|
||||
class CreatorDataIF {
|
||||
public:
|
||||
virtual ecss::DataWrapper& getDataWrapper() = 0;
|
||||
};
|
||||
#endif // FSFW_TMTCPACKET_CREATORDATAIF_H
|
12
src/fsfw/tmtcpacket/pus/CustomUserDataIF.h
Normal file
12
src/fsfw/tmtcpacket/pus/CustomUserDataIF.h
Normal file
@ -0,0 +1,12 @@
|
||||
#ifndef FSFW_TMTCPACKET_CREATORDATAIF_H
|
||||
#define FSFW_TMTCPACKET_CREATORDATAIF_H
|
||||
|
||||
#include "defs.h"
|
||||
|
||||
class CustomUserDataIF {
|
||||
public:
|
||||
virtual ~CustomUserDataIF() = default;
|
||||
virtual ReturnValue_t setRawUserData(const uint8_t* data, size_t len) = 0;
|
||||
virtual ReturnValue_t setSerializableUserData(SerializeIF* serializable) = 0;
|
||||
};
|
||||
#endif // FSFW_TMTCPACKET_CREATORDATAIF_H
|
@ -28,7 +28,7 @@ union DataUnion {
|
||||
struct DataWrapper {
|
||||
DataTypes type;
|
||||
DataUnion dataUnion;
|
||||
using BufPairT = std::pair<uint8_t*, size_t>;
|
||||
using BufPairT = std::pair<const uint8_t*, size_t>;
|
||||
|
||||
[[nodiscard]] size_t getLength() const {
|
||||
if (type == DataTypes::RAW) {
|
||||
|
@ -16,7 +16,7 @@ ReturnValue_t PusTcCreator::serialize(uint8_t **buffer, size_t *size, size_t max
|
||||
SerializeIF::Endianness streamEndianness) const {
|
||||
const uint8_t *start = *buffer;
|
||||
size_t userDataLen = pusParams.dataWrapper.getLength();
|
||||
if (*size + getFullPacketLen() > maxSize) {
|
||||
if (*size + getSerializedSize() > maxSize) {
|
||||
return SerializeIF::BUFFER_TOO_SHORT;
|
||||
}
|
||||
if (pusParams.pusVersion != ecss::PusVersion::PUS_C) {
|
||||
@ -86,8 +86,6 @@ uint8_t PusTcCreator::getSubService() const { return pusParams.subservice; }
|
||||
|
||||
uint16_t PusTcCreator::getSourceId() const { return pusParams.sourceId; }
|
||||
|
||||
ecss::DataWrapper &PusTcCreator::getDataWrapper() { return pusParams.dataWrapper; }
|
||||
|
||||
PusTcParams &PusTcCreator::getPusParams() { return pusParams; }
|
||||
|
||||
SpacePacketParams &PusTcCreator::getSpParams() { return spCreator.getParams(); }
|
||||
@ -96,12 +94,16 @@ ReturnValue_t PusTcCreator::serialize(uint8_t **buffer, size_t *size, size_t max
|
||||
return serialize(buffer, size, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
|
||||
void PusTcCreator::setRawAppData(ecss::DataWrapper::BufPairT bufPair) {
|
||||
pusParams.dataWrapper.setRawData(bufPair);
|
||||
ReturnValue_t PusTcCreator::setRawUserData(const uint8_t *data, size_t len) {
|
||||
// TODO: Check length field?
|
||||
pusParams.dataWrapper.setRawData({data, len});
|
||||
updateSpLengthField();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
void PusTcCreator::setSerializableAppData(SerializeIF *serAppData) {
|
||||
pusParams.dataWrapper.setSerializable(serAppData);
|
||||
ReturnValue_t PusTcCreator::setSerializableUserData(SerializeIF *serializable) {
|
||||
// TODO: Check length field?
|
||||
pusParams.dataWrapper.setSerializable(serializable);
|
||||
updateSpLengthField();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include "fsfw/tmtcpacket/RedirectableDataPointerIF.h"
|
||||
#include "fsfw/tmtcpacket/ccsds/SpacePacketCreator.h"
|
||||
#include "fsfw/tmtcpacket/ccsds/SpacePacketIF.h"
|
||||
#include "fsfw/tmtcpacket/pus/CreatorDataIF.h"
|
||||
#include "fsfw/tmtcpacket/pus/CustomUserDataIF.h"
|
||||
#include "fsfw/tmtcpacket/pus/defs.h"
|
||||
#include "fsfw/tmtcpacket/pus/tc/PusTcIF.h"
|
||||
|
||||
@ -19,7 +19,7 @@ struct PusTcParams {
|
||||
uint8_t pusVersion = ecss::PusVersion::PUS_C;
|
||||
};
|
||||
|
||||
class PusTcCreator : public PusTcIF, public SerializeIF, public CreatorDataIF {
|
||||
class PusTcCreator : public PusTcIF, public SerializeIF, public CustomUserDataIF {
|
||||
public:
|
||||
PusTcCreator(SpacePacketParams initSpParams, PusTcParams initPusParams);
|
||||
|
||||
@ -33,8 +33,6 @@ class PusTcCreator : public PusTcIF, public SerializeIF, public CreatorDataIF {
|
||||
void updateSpLengthField();
|
||||
PusTcParams &getPusParams();
|
||||
SpacePacketParams &getSpParams();
|
||||
void setRawAppData(ecss::DataWrapper::BufPairT bufPair);
|
||||
void setSerializableAppData(SerializeIF *serAppData);
|
||||
|
||||
ReturnValue_t serialize(uint8_t **buffer, size_t *size, size_t maxSize);
|
||||
[[nodiscard]] size_t getSerializedSize() const override;
|
||||
@ -48,7 +46,8 @@ class PusTcCreator : public PusTcIF, public SerializeIF, public CreatorDataIF {
|
||||
[[nodiscard]] uint8_t getService() const override;
|
||||
[[nodiscard]] uint8_t getSubService() const override;
|
||||
[[nodiscard]] uint16_t getSourceId() const override;
|
||||
ecss::DataWrapper &getDataWrapper() override;
|
||||
ReturnValue_t setRawUserData(const uint8_t *data, size_t len) override;
|
||||
ReturnValue_t setSerializableUserData(SerializeIF *serializable) override;
|
||||
|
||||
private:
|
||||
ReturnValue_t serialize(uint8_t **buffer, size_t *size, size_t maxSize,
|
||||
|
@ -28,6 +28,7 @@ PusTmParams& PusTmCreator::getParams() { return pusParams; }
|
||||
|
||||
void PusTmCreator::setTimeStamper(TimeStamperIF* timeStamper_) {
|
||||
pusParams.secHeader.timeStamper = timeStamper_;
|
||||
updateSpLengthField();
|
||||
}
|
||||
|
||||
uint8_t PusTmCreator::getScTimeRefStatus() { return pusParams.secHeader.scTimeRefStatus; }
|
||||
@ -92,8 +93,6 @@ ReturnValue_t PusTmCreator::deSerialize(const uint8_t** buffer, size_t* size,
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
|
||||
ecss::DataWrapper& PusTmCreator::getDataWrapper() { return pusParams.dataWrapper; }
|
||||
|
||||
TimeStamperIF* PusTmCreator::getTimestamper() const { return pusParams.secHeader.timeStamper; }
|
||||
|
||||
SpacePacketParams& PusTmCreator::getSpParams() { return spCreator.getParams(); }
|
||||
@ -124,15 +123,13 @@ void PusTmCreator::setMessageTypeCounter(uint16_t messageTypeCounter) {
|
||||
|
||||
void PusTmCreator::setDestId(uint16_t destId) { pusParams.secHeader.destId = destId; }
|
||||
|
||||
void PusTmCreator::setRawSourceData(ecss::DataWrapper::BufPairT bufPair) {
|
||||
pusParams.dataWrapper.type = ecss::DataTypes::RAW;
|
||||
pusParams.dataWrapper.dataUnion.raw.data = bufPair.first;
|
||||
pusParams.dataWrapper.dataUnion.raw.len = bufPair.second;
|
||||
ReturnValue_t PusTmCreator::setRawUserData(const uint8_t* data, size_t len) {
|
||||
pusParams.dataWrapper.setRawData({data, len});
|
||||
updateSpLengthField();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
void PusTmCreator::setSerializableSourceData(SerializeIF* serializable) {
|
||||
pusParams.dataWrapper.type = ecss::DataTypes::SERIALIZABLE;
|
||||
pusParams.dataWrapper.dataUnion.serializable = serializable;
|
||||
ReturnValue_t PusTmCreator::setSerializableUserData(SerializeIF* serializable) {
|
||||
pusParams.dataWrapper.setSerializable(serializable);
|
||||
updateSpLengthField();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
#include "PusTmIF.h"
|
||||
#include "fsfw/tmtcpacket/ccsds/SpacePacketCreator.h"
|
||||
#include "fsfw/tmtcpacket/pus/CreatorDataIF.h"
|
||||
#include "fsfw/tmtcpacket/pus/CustomUserDataIF.h"
|
||||
|
||||
struct PusTmSecHeader {
|
||||
PusTmSecHeader() = default;
|
||||
@ -39,7 +39,7 @@ struct PusTmParams {
|
||||
|
||||
class TimeStamperIF;
|
||||
|
||||
class PusTmCreator : public SerializeIF, public PusTmIF, public CreatorDataIF {
|
||||
class PusTmCreator : public SerializeIF, public PusTmIF, public CustomUserDataIF {
|
||||
public:
|
||||
PusTmCreator();
|
||||
PusTmCreator(SpacePacketParams initSpParams, PusTmParams initPusParams);
|
||||
@ -47,8 +47,6 @@ class PusTmCreator : public SerializeIF, public PusTmIF, public CreatorDataIF {
|
||||
|
||||
void setTimeStamper(TimeStamperIF* timeStamper);
|
||||
SpacePacketParams& getSpParams();
|
||||
void setRawSourceData(ecss::DataWrapper::BufPairT bufPair);
|
||||
void setSerializableSourceData(SerializeIF* serializable);
|
||||
void setApid(uint16_t apid);
|
||||
void setDestId(uint16_t destId);
|
||||
void setMessageTypeCounter(uint16_t messageTypeCounter);
|
||||
@ -70,9 +68,8 @@ class PusTmCreator : public SerializeIF, public PusTmIF, public CreatorDataIF {
|
||||
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
|
||||
Endianness streamEndianness) override;
|
||||
[[nodiscard]] TimeStamperIF* getTimestamper() const;
|
||||
|
||||
private:
|
||||
ecss::DataWrapper& getDataWrapper() override;
|
||||
ReturnValue_t setRawUserData(const uint8_t* data, size_t len) override;
|
||||
ReturnValue_t setSerializableUserData(SerializeIF* serializable) override;
|
||||
|
||||
private:
|
||||
void setup();
|
||||
|
Reference in New Issue
Block a user