F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
DeserialStatusEnumAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title DeserialStatusEnumAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for DeserialStatus enum
5 // ======================================================================
6 
7 #include <cstring>
8 #include <limits>
9 
11 
12 namespace Fw {
13 
14  // ----------------------------------------------------------------------
15  // Operators
16  // ----------------------------------------------------------------------
17 
18  DeserialStatus& DeserialStatus ::
20  {
21  this->e = obj.e;
22 #ifdef BUILD_UT
23  this->m_serializeValueIsSet = obj.m_serializeValueIsSet;
24  this->m_serializeValue = obj.m_serializeValue;
25 #endif
26  return *this;
27  }
28 
31  {
32  FW_ASSERT(isValid(e1), static_cast<FwAssertArgType>(e1));
33  this->e = static_cast<enum T>(e1);
34 #ifdef BUILD_UT
35  this->m_serializeValueIsSet = false;
36  this->m_serializeValue = 0;
37 #endif
38  return *this;
39  }
40 
42  operator=(enum T e1)
43  {
44  FW_ASSERT(isValid(e1), static_cast<FwAssertArgType>(e1));
45  this->e = e1;
46 #ifdef BUILD_UT
47  this->m_serializeValueIsSet = false;
48  this->m_serializeValue = 0;
49 #endif
50  return *this;
51  }
52 
53 #ifdef BUILD_UT
54 
55  std::ostream& operator<<(std::ostream& os, const DeserialStatus& obj) {
56  Fw::String s;
57  obj.toString(s);
58  os << s;
59  return os;
60  }
61 
62 #endif
63 
64  // ----------------------------------------------------------------------
65  // Member functions
66  // ----------------------------------------------------------------------
67 
69  isValid() const
70  {
71  return DeserialStatus::isValid(this->e);
72  }
73 
76  Fw::SerialBufferBase& buffer,
77  Fw::Endianness mode
78  ) const
79  {
80  SerialType es = static_cast<SerialType>(this->e);
81 #ifdef BUILD_UT
82  // Unit testing only: On request, override the enum value
83  // with the numeric value, which is allowed to be invalid
84  if (this->m_serializeValueIsSet) {
85  es = this->m_serializeValue;
86  }
87 #endif
88  const Fw::SerializeStatus status = buffer.serializeFrom(es, mode);
89  return status;
90  }
91 
94  Fw::SerialBufferBase& buffer,
95  Fw::Endianness mode
96  )
97  {
98  SerialType es;
99  Fw::SerializeStatus status = buffer.deserializeTo(es, mode);
100  if ((status == Fw::FW_SERIALIZE_OK) && !DeserialStatus::isValid(es)) {
102  }
103  if (status == Fw::FW_SERIALIZE_OK) {
104  this->e = static_cast<enum T>(es);
105  }
106  return status;
107  }
108 
109 #if FW_SERIALIZABLE_TO_STRING
110 
111  void DeserialStatus ::
112  toString(Fw::StringBase& sb) const
113  {
114  Fw::String s;
115  switch (e) {
116  case OK:
117  s = "OK";
118  break;
119  case BUFFER_EMPTY:
120  s = "BUFFER_EMPTY";
121  break;
122  case FORMAT_ERROR:
123  s = "FORMAT_ERROR";
124  break;
125  case SIZE_MISMATCH:
126  s = "SIZE_MISMATCH";
127  break;
128  case TYPE_MISMATCH:
129  s = "TYPE_MISMATCH";
130  break;
131  default:
132  s = "[invalid]";
133  break;
134  }
135  sb.format("%s (%" PRIu8 ")", s.toChar(), e);
136  }
137 
138 #endif
139 
140 #ifdef BUILD_UT
141 
142  void DeserialStatus ::
143  setSerializeValue(SerialType serializeValue)
144  {
145  this->m_serializeValue = serializeValue;
146  this->m_serializeValueIsSet = true;
147  }
148 
149 #endif
150 
151  // ----------------------------------------------------------------------
152  // Static functions
153  // ----------------------------------------------------------------------
154 
155  bool DeserialStatus ::
156  isValid(SerialType serialTypeValue)
157  {
158  return (serialTypeValue == OK)
159  || ((serialTypeValue >= BUFFER_EMPTY) && (serialTypeValue <= TYPE_MISMATCH));
160  }
161 
162 }
Serialization/Deserialization operation was successful.
Deserialized type ID didn&#39;t match.
Deserialization buffer was empty when trying to read data.
Deserialization status.
U8 SerialType
The serial representation type.
Deserialization data had incorrect values (unexpected data types)
Deserialization data had incorrect values (unexpected data types)
virtual SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG)=0
Serialize an 8-bit unsigned integer value.
SerializeStatus
forward declaration for string
virtual SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG)=0
Deserialize an 8-bit unsigned integer value.
Fw::SerializeStatus serializeTo(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) const
Serialize raw enum value to SerialType.
enum T e
The raw enum value.
bool isValid() const
Check raw enum value for validity.
Data was left in in the buffer, but not enough to deserialize.
const char * toChar() const
Convert to a C-style char*.
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
Definition: StringBase.cpp:58
Fw::SerializeStatus deserializeFrom(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG)
Deserialize raw enum value from SerialType.
T
The raw enum type.
Implementation of malloc based allocator.
Endianness
#define FW_ASSERT(...)
Definition: Assert.hpp:14
ComCfg::Apid::SerialType SerialType
Definition: TestUtils.cpp:14
DeserialStatus & operator=(const DeserialStatus &obj)
Copy assignment operator (object)