F´ Flight Software - C/C++ Documentation  devel
A framework for building embedded system applications to NASA flight quality standards.
ComStubComponentAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title ComStubComponentAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for ComStub component base class
5 // ======================================================================
6 
7 #include <cstdio>
8 
10 #include "Fw/Types/Assert.hpp"
11 #if FW_ENABLE_TEXT_LOGGING
12 #include "Fw/Types/String.hpp"
13 #endif
14 
15 namespace Svc {
16 
17  // ----------------------------------------------------------------------
18  // Component initialization
19  // ----------------------------------------------------------------------
20 
22  init(NATIVE_INT_TYPE instance)
23  {
24  // Initialize base class
26 
27  // Connect input port comDataIn
28  for (
29  PlatformIntType port = 0;
30  port < static_cast<PlatformIntType>(this->getNum_comDataIn_InputPorts());
31  port++
32  ) {
33  this->m_comDataIn_InputPort[port].init();
34  this->m_comDataIn_InputPort[port].addCallComp(
35  this,
36  m_p_comDataIn_in
37  );
38  this->m_comDataIn_InputPort[port].setPortNum(port);
39 
40 #if FW_OBJECT_NAMES == 1
41  // The port name consists of this->m_objName and some extra info.
42  // We expect all of this to fit in FW_OBJ_NAME_MAX_SIZE bytes.
43  // However, the compiler may assume that this->m_objName fills
44  // the entire array, whose size is FW_OBJ_NAME_MAX_SIZE. So to
45  // avoid a compiler warning, we provide an extra FW_OBJ_NAME_MAX_SIZE
46  // bytes to cover the extra info.
47  char portName[2*FW_OBJ_NAME_MAX_SIZE];
48  (void) snprintf(
49  portName,
50  sizeof(portName),
51  "%s_comDataIn_InputPort[%" PRI_PlatformIntType "]",
52  this->m_objName,
53  port
54  );
55  this->m_comDataIn_InputPort[port].setObjName(portName);
56 #endif
57  }
58 
59  // Connect input port drvConnected
60  for (
61  PlatformIntType port = 0;
62  port < static_cast<PlatformIntType>(this->getNum_drvConnected_InputPorts());
63  port++
64  ) {
65  this->m_drvConnected_InputPort[port].init();
66  this->m_drvConnected_InputPort[port].addCallComp(
67  this,
68  m_p_drvConnected_in
69  );
70  this->m_drvConnected_InputPort[port].setPortNum(port);
71 
72 #if FW_OBJECT_NAMES == 1
73  // The port name consists of this->m_objName and some extra info.
74  // We expect all of this to fit in FW_OBJ_NAME_MAX_SIZE bytes.
75  // However, the compiler may assume that this->m_objName fills
76  // the entire array, whose size is FW_OBJ_NAME_MAX_SIZE. So to
77  // avoid a compiler warning, we provide an extra FW_OBJ_NAME_MAX_SIZE
78  // bytes to cover the extra info.
79  char portName[2*FW_OBJ_NAME_MAX_SIZE];
80  (void) snprintf(
81  portName,
82  sizeof(portName),
83  "%s_drvConnected_InputPort[%" PRI_PlatformIntType "]",
84  this->m_objName,
85  port
86  );
87  this->m_drvConnected_InputPort[port].setObjName(portName);
88 #endif
89  }
90 
91  // Connect input port drvDataIn
92  for (
93  PlatformIntType port = 0;
94  port < static_cast<PlatformIntType>(this->getNum_drvDataIn_InputPorts());
95  port++
96  ) {
97  this->m_drvDataIn_InputPort[port].init();
98  this->m_drvDataIn_InputPort[port].addCallComp(
99  this,
100  m_p_drvDataIn_in
101  );
102  this->m_drvDataIn_InputPort[port].setPortNum(port);
103 
104 #if FW_OBJECT_NAMES == 1
105  // The port name consists of this->m_objName and some extra info.
106  // We expect all of this to fit in FW_OBJ_NAME_MAX_SIZE bytes.
107  // However, the compiler may assume that this->m_objName fills
108  // the entire array, whose size is FW_OBJ_NAME_MAX_SIZE. So to
109  // avoid a compiler warning, we provide an extra FW_OBJ_NAME_MAX_SIZE
110  // bytes to cover the extra info.
111  char portName[2*FW_OBJ_NAME_MAX_SIZE];
112  (void) snprintf(
113  portName,
114  sizeof(portName),
115  "%s_drvDataIn_InputPort[%" PRI_PlatformIntType "]",
116  this->m_objName,
117  port
118  );
119  this->m_drvDataIn_InputPort[port].setObjName(portName);
120 #endif
121  }
122 
123  // Connect output port comDataOut
124  for (
125  PlatformIntType port = 0;
126  port < static_cast<PlatformIntType>(this->getNum_comDataOut_OutputPorts());
127  port++
128  ) {
129  this->m_comDataOut_OutputPort[port].init();
130 
131 #if FW_OBJECT_NAMES == 1
132  // The port name consists of this->m_objName and some extra info.
133  // We expect all of this to fit in FW_OBJ_NAME_MAX_SIZE bytes.
134  // However, the compiler may assume that this->m_objName fills
135  // the entire array, whose size is FW_OBJ_NAME_MAX_SIZE. So to
136  // avoid a compiler warning, we provide an extra FW_OBJ_NAME_MAX_SIZE
137  // bytes to cover the extra info.
138  char portName[2*FW_OBJ_NAME_MAX_SIZE];
139  (void) snprintf(
140  portName,
141  sizeof(portName),
142  "%s_comDataOut_OutputPort[%" PRI_PlatformIntType "]",
143  this->m_objName,
144  port
145  );
146  this->m_comDataOut_OutputPort[port].setObjName(portName);
147 #endif
148  }
149 
150  // Connect output port comStatus
151  for (
152  PlatformIntType port = 0;
153  port < static_cast<PlatformIntType>(this->getNum_comStatus_OutputPorts());
154  port++
155  ) {
156  this->m_comStatus_OutputPort[port].init();
157 
158 #if FW_OBJECT_NAMES == 1
159  // The port name consists of this->m_objName and some extra info.
160  // We expect all of this to fit in FW_OBJ_NAME_MAX_SIZE bytes.
161  // However, the compiler may assume that this->m_objName fills
162  // the entire array, whose size is FW_OBJ_NAME_MAX_SIZE. So to
163  // avoid a compiler warning, we provide an extra FW_OBJ_NAME_MAX_SIZE
164  // bytes to cover the extra info.
165  char portName[2*FW_OBJ_NAME_MAX_SIZE];
166  (void) snprintf(
167  portName,
168  sizeof(portName),
169  "%s_comStatus_OutputPort[%" PRI_PlatformIntType "]",
170  this->m_objName,
171  port
172  );
173  this->m_comStatus_OutputPort[port].setObjName(portName);
174 #endif
175  }
176 
177  // Connect output port drvDataOut
178  for (
179  PlatformIntType port = 0;
180  port < static_cast<PlatformIntType>(this->getNum_drvDataOut_OutputPorts());
181  port++
182  ) {
183  this->m_drvDataOut_OutputPort[port].init();
184 
185 #if FW_OBJECT_NAMES == 1
186  // The port name consists of this->m_objName and some extra info.
187  // We expect all of this to fit in FW_OBJ_NAME_MAX_SIZE bytes.
188  // However, the compiler may assume that this->m_objName fills
189  // the entire array, whose size is FW_OBJ_NAME_MAX_SIZE. So to
190  // avoid a compiler warning, we provide an extra FW_OBJ_NAME_MAX_SIZE
191  // bytes to cover the extra info.
192  char portName[2*FW_OBJ_NAME_MAX_SIZE];
193  (void) snprintf(
194  portName,
195  sizeof(portName),
196  "%s_drvDataOut_OutputPort[%" PRI_PlatformIntType "]",
197  this->m_objName,
198  port
199  );
200  this->m_drvDataOut_OutputPort[port].setObjName(portName);
201 #endif
202  }
203  }
204 
205  // ----------------------------------------------------------------------
206  // Getters for typed input ports
207  // ----------------------------------------------------------------------
208 
211  {
212  FW_ASSERT(
213  portNum < this->getNum_comDataIn_InputPorts(),
214  static_cast<FwAssertArgType>(portNum)
215  );
216 
217  return &this->m_comDataIn_InputPort[portNum];
218  }
219 
222  {
223  FW_ASSERT(
224  portNum < this->getNum_drvConnected_InputPorts(),
225  static_cast<FwAssertArgType>(portNum)
226  );
227 
228  return &this->m_drvConnected_InputPort[portNum];
229  }
230 
233  {
234  FW_ASSERT(
235  portNum < this->getNum_drvDataIn_InputPorts(),
236  static_cast<FwAssertArgType>(portNum)
237  );
238 
239  return &this->m_drvDataIn_InputPort[portNum];
240  }
241 
242  // ----------------------------------------------------------------------
243  // Connect typed input ports to typed output ports
244  // ----------------------------------------------------------------------
245 
248  NATIVE_INT_TYPE portNum,
250  )
251  {
252  FW_ASSERT(
253  portNum < this->getNum_comDataOut_OutputPorts(),
254  static_cast<FwAssertArgType>(portNum)
255  );
256 
257  this->m_comDataOut_OutputPort[portNum].addCallPort(port);
258  }
259 
262  NATIVE_INT_TYPE portNum,
264  )
265  {
266  FW_ASSERT(
267  portNum < this->getNum_comStatus_OutputPorts(),
268  static_cast<FwAssertArgType>(portNum)
269  );
270 
271  this->m_comStatus_OutputPort[portNum].addCallPort(port);
272  }
273 
276  NATIVE_INT_TYPE portNum,
278  )
279  {
280  FW_ASSERT(
281  portNum < this->getNum_drvDataOut_OutputPorts(),
282  static_cast<FwAssertArgType>(portNum)
283  );
284 
285  this->m_drvDataOut_OutputPort[portNum].addCallPort(port);
286  }
287 
288 #if FW_PORT_SERIALIZATION
289 
290  // ----------------------------------------------------------------------
291  // Connect serial input ports to typed output ports
292  // ----------------------------------------------------------------------
293 
296  NATIVE_INT_TYPE portNum,
297  Fw::InputSerializePort* port
298  )
299  {
300  FW_ASSERT(
301  portNum < this->getNum_comDataOut_OutputPorts(),
302  static_cast<FwAssertArgType>(portNum)
303  );
304 
305  this->m_comDataOut_OutputPort[portNum].registerSerialPort(port);
306  }
307 
310  NATIVE_INT_TYPE portNum,
311  Fw::InputSerializePort* port
312  )
313  {
314  FW_ASSERT(
315  portNum < this->getNum_comStatus_OutputPorts(),
316  static_cast<FwAssertArgType>(portNum)
317  );
318 
319  this->m_comStatus_OutputPort[portNum].registerSerialPort(port);
320  }
321 
322 #endif
323 
324  // ----------------------------------------------------------------------
325  // Component construction and destruction
326  // ----------------------------------------------------------------------
327 
329  ComStubComponentBase(const char* compName) :
330  Fw::PassiveComponentBase(compName)
331  {
332 
333  }
334 
337  {
338 
339  }
340 
341  // ----------------------------------------------------------------------
342  // Getters for numbers of typed input ports
343  // ----------------------------------------------------------------------
344 
347  {
348  return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_comDataIn_InputPort));
349  }
350 
353  {
354  return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_drvConnected_InputPort));
355  }
356 
359  {
360  return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_drvDataIn_InputPort));
361  }
362 
363  // ----------------------------------------------------------------------
364  // Getters for numbers of typed output ports
365  // ----------------------------------------------------------------------
366 
369  {
370  return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_comDataOut_OutputPort));
371  }
372 
375  {
376  return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_comStatus_OutputPort));
377  }
378 
381  {
382  return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_drvDataOut_OutputPort));
383  }
384 
385  // ----------------------------------------------------------------------
386  // Connection status queries for typed output ports
387  // ----------------------------------------------------------------------
388 
391  {
392  FW_ASSERT(
393  portNum < this->getNum_comDataOut_OutputPorts(),
394  static_cast<FwAssertArgType>(portNum)
395  );
396 
397  return this->m_comDataOut_OutputPort[portNum].isConnected();
398  }
399 
402  {
403  FW_ASSERT(
404  portNum < this->getNum_comStatus_OutputPorts(),
405  static_cast<FwAssertArgType>(portNum)
406  );
407 
408  return this->m_comStatus_OutputPort[portNum].isConnected();
409  }
410 
413  {
414  FW_ASSERT(
415  portNum < this->getNum_drvDataOut_OutputPorts(),
416  static_cast<FwAssertArgType>(portNum)
417  );
418 
419  return this->m_drvDataOut_OutputPort[portNum].isConnected();
420  }
421 
422  // ----------------------------------------------------------------------
423  // Port handler base-class functions for typed input ports
424  //
425  // Call these functions directly to bypass the corresponding ports
426  // ----------------------------------------------------------------------
427 
430  NATIVE_INT_TYPE portNum,
431  Fw::Buffer& sendBuffer
432  )
433  {
434  // Make sure port number is valid
435  FW_ASSERT(
436  portNum < this->getNum_comDataIn_InputPorts(),
437  static_cast<FwAssertArgType>(portNum)
438  );
439 
440  Drv::SendStatus retVal;
441 
442  // Call handler function
443  retVal = this->comDataIn_handler(
444  portNum,
445  sendBuffer
446  );
447 
448  return retVal;
449  }
450 
453  {
454  // Make sure port number is valid
455  FW_ASSERT(
456  portNum < this->getNum_drvConnected_InputPorts(),
457  static_cast<FwAssertArgType>(portNum)
458  );
459 
460  // Call handler function
461  this->drvConnected_handler(portNum);
462  }
463 
466  NATIVE_INT_TYPE portNum,
467  Fw::Buffer& recvBuffer,
468  const Drv::RecvStatus& recvStatus
469  )
470  {
471  // Make sure port number is valid
472  FW_ASSERT(
473  portNum < this->getNum_drvDataIn_InputPorts(),
474  static_cast<FwAssertArgType>(portNum)
475  );
476 
477  // Call handler function
478  this->drvDataIn_handler(
479  portNum,
480  recvBuffer,
481  recvStatus
482  );
483  }
484 
485  // ----------------------------------------------------------------------
486  // Invocation functions for typed output ports
487  // ----------------------------------------------------------------------
488 
491  NATIVE_INT_TYPE portNum,
492  Fw::Buffer& recvBuffer,
493  const Drv::RecvStatus& recvStatus
494  )
495  {
496  FW_ASSERT(
497  portNum < this->getNum_comDataOut_OutputPorts(),
498  static_cast<FwAssertArgType>(portNum)
499  );
500  this->m_comDataOut_OutputPort[portNum].invoke(
501  recvBuffer,
502  recvStatus
503  );
504  }
505 
508  NATIVE_INT_TYPE portNum,
509  Fw::Success& condition
510  )
511  {
512  FW_ASSERT(
513  portNum < this->getNum_comStatus_OutputPorts(),
514  static_cast<FwAssertArgType>(portNum)
515  );
516  this->m_comStatus_OutputPort[portNum].invoke(
517  condition
518  );
519  }
520 
523  NATIVE_INT_TYPE portNum,
524  Fw::Buffer& sendBuffer
525  )
526  {
527  FW_ASSERT(
528  portNum < this->getNum_drvDataOut_OutputPorts(),
529  static_cast<FwAssertArgType>(portNum)
530  );
531  return this->m_drvDataOut_OutputPort[portNum].invoke(
532  sendBuffer
533  );
534  }
535 
536  // ----------------------------------------------------------------------
537  // Calls for messages received on typed input ports
538  // ----------------------------------------------------------------------
539 
540  Drv::SendStatus ComStubComponentBase ::
541  m_p_comDataIn_in(
542  Fw::PassiveComponentBase* callComp,
543  NATIVE_INT_TYPE portNum,
544  Fw::Buffer& sendBuffer
545  )
546  {
547  FW_ASSERT(callComp);
548  ComStubComponentBase* compPtr = static_cast<ComStubComponentBase*>(callComp);
549  return compPtr->comDataIn_handlerBase(
550  portNum,
551  sendBuffer
552  );
553  }
554 
555  void ComStubComponentBase ::
556  m_p_drvConnected_in(
557  Fw::PassiveComponentBase* callComp,
558  NATIVE_INT_TYPE portNum
559  )
560  {
561  FW_ASSERT(callComp);
562  ComStubComponentBase* compPtr = static_cast<ComStubComponentBase*>(callComp);
563  compPtr->drvConnected_handlerBase(portNum);
564  }
565 
566  void ComStubComponentBase ::
567  m_p_drvDataIn_in(
568  Fw::PassiveComponentBase* callComp,
569  NATIVE_INT_TYPE portNum,
570  Fw::Buffer& recvBuffer,
571  const Drv::RecvStatus& recvStatus
572  )
573  {
574  FW_ASSERT(callComp);
575  ComStubComponentBase* compPtr = static_cast<ComStubComponentBase*>(callComp);
576  compPtr->drvDataIn_handlerBase(
577  portNum,
578  recvBuffer,
579  recvStatus
580  );
581  }
582 
583 }
#define FW_ASSERT(...)
Definition: Assert.hpp:14
PlatformIntType NATIVE_INT_TYPE
Definition: BasicTypes.h:51
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
Definition: BasicTypes.h:66
int PlatformIntType
DefaultTypes.hpp provides fallback defaults for the platform types.
#define PRI_PlatformIntType
PlatformAssertArgType FwAssertArgType
Definition: FpConfig.h:21
#define FW_OBJ_NAME_MAX_SIZE
Size of object name (if object names enabled). AC Limits to 80, truncation occurs above 80.
Definition: FpConfig.h:184
void init()
Initialization function.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void init()
Initialization function.
void init()
Initialization function.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void init()
Initialization function.
void addCallPort(InputByteStreamRecvPort *callPort)
Register an input port.
void invoke(Fw::Buffer &recvBuffer, const Drv::RecvStatus &recvStatus)
Invoke a port interface.
void init()
Initialization function.
Drv::SendStatus invoke(Fw::Buffer &sendBuffer)
Invoke a port interface.
void addCallPort(InputByteStreamSendPort *callPort)
Register an input port.
Status associated with the received data.
Status returned by the send call.
void setPortNum(NATIVE_INT_TYPE portNum)
void init()
Object initializer.
Definition: ObjBase.cpp:27
void invoke(Fw::Success &condition)
Invoke a port interface.
void init()
Initialization function.
void addCallPort(InputSuccessConditionPort *callPort)
Register an input port.
bool isConnected()
Definition: PortBase.cpp:41
Success/Failure.
Auto-generated base for ComStub component.
NATIVE_INT_TYPE getNum_drvDataIn_InputPorts() const
Drv::SendStatus comDataIn_handlerBase(NATIVE_INT_TYPE portNum, Fw::Buffer &sendBuffer)
Handler base-class function for input port comDataIn.
void set_comStatus_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputSuccessConditionPort *port)
Connect port to comStatus[portNum].
NATIVE_INT_TYPE getNum_comDataIn_InputPorts() const
virtual void drvDataIn_handler(NATIVE_INT_TYPE portNum, Fw::Buffer &recvBuffer, const Drv::RecvStatus &recvStatus)=0
Handler for input port drvDataIn.
Drv::SendStatus drvDataOut_out(NATIVE_INT_TYPE portNum, Fw::Buffer &sendBuffer)
Invoke output port drvDataOut.
virtual Drv::SendStatus comDataIn_handler(NATIVE_INT_TYPE portNum, Fw::Buffer &sendBuffer)=0
Handler for input port comDataIn.
NATIVE_INT_TYPE getNum_drvConnected_InputPorts() const
virtual void drvConnected_handler(NATIVE_INT_TYPE portNum)=0
Handler for input port drvConnected.
virtual ~ComStubComponentBase()
Destroy ComStubComponentBase object.
void set_comDataOut_OutputPort(NATIVE_INT_TYPE portNum, Drv::InputByteStreamRecvPort *port)
Connect port to comDataOut[portNum].
Drv::InputByteStreamRecvPort * get_drvDataIn_InputPort(NATIVE_INT_TYPE portNum)
ComStubComponentBase(const char *compName="")
Construct ComStubComponentBase object.
bool isConnected_drvDataOut_OutputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_comDataOut_OutputPorts() const
NATIVE_INT_TYPE getNum_drvDataOut_OutputPorts() const
void comStatus_out(NATIVE_INT_TYPE portNum, Fw::Success &condition)
Invoke output port comStatus.
void drvConnected_handlerBase(NATIVE_INT_TYPE portNum)
Handler base-class function for input port drvConnected.
void comDataOut_out(NATIVE_INT_TYPE portNum, Fw::Buffer &recvBuffer, const Drv::RecvStatus &recvStatus)
Invoke output port comDataOut.
void drvDataIn_handlerBase(NATIVE_INT_TYPE portNum, Fw::Buffer &recvBuffer, const Drv::RecvStatus &recvStatus)
Handler base-class function for input port drvDataIn.
void set_drvDataOut_OutputPort(NATIVE_INT_TYPE portNum, Drv::InputByteStreamSendPort *port)
Connect port to drvDataOut[portNum].
Drv::InputByteStreamSendPort * get_comDataIn_InputPort(NATIVE_INT_TYPE portNum)
Drv::InputByteStreamReadyPort * get_drvConnected_InputPort(NATIVE_INT_TYPE portNum)
bool isConnected_comDataOut_OutputPort(NATIVE_INT_TYPE portNum)
bool isConnected_comStatus_OutputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_comStatus_OutputPorts() const