F´ Flight Software - C/C++ Documentation  NASA-v2.0.1
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 <Fw/Types/BasicTypes.hpp>
17 #if FW_SERIALIZABLE_TO_STRING
18  #include <Fw/Types/StringType.hpp>
19  #include <stdio.h> // snprintf
20  #ifdef BUILD_UT
21  #include <iostream>
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_data; //<! 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 
StringType.hpp
Declares ISF string base class.
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:44
Serializable.hpp
Fw::Buffer::setContext
void setContext(U32 context)
Definition: Buffer.cpp:82
Fw::Buffer::getData
U8 * getData() const
Definition: Buffer.cpp:56
Fw::StringBase
Definition: StringType.hpp:23
U8
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.hpp:76
Fw::Buffer::setData
void setData(U8 *data)
Definition: Buffer.cpp:68
Fw::Buffer::getContext
U32 getContext() const
Definition: Buffer.cpp:64
Fw::Buffer
Definition: Buffer.hpp:43
Fw::Serializable
forward declaration
Definition: Serializable.hpp:26
Fw::Buffer::getSerializeRepr
SerializeBufferBase & getSerializeRepr()
Definition: Buffer.cpp:95
EightyCharString.hpp
Fw::Buffer::getSize
U32 getSize() const
Definition: Buffer.cpp:60
Fw::Buffer::setSize
void setSize(U32 size)
Definition: Buffer.cpp:75
Fw::Buffer::set
void set(U8 *data, U32 size, U32 context=NO_CONTEXT)
Definition: Buffer.cpp:86
Fw::Buffer::SERIALIZED_SIZE
@ SERIALIZED_SIZE
Size of Fw::Buffer when serialized.
Definition: Buffer.hpp:48
Fw::ExternalSerializeBuffer
Definition: Serializable.hpp:156
Fw::Buffer::Buffer
Buffer()
Definition: Buffer.cpp:23
Fw::Buffer::NO_CONTEXT
@ NO_CONTEXT
Value representing no context.
Definition: Buffer.hpp:49
BasicTypes.hpp
Declares ISF basic types.
Fw::Buffer::operator==
bool operator==(const Buffer &src) const
Definition: Buffer.cpp:52
Fw::Buffer::serialize
Fw::SerializeStatus serialize(Fw::SerializeBufferBase &serialBuffer) const
Definition: Buffer.cpp:99
Fw::Buffer::deserialize
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
Definition: Buffer.cpp:122
Fw
Definition: Buffer.cpp:21