#ifndef SERIALBUFFERADAPTER_H_ #define SERIALBUFFERADAPTER_H_ #include #include /** * This adapter provides an interface for SerializeIF to serialize or deserialize * buffers with no length header but a known size. * * Additionally, the buffer length can be serialized too and will be put in front of the serialized buffer. * * Can be used with SerialLinkedListAdapter by declaring a SerializeElement with * SerialElement> serialBufferElement * * \ingroup serialize */ template class SerialBufferAdapter: public SerializeIF { public: /** * Constructor for constant uint8_t buffer. Length field can be serialized optionally. * Type of length can be supplied as template type. * @param buffer * @param bufferLength * @param serializeLength */ SerialBufferAdapter(const uint8_t * buffer, T bufferLength, bool serializeLength = false); /** * Constructoor for non-constant uint8_t buffer. Length field can be serialized optionally. * Type of length can be supplied as template type. * @param buffer * @param bufferLength * @param serializeLength */ SerialBufferAdapter(uint8_t* buffer, T bufferLength, bool serializeLength = false); /** * Constructoor for non-constant uint32_t buffer. Length field can be serialized optionally. * Type of length can be supplied as template type. * @param buffer * @param bufferLength * @param serializeLength */ SerialBufferAdapter(uint32_t* buffer,T bufferLength, bool serializeLength = false); virtual ~SerialBufferAdapter(); virtual ReturnValue_t serialize(uint8_t** buffer, uint32_t* size, const uint32_t max_size, bool bigEndian) const; virtual uint32_t getSerializedSize() const; virtual ReturnValue_t deSerialize(const uint8_t** buffer, int32_t* size, bool bigEndian); uint8_t * getBuffer(); private: bool serializeLength; const uint8_t *constBuffer; uint8_t *buffer; T bufferLength; }; #endif /* SERIALBUFFERADAPTER_H_ */