F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
LinuxSpiDriverComponentAc.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title LinuxSpiDriverComponentAc.cpp
3// \author Generated by fpp-to-cpp
4// \brief cpp file for LinuxSpiDriver 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 Drv {
15
16 // ----------------------------------------------------------------------
17 // Component initialization
18 // ----------------------------------------------------------------------
19
20 void LinuxSpiDriverComponentBase ::
21 init(FwEnumStoreType instance)
22 {
23 // Initialize base class
25
26 // Connect input port SpiReadWrite
27 for (
28 FwIndexType port = 0;
29 port < static_cast<FwIndexType>(this->getNum_SpiReadWrite_InputPorts());
30 port++
31 ) {
32 this->m_SpiReadWrite_InputPort[port].init();
33 this->m_SpiReadWrite_InputPort[port].addCallComp(
34 this,
35 m_p_SpiReadWrite_in
36 );
37 this->m_SpiReadWrite_InputPort[port].setPortNum(port);
38
39#if FW_OBJECT_NAMES == 1
40 Fw::ObjectName portName;
41 portName.format(
42 "%s_SpiReadWrite_InputPort[%" PRI_PlatformIntType "]",
43 this->m_objName.toChar(),
44 port
45 );
46 this->m_SpiReadWrite_InputPort[port].setObjName(portName.toChar());
47#endif
48 }
49
50 // Connect output port Log
51 for (
52 FwIndexType port = 0;
53 port < static_cast<FwIndexType>(this->getNum_Log_OutputPorts());
54 port++
55 ) {
56 this->m_Log_OutputPort[port].init();
57
58#if FW_OBJECT_NAMES == 1
59 Fw::ObjectName portName;
60 portName.format(
61 "%s_Log_OutputPort[%" PRI_PlatformIntType "]",
62 this->m_objName.toChar(),
63 port
64 );
65 this->m_Log_OutputPort[port].setObjName(portName.toChar());
66#endif
67 }
68
69#if FW_ENABLE_TEXT_LOGGING == 1
70 // Connect output port LogText
71 for (
72 FwIndexType port = 0;
73 port < static_cast<FwIndexType>(this->getNum_LogText_OutputPorts());
74 port++
75 ) {
76 this->m_LogText_OutputPort[port].init();
77
78#if FW_OBJECT_NAMES == 1
79 Fw::ObjectName portName;
80 portName.format(
81 "%s_LogText_OutputPort[%" PRI_PlatformIntType "]",
82 this->m_objName.toChar(),
83 port
84 );
85 this->m_LogText_OutputPort[port].setObjName(portName.toChar());
86#endif
87 }
88#endif
89
90 // Connect output port Time
91 for (
92 FwIndexType port = 0;
93 port < static_cast<FwIndexType>(this->getNum_Time_OutputPorts());
94 port++
95 ) {
96 this->m_Time_OutputPort[port].init();
97
98#if FW_OBJECT_NAMES == 1
99 Fw::ObjectName portName;
100 portName.format(
101 "%s_Time_OutputPort[%" PRI_PlatformIntType "]",
102 this->m_objName.toChar(),
103 port
104 );
105 this->m_Time_OutputPort[port].setObjName(portName.toChar());
106#endif
107 }
108
109 // Connect output port Tlm
110 for (
111 FwIndexType port = 0;
112 port < static_cast<FwIndexType>(this->getNum_Tlm_OutputPorts());
113 port++
114 ) {
115 this->m_Tlm_OutputPort[port].init();
116
117#if FW_OBJECT_NAMES == 1
118 Fw::ObjectName portName;
119 portName.format(
120 "%s_Tlm_OutputPort[%" PRI_PlatformIntType "]",
121 this->m_objName.toChar(),
122 port
123 );
124 this->m_Tlm_OutputPort[port].setObjName(portName.toChar());
125#endif
126 }
127 }
128
129 // ----------------------------------------------------------------------
130 // Getters for typed input ports
131 // ----------------------------------------------------------------------
132
133 Drv::InputSpiReadWritePort* LinuxSpiDriverComponentBase ::
134 get_SpiReadWrite_InputPort(FwIndexType portNum)
135 {
136 FW_ASSERT(
137 portNum < this->getNum_SpiReadWrite_InputPorts(),
138 static_cast<FwAssertArgType>(portNum)
139 );
140
141 return &this->m_SpiReadWrite_InputPort[portNum];
142 }
143
144 // ----------------------------------------------------------------------
145 // Connect input ports to special output ports
146 // ----------------------------------------------------------------------
147
148 void LinuxSpiDriverComponentBase ::
149 set_Log_OutputPort(
150 FwIndexType portNum,
151 Fw::InputLogPort* port
152 )
153 {
154 FW_ASSERT(
155 portNum < this->getNum_Log_OutputPorts(),
156 static_cast<FwAssertArgType>(portNum)
157 );
158
159 this->m_Log_OutputPort[portNum].addCallPort(port);
160 }
161
162#if FW_ENABLE_TEXT_LOGGING == 1
163
164 void LinuxSpiDriverComponentBase ::
165 set_LogText_OutputPort(
166 FwIndexType portNum,
168 )
169 {
170 FW_ASSERT(
171 portNum < this->getNum_LogText_OutputPorts(),
172 static_cast<FwAssertArgType>(portNum)
173 );
174
175 this->m_LogText_OutputPort[portNum].addCallPort(port);
176 }
177
178#endif
179
180 void LinuxSpiDriverComponentBase ::
181 set_Time_OutputPort(
182 FwIndexType portNum,
184 )
185 {
186 FW_ASSERT(
187 portNum < this->getNum_Time_OutputPorts(),
188 static_cast<FwAssertArgType>(portNum)
189 );
190
191 this->m_Time_OutputPort[portNum].addCallPort(port);
192 }
193
194 void LinuxSpiDriverComponentBase ::
195 set_Tlm_OutputPort(
196 FwIndexType portNum,
197 Fw::InputTlmPort* port
198 )
199 {
200 FW_ASSERT(
201 portNum < this->getNum_Tlm_OutputPorts(),
202 static_cast<FwAssertArgType>(portNum)
203 );
204
205 this->m_Tlm_OutputPort[portNum].addCallPort(port);
206 }
207
208#if FW_PORT_SERIALIZATION
209
210 // ----------------------------------------------------------------------
211 // Connect serial input ports to special output ports
212 // ----------------------------------------------------------------------
213
214 void LinuxSpiDriverComponentBase ::
215 set_Log_OutputPort(
216 FwIndexType portNum,
217 Fw::InputSerializePort* port
218 )
219 {
220 FW_ASSERT(
221 portNum < this->getNum_Log_OutputPorts(),
222 static_cast<FwAssertArgType>(portNum)
223 );
224
225 this->m_Log_OutputPort[portNum].registerSerialPort(port);
226 }
227
228#if FW_ENABLE_TEXT_LOGGING == 1
229
230 void LinuxSpiDriverComponentBase ::
231 set_LogText_OutputPort(
232 FwIndexType portNum,
233 Fw::InputSerializePort* port
234 )
235 {
236 FW_ASSERT(
237 portNum < this->getNum_LogText_OutputPorts(),
238 static_cast<FwAssertArgType>(portNum)
239 );
240
241 this->m_LogText_OutputPort[portNum].registerSerialPort(port);
242 }
243
244#endif
245
246 void LinuxSpiDriverComponentBase ::
247 set_Time_OutputPort(
248 FwIndexType portNum,
249 Fw::InputSerializePort* port
250 )
251 {
252 FW_ASSERT(
253 portNum < this->getNum_Time_OutputPorts(),
254 static_cast<FwAssertArgType>(portNum)
255 );
256
257 this->m_Time_OutputPort[portNum].registerSerialPort(port);
258 }
259
260 void LinuxSpiDriverComponentBase ::
261 set_Tlm_OutputPort(
262 FwIndexType portNum,
263 Fw::InputSerializePort* port
264 )
265 {
266 FW_ASSERT(
267 portNum < this->getNum_Tlm_OutputPorts(),
268 static_cast<FwAssertArgType>(portNum)
269 );
270
271 this->m_Tlm_OutputPort[portNum].registerSerialPort(port);
272 }
273
274#endif
275
276 // ----------------------------------------------------------------------
277 // Component construction and destruction
278 // ----------------------------------------------------------------------
279
280 LinuxSpiDriverComponentBase ::
281 LinuxSpiDriverComponentBase(const char* compName) :
282 Fw::PassiveComponentBase(compName)
283 {
284 this->m_SPI_WriteErrorThrottle = 0;
285 }
286
287 LinuxSpiDriverComponentBase ::
288 ~LinuxSpiDriverComponentBase()
289 {
290
291 }
292
293 // ----------------------------------------------------------------------
294 // Getters for numbers of typed input ports
295 // ----------------------------------------------------------------------
296
297 FwIndexType LinuxSpiDriverComponentBase ::
298 getNum_SpiReadWrite_InputPorts() const
299 {
300 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_SpiReadWrite_InputPort));
301 }
302
303 // ----------------------------------------------------------------------
304 // Getters for numbers of special output ports
305 // ----------------------------------------------------------------------
306
307 FwIndexType LinuxSpiDriverComponentBase ::
308 getNum_Log_OutputPorts() const
309 {
310 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_Log_OutputPort));
311 }
312
313#if FW_ENABLE_TEXT_LOGGING == 1
314
315 FwIndexType LinuxSpiDriverComponentBase ::
316 getNum_LogText_OutputPorts() const
317 {
318 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_LogText_OutputPort));
319 }
320
321#endif
322
323 FwIndexType LinuxSpiDriverComponentBase ::
324 getNum_Time_OutputPorts() const
325 {
326 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_Time_OutputPort));
327 }
328
329 FwIndexType LinuxSpiDriverComponentBase ::
330 getNum_Tlm_OutputPorts() const
331 {
332 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_Tlm_OutputPort));
333 }
334
335 // ----------------------------------------------------------------------
336 // Connection status queries for special output ports
337 // ----------------------------------------------------------------------
338
339 bool LinuxSpiDriverComponentBase ::
340 isConnected_Log_OutputPort(FwIndexType portNum)
341 {
342 FW_ASSERT(
343 portNum < this->getNum_Log_OutputPorts(),
344 static_cast<FwAssertArgType>(portNum)
345 );
346
347 return this->m_Log_OutputPort[portNum].isConnected();
348 }
349
350#if FW_ENABLE_TEXT_LOGGING == 1
351
352 bool LinuxSpiDriverComponentBase ::
353 isConnected_LogText_OutputPort(FwIndexType portNum)
354 {
355 FW_ASSERT(
356 portNum < this->getNum_LogText_OutputPorts(),
357 static_cast<FwAssertArgType>(portNum)
358 );
359
360 return this->m_LogText_OutputPort[portNum].isConnected();
361 }
362
363#endif
364
365 bool LinuxSpiDriverComponentBase ::
366 isConnected_Time_OutputPort(FwIndexType portNum)
367 {
368 FW_ASSERT(
369 portNum < this->getNum_Time_OutputPorts(),
370 static_cast<FwAssertArgType>(portNum)
371 );
372
373 return this->m_Time_OutputPort[portNum].isConnected();
374 }
375
376 bool LinuxSpiDriverComponentBase ::
377 isConnected_Tlm_OutputPort(FwIndexType portNum)
378 {
379 FW_ASSERT(
380 portNum < this->getNum_Tlm_OutputPorts(),
381 static_cast<FwAssertArgType>(portNum)
382 );
383
384 return this->m_Tlm_OutputPort[portNum].isConnected();
385 }
386
387 // ----------------------------------------------------------------------
388 // Port handler base-class functions for typed input ports
389 //
390 // Call these functions directly to bypass the corresponding ports
391 // ----------------------------------------------------------------------
392
393 void LinuxSpiDriverComponentBase ::
394 SpiReadWrite_handlerBase(
395 FwIndexType portNum,
396 Fw::Buffer& writeBuffer,
397 Fw::Buffer& readBuffer
398 )
399 {
400 // Make sure port number is valid
401 FW_ASSERT(
402 portNum < this->getNum_SpiReadWrite_InputPorts(),
403 static_cast<FwAssertArgType>(portNum)
404 );
405
406 // Call handler function
407 this->SpiReadWrite_handler(
408 portNum,
409 writeBuffer,
410 readBuffer
411 );
412 }
413
414 // ----------------------------------------------------------------------
415 // Event logging functions
416 // ----------------------------------------------------------------------
417
418 void LinuxSpiDriverComponentBase ::
419 log_WARNING_HI_SPI_OpenError(
420 I32 device,
421 I32 select,
422 I32 error
423 ) const
424 {
425 // Get the time
426 Fw::Time _logTime;
427 if (this->m_Time_OutputPort[0].isConnected()) {
428 this->m_Time_OutputPort[0].invoke(_logTime);
429 }
430
431 FwEventIdType _id = static_cast<FwEventIdType>(0);
432
433 _id = this->getIdBase() + EVENTID_SPI_OPENERROR;
434
435 // Emit the event on the log port
436 if (this->m_Log_OutputPort[0].isConnected()) {
437 Fw::LogBuffer _logBuff;
439
440#if FW_AMPCS_COMPATIBLE
441 // Serialize the number of arguments
442 _status = _logBuff.serialize(static_cast<U8>(3));
443 FW_ASSERT(
444 _status == Fw::FW_SERIALIZE_OK,
445 static_cast<FwAssertArgType>(_status)
446 );
447#endif
448
449#if FW_AMPCS_COMPATIBLE
450 // Serialize the argument size
451 _status = _logBuff.serialize(
452 static_cast<U8>(sizeof(I32))
453 );
454 FW_ASSERT(
455 _status == Fw::FW_SERIALIZE_OK,
456 static_cast<FwAssertArgType>(_status)
457 );
458#endif
459 _status = _logBuff.serialize(device);
460 FW_ASSERT(
461 _status == Fw::FW_SERIALIZE_OK,
462 static_cast<FwAssertArgType>(_status)
463 );
464
465#if FW_AMPCS_COMPATIBLE
466 // Serialize the argument size
467 _status = _logBuff.serialize(
468 static_cast<U8>(sizeof(I32))
469 );
470 FW_ASSERT(
471 _status == Fw::FW_SERIALIZE_OK,
472 static_cast<FwAssertArgType>(_status)
473 );
474#endif
475 _status = _logBuff.serialize(select);
476 FW_ASSERT(
477 _status == Fw::FW_SERIALIZE_OK,
478 static_cast<FwAssertArgType>(_status)
479 );
480
481#if FW_AMPCS_COMPATIBLE
482 // Serialize the argument size
483 _status = _logBuff.serialize(
484 static_cast<U8>(sizeof(I32))
485 );
486 FW_ASSERT(
487 _status == Fw::FW_SERIALIZE_OK,
488 static_cast<FwAssertArgType>(_status)
489 );
490#endif
491 _status = _logBuff.serialize(error);
492 FW_ASSERT(
493 _status == Fw::FW_SERIALIZE_OK,
494 static_cast<FwAssertArgType>(_status)
495 );
496
497 this->m_Log_OutputPort[0].invoke(
498 _id,
499 _logTime,
501 _logBuff
502 );
503 }
504
505 // Emit the event on the text log port
506#if FW_ENABLE_TEXT_LOGGING
507 if (this->m_LogText_OutputPort[0].isConnected()) {
508#if FW_OBJECT_NAMES == 1
509 const char* _formatString =
510 "(%s) %s: Error opening SPI device %" PRIi32 ".%" PRIi32 ": %" PRIi32 "";
511#else
512 const char* _formatString =
513 "%s: Error opening SPI device %" PRIi32 ".%" PRIi32 ": %" PRIi32 "";
514#endif
515
516 Fw::TextLogString _logString;
517 _logString.format(
518 _formatString,
519#if FW_OBJECT_NAMES == 1
520 this->m_objName.toChar(),
521#endif
522 "SPI_OpenError ",
523 device,
524 select,
525 error
526 );
527
528 this->m_LogText_OutputPort[0].invoke(
529 _id,
530 _logTime,
532 _logString
533 );
534 }
535#endif
536 }
537
538 void LinuxSpiDriverComponentBase ::
539 log_WARNING_HI_SPI_ConfigError(
540 I32 device,
541 I32 select,
542 I32 error
543 ) const
544 {
545 // Get the time
546 Fw::Time _logTime;
547 if (this->m_Time_OutputPort[0].isConnected()) {
548 this->m_Time_OutputPort[0].invoke(_logTime);
549 }
550
551 FwEventIdType _id = static_cast<FwEventIdType>(0);
552
553 _id = this->getIdBase() + EVENTID_SPI_CONFIGERROR;
554
555 // Emit the event on the log port
556 if (this->m_Log_OutputPort[0].isConnected()) {
557 Fw::LogBuffer _logBuff;
559
560#if FW_AMPCS_COMPATIBLE
561 // Serialize the number of arguments
562 _status = _logBuff.serialize(static_cast<U8>(3));
563 FW_ASSERT(
564 _status == Fw::FW_SERIALIZE_OK,
565 static_cast<FwAssertArgType>(_status)
566 );
567#endif
568
569#if FW_AMPCS_COMPATIBLE
570 // Serialize the argument size
571 _status = _logBuff.serialize(
572 static_cast<U8>(sizeof(I32))
573 );
574 FW_ASSERT(
575 _status == Fw::FW_SERIALIZE_OK,
576 static_cast<FwAssertArgType>(_status)
577 );
578#endif
579 _status = _logBuff.serialize(device);
580 FW_ASSERT(
581 _status == Fw::FW_SERIALIZE_OK,
582 static_cast<FwAssertArgType>(_status)
583 );
584
585#if FW_AMPCS_COMPATIBLE
586 // Serialize the argument size
587 _status = _logBuff.serialize(
588 static_cast<U8>(sizeof(I32))
589 );
590 FW_ASSERT(
591 _status == Fw::FW_SERIALIZE_OK,
592 static_cast<FwAssertArgType>(_status)
593 );
594#endif
595 _status = _logBuff.serialize(select);
596 FW_ASSERT(
597 _status == Fw::FW_SERIALIZE_OK,
598 static_cast<FwAssertArgType>(_status)
599 );
600
601#if FW_AMPCS_COMPATIBLE
602 // Serialize the argument size
603 _status = _logBuff.serialize(
604 static_cast<U8>(sizeof(I32))
605 );
606 FW_ASSERT(
607 _status == Fw::FW_SERIALIZE_OK,
608 static_cast<FwAssertArgType>(_status)
609 );
610#endif
611 _status = _logBuff.serialize(error);
612 FW_ASSERT(
613 _status == Fw::FW_SERIALIZE_OK,
614 static_cast<FwAssertArgType>(_status)
615 );
616
617 this->m_Log_OutputPort[0].invoke(
618 _id,
619 _logTime,
621 _logBuff
622 );
623 }
624
625 // Emit the event on the text log port
626#if FW_ENABLE_TEXT_LOGGING
627 if (this->m_LogText_OutputPort[0].isConnected()) {
628#if FW_OBJECT_NAMES == 1
629 const char* _formatString =
630 "(%s) %s: Error configuring SPI device %" PRIi32 ".%" PRIi32 ": %" PRIi32 "";
631#else
632 const char* _formatString =
633 "%s: Error configuring SPI device %" PRIi32 ".%" PRIi32 ": %" PRIi32 "";
634#endif
635
636 Fw::TextLogString _logString;
637 _logString.format(
638 _formatString,
639#if FW_OBJECT_NAMES == 1
640 this->m_objName.toChar(),
641#endif
642 "SPI_ConfigError ",
643 device,
644 select,
645 error
646 );
647
648 this->m_LogText_OutputPort[0].invoke(
649 _id,
650 _logTime,
652 _logString
653 );
654 }
655#endif
656 }
657
658 void LinuxSpiDriverComponentBase ::
659 log_WARNING_HI_SPI_WriteError(
660 I32 device,
661 I32 select,
662 I32 error
663 )
664 {
665 // Check throttle value
666 if (this->m_SPI_WriteErrorThrottle >= EVENTID_SPI_WRITEERROR_THROTTLE) {
667 return;
668 }
669 else {
670 this->m_SPI_WriteErrorThrottle++;
671 }
672
673 // Get the time
674 Fw::Time _logTime;
675 if (this->m_Time_OutputPort[0].isConnected()) {
676 this->m_Time_OutputPort[0].invoke(_logTime);
677 }
678
679 FwEventIdType _id = static_cast<FwEventIdType>(0);
680
681 _id = this->getIdBase() + EVENTID_SPI_WRITEERROR;
682
683 // Emit the event on the log port
684 if (this->m_Log_OutputPort[0].isConnected()) {
685 Fw::LogBuffer _logBuff;
687
688#if FW_AMPCS_COMPATIBLE
689 // Serialize the number of arguments
690 _status = _logBuff.serialize(static_cast<U8>(3));
691 FW_ASSERT(
692 _status == Fw::FW_SERIALIZE_OK,
693 static_cast<FwAssertArgType>(_status)
694 );
695#endif
696
697#if FW_AMPCS_COMPATIBLE
698 // Serialize the argument size
699 _status = _logBuff.serialize(
700 static_cast<U8>(sizeof(I32))
701 );
702 FW_ASSERT(
703 _status == Fw::FW_SERIALIZE_OK,
704 static_cast<FwAssertArgType>(_status)
705 );
706#endif
707 _status = _logBuff.serialize(device);
708 FW_ASSERT(
709 _status == Fw::FW_SERIALIZE_OK,
710 static_cast<FwAssertArgType>(_status)
711 );
712
713#if FW_AMPCS_COMPATIBLE
714 // Serialize the argument size
715 _status = _logBuff.serialize(
716 static_cast<U8>(sizeof(I32))
717 );
718 FW_ASSERT(
719 _status == Fw::FW_SERIALIZE_OK,
720 static_cast<FwAssertArgType>(_status)
721 );
722#endif
723 _status = _logBuff.serialize(select);
724 FW_ASSERT(
725 _status == Fw::FW_SERIALIZE_OK,
726 static_cast<FwAssertArgType>(_status)
727 );
728
729#if FW_AMPCS_COMPATIBLE
730 // Serialize the argument size
731 _status = _logBuff.serialize(
732 static_cast<U8>(sizeof(I32))
733 );
734 FW_ASSERT(
735 _status == Fw::FW_SERIALIZE_OK,
736 static_cast<FwAssertArgType>(_status)
737 );
738#endif
739 _status = _logBuff.serialize(error);
740 FW_ASSERT(
741 _status == Fw::FW_SERIALIZE_OK,
742 static_cast<FwAssertArgType>(_status)
743 );
744
745 this->m_Log_OutputPort[0].invoke(
746 _id,
747 _logTime,
749 _logBuff
750 );
751 }
752
753 // Emit the event on the text log port
754#if FW_ENABLE_TEXT_LOGGING
755 if (this->m_LogText_OutputPort[0].isConnected()) {
756#if FW_OBJECT_NAMES == 1
757 const char* _formatString =
758 "(%s) %s: Error writing/reading SPI device %" PRIi32 ".%" PRIi32 ": %" PRIi32 "";
759#else
760 const char* _formatString =
761 "%s: Error writing/reading SPI device %" PRIi32 ".%" PRIi32 ": %" PRIi32 "";
762#endif
763
764 Fw::TextLogString _logString;
765 _logString.format(
766 _formatString,
767#if FW_OBJECT_NAMES == 1
768 this->m_objName.toChar(),
769#endif
770 "SPI_WriteError ",
771 device,
772 select,
773 error
774 );
775
776 this->m_LogText_OutputPort[0].invoke(
777 _id,
778 _logTime,
780 _logString
781 );
782 }
783#endif
784 }
785
786 void LinuxSpiDriverComponentBase ::
787 log_ACTIVITY_HI_SPI_PortOpened(
788 I32 device,
789 I32 select
790 ) const
791 {
792 // Get the time
793 Fw::Time _logTime;
794 if (this->m_Time_OutputPort[0].isConnected()) {
795 this->m_Time_OutputPort[0].invoke(_logTime);
796 }
797
798 FwEventIdType _id = static_cast<FwEventIdType>(0);
799
800 _id = this->getIdBase() + EVENTID_SPI_PORTOPENED;
801
802 // Emit the event on the log port
803 if (this->m_Log_OutputPort[0].isConnected()) {
804 Fw::LogBuffer _logBuff;
806
807#if FW_AMPCS_COMPATIBLE
808 // Serialize the number of arguments
809 _status = _logBuff.serialize(static_cast<U8>(2));
810 FW_ASSERT(
811 _status == Fw::FW_SERIALIZE_OK,
812 static_cast<FwAssertArgType>(_status)
813 );
814#endif
815
816#if FW_AMPCS_COMPATIBLE
817 // Serialize the argument size
818 _status = _logBuff.serialize(
819 static_cast<U8>(sizeof(I32))
820 );
821 FW_ASSERT(
822 _status == Fw::FW_SERIALIZE_OK,
823 static_cast<FwAssertArgType>(_status)
824 );
825#endif
826 _status = _logBuff.serialize(device);
827 FW_ASSERT(
828 _status == Fw::FW_SERIALIZE_OK,
829 static_cast<FwAssertArgType>(_status)
830 );
831
832#if FW_AMPCS_COMPATIBLE
833 // Serialize the argument size
834 _status = _logBuff.serialize(
835 static_cast<U8>(sizeof(I32))
836 );
837 FW_ASSERT(
838 _status == Fw::FW_SERIALIZE_OK,
839 static_cast<FwAssertArgType>(_status)
840 );
841#endif
842 _status = _logBuff.serialize(select);
843 FW_ASSERT(
844 _status == Fw::FW_SERIALIZE_OK,
845 static_cast<FwAssertArgType>(_status)
846 );
847
848 this->m_Log_OutputPort[0].invoke(
849 _id,
850 _logTime,
852 _logBuff
853 );
854 }
855
856 // Emit the event on the text log port
857#if FW_ENABLE_TEXT_LOGGING
858 if (this->m_LogText_OutputPort[0].isConnected()) {
859#if FW_OBJECT_NAMES == 1
860 const char* _formatString =
861 "(%s) %s: SPI Device %" PRIi32 ".%" PRIi32 " configured";
862#else
863 const char* _formatString =
864 "%s: SPI Device %" PRIi32 ".%" PRIi32 " configured";
865#endif
866
867 Fw::TextLogString _logString;
868 _logString.format(
869 _formatString,
870#if FW_OBJECT_NAMES == 1
871 this->m_objName.toChar(),
872#endif
873 "SPI_PortOpened ",
874 device,
875 select
876 );
877
878 this->m_LogText_OutputPort[0].invoke(
879 _id,
880 _logTime,
882 _logString
883 );
884 }
885#endif
886 }
887
888 // ----------------------------------------------------------------------
889 // Event throttle reset functions
890 // ----------------------------------------------------------------------
891
892 void LinuxSpiDriverComponentBase ::
893 log_WARNING_HI_SPI_WriteError_ThrottleClear()
894 {
895 // Reset throttle counter
896 this->m_SPI_WriteErrorThrottle = 0;
897 }
898
899 // ----------------------------------------------------------------------
900 // Telemetry write functions
901 // ----------------------------------------------------------------------
902
903 void LinuxSpiDriverComponentBase ::
904 tlmWrite_SPI_Bytes(
905 U32 arg,
906 Fw::Time _tlmTime
907 ) const
908 {
909 if (this->m_Tlm_OutputPort[0].isConnected()) {
910 if (
911 this->m_Time_OutputPort[0].isConnected() &&
912 (_tlmTime == Fw::ZERO_TIME)
913 ) {
914 this->m_Time_OutputPort[0].invoke(_tlmTime);
915 }
916
917 Fw::TlmBuffer _tlmBuff;
918 Fw::SerializeStatus _stat = _tlmBuff.serialize(arg);
919 FW_ASSERT(
920 _stat == Fw::FW_SERIALIZE_OK,
921 static_cast<FwAssertArgType>(_stat)
922 );
923
924 FwChanIdType _id;
925
926 _id = this->getIdBase() + CHANNELID_SPI_BYTES;
927
928 this->m_Tlm_OutputPort[0].invoke(
929 _id,
930 _tlmTime,
931 _tlmBuff
932 );
933 }
934 }
935
936 // ----------------------------------------------------------------------
937 // Time
938 // ----------------------------------------------------------------------
939
940 Fw::Time LinuxSpiDriverComponentBase ::
941 getTime()
942 {
943 if (this->m_Time_OutputPort[0].isConnected()) {
944 Fw::Time _time;
945 this->m_Time_OutputPort[0].invoke(_time);
946 return _time;
947 }
948 else {
949 return Fw::Time(TB_NONE, 0, 0);
950 }
951 }
952
953 // ----------------------------------------------------------------------
954 // Calls for messages received on typed input ports
955 // ----------------------------------------------------------------------
956
957 void LinuxSpiDriverComponentBase ::
958 m_p_SpiReadWrite_in(
959 Fw::PassiveComponentBase* callComp,
960 FwIndexType portNum,
961 Fw::Buffer& writeBuffer,
962 Fw::Buffer& readBuffer
963 )
964 {
965 FW_ASSERT(callComp);
966 LinuxSpiDriverComponentBase* compPtr = static_cast<LinuxSpiDriverComponentBase*>(callComp);
968 portNum,
969 writeBuffer,
970 readBuffer
971 );
972 }
973
974}
#define FW_ASSERT(...)
Definition Assert.hpp:14
uint8_t U8
8-bit unsigned integer
Definition BasicTypes.h:30
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
Definition BasicTypes.h:70
#define PRI_PlatformIntType
@ TB_NONE
No time base has been established.
Definition FpConfig.h:70
I32 FwEnumStoreType
Definition FpConfig.h:64
PlatformAssertArgType FwAssertArgType
Definition FpConfig.h:39
U32 FwChanIdType
Definition FpConfig.h:95
U32 FwEventIdType
Definition FpConfig.h:103
PlatformIndexType FwIndexType
Definition FpConfig.h:25
#define FW_OBJECT_NAMES
Indicates whether or not object names are stored (more memory, can be used for tracking objects)/*#en...
Definition FpConfig.h:148
Input SpiReadWrite port.
Auto-generated base for LinuxSpiDriver component.
void SpiReadWrite_handlerBase(FwIndexType portNum, Fw::Buffer &writeBuffer, Fw::Buffer &readBuffer)
Handler base-class function for input port SpiReadWrite.
@ WARNING_HI
A serious but recoverable event.
@ ACTIVITY_HI
Important informational events.
void init()
Object initializer.
Definition ObjBase.cpp:27
const char * toChar() const
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
void format(const CHAR *formatString,...)
write formatted string to buffer
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.
const Time ZERO_TIME
Definition Time.cpp:5