Merge pull request 'SerialBufferAdapter refactoring' (#677) from mueller/refactor-serial-buffer-adapter into development
Reviewed-on: fsfw/fsfw#677
This commit is contained in:
commit
62cd39e573
@ -360,7 +360,8 @@ if(NOT FSFW_CONFIG_PATH)
|
|||||||
if(NOT FSFW_BUILD_DOCS)
|
if(NOT FSFW_BUILD_DOCS)
|
||||||
message(
|
message(
|
||||||
WARNING
|
WARNING
|
||||||
"${MSG_PREFIX} Flight Software Framework configuration path FSFW_CONFIG_PATH not set")
|
"${MSG_PREFIX} Flight Software Framework configuration path FSFW_CONFIG_PATH not set"
|
||||||
|
)
|
||||||
message(
|
message(
|
||||||
WARNING
|
WARNING
|
||||||
"${MSG_PREFIX} Setting default configuration from ${DEF_CONF_PATH} ..")
|
"${MSG_PREFIX} Setting default configuration from ${DEF_CONF_PATH} ..")
|
||||||
|
@ -21,7 +21,7 @@ cfdp::Lv& cfdp::Lv::operator=(const Lv& other) {
|
|||||||
if (value == nullptr or otherSize == 0) {
|
if (value == nullptr or otherSize == 0) {
|
||||||
this->zeroLen = true;
|
this->zeroLen = true;
|
||||||
}
|
}
|
||||||
this->value.setBuffer(value, otherSize);
|
this->value.setConstBuffer(value, otherSize);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ ReturnValue_t cfdp::Lv::deSerialize(const uint8_t** buffer, size_t* size,
|
|||||||
}
|
}
|
||||||
zeroLen = false;
|
zeroLen = false;
|
||||||
// Zero-copy implementation
|
// Zero-copy implementation
|
||||||
value.setBuffer(const_cast<uint8_t*>(*buffer + 1), lengthField);
|
value.setConstBuffer(*buffer + 1, lengthField);
|
||||||
*buffer += 1 + lengthField;
|
*buffer += 1 + lengthField;
|
||||||
*size -= 1 + lengthField;
|
*size -= 1 + lengthField;
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
|
@ -75,7 +75,7 @@ ReturnValue_t cfdp::Tlv::deSerialize(const uint8_t **buffer, size_t *size,
|
|||||||
}
|
}
|
||||||
zeroLen = false;
|
zeroLen = false;
|
||||||
// Zero-copy implementation
|
// Zero-copy implementation
|
||||||
value.setBuffer(const_cast<uint8_t *>(*buffer + 1), lengthField);
|
value.setConstBuffer(*buffer + 1, lengthField);
|
||||||
*buffer += 1 + lengthField;
|
*buffer += 1 + lengthField;
|
||||||
*size -= 1 + lengthField;
|
*size -= 1 + lengthField;
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
@ -96,7 +96,7 @@ void cfdp::Tlv::setValue(uint8_t *value, size_t len) {
|
|||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
zeroLen = false;
|
zeroLen = false;
|
||||||
}
|
}
|
||||||
this->value.setBuffer(value, len);
|
this->value.setConstBuffer(value, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t cfdp::Tlv::getLengthField() const { return this->value.getSerializedSize() - 1; }
|
uint8_t cfdp::Tlv::getLengthField() const { return this->value.getSerializedSize() - 1; }
|
||||||
|
@ -21,7 +21,7 @@ SerialBufferAdapter<count_t>::SerialBufferAdapter(uint8_t* buffer, count_t buffe
|
|||||||
bufferLength(bufferLength) {}
|
bufferLength(bufferLength) {}
|
||||||
|
|
||||||
template <typename count_t>
|
template <typename count_t>
|
||||||
SerialBufferAdapter<count_t>::~SerialBufferAdapter() {}
|
SerialBufferAdapter<count_t>::~SerialBufferAdapter() = default;
|
||||||
|
|
||||||
template <typename count_t>
|
template <typename count_t>
|
||||||
ReturnValue_t SerialBufferAdapter<count_t>::serialize(uint8_t** buffer, size_t* size,
|
ReturnValue_t SerialBufferAdapter<count_t>::serialize(uint8_t** buffer, size_t* size,
|
||||||
@ -119,10 +119,10 @@ const uint8_t* SerialBufferAdapter<count_t>::getConstBuffer() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename count_t>
|
template <typename count_t>
|
||||||
void SerialBufferAdapter<count_t>::setBuffer(uint8_t* buffer, count_t bufferLength) {
|
void SerialBufferAdapter<count_t>::setConstBuffer(const uint8_t* buf, count_t bufLen) {
|
||||||
this->buffer = buffer;
|
this->buffer = nullptr;
|
||||||
this->constBuffer = buffer;
|
this->bufferLength = bufLen;
|
||||||
this->bufferLength = bufferLength;
|
this->constBuffer = buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
// forward Template declaration for linker
|
// forward Template declaration for linker
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
template <typename count_t>
|
template <typename count_t>
|
||||||
class SerialBufferAdapter : public SerializeIF {
|
class SerialBufferAdapter : public SerializeIF {
|
||||||
public:
|
public:
|
||||||
|
SerialBufferAdapter() = default;
|
||||||
/**
|
/**
|
||||||
* Constructor for constant uint8_t buffer. Length field can be serialized optionally.
|
* Constructor for constant uint8_t buffer. Length field can be serialized optionally.
|
||||||
* Type of length can be supplied as template type.
|
* Type of length can be supplied as template type.
|
||||||
@ -40,12 +41,12 @@ class SerialBufferAdapter : public SerializeIF {
|
|||||||
*/
|
*/
|
||||||
SerialBufferAdapter(uint8_t* buffer, count_t bufferLength, bool serializeLength = false);
|
SerialBufferAdapter(uint8_t* buffer, count_t bufferLength, bool serializeLength = false);
|
||||||
|
|
||||||
virtual ~SerialBufferAdapter();
|
~SerialBufferAdapter() override;
|
||||||
|
|
||||||
virtual ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
|
ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
|
||||||
Endianness streamEndianness) const override;
|
Endianness streamEndianness) const override;
|
||||||
|
|
||||||
virtual size_t getSerializedSize() const override;
|
[[nodiscard]] size_t getSerializedSize() const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function deserializes a buffer into the member buffer.
|
* @brief This function deserializes a buffer into the member buffer.
|
||||||
@ -59,12 +60,12 @@ class SerialBufferAdapter : public SerializeIF {
|
|||||||
* @param bigEndian
|
* @param bigEndian
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
virtual ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
|
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
|
||||||
Endianness streamEndianness) override;
|
Endianness streamEndianness) override;
|
||||||
|
|
||||||
uint8_t* getBuffer();
|
uint8_t* getBuffer();
|
||||||
const uint8_t* getConstBuffer() const;
|
[[nodiscard]] const uint8_t* getConstBuffer() const;
|
||||||
void setBuffer(uint8_t* buffer, count_t bufferLength);
|
void setConstBuffer(const uint8_t* buf, count_t bufLen);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool serializeLength = false;
|
bool serializeLength = false;
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
class SpacePacketParser {
|
class SpacePacketParser {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
struct FoundPacketInfo {
|
struct FoundPacketInfo {
|
||||||
size_t startIdx = 0;
|
size_t startIdx = 0;
|
||||||
size_t sizeFound = 0;
|
size_t sizeFound = 0;
|
||||||
@ -51,9 +50,7 @@ class SpacePacketParser {
|
|||||||
ReturnValue_t parseSpacePackets(const uint8_t** buffer, const size_t maxSize,
|
ReturnValue_t parseSpacePackets(const uint8_t** buffer, const size_t maxSize,
|
||||||
FoundPacketInfo& packetInfo);
|
FoundPacketInfo& packetInfo);
|
||||||
|
|
||||||
size_t getAmountRead() {
|
size_t getAmountRead() { return amountRead; }
|
||||||
return amountRead;
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset() {
|
void reset() {
|
||||||
nextStartIdx = 0;
|
nextStartIdx = 0;
|
||||||
|
@ -64,7 +64,8 @@ TEST_CASE("Serial Buffer Adapter", "[single-file]") {
|
|||||||
SECTION("Test set buffer function") {
|
SECTION("Test set buffer function") {
|
||||||
SerialBufferAdapter<uint8_t> tv_serial_buffer_adapter_loc =
|
SerialBufferAdapter<uint8_t> tv_serial_buffer_adapter_loc =
|
||||||
SerialBufferAdapter<uint8_t>((uint8_t*)nullptr, 0, true);
|
SerialBufferAdapter<uint8_t>((uint8_t*)nullptr, 0, true);
|
||||||
tv_serial_buffer_adapter_loc.setBuffer(test_serial_buffer.data(), test_serial_buffer.size());
|
tv_serial_buffer_adapter_loc.setConstBuffer(test_serial_buffer.data(),
|
||||||
|
test_serial_buffer.size());
|
||||||
serialized_size = 0;
|
serialized_size = 0;
|
||||||
arrayPtr = testArray.data();
|
arrayPtr = testArray.data();
|
||||||
SerializeAdapter::serialize(&test_value_bool, &arrayPtr, &serialized_size, testArray.size(),
|
SerializeAdapter::serialize(&test_value_bool, &arrayPtr, &serialized_size, testArray.size(),
|
||||||
|
Loading…
Reference in New Issue
Block a user