F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
VersionComponentAc.hpp
Go to the documentation of this file.
1// ======================================================================
2// \title VersionComponentAc.hpp
3// \author Generated by fpp-to-cpp
4// \brief hpp file for Version component base class
5// ======================================================================
6
7#ifndef Svc_VersionComponentAc_HPP
8#define Svc_VersionComponentAc_HPP
9
10#include "FpConfig.hpp"
11#include "Fw/Cmd/CmdPortAc.hpp"
14#include "Fw/Cmd/CmdString.hpp"
16#include "Fw/Log/LogPortAc.hpp"
17#include "Fw/Log/LogString.hpp"
18#if FW_ENABLE_TEXT_LOGGING == 1
20#endif
24#include "Fw/Tlm/TlmPortAc.hpp"
25#include "Fw/Tlm/TlmString.hpp"
26#include "Os/Mutex.hpp"
32
33namespace Svc {
34
39 {
40
41 // ----------------------------------------------------------------------
42 // Friend classes
43 // ----------------------------------------------------------------------
44
47
48 PROTECTED:
49
50 // ----------------------------------------------------------------------
51 // Constants
52 // ----------------------------------------------------------------------
53
55 enum {
57 };
58
60 enum {
63 };
64
66 enum {
73 };
74
76 enum {
79 };
80
82 enum {
87 };
88
90 enum {
113 };
114
115 public:
116
117 // ----------------------------------------------------------------------
118 // Component initialization
119 // ----------------------------------------------------------------------
120
122 void init(
123 FwEnumStoreType instance = 0
124 );
125
126 public:
127
128 // ----------------------------------------------------------------------
129 // Getters for special input ports
130 // ----------------------------------------------------------------------
131
136 FwIndexType portNum
137 );
138
139 public:
140
141 // ----------------------------------------------------------------------
142 // Getters for typed input ports
143 // ----------------------------------------------------------------------
144
149 FwIndexType portNum
150 );
151
156 FwIndexType portNum
157 );
158
159 public:
160
161 // ----------------------------------------------------------------------
162 // Connect input ports to special output ports
163 // ----------------------------------------------------------------------
164
167 FwIndexType portNum,
169 );
170
173 FwIndexType portNum,
175 );
176
179 FwIndexType portNum,
180 Fw::InputLogPort* port
181 );
182
183#if FW_ENABLE_TEXT_LOGGING == 1
184
186 void set_logTextOut_OutputPort(
187 FwIndexType portNum,
189 );
190
191#endif
192
195 FwIndexType portNum,
196 Fw::InputTimePort* port
197 );
198
201 FwIndexType portNum,
202 Fw::InputTlmPort* port
203 );
204
205#if FW_PORT_SERIALIZATION
206
207 public:
208
209 // ----------------------------------------------------------------------
210 // Connect serial input ports to special output ports
211 // ----------------------------------------------------------------------
212
215 FwIndexType portNum,
216 Fw::InputSerializePort* port
217 );
218
221 FwIndexType portNum,
222 Fw::InputSerializePort* port
223 );
224
227 FwIndexType portNum,
228 Fw::InputSerializePort* port
229 );
230
231#if FW_ENABLE_TEXT_LOGGING == 1
232
234 void set_logTextOut_OutputPort(
235 FwIndexType portNum,
236 Fw::InputSerializePort* port
237 );
238
239#endif
240
243 FwIndexType portNum,
244 Fw::InputSerializePort* port
245 );
246
249 FwIndexType portNum,
250 Fw::InputSerializePort* port
251 );
252
253#endif
254
255 public:
256
257 // ----------------------------------------------------------------------
258 // Command registration
259 // ----------------------------------------------------------------------
260
264 void regCommands();
265
266 PROTECTED:
267
268 // ----------------------------------------------------------------------
269 // Component construction and destruction
270 // ----------------------------------------------------------------------
271
274 const char* compName = ""
275 );
276
278 virtual ~VersionComponentBase();
279
280 PROTECTED:
281
282 // ----------------------------------------------------------------------
283 // Getters for numbers of special input ports
284 // ----------------------------------------------------------------------
285
290
291 PROTECTED:
292
293 // ----------------------------------------------------------------------
294 // Getters for numbers of typed input ports
295 // ----------------------------------------------------------------------
296
301
306
307 PROTECTED:
308
309 // ----------------------------------------------------------------------
310 // Getters for numbers of special output ports
311 // ----------------------------------------------------------------------
312
317
322
327
328#if FW_ENABLE_TEXT_LOGGING == 1
329
333 FwIndexType getNum_logTextOut_OutputPorts() const;
334
335#endif
336
341
346
347 PROTECTED:
348
349 // ----------------------------------------------------------------------
350 // Connection status queries for special output ports
351 // ----------------------------------------------------------------------
352
357 FwIndexType portNum
358 );
359
364 FwIndexType portNum
365 );
366
371 FwIndexType portNum
372 );
373
374#if FW_ENABLE_TEXT_LOGGING == 1
375
379 bool isConnected_logTextOut_OutputPort(
380 FwIndexType portNum
381 );
382
383#endif
384
389 FwIndexType portNum
390 );
391
396 FwIndexType portNum
397 );
398
399 PROTECTED:
400
401 // ----------------------------------------------------------------------
402 // Handlers to implement for typed input ports
403 // ----------------------------------------------------------------------
404
406 virtual void getVersion_handler(
407 FwIndexType portNum,
408 const Svc::VersionCfg::VersionEnum& version_id,
409 Fw::StringBase& version_string,
410 Svc::VersionStatus& status
411 ) = 0;
412
414 virtual void setVersion_handler(
415 FwIndexType portNum,
416 const Svc::VersionCfg::VersionEnum& version_id,
417 Fw::StringBase& version_string,
418 Svc::VersionStatus& status
419 ) = 0;
420
421 PROTECTED:
422
423 // ----------------------------------------------------------------------
424 // Port handler base-class functions for typed input ports
425 //
426 // Call these functions directly to bypass the corresponding ports
427 // ----------------------------------------------------------------------
428
431 FwIndexType portNum,
432 const Svc::VersionCfg::VersionEnum& version_id,
433 Fw::StringBase& version_string,
434 Svc::VersionStatus& status
435 );
436
439 FwIndexType portNum,
440 const Svc::VersionCfg::VersionEnum& version_id,
441 Fw::StringBase& version_string,
442 Svc::VersionStatus& status
443 );
444
445 PROTECTED:
446
447 // ----------------------------------------------------------------------
448 // Command response
449 // ----------------------------------------------------------------------
450
452 void cmdResponse_out(
453 FwOpcodeType opCode,
454 U32 cmdSeq,
455 Fw::CmdResponse response
456 );
457
458 PROTECTED:
459
460 // ----------------------------------------------------------------------
461 // Command handlers to implement
462 // ----------------------------------------------------------------------
463
467 virtual void ENABLE_cmdHandler(
468 FwOpcodeType opCode,
469 U32 cmdSeq,
470 Svc::VersionEnabled enable
471 ) = 0;
472
476 virtual void VERSION_cmdHandler(
477 FwOpcodeType opCode,
478 U32 cmdSeq,
479 Svc::VersionType version_type
480 ) = 0;
481
482 PROTECTED:
483
484 // ----------------------------------------------------------------------
485 // Command handler base-class functions
486 //
487 // Call these functions directly to bypass the command input port
488 // ----------------------------------------------------------------------
489
494 FwOpcodeType opCode,
495 U32 cmdSeq,
496 Fw::CmdArgBuffer& args
497 );
498
503 FwOpcodeType opCode,
504 U32 cmdSeq,
505 Fw::CmdArgBuffer& args
506 );
507
508 PROTECTED:
509
510 // ----------------------------------------------------------------------
511 // Event logging functions
512 // ----------------------------------------------------------------------
513
518 const Fw::StringBase& version
519 ) const;
520
525 const Fw::StringBase& version
526 ) const;
527
532 const Fw::StringBase& version
533 ) const;
534
539 Svc::VersionCfg::VersionEnum version_enum,
540 const Fw::StringBase& version_value
541 ) const;
542
543 PROTECTED:
544
545 // ----------------------------------------------------------------------
546 // Telemetry write functions
547 // ----------------------------------------------------------------------
548
553 const Fw::StringBase& arg,
554 Fw::Time _tlmTime = Fw::Time()
555 ) const;
556
561 const Fw::StringBase& arg,
562 Fw::Time _tlmTime = Fw::Time()
563 ) const;
564
569 const Svc::CustomVersionDb& arg,
570 Fw::Time _tlmTime = Fw::Time()
571 ) const;
572
575 const Svc::CustomVersionDb& arg,
576 Fw::Time _tlmTime = Fw::Time()
577 ) const;
578
581 const Svc::CustomVersionDb& arg,
582 Fw::Time _tlmTime = Fw::Time()
583 ) const;
584
587 const Svc::CustomVersionDb& arg,
588 Fw::Time _tlmTime = Fw::Time()
589 ) const;
590
593 const Svc::CustomVersionDb& arg,
594 Fw::Time _tlmTime = Fw::Time()
595 ) const;
596
599 const Svc::CustomVersionDb& arg,
600 Fw::Time _tlmTime = Fw::Time()
601 ) const;
602
605 const Svc::CustomVersionDb& arg,
606 Fw::Time _tlmTime = Fw::Time()
607 ) const;
608
611 const Svc::CustomVersionDb& arg,
612 Fw::Time _tlmTime = Fw::Time()
613 ) const;
614
617 const Svc::CustomVersionDb& arg,
618 Fw::Time _tlmTime = Fw::Time()
619 ) const;
620
623 const Svc::CustomVersionDb& arg,
624 Fw::Time _tlmTime = Fw::Time()
625 ) const;
626
631 const Fw::StringBase& arg,
632 Fw::Time _tlmTime = Fw::Time()
633 ) const;
634
637 const Fw::StringBase& arg,
638 Fw::Time _tlmTime = Fw::Time()
639 ) const;
640
643 const Fw::StringBase& arg,
644 Fw::Time _tlmTime = Fw::Time()
645 ) const;
646
649 const Fw::StringBase& arg,
650 Fw::Time _tlmTime = Fw::Time()
651 ) const;
652
655 const Fw::StringBase& arg,
656 Fw::Time _tlmTime = Fw::Time()
657 ) const;
658
661 const Fw::StringBase& arg,
662 Fw::Time _tlmTime = Fw::Time()
663 ) const;
664
667 const Fw::StringBase& arg,
668 Fw::Time _tlmTime = Fw::Time()
669 ) const;
670
673 const Fw::StringBase& arg,
674 Fw::Time _tlmTime = Fw::Time()
675 ) const;
676
679 const Fw::StringBase& arg,
680 Fw::Time _tlmTime = Fw::Time()
681 ) const;
682
685 const Fw::StringBase& arg,
686 Fw::Time _tlmTime = Fw::Time()
687 ) const;
688
689 PROTECTED:
690
691 // ----------------------------------------------------------------------
692 // Time
693 // ----------------------------------------------------------------------
694
699
700 PROTECTED:
701
702 // ----------------------------------------------------------------------
703 // Mutex operations for guarded ports
704 //
705 // You can override these operations to provide more sophisticated
706 // synchronization
707 // ----------------------------------------------------------------------
708
710 virtual void lock();
711
713 virtual void unLock();
714
715 PRIVATE:
716
717 // ----------------------------------------------------------------------
718 // Calls for messages received on special input ports
719 // ----------------------------------------------------------------------
720
722 static void m_p_cmdIn_in(
723 Fw::PassiveComponentBase* callComp,
724 FwIndexType portNum,
725 FwOpcodeType opCode,
726 U32 cmdSeq,
727 Fw::CmdArgBuffer& args
728 );
729
730 PRIVATE:
731
732 // ----------------------------------------------------------------------
733 // Calls for messages received on typed input ports
734 // ----------------------------------------------------------------------
735
737 static void m_p_getVersion_in(
738 Fw::PassiveComponentBase* callComp,
739 FwIndexType portNum,
740 const Svc::VersionCfg::VersionEnum& version_id,
741 Fw::StringBase& version_string,
742 Svc::VersionStatus& status
743 );
744
746 static void m_p_setVersion_in(
747 Fw::PassiveComponentBase* callComp,
748 FwIndexType portNum,
749 const Svc::VersionCfg::VersionEnum& version_id,
750 Fw::StringBase& version_string,
751 Svc::VersionStatus& status
752 );
753
754 PRIVATE:
755
756 // ----------------------------------------------------------------------
757 // Special input ports
758 // ----------------------------------------------------------------------
759
761 Fw::InputCmdPort m_cmdIn_InputPort[NUM_CMDIN_INPUT_PORTS];
762
763 PRIVATE:
764
765 // ----------------------------------------------------------------------
766 // Typed input ports
767 // ----------------------------------------------------------------------
768
771
774
775 PRIVATE:
776
777 // ----------------------------------------------------------------------
778 // Special output ports
779 // ----------------------------------------------------------------------
780
782 Fw::OutputCmdRegPort m_cmdRegOut_OutputPort[NUM_CMDREGOUT_OUTPUT_PORTS];
783
786
788 Fw::OutputLogPort m_logOut_OutputPort[NUM_LOGOUT_OUTPUT_PORTS];
789
790#if FW_ENABLE_TEXT_LOGGING == 1
791
793 Fw::OutputLogTextPort m_logTextOut_OutputPort[NUM_LOGTEXTOUT_OUTPUT_PORTS];
794
795#endif
796
798 Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
799
801 Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
802
803 PRIVATE:
804
805 // ----------------------------------------------------------------------
806 // Mutexes
807 // ----------------------------------------------------------------------
808
810 Os::Mutex m_guardedPortMutex;
811
812 };
813
814}
815
816#endif
I32 FwEnumStoreType
Definition FpConfig.h:64
U32 FwOpcodeType
Definition FpConfig.h:91
PlatformIndexType FwIndexType
Definition FpConfig.h:25
C++-compatible configuration header for fprime configuration.
Enum representing a command response.
void init()
Object initializer.
Definition ObjBase.cpp:27
Data Structure for custom version Tlm.
Auto-generated base for Version component.
virtual void ENABLE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, Svc::VersionEnabled enable)=0
Fw::InputCmdPort * get_cmdIn_InputPort(FwIndexType portNum)
void tlmWrite_FrameworkVersion(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
bool isConnected_logOut_OutputPort(FwIndexType portNum)
void tlmWrite_LibraryVersion08(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion08.
void getVersion_handlerBase(FwIndexType portNum, const Svc::VersionCfg::VersionEnum &version_id, Fw::StringBase &version_string, Svc::VersionStatus &status)
Handler base-class function for input port getVersion.
FwIndexType getNum_setVersion_InputPorts() const
void tlmWrite_LibraryVersion10(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion10.
void set_logOut_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to logOut[portNum].
void set_cmdResponseOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to cmdResponseOut[portNum].
void tlmWrite_LibraryVersion04(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion04.
virtual void setVersion_handler(FwIndexType portNum, const Svc::VersionCfg::VersionEnum &version_id, Fw::StringBase &version_string, Svc::VersionStatus &status)=0
Handler for input port setVersion.
virtual void getVersion_handler(FwIndexType portNum, const Svc::VersionCfg::VersionEnum &version_id, Fw::StringBase &version_string, Svc::VersionStatus &status)=0
Handler for input port getVersion.
void tlmWrite_LibraryVersion01(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
void ENABLE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void log_ACTIVITY_LO_ProjectVersion(const Fw::StringBase &version) const
void VERSION_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void tlmWrite_CustomVersion08(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion08.
FwIndexType getNum_timeCaller_OutputPorts() const
@ CHANNELID_LIBRARYVERSION03
Channel ID for LibraryVersion03.
@ CHANNELID_LIBRARYVERSION09
Channel ID for LibraryVersion09.
@ CHANNELID_CUSTOMVERSION05
Channel ID for CustomVersion05.
@ CHANNELID_CUSTOMVERSION09
Channel ID for CustomVersion09.
@ CHANNELID_CUSTOMVERSION03
Channel ID for CustomVersion03.
@ CHANNELID_CUSTOMVERSION06
Channel ID for CustomVersion06.
@ CHANNELID_CUSTOMVERSION07
Channel ID for CustomVersion07.
@ CHANNELID_CUSTOMVERSION04
Channel ID for CustomVersion04.
@ CHANNELID_LIBRARYVERSION05
Channel ID for LibraryVersion05.
@ CHANNELID_CUSTOMVERSION08
Channel ID for CustomVersion08.
@ CHANNELID_CUSTOMVERSION01
Channel ID for CustomVersion01.
@ CHANNELID_LIBRARYVERSION08
Channel ID for LibraryVersion08.
@ CHANNELID_CUSTOMVERSION10
Channel ID for CustomVersion10.
@ CHANNELID_LIBRARYVERSION02
Channel ID for LibraryVersion02.
@ CHANNELID_LIBRARYVERSION07
Channel ID for LibraryVersion07.
@ CHANNELID_LIBRARYVERSION10
Channel ID for LibraryVersion10.
@ CHANNELID_PROJECTVERSION
Channel ID for ProjectVersion.
@ CHANNELID_LIBRARYVERSION06
Channel ID for LibraryVersion06.
@ CHANNELID_LIBRARYVERSION01
Channel ID for LibraryVersion01.
@ CHANNELID_LIBRARYVERSION04
Channel ID for LibraryVersion04.
@ CHANNELID_CUSTOMVERSION02
Channel ID for CustomVersion02.
@ CHANNELID_FRAMEWORKVERSION
Channel ID for FrameworkVersion.
FwIndexType getNum_cmdRegOut_OutputPorts() const
void log_ACTIVITY_LO_CustomVersions(Svc::VersionCfg::VersionEnum version_enum, const Fw::StringBase &version_value) const
void tlmWrite_LibraryVersion02(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion02.
void set_cmdRegOut_OutputPort(FwIndexType portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void tlmWrite_CustomVersion05(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion05.
void regCommands()
Register commands with the Command Dispatcher.
void tlmWrite_CustomVersion04(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion04.
void set_tlmOut_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
virtual void lock()
Lock the guarded mutex.
virtual void VERSION_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, Svc::VersionType version_type)=0
void tlmWrite_ProjectVersion(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
void log_ACTIVITY_LO_LibraryVersions(const Fw::StringBase &version) const
bool isConnected_timeCaller_OutputPort(FwIndexType portNum)
void tlmWrite_CustomVersion10(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion10.
bool isConnected_cmdResponseOut_OutputPort(FwIndexType portNum)
FwIndexType getNum_getVersion_InputPorts() const
void set_timeCaller_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
void tlmWrite_LibraryVersion06(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion06.
void tlmWrite_LibraryVersion05(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion05.
friend class VersionComponentBaseFriend
Friend class for white-box testing.
FwIndexType getNum_tlmOut_OutputPorts() const
@ OPCODE_ENABLE
A command to enable or disable Event verbosity and Telemetry.
@ OPCODE_VERSION
Report version as Event.
bool isConnected_cmdRegOut_OutputPort(FwIndexType portNum)
void tlmWrite_CustomVersion01(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
void tlmWrite_LibraryVersion03(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion03.
void tlmWrite_LibraryVersion09(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion09.
virtual void unLock()
Unlock the guarded mutex.
Svc::InputVersionPort * get_getVersion_InputPort(FwIndexType portNum)
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
void tlmWrite_CustomVersion07(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion07.
@ EVENTID_PROJECTVERSION
Version of the git repository.
@ EVENTID_CUSTOMVERSIONS
Version of the git repository.
@ EVENTID_FRAMEWORKVERSION
Version of the git repository.
@ EVENTID_LIBRARYVERSIONS
Version of the git repository.
void tlmWrite_LibraryVersion07(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel LibraryVersion07.
virtual ~VersionComponentBase()
Destroy VersionComponentBase object.
bool isConnected_tlmOut_OutputPort(FwIndexType portNum)
void tlmWrite_CustomVersion03(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion03.
void setVersion_handlerBase(FwIndexType portNum, const Svc::VersionCfg::VersionEnum &version_id, Fw::StringBase &version_string, Svc::VersionStatus &status)
Handler base-class function for input port setVersion.
void tlmWrite_CustomVersion02(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion02.
FwIndexType getNum_cmdIn_InputPorts() const
FwIndexType getNum_cmdResponseOut_OutputPorts() const
void log_ACTIVITY_LO_FrameworkVersion(const Fw::StringBase &version) const
Svc::InputVersionPort * get_setVersion_InputPort(FwIndexType portNum)
void tlmWrite_CustomVersion09(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion09.
FwIndexType getNum_logOut_OutputPorts() const
void tlmWrite_CustomVersion06(const Svc::CustomVersionDb &arg, Fw::Time _tlmTime=Fw::Time()) const
Write telemetry channel CustomVersion06.
Tracks versions for project, framework and user defined versions etc.
An enumeration for version status.
An enumeration for Version Type.