start using new packet format

This commit is contained in:
2022-11-07 11:19:10 +01:00
parent 23025eec7a
commit 95a3ea1d23
5 changed files with 53 additions and 72 deletions

View File

@ -355,11 +355,11 @@ enum PoolIds : lp_id_t {
ADC_ENG_15
};
struct SupvTcParams : public ploc::SpTcParams {
struct TcParams : public ploc::SpTcParams {
public:
SupvTcParams(SpacePacketCreator& creator) : ploc::SpTcParams(creator) {}
TcParams(SpacePacketCreator& creator) : ploc::SpTcParams(creator) {}
SupvTcParams(SpacePacketCreator& creator, uint8_t* buf, size_t maxSize)
TcParams(SpacePacketCreator& creator, uint8_t* buf, size_t maxSize)
: ploc::SpTcParams(creator, buf, maxSize) {}
void setLenFromPayloadLen(size_t payloadLen) {
@ -367,14 +367,14 @@ struct SupvTcParams : public ploc::SpTcParams {
}
};
class SupvTcBase : public ploc::SpTcBase {
class TcBase : public ploc::SpTcBase {
public:
SupvTcBase(SupvTcParams params) : ploc::SpTcBase(params) { setup(); }
TcBase(TcParams params) : ploc::SpTcBase(params) { setup(); }
SupvTcBase(SupvTcParams params, uint16_t apid, uint8_t serviceId, uint16_t seqCount)
TcBase(TcParams params, uint16_t apid, uint8_t serviceId, uint16_t seqCount)
: ploc::SpTcBase(params, apid, seqCount), serviceId(serviceId) {
if (setup() == OK) {
params.buf + supv::PAYLOAD_OFFSET = serviceId;
if (setup() == OK and params.buf != nullptr) {
params.buf[supv::PAYLOAD_OFFSET] = serviceId;
}
}
@ -391,11 +391,13 @@ class SupvTcBase : public ploc::SpTcBase {
}
};
class NoPayloadPacket : public SupvTcBase {
class NoPayloadPacket : public TcBase {
public:
NoPayloadPacket(SupvTcParams params, uint16_t apid, uint8_t serviceId, uint16_t seqCount)
: SupvTcBase(params, apid, serviceId, seqCount) {}
NoPayloadPacket(TcParams params, uint16_t apid, uint8_t serviceId)
: NoPayloadPacket(params, apid, serviceId, 0) {}
NoPayloadPacket(TcParams params, uint16_t apid, uint8_t serviceId, uint16_t seqId)
: TcBase(params, apid, serviceId, seqId) {}
ReturnValue_t buildPacket() {
ReturnValue_t result = checkSizeAndSerializeHeader();
if (result != OK) {
@ -406,33 +408,6 @@ class NoPayloadPacket : public SupvTcBase {
private:
};
/**
* @brief This class creates a space packet containing only the header data and the CRC.
*/
class ApidOnlyPacket : public ploc::SpTcBase {
public:
/**
* @brief Constructor
*
* @param apid The APID to set in the space packet.
*
* @note Sequence count of empty packet is always 1.
*/
ApidOnlyPacket(ploc::SpTcParams params, uint16_t apid) : ploc::SpTcBase(params) {
spParams.setFullPayloadLen(MIN_TC_LEN);
spParams.creator.setApid(apid);
}
ReturnValue_t buildPacket() {
auto res = checkSizeAndSerializeHeader();
if (res != returnvalue::OK) {
return res;
}
return calcAndSetCrc();
}
private:
};
/**
* @brief This class can be used to generate the space packet selecting the boot image of