F´ Flight Software - C/C++ Documentation  devel
A framework for building embedded system applications to NASA flight quality standards.
CmdPortAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title CmdPortAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for Cmd port
5 // ======================================================================
6 
8 #include "Fw/Types/Assert.hpp"
10 
11 namespace Fw {
12 
13  namespace {
14 
15  // ----------------------------------------------------------------------
16  // Port buffer class
17  // ----------------------------------------------------------------------
18 
19  class CmdPortBuffer : public Fw::SerializeBufferBase {
20 
21  public:
22 
23  Fw::Serializable::SizeType getBuffCapacity() const {
25  }
26 
27  U8* getBuffAddr() {
28  return m_buff;
29  }
30 
31  const U8* getBuffAddr() const {
32  return m_buff;
33  }
34 
35  private:
36 
38 
39  };
40 
41  }
42 
43  // ----------------------------------------------------------------------
44  // Input Port Member functions
45  // ----------------------------------------------------------------------
46 
48  InputCmdPort() :
49  Fw::InputPortBase(),
50  m_func(nullptr)
51  {
52 
53  }
54 
56  init()
57  {
59  }
60 
63  Fw::PassiveComponentBase* callComp,
64  CompFuncPtr funcPtr
65  )
66  {
67  FW_ASSERT(callComp != nullptr);
68  FW_ASSERT(funcPtr != nullptr);
69 
70  this->m_comp = callComp;
71  this->m_func = funcPtr;
72  this->m_connObj = callComp;
73  }
74 
76  invoke(
77  FwOpcodeType opCode,
78  U32 cmdSeq,
79  Fw::CmdArgBuffer& args
80  )
81  {
82 #if FW_PORT_TRACING == 1
83  this->trace();
84 #endif
85 
86  FW_ASSERT(this->m_comp != nullptr);
87  FW_ASSERT(this->m_func != nullptr);
88 
89  return this->m_func(this->m_comp, this->m_portNum, opCode, cmdSeq, args);
90  }
91 
92 #if FW_PORT_SERIALIZATION == 1
93 
94  Fw::SerializeStatus InputCmdPort ::
95  invokeSerial(Fw::SerializeBufferBase& _buffer)
96  {
97  Fw::SerializeStatus _status;
98 
99 #if FW_PORT_TRACING == 1
100  this->trace();
101 #endif
102 
103  FW_ASSERT(this->m_comp != nullptr);
104  FW_ASSERT(this->m_func != nullptr);
105 
106  FwOpcodeType opCode;
107  _status = _buffer.deserialize(opCode);
108  if (_status != Fw::FW_SERIALIZE_OK) {
109  return _status;
110  }
111 
112  U32 cmdSeq;
113  _status = _buffer.deserialize(cmdSeq);
114  if (_status != Fw::FW_SERIALIZE_OK) {
115  return _status;
116  }
117 
118  Fw::CmdArgBuffer args;
119  _status = _buffer.deserialize(args);
120  if (_status != Fw::FW_SERIALIZE_OK) {
121  return _status;
122  }
123 
124  this->m_func(this->m_comp, this->m_portNum, opCode, cmdSeq, args);
125 
126  return Fw::FW_SERIALIZE_OK;
127  }
128 
129 #endif
130 
131  // ----------------------------------------------------------------------
132  // Output Port Member functions
133  // ----------------------------------------------------------------------
134 
136  OutputCmdPort() :
137  Fw::OutputPortBase(),
138  m_port(nullptr)
139  {
140 
141  }
142 
144  init()
145  {
147  }
148 
150  addCallPort(InputCmdPort* callPort)
151  {
152  FW_ASSERT(callPort != nullptr);
153 
154  this->m_port = callPort;
155  this->m_connObj = callPort;
156 
157 #if FW_PORT_SERIALIZATION == 1
158  this->m_serPort = nullptr;
159 #endif
160  }
161 
163  invoke(
164  FwOpcodeType opCode,
165  U32 cmdSeq,
166  Fw::CmdArgBuffer& args
167  )
168  {
169 #if FW_PORT_TRACING == 1
170  this->trace();
171 #endif
172 
173 #if FW_PORT_SERIALIZATION
174  FW_ASSERT((this->m_port != nullptr) || (this->m_serPort != nullptr));
175 
176  if (this->m_port != nullptr) {
177  this->m_port->invoke(opCode, cmdSeq, args);
178  }
179  else {
180  Fw::SerializeStatus _status;
181  CmdPortBuffer _buffer;
182 
183  _status = _buffer.serialize(opCode);
184  FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
185 
186  _status = _buffer.serialize(cmdSeq);
187  FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
188 
189  _status = _buffer.serialize(args);
190  FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
191 
192  _status = this->m_serPort->invokeSerial(_buffer);
193  FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
194  }
195 #else
196  FW_ASSERT(this->m_port != nullptr);
197  this->m_port->invoke(opCode, cmdSeq, args);
198 #endif
199  }
200 
201 }
#define FW_ASSERT(...)
Definition: Assert.hpp:14
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:26
PlatformAssertArgType FwAssertArgType
Definition: FpConfig.h:34
U32 FwOpcodeType
Definition: FpConfig.h:78
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: CmdPortAc.cpp:62
@ SERIALIZED_SIZE
The size of the serial representations of the port arguments.
Definition: CmdPortAc.hpp:37
void init()
Initialization function.
Definition: CmdPortAc.cpp:56
InputCmdPort()
Constructor.
Definition: CmdPortAc.cpp:48
void invoke(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Invoke a port interface.
Definition: CmdPortAc.cpp:76
NATIVE_INT_TYPE m_portNum
virtual void init()
PassiveComponentBase * m_comp
void addCallPort(InputCmdPort *callPort)
Register an input port.
Definition: CmdPortAc.cpp:150
void invoke(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Invoke a port interface.
Definition: CmdPortAc.cpp:163
void init()
Initialization function.
Definition: CmdPortAc.cpp:144
OutputCmdPort()
Constructor.
Definition: CmdPortAc.cpp:136
virtual void init()
Fw::ObjBase * m_connObj
Definition: PortBase.hpp:33
NATIVE_UINT_TYPE SizeType
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.