CFDP SOURCE handler #157
@ -3,18 +3,32 @@
|
|||||||
cfdp::ReservedMessageCreator::ReservedMessageCreator(uint8_t messageType, uint8_t *msgData,
|
cfdp::ReservedMessageCreator::ReservedMessageCreator(uint8_t messageType, uint8_t *msgData,
|
||||||
size_t msgLen)
|
size_t msgLen)
|
||||||
: messageType(messageType), msgData(msgData), msgSize(msgLen) {}
|
: messageType(messageType), msgData(msgData), msgSize(msgLen) {}
|
||||||
|
|
||||||
ReturnValue_t cfdp::ReservedMessageCreator::serialize(
|
ReturnValue_t cfdp::ReservedMessageCreator::serialize(
|
||||||
uint8_t **buffer, size_t *size, size_t maxSize,
|
uint8_t **buffer, size_t *size, size_t maxSize,
|
||||||
SerializeIF::Endianness streamEndianness) const {
|
SerializeIF::Endianness streamEndianness) const {
|
||||||
if (*size + getSerializedSize() > maxSize) {
|
if (*size + getSerializedSize() > maxSize) {
|
||||||
return SerializeIF::BUFFER_TOO_SHORT;
|
return SerializeIF::BUFFER_TOO_SHORT;
|
||||||
}
|
}
|
||||||
|
**buffer = TlvType::MSG_TO_USER;
|
||||||
|
*buffer += 1;
|
||||||
|
*size += 1;
|
||||||
|
**buffer = getSerializedSize() - 1;
|
||||||
|
*size += 1;
|
||||||
|
*buffer += 1;
|
||||||
|
std::memcpy(*buffer, MSG_HEADER, 4);
|
||||||
|
*buffer += 4;
|
||||||
|
*size += 4;
|
||||||
|
**buffer = messageType;
|
||||||
|
*buffer += 1;
|
||||||
|
*size += 1;
|
||||||
|
std::memcpy(*buffer, msgData, msgSize);
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t cfdp::ReservedMessageCreator::getSerializedSize() const {
|
size_t cfdp::ReservedMessageCreator::getSerializedSize() const {
|
||||||
// 3 bytes type and length and value, 4 bytes CFDP, 1 byte reserved message type, message data.
|
// 2 bytes type and length, 4 bytes CFDP, 1 byte reserved message type, message data.
|
||||||
return 3 + 5 + msgSize;
|
return 2 + 5 + msgSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t cfdp::ReservedMessageCreator::deSerialize(const uint8_t **buffer, size_t *size,
|
ReturnValue_t cfdp::ReservedMessageCreator::deSerialize(const uint8_t **buffer, size_t *size,
|
||||||
|
@ -6,6 +6,8 @@ namespace cfdp {
|
|||||||
|
|
||||||
class ReservedMessageCreator : public SerializeIF {
|
class ReservedMessageCreator : public SerializeIF {
|
||||||
public:
|
public:
|
||||||
|
static constexpr char MSG_HEADER[] = "cfdp";
|
||||||
|
|
||||||
ReservedMessageCreator(uint8_t messageType, uint8_t *msgData, size_t msgLen);
|
ReservedMessageCreator(uint8_t messageType, uint8_t *msgData, size_t msgLen);
|
||||||
[[nodiscard]] ReturnValue_t serialize(uint8_t **buffer, size_t *size, size_t maxSize,
|
[[nodiscard]] ReturnValue_t serialize(uint8_t **buffer, size_t *size, size_t maxSize,
|
||||||
Endianness streamEndianness) const override;
|
Endianness streamEndianness) const override;
|
||||||
|
Loading…
Reference in New Issue
Block a user