21 #if FW_SERIALIZABLE_TO_STRING || FW_ENABLE_TEXT_LOGGING || BUILD_UT 23 void Serializable::toString(
StringBase& text)
const {
30 std::ostream& operator<<(std::ostream& os,
const Serializable& val) {
80 #if FW_HAS_16_BIT == 1 110 #if FW_HAS_32_BIT == 1 145 #if FW_HAS_64_BIT == 1 191 (void)memcpy(&u64Val, &val,
sizeof(val));
198 (void)memcpy(&u32Val, &val,
sizeof(val));
224 return this->
serializeFrom(reinterpret_cast<PlatformPointerCastType>(val), mode);
239 stat = this->
serializeFrom(static_cast<FwSizeStoreType>(length), endianMode);
291 status = this->
serializeFrom(static_cast<FwSizeStoreType>(size), mode);
326 #if FW_HAS_16_BIT == 1 359 val =
static_cast<I16
>(unsignVal);
364 #if FW_HAS_32_BIT == 1 401 val =
static_cast<I32
>(unsignVal);
407 #if FW_HAS_64_BIT == 1 453 val =
static_cast<I64
>(unsignVal);
467 (void)memcpy(&val, &tempVal,
sizeof(val));
495 PlatformPointerCastType pointerCastVal = 0;
498 val =
reinterpret_cast<void*
>(pointerCastVal);
510 (void)memcpy(&val, &tempVal,
sizeof(val));
538 if ((storedLength > this->
getBuffLeft()) or (storedLength > length)) {
544 length =
static_cast<FwSizeType>(storedLength);
662 (void)memcpy(this->
getBuffAddr(), src,
static_cast<size_t>(length));
681 static_cast<FwAssertArgType>(this->
m_deserLoc));
740 if (us[byte] != them[byte]) {
748 std::ostream& operator<<(std::ostream& os,
const SerializeBufferBase& buff) {
749 const U8* us = buff.getBuffAddr();
754 os <<
"[" << std::setw(2) << std::hex << std::setfill(
'0') << us[byte] <<
"]" << std::dec;
805 #if FW_HAS_16_BIT == 1 813 #if FW_HAS_32_BIT == 1 821 #if FW_HAS_64_BIT == 1 854 SerializeStatus SerializeBufferBase::serialize(
const Serializable& val) {
857 SerializeStatus SerializeBufferBase::serialize(
const SerializeBufferBase& val) {
867 #if FW_HAS_16_BIT == 1 875 #if FW_HAS_32_BIT == 1 883 #if FW_HAS_64_BIT == 1 921 SerializeStatus SerializeBufferBase::deserialize(SerializeBufferBase& val) {
Serialization/Deserialization operation was successful.
void clear()
clear external buffer
SerializeBufferBase()
default constructor
Deserialization buffer was empty when trying to read more data.
PlatformSizeType FwSizeType
void resetSer()
reset to beginning of buffer to reuse for serialization
SerializeStatus copyRaw(SerializeBufferBase &dest, Serializable::SizeType size)
directly copies buffer without looking for a size in the stream.
int8_t I8
8-bit signed integer
SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG)
deserialize 8-bit unsigned int
No room left in the buffer to serialize data.
#define FW_SERIALIZE_FALSE_VALUE
Value encoded during serialization for boolean false.
Serializable::SizeType m_buffSize
size of external buffer
virtual ~SerializeBufferBase()
destructor
Deserialization data had incorrect values (unexpected data types)
Serializable::SizeType m_serLoc
current offset in buffer of serialized data
const U8 * getBuffAddrLeft() const
gets address of remaining non-deserialized data.
ExternalSerializeBuffer()
default constructor
SerializeStatus
forward declaration for string
float F32
32-bit floating point
SerializeStatus deserializeSize(FwSizeType &size, Endianness mode=Endianness::BIG)
deserialize a size value
U16 FwSizeStoreType
The type used to serialize a size value.
Serializable::SizeType getBuffLength() const
returns current buffer size
Serializable::SizeType getBuffLeft() const
returns how much deserialization buffer is left
Data was the wrong format (e.g. wrong packet type)
U8 * m_buff
pointer to external buffer
Omit length from serialization.
#define FW_SERIALIZE_TRUE_VALUE
Value encoded during serialization for boolean true.
virtual SerializeStatus deserializeFrom(SerializeBufferBase &buffer, Endianness mode=Endianness::BIG)=0
deserialize contents from buffer
Data was left in the buffer, but not enough to deserialize.
Serializable()
Default constructor.
void resetDeser()
reset deserialization to beginning
virtual SerializeStatus serializeTo(SerializeBufferBase &buffer, Endianness mode=Endianness::BIG) const =0
serialize contents to buffer
SerializeStatus copyRawOffset(SerializeBufferBase &dest, Serializable::SizeType size)
directly copies buffer without looking for a size in the stream.
SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG)
serialize 8-bit unsigned int
SerializeStatus moveDeserToOffset(FwSizeType offset)
Moves deserialization to the specified offset.
SerializeStatus moveSerToOffset(FwSizeType offset)
Moves serialization to the specified offset.
uint8_t U8
8-bit unsigned integer
virtual Serializable::SizeType getBuffCapacity() const =0
returns capacity, not current size, of buffer
SerializeStatus deserializeSkip(FwSizeType numBytesToSkip)
Skips the number of specified bytes for deserialization.
static U32 min(const U32 a, const U32 b)
void setExtBuffer(U8 *buffPtr, Serializable::SizeType size)
virtual ~Serializable()
destructor
Serializable::SizeType m_deserLoc
current offset for deserialization
double F64
64-bit floating point (double). Required for compiler-supplied double promotion.
SerializeBufferBase & operator=(const SerializeBufferBase &src)
copy assignment operator
SerializeStatus setBuff(const U8 *src, Serializable::SizeType length)
sets buffer contents and size
Include length as first token in serialization.
SerializeStatus serializeSize(const FwSizeType size, Endianness mode=Endianness::BIG)
serialize a size value
Little endian serialization.
Serializable::SizeType getBuffCapacity() const
returns capacity, not current size, of buffer
virtual U8 * getBuffAddr()=0
gets buffer address for data filling
SerializeStatus serializeSkip(FwSizeType numBytesToSkip)
Skips the number of specified bytes for serialization.
PlatformAssertArgType FwAssertArgType
The type of arguments to assert functions.
Big endian serialization.
U8 * getBuffAddr()
gets buffer address for data filling
SerializeStatus setBuffLen(Serializable::SizeType length)
sets buffer length manually after filling with data