F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
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
18  #include <Fw/Types/StringType.hpp>
19  #ifdef BUILD_UT
20  #include <iostream>
21  #include <Fw/Types/String.hpp>
22  #endif
23 #endif
24 
25 namespace Fw {
26 
42 class Buffer : public Fw::Serializable {
43 
44 public:
45 
46  enum {
47  SERIALIZED_SIZE = sizeof(U32) + sizeof(U32) + sizeof(U8*),
48  NO_CONTEXT = 0xFFFFFFFF
49  };
50 
55  Buffer();
56 
59  Buffer(const Buffer& src);
60 
68  Buffer(U8* data, U32 size, U32 context=NO_CONTEXT);
69 
72  Buffer& operator=(const Buffer& src);
73 
81  bool operator==(const Buffer& src) const;
82 
83  // ----------------------------------------------------------------------
84  // Serialization functions
85  // ----------------------------------------------------------------------
86 
94 
104 
114 
115 
116  // ----------------------------------------------------------------------
117  // Accessor functions
118  // ----------------------------------------------------------------------
119 
122  bool isValid() const;
123 
126  U8* getData() const;
127 
130  U32 getSize() const;
131 
134  U32 getContext() const;
135 
138  void setData(U8* data);
139 
142  void setSize(U32 size);
143 
146  void setContext(U32 context);
147 
152  void set(U8* data, U32 size, U32 context=NO_CONTEXT);
153 
154 #if FW_SERIALIZABLE_TO_STRING || BUILD_UT
155  void toString(Fw::StringBase& text) const;
157 #endif
158 
159 #ifdef BUILD_UT
160  friend std::ostream& operator<<(std::ostream& os, const Buffer& obj);
163 #endif
164 
165 PRIVATE:
166  Fw::ExternalSerializeBuffer m_serialize_repr; //<! Representation for serialization and deserialization functions
167  U8* m_bufferData; //<! data - A pointer to the data
168  U32 m_size; //<! size - The data size in bytes
169  U32 m_context;
170 
171 };
172 } // end namespace Fw
173 #endif /* BUFFER_HPP_ */
174 
SerializeBufferBase & getSerializeRepr()
Definition: Buffer.cpp:107
void setData(U8 *data)
Definition: Buffer.cpp:80
Fw::SerializeStatus serialize(Fw::SerializeBufferBase &serialBuffer) const
Definition: Buffer.cpp:111
void setContext(U32 context)
Definition: Buffer.cpp:94
U32 getContext() const
Definition: Buffer.cpp:76
U8 * getData() const
Definition: Buffer.cpp:68
bool operator==(const Buffer &src) const
Definition: Buffer.cpp:60
U32 getSize() const
Definition: Buffer.cpp:72
SerializeStatus
forward declaration for string
bool isValid() const
Definition: Buffer.cpp:64
void setSize(U32 size)
Definition: Buffer.cpp:87
External serialize buffer with no copy semantics.
C++-compatible configuration header for fprime configuration.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:30
Size of Fw::Buffer when serialized.
Definition: Buffer.hpp:47
forward declaration
Value representing no context.
Definition: Buffer.hpp:48
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
Definition: Buffer.cpp:134
Buffer & operator=(const Buffer &src)
Definition: Buffer.cpp:52