#include "PusTmZcWriter.h" #include "fsfw/globalfunctions/CRC.h" PusTmZeroCopyWriter::PusTmZeroCopyWriter(TimeReaderIF& timeReader, uint8_t* data, size_t size) : PusTmReader(&timeReader, data, size) {} void PusTmZeroCopyWriter::setSequenceCount(uint16_t seqCount) { if (isNull()) { return; } auto* spHeader = reinterpret_cast(const_cast((pointers.spHeaderStart))); ccsds::setSequenceCount(*spHeader, seqCount); } void PusTmZeroCopyWriter::updateErrorControl() { if (isNull()) { return; } auto* crcStart = const_cast((pointers.crcStart)); uint16_t crc16 = CRC::crc16ccitt(PusTmReader::getFullData(), getFullPacketLen() - sizeof(ecss::PusChecksumT)); crcStart[0] = (crc16 >> 8) & 0xff; crcStart[1] = crc16 & 0xff; } void PusTmZeroCopyWriter::setMessageCount(uint16_t msgCount) { size_t serSize = 0; SerializeAdapter::serialize(&msgCount, const_cast(pointers.secHeaderStart + 3), &serSize, 2, SerializeIF::Endianness::NETWORK); }