F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
CmdSplitterComponentAc.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title CmdSplitterComponentAc.cpp
3// \author Generated by fpp-to-cpp
4// \brief cpp file for CmdSplitter component base class
5// ======================================================================
6
8#include "Fw/Types/Assert.hpp"
10#if FW_ENABLE_TEXT_LOGGING
11#include "Fw/Types/String.hpp"
12#endif
13
14namespace Svc {
15
16 // ----------------------------------------------------------------------
17 // Component initialization
18 // ----------------------------------------------------------------------
19
20 void CmdSplitterComponentBase ::
21 init(FwEnumStoreType instance)
22 {
23 // Initialize base class
25
26 // Connect input port CmdBuff
27 for (
28 FwIndexType port = 0;
29 port < static_cast<FwIndexType>(this->getNum_CmdBuff_InputPorts());
30 port++
31 ) {
32 this->m_CmdBuff_InputPort[port].init();
33 this->m_CmdBuff_InputPort[port].addCallComp(
34 this,
35 m_p_CmdBuff_in
36 );
37 this->m_CmdBuff_InputPort[port].setPortNum(port);
38
39#if FW_OBJECT_NAMES == 1
40 Fw::ObjectName portName;
41 portName.format(
42 "%s_CmdBuff_InputPort[%" PRI_PlatformIntType "]",
43 this->m_objName.toChar(),
44 port
45 );
46 this->m_CmdBuff_InputPort[port].setObjName(portName.toChar());
47#endif
48 }
49
50 // Connect input port seqCmdStatus
51 for (
52 FwIndexType port = 0;
53 port < static_cast<FwIndexType>(this->getNum_seqCmdStatus_InputPorts());
54 port++
55 ) {
56 this->m_seqCmdStatus_InputPort[port].init();
57 this->m_seqCmdStatus_InputPort[port].addCallComp(
58 this,
59 m_p_seqCmdStatus_in
60 );
61 this->m_seqCmdStatus_InputPort[port].setPortNum(port);
62
63#if FW_OBJECT_NAMES == 1
64 Fw::ObjectName portName;
65 portName.format(
66 "%s_seqCmdStatus_InputPort[%" PRI_PlatformIntType "]",
67 this->m_objName.toChar(),
68 port
69 );
70 this->m_seqCmdStatus_InputPort[port].setObjName(portName.toChar());
71#endif
72 }
73
74 // Connect output port LocalCmd
75 for (
76 FwIndexType port = 0;
77 port < static_cast<FwIndexType>(this->getNum_LocalCmd_OutputPorts());
78 port++
79 ) {
80 this->m_LocalCmd_OutputPort[port].init();
81
82#if FW_OBJECT_NAMES == 1
83 Fw::ObjectName portName;
84 portName.format(
85 "%s_LocalCmd_OutputPort[%" PRI_PlatformIntType "]",
86 this->m_objName.toChar(),
87 port
88 );
89 this->m_LocalCmd_OutputPort[port].setObjName(portName.toChar());
90#endif
91 }
92
93 // Connect output port RemoteCmd
94 for (
95 FwIndexType port = 0;
96 port < static_cast<FwIndexType>(this->getNum_RemoteCmd_OutputPorts());
97 port++
98 ) {
99 this->m_RemoteCmd_OutputPort[port].init();
100
101#if FW_OBJECT_NAMES == 1
102 Fw::ObjectName portName;
103 portName.format(
104 "%s_RemoteCmd_OutputPort[%" PRI_PlatformIntType "]",
105 this->m_objName.toChar(),
106 port
107 );
108 this->m_RemoteCmd_OutputPort[port].setObjName(portName.toChar());
109#endif
110 }
111
112 // Connect output port forwardSeqCmdStatus
113 for (
114 FwIndexType port = 0;
115 port < static_cast<FwIndexType>(this->getNum_forwardSeqCmdStatus_OutputPorts());
116 port++
117 ) {
118 this->m_forwardSeqCmdStatus_OutputPort[port].init();
119
120#if FW_OBJECT_NAMES == 1
121 Fw::ObjectName portName;
122 portName.format(
123 "%s_forwardSeqCmdStatus_OutputPort[%" PRI_PlatformIntType "]",
124 this->m_objName.toChar(),
125 port
126 );
127 this->m_forwardSeqCmdStatus_OutputPort[port].setObjName(portName.toChar());
128#endif
129 }
130 }
131
132 // ----------------------------------------------------------------------
133 // Getters for typed input ports
134 // ----------------------------------------------------------------------
135
136 Fw::InputComPort* CmdSplitterComponentBase ::
137 get_CmdBuff_InputPort(FwIndexType portNum)
138 {
139 FW_ASSERT(
140 portNum < this->getNum_CmdBuff_InputPorts(),
141 static_cast<FwAssertArgType>(portNum)
142 );
143
144 return &this->m_CmdBuff_InputPort[portNum];
145 }
146
147 Fw::InputCmdResponsePort* CmdSplitterComponentBase ::
148 get_seqCmdStatus_InputPort(FwIndexType portNum)
149 {
150 FW_ASSERT(
151 portNum < this->getNum_seqCmdStatus_InputPorts(),
152 static_cast<FwAssertArgType>(portNum)
153 );
154
155 return &this->m_seqCmdStatus_InputPort[portNum];
156 }
157
158 // ----------------------------------------------------------------------
159 // Connect typed input ports to typed output ports
160 // ----------------------------------------------------------------------
161
162 void CmdSplitterComponentBase ::
163 set_LocalCmd_OutputPort(
164 FwIndexType portNum,
165 Fw::InputComPort* port
166 )
167 {
168 FW_ASSERT(
169 portNum < this->getNum_LocalCmd_OutputPorts(),
170 static_cast<FwAssertArgType>(portNum)
171 );
172
173 this->m_LocalCmd_OutputPort[portNum].addCallPort(port);
174 }
175
176 void CmdSplitterComponentBase ::
177 set_RemoteCmd_OutputPort(
178 FwIndexType portNum,
179 Fw::InputComPort* port
180 )
181 {
182 FW_ASSERT(
183 portNum < this->getNum_RemoteCmd_OutputPorts(),
184 static_cast<FwAssertArgType>(portNum)
185 );
186
187 this->m_RemoteCmd_OutputPort[portNum].addCallPort(port);
188 }
189
190 void CmdSplitterComponentBase ::
191 set_forwardSeqCmdStatus_OutputPort(
192 FwIndexType portNum,
194 )
195 {
196 FW_ASSERT(
197 portNum < this->getNum_forwardSeqCmdStatus_OutputPorts(),
198 static_cast<FwAssertArgType>(portNum)
199 );
200
201 this->m_forwardSeqCmdStatus_OutputPort[portNum].addCallPort(port);
202 }
203
204#if FW_PORT_SERIALIZATION
205
206 // ----------------------------------------------------------------------
207 // Connect serial input ports to typed output ports
208 // ----------------------------------------------------------------------
209
210 void CmdSplitterComponentBase ::
211 set_LocalCmd_OutputPort(
212 FwIndexType portNum,
213 Fw::InputSerializePort* port
214 )
215 {
216 FW_ASSERT(
217 portNum < this->getNum_LocalCmd_OutputPorts(),
218 static_cast<FwAssertArgType>(portNum)
219 );
220
221 this->m_LocalCmd_OutputPort[portNum].registerSerialPort(port);
222 }
223
224 void CmdSplitterComponentBase ::
225 set_RemoteCmd_OutputPort(
226 FwIndexType portNum,
227 Fw::InputSerializePort* port
228 )
229 {
230 FW_ASSERT(
231 portNum < this->getNum_RemoteCmd_OutputPorts(),
232 static_cast<FwAssertArgType>(portNum)
233 );
234
235 this->m_RemoteCmd_OutputPort[portNum].registerSerialPort(port);
236 }
237
238 void CmdSplitterComponentBase ::
239 set_forwardSeqCmdStatus_OutputPort(
240 FwIndexType portNum,
241 Fw::InputSerializePort* port
242 )
243 {
244 FW_ASSERT(
245 portNum < this->getNum_forwardSeqCmdStatus_OutputPorts(),
246 static_cast<FwAssertArgType>(portNum)
247 );
248
249 this->m_forwardSeqCmdStatus_OutputPort[portNum].registerSerialPort(port);
250 }
251
252#endif
253
254 // ----------------------------------------------------------------------
255 // Component construction and destruction
256 // ----------------------------------------------------------------------
257
258 CmdSplitterComponentBase ::
259 CmdSplitterComponentBase(const char* compName) :
260 Fw::PassiveComponentBase(compName)
261 {
262
263 }
264
265 CmdSplitterComponentBase ::
266 ~CmdSplitterComponentBase()
267 {
268
269 }
270
271 // ----------------------------------------------------------------------
272 // Getters for numbers of typed input ports
273 // ----------------------------------------------------------------------
274
275 FwIndexType CmdSplitterComponentBase ::
276 getNum_CmdBuff_InputPorts() const
277 {
278 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_CmdBuff_InputPort));
279 }
280
281 FwIndexType CmdSplitterComponentBase ::
282 getNum_seqCmdStatus_InputPorts() const
283 {
284 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_seqCmdStatus_InputPort));
285 }
286
287 // ----------------------------------------------------------------------
288 // Getters for numbers of typed output ports
289 // ----------------------------------------------------------------------
290
291 FwIndexType CmdSplitterComponentBase ::
292 getNum_LocalCmd_OutputPorts() const
293 {
294 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_LocalCmd_OutputPort));
295 }
296
297 FwIndexType CmdSplitterComponentBase ::
298 getNum_RemoteCmd_OutputPorts() const
299 {
300 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_RemoteCmd_OutputPort));
301 }
302
303 FwIndexType CmdSplitterComponentBase ::
304 getNum_forwardSeqCmdStatus_OutputPorts() const
305 {
306 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_forwardSeqCmdStatus_OutputPort));
307 }
308
309 // ----------------------------------------------------------------------
310 // Connection status queries for typed output ports
311 // ----------------------------------------------------------------------
312
313 bool CmdSplitterComponentBase ::
314 isConnected_LocalCmd_OutputPort(FwIndexType portNum)
315 {
316 FW_ASSERT(
317 portNum < this->getNum_LocalCmd_OutputPorts(),
318 static_cast<FwAssertArgType>(portNum)
319 );
320
321 return this->m_LocalCmd_OutputPort[portNum].isConnected();
322 }
323
324 bool CmdSplitterComponentBase ::
325 isConnected_RemoteCmd_OutputPort(FwIndexType portNum)
326 {
327 FW_ASSERT(
328 portNum < this->getNum_RemoteCmd_OutputPorts(),
329 static_cast<FwAssertArgType>(portNum)
330 );
331
332 return this->m_RemoteCmd_OutputPort[portNum].isConnected();
333 }
334
335 bool CmdSplitterComponentBase ::
336 isConnected_forwardSeqCmdStatus_OutputPort(FwIndexType portNum)
337 {
338 FW_ASSERT(
339 portNum < this->getNum_forwardSeqCmdStatus_OutputPorts(),
340 static_cast<FwAssertArgType>(portNum)
341 );
342
343 return this->m_forwardSeqCmdStatus_OutputPort[portNum].isConnected();
344 }
345
346 // ----------------------------------------------------------------------
347 // Port handler base-class functions for typed input ports
348 //
349 // Call these functions directly to bypass the corresponding ports
350 // ----------------------------------------------------------------------
351
352 void CmdSplitterComponentBase ::
353 CmdBuff_handlerBase(
354 FwIndexType portNum,
355 Fw::ComBuffer& data,
356 U32 context
357 )
358 {
359 // Make sure port number is valid
360 FW_ASSERT(
361 portNum < this->getNum_CmdBuff_InputPorts(),
362 static_cast<FwAssertArgType>(portNum)
363 );
364
365 // Call handler function
366 this->CmdBuff_handler(
367 portNum,
368 data,
369 context
370 );
371 }
372
373 void CmdSplitterComponentBase ::
374 seqCmdStatus_handlerBase(
375 FwIndexType portNum,
376 FwOpcodeType opCode,
377 U32 cmdSeq,
378 const Fw::CmdResponse& response
379 )
380 {
381 // Make sure port number is valid
382 FW_ASSERT(
383 portNum < this->getNum_seqCmdStatus_InputPorts(),
384 static_cast<FwAssertArgType>(portNum)
385 );
386
387 // Call handler function
388 this->seqCmdStatus_handler(
389 portNum,
390 opCode,
391 cmdSeq,
392 response
393 );
394 }
395
396 // ----------------------------------------------------------------------
397 // Invocation functions for typed output ports
398 // ----------------------------------------------------------------------
399
400 void CmdSplitterComponentBase ::
401 LocalCmd_out(
402 FwIndexType portNum,
403 Fw::ComBuffer& data,
404 U32 context
405 )
406 {
407 FW_ASSERT(
408 portNum < this->getNum_LocalCmd_OutputPorts(),
409 static_cast<FwAssertArgType>(portNum)
410 );
411 this->m_LocalCmd_OutputPort[portNum].invoke(
412 data,
413 context
414 );
415 }
416
417 void CmdSplitterComponentBase ::
418 RemoteCmd_out(
419 FwIndexType portNum,
420 Fw::ComBuffer& data,
421 U32 context
422 )
423 {
424 FW_ASSERT(
425 portNum < this->getNum_RemoteCmd_OutputPorts(),
426 static_cast<FwAssertArgType>(portNum)
427 );
428 this->m_RemoteCmd_OutputPort[portNum].invoke(
429 data,
430 context
431 );
432 }
433
434 void CmdSplitterComponentBase ::
435 forwardSeqCmdStatus_out(
436 FwIndexType portNum,
437 FwOpcodeType opCode,
438 U32 cmdSeq,
439 const Fw::CmdResponse& response
440 )
441 {
442 FW_ASSERT(
443 portNum < this->getNum_forwardSeqCmdStatus_OutputPorts(),
444 static_cast<FwAssertArgType>(portNum)
445 );
446 this->m_forwardSeqCmdStatus_OutputPort[portNum].invoke(
447 opCode,
448 cmdSeq,
449 response
450 );
451 }
452
453 // ----------------------------------------------------------------------
454 // Calls for messages received on typed input ports
455 // ----------------------------------------------------------------------
456
457 void CmdSplitterComponentBase ::
458 m_p_CmdBuff_in(
459 Fw::PassiveComponentBase* callComp,
460 FwIndexType portNum,
461 Fw::ComBuffer& data,
462 U32 context
463 )
464 {
465 FW_ASSERT(callComp);
466 CmdSplitterComponentBase* compPtr = static_cast<CmdSplitterComponentBase*>(callComp);
467 compPtr->CmdBuff_handlerBase(
468 portNum,
469 data,
470 context
471 );
472 }
473
474 void CmdSplitterComponentBase ::
475 m_p_seqCmdStatus_in(
476 Fw::PassiveComponentBase* callComp,
477 FwIndexType portNum,
478 FwOpcodeType opCode,
479 U32 cmdSeq,
480 const Fw::CmdResponse& response
481 )
482 {
483 FW_ASSERT(callComp);
484 CmdSplitterComponentBase* compPtr = static_cast<CmdSplitterComponentBase*>(callComp);
486 portNum,
487 opCode,
488 cmdSeq,
489 response
490 );
491 }
492
493}
#define FW_ASSERT(...)
Definition Assert.hpp:14
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
Definition BasicTypes.h:70
#define PRI_PlatformIntType
I32 FwEnumStoreType
Definition FpConfig.h:64
PlatformAssertArgType FwAssertArgType
Definition FpConfig.h:39
U32 FwOpcodeType
Definition FpConfig.h:91
PlatformIndexType FwIndexType
Definition FpConfig.h:25
Enum representing a command response.
void init()
Object initializer.
Definition ObjBase.cpp:27
const char * toChar() const
void format(const CHAR *formatString,...)
write formatted string to buffer
Auto-generated base for CmdSplitter component.
void CmdBuff_handlerBase(FwIndexType portNum, Fw::ComBuffer &data, U32 context)
Handler base-class function for input port CmdBuff.
void seqCmdStatus_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Handler base-class function for input port seqCmdStatus.