2022-07-18 10:42:56 +02:00
|
|
|
#include "fsfw/tmtcpacket/SpacePacketReader.h"
|
2021-07-13 20:22:54 +02:00
|
|
|
|
2020-10-28 02:20:12 +01:00
|
|
|
#include <cstring>
|
2018-07-12 16:29:32 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
#include "fsfw/serviceinterface/ServiceInterface.h"
|
|
|
|
|
2022-07-18 10:42:56 +02:00
|
|
|
SpacePacketReader::SpacePacketReader(const uint8_t* setAddress) {
|
2022-02-02 10:29:30 +01:00
|
|
|
this->data = reinterpret_cast<SpacePacketPointer*>(const_cast<uint8_t*>(setAddress));
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-07-18 10:42:56 +02:00
|
|
|
SpacePacketReader::~SpacePacketReader() = default;
|
2021-09-27 11:05:26 +02:00
|
|
|
|
2022-07-18 10:42:56 +02:00
|
|
|
inline uint16_t SpacePacketReader::getPacketId() const {
|
2022-07-18 10:20:26 +02:00
|
|
|
return ((this->data->header.packetIdHAndVersion) << 8) + this->data->header.packetIdL;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-07-18 10:42:56 +02:00
|
|
|
size_t SpacePacketReader::getFullSize() {
|
2022-02-02 10:29:30 +01:00
|
|
|
// +1 is done because size in packet data length field is: size of data field -1
|
2022-07-18 10:20:26 +02:00
|
|
|
return this->getPacketDataLen() + sizeof(this->data->header) + 1;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-07-18 10:42:56 +02:00
|
|
|
uint8_t* SpacePacketReader::getWholeData() { return reinterpret_cast<uint8_t*>(this->data); }
|
2018-07-12 16:29:32 +02:00
|
|
|
|
2022-07-18 10:42:56 +02:00
|
|
|
uint8_t* SpacePacketReader::getPacketData() { return &(data->packet_data); }
|
2021-12-03 15:37:49 +01:00
|
|
|
|
2022-07-18 10:42:56 +02:00
|
|
|
ReturnValue_t SpacePacketReader::setData(uint8_t* pData, size_t maxSize, void* args) {
|
2022-02-02 10:29:30 +01:00
|
|
|
if (maxSize < 6) {
|
|
|
|
return HasReturnvaluesIF::RETURN_FAILED;
|
|
|
|
}
|
|
|
|
this->data = reinterpret_cast<SpacePacketPointer*>(const_cast<uint8_t*>(pData));
|
|
|
|
return HasReturnvaluesIF::RETURN_OK;
|
2021-12-03 15:37:49 +01:00
|
|
|
}
|
2022-07-18 10:42:56 +02:00
|
|
|
uint16_t SpacePacketReader::getPacketSeqCtrl() const {
|
2022-07-18 10:20:26 +02:00
|
|
|
return ((this->data->header.packetSeqCtrlH & 0b00111111) << 8) +
|
|
|
|
this->data->header.packetSeqCtrlL;
|
|
|
|
}
|
|
|
|
|
2022-07-18 10:42:56 +02:00
|
|
|
uint16_t SpacePacketReader::getPacketDataLen() const {
|
2022-07-18 10:20:26 +02:00
|
|
|
return ((this->data->header.packetLenH) << 8) + this->data->header.packetLenL;
|
|
|
|
}
|