fsfw/src/fsfw/tmtcpacket/ccsds/header.cpp

30 lines
881 B
C++

#include "header.h"
uint16_t ccsds::getPacketId(const PrimaryHeader &header) {
return ((header.packetIdHAndVersion & 0x1F00) << 8) + header.packetIdL;
}
uint16_t ccsds::getPacketSeqCtrl(const PrimaryHeader &header) {
return (header.packetSeqCtrlH << 8) | header.packetSeqCtrlL;
}
uint8_t ccsds::getVersion(const PrimaryHeader &header) {
return (header.packetIdHAndVersion >> 5) & 0b111;
}
uint16_t ccsds::getPacketLen(const PrimaryHeader &header) {
return (header.packetLenH << 8) | header.packetLenL;
}
void ccsds::setPacketId(PrimaryHeader &header, uint16_t packetId) {
header.packetIdHAndVersion = (packetId >> 8) & 0x1F;
header.packetIdL = packetId & 0xff;
}
void ccsds::setApid(PrimaryHeader &header, uint16_t apid) {
uint16_t packetIdRaw = getPacketId(header);
packetIdRaw &= ~0x7FF;
packetIdRaw |= apid & 0x7FF;
setPacketId(header, packetIdRaw);
}