F´ Flight Software - C/C++ Documentation devel
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TlmChanComponentAc.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title TlmChanComponentAc.cpp
3// \author Generated by fpp-to-cpp
4// \brief cpp file for TlmChan 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
15namespace Svc {
16
17 namespace {
18 enum MsgTypeEnum {
20 RUN_SCHED,
21 PINGIN_PING,
22 };
23
24 // Get the max size by constructing a union of the async input, command, and
25 // internal port serialization sizes
26 union BuffUnion {
29 };
30
31 // Define a message buffer class large enough to handle all the
32 // asynchronous inputs to the component
33 class ComponentIpcSerializableBuffer :
35 {
36
37 public:
38
39 enum {
40 // Max. message size = size of data + message id + port
41 SERIALIZATION_SIZE =
42 sizeof(BuffUnion) +
43 sizeof(NATIVE_INT_TYPE) +
44 sizeof(NATIVE_INT_TYPE)
45 };
46
47 NATIVE_UINT_TYPE getBuffCapacity() const {
48 return sizeof(m_buff);
49 }
50
51 U8* getBuffAddr() {
52 return m_buff;
53 }
54
55 const U8* getBuffAddr() const {
56 return m_buff;
57 }
58
59 private:
60 // Should be the max of all the input ports serialized sizes...
61 U8 m_buff[SERIALIZATION_SIZE];
62
63 };
64 }
65
66 // ----------------------------------------------------------------------
67 // Component initialization
68 // ----------------------------------------------------------------------
69
70 void TlmChanComponentBase ::
71 init(
72 NATIVE_INT_TYPE queueDepth,
73 NATIVE_INT_TYPE instance
74 )
75 {
76 // Initialize base class
78
79 // Connect input port Run
80 for (
81 PlatformIntType port = 0;
82 port < static_cast<PlatformIntType>(this->getNum_Run_InputPorts());
83 port++
84 ) {
85 this->m_Run_InputPort[port].init();
86 this->m_Run_InputPort[port].addCallComp(
87 this,
88 m_p_Run_in
89 );
90 this->m_Run_InputPort[port].setPortNum(port);
91
92#if FW_OBJECT_NAMES == 1
93 char portName[120];
94 (void) snprintf(
95 portName,
96 sizeof(portName),
97 "%s_Run_InputPort[%" PRI_PlatformIntType "]",
98 this->m_objName,
99 port
100 );
101 this->m_Run_InputPort[port].setObjName(portName);
102#endif
103 }
104
105 // Connect input port TlmGet
106 for (
107 PlatformIntType port = 0;
108 port < static_cast<PlatformIntType>(this->getNum_TlmGet_InputPorts());
109 port++
110 ) {
111 this->m_TlmGet_InputPort[port].init();
112 this->m_TlmGet_InputPort[port].addCallComp(
113 this,
114 m_p_TlmGet_in
115 );
116 this->m_TlmGet_InputPort[port].setPortNum(port);
117
118#if FW_OBJECT_NAMES == 1
119 char portName[120];
120 (void) snprintf(
121 portName,
122 sizeof(portName),
123 "%s_TlmGet_InputPort[%" PRI_PlatformIntType "]",
124 this->m_objName,
125 port
126 );
127 this->m_TlmGet_InputPort[port].setObjName(portName);
128#endif
129 }
130
131 // Connect input port TlmRecv
132 for (
133 PlatformIntType port = 0;
134 port < static_cast<PlatformIntType>(this->getNum_TlmRecv_InputPorts());
135 port++
136 ) {
137 this->m_TlmRecv_InputPort[port].init();
138 this->m_TlmRecv_InputPort[port].addCallComp(
139 this,
140 m_p_TlmRecv_in
141 );
142 this->m_TlmRecv_InputPort[port].setPortNum(port);
143
144#if FW_OBJECT_NAMES == 1
145 char portName[120];
146 (void) snprintf(
147 portName,
148 sizeof(portName),
149 "%s_TlmRecv_InputPort[%" PRI_PlatformIntType "]",
150 this->m_objName,
151 port
152 );
153 this->m_TlmRecv_InputPort[port].setObjName(portName);
154#endif
155 }
156
157 // Connect input port pingIn
158 for (
159 PlatformIntType port = 0;
160 port < static_cast<PlatformIntType>(this->getNum_pingIn_InputPorts());
161 port++
162 ) {
163 this->m_pingIn_InputPort[port].init();
164 this->m_pingIn_InputPort[port].addCallComp(
165 this,
166 m_p_pingIn_in
167 );
168 this->m_pingIn_InputPort[port].setPortNum(port);
169
170#if FW_OBJECT_NAMES == 1
171 char portName[120];
172 (void) snprintf(
173 portName,
174 sizeof(portName),
175 "%s_pingIn_InputPort[%" PRI_PlatformIntType "]",
176 this->m_objName,
177 port
178 );
179 this->m_pingIn_InputPort[port].setObjName(portName);
180#endif
181 }
182
183 // Connect output port PktSend
184 for (
185 PlatformIntType port = 0;
186 port < static_cast<PlatformIntType>(this->getNum_PktSend_OutputPorts());
187 port++
188 ) {
189 this->m_PktSend_OutputPort[port].init();
190
191#if FW_OBJECT_NAMES == 1
192 char portName[120];
193 (void) snprintf(
194 portName,
195 sizeof(portName),
196 "%s_PktSend_OutputPort[%" PRI_PlatformIntType "]",
197 this->m_objName,
198 port
199 );
200 this->m_PktSend_OutputPort[port].setObjName(portName);
201#endif
202 }
203
204 // Connect output port pingOut
205 for (
206 PlatformIntType port = 0;
207 port < static_cast<PlatformIntType>(this->getNum_pingOut_OutputPorts());
208 port++
209 ) {
210 this->m_pingOut_OutputPort[port].init();
211
212#if FW_OBJECT_NAMES == 1
213 char portName[120];
214 (void) snprintf(
215 portName,
216 sizeof(portName),
217 "%s_pingOut_OutputPort[%" PRI_PlatformIntType "]",
218 this->m_objName,
219 port
220 );
221 this->m_pingOut_OutputPort[port].setObjName(portName);
222#endif
223 }
224
225 Os::Queue::QueueStatus qStat = this->createQueue(
226 queueDepth,
227 ComponentIpcSerializableBuffer::SERIALIZATION_SIZE
228 );
229 FW_ASSERT(
230 Os::Queue::QUEUE_OK == qStat,
231 static_cast<FwAssertArgType>(qStat)
232 );
233 }
234
235 // ----------------------------------------------------------------------
236 // Getters for typed input ports
237 // ----------------------------------------------------------------------
238
239 Svc::InputSchedPort* TlmChanComponentBase ::
240 get_Run_InputPort(NATIVE_INT_TYPE portNum)
241 {
242 FW_ASSERT(
243 portNum < this->getNum_Run_InputPorts(),
244 static_cast<FwAssertArgType>(portNum)
245 );
246
247 return &this->m_Run_InputPort[portNum];
248 }
249
250 Fw::InputTlmGetPort* TlmChanComponentBase ::
251 get_TlmGet_InputPort(NATIVE_INT_TYPE portNum)
252 {
253 FW_ASSERT(
254 portNum < this->getNum_TlmGet_InputPorts(),
255 static_cast<FwAssertArgType>(portNum)
256 );
257
258 return &this->m_TlmGet_InputPort[portNum];
259 }
260
261 Fw::InputTlmPort* TlmChanComponentBase ::
262 get_TlmRecv_InputPort(NATIVE_INT_TYPE portNum)
263 {
264 FW_ASSERT(
265 portNum < this->getNum_TlmRecv_InputPorts(),
266 static_cast<FwAssertArgType>(portNum)
267 );
268
269 return &this->m_TlmRecv_InputPort[portNum];
270 }
271
272 Svc::InputPingPort* TlmChanComponentBase ::
273 get_pingIn_InputPort(NATIVE_INT_TYPE portNum)
274 {
275 FW_ASSERT(
276 portNum < this->getNum_pingIn_InputPorts(),
277 static_cast<FwAssertArgType>(portNum)
278 );
279
280 return &this->m_pingIn_InputPort[portNum];
281 }
282
283 // ----------------------------------------------------------------------
284 // Connect typed input ports to typed output ports
285 // ----------------------------------------------------------------------
286
287 void TlmChanComponentBase ::
288 set_PktSend_OutputPort(
289 NATIVE_INT_TYPE portNum,
290 Fw::InputComPort* port
291 )
292 {
293 FW_ASSERT(
294 portNum < this->getNum_PktSend_OutputPorts(),
295 static_cast<FwAssertArgType>(portNum)
296 );
297
298 this->m_PktSend_OutputPort[portNum].addCallPort(port);
299 }
300
301 void TlmChanComponentBase ::
302 set_pingOut_OutputPort(
303 NATIVE_INT_TYPE portNum,
305 )
306 {
307 FW_ASSERT(
308 portNum < this->getNum_pingOut_OutputPorts(),
309 static_cast<FwAssertArgType>(portNum)
310 );
311
312 this->m_pingOut_OutputPort[portNum].addCallPort(port);
313 }
314
315#if FW_PORT_SERIALIZATION
316
317 // ----------------------------------------------------------------------
318 // Connect serial input ports to typed output ports
319 // ----------------------------------------------------------------------
320
321 void TlmChanComponentBase ::
322 set_PktSend_OutputPort(
323 NATIVE_INT_TYPE portNum,
324 Fw::InputSerializePort* port
325 )
326 {
327 FW_ASSERT(
328 portNum < this->getNum_PktSend_OutputPorts(),
329 static_cast<FwAssertArgType>(portNum)
330 );
331
332 this->m_PktSend_OutputPort[portNum].registerSerialPort(port);
333 }
334
335 void TlmChanComponentBase ::
336 set_pingOut_OutputPort(
337 NATIVE_INT_TYPE portNum,
338 Fw::InputSerializePort* port
339 )
340 {
341 FW_ASSERT(
342 portNum < this->getNum_pingOut_OutputPorts(),
343 static_cast<FwAssertArgType>(portNum)
344 );
345
346 this->m_pingOut_OutputPort[portNum].registerSerialPort(port);
347 }
348
349#endif
350
351 // ----------------------------------------------------------------------
352 // Component construction and destruction
353 // ----------------------------------------------------------------------
354
355 TlmChanComponentBase ::
356 TlmChanComponentBase(const char* compName) :
357 Fw::ActiveComponentBase(compName)
358 {
359
360 }
361
362 TlmChanComponentBase ::
363 ~TlmChanComponentBase()
364 {
365
366 }
367
368 // ----------------------------------------------------------------------
369 // Getters for numbers of typed input ports
370 // ----------------------------------------------------------------------
371
372 NATIVE_INT_TYPE TlmChanComponentBase ::
373 getNum_Run_InputPorts() const
374 {
375 return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_Run_InputPort));
376 }
377
378 NATIVE_INT_TYPE TlmChanComponentBase ::
379 getNum_TlmGet_InputPorts() const
380 {
381 return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_TlmGet_InputPort));
382 }
383
384 NATIVE_INT_TYPE TlmChanComponentBase ::
385 getNum_TlmRecv_InputPorts() const
386 {
387 return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_TlmRecv_InputPort));
388 }
389
390 NATIVE_INT_TYPE TlmChanComponentBase ::
391 getNum_pingIn_InputPorts() const
392 {
393 return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_pingIn_InputPort));
394 }
395
396 // ----------------------------------------------------------------------
397 // Getters for numbers of typed output ports
398 // ----------------------------------------------------------------------
399
400 NATIVE_INT_TYPE TlmChanComponentBase ::
401 getNum_PktSend_OutputPorts() const
402 {
403 return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_PktSend_OutputPort));
404 }
405
406 NATIVE_INT_TYPE TlmChanComponentBase ::
407 getNum_pingOut_OutputPorts() const
408 {
409 return static_cast<NATIVE_INT_TYPE>(FW_NUM_ARRAY_ELEMENTS(this->m_pingOut_OutputPort));
410 }
411
412 // ----------------------------------------------------------------------
413 // Connection status queries for typed output ports
414 // ----------------------------------------------------------------------
415
416 bool TlmChanComponentBase ::
417 isConnected_PktSend_OutputPort(NATIVE_INT_TYPE portNum)
418 {
419 FW_ASSERT(
420 portNum < this->getNum_PktSend_OutputPorts(),
421 static_cast<FwAssertArgType>(portNum)
422 );
423
424 return this->m_PktSend_OutputPort[portNum].isConnected();
425 }
426
427 bool TlmChanComponentBase ::
428 isConnected_pingOut_OutputPort(NATIVE_INT_TYPE portNum)
429 {
430 FW_ASSERT(
431 portNum < this->getNum_pingOut_OutputPorts(),
432 static_cast<FwAssertArgType>(portNum)
433 );
434
435 return this->m_pingOut_OutputPort[portNum].isConnected();
436 }
437
438 // ----------------------------------------------------------------------
439 // Port handler base-class functions for typed input ports
440 //
441 // Call these functions directly to bypass the corresponding ports
442 // ----------------------------------------------------------------------
443
444 void TlmChanComponentBase ::
445 Run_handlerBase(
446 NATIVE_INT_TYPE portNum,
447 NATIVE_UINT_TYPE context
448 )
449 {
450 // Make sure port number is valid
451 FW_ASSERT(
452 portNum < this->getNum_Run_InputPorts(),
453 static_cast<FwAssertArgType>(portNum)
454 );
455
456 // Call pre-message hook
457 Run_preMsgHook(
458 portNum,
459 context
460 );
461 ComponentIpcSerializableBuffer msg;
463
464 // Serialize message ID
465 _status = msg.serialize(
466 static_cast<NATIVE_INT_TYPE>(RUN_SCHED)
467 );
468 FW_ASSERT(
469 _status == Fw::FW_SERIALIZE_OK,
470 static_cast<FwAssertArgType>(_status)
471 );
472
473 // Serialize port number
474 _status = msg.serialize(portNum);
475 FW_ASSERT(
476 _status == Fw::FW_SERIALIZE_OK,
477 static_cast<FwAssertArgType>(_status)
478 );
479
480 // Serialize argument context
481 _status = msg.serialize(context);
482 FW_ASSERT(
483 _status == Fw::FW_SERIALIZE_OK,
484 static_cast<FwAssertArgType>(_status)
485 );
486
487 // Send message
489 Os::Queue::QueueStatus qStatus = this->m_queue.send(msg, 0, _block);
490
491 FW_ASSERT(
492 qStatus == Os::Queue::QUEUE_OK,
493 static_cast<FwAssertArgType>(qStatus)
494 );
495 }
496
497 void TlmChanComponentBase ::
498 TlmGet_handlerBase(
499 NATIVE_INT_TYPE portNum,
500 FwChanIdType id,
501 Fw::Time& timeTag,
502 Fw::TlmBuffer& val
503 )
504 {
505 // Make sure port number is valid
506 FW_ASSERT(
507 portNum < this->getNum_TlmGet_InputPorts(),
508 static_cast<FwAssertArgType>(portNum)
509 );
510
511 // Lock guard mutex before calling
512 this->lock();
513
514 // Down call to pure virtual handler method implemented in Impl class
515 this->TlmGet_handler(
516 portNum,
517 id,
518 timeTag,
519 val
520 );
521
522 // Unlock guard mutex
523 this->unLock();
524 }
525
526 void TlmChanComponentBase ::
527 TlmRecv_handlerBase(
528 NATIVE_INT_TYPE portNum,
529 FwChanIdType id,
530 Fw::Time& timeTag,
531 Fw::TlmBuffer& val
532 )
533 {
534 // Make sure port number is valid
535 FW_ASSERT(
536 portNum < this->getNum_TlmRecv_InputPorts(),
537 static_cast<FwAssertArgType>(portNum)
538 );
539
540 // Lock guard mutex before calling
541 this->lock();
542
543 // Down call to pure virtual handler method implemented in Impl class
544 this->TlmRecv_handler(
545 portNum,
546 id,
547 timeTag,
548 val
549 );
550
551 // Unlock guard mutex
552 this->unLock();
553 }
554
555 void TlmChanComponentBase ::
556 pingIn_handlerBase(
557 NATIVE_INT_TYPE portNum,
558 U32 key
559 )
560 {
561 // Make sure port number is valid
562 FW_ASSERT(
563 portNum < this->getNum_pingIn_InputPorts(),
564 static_cast<FwAssertArgType>(portNum)
565 );
566
567 // Call pre-message hook
568 pingIn_preMsgHook(
569 portNum,
570 key
571 );
572 ComponentIpcSerializableBuffer msg;
574
575 // Serialize message ID
576 _status = msg.serialize(
577 static_cast<NATIVE_INT_TYPE>(PINGIN_PING)
578 );
579 FW_ASSERT(
580 _status == Fw::FW_SERIALIZE_OK,
581 static_cast<FwAssertArgType>(_status)
582 );
583
584 // Serialize port number
585 _status = msg.serialize(portNum);
586 FW_ASSERT(
587 _status == Fw::FW_SERIALIZE_OK,
588 static_cast<FwAssertArgType>(_status)
589 );
590
591 // Serialize argument key
592 _status = msg.serialize(key);
593 FW_ASSERT(
594 _status == Fw::FW_SERIALIZE_OK,
595 static_cast<FwAssertArgType>(_status)
596 );
597
598 // Send message
600 Os::Queue::QueueStatus qStatus = this->m_queue.send(msg, 0, _block);
601
602 FW_ASSERT(
603 qStatus == Os::Queue::QUEUE_OK,
604 static_cast<FwAssertArgType>(qStatus)
605 );
606 }
607
608 // ----------------------------------------------------------------------
609 // Pre-message hooks for typed async input ports
610 //
611 // Each of these functions is invoked just before processing a message
612 // on the corresponding port. By default, they do nothing. You can
613 // override them to provide specific pre-message behavior.
614 // ----------------------------------------------------------------------
615
616 void TlmChanComponentBase ::
617 Run_preMsgHook(
618 NATIVE_INT_TYPE portNum,
619 NATIVE_UINT_TYPE context
620 )
621 {
622 // Default: no-op
623 }
624
625 void TlmChanComponentBase ::
626 pingIn_preMsgHook(
627 NATIVE_INT_TYPE portNum,
628 U32 key
629 )
630 {
631 // Default: no-op
632 }
633
634 // ----------------------------------------------------------------------
635 // Invocation functions for typed output ports
636 // ----------------------------------------------------------------------
637
638 void TlmChanComponentBase ::
639 PktSend_out(
640 NATIVE_INT_TYPE portNum,
641 Fw::ComBuffer& data,
642 U32 context
643 )
644 {
645 FW_ASSERT(
646 portNum < this->getNum_PktSend_OutputPorts(),
647 static_cast<FwAssertArgType>(portNum)
648 );
649 this->m_PktSend_OutputPort[portNum].invoke(
650 data,
651 context
652 );
653 }
654
655 void TlmChanComponentBase ::
656 pingOut_out(
657 NATIVE_INT_TYPE portNum,
658 U32 key
659 )
660 {
661 FW_ASSERT(
662 portNum < this->getNum_pingOut_OutputPorts(),
663 static_cast<FwAssertArgType>(portNum)
664 );
665 this->m_pingOut_OutputPort[portNum].invoke(
666 key
667 );
668 }
669
670 // ----------------------------------------------------------------------
671 // Mutex operations for guarded ports
672 //
673 // You can override these operations to provide more sophisticated
674 // synchronization
675 // ----------------------------------------------------------------------
676
677 void TlmChanComponentBase ::
678 lock()
679 {
680 this->m_guardedPortMutex.lock();
681 }
682
683 void TlmChanComponentBase ::
684 unLock()
685 {
686 this->m_guardedPortMutex.unLock();
687 }
688
689 // ----------------------------------------------------------------------
690 // Message dispatch functions
691 // ----------------------------------------------------------------------
692
693 Fw::QueuedComponentBase::MsgDispatchStatus TlmChanComponentBase ::
694 doDispatch()
695 {
696 ComponentIpcSerializableBuffer msg;
697 NATIVE_INT_TYPE priority = 0;
698
699 Os::Queue::QueueStatus msgStatus = this->m_queue.receive(
700 msg,
701 priority,
703 );
704 FW_ASSERT(
705 msgStatus == Os::Queue::QUEUE_OK,
706 static_cast<FwAssertArgType>(msgStatus)
707 );
708
709 // Reset to beginning of buffer
710 msg.resetDeser();
711
712 NATIVE_INT_TYPE desMsg = 0;
713 Fw::SerializeStatus deserStatus = msg.deserialize(desMsg);
714 FW_ASSERT(
715 deserStatus == Fw::FW_SERIALIZE_OK,
716 static_cast<FwAssertArgType>(deserStatus)
717 );
718
719 MsgTypeEnum msgType = static_cast<MsgTypeEnum>(desMsg);
720
721 if (msgType == TLMCHAN_COMPONENT_EXIT) {
722 return MSG_DISPATCH_EXIT;
723 }
724
725 NATIVE_INT_TYPE portNum = 0;
726 deserStatus = msg.deserialize(portNum);
727 FW_ASSERT(
728 deserStatus == Fw::FW_SERIALIZE_OK,
729 static_cast<FwAssertArgType>(deserStatus)
730 );
731
732 switch (msgType) {
733 // Handle async input port Run
734 case RUN_SCHED: {
735 // Deserialize argument context
736 NATIVE_UINT_TYPE context;
737 deserStatus = msg.deserialize(context);
738 FW_ASSERT(
739 deserStatus == Fw::FW_SERIALIZE_OK,
740 static_cast<FwAssertArgType>(deserStatus)
741 );
742 // Call handler function
743 this->Run_handler(
744 portNum,
745 context
746 );
747
748 break;
749 }
750
751 // Handle async input port pingIn
752 case PINGIN_PING: {
753 // Deserialize argument key
754 U32 key;
755 deserStatus = msg.deserialize(key);
756 FW_ASSERT(
757 deserStatus == Fw::FW_SERIALIZE_OK,
758 static_cast<FwAssertArgType>(deserStatus)
759 );
760 // Call handler function
761 this->pingIn_handler(
762 portNum,
763 key
764 );
765
766 break;
767 }
768
769 default:
770 return MSG_DISPATCH_ERROR;
771 }
772
773 return MSG_DISPATCH_OK;
774 }
775
776 // ----------------------------------------------------------------------
777 // Calls for messages received on typed input ports
778 // ----------------------------------------------------------------------
779
780 void TlmChanComponentBase ::
781 m_p_Run_in(
782 Fw::PassiveComponentBase* callComp,
783 NATIVE_INT_TYPE portNum,
784 NATIVE_UINT_TYPE context
785 )
786 {
787 FW_ASSERT(callComp);
788 TlmChanComponentBase* compPtr = static_cast<TlmChanComponentBase*>(callComp);
789 compPtr->Run_handlerBase(
790 portNum,
791 context
792 );
793 }
794
795 void TlmChanComponentBase ::
796 m_p_TlmGet_in(
797 Fw::PassiveComponentBase* callComp,
798 NATIVE_INT_TYPE portNum,
799 FwChanIdType id,
800 Fw::Time& timeTag,
801 Fw::TlmBuffer& val
802 )
803 {
804 FW_ASSERT(callComp);
805 TlmChanComponentBase* compPtr = static_cast<TlmChanComponentBase*>(callComp);
806 compPtr->TlmGet_handlerBase(
807 portNum,
808 id,
809 timeTag,
810 val
811 );
812 }
813
814 void TlmChanComponentBase ::
815 m_p_TlmRecv_in(
816 Fw::PassiveComponentBase* callComp,
817 NATIVE_INT_TYPE portNum,
818 FwChanIdType id,
819 Fw::Time& timeTag,
820 Fw::TlmBuffer& val
821 )
822 {
823 FW_ASSERT(callComp);
824 TlmChanComponentBase* compPtr = static_cast<TlmChanComponentBase*>(callComp);
825 compPtr->TlmRecv_handlerBase(
826 portNum,
827 id,
828 timeTag,
829 val
830 );
831 }
832
833 void TlmChanComponentBase ::
834 m_p_pingIn_in(
835 Fw::PassiveComponentBase* callComp,
836 NATIVE_INT_TYPE portNum,
837 U32 key
838 )
839 {
840 FW_ASSERT(callComp);
841 TlmChanComponentBase* compPtr = static_cast<TlmChanComponentBase*>(callComp);
842 compPtr->pingIn_handlerBase(
843 portNum,
844 key
845 );
846 }
847
848}
#define FW_ASSERT(...)
Definition Assert.hpp:7
PlatformIntType NATIVE_INT_TYPE
Definition BasicTypes.h:51
U8 BYTE
byte type
Definition BasicTypes.h:27
uint8_t U8
8-bit unsigned integer
Definition BasicTypes.h:26
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
Definition BasicTypes.h:66
PlatformUIntType NATIVE_UINT_TYPE
Definition BasicTypes.h:52
int PlatformIntType
DefaultTypes.hpp provides fallback defaults for the platform types.
#define PRI_PlatformIntType
PlatformAssertArgType FwAssertArgType
Definition FpConfig.h:21
U32 FwChanIdType
Definition FpConfig.h:59
@ ACTIVE_COMPONENT_EXIT
message to exit active component task
void init()
Object initializer.
Definition ObjBase.cpp:27
@ QUEUE_OK
message sent/received okay
Definition Queue.hpp:28
QueueBlocking
Definition Queue.hpp:40
@ QUEUE_BLOCKING
Queue receive blocks until a message arrives.
Definition Queue.hpp:41
@ QUEUE_NONBLOCKING
Queue receive always returns even if there is no message.
Definition Queue.hpp:42
@ SERIALIZED_SIZE
The size of the serial representations of the port arguments.
@ SERIALIZED_SIZE
The size of the serial representations of the port arguments.
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.