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
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 NATIVE_INT_TYPE queueDepth,
122 NATIVE_INT_TYPE instance = 0
123 );
124
125 public:
126
127 // ----------------------------------------------------------------------
128 // Getters for special input ports
129 // ----------------------------------------------------------------------
130
135 NATIVE_INT_TYPE portNum
136 );
137
138 public:
139
140 // ----------------------------------------------------------------------
141 // Getters for typed input ports
142 // ----------------------------------------------------------------------
143
148 NATIVE_INT_TYPE portNum
149 );
150
155 NATIVE_INT_TYPE portNum
156 );
157
162 NATIVE_INT_TYPE portNum
163 );
164
169 NATIVE_INT_TYPE portNum
170 );
171
172 public:
173
174 // ----------------------------------------------------------------------
175 // Connect input ports to special output ports
176 // ----------------------------------------------------------------------
177
180 NATIVE_INT_TYPE portNum,
182 );
183
186 NATIVE_INT_TYPE portNum,
188 );
189
192 NATIVE_INT_TYPE portNum,
193 Fw::InputLogPort* port
194 );
195
196#if FW_ENABLE_TEXT_LOGGING == 1
197
199 void set_textEventOut_OutputPort(
200 NATIVE_INT_TYPE portNum,
202 );
203
204#endif
205
208 NATIVE_INT_TYPE portNum,
209 Fw::InputTimePort* port
210 );
211
214 NATIVE_INT_TYPE portNum,
215 Fw::InputTlmPort* port
216 );
217
218 public:
219
220 // ----------------------------------------------------------------------
221 // Connect typed input ports to typed output ports
222 // ----------------------------------------------------------------------
223
226 NATIVE_INT_TYPE portNum,
228 );
229
232 NATIVE_INT_TYPE portNum,
234 );
235
238 NATIVE_INT_TYPE 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 NATIVE_INT_TYPE portNum,
253 Fw::InputSerializePort* port
254 );
255
258 NATIVE_INT_TYPE portNum,
259 Fw::InputSerializePort* port
260 );
261
264 NATIVE_INT_TYPE portNum,
265 Fw::InputSerializePort* port
266 );
267
268#if FW_ENABLE_TEXT_LOGGING == 1
269
271 void set_textEventOut_OutputPort(
272 NATIVE_INT_TYPE portNum,
273 Fw::InputSerializePort* port
274 );
275
276#endif
277
280 NATIVE_INT_TYPE portNum,
281 Fw::InputSerializePort* port
282 );
283
286 NATIVE_INT_TYPE 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 NATIVE_INT_TYPE portNum,
303 Fw::InputSerializePort* port
304 );
305
308 NATIVE_INT_TYPE portNum,
309 Fw::InputSerializePort* port
310 );
311
314 NATIVE_INT_TYPE 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 NATIVE_INT_TYPE 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 NATIVE_INT_TYPE portNum
454 );
455
460 NATIVE_INT_TYPE portNum
461 );
462
467 NATIVE_INT_TYPE portNum
468 );
469
470#if FW_ENABLE_TEXT_LOGGING == 1
471
475 bool isConnected_textEventOut_OutputPort(
476 NATIVE_INT_TYPE portNum
477 );
478
479#endif
480
485 NATIVE_INT_TYPE portNum
486 );
487
492 NATIVE_INT_TYPE portNum
493 );
494
495 PROTECTED:
496
497 // ----------------------------------------------------------------------
498 // Connection status queries for typed output ports
499 // ----------------------------------------------------------------------
500
505 NATIVE_INT_TYPE portNum
506 );
507
512 NATIVE_INT_TYPE portNum
513 );
514
519 NATIVE_INT_TYPE portNum
520 );
521
522 PROTECTED:
523
524 // ----------------------------------------------------------------------
525 // Handlers to implement for typed input ports
526 // ----------------------------------------------------------------------
527
529 virtual void Run_handler(
530 NATIVE_INT_TYPE portNum,
531 NATIVE_UINT_TYPE context
532 ) = 0;
533
536 NATIVE_INT_TYPE portNum,
539 U32 offset,
540 U32 length
541 ) = 0;
542
545 NATIVE_INT_TYPE portNum,
546 Fw::Buffer& fwBuffer
547 ) = 0;
548
550 virtual void pingIn_handler(
551 NATIVE_INT_TYPE 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 NATIVE_INT_TYPE portNum,
566 NATIVE_UINT_TYPE context
567 );
568
571 NATIVE_INT_TYPE portNum,
574 U32 offset,
575 U32 length
576 );
577
580 NATIVE_INT_TYPE portNum,
581 Fw::Buffer& fwBuffer
582 );
583
586 NATIVE_INT_TYPE 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 NATIVE_INT_TYPE portNum,
603 NATIVE_UINT_TYPE context
604 );
605
607 virtual void bufferReturn_preMsgHook(
608 NATIVE_INT_TYPE portNum,
609 Fw::Buffer& fwBuffer
610 );
611
613 virtual void pingIn_preMsgHook(
614 NATIVE_INT_TYPE portNum,
615 U32 key
616 );
617
618 PROTECTED:
619
620 // ----------------------------------------------------------------------
621 // Invocation functions for typed output ports
622 // ----------------------------------------------------------------------
623
625 void FileComplete_out(
626 NATIVE_INT_TYPE portNum,
627 const Svc::SendFileResponse& resp
628 );
629
632 NATIVE_INT_TYPE portNum,
633 Fw::Buffer& fwBuffer
634 );
635
637 void pingOut_out(
638 NATIVE_INT_TYPE 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::LogStringArg& fileName
765 );
766
771 const Fw::LogStringArg& fileName,
772 I32 status
773 );
774
779 const Fw::LogStringArg& sourceFileName,
780 const Fw::LogStringArg& destFileName
781 );
782
787 const Fw::LogStringArg& sourceFileName,
788 const Fw::LogStringArg& destFileName
789 );
790
795 const Fw::LogStringArg& sourceFileName,
796 const Fw::LogStringArg& destFileName
797 );
798
803 U32 startOffset,
804 U32 length,
805 U32 filesize,
806 const Fw::LogStringArg& sourceFileName,
807 const Fw::LogStringArg& destFileName
808 );
809
814 const Fw::LogStringArg& sourceFileName,
815 const Fw::LogStringArg& destFileName,
816 U32 startOffset,
817 U32 filesize
818 );
819
824 const Fw::LogStringArg& sourceFileName,
825 U32 byteOffset
826 );
827
832 U32 fileSize,
833 const Fw::LogStringArg& sourceFileName,
834 const Fw::LogStringArg& destFileName
835 );
836
837 PROTECTED:
838
839 // ----------------------------------------------------------------------
840 // Telemetry write functions
841 // ----------------------------------------------------------------------
842
847 U32 arg,
848 Fw::Time _tlmTime = Fw::Time()
849 );
850
855 U32 arg,
856 Fw::Time _tlmTime = Fw::Time()
857 );
858
863 U32 arg,
864 Fw::Time _tlmTime = Fw::Time()
865 );
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 NATIVE_INT_TYPE 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 NATIVE_INT_TYPE portNum,
927 NATIVE_UINT_TYPE context
928 );
929
931 static Svc::SendFileResponse m_p_SendFile_in(
932 Fw::PassiveComponentBase* callComp,
933 NATIVE_INT_TYPE portNum,
936 U32 offset,
937 U32 length
938 );
939
941 static void m_p_bufferReturn_in(
942 Fw::PassiveComponentBase* callComp,
943 NATIVE_INT_TYPE portNum,
944 Fw::Buffer& fwBuffer
945 );
946
948 static void m_p_pingIn_in(
949 Fw::PassiveComponentBase* callComp,
950 NATIVE_INT_TYPE 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
PlatformIntType NATIVE_INT_TYPE
Definition BasicTypes.h:51
PlatformUIntType NATIVE_UINT_TYPE
Definition BasicTypes.h:52
U32 FwOpcodeType
Definition FpConfig.h:56
C++-compatible configuration header for fprime configuration.
Enum representing a command response.
void init()
Object initializer.
Definition ObjBase.cpp:27