it compiles again
This commit is contained in:
@ -2,13 +2,16 @@
|
||||
#define MISSION_DEVICES_DEVICEDEFINITIONS_SPBASE_H_
|
||||
|
||||
#include <fsfw/tmtcpacket/ccsds/SpacePacketCreator.h>
|
||||
#include <fsfw/tmtcpacket/ccsds/SpacePacketReader.h>
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
struct SpBaseParams {
|
||||
SpBaseParams(SpacePacketCreator& creator) : creator(creator) {}
|
||||
namespace ploc {
|
||||
|
||||
SpBaseParams(SpacePacketCreator& creator, uint8_t* buf, size_t maxSize)
|
||||
struct SpTcParams {
|
||||
SpTcParams(SpacePacketCreator& creator) : creator(creator) {}
|
||||
|
||||
SpTcParams(SpacePacketCreator& creator, uint8_t* buf, size_t maxSize)
|
||||
: creator(creator), buf(buf), maxSize(maxSize) {}
|
||||
|
||||
void setPayloadLen(size_t payloadLen_) { dataFieldLen = payloadLen_ + 2; }
|
||||
@ -21,11 +24,11 @@ struct SpBaseParams {
|
||||
size_t dataFieldLen = 0;
|
||||
};
|
||||
|
||||
class SpacePacketBase {
|
||||
class SpTcBase {
|
||||
public:
|
||||
SpacePacketBase(SpBaseParams params) : spParams(params) { updateFields(); }
|
||||
SpTcBase(SpTcParams params) : spParams(params) { updateFields(); }
|
||||
|
||||
SpacePacketBase(SpBaseParams params, uint16_t apid, uint16_t seqCount) : spParams(params) {
|
||||
SpTcBase(SpTcParams params, uint16_t apid, uint16_t seqCount) : spParams(params) {
|
||||
spParams.creator.setApid(apid);
|
||||
spParams.creator.setSeqCount(seqCount);
|
||||
updateFields();
|
||||
@ -76,8 +79,41 @@ class SpacePacketBase {
|
||||
}
|
||||
|
||||
protected:
|
||||
SpBaseParams spParams;
|
||||
ploc::SpTcParams spParams;
|
||||
uint8_t* payloadStart;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Class for handling tm replies of the supervisor.
|
||||
*/
|
||||
class SpTmReader : public SpacePacketReader {
|
||||
public:
|
||||
SpTmReader() = default;
|
||||
/**
|
||||
* @brief Constructor creates idle packet and sets length field to maximum allowed size.
|
||||
*/
|
||||
SpTmReader(const uint8_t* buf, size_t maxSize) : SpacePacketReader(buf, maxSize) {}
|
||||
|
||||
ReturnValue_t setData(const uint8_t* buf, size_t maxSize) {
|
||||
return setReadOnlyData(buf, maxSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the payload data length (data field length without CRC)
|
||||
*/
|
||||
uint16_t getPayloadDataLength() { return getPacketDataLen() - 2; }
|
||||
|
||||
ReturnValue_t checkCrc() {
|
||||
const uint8_t* crcPtr = getFullData() + getFullPacketLen() - CRC_SIZE;
|
||||
uint16_t receivedCrc = *(crcPtr) << 8 | *(crcPtr + 1);
|
||||
uint16_t recalculatedCrc = CRC::crc16ccitt(getFullData(), getFullPacketLen() - CRC_SIZE);
|
||||
if (recalculatedCrc != receivedCrc) {
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace ploc
|
||||
|
||||
#endif /* MISSION_DEVICES_DEVICEDEFINITIONS_SPBASE_H_ */
|
||||
|
Reference in New Issue
Block a user