F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
FileDownlinkComponentAc.hpp
Go to the documentation of this file.
1// ======================================================================
2// \title FileDownlinkComponentAc.hpp
3// \author Generated by fpp-to-cpp
4// \brief hpp file for FileDownlink component base class
5// ======================================================================
6
7#ifndef Svc_FileDownlinkComponentAc_HPP
8#define Svc_FileDownlinkComponentAc_HPP
9
10#include "FpConfig.hpp"
12#include "Fw/Cmd/CmdPortAc.hpp"
15#include "Fw/Cmd/CmdString.hpp"
17#include "Fw/Log/LogPortAc.hpp"
18#include "Fw/Log/LogString.hpp"
19#if FW_ENABLE_TEXT_LOGGING == 1
21#endif
25#include "Fw/Tlm/TlmPortAc.hpp"
26#include "Fw/Tlm/TlmString.hpp"
27#include "Os/Mutex.hpp"
32
33namespace Svc {
34
41 {
42
43 // ----------------------------------------------------------------------
44 // Friend classes
45 // ----------------------------------------------------------------------
46
49
50 PROTECTED:
51
52 // ----------------------------------------------------------------------
53 // Constants
54 // ----------------------------------------------------------------------
55
57 enum {
59 };
60
62 enum {
67 };
68
70 enum {
77 };
78
80 enum {
84 };
85
87 enum {
91 };
92
94 enum {
104 };
105
107 enum {
111 };
112
113 public:
114
115 // ----------------------------------------------------------------------
116 // Component initialization
117 // ----------------------------------------------------------------------
118
120 void init(
121 FwSizeType queueDepth,
122 FwEnumStoreType instance = 0
123 );
124
125 public:
126
127 // ----------------------------------------------------------------------
128 // Getters for special input ports
129 // ----------------------------------------------------------------------
130
135 FwIndexType portNum
136 );
137
138 public:
139
140 // ----------------------------------------------------------------------
141 // Getters for typed input ports
142 // ----------------------------------------------------------------------
143
148 FwIndexType portNum
149 );
150
155 FwIndexType portNum
156 );
157
162 FwIndexType portNum
163 );
164
169 FwIndexType portNum
170 );
171
172 public:
173
174 // ----------------------------------------------------------------------
175 // Connect input ports to special output ports
176 // ----------------------------------------------------------------------
177
180 FwIndexType portNum,
182 );
183
186 FwIndexType portNum,
188 );
189
192 FwIndexType portNum,
193 Fw::InputLogPort* port
194 );
195
196#if FW_ENABLE_TEXT_LOGGING == 1
197
199 void set_textEventOut_OutputPort(
200 FwIndexType portNum,
202 );
203
204#endif
205
208 FwIndexType portNum,
209 Fw::InputTimePort* port
210 );
211
214 FwIndexType portNum,
215 Fw::InputTlmPort* port
216 );
217
218 public:
219
220 // ----------------------------------------------------------------------
221 // Connect typed input ports to typed output ports
222 // ----------------------------------------------------------------------
223
226 FwIndexType portNum,
228 );
229
232 FwIndexType portNum,
234 );
235
238 FwIndexType portNum,
239 Svc::InputPingPort* port
240 );
241
242#if FW_PORT_SERIALIZATION
243
244 public:
245
246 // ----------------------------------------------------------------------
247 // Connect serial input ports to special output ports
248 // ----------------------------------------------------------------------
249
252 FwIndexType portNum,
253 Fw::InputSerializePort* port
254 );
255
258 FwIndexType portNum,
259 Fw::InputSerializePort* port
260 );
261
264 FwIndexType portNum,
265 Fw::InputSerializePort* port
266 );
267
268#if FW_ENABLE_TEXT_LOGGING == 1
269
271 void set_textEventOut_OutputPort(
272 FwIndexType portNum,
273 Fw::InputSerializePort* port
274 );
275
276#endif
277
280 FwIndexType portNum,
281 Fw::InputSerializePort* port
282 );
283
286 FwIndexType portNum,
287 Fw::InputSerializePort* port
288 );
289
290#endif
291
292#if FW_PORT_SERIALIZATION
293
294 public:
295
296 // ----------------------------------------------------------------------
297 // Connect serial input ports to typed output ports
298 // ----------------------------------------------------------------------
299
302 FwIndexType portNum,
303 Fw::InputSerializePort* port
304 );
305
308 FwIndexType portNum,
309 Fw::InputSerializePort* port
310 );
311
314 FwIndexType portNum,
315 Fw::InputSerializePort* port
316 );
317
318#endif
319
320 public:
321
322 // ----------------------------------------------------------------------
323 // Command registration
324 // ----------------------------------------------------------------------
325
329 void regCommands();
330
331 PROTECTED:
332
333 // ----------------------------------------------------------------------
334 // Component construction and destruction
335 // ----------------------------------------------------------------------
336
339 const char* compName = ""
340 );
341
344
345 PROTECTED:
346
347 // ----------------------------------------------------------------------
348 // Getters for numbers of special input ports
349 // ----------------------------------------------------------------------
350
355
356 PROTECTED:
357
358 // ----------------------------------------------------------------------
359 // Getters for numbers of typed input ports
360 // ----------------------------------------------------------------------
361
366
371
376
381
382 PROTECTED:
383
384 // ----------------------------------------------------------------------
385 // Getters for numbers of special output ports
386 // ----------------------------------------------------------------------
387
392
397
402
403#if FW_ENABLE_TEXT_LOGGING == 1
404
408 FwIndexType getNum_textEventOut_OutputPorts() const;
409
410#endif
411
416
421
422 PROTECTED:
423
424 // ----------------------------------------------------------------------
425 // Getters for numbers of typed output ports
426 // ----------------------------------------------------------------------
427
432
437
442
443 PROTECTED:
444
445 // ----------------------------------------------------------------------
446 // Connection status queries for special output ports
447 // ----------------------------------------------------------------------
448
453 FwIndexType portNum
454 );
455
460 FwIndexType portNum
461 );
462
467 FwIndexType portNum
468 );
469
470#if FW_ENABLE_TEXT_LOGGING == 1
471
475 bool isConnected_textEventOut_OutputPort(
476 FwIndexType portNum
477 );
478
479#endif
480
485 FwIndexType portNum
486 );
487
492 FwIndexType portNum
493 );
494
495 PROTECTED:
496
497 // ----------------------------------------------------------------------
498 // Connection status queries for typed output ports
499 // ----------------------------------------------------------------------
500
505 FwIndexType portNum
506 );
507
512 FwIndexType portNum
513 );
514
519 FwIndexType portNum
520 );
521
522 PROTECTED:
523
524 // ----------------------------------------------------------------------
525 // Handlers to implement for typed input ports
526 // ----------------------------------------------------------------------
527
529 virtual void Run_handler(
530 FwIndexType portNum,
531 U32 context
532 ) = 0;
533
536 FwIndexType portNum,
537 const Fw::StringBase& sourceFileName,
538 const Fw::StringBase& destFileName,
539 U32 offset,
540 U32 length
541 ) = 0;
542
545 FwIndexType portNum,
546 Fw::Buffer& fwBuffer
547 ) = 0;
548
550 virtual void pingIn_handler(
551 FwIndexType portNum,
552 U32 key
553 ) = 0;
554
555 PROTECTED:
556
557 // ----------------------------------------------------------------------
558 // Port handler base-class functions for typed input ports
559 //
560 // Call these functions directly to bypass the corresponding ports
561 // ----------------------------------------------------------------------
562
564 void Run_handlerBase(
565 FwIndexType portNum,
566 U32 context
567 );
568
571 FwIndexType portNum,
572 const Fw::StringBase& sourceFileName,
573 const Fw::StringBase& destFileName,
574 U32 offset,
575 U32 length
576 );
577
580 FwIndexType portNum,
581 Fw::Buffer& fwBuffer
582 );
583
586 FwIndexType portNum,
587 U32 key
588 );
589
590 PROTECTED:
591
592 // ----------------------------------------------------------------------
593 // Pre-message hooks for typed async input ports
594 //
595 // Each of these functions is invoked just before processing a message
596 // on the corresponding port. By default, they do nothing. You can
597 // override them to provide specific pre-message behavior.
598 // ----------------------------------------------------------------------
599
601 virtual void Run_preMsgHook(
602 FwIndexType portNum,
603 U32 context
604 );
605
607 virtual void bufferReturn_preMsgHook(
608 FwIndexType portNum,
609 Fw::Buffer& fwBuffer
610 );
611
613 virtual void pingIn_preMsgHook(
614 FwIndexType portNum,
615 U32 key
616 );
617
618 PROTECTED:
619
620 // ----------------------------------------------------------------------
621 // Invocation functions for typed output ports
622 // ----------------------------------------------------------------------
623
625 void FileComplete_out(
626 FwIndexType portNum,
627 const Svc::SendFileResponse& resp
628 );
629
632 FwIndexType portNum,
633 Fw::Buffer& fwBuffer
634 );
635
637 void pingOut_out(
638 FwIndexType portNum,
639 U32 key
640 );
641
642 PROTECTED:
643
644 // ----------------------------------------------------------------------
645 // Command response
646 // ----------------------------------------------------------------------
647
649 void cmdResponse_out(
650 FwOpcodeType opCode,
651 U32 cmdSeq,
652 Fw::CmdResponse response
653 );
654
655 PROTECTED:
656
657 // ----------------------------------------------------------------------
658 // Command handlers to implement
659 // ----------------------------------------------------------------------
660
665 FwOpcodeType opCode,
666 U32 cmdSeq,
667 const Fw::CmdStringArg& sourceFileName,
668 const Fw::CmdStringArg& destFileName
669 ) = 0;
670
674 virtual void Cancel_cmdHandler(
675 FwOpcodeType opCode,
676 U32 cmdSeq
677 ) = 0;
678
683 FwOpcodeType opCode,
684 U32 cmdSeq,
685 const Fw::CmdStringArg& sourceFileName,
686 const Fw::CmdStringArg& destFileName,
687 U32 startOffset,
688 U32 length
689 ) = 0;
690
691 PROTECTED:
692
693 // ----------------------------------------------------------------------
694 // Command handler base-class functions
695 //
696 // Call these functions directly to bypass the command input port
697 // ----------------------------------------------------------------------
698
703 FwOpcodeType opCode,
704 U32 cmdSeq,
705 Fw::CmdArgBuffer& args
706 );
707
712 FwOpcodeType opCode,
713 U32 cmdSeq,
714 Fw::CmdArgBuffer& args
715 );
716
721 FwOpcodeType opCode,
722 U32 cmdSeq,
723 Fw::CmdArgBuffer& args
724 );
725
726 PROTECTED:
727
728 // ----------------------------------------------------------------------
729 // Pre-message hooks for async commands
730 //
731 // Each of these functions is invoked just before processing the
732 // corresponding command. By default they do nothing. You can
733 // override them to provide specific pre-command behavior.
734 // ----------------------------------------------------------------------
735
737 virtual void SendFile_preMsgHook(
738 FwOpcodeType opCode,
739 U32 cmdSeq
740 );
741
743 virtual void Cancel_preMsgHook(
744 FwOpcodeType opCode,
745 U32 cmdSeq
746 );
747
749 virtual void SendPartial_preMsgHook(
750 FwOpcodeType opCode,
751 U32 cmdSeq
752 );
753
754 PROTECTED:
755
756 // ----------------------------------------------------------------------
757 // Event logging functions
758 // ----------------------------------------------------------------------
759
764 const Fw::StringBase& fileName
765 ) const;
766
771 const Fw::StringBase& fileName,
772 I32 status
773 ) const;
774
779 const Fw::StringBase& sourceFileName,
780 const Fw::StringBase& destFileName
781 ) const;
782
787 const Fw::StringBase& sourceFileName,
788 const Fw::StringBase& destFileName
789 ) const;
790
795 const Fw::StringBase& sourceFileName,
796 const Fw::StringBase& destFileName
797 ) const;
798
803 U32 startOffset,
804 U32 length,
805 U32 filesize,
806 const Fw::StringBase& sourceFileName,
807 const Fw::StringBase& destFileName
808 ) const;
809
814 const Fw::StringBase& sourceFileName,
815 const Fw::StringBase& destFileName,
816 U32 startOffset,
817 U32 filesize
818 ) const;
819
824 const Fw::StringBase& sourceFileName,
825 U32 byteOffset
826 ) const;
827
832 U32 fileSize,
833 const Fw::StringBase& sourceFileName,
834 const Fw::StringBase& destFileName
835 ) const;
836
837 PROTECTED:
838
839 // ----------------------------------------------------------------------
840 // Telemetry write functions
841 // ----------------------------------------------------------------------
842
847 U32 arg,
848 Fw::Time _tlmTime = Fw::Time()
849 ) const;
850
855 U32 arg,
856 Fw::Time _tlmTime = Fw::Time()
857 ) const;
858
863 U32 arg,
864 Fw::Time _tlmTime = Fw::Time()
865 ) const;
866
867 PROTECTED:
868
869 // ----------------------------------------------------------------------
870 // Time
871 // ----------------------------------------------------------------------
872
877
878 PROTECTED:
879
880 // ----------------------------------------------------------------------
881 // Mutex operations for guarded ports
882 //
883 // You can override these operations to provide more sophisticated
884 // synchronization
885 // ----------------------------------------------------------------------
886
888 virtual void lock();
889
891 virtual void unLock();
892
893 PRIVATE:
894
895 // ----------------------------------------------------------------------
896 // Message dispatch functions
897 // ----------------------------------------------------------------------
898
900 virtual MsgDispatchStatus doDispatch();
901
902 PRIVATE:
903
904 // ----------------------------------------------------------------------
905 // Calls for messages received on special input ports
906 // ----------------------------------------------------------------------
907
909 static void m_p_cmdIn_in(
910 Fw::PassiveComponentBase* callComp,
911 FwIndexType portNum,
912 FwOpcodeType opCode,
913 U32 cmdSeq,
914 Fw::CmdArgBuffer& args
915 );
916
917 PRIVATE:
918
919 // ----------------------------------------------------------------------
920 // Calls for messages received on typed input ports
921 // ----------------------------------------------------------------------
922
924 static void m_p_Run_in(
925 Fw::PassiveComponentBase* callComp,
926 FwIndexType portNum,
927 U32 context
928 );
929
931 static Svc::SendFileResponse m_p_SendFile_in(
932 Fw::PassiveComponentBase* callComp,
933 FwIndexType portNum,
934 const Fw::StringBase& sourceFileName,
935 const Fw::StringBase& destFileName,
936 U32 offset,
937 U32 length
938 );
939
941 static void m_p_bufferReturn_in(
942 Fw::PassiveComponentBase* callComp,
943 FwIndexType portNum,
944 Fw::Buffer& fwBuffer
945 );
946
948 static void m_p_pingIn_in(
949 Fw::PassiveComponentBase* callComp,
950 FwIndexType portNum,
951 U32 key
952 );
953
954 PRIVATE:
955
956 // ----------------------------------------------------------------------
957 // Special input ports
958 // ----------------------------------------------------------------------
959
961 Fw::InputCmdPort m_cmdIn_InputPort[NUM_CMDIN_INPUT_PORTS];
962
963 PRIVATE:
964
965 // ----------------------------------------------------------------------
966 // Typed input ports
967 // ----------------------------------------------------------------------
968
971
974
977
979 Svc::InputPingPort m_pingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
980
981 PRIVATE:
982
983 // ----------------------------------------------------------------------
984 // Special output ports
985 // ----------------------------------------------------------------------
986
988 Fw::OutputCmdRegPort m_cmdRegOut_OutputPort[NUM_CMDREGOUT_OUTPUT_PORTS];
989
992
994 Fw::OutputLogPort m_eventOut_OutputPort[NUM_EVENTOUT_OUTPUT_PORTS];
995
996#if FW_ENABLE_TEXT_LOGGING == 1
997
999 Fw::OutputLogTextPort m_textEventOut_OutputPort[NUM_TEXTEVENTOUT_OUTPUT_PORTS];
1000
1001#endif
1002
1004 Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
1005
1007 Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
1008
1009 PRIVATE:
1010
1011 // ----------------------------------------------------------------------
1012 // Typed output ports
1013 // ----------------------------------------------------------------------
1014
1017
1019 Fw::OutputBufferSendPort m_bufferSendOut_OutputPort[NUM_BUFFERSENDOUT_OUTPUT_PORTS];
1020
1022 Svc::OutputPingPort m_pingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
1023
1024 PRIVATE:
1025
1026 // ----------------------------------------------------------------------
1027 // Mutexes
1028 // ----------------------------------------------------------------------
1029
1031 Os::Mutex m_guardedPortMutex;
1032
1033 };
1034
1035}
1036
1037#endif
I32 FwEnumStoreType
Definition FpConfig.h:64
U32 FwOpcodeType
Definition FpConfig.h:91
PlatformSizeType FwSizeType
Definition FpConfig.h:35
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