F´ Flight Software - C/C++ Documentation devel
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Buffer.hpp
Go to the documentation of this file.
1// ======================================================================
2// \title Buffer.hpp
3// \author mstarch
4// \brief hpp file for Fw::Buffer definition
5//
6// \copyright
7// Copyright 2009-2020, by the California Institute of Technology.
8// ALL RIGHTS RESERVED. United States Government Sponsorship
9// acknowledged.
10//
11// ======================================================================
12#ifndef BUFFER_HPP_
13#define BUFFER_HPP_
14
15#include <FpConfig.hpp>
17#if FW_SERIALIZABLE_TO_STRING
19 #include <cstdio> // snprintf
20 #ifdef BUILD_UT
21 #include <iostream>
22 #include <Fw/Types/String.hpp>
23 #endif
24#endif
25
26namespace Fw {
27
43class Buffer : public Fw::Serializable {
44
45public:
46
47 enum {
48 SERIALIZED_SIZE = sizeof(U32) + sizeof(U32) + sizeof(U8*),
49 NO_CONTEXT = 0xFFFFFFFF
50 };
51
56 Buffer();
57
60 Buffer(const Buffer& src);
61
69 Buffer(U8* data, U32 size, U32 context=NO_CONTEXT);
70
73 Buffer& operator=(const Buffer& src);
74
82 bool operator==(const Buffer& src) const;
83
84 // ----------------------------------------------------------------------
85 // Serialization functions
86 // ----------------------------------------------------------------------
87
95
105
115
116
117 // ----------------------------------------------------------------------
118 // Accessor functions
119 // ----------------------------------------------------------------------
120
123 bool isValid() const;
124
127 U8* getData() const;
128
131 U32 getSize() const;
132
135 U32 getContext() const;
136
139 void setData(U8* data);
140
143 void setSize(U32 size);
144
147 void setContext(U32 context);
148
153 void set(U8* data, U32 size, U32 context=NO_CONTEXT);
154
155#if FW_SERIALIZABLE_TO_STRING || BUILD_UT
157 void toString(Fw::StringBase& text) const;
158#endif
159
160#ifdef BUILD_UT
163 friend std::ostream& operator<<(std::ostream& os, const Buffer& obj);
164#endif
165
166PRIVATE:
167 Fw::ExternalSerializeBuffer m_serialize_repr; //<! Representation for serialization and deserialization functions
168 U8* m_bufferData; //<! data - A pointer to the data
169 U32 m_size; //<! size - The data size in bytes
170 U32 m_context;
171
172};
173} // end namespace Fw
174#endif /* BUFFER_HPP_ */
175
uint8_t U8
8-bit unsigned integer
Definition BasicTypes.h:26
C++-compatible configuration header for fprime configuration.
Declares ISF string base class.
bool operator==(const Buffer &src) const
Definition Buffer.cpp:60
@ NO_CONTEXT
Value representing no context.
Definition Buffer.hpp:49
@ SERIALIZED_SIZE
Size of Fw::Buffer when serialized.
Definition Buffer.hpp:48
U8 * getData() const
Definition Buffer.cpp:68
void set(U8 *data, U32 size, U32 context=NO_CONTEXT)
Definition Buffer.cpp:98
bool isValid() const
Definition Buffer.cpp:64
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
Definition Buffer.cpp:134
U32 getSize() const
Definition Buffer.cpp:72
void setData(U8 *data)
Definition Buffer.cpp:80
void setContext(U32 context)
Definition Buffer.cpp:94
Fw::SerializeStatus serialize(Fw::SerializeBufferBase &serialBuffer) const
Definition Buffer.cpp:111
Buffer & operator=(const Buffer &src)
Definition Buffer.cpp:52
void setSize(U32 size)
Definition Buffer.cpp:87
U32 getContext() const
Definition Buffer.cpp:76
SerializeBufferBase & getSerializeRepr()
Definition Buffer.cpp:107
forward declaration
SerializeStatus
forward declaration for string