2022-07-27 11:26:47 +02:00
|
|
|
#include "PusTmZcWriter.h"
|
|
|
|
|
|
|
|
#include "fsfw/globalfunctions/CRC.h"
|
|
|
|
|
2022-07-27 17:33:39 +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) {
|
|
|
|
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-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;
|
|
|
|
}
|