1 #ifndef SERIALIZABLE_HPP 2 #define SERIALIZABLE_HPP 27 class SerialBufferBase;
28 class LinearBufferBase;
75 "Use serializeTo(SerialBufferBase& buffer) instead") {
80 "Use deserializeFrom(SerialBufferBase& buffer) instead") {
84 #if FW_SERIALIZABLE_TO_STRING || FW_ENABLE_TEXT_LOGGING || BUILD_UT 97 friend std::ostream& operator<<(std::ostream& os,
const Serializable& val);
147 #if FW_HAS_16_BIT == 1 168 #if FW_HAS_32_BIT == 1 189 #if FW_HAS_64_BIT == 1 337 #if FW_HAS_16_BIT == 1 361 #if FW_HAS_32_BIT == 1 384 #if FW_HAS_64_BIT == 1 724 #if FW_HAS_16_BIT == 1 745 #if FW_HAS_32_BIT == 1 766 #if FW_HAS_64_BIT == 1 912 #if FW_HAS_16_BIT == 1 936 #if FW_HAS_32_BIT == 1 959 #if FW_HAS_64_BIT == 1 1091 "Use serializeFrom(const SerialBufferBase& val) instead");
1280 #if FW_HAS_16_BIT == 1 1284 #if FW_HAS_32_BIT == 1 1288 #if FW_HAS_64_BIT == 1 1298 "Use serialize(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1300 "Use serializeFrom(const U8* buff, FwSizeType length) instead");
1302 "Use serializeFrom(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1304 "Use serializeFrom(const Serializable& val) instead");
1308 #if FW_HAS_16_BIT == 1 1312 #if FW_HAS_32_BIT == 1 1316 #if FW_HAS_64_BIT == 1 1326 "Use deserialize(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1328 "Use deserializeTo(U8* buff, FwSizeType& length) instead");
1330 "Use deserializeTo(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1351 friend std::ostream& operator<<(std::ostream& os,
const LinearBufferBase& buff);
1526 (void)LinearBufferBase::operator=(src);
Serialization/Deserialization operation was successful.
void setDeserLoc(Serializable::SizeType loc)
friend class LinearBufferBaseTester
void clear()
Clear external buffer.
DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead")
void copyFrom(const LinearBufferBase &src)
Copy data from source buffer.
ExternalSerializeBufferWithDataCopy & operator=(LinearBufferBase &src)
Copy assignment operator with data copying.
virtual Serializable::SizeType getCapacity() const =0
Get buffer capacity.
Deserialization buffer was empty when trying to read more data.
SerializeStatus setBuff(const U8 *src, Serializable::SizeType length) override
Set buffer contents from external source.
PlatformSizeType FwSizeType
Serialization succeeded, but deleted old data.
SerializeStatus moveSerToOffset(FwSizeType offset) override
Move serialization pointer to specified offset.
virtual SerializeStatus serializeTo(SerialBufferBase &buffer, Endianness mode=Endianness::BIG) const =0
Serialize the contents of this object to a buffer.
const U8 * getBuffAddrLeft() const
Get address of remaining non-deserialized data.
Serializable::SizeType getSize() const override
Get current buffer size.
virtual SerializeStatus moveSerToOffset(FwSizeType offset)=0
Move serialization pointer to specified offset.
SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG) override
Deserialize an 8-bit unsigned integer value.
Fw::SerializeStatus serialize(Fw::SerialBufferBase &serializer, FwSizeType size)
Serialize an idle packet of exactly size bytes (header and idle data) into serializer ...
virtual SerializeStatus serializeSkip(FwSizeType numBytesToSkip)=0
Skip specified number of bytes during serialization.
int8_t I8
8-bit signed integer
No room left in the buffer to serialize data.
virtual void resetSer()=0
Reset serialization pointer to beginning of buffer.
void setBuffAddrInternal(U8 *addr)
virtual SerializeStatus deserializeFrom(SerialBufferBase &buffer, Endianness mode=Endianness::BIG)=0
Deserialize the contents of this object from a buffer.
LinearBufferBase & operator=(const LinearBufferBase &src)
Copy assignment operator.
virtual SerializeStatus copyRaw(SerialBufferBase &dest, Serializable::SizeType size)=0
Copy raw bytes from the source (this) into a destination buffer and advance source offset...
Deserialization data had incorrect values (unexpected data types)
Serializable::SizeType getSerLoc() const
SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG) override
Serialize an 8-bit unsigned integer value.
const U8 * getBuffAddr() const
Get buffer address for data reading (const version)
virtual SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG)=0
Serialize an 8-bit unsigned integer value.
Serializable::SizeType getCapacity() const override
Get buffer capacity.
SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) override
Skip specified number of bytes during deserialization.
DEPRECATED(SerializeStatus deserialize(SerialBufferBase &buffer), "Use deserializeFrom(SerialBufferBase& buffer) instead")
ExternalSerializeBuffer()
Default constructor.
LinearBufferBase()=delete
SerializeStatus
forward declaration for string
void setSerLoc(Serializable::SizeType loc)
float F32
32-bit floating point
virtual SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG)=0
Deserialize an 8-bit unsigned integer value.
virtual SerializeStatus deserializeSkip(FwSizeType numBytesToSkip)=0
Skip specified number of bytes during deserialization.
ExternalSerializeBufferWithDataCopy()
Default constructor.
virtual void resetDeser()=0
Reset deserialization pointer to beginning of buffer.
DEPRECATED(SerializeStatus serialize(const LinearBufferBase &val), "Use serializeFrom(const SerialBufferBase& val) instead")
static constexpr Serializable::SizeType STATIC_SERIALIZED_SIZE(Serializable::SizeType maxSize)
Get the static serialized size of a buffer This is the max size of the buffer data plus the size of t...
virtual ~SerialBufferBase()
Virtual destructor.
Data was the wrong format (e.g. wrong packet type)
U8 * getBuffAddr()
Get buffer address for data filling (non-const version)
SerializeStatus moveDeserToOffset(FwSizeType offset) override
Move deserialization pointer to specified offset.
ExternalSerializeBufferWithMemberCopy(U8 *buffPtr, Serializable::SizeType size)
Construct with external buffer.
Omit length from serialization.
Serializable::SizeType getDeserLoc() const
Data was left in the buffer, but not enough to deserialize.
Serializable::SizeType getDeserializeSizeLeft() const override
Get remaining deserialization buffer size.
External serialize buffer with no copy semantics.
ExternalSerializeBufferWithMemberCopy(const ExternalSerializeBufferWithMemberCopy &src)
Copy constructor with member copying.
Serializable()
Default constructor.
virtual SerializeStatus serializeSize(const FwSizeType size, Endianness mode=Endianness::BIG)=0
Serialize a size value.
void resetDeser() override
Reset deserialization pointer to beginning of buffer.
void resetSer() override
Reset serialization pointer to beginning of buffer.
FwSizeType FwSizeStoreType
Deserialized type ID didn't match.
void setCapacityInternal(Serializable::SizeType capacity)
virtual SerializeStatus setBuffLen(Serializable::SizeType length)=0
Set buffer length manually.
~ExternalSerializeBufferWithDataCopy()
Destructor.
SerializeStatus copyRawOffset(SerialBufferBase &dest, Serializable::SizeType size) override
Append raw bytes to destination from this buffer and advance source offset.
virtual SerializeStatus setBuff(const U8 *src, Serializable::SizeType length)=0
Set buffer contents from external source.
virtual Serializable::SizeType getDeserializeSizeLeft() const =0
Get remaining deserialization buffer size.
uint8_t U8
8-bit unsigned integer
SerializeStatus setBuffLen(Serializable::SizeType length) override
Set buffer length manually.
ExternalSerializeBufferWithMemberCopy & operator=(const ExternalSerializeBufferWithMemberCopy &src)
Copy assignment operator with member copying.
virtual SerializeStatus copyRawOffset(SerialBufferBase &dest, Serializable::SizeType size)=0
Append raw bytes to destination (no length) and advance source offset.
DEPRECATED(SerializeStatus serialize(SerialBufferBase &buffer) const, "Use serializeTo(SerialBufferBase& buffer) instead")
void setExtBuffer(U8 *buffPtr, Serializable::SizeType size)
Set the external buffer.
virtual ~Serializable()
Virtual destructor.
~ExternalSerializeBuffer()
Destructor.
double F64
64-bit floating point (double). Required for compiler-supplied double promotion.
SerializeStatus deserializeSize(FwSizeType &size, Endianness mode=Endianness::BIG) override
Deserialize a size value.
SerializeStatus copyRaw(SerialBufferBase &dest, Serializable::SizeType size) override
Copy raw bytes from this buffer to destination and advance source offset.
External serialize buffer with member copy semantics.
virtual SerializeStatus deserializeSize(FwSizeType &size, Endianness mode=Endianness::BIG)=0
Deserialize a size value.
Include length as first token in serialization.
Little endian serialization.
ExternalSerializeBufferWithMemberCopy()
Default constructor.
SerializeStatus serializeSize(const FwSizeType size, Endianness mode=Endianness::BIG) override
Serialize a size value.
External serialize buffer with data copy semantics.
Implementation of malloc based allocator.
Attempted to deserialize into an immutable buffer.
ExternalSerializeBufferWithDataCopy(U8 *buffPtr, Serializable::SizeType size)
Construct with external buffer.
ExternalSerializeBuffer & operator=(const LinearBufferBase &src)=delete
Deleted copy assignment operator.
virtual SerializeStatus moveDeserToOffset(FwSizeType offset)=0
Move deserialization pointer to specified offset.
virtual Serializable::SizeType getSerializeSizeLeft() const =0
Get remaining serialization buffer size.
virtual Serializable::SizeType getSize() const =0
Get current buffer size.
~ExternalSerializeBufferWithMemberCopy()
Destructor.
Serializable::SizeType getSerializeSizeLeft() const override
Get remaining serialization buffer size.
SerializeStatus serializeSkip(FwSizeType numBytesToSkip) override
Skip specified number of bytes during serialization.
U8 * getBuffAddrSer()
Get address of end of serialization (DANGEROUS!)
virtual ~LinearBufferBase()
Destructor.
Big endian serialization.