F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
DpSendPortAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title DpSendPortAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for DpSend port
5 // ======================================================================
6 
7 #include "Fw/Dp/DpSendPortAc.hpp"
8 #include "Fw/Types/Assert.hpp"
10 
11 namespace Fw {
12 
13  namespace {
14 
15  // ----------------------------------------------------------------------
16  // Port buffer class
17  // ----------------------------------------------------------------------
18 
19  class DpSendPortBuffer : 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 
49  Fw::InputPortBase(),
50  m_func(nullptr)
51  {
52 
53  }
54 
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 
77  FwDpIdType id,
78  const Fw::Buffer& buffer
79  )
80  {
81 #if FW_PORT_TRACING == 1
82  this->trace();
83 #endif
84 
85  FW_ASSERT(this->m_comp != nullptr);
86  FW_ASSERT(this->m_func != nullptr);
87 
88  return this->m_func(this->m_comp, this->m_portNum, id, buffer);
89  }
90 
91 #if FW_PORT_SERIALIZATION == 1
92 
93  Fw::SerializeStatus InputDpSendPort ::
94  invokeSerial(Fw::SerializeBufferBase& _buffer)
95  {
96  Fw::SerializeStatus _status;
97 
98 #if FW_PORT_TRACING == 1
99  this->trace();
100 #endif
101 
102  FW_ASSERT(this->m_comp != nullptr);
103  FW_ASSERT(this->m_func != nullptr);
104 
105  FwDpIdType id;
106  _status = _buffer.deserialize(id);
107  if (_status != Fw::FW_SERIALIZE_OK) {
108  return _status;
109  }
110 
111  Fw::Buffer buffer;
112  _status = _buffer.deserialize(buffer);
113  if (_status != Fw::FW_SERIALIZE_OK) {
114  return _status;
115  }
116 
117  this->m_func(this->m_comp, this->m_portNum, id, buffer);
118 
119  return Fw::FW_SERIALIZE_OK;
120  }
121 
122 #endif
123 
124  // ----------------------------------------------------------------------
125  // Output Port Member functions
126  // ----------------------------------------------------------------------
127 
130  Fw::OutputPortBase(),
131  m_port(nullptr)
132  {
133 
134  }
135 
138  {
140  }
141 
144  {
145  FW_ASSERT(callPort != nullptr);
146 
147  this->m_port = callPort;
148  this->m_connObj = callPort;
149 
150 #if FW_PORT_SERIALIZATION == 1
151  this->m_serPort = nullptr;
152 #endif
153  }
154 
157  FwDpIdType id,
158  const Fw::Buffer& buffer
159  ) const
160  {
161 #if FW_PORT_TRACING == 1
162  this->trace();
163 #endif
164 
165 #if FW_PORT_SERIALIZATION
166  FW_ASSERT((this->m_port != nullptr) || (this->m_serPort != nullptr));
167 
168  if (this->m_port != nullptr) {
169  this->m_port->invoke(id, buffer);
170  }
171  else {
172  Fw::SerializeStatus _status;
173  DpSendPortBuffer _buffer;
174 
175  _status = _buffer.serialize(id);
176  FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
177 
178  _status = _buffer.serialize(buffer);
179  FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
180 
181  _status = this->m_serPort->invokeSerial(_buffer);
182  FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
183  }
184 #else
185  FW_ASSERT(this->m_port != nullptr);
186  this->m_port->invoke(id, buffer);
187 #endif
188  }
189 
190 }
Serialization/Deserialization operation was successful.
void init()
Initialization function.
FwIndexType m_portNum
void addCallPort(InputDpSendPort *callPort)
Register an input port.
void init()
Initialization function.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
U32 FwDpIdType
The type of a data product identifier.
InputDpSendPort()
Constructor.
OutputDpSendPort()
Constructor.
SerializeStatus
forward declaration for string
The size of the serial representations of the port arguments.
void init() override
FwSizeType SizeType
void invoke(FwDpIdType id, const Fw::Buffer &buffer)
Invoke a port interface.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:56
PassiveComponentBase * m_comp
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
void init() override
Fw::ObjBase * m_connObj
Definition: PortBase.hpp:33
void invoke(FwDpIdType id, const Fw::Buffer &buffer) const
Invoke a port interface.
#define FW_ASSERT(...)
Definition: Assert.hpp:14