added unittests for new helpers
This commit is contained in:
@ -1,10 +1,10 @@
|
||||
#ifndef FSFW_INC_FSFW_SERIALIZE_H_
|
||||
#define FSFW_INC_FSFW_SERIALIZE_H_
|
||||
|
||||
#include "src/core/serialize/EndianConverter.h"
|
||||
#include "src/core/serialize/SerialArrayListAdapter.h"
|
||||
#include "src/core/serialize/SerialBufferAdapter.h"
|
||||
#include "src/core/serialize/SerialLinkedListAdapter.h"
|
||||
#include "src/core/serialize/SerializeElement.h"
|
||||
#include "fsfw/serialize/EndianConverter.h"
|
||||
#include "fsfw/serialize/SerialArrayListAdapter.h"
|
||||
#include "fsfw/serialize/SerialBufferAdapter.h"
|
||||
#include "fsfw/serialize/SerialLinkedListAdapter.h"
|
||||
#include "fsfw/serialize/SerializeElement.h"
|
||||
|
||||
#endif /* FSFW_INC_FSFW_SERIALIZE_H_ */
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
|
||||
#include "../osal/Endiness.h"
|
||||
#include "fsfw/osal/Endiness.h"
|
||||
|
||||
/**
|
||||
* Helper class to convert variables or bitstreams between machine
|
||||
@ -36,7 +36,7 @@
|
||||
*/
|
||||
class EndianConverter {
|
||||
private:
|
||||
EndianConverter(){};
|
||||
EndianConverter() = default;
|
||||
|
||||
public:
|
||||
/**
|
||||
@ -49,8 +49,8 @@ class EndianConverter {
|
||||
#error BYTE_ORDER_SYSTEM not defined
|
||||
#elif BYTE_ORDER_SYSTEM == LITTLE_ENDIAN
|
||||
T tmp;
|
||||
uint8_t *pointerOut = (uint8_t *)&tmp;
|
||||
uint8_t *pointerIn = (uint8_t *)∈
|
||||
auto *pointerOut = reinterpret_cast<uint8_t *>(&tmp);
|
||||
auto *pointerIn = reinterpret_cast<uint8_t *>(&in);
|
||||
for (size_t count = 0; count < sizeof(T); count++) {
|
||||
pointerOut[sizeof(T) - count - 1] = pointerIn[count];
|
||||
}
|
||||
@ -73,7 +73,6 @@ class EndianConverter {
|
||||
for (size_t count = 0; count < size; count++) {
|
||||
out[size - count - 1] = in[count];
|
||||
}
|
||||
return;
|
||||
#elif BYTE_ORDER_SYSTEM == BIG_ENDIAN
|
||||
memcpy(out, in, size);
|
||||
return;
|
||||
@ -90,8 +89,8 @@ class EndianConverter {
|
||||
#error BYTE_ORDER_SYSTEM not defined
|
||||
#elif BYTE_ORDER_SYSTEM == BIG_ENDIAN
|
||||
T tmp;
|
||||
uint8_t *pointerOut = (uint8_t *)&tmp;
|
||||
uint8_t *pointerIn = (uint8_t *)∈
|
||||
auto *pointerOut = reinterpret_cast<uint8_t *>(&tmp);
|
||||
auto *pointerIn = reinterpret_cast<uint8_t *>(&in);
|
||||
for (size_t count = 0; count < sizeof(T); count++) {
|
||||
pointerOut[sizeof(T) - count - 1] = pointerIn[count];
|
||||
}
|
||||
@ -116,7 +115,6 @@ class EndianConverter {
|
||||
return;
|
||||
#elif BYTE_ORDER_SYSTEM == LITTLE_ENDIAN
|
||||
memcpy(out, in, size);
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "../returnvalues/HasReturnvaluesIF.h"
|
||||
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
/**
|
||||
* @defgroup serialize Serialization
|
||||
@ -105,13 +105,13 @@ class SerializeIF {
|
||||
/**
|
||||
* Forwards to regular @deSerialize call with network endianness
|
||||
*/
|
||||
virtual ReturnValue_t deSerializeNe(const uint8_t** buffer, size_t* size, size_t maxSize) {
|
||||
virtual ReturnValue_t deSerializeNe(const uint8_t** buffer, size_t* size) {
|
||||
return deSerialize(buffer, size, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
/**
|
||||
* If endianness is not explicitly specified, use machine endianness
|
||||
*/
|
||||
virtual ReturnValue_t deSerialize(const uint8_t** buffer, size_t *size, size_t maxSize) {
|
||||
virtual ReturnValue_t deSerialize(const uint8_t** buffer, size_t *size) {
|
||||
return deSerialize(buffer, size, SerializeIF::Endianness::MACHINE);
|
||||
}
|
||||
|
||||
@ -156,14 +156,14 @@ class SerializeIF {
|
||||
/**
|
||||
* Forwards to regular @serialize call with network endianness
|
||||
*/
|
||||
virtual ReturnValue_t deSerializeNe(uint8_t *buffer, size_t maxSize) const {
|
||||
return serialize(buffer, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
virtual ReturnValue_t deSerializeNe(const uint8_t *buffer, size_t maxSize) {
|
||||
return deSerialize(buffer, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
/**
|
||||
* If endianness is not explicitly specified, use machine endianness
|
||||
*/
|
||||
virtual ReturnValue_t deSerialize(uint8_t *buffer, size_t maxSize) const {
|
||||
return serialize(buffer, maxSize, SerializeIF::Endianness::MACHINE);
|
||||
virtual ReturnValue_t deSerialize(const uint8_t *buffer, size_t maxSize) {
|
||||
return deSerialize(buffer, maxSize, SerializeIF::Endianness::MACHINE);
|
||||
}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user