F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
CmdResponseEnumAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title CmdResponseEnumAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for CmdResponse enum
5 // ======================================================================
6 
7 #include <cstring>
8 #include <limits>
9 
11 
12 namespace Fw {
13 
14  // ----------------------------------------------------------------------
15  // Operators
16  // ----------------------------------------------------------------------
17 
18  CmdResponse& CmdResponse ::
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 CmdResponse& 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 
68  bool CmdResponse ::
69  isValid() const
70  {
71  return CmdResponse::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) && !CmdResponse::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 CmdResponse ::
112  toString(Fw::StringBase& sb) const
113  {
114  Fw::String s;
115  switch (e) {
116  case OK:
117  s = "OK";
118  break;
119  case INVALID_OPCODE:
120  s = "INVALID_OPCODE";
121  break;
122  case VALIDATION_ERROR:
123  s = "VALIDATION_ERROR";
124  break;
125  case FORMAT_ERROR:
126  s = "FORMAT_ERROR";
127  break;
128  case EXECUTION_ERROR:
129  s = "EXECUTION_ERROR";
130  break;
131  case BUSY:
132  s = "BUSY";
133  break;
134  case CLEARED:
135  s = "CLEARED";
136  break;
138  s = "DISPATCHED_UNTRACKED";
139  break;
140  default:
141  s = "[invalid]";
142  break;
143  }
144  sb.format("%s (%" PRIu8 ")", s.toChar(), e);
145  }
146 
147 #endif
148 
149 #ifdef BUILD_UT
150 
151  void CmdResponse ::
152  setSerializeValue(SerialType serializeValue)
153  {
154  this->m_serializeValue = serializeValue;
155  this->m_serializeValueIsSet = true;
156  }
157 
158 #endif
159 
160  // ----------------------------------------------------------------------
161  // Static functions
162  // ----------------------------------------------------------------------
163 
164  bool CmdResponse ::
165  isValid(SerialType serialTypeValue)
166  {
167  return (serialTypeValue <= DISPATCHED_UNTRACKED);
168  }
169 
170 }
Serialization/Deserialization operation was successful.
Invalid opcode dispatched.
enum T e
The raw enum value.
Deserialization data had incorrect values (unexpected data types)
Enum representing a command response.
virtual SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG)=0
Serialize an 8-bit unsigned integer value.
bool isValid() const
Check raw enum value for validity.
Command tracking was cleared before the command completed.
SerializeStatus
forward declaration for string
virtual SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG)=0
Deserialize an 8-bit unsigned integer value.
CmdResponse & operator=(const CmdResponse &obj)
Copy assignment operator (object)
Fw::SerializeStatus deserializeFrom(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG)
Deserialize raw enum value from SerialType.
T
The raw enum type.
const char * toChar() const
Convert to a C-style char*.
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
Definition: StringBase.cpp:58
Command successfully executed.
Command failed to deserialize.
Command had execution error.
U8 SerialType
The serial representation type.
Command failed validation.
Command was dispatched but the response tracking failed, indicating unknown state.
Implementation of malloc based allocator.
Endianness
#define FW_ASSERT(...)
Definition: Assert.hpp:14
Fw::SerializeStatus serializeTo(Fw::SerialBufferBase &buffer, Fw::Endianness mode=Fw::Endianness::BIG) const
Serialize raw enum value to SerialType.
ComCfg::Apid::SerialType SerialType
Definition: TestUtils.cpp:14