F´ Flight Software - C/C++ Documentation
NASA-v1.5.0
A framework for building embedded system applications to NASA flight quality standards.
|
Go to the documentation of this file. 1 #ifndef SERIALIZABLE_HPP
2 #define SERIALIZABLE_HPP
24 class SerializeBufferBase;
30 #if FW_SERIALIZABLE_TO_STRING || BUILD_UT
35 friend std::ostream& operator<<(std::ostream& os,
const Serializable& val);
@ FW_DESERIALIZE_BUFFER_EMPTY
Deserialization buffer was empty when trying to read more data.
#define PRIVATE
overridable private for unit testing
const U8 * getBuffAddrLeft(void) const
gets address of remaining non-deserialized data.
virtual const U8 * getBuffAddr(void) const =0
gets buffer address for data reading, const version
SerializeStatus
forward declaration for string
@ FW_DESERIALIZE_SIZE_MISMATCH
Data was left in in the buffer, but not enough to deserialize.
void resetDeser(void)
reset deserialization to beginning
@ FW_SERIALIZE_FORMAT_ERROR
Data was the wrong format (e.g. wrong packet type)
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
SerializeStatus copyRaw(SerializeBufferBase &dest, NATIVE_UINT_TYPE size)
directly copies buffer without looking for a size in the stream.
uint8_t U8
8-bit unsigned integer
virtual ~SerializeBufferBase()
destructor
void resetSer(void)
reset to beginning of buffer to reuse for serialization
#define PROTECTED
overridable protected for unit testing
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.
NATIVE_UINT_TYPE m_buffSize
size of external buffer
void clear(void)
clear external buffer
NATIVE_UINT_TYPE getBuffLeft() const
returns how much deserialization buffer is left
virtual U8 * getBuffAddr(void)=0
gets buffer address for data filling
virtual NATIVE_UINT_TYPE getBuffCapacity(void) const =0
returns capacity, not current size, of buffer
SerializeStatus deserializeSkip(NATIVE_UINT_TYPE numBytesToSkip)
Skips the number of specified bytes for deserialization.
int8_t I8
8-bit signed integer
@ FW_DESERIALIZE_FORMAT_ERROR
Deserialization data had incorrect values (unexpected data types)
float F32
32-bit floating point
virtual ~Serializable()
destructor
virtual SerializeStatus deserialize(SerializeBufferBase &buffer)=0
deserialize to contents
SerializeStatus setBuffLen(NATIVE_UINT_TYPE length)
sets buffer length manually after filling with data
@ FW_SERIALIZE_NO_ROOM_LEFT
No room left in the buffer to serialize data.
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
void setExtBuffer(U8 *buffPtr, NATIVE_UINT_TYPE size)
Set the external buffer.
NATIVE_UINT_TYPE m_serLoc
current offset in buffer of serialized data
NATIVE_UINT_TYPE getBuffLength() const
returns current buffer size
U8 * getBuffAddrSer(void)
gets address of end of serialization. DANGEROUS! Need to know max buffer size and adjust when done
NATIVE_UINT_TYPE getBuffCapacity(void) const
returns capacity, not current size, of buffer
Serializable()
Default constructor.
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
@ FW_DESERIALIZE_TYPE_MISMATCH
Deserialized type ID didn't match.
SerializeStatus setBuff(const U8 *src, NATIVE_UINT_TYPE length)
sets buffer contents and size
const SerializeBufferBase & operator=(const SerializeBufferBase &src)
equal operator
SerializeStatus copyRawOffset(SerializeBufferBase &dest, NATIVE_UINT_TYPE size)
directly copies buffer without looking for a size in the stream.
virtual SerializeStatus serialize(SerializeBufferBase &buffer) const =0
serialize contents
ExternalSerializeBuffer()
default constructor
NATIVE_UINT_TYPE m_deserLoc
current offset for deserialization
Declares ISF basic types.
ExternalSerializeBuffer(ExternalSerializeBuffer *other)
U8 * m_buff
pointer to external buffer
U8 * getBuffAddr(void)
gets buffer address for data filling
void copyFrom(const SerializeBufferBase &src)
copy data from source buffer