fsfw/src/fsfw/tmtcpacket/pus/tm/PusTmZcWriter.cpp

33 lines
1.0 KiB
C++
Raw Normal View History

2022-07-27 11:26:47 +02:00
#include "PusTmZcWriter.h"
#include "fsfw/globalfunctions/CRC.h"
2022-07-28 13:00:53 +02:00
PusTmZeroCopyWriter::PusTmZeroCopyWriter(TimeReaderIF& timeReader, uint8_t* data, size_t size)
: PusTmReader(&timeReader, data, size) {}
2022-07-27 11:26:47 +02:00
void PusTmZeroCopyWriter::setSequenceCount(uint16_t seqCount) {
2022-07-28 13:24:50 +02:00
if (isNull()) {
return;
}
2022-07-27 11:26:47 +02:00
auto* spHeader =
reinterpret_cast<ccsds::PrimaryHeader*>(const_cast<uint8_t*>((pointers.spHeaderStart)));
ccsds::setSequenceCount(*spHeader, seqCount);
}
2022-07-27 17:56:16 +02:00
2022-07-27 11:26:47 +02:00
void PusTmZeroCopyWriter::updateErrorControl() {
2022-07-28 13:24:50 +02:00
if (isNull()) {
return;
}
2022-07-27 17:56:16 +02:00
auto* crcStart = const_cast<uint8_t*>((pointers.crcStart));
2022-07-27 11:26:47 +02:00
uint16_t crc16 =
CRC::crc16ccitt(PusTmReader::getFullData(), getFullPacketLen() - sizeof(ecss::PusChecksumT));
crcStart[0] = (crc16 >> 8) & 0xff;
crcStart[1] = crc16 & 0xff;
}
2023-06-25 12:35:50 +02:00
void PusTmZeroCopyWriter::setMessageCount(uint16_t msgCount) {
size_t serSize = 0;
SerializeAdapter::serialize(&msgCount, const_cast<uint8_t*>(pointers.secHeaderStart + 3),
&serSize, 2, SerializeIF::Endianness::NETWORK);
}