Simple SerializeIF adaptions
- Returns serialized or deserialized size
This commit is contained in:
@ -125,22 +125,26 @@ class SerializeIF {
|
||||
* @param streamEndianness
|
||||
* @return
|
||||
*/
|
||||
[[nodiscard]] virtual ReturnValue_t serialize(uint8_t *buffer, size_t maxSize,
|
||||
[[nodiscard]] virtual ReturnValue_t serialize(uint8_t *buffer, size_t &serLen, size_t maxSize,
|
||||
Endianness streamEndianness) const {
|
||||
size_t tmpSize = 0;
|
||||
return serialize(&buffer, &tmpSize, maxSize, streamEndianness);
|
||||
ReturnValue_t result = serialize(&buffer, &tmpSize, maxSize, streamEndianness);
|
||||
serLen = tmpSize;
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Forwards to regular @serialize call with big (network) endianness
|
||||
*/
|
||||
[[nodiscard]] virtual ReturnValue_t serializeBe(uint8_t *buffer, size_t maxSize) const {
|
||||
return serialize(buffer, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
[[nodiscard]] virtual ReturnValue_t serializeBe(uint8_t *buffer, size_t &serLen,
|
||||
size_t maxSize) const {
|
||||
return serialize(buffer, serLen, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
/**
|
||||
* If endianness is not explicitly specified, use machine endianness
|
||||
*/
|
||||
[[nodiscard]] virtual ReturnValue_t serialize(uint8_t *buffer, size_t maxSize) const {
|
||||
return serialize(buffer, maxSize, SerializeIF::Endianness::MACHINE);
|
||||
[[nodiscard]] virtual ReturnValue_t serialize(uint8_t *buffer, size_t &serLen,
|
||||
size_t maxSize) const {
|
||||
return serialize(buffer, serLen, maxSize, SerializeIF::Endianness::MACHINE);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -151,21 +155,24 @@ class SerializeIF {
|
||||
* @param streamEndianness
|
||||
* @return
|
||||
*/
|
||||
virtual ReturnValue_t deSerialize(const uint8_t *buffer, size_t maxSize,
|
||||
virtual ReturnValue_t deSerialize(const uint8_t *buffer, size_t &deserSize, size_t maxSize,
|
||||
Endianness streamEndianness) {
|
||||
return deSerialize(&buffer, &maxSize, streamEndianness);
|
||||
size_t deserLen = maxSize;
|
||||
ReturnValue_t result = deSerialize(&buffer, &deserLen, streamEndianness);
|
||||
deserSize = maxSize - deserLen;
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Forwards to regular @serialize call with big (network) endianness
|
||||
*/
|
||||
virtual ReturnValue_t deSerializeBe(const uint8_t *buffer, size_t maxSize) {
|
||||
return deSerialize(buffer, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
virtual ReturnValue_t deSerializeBe(const uint8_t *buffer, size_t &deserSize, size_t maxSize) {
|
||||
return deSerialize(buffer, deserSize, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
/**
|
||||
* If endianness is not explicitly specified, use machine endianness
|
||||
*/
|
||||
virtual ReturnValue_t deSerialize(const uint8_t *buffer, size_t maxSize) {
|
||||
return deSerialize(buffer, maxSize, SerializeIF::Endianness::MACHINE);
|
||||
virtual ReturnValue_t deSerialize(const uint8_t *buffer, size_t &deserSize, size_t maxSize) {
|
||||
return deSerialize(buffer, deserSize, maxSize, SerializeIF::Endianness::MACHINE);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -108,6 +108,6 @@ ReturnValue_t PusTcCreator::serialize(uint8_t **buffer, size_t *size, size_t max
|
||||
return serialize(buffer, size, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
|
||||
ReturnValue_t PusTcCreator::serialize(uint8_t *buffer, size_t maxSize) const {
|
||||
return SerializeIF::serialize(buffer, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
ReturnValue_t PusTcCreator::serialize(uint8_t *buffer, size_t &serLen, size_t maxSize) const {
|
||||
return SerializeIF::serialize(buffer, serLen, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ class PusTcCreator : public PusTcIF, public SerializeIF, public CustomUserDataIF
|
||||
SpacePacketParams &getSpParams();
|
||||
|
||||
ReturnValue_t serialize(uint8_t **buffer, size_t *size, size_t maxSize) const override;
|
||||
ReturnValue_t serialize(uint8_t *buffer, size_t maxSize) const override;
|
||||
ReturnValue_t serialize(uint8_t *buffer, size_t &serLen, size_t maxSize) const override;
|
||||
[[nodiscard]] size_t getSerializedSize() const override;
|
||||
|
||||
[[nodiscard]] uint16_t getPacketIdRaw() const override;
|
||||
|
@ -94,6 +94,9 @@ ReturnValue_t PusTmCreator::serialize(uint8_t** buffer, size_t* size, size_t max
|
||||
uint16_t crc16 = CRC::crc16ccitt(start, getFullPacketLen() - sizeof(ecss::PusChecksumT));
|
||||
return SerializeAdapter::serialize(&crc16, buffer, size, maxSize, streamEndianness);
|
||||
}
|
||||
// Even if no CRC is calculated, account for the space taken by it
|
||||
*size += 2;
|
||||
*buffer += 2;
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
@ -151,6 +154,6 @@ ReturnValue_t PusTmCreator::serialize(uint8_t** buffer, size_t* size, size_t max
|
||||
return serialize(buffer, size, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
|
||||
ReturnValue_t PusTmCreator::serialize(uint8_t* buffer, size_t maxSize) const {
|
||||
return SerializeIF::serialize(buffer, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
ReturnValue_t PusTmCreator::serialize(uint8_t* buffer, size_t& serLen, size_t maxSize) const {
|
||||
return SerializeIF::serialize(buffer, serLen, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
@ -74,7 +74,7 @@ class PusTmCreator : public SerializeIF, public PusTmIF, public CustomUserDataIF
|
||||
uint16_t getDestId() override;
|
||||
// Override these to use default big endianness
|
||||
ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize) const override;
|
||||
ReturnValue_t serialize(uint8_t* buffer, size_t maxSize) const override;
|
||||
ReturnValue_t serialize(uint8_t* buffer, size_t& serLen, size_t maxSize) const override;
|
||||
ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
|
||||
Endianness streamEndianness) const override;
|
||||
[[nodiscard]] size_t getSerializedSize() const override;
|
||||
|
Reference in New Issue
Block a user