F´ Flight Software - C/C++ Documentation  NASA-v1.6.0
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 <Fw/Types/BasicTypes.hpp>
16 #include <Fw/Types/Serializable.hpp>
17 #if FW_SERIALIZABLE_TO_STRING
18  #include <Fw/Types/StringType.hpp>
19  #include <cstdio> // snprintf
20  #ifdef BUILD_UT
21  #include <iostream>
22  #include <Fw/Types/String.hpp>
23  #endif
24 #endif
25 
26 namespace Fw {
27 
43 class Buffer : public Fw::Serializable {
44 
45 public:
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  U8* getData() const;
124 
127  U32 getSize() const;
128 
131  U32 getContext() const;
132 
135  void setData(U8* data);
136 
139  void setSize(U32 size);
140 
143  void setContext(U32 context);
144 
149  void set(U8* data, U32 size, U32 context=NO_CONTEXT);
150 
151 #if FW_SERIALIZABLE_TO_STRING || BUILD_UT
152  void toString(Fw::StringBase& text) const;
154 #endif
155 
156 #ifdef BUILD_UT
157  friend std::ostream& operator<<(std::ostream& os, const Buffer& obj);
160 #endif
161 
162 PRIVATE:
163  Fw::ExternalSerializeBuffer m_serialize_repr; //<! Representation for serialization and deserialization functions
164  U8* m_bufferData; //<! data - A pointer to the data
165  U32 m_size; //<! size - The data size in bytes
166  U32 m_context;
167 
168 };
169 } // end namespace Fw
170 #endif /* BUFFER_HPP_ */
171 
Fw::Buffer::NO_CONTEXT
@ NO_CONTEXT
Value representing no context.
Definition: Buffer.hpp:49
Fw::SerializeBufferBase
Definition: Serializable.hpp:43
Fw::SerializeStatus
SerializeStatus
forward declaration for string
Definition: Serializable.hpp:14
Fw::Buffer::operator=
Buffer & operator=(const Buffer &src)
Definition: Buffer.cpp:48
Fw::Buffer::setContext
void setContext(U32 context)
Definition: Buffer.cpp:86
Fw::Buffer::getData
U8 * getData() const
Definition: Buffer.cpp:60
Fw::StringBase
Definition: StringType.hpp:23
U8
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.hpp:73
Fw::Buffer::setData
void setData(U8 *data)
Definition: Buffer.cpp:72
Fw::Buffer::getContext
U32 getContext() const
Definition: Buffer.cpp:68
Fw::Buffer::SERIALIZED_SIZE
@ SERIALIZED_SIZE
Size of Fw::Buffer when serialized.
Definition: Buffer.hpp:48
Fw::Buffer
Definition: Buffer.hpp:43
Fw::Serializable
forward declaration
Definition: Serializable.hpp:26
Fw::Buffer::getSerializeRepr
SerializeBufferBase & getSerializeRepr()
Definition: Buffer.cpp:99
Fw::Buffer::getSize
U32 getSize() const
Definition: Buffer.cpp:64
Fw::Buffer::setSize
void setSize(U32 size)
Definition: Buffer.cpp:79
Fw::Buffer::set
void set(U8 *data, U32 size, U32 context=NO_CONTEXT)
Definition: Buffer.cpp:90
String.hpp
Fw::ExternalSerializeBuffer
Definition: Serializable.hpp:153
Fw::Buffer::Buffer
Buffer()
Definition: Buffer.cpp:23
Fw::Buffer::operator==
bool operator==(const Buffer &src) const
Definition: Buffer.cpp:56
Fw::Buffer::serialize
Fw::SerializeStatus serialize(Fw::SerializeBufferBase &serialBuffer) const
Definition: Buffer.cpp:103
Fw::Buffer::deserialize
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
Definition: Buffer.cpp:126
Fw
Definition: SerIds.hpp:20