F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
FpySequencerComponentAc.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title FpySequencerComponentAc.hpp
3 // \author Generated by fpp-to-cpp
4 // \brief hpp file for FpySequencer component base class
5 // ======================================================================
6 
7 #ifndef Svc_FpySequencerComponentAc_HPP
8 #define Svc_FpySequencerComponentAc_HPP
9 
10 #include <atomic>
11 
12 #include "Fw/Cmd/CmdPortAc.hpp"
13 #include "Fw/Cmd/CmdRegPortAc.hpp"
16 #include "Fw/Cmd/CmdString.hpp"
17 #include "Fw/Com/ComPortAc.hpp"
19 #include "Fw/FPrimeBasicTypes.hpp"
20 #include "Fw/Log/LogPortAc.hpp"
21 #include "Fw/Log/LogString.hpp"
22 #include "Fw/Log/LogTextPortAc.hpp"
23 #if !FW_DIRECT_PORT_CALLS
25 #endif
26 #if !FW_DIRECT_PORT_CALLS
28 #endif
29 #include "Fw/Prm/PrmGetPortAc.hpp"
30 #include "Fw/Prm/PrmSetPortAc.hpp"
31 #include "Fw/Prm/PrmString.hpp"
32 #include "Fw/Time/TimePortAc.hpp"
33 #include "Fw/Tlm/TlmGetPortAc.hpp"
34 #include "Fw/Tlm/TlmPortAc.hpp"
35 #include "Fw/Tlm/TlmString.hpp"
37 #include "Os/Mutex.hpp"
78 #include "Svc/Ping/PingPortAc.hpp"
91 
92 static_assert(
94  "FpySequencer component requires serialization"
95 );
96 
97 namespace Svc {
98 
105  {
106 
107  // ----------------------------------------------------------------------
108  // Friend classes
109  // ----------------------------------------------------------------------
110 
114  friend class FpySequencerTester;
115 
116  protected:
117 
118  // ----------------------------------------------------------------------
119  // Constants
120  // ----------------------------------------------------------------------
121 
123  enum {
125  };
126 
128  enum {
135  };
136 
138  enum {
147  };
148 
150  enum {
157  };
158 
160  enum {
162  };
163 
165  enum {
166  OPCODE_RUN = 0x0,
172  OPCODE_SET_BREAKPOINT = 0x6,
174  OPCODE_BREAK = 0x7,
178  OPCODE_CONTINUE = 0x8,
183  OPCODE_STEP = 0xa,
191  };
192 
194  enum {
239  };
240 
242  enum {
265  };
266 
268  enum {
270  PARAMID_SEQ_BASE_DIR = 0x1,
274  };
278 
280  enum class SmId : FwEnumStoreType {
281  sequencer,
282  };
283 
284  protected:
285 
286  // ----------------------------------------------------------------------
287  // Types for internal state machines
288  // ----------------------------------------------------------------------
289 
293  {
294 
295  // ----------------------------------------------------------------------
296  // Friend classes
297  // ----------------------------------------------------------------------
298 
302  friend class FpySequencerTester;
303 
304  public:
305 
308  FpySequencerComponentBase& component
309  );
310 
311  public:
312 
314  void init(
316  );
317 
318  public:
319 
322 
323  private:
324 
326  void action_signalEntered(
327  Signal signal
328  );
329 
331  void action_setSequenceFilePath(
332  Signal signal,
334  );
335 
337  void action_setSequenceBlockState(
338  Signal signal,
340  );
341 
343  void action_setSequenceArguments(
344  Signal signal,
346  );
347 
349  void action_validate(
350  Signal signal
351  );
352 
354  void action_report_seqSucceeded(
355  Signal signal
356  );
357 
359  void action_report_seqCancelled(
360  Signal signal
361  );
362 
364  void action_report_seqFailed(
365  Signal signal
366  );
367 
369  void action_report_seqStarted(
370  Signal signal
371  );
372 
374  void action_setGoalState_RUNNING(
375  Signal signal
376  );
377 
379  void action_setGoalState_VALID(
380  Signal signal
381  );
382 
384  void action_setGoalState_IDLE(
385  Signal signal
386  );
387 
389  void action_sendCmdResponse_OK(
390  Signal signal
391  );
392 
394  void action_sendCmdResponse_EXECUTION_ERROR(
395  Signal signal
396  );
397 
399  void action_clearSequenceFile(
400  Signal signal
401  );
402 
404  void action_clearBreakpoint(
405  Signal signal
406  );
407 
409  void action_clearSequenceArguments(
410  Signal signal
411  );
412 
414  void action_checkShouldWake(
415  Signal signal
416  );
417 
419  void action_dispatchStatement(
420  Signal signal
421  );
422 
424  void action_resetRuntime(
425  Signal signal
426  );
427 
429  void action_checkStatementTimeout(
430  Signal signal
431  );
432 
434  void action_incrementSequenceCounter(
435  Signal signal
436  );
437 
439  void action_pushArgsToStack(
440  Signal signal
441  );
442 
444  void action_report_seqBroken(
445  Signal signal
446  );
447 
449  void action_setBreakpoint(
450  Signal signal,
452  );
453 
455  void action_setBreakBeforeNextLine(
456  Signal signal
457  );
458 
460  void action_clearBreakBeforeNextLine(
461  Signal signal
462  );
463 
464  private:
465 
467  bool guard_goalStateIs_RUNNING(
468  Signal signal
469  ) const;
470 
472  bool guard_shouldBreak(
473  Signal signal
474  ) const;
475 
477  bool guard_breakOnce(
478  Signal signal
479  ) const;
480 
481  private:
482 
484  FpySequencerComponentBase& m_component;
485 
486  };
487 
488  public:
489 
490  // ----------------------------------------------------------------------
491  // Component initialization
492  // ----------------------------------------------------------------------
493 
495  void init(
496  FwSizeType queueDepth,
497  FwEnumStoreType instance = 0
498  );
499 
500 #if !FW_DIRECT_PORT_CALLS
501 
502  public:
503 
504  // ----------------------------------------------------------------------
505  // Getters for special input ports
506  // ----------------------------------------------------------------------
507 
512  FwIndexType portNum
513  );
514 
515 #endif
516 
517 #if !FW_DIRECT_PORT_CALLS
518 
519  public:
520 
521  // ----------------------------------------------------------------------
522  // Getters for typed input ports
523  // ----------------------------------------------------------------------
524 
529  FwIndexType portNum
530  );
531 
536  FwIndexType portNum
537  );
538 
543  FwIndexType portNum
544  );
545 
550  FwIndexType portNum
551  );
552 
557  FwIndexType portNum
558  );
559 
564  FwIndexType portNum
565  );
566 
567 #endif
568 
569 #if !FW_DIRECT_PORT_CALLS
570 
571  public:
572 
573  // ----------------------------------------------------------------------
574  // Connect input ports to special output ports
575  // ----------------------------------------------------------------------
576 
579  FwIndexType portNum,
580  Fw::InputCmdRegPort* port
581  );
582 
585  FwIndexType portNum,
587  );
588 
591  FwIndexType portNum,
592  Fw::InputLogPort* port
593  );
594 
595 #if FW_ENABLE_TEXT_LOGGING == 1
596 
598  void set_logTextOut_OutputPort(
599  FwIndexType portNum,
600  Fw::InputLogTextPort* port
601  );
602 
603 #endif
604 
607  FwIndexType portNum,
608  Fw::InputPrmGetPort* port
609  );
610 
613  FwIndexType portNum,
614  Fw::InputPrmSetPort* port
615  );
616 
619  FwIndexType portNum,
620  Fw::InputTimePort* port
621  );
622 
625  FwIndexType portNum,
626  Fw::InputTlmPort* port
627  );
628 
629 #endif
630 
631 #if !FW_DIRECT_PORT_CALLS
632 
633  public:
634 
635  // ----------------------------------------------------------------------
636  // Connect typed input ports to typed output ports
637  // ----------------------------------------------------------------------
638 
641  FwIndexType portNum,
642  Fw::InputComPort* port
643  );
644 
647  FwIndexType portNum,
648  Fw::InputPrmGetPort* port
649  );
650 
653  FwIndexType portNum,
654  Fw::InputTlmGetPort* port
655  );
656 
659  FwIndexType portNum,
660  Svc::InputPingPort* port
661  );
662 
665  FwIndexType portNum,
667  );
668 
671  FwIndexType portNum,
673  );
674 
675 #endif
676 
677 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
678 
679  public:
680 
681  // ----------------------------------------------------------------------
682  // Connect serial input ports to special output ports
683  // ----------------------------------------------------------------------
684 
687  FwIndexType portNum,
688  Fw::InputSerializePort* port
689  );
690 
693  FwIndexType portNum,
694  Fw::InputSerializePort* port
695  );
696 
699  FwIndexType portNum,
700  Fw::InputSerializePort* port
701  );
702 
703 #if FW_ENABLE_TEXT_LOGGING == 1
704 
706  void set_logTextOut_OutputPort(
707  FwIndexType portNum,
708  Fw::InputSerializePort* port
709  );
710 
711 #endif
712 
715  FwIndexType portNum,
716  Fw::InputSerializePort* port
717  );
718 
721  FwIndexType portNum,
722  Fw::InputSerializePort* port
723  );
724 
727  FwIndexType portNum,
728  Fw::InputSerializePort* port
729  );
730 
731 #endif
732 
733 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
734 
735  public:
736 
737  // ----------------------------------------------------------------------
738  // Connect serial input ports to typed output ports
739  // ----------------------------------------------------------------------
740 
743  FwIndexType portNum,
744  Fw::InputSerializePort* port
745  );
746 
749  FwIndexType portNum,
750  Fw::InputSerializePort* port
751  );
752 
755  FwIndexType portNum,
756  Fw::InputSerializePort* port
757  );
758 
761  FwIndexType portNum,
762  Fw::InputSerializePort* port
763  );
764 
765 #endif
766 
767 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
768 
769  public:
770 
771  // ----------------------------------------------------------------------
772  // Connect typed and serial input ports to serial output ports
773  // ----------------------------------------------------------------------
774 
776  void set_serialOut_OutputPort(
777  FwIndexType portNum,
778  Fw::InputPortBase* port
779  );
780 
781 #endif
782 
783  public:
784 
785  // ----------------------------------------------------------------------
786  // Command registration
787  // ----------------------------------------------------------------------
788 
792  void regCommands();
793 
794  public:
795 
796  // ----------------------------------------------------------------------
797  // Parameter loading
798  // ----------------------------------------------------------------------
799 
803  void loadParameters();
804 
805  protected:
806 
807  // ----------------------------------------------------------------------
808  // Component construction and destruction
809  // ----------------------------------------------------------------------
810 
813  const char* compName = ""
814  );
815 
817  virtual ~FpySequencerComponentBase();
818 
819  protected:
820 
821  // ----------------------------------------------------------------------
822  // Getters for numbers of special input ports
823  // ----------------------------------------------------------------------
824 
829  return NUM_CMDIN_INPUT_PORTS;
830  }
831 
832  protected:
833 
834  // ----------------------------------------------------------------------
835  // Getters for numbers of typed input ports
836  // ----------------------------------------------------------------------
837 
843  }
844 
850  }
851 
856  return NUM_PINGIN_INPUT_PORTS;
857  }
858 
864  }
865 
871  }
872 
878  }
879 
880  protected:
881 
882  // ----------------------------------------------------------------------
883  // Getters for numbers of special output ports
884  // ----------------------------------------------------------------------
885 
891  }
892 
898  }
899 
905  }
906 
907 #if FW_ENABLE_TEXT_LOGGING == 1
908 
912  static constexpr FwIndexType getNum_logTextOut_OutputPorts() {
914  }
915 
916 #endif
917 
923  }
924 
930  }
931 
937  }
938 
944  }
945 
946  protected:
947 
948  // ----------------------------------------------------------------------
949  // Getters for numbers of typed output ports
950  // ----------------------------------------------------------------------
951 
957  }
958 
964  }
965 
971  }
972 
978  }
979 
985  }
986 
992  }
993 
994  protected:
995 
996  // ----------------------------------------------------------------------
997  // Getters for numbers of serial output ports
998  // ----------------------------------------------------------------------
999 
1005  }
1006 
1007  protected:
1008 
1009  // ----------------------------------------------------------------------
1010  // Connection status queries for special output ports
1011  // ----------------------------------------------------------------------
1012 
1017  FwIndexType portNum
1018  ) const;
1019 
1024  FwIndexType portNum
1025  ) const;
1026 
1031  FwIndexType portNum
1032  ) const;
1033 
1034 #if FW_ENABLE_TEXT_LOGGING == 1
1035 
1039  bool isConnected_logTextOut_OutputPort(
1040  FwIndexType portNum
1041  ) const;
1042 
1043 #endif
1044 
1049  FwIndexType portNum
1050  ) const;
1051 
1056  FwIndexType portNum
1057  ) const;
1058 
1063  FwIndexType portNum
1064  ) const;
1065 
1070  FwIndexType portNum
1071  ) const;
1072 
1073  protected:
1074 
1075  // ----------------------------------------------------------------------
1076  // Connection status queries for typed output ports
1077  // ----------------------------------------------------------------------
1078 
1083  FwIndexType portNum
1084  ) const;
1085 
1090  FwIndexType portNum
1091  ) const;
1092 
1097  FwIndexType portNum
1098  ) const;
1099 
1104  FwIndexType portNum
1105  ) const;
1106 
1111  FwIndexType portNum
1112  ) const;
1113 
1118  FwIndexType portNum
1119  ) const;
1120 
1121  protected:
1122 
1123  // ----------------------------------------------------------------------
1124  // Connection status queries for serial output ports
1125  // ----------------------------------------------------------------------
1126 
1131  FwIndexType portNum
1132  ) const;
1133 
1134 #if FW_DIRECT_PORT_CALLS
1135  public:
1136 #else
1137  protected:
1138 #endif
1139 
1140  // ----------------------------------------------------------------------
1141  // Port handler base-class functions for special input ports
1142  //
1143  // Call these functions directly to bypass the corresponding ports
1144  // ----------------------------------------------------------------------
1145 
1147  void cmdIn_handlerBase(
1148  FwIndexType portNum,
1149  FwOpcodeType opCode,
1150  U32 cmdSeq,
1151  Fw::CmdArgBuffer& args
1152  );
1153 
1154  protected:
1155 
1156  // ----------------------------------------------------------------------
1157  // Handlers to implement for typed input ports
1158  // ----------------------------------------------------------------------
1159 
1161  virtual void checkTimers_handler(
1162  FwIndexType portNum,
1163  U32 context
1164  ) = 0;
1165 
1167  virtual void cmdResponseIn_handler(
1168  FwIndexType portNum,
1169  FwOpcodeType opCode,
1170  U32 cmdSeq,
1171  const Fw::CmdResponse& response
1172  ) = 0;
1173 
1175  virtual void pingIn_handler(
1176  FwIndexType portNum,
1177  U32 key
1178  ) = 0;
1179 
1181  virtual void seqCancelIn_handler(
1182  FwIndexType portNum
1183  ) = 0;
1184 
1186  virtual void seqRunIn_handler(
1187  FwIndexType portNum,
1188  const Fw::StringBase& filename,
1189  const Svc::SeqArgs& args
1190  ) = 0;
1191 
1193  virtual void tlmWrite_handler(
1194  FwIndexType portNum,
1195  U32 context
1196  ) = 0;
1197 
1198 #if FW_DIRECT_PORT_CALLS
1199  public:
1200 #else
1201  protected:
1202 #endif
1203 
1204  // ----------------------------------------------------------------------
1205  // Port handler base-class functions for typed input ports
1206  //
1207  // Call these functions directly to bypass the corresponding ports
1208  // ----------------------------------------------------------------------
1209 
1212  FwIndexType portNum,
1213  U32 context
1214  );
1215 
1218  FwIndexType portNum,
1219  FwOpcodeType opCode,
1220  U32 cmdSeq,
1221  const Fw::CmdResponse& response
1222  );
1223 
1225  void pingIn_handlerBase(
1226  FwIndexType portNum,
1227  U32 key
1228  );
1229 
1232  FwIndexType portNum
1233  );
1234 
1236  void seqRunIn_handlerBase(
1237  FwIndexType portNum,
1238  const Fw::StringBase& filename,
1239  const Svc::SeqArgs& args
1240  );
1241 
1243  void tlmWrite_handlerBase(
1244  FwIndexType portNum,
1245  U32 context
1246  );
1247 
1248  protected:
1249 
1250  // ----------------------------------------------------------------------
1251  // Pre-message hooks for typed async input ports
1252  //
1253  // Each of these functions is invoked just before processing a message
1254  // on the corresponding port. By default, they do nothing. You can
1255  // override them to provide specific pre-message behavior.
1256  // ----------------------------------------------------------------------
1257 
1259  virtual void checkTimers_preMsgHook(
1260  FwIndexType portNum,
1261  U32 context
1262  );
1263 
1265  virtual void cmdResponseIn_preMsgHook(
1266  FwIndexType portNum,
1267  FwOpcodeType opCode,
1268  U32 cmdSeq,
1269  const Fw::CmdResponse& response
1270  );
1271 
1273  virtual void pingIn_preMsgHook(
1274  FwIndexType portNum,
1275  U32 key
1276  );
1277 
1279  virtual void seqCancelIn_preMsgHook(
1280  FwIndexType portNum
1281  );
1282 
1284  virtual void seqRunIn_preMsgHook(
1285  FwIndexType portNum,
1286  const Fw::StringBase& filename,
1287  const Svc::SeqArgs& args
1288  );
1289 
1291  virtual void tlmWrite_preMsgHook(
1292  FwIndexType portNum,
1293  U32 context
1294  );
1295 
1296  protected:
1297 
1298  // ----------------------------------------------------------------------
1299  // Invocation functions for typed output ports
1300  // ----------------------------------------------------------------------
1301 
1303  void cmdOut_out(
1304  FwIndexType portNum,
1305  Fw::ComBuffer& data,
1306  U32 context
1307  ) const;
1308 
1311  FwIndexType portNum,
1312  FwPrmIdType id,
1313  Fw::ParamBuffer& val
1314  ) const;
1316 
1319  FwIndexType portNum,
1320  FwChanIdType id,
1321  Fw::Time& timeTag,
1322  Fw::TlmBuffer& val
1323  ) const;
1326 
1328  void pingOut_out(
1329  FwIndexType portNum,
1330  U32 key
1331  ) const;
1332 
1334  void seqDoneOut_out(
1335  FwIndexType portNum,
1336  FwOpcodeType opCode,
1337  U32 cmdSeq,
1338  const Fw::CmdResponse& response
1339  ) const;
1340 
1342  void seqStartOut_out(
1343  FwIndexType portNum,
1344  const Fw::StringBase& filename,
1345  const Svc::SeqArgs& args
1346  ) const;
1347 
1348  protected:
1349 
1350  // ----------------------------------------------------------------------
1351  // Invocation functions for serial output ports
1352  // ----------------------------------------------------------------------
1353 
1356  FwIndexType portNum,
1357  Fw::LinearBufferBase& buffer
1358  );
1359 
1360  protected:
1361 
1362  // ----------------------------------------------------------------------
1363  // Internal interface handlers
1364  // ----------------------------------------------------------------------
1365 
1368 
1371 
1374 
1377 
1380 
1383 
1386 
1388  virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective& directive) = 0;
1389 
1392 
1395 
1398 
1401 
1404 
1407 
1410 
1413 
1416 
1419 
1422 
1425 
1428 
1431 
1434 
1437 
1440 
1443 
1446 
1449 
1452 
1455 
1458 
1459  protected:
1460 
1461  // ----------------------------------------------------------------------
1462  // Internal interface base-class functions
1463  // ----------------------------------------------------------------------
1464 
1467 
1470 
1473 
1476 
1479 
1482 
1485 
1488 
1491 
1494 
1497 
1500 
1503 
1506 
1509 
1512 
1515 
1518 
1521 
1524 
1527 
1530 
1533 
1536 
1539 
1542 
1545 
1548 
1551 
1554 
1557 
1558  protected:
1559 
1560  // ----------------------------------------------------------------------
1561  // State getter functions
1562  // ----------------------------------------------------------------------
1563 
1566 
1567  protected:
1568 
1569  // ----------------------------------------------------------------------
1570  // Signal send functions
1571  // ----------------------------------------------------------------------
1572 
1576  );
1577 
1581  );
1582 
1586  );
1587 
1590 
1593  const Svc::FpySequencer_BreakpointArgs& value
1594  );
1595 
1598 
1601 
1604 
1607 
1610 
1613 
1616 
1619 
1622 
1625 
1628 
1631 
1634 
1637 
1640 
1643 
1646 
1649 
1652 
1655 
1658 
1659  protected:
1660 
1661  // ----------------------------------------------------------------------
1662  // Functions to implement for internal state machine actions
1663  // ----------------------------------------------------------------------
1664 
1669  SmId smId,
1671  ) = 0;
1672 
1677  SmId smId,
1680  ) = 0;
1681 
1686  SmId smId,
1689  ) = 0;
1690 
1695  SmId smId,
1698  ) = 0;
1699 
1704  SmId smId,
1706  ) = 0;
1707 
1712  SmId smId,
1714  ) = 0;
1715 
1720  SmId smId,
1722  ) = 0;
1723 
1728  SmId smId,
1730  ) = 0;
1731 
1736  SmId smId,
1738  ) = 0;
1739 
1744  SmId smId,
1746  ) = 0;
1747 
1752  SmId smId,
1754  ) = 0;
1755 
1760  SmId smId,
1762  ) = 0;
1763 
1768  SmId smId,
1770  ) = 0;
1771 
1776  SmId smId,
1778  ) = 0;
1779 
1784  SmId smId,
1786  ) = 0;
1787 
1792  SmId smId,
1794  ) = 0;
1795 
1800  SmId smId,
1802  ) = 0;
1803 
1808  SmId smId,
1810  ) = 0;
1811 
1816  SmId smId,
1818  ) = 0;
1819 
1824  SmId smId,
1826  ) = 0;
1827 
1832  SmId smId,
1834  ) = 0;
1835 
1840  SmId smId,
1842  ) = 0;
1843 
1848  SmId smId,
1850  ) = 0;
1851 
1856  SmId smId,
1858  ) = 0;
1859 
1864  SmId smId,
1866  const Svc::FpySequencer_BreakpointArgs& value
1867  ) = 0;
1868 
1873  SmId smId,
1875  ) = 0;
1876 
1881  SmId smId,
1883  ) = 0;
1884 
1885  protected:
1886 
1887  // ----------------------------------------------------------------------
1888  // Functions to implement for internal state machine guards
1889  // ----------------------------------------------------------------------
1890 
1895  SmId smId,
1897  ) const = 0;
1898 
1904  SmId smId,
1906  ) const = 0;
1907 
1912  SmId smId,
1914  ) const = 0;
1915 
1916  protected:
1917 
1918  // ----------------------------------------------------------------------
1919  // Command response
1920  // ----------------------------------------------------------------------
1921 
1923  void cmdResponse_out(
1924  FwOpcodeType opCode,
1925  U32 cmdSeq,
1926  Fw::CmdResponse response
1927  );
1928 
1929  protected:
1930 
1931  // ----------------------------------------------------------------------
1932  // Command handlers to implement
1933  // ----------------------------------------------------------------------
1934 
1938  virtual void RUN_cmdHandler(
1939  FwOpcodeType opCode,
1940  U32 cmdSeq,
1941  const Fw::CmdStringArg& fileName,
1942  Svc::BlockState block
1943  ) = 0;
1944 
1946  virtual void RUN_ARGS_cmdHandler(
1947  FwOpcodeType opCode,
1948  U32 cmdSeq,
1949  const Fw::CmdStringArg& fileName,
1950  Svc::BlockState block,
1951  Svc::SeqArgs buffer
1952  ) = 0;
1953 
1957  virtual void VALIDATE_cmdHandler(
1958  FwOpcodeType opCode,
1959  U32 cmdSeq,
1960  const Fw::CmdStringArg& fileName
1961  ) = 0;
1962 
1966  virtual void VALIDATE_ARGS_cmdHandler(
1967  FwOpcodeType opCode,
1968  U32 cmdSeq,
1969  const Fw::CmdStringArg& fileName,
1970  Svc::SeqArgs buffer
1971  ) = 0;
1972 
1976  virtual void RUN_VALIDATED_cmdHandler(
1977  FwOpcodeType opCode,
1978  U32 cmdSeq,
1979  Svc::BlockState block
1980  ) = 0;
1981 
1986  virtual void CANCEL_cmdHandler(
1987  FwOpcodeType opCode,
1988  U32 cmdSeq
1989  ) = 0;
1990 
1997  virtual void SET_BREAKPOINT_cmdHandler(
1998  FwOpcodeType opCode,
1999  U32 cmdSeq,
2000  U32 stmtIdx,
2001  bool breakOnce
2002  ) = 0;
2003 
2009  virtual void BREAK_cmdHandler(
2010  FwOpcodeType opCode,
2011  U32 cmdSeq
2012  ) = 0;
2013 
2018  virtual void CONTINUE_cmdHandler(
2019  FwOpcodeType opCode,
2020  U32 cmdSeq
2021  ) = 0;
2022 
2027  virtual void CLEAR_BREAKPOINT_cmdHandler(
2028  FwOpcodeType opCode,
2029  U32 cmdSeq
2030  ) = 0;
2031 
2036  virtual void STEP_cmdHandler(
2037  FwOpcodeType opCode,
2038  U32 cmdSeq
2039  ) = 0;
2040 
2044  virtual void DUMP_STACK_TO_FILE_cmdHandler(
2045  FwOpcodeType opCode,
2046  U32 cmdSeq,
2047  const Fw::CmdStringArg& fileName
2048  ) = 0;
2049 
2050  protected:
2051 
2052  // ----------------------------------------------------------------------
2053  // Command handler base-class functions
2054  //
2055  // Call these functions directly to bypass the command input port
2056  // ----------------------------------------------------------------------
2057 
2061  void RUN_cmdHandlerBase(
2062  FwOpcodeType opCode,
2063  U32 cmdSeq,
2064  Fw::CmdArgBuffer& args
2065  );
2066 
2069  FwOpcodeType opCode,
2070  U32 cmdSeq,
2071  Fw::CmdArgBuffer& args
2072  );
2073 
2078  FwOpcodeType opCode,
2079  U32 cmdSeq,
2080  Fw::CmdArgBuffer& args
2081  );
2082 
2087  FwOpcodeType opCode,
2088  U32 cmdSeq,
2089  Fw::CmdArgBuffer& args
2090  );
2091 
2096  FwOpcodeType opCode,
2097  U32 cmdSeq,
2098  Fw::CmdArgBuffer& args
2099  );
2100 
2105  void CANCEL_cmdHandlerBase(
2106  FwOpcodeType opCode,
2107  U32 cmdSeq,
2108  Fw::CmdArgBuffer& args
2109  );
2110 
2118  FwOpcodeType opCode,
2119  U32 cmdSeq,
2120  Fw::CmdArgBuffer& args
2121  );
2122 
2128  void BREAK_cmdHandlerBase(
2129  FwOpcodeType opCode,
2130  U32 cmdSeq,
2131  Fw::CmdArgBuffer& args
2132  );
2133 
2139  FwOpcodeType opCode,
2140  U32 cmdSeq,
2141  Fw::CmdArgBuffer& args
2142  );
2143 
2149  FwOpcodeType opCode,
2150  U32 cmdSeq,
2151  Fw::CmdArgBuffer& args
2152  );
2153 
2158  void STEP_cmdHandlerBase(
2159  FwOpcodeType opCode,
2160  U32 cmdSeq,
2161  Fw::CmdArgBuffer& args
2162  );
2163 
2168  FwOpcodeType opCode,
2169  U32 cmdSeq,
2170  Fw::CmdArgBuffer& args
2171  );
2172 
2173  protected:
2174 
2175  // ----------------------------------------------------------------------
2176  // Pre-message hooks for async commands
2177  //
2178  // Each of these functions is invoked just before processing the
2179  // corresponding command. By default they do nothing. You can
2180  // override them to provide specific pre-command behavior.
2181  // ----------------------------------------------------------------------
2182 
2184  virtual void RUN_preMsgHook(
2185  FwOpcodeType opCode,
2186  U32 cmdSeq
2187  );
2188 
2190  virtual void RUN_ARGS_preMsgHook(
2191  FwOpcodeType opCode,
2192  U32 cmdSeq
2193  );
2194 
2196  virtual void VALIDATE_preMsgHook(
2197  FwOpcodeType opCode,
2198  U32 cmdSeq
2199  );
2200 
2202  virtual void VALIDATE_ARGS_preMsgHook(
2203  FwOpcodeType opCode,
2204  U32 cmdSeq
2205  );
2206 
2208  virtual void RUN_VALIDATED_preMsgHook(
2209  FwOpcodeType opCode,
2210  U32 cmdSeq
2211  );
2212 
2214  virtual void CANCEL_preMsgHook(
2215  FwOpcodeType opCode,
2216  U32 cmdSeq
2217  );
2218 
2220  virtual void SET_BREAKPOINT_preMsgHook(
2221  FwOpcodeType opCode,
2222  U32 cmdSeq
2223  );
2224 
2226  virtual void BREAK_preMsgHook(
2227  FwOpcodeType opCode,
2228  U32 cmdSeq
2229  );
2230 
2232  virtual void CONTINUE_preMsgHook(
2233  FwOpcodeType opCode,
2234  U32 cmdSeq
2235  );
2236 
2238  virtual void CLEAR_BREAKPOINT_preMsgHook(
2239  FwOpcodeType opCode,
2240  U32 cmdSeq
2241  );
2242 
2244  virtual void STEP_preMsgHook(
2245  FwOpcodeType opCode,
2246  U32 cmdSeq
2247  );
2248 
2250  virtual void DUMP_STACK_TO_FILE_preMsgHook(
2251  FwOpcodeType opCode,
2252  U32 cmdSeq
2253  );
2254 
2255  protected:
2256 
2257  // ----------------------------------------------------------------------
2258  // Event logging functions
2259  // ----------------------------------------------------------------------
2260 
2262  void log_WARNING_HI_InvalidCommand(I32 state) const;
2263 
2265  void log_WARNING_HI_InvalidSeqRunCall(I32 state) const;
2266 
2268  void log_WARNING_HI_InvalidSeqCancelCall(I32 state) const;
2269 
2272  const Fw::StringBase& filePath,
2273  I32 errorCode
2274  ) const;
2275 
2278  FwSizeType writeSize,
2279  const Fw::StringBase& filePath,
2280  I32 errorCode
2281  ) const;
2282 
2286  const Fw::StringBase& filePath,
2287  I32 errorCode
2288  ) const;
2289 
2293  const Fw::StringBase& filePath
2294  ) const;
2295 
2299  const Fw::StringBase& filePath,
2300  I32 errorCode,
2301  U64 buffLeft,
2302  U64 buffLength
2303  ) const;
2304 
2307  U8 expected,
2308  U8 actual
2309  ) const;
2310 
2313  U32 expected,
2314  U32 actual
2315  ) const;
2316 
2318  void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const;
2319 
2322  U64 bufferSize,
2323  const Fw::StringBase& filePath
2324  ) const;
2325 
2328  const Fw::StringBase& filePath,
2329  I32 errorCode
2330  ) const;
2331 
2334  const Fw::StringBase& baseDir,
2335  const Fw::StringBase& fileName
2336  ) const;
2337 
2340  FwOpcodeType opCode,
2341  U32 stmtIdx,
2342  const Fw::StringBase& filePath,
2343  Fw::CmdResponse response
2344  ) const;
2345 
2347  void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase& filePath) const;
2348 
2350  void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase& filePath) const;
2351 
2354  const Fw::StringBase& filePath,
2355  U8 errorCode
2356  ) const;
2357 
2360  U8 opcode,
2361  U32 stmtIdx,
2362  const Fw::StringBase& filePath
2363  ) const;
2364 
2367  I32 state,
2368  FwOpcodeType opcode,
2369  Fw::CmdResponse response
2370  ) const;
2371 
2374  FwOpcodeType opcode,
2375  Fw::CmdResponse response,
2376  U16 oldSequenceIdx,
2377  U16 currentSequenceIdx
2378  ) const;
2379 
2382  FwOpcodeType opcode,
2383  Fw::CmdResponse response
2384  ) const;
2385 
2388  FwOpcodeType opcode,
2389  Fw::CmdResponse response,
2390  U8 expectedDirectiveOpcode
2391  ) const;
2392 
2395  FwOpcodeType opcode,
2396  Fw::CmdResponse response,
2397  FwOpcodeType expectedOpcode
2398  ) const;
2399 
2402  FwOpcodeType opcode,
2403  Fw::CmdResponse response,
2404  U16 actualCmdIdx,
2405  U16 expectedCmdIdx
2406  ) const;
2407 
2410  U8 opcode,
2411  U32 stmtIdx,
2412  I32 errorCode,
2413  U64 buffLeft,
2414  U64 buffLength
2415  ) const;
2416 
2419  I32 internalTimeBase,
2420  I32 otherTimeBase
2421  ) const;
2422 
2425  I32 internalTimeContext,
2426  I32 otherTimeContext
2427  ) const;
2428 
2431  FwOpcodeType opCode,
2432  U32 stmtIdx,
2433  const Fw::StringBase& filePath
2434  ) const;
2435 
2438  U8 opCode,
2439  U32 stmtIdx,
2440  const Fw::StringBase& filePath
2441  ) const;
2442 
2445  U8 count,
2446  U8 max
2447  ) const;
2448 
2451  U16 count,
2452  U16 max
2453  ) const;
2454 
2457  Svc::Fpy::StackSizeType expected,
2458  FwSizeType actual,
2459  const Fw::StringBase& filePath
2460  ) const;
2461 
2464 
2466  void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const;
2467 
2470  U32 breakpointIdx,
2471  bool breakOnce
2472  ) const;
2473 
2475  void log_ACTIVITY_HI_BreakpointCleared() const;
2476 
2478  void log_FATAL_LogFatal(
2479  const Fw::StringBase& filePath,
2480  const Fw::StringBase& message
2481  ) const;
2482 
2485  const Fw::StringBase& filePath,
2486  const Fw::StringBase& message
2487  ) const;
2488 
2491  const Fw::StringBase& filePath,
2492  const Fw::StringBase& message
2493  ) const;
2494 
2497  const Fw::StringBase& filePath,
2498  const Fw::StringBase& message
2499  ) const;
2500 
2503  const Fw::StringBase& filePath,
2504  const Fw::StringBase& message
2505  ) const;
2506 
2509  const Fw::StringBase& filePath,
2510  const Fw::StringBase& message
2511  ) const;
2512 
2515  const Fw::StringBase& filePath,
2516  const Fw::StringBase& message
2517  ) const;
2518 
2519  protected:
2520 
2521  // ----------------------------------------------------------------------
2522  // Telemetry serialized write
2523  // ----------------------------------------------------------------------
2524 
2529  void tlmWrite(
2530  FwChanIdType id,
2531  Fw::TlmBuffer& _tlmBuff,
2532  Fw::Time _tlmTime = Fw::Time()
2533  ) const;
2534 
2535  protected:
2536 
2537  // ----------------------------------------------------------------------
2538  // Telemetry write functions
2539  // ----------------------------------------------------------------------
2540 
2544  void tlmWrite_State(
2545  FwEnumStoreType arg,
2546  Fw::Time _tlmTime = Fw::Time()
2547  );
2548 
2553  U64 arg,
2554  Fw::Time _tlmTime = Fw::Time()
2555  );
2556 
2561  U64 arg,
2562  Fw::Time _tlmTime = Fw::Time()
2563  );
2564 
2569  U64 arg,
2570  Fw::Time _tlmTime = Fw::Time()
2571  );
2572 
2579  U64 arg,
2580  Fw::Time _tlmTime = Fw::Time()
2581  );
2582 
2587  U64 arg,
2588  Fw::Time _tlmTime = Fw::Time()
2589  );
2590 
2595  const Svc::Fpy::DirectiveErrorCode& arg,
2596  Fw::Time _tlmTime = Fw::Time()
2597  );
2598 
2603  U64 arg,
2604  Fw::Time _tlmTime = Fw::Time()
2605  );
2606 
2611  const Svc::Fpy::DirectiveId& arg,
2612  Fw::Time _tlmTime = Fw::Time()
2613  );
2614 
2618  void tlmWrite_SeqPath(
2619  const Fw::StringBase& arg,
2620  Fw::Time _tlmTime = Fw::Time()
2621  );
2622 
2627  bool arg,
2628  Fw::Time _tlmTime = Fw::Time()
2629  );
2630 
2635  bool arg,
2636  Fw::Time _tlmTime = Fw::Time()
2637  );
2638 
2643  U8 arg,
2644  Fw::Time _tlmTime = Fw::Time()
2645  );
2646 
2651  U32 arg,
2652  Fw::Time _tlmTime = Fw::Time()
2653  );
2654 
2659  FwOpcodeType arg,
2660  Fw::Time _tlmTime = Fw::Time()
2661  );
2662 
2668  Fw::Time _tlmTime = Fw::Time()
2669  );
2670 
2675  bool arg,
2676  Fw::Time _tlmTime = Fw::Time()
2677  );
2678 
2684  U32 arg,
2685  Fw::Time _tlmTime = Fw::Time()
2686  );
2687 
2692  bool arg,
2693  Fw::Time _tlmTime = Fw::Time()
2694  );
2695 
2702  bool arg,
2703  Fw::Time _tlmTime = Fw::Time()
2704  );
2705 
2710  F32 arg,
2711  Fw::Time _tlmTime = Fw::Time()
2712  );
2713 
2718  const Fw::StringBase& arg,
2719  Fw::Time _tlmTime = Fw::Time()
2720  );
2721 
2722  protected:
2723 
2724  // ----------------------------------------------------------------------
2725  // Parameter hook functions
2726  // ----------------------------------------------------------------------
2727 
2731  virtual void parameterUpdated(
2732  FwPrmIdType id
2733  );
2734 
2738  virtual void parametersLoaded();
2739 
2740  protected:
2741 
2742  // ----------------------------------------------------------------------
2743  // Parameter get functions
2744  // ----------------------------------------------------------------------
2745 
2755  Fw::ParamValid& valid
2756  );
2757 
2767  Fw::ParamValid& valid
2768  );
2769 
2770  protected:
2771 
2772  // ----------------------------------------------------------------------
2773  // Time
2774  // ----------------------------------------------------------------------
2775 
2779  Fw::Time getTime() const;
2780 
2781  private:
2782 
2783  // ----------------------------------------------------------------------
2784  // Message dispatch functions
2785  // ----------------------------------------------------------------------
2786 
2788  virtual MsgDispatchStatus doDispatch();
2789 
2790  private:
2791 
2792  // ----------------------------------------------------------------------
2793  // Calls for messages received on special input ports
2794  // ----------------------------------------------------------------------
2795 
2797  static void m_p_cmdIn_in(
2798  Fw::PassiveComponentBase* callComp,
2799  FwIndexType portNum,
2800  FwOpcodeType opCode,
2801  U32 cmdSeq,
2802  Fw::CmdArgBuffer& args
2803  );
2804 
2805  private:
2806 
2807  // ----------------------------------------------------------------------
2808  // Calls for messages received on typed input ports
2809  // ----------------------------------------------------------------------
2810 
2812  static void m_p_checkTimers_in(
2813  Fw::PassiveComponentBase* callComp,
2814  FwIndexType portNum,
2815  U32 context
2816  );
2817 
2819  static void m_p_cmdResponseIn_in(
2820  Fw::PassiveComponentBase* callComp,
2821  FwIndexType portNum,
2822  FwOpcodeType opCode,
2823  U32 cmdSeq,
2824  const Fw::CmdResponse& response
2825  );
2826 
2828  static void m_p_pingIn_in(
2829  Fw::PassiveComponentBase* callComp,
2830  FwIndexType portNum,
2831  U32 key
2832  );
2833 
2835  static void m_p_seqCancelIn_in(
2836  Fw::PassiveComponentBase* callComp,
2837  FwIndexType portNum
2838  );
2839 
2841  static void m_p_seqRunIn_in(
2842  Fw::PassiveComponentBase* callComp,
2843  FwIndexType portNum,
2844  const Fw::StringBase& filename,
2845  const Svc::SeqArgs& args
2846  );
2847 
2849  static void m_p_tlmWrite_in(
2850  Fw::PassiveComponentBase* callComp,
2851  FwIndexType portNum,
2852  U32 context
2853  );
2854 
2855  private:
2856 
2857  // ----------------------------------------------------------------------
2858  // Invocation functions for special output ports
2859  // ----------------------------------------------------------------------
2860 
2862  void cmdRegOut_out(
2863  FwIndexType portNum,
2864  FwOpcodeType opCode
2865  ) const;
2866 
2868  void cmdResponseOut_out(
2869  FwIndexType portNum,
2870  FwOpcodeType opCode,
2871  U32 cmdSeq,
2872  const Fw::CmdResponse& response
2873  ) const;
2874 
2876  void logOut_out(
2877  FwIndexType portNum,
2878  FwEventIdType id,
2879  Fw::Time& timeTag,
2880  const Fw::LogSeverity& severity,
2881  Fw::LogBuffer& args
2882  ) const;
2883 
2884 #if FW_ENABLE_TEXT_LOGGING
2885 
2887  void logTextOut_out(
2888  FwIndexType portNum,
2889  FwEventIdType id,
2890  Fw::Time& timeTag,
2891  const Fw::LogSeverity& severity,
2892  Fw::TextLogString& text
2893  ) const;
2894 
2895 #endif
2896 
2898  Fw::ParamValid prmGet_out(
2899  FwIndexType portNum,
2900  FwPrmIdType id,
2901  Fw::ParamBuffer& val
2902  ) const;
2904 
2906  void prmSet_out(
2907  FwIndexType portNum,
2908  FwPrmIdType id,
2909  Fw::ParamBuffer& val
2910  ) const;
2911 
2913  void timeCaller_out(
2914  FwIndexType portNum,
2915  Fw::Time& time
2916  ) const;
2917 
2919  void tlmOut_out(
2920  FwIndexType portNum,
2921  FwChanIdType id,
2922  Fw::Time& timeTag,
2923  Fw::TlmBuffer& val
2924  ) const;
2925 
2926  private:
2927 
2928  // ----------------------------------------------------------------------
2929  // Send signal helper functions
2930  // ----------------------------------------------------------------------
2931 
2933  void sendSignalStart(
2934  SmId smId,
2935  FwEnumStoreType signal,
2936  Fw::SerialBufferBase& buffer
2937  );
2938 
2940  void sequencer_sendSignalFinish(
2941  Fw::LinearBufferBase& buffer
2942  );
2943 
2944  private:
2945 
2946  // ----------------------------------------------------------------------
2947  // Helper functions for state machine dispatch
2948  // ----------------------------------------------------------------------
2949 
2951  void smDispatch(
2952  Fw::SerialBufferBase& buffer
2953  );
2954 
2956  static void deserializeSmIdAndSignal(
2957  Fw::SerialBufferBase& buffer,
2958  FwEnumStoreType& smId,
2959  FwEnumStoreType& signal
2960  );
2961 
2963  void Svc_FpySequencer_SequencerStateMachine_smDispatch(
2964  Fw::SerialBufferBase& buffer,
2965  Svc_FpySequencer_SequencerStateMachine& sm,
2967  );
2968 
2969  private:
2970 
2971  // ----------------------------------------------------------------------
2972  // Parameter set functions
2973  // ----------------------------------------------------------------------
2974 
2978  Fw::CmdResponse paramSet_STATEMENT_TIMEOUT_SECS(
2979  Fw::SerialBufferBase& val
2980  );
2981 
2985  Fw::CmdResponse paramSet_SEQ_BASE_DIR(
2986  Fw::SerialBufferBase& val
2987  );
2988 
2989  private:
2990 
2991  // ----------------------------------------------------------------------
2992  // Parameter save functions
2993  // ----------------------------------------------------------------------
2994 
2998  Fw::CmdResponse paramSave_STATEMENT_TIMEOUT_SECS();
2999 
3003  Fw::CmdResponse paramSave_SEQ_BASE_DIR();
3004 
3005 #if !FW_DIRECT_PORT_CALLS
3006 
3007  private:
3008 
3009  // ----------------------------------------------------------------------
3010  // Special input ports
3011  // ----------------------------------------------------------------------
3012 
3014  Fw::InputCmdPort m_cmdIn_InputPort[NUM_CMDIN_INPUT_PORTS];
3015 
3016 #endif
3017 
3018 #if !FW_DIRECT_PORT_CALLS
3019 
3020  private:
3021 
3022  // ----------------------------------------------------------------------
3023  // Typed input ports
3024  // ----------------------------------------------------------------------
3025 
3027  Svc::InputSchedPort m_checkTimers_InputPort[NUM_CHECKTIMERS_INPUT_PORTS];
3028 
3030  Fw::InputCmdResponsePort m_cmdResponseIn_InputPort[NUM_CMDRESPONSEIN_INPUT_PORTS];
3031 
3033  Svc::InputPingPort m_pingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
3034 
3037 
3039  Svc::InputCmdSeqInPort m_seqRunIn_InputPort[NUM_SEQRUNIN_INPUT_PORTS];
3040 
3042  Svc::InputSchedPort m_tlmWrite_InputPort[NUM_TLMWRITE_INPUT_PORTS];
3043 
3044 #endif
3045 
3046 #if !FW_DIRECT_PORT_CALLS
3047 
3048  private:
3049 
3050  // ----------------------------------------------------------------------
3051  // Special output ports
3052  // ----------------------------------------------------------------------
3053 
3055  Fw::OutputCmdRegPort m_cmdRegOut_OutputPort[NUM_CMDREGOUT_OUTPUT_PORTS];
3056 
3058  Fw::OutputCmdResponsePort m_cmdResponseOut_OutputPort[NUM_CMDRESPONSEOUT_OUTPUT_PORTS];
3059 
3061  Fw::OutputLogPort m_logOut_OutputPort[NUM_LOGOUT_OUTPUT_PORTS];
3062 
3063 #if FW_ENABLE_TEXT_LOGGING == 1
3064 
3066  Fw::OutputLogTextPort m_logTextOut_OutputPort[NUM_LOGTEXTOUT_OUTPUT_PORTS];
3067 
3068 #endif
3069 
3071  Fw::OutputPrmGetPort m_prmGet_OutputPort[NUM_PRMGET_OUTPUT_PORTS];
3072 
3074  Fw::OutputPrmSetPort m_prmSet_OutputPort[NUM_PRMSET_OUTPUT_PORTS];
3075 
3077  Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
3078 
3080  Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
3081 
3082 #endif
3083 
3084 #if !FW_DIRECT_PORT_CALLS
3085 
3086  private:
3087 
3088  // ----------------------------------------------------------------------
3089  // Typed output ports
3090  // ----------------------------------------------------------------------
3091 
3093  Fw::OutputComPort m_cmdOut_OutputPort[NUM_CMDOUT_OUTPUT_PORTS];
3094 
3096  Fw::OutputPrmGetPort m_getParam_OutputPort[NUM_GETPARAM_OUTPUT_PORTS];
3097 
3099  Fw::OutputTlmGetPort m_getTlmChan_OutputPort[NUM_GETTLMCHAN_OUTPUT_PORTS];
3100 
3102  Svc::OutputPingPort m_pingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
3103 
3105  Fw::OutputCmdResponsePort m_seqDoneOut_OutputPort[NUM_SEQDONEOUT_OUTPUT_PORTS];
3106 
3108  Svc::OutputCmdSeqInPort m_seqStartOut_OutputPort[NUM_SEQSTARTOUT_OUTPUT_PORTS];
3109 
3110 #endif
3111 
3112 #if !FW_DIRECT_PORT_CALLS
3113 
3114  private:
3115 
3116  // ----------------------------------------------------------------------
3117  // Serial output ports
3118  // ----------------------------------------------------------------------
3119 
3121  Fw::OutputSerializePort m_serialOut_OutputPort[NUM_SERIALOUT_OUTPUT_PORTS];
3122 
3123 #endif
3124 
3125  private:
3126 
3127  // ----------------------------------------------------------------------
3128  // First update flags for telemetry channels
3129  // ----------------------------------------------------------------------
3130 
3132  bool m_first_update_State = true;
3133 
3135  bool m_first_update_SequencesSucceeded = true;
3136 
3138  bool m_first_update_SequencesFailed = true;
3139 
3141  bool m_first_update_SequencesCancelled = true;
3142 
3144  bool m_first_update_StatementsDispatched = true;
3145 
3147  bool m_first_update_StatementsFailed = true;
3148 
3150  bool m_first_update_LastDirectiveError = true;
3151 
3153  bool m_first_update_DirectiveErrorIndex = true;
3154 
3156  bool m_first_update_DirectiveErrorId = true;
3157 
3159  bool m_first_update_SeqPath = true;
3160 
3162  bool m_first_update_Debug_ReachedEndOfFile = true;
3163 
3165  bool m_first_update_Debug_NextStatementReadSuccess = true;
3166 
3168  bool m_first_update_Debug_NextStatementOpcode = true;
3169 
3171  bool m_first_update_Debug_NextStatementIndex = true;
3172 
3174  bool m_first_update_Debug_NextCmdOpcode = true;
3175 
3177  bool m_first_update_Debug_StackSize = true;
3178 
3180  bool m_first_update_BreakpointInUse = true;
3181 
3183  bool m_first_update_BreakpointIndex = true;
3184 
3186  bool m_first_update_BreakOnlyOnceOnBreakpoint = true;
3187 
3189  bool m_first_update_BreakBeforeNextLine = true;
3190 
3192  bool m_first_update_PRM_STATEMENT_TIMEOUT_SECS = true;
3193 
3195  bool m_first_update_PRM_SEQ_BASE_DIR = true;
3196 
3197  private:
3198 
3199  // ----------------------------------------------------------------------
3200  // Last value storage for telemetry channels
3201  // ----------------------------------------------------------------------
3202 
3204  FwEnumStoreType m_last_State = {};
3205 
3207  U64 m_last_SequencesSucceeded = {};
3208 
3210  U64 m_last_SequencesFailed = {};
3211 
3213  U64 m_last_SequencesCancelled = {};
3214 
3216  U64 m_last_StatementsDispatched = {};
3217 
3219  U64 m_last_StatementsFailed = {};
3220 
3222  Svc::Fpy::DirectiveErrorCode m_last_LastDirectiveError = {};
3223 
3225  U64 m_last_DirectiveErrorIndex = {};
3226 
3228  Svc::Fpy::DirectiveId m_last_DirectiveErrorId = {};
3229 
3231  Fw::TlmString m_last_SeqPath = {};
3232 
3234  bool m_last_Debug_ReachedEndOfFile = {};
3235 
3237  bool m_last_Debug_NextStatementReadSuccess = {};
3238 
3240  U8 m_last_Debug_NextStatementOpcode = {};
3241 
3243  U32 m_last_Debug_NextStatementIndex = {};
3244 
3246  FwOpcodeType m_last_Debug_NextCmdOpcode = {};
3247 
3249  Svc::Fpy::StackSizeType m_last_Debug_StackSize = {};
3250 
3252  bool m_last_BreakpointInUse = {};
3253 
3255  U32 m_last_BreakpointIndex = {};
3256 
3258  bool m_last_BreakOnlyOnceOnBreakpoint = {};
3259 
3261  bool m_last_BreakBeforeNextLine = {};
3262 
3264  F32 m_last_PRM_STATEMENT_TIMEOUT_SECS = {};
3265 
3267  Fw::TlmString m_last_PRM_SEQ_BASE_DIR = {};
3268 
3269  private:
3270 
3271  // ----------------------------------------------------------------------
3272  // Parameter validity flags
3273  // ----------------------------------------------------------------------
3274 
3276  Fw::ParamValid m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::UNINIT;
3277 
3279  Fw::ParamValid m_param_SEQ_BASE_DIR_valid = Fw::ParamValid::UNINIT;
3280 
3281  private:
3282 
3283  // ----------------------------------------------------------------------
3284  // Parameter variables
3285  // ----------------------------------------------------------------------
3286 
3293  F32 m_STATEMENT_TIMEOUT_SECS;
3294 
3301  Fw::ParamString m_SEQ_BASE_DIR;
3302 
3303  private:
3304 
3305  // ----------------------------------------------------------------------
3306  // State machine instances
3307  // ----------------------------------------------------------------------
3308 
3310  Svc_FpySequencer_SequencerStateMachine m_stateMachine_sequencer;
3311 
3312  private:
3313 
3314  // ----------------------------------------------------------------------
3315  // Mutexes
3316  // ----------------------------------------------------------------------
3317 
3319  Os::Mutex m_paramLock;
3320 
3321  };
3322 
3323 }
3324 
3325 #endif
void cmdOut_out(FwIndexType portNum, Fw::ComBuffer &data, U32 context) const
Invoke output port cmdOut.
void pingOut_out(FwIndexType portNum, U32 key) const
Invoke output port pingOut.
virtual void seqCancelIn_handler(FwIndexType portNum)=0
Handler for input port seqCancelIn.
void sequencer_sendSignal_result_dispatchStatement_noMoreStatements()
Send signal result_dispatchStatement_noMoreStatements to state machine sequencer. ...
sets the index of the next directive to execute
void sequencer_sendSignal_result_checkShouldWake_keepSleeping()
Send signal result_checkShouldWake_keepSleeping to state machine sequencer.
virtual void directive_waitRel_internalInterfaceHandler(const Svc::FpySequencer_WaitRelDirective &directive)=0
Internal interface handler for directive_waitRel.
virtual void DUMP_STACK_TO_FILE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command DUMP_STACK_TO_FILE.
virtual void Svc_FpySequencer_SequencerStateMachine_action_checkStatementTimeout(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_incrementSequenceCounter(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqFailed(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
bool isConnected_getTlmChan_OutputPort(FwIndexType portNum) const
void set_seqStartOut_OutputPort(FwIndexType portNum, Svc::InputCmdSeqInPort *port)
Connect port to seqStartOut[portNum].
void log_WARNING_HI_DirectiveTimedOut(U8 opCode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event DirectiveTimedOut.
virtual void directive_pushPrm_internalInterfaceHandler(const Svc::FpySequencer_PushPrmDirective &directive)=0
Internal interface handler for directive_pushPrm.
virtual void directive_peek_internalInterfaceHandler(const Svc::FpySequencer_PeekDirective &directive)=0
Internal interface handler for directive_peek.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setSequenceFilePath(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_SequenceExecutionArgs &value)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_signalEntered(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const
Log event SequencePaused.
virtual void directive_exit_internalInterfaceHandler(const Svc::FpySequencer_ExitDirective &directive)=0
Internal interface handler for directive_exit.
Fw::InputCmdResponsePort * get_cmdResponseIn_InputPort(FwIndexType portNum)
virtual void seqCancelIn_preMsgHook(FwIndexType portNum)
Pre-message hook for async input port seqCancelIn.
FwIdType FwOpcodeType
The type of a command opcode.
void set_cmdOut_OutputPort(FwIndexType portNum, Fw::InputComPort *port)
Connect port to cmdOut[portNum].
virtual void seqRunIn_handler(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)=0
Handler for input port seqRunIn.
branches based off of the top byte of the stack
void directive_pushVal_internalInterfaceInvoke(const Svc::FpySequencer_PushValDirective &directive)
Internal interface base-class function for directive_pushVal.
void tlmWrite_Debug_NextStatementOpcode(U8 arg, Fw::Time _tlmTime=Fw::Time())
virtual void parametersLoaded()
Called whenever parameters are loaded.
bool isConnected_cmdRegOut_OutputPort(FwIndexType portNum) const
virtual void directive_pushTime_internalInterfaceHandler(const Svc::FpySequencer_PushTimeDirective &directive)=0
Internal interface handler for directive_pushTime.
void log_WARNING_HI_InsufficientBufferSpace(U64 bufferSize, const Fw::StringBase &filePath) const
Log event InsufficientBufferSpace.
static constexpr FwIndexType getNum_seqStartOut_OutputPorts()
bool isConnected_getParam_OutputPort(FwIndexType portNum) const
PlatformSizeType FwSizeType
void directive_popEvent_internalInterfaceInvoke(const Svc::FpySequencer_PopEventDirective &directive)
Internal interface base-class function for directive_popEvent.
stores a value to an absolute address in the stack (for global variables), offset from stack ...
I32 FwEnumStoreType
void CONTINUE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void sequencer_sendSignal_cmd_STEP()
Send signal cmd_STEP to state machine sequencer.
void sequencer_sendSignal_result_dispatchStatement_success()
Send signal result_dispatchStatement_success to state machine sequencer.
virtual void cmdResponseIn_handler(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)=0
Handler for input port cmdResponseIn.
void directive_stackOp_internalInterfaceInvoke(const Svc::FpySequencer_StackOpDirective &directive)
Internal interface base-class function for directive_stackOp.
void log_WARNING_HI_WrongCRC(U32 expected, U32 actual) const
Log event WrongCRC.
void directive_pushTlmVal_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValDirective &directive)
Internal interface base-class function for directive_pushTlmVal.
virtual void CLEAR_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
virtual void parameterUpdated(FwPrmIdType id)
Called whenever a parameter is updated.
virtual void directive_stackCmd_internalInterfaceHandler(const Svc::FpySequencer_StackCmdDirective &directive)=0
Internal interface handler for directive_stackCmd.
void sequencer_sendSignal_cmd_SET_BREAKPOINT(const Svc::FpySequencer_BreakpointArgs &value)
Send signal cmd_SET_BREAKPOINT to state machine sequencer.
virtual void Svc_FpySequencer_SequencerStateMachine_action_sendCmdResponse_OK(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_pushArgsToStack(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void tlmWrite_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port tlmWrite.
virtual void CLEAR_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CLEAR_BREAKPOINT.
static constexpr FwIndexType getNum_cmdIn_InputPorts()
void tlmWrite_Debug_ReachedEndOfFile(bool arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_SequenceExitedWithError(const Fw::StringBase &filePath, U8 errorCode) const
Log event SequenceExitedWithError.
void RUN_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_popSerializable_internalInterfaceHandler(const Svc::FpySequencer_PopSerializableDirective &directive)=0
Internal interface handler for directive_popSerializable.
void set_seqDoneOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to seqDoneOut[portNum].
FwIdType FwPrmIdType
The type of a parameter identifier.
void set_tlmOut_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
virtual void Svc_FpySequencer_SequencerStateMachine_action_setGoalState_IDLE(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
stores a value to a local variable at a compile-time-known offset relative to the current stack frame...
Fw::SerializeStatus serialOut_out(FwIndexType portNum, Fw::LinearBufferBase &buffer)
Invoke output port serialOut.
virtual void VALIDATE_ARGS_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::SeqArgs buffer)=0
virtual void CANCEL_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
Fw::ParamValid getParam_out(FwIndexType portNum, FwPrmIdType id, Fw::ParamBuffer &val) const
Invoke output port getParam.
void STEP_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual bool Svc_FpySequencer_SequencerStateMachine_guard_breakOnce(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal) const =0
static constexpr FwIndexType getNum_pingIn_InputPorts()
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqStarted(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
bool isConnected_prmGet_OutputPort(FwIndexType portNum) const
pop an opcode and arg buf off the stack, send to cmd dispatcher and await response ...
void log_WARNING_HI_SequenceFilePathTooLong(const Fw::StringBase &baseDir, const Fw::StringBase &fileName) const
Log event SequenceFilePathTooLong.
void sequencer_sendSignal_result_checkShouldWake_wakeup()
Send signal result_checkShouldWake_wakeup to state machine sequencer.
friend class FpySequencerTesterBase
Friend class tester to support autocoded test harness.
virtual void directive_goto_internalInterfaceHandler(const Svc::FpySequencer_GotoDirective &directive)=0
Internal interface handler for directive_goto.
void directive_if_internalInterfaceInvoke(const Svc::FpySequencer_IfDirective &directive)
Internal interface base-class function for directive_if.
bool isConnected_prmSet_OutputPort(FwIndexType portNum) const
virtual void RUN_ARGS_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN_ARGS.
virtual void directive_storeRel_internalInterfaceHandler(const Svc::FpySequencer_StoreRelDirective &directive)=0
Internal interface handler for directive_storeRel.
void sequencer_sendSignal_result_success()
Send signal result_success to state machine sequencer.
void cmdResponseIn_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Handler base-class function for input port cmdResponseIn.
void sequencer_sendSignal_stmtResponse_success()
Send signal stmtResponse_success to state machine sequencer.
virtual void VALIDATE_ARGS_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command VALIDATE_ARGS.
virtual ~FpySequencerComponentBase()
Destroy FpySequencerComponentBase object.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setSequenceArguments(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_SequenceExecutionArgs &value)=0
void log_WARNING_LO_CmdResponseWhileNotRunningSequence(I32 state, FwOpcodeType opcode, Fw::CmdResponse response) const
Log event CmdResponseWhileNotRunningSequence.
void tlmWrite_Debug_StackSize(Svc::Fpy::StackSizeType arg, Fw::Time _tlmTime=Fw::Time())
virtual void SET_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U32 stmtIdx, bool breakOnce)=0
virtual void directive_stackOp_internalInterfaceHandler(const Svc::FpySequencer_StackOpDirective &directive)=0
Internal interface handler for directive_stackOp.
void sequencer_sendSignal_cmd_VALIDATE(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_VALIDATE to state machine sequencer.
void directive_noOp_internalInterfaceInvoke(const Svc::FpySequencer_NoOpDirective &directive)
Internal interface base-class function for directive_noOp.
static constexpr FwIndexType getNum_tlmWrite_InputPorts()
Enum representing a command response.
virtual void Svc_FpySequencer_SequencerStateMachine_action_validate(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void RUN_VALIDATED_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN_VALIDATED.
void log_WARNING_HI_FileReadError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileReadError.
void set_logOut_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to logOut[portNum].
virtual void DUMP_STACK_TO_FILE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void tlmWrite_State(FwEnumStoreType arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_FileApiError(const Fw::StringBase &filePath, I32 errorCode) const
Log event FileApiError.
void tlmWrite_SequencesSucceeded(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const
Log event ExtraBytesInSequence.
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearSequenceFile(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void directive_allocate_internalInterfaceInvoke(const Svc::FpySequencer_AllocateDirective &directive)
Internal interface base-class function for directive_allocate.
pops bytes off the top of the stack and does nothing with them
void directive_storeRelConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive)
Internal interface base-class function for directive_storeRelConstOffset.
static constexpr FwIndexType getNum_timeCaller_OutputPorts()
virtual void seqRunIn_preMsgHook(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)
Pre-message hook for async input port seqRunIn.
void log_DIAGNOSTIC_LogDiagnostic(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogDiagnostic.
void log_COMMAND_LogCommand(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogCommand.
virtual void directive_waitAbs_internalInterfaceHandler(const Svc::FpySequencer_WaitAbsDirective &directive)=0
Internal interface handler for directive_waitAbs.
virtual void RUN_VALIDATED_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, Svc::BlockState block)=0
virtual void pingIn_preMsgHook(FwIndexType portNum, U32 key)
Pre-message hook for async input port pingIn.
virtual void STEP_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void directive_pushTlmValAndTime_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValAndTimeDirective &directive)
Internal interface base-class function for directive_pushTlmValAndTime.
void directive_stackCmd_internalInterfaceInvoke(const Svc::FpySequencer_StackCmdDirective &directive)
Internal interface base-class function for directive_stackCmd.
void cmdIn_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Handler base-class function for input port cmdIn.
void log_WARNING_HI_TooManySequenceDirectives(U16 count, U16 max) const
Log event TooManySequenceDirectives.
void sequencer_sendSignal_stmtResponse_unexpected()
Send signal stmtResponse_unexpected to state machine sequencer.
void sequencer_sendSignal_cmd_BREAK()
Send signal cmd_BREAK to state machine sequencer.
void sequencer_sendSignal_result_dispatchStatement_failure()
Send signal result_dispatchStatement_failure to state machine sequencer.
void log_WARNING_HI_DirectiveDeserializeError(U8 opcode, U32 stmtIdx, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event DirectiveDeserializeError.
virtual void pingIn_handler(FwIndexType portNum, U32 key)=0
Handler for input port pingIn.
Svc::InputSchedPort * get_checkTimers_InputPort(FwIndexType portNum)
virtual void STEP_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command STEP.
void RUN_VALIDATED_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void tlmWrite_PRM_STATEMENT_TIMEOUT_SECS(F32 arg, Fw::Time _tlmTime=Fw::Time())
void init()
Object initializer.
Definition: ObjBase.cpp:24
void set_pingOut_OutputPort(FwIndexType portNum, Svc::InputPingPort *port)
Connect port to pingOut[portNum].
static constexpr FwIndexType getNum_tlmOut_OutputPorts()
void log_ACTIVITY_LO_LogActivityLo(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogActivityLo.
virtual void directive_allocate_internalInterfaceHandler(const Svc::FpySequencer_AllocateDirective &directive)=0
Internal interface handler for directive_allocate.
static constexpr FwIndexType getNum_pingOut_OutputPorts()
SerializeStatus
forward declaration for string
Svc_FpySequencer_SequencerStateMachine::State sequencer_getState() const
Get the state of state machine instance sequencer.
void set_getTlmChan_OutputPort(FwIndexType portNum, Fw::InputTlmGetPort *port)
Connect port to getTlmChan[portNum].
float F32
32-bit floating point
Definition: BasicTypes.h:84
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
virtual bool Svc_FpySequencer_SequencerStateMachine_guard_shouldBreak(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal) const =0
virtual void checkTimers_handler(FwIndexType portNum, U32 context)=0
Handler for input port checkTimers.
static constexpr FwIndexType getNum_getParam_OutputPorts()
static constexpr FwIndexType getNum_cmdRegOut_OutputPorts()
void log_WARNING_HI_WrongCmdResponseOpcode(FwOpcodeType opcode, Fw::CmdResponse response, FwOpcodeType expectedOpcode) const
Log event WrongCmdResponseOpcode.
void directive_popSerializable_internalInterfaceInvoke(const Svc::FpySequencer_PopSerializableDirective &directive)
Internal interface base-class function for directive_popSerializable.
void tlmWrite_StatementsFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
FwIdType FwEventIdType
The type of an event identifier.
loads a value from a local variable at a compile-time-known offset relative to the current stack fram...
void seqCancelIn_handlerBase(FwIndexType portNum)
Handler base-class function for input port seqCancelIn.
void log_ACTIVITY_HI_LogActivityHi(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogActivityHi.
void regCommands()
Register commands with the Command Dispatcher.
void directive_loadAbs_internalInterfaceInvoke(const Svc::FpySequencer_LoadAbsDirective &directive)
Internal interface base-class function for directive_loadAbs.
F32 paramGet_STATEMENT_TIMEOUT_SECS(Fw::ParamValid &valid)
Svc::InputCmdSeqCancelPort * get_seqCancelIn_InputPort(FwIndexType portNum)
pop two byte arrays off the top of the stack, call memcmp, push 1 if they were equal, 0 otherwise
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
void directive_memCmp_internalInterfaceInvoke(const Svc::FpySequencer_MemCmpDirective &directive)
Internal interface base-class function for directive_memCmp.
pops a severity and message from the stack and emits an F Prime event
void directive_pushTime_internalInterfaceInvoke(const Svc::FpySequencer_PushTimeDirective &directive)
Internal interface base-class function for directive_pushTime.
void tlmWrite_DirectiveErrorId(const Svc::Fpy::DirectiveId &arg, Fw::Time _tlmTime=Fw::Time())
static constexpr FwIndexType getNum_cmdResponseIn_InputPorts()
Svc::InputPingPort * get_pingIn_InputPort(FwIndexType portNum)
void tlmWrite_Debug_NextCmdOpcode(FwOpcodeType arg, Fw::Time _tlmTime=Fw::Time())
void tlmWrite_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port tlmWrite.
void RUN_ARGS_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Base-class handler function for command RUN_ARGS.
virtual void directive_setSeed_internalInterfaceHandler(const Svc::FpySequencer_SetSeedDirective &directive)=0
Internal interface handler for directive_setSeed.
virtual void directive_constCmd_internalInterfaceHandler(const Svc::FpySequencer_ConstCmdDirective &directive)=0
Internal interface handler for directive_constCmd.
Fw::InputCmdPort * get_cmdIn_InputPort(FwIndexType portNum)
bool isConnected_cmdResponseOut_OutputPort(FwIndexType portNum) const
void tlmWrite_PRM_SEQ_BASE_DIR(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time())
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearSequenceArguments(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void pingIn_handlerBase(FwIndexType portNum, U32 key)
Handler base-class function for input port pingIn.
stores a value to an absolute address in the stack (for global variables), const offset ...
void set_timeCaller_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
friend class FpySequencerTester
Test implementation for the enclosing component.
virtual void Svc_FpySequencer_SequencerStateMachine_action_dispatchStatement(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void directive_pushVal_internalInterfaceHandler(const Svc::FpySequencer_PushValDirective &directive)=0
Internal interface handler for directive_pushVal.
void sequencer_sendSignal_cmd_RUN_VALIDATED(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_RUN_VALIDATED to state machine sequencer.
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearBreakpoint(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void BREAK_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
Svc_FpySequencer_SequencerStateMachine(FpySequencerComponentBase &component)
Constructor.
FwIdType FwChanIdType
The type of a telemetry channel identifier.
void log_WARNING_HI_EndOfFileError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath) const
Log event EndOfFileError.
void set_cmdResponseOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to cmdResponseOut[portNum].
void log_WARNING_LO_CmdResponseFromOldSequence(FwOpcodeType opcode, Fw::CmdResponse response, U16 oldSequenceIdx, U16 currentSequenceIdx) const
Log event CmdResponseFromOldSequence.
Sequencer blocking state.
FpySequencerComponentBase(const char *compName="")
Construct FpySequencerComponentBase object.
virtual void directive_call_internalInterfaceHandler(const Svc::FpySequencer_CallDirective &directive)=0
Internal interface handler for directive_call.
virtual void CONTINUE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void sequencer_sendSignal_checkTimersIn()
Send signal checkTimersIn to state machine sequencer.
void tlmWrite_StatementsDispatched(U64 arg, Fw::Time _tlmTime=Fw::Time())
void tlmWrite_LastDirectiveError(const Svc::Fpy::DirectiveErrorCode &arg, Fw::Time _tlmTime=Fw::Time())
void VALIDATE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_discard_internalInterfaceHandler(const Svc::FpySequencer_DiscardDirective &directive)=0
Internal interface handler for directive_discard.
void VALIDATE_ARGS_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
static constexpr FwIndexType getNum_prmSet_OutputPorts()
void log_WARNING_HI_LogWarningHi(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogWarningHi.
Implementation of state machine Svc_FpySequencer_SequencerStateMachine.
peeks at N bytes from the stack, starting from an offset relative to the top of the stack ...
void sequencer_sendSignal_stmtResponse_failure()
Send signal stmtResponse_failure to state machine sequencer.
void CANCEL_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void directive_waitAbs_internalInterfaceInvoke(const Svc::FpySequencer_WaitAbsDirective &directive)
Internal interface base-class function for directive_waitAbs.
void directive_peek_internalInterfaceInvoke(const Svc::FpySequencer_PeekDirective &directive)
Internal interface base-class function for directive_peek.
void set_cmdRegOut_OutputPort(FwIndexType portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void tlmWrite_Debug_NextStatementIndex(U32 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_CommandFailed(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath, Fw::CmdResponse response) const
Log event CommandFailed.
void sequencer_sendSignal_stmtResponse_beginSleep()
Send signal stmtResponse_beginSleep to state machine sequencer.
void log_WARNING_HI_CommandTimedOut(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event CommandTimedOut.
void sequencer_sendSignal_result_checkStatementTimeout_noTimeout()
Send signal result_checkStatementTimeout_noTimeout to state machine sequencer.
Enum representing event severity.
static constexpr FwIndexType getNum_seqRunIn_InputPorts()
virtual void tlmWrite_handler(FwIndexType portNum, U32 context)=0
Handler for input port tlmWrite.
Svc::InputCmdSeqInPort * get_seqRunIn_InputPort(FwIndexType portNum)
virtual void directive_memCmp_internalInterfaceHandler(const Svc::FpySequencer_MemCmpDirective &directive)=0
Internal interface handler for directive_memCmp.
void loadParameters()
Load the parameters from a parameter source.
virtual void Svc_FpySequencer_SequencerStateMachine_action_sendCmdResponse_EXECUTION_ERROR(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void log_WARNING_HI_InvalidSeqRunCall(I32 state) const
Log event InvalidSeqRunCall.
virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective &directive)=0
Internal interface handler for directive_if.
void directive_getField_internalInterfaceInvoke(const Svc::FpySequencer_GetFieldDirective &directive)
Internal interface base-class function for directive_getField.
static constexpr FwIndexType getNum_cmdOut_OutputPorts()
virtual void Svc_FpySequencer_SequencerStateMachine_action_setGoalState_VALID(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
sleeps for a relative duration from the current time
virtual void RUN_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::BlockState block)=0
void seqDoneOut_out(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response) const
Invoke output port seqDoneOut.
virtual void directive_storeRelConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive)=0
Internal interface handler for directive_storeRelConstOffset.
void directive_discard_internalInterfaceInvoke(const Svc::FpySequencer_DiscardDirective &directive)
Internal interface base-class function for directive_discard.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:54
bool isConnected_serialOut_OutputPort(FwIndexType portNum) const
virtual void directive_noOp_internalInterfaceHandler(const Svc::FpySequencer_NoOpDirective &directive)=0
Internal interface handler for directive_noOp.
void log_ACTIVITY_HI_BreakpointSet(U32 breakpointIdx, bool breakOnce) const
Log event BreakpointSet.
void directive_pushPrm_internalInterfaceInvoke(const Svc::FpySequencer_PushPrmDirective &directive)
Internal interface base-class function for directive_pushPrm.
void sequencer_sendSignal_result_timeOpFailed()
Send signal result_timeOpFailed to state machine sequencer.
void BREAK_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void log_WARNING_HI_FileOpenError(const Fw::StringBase &filePath, I32 errorCode) const
Log event FileOpenError.
void init(FpySequencerComponentBase::SmId smId)
Initialize the state machine.
void set_prmSet_OutputPort(FwIndexType portNum, Fw::InputPrmSetPort *port)
Connect port to prmSet[portNum].
virtual void Svc_FpySequencer_SequencerStateMachine_action_setSequenceBlockState(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_SequenceExecutionArgs &value)=0
void sequencer_sendSignal_cmd_CANCEL()
Send signal cmd_CANCEL to state machine sequencer.
void sequencer_sendSignal_result_checkStatementTimeout_statementTimeout()
Send signal result_checkStatementTimeout_statementTimeout to state machine sequencer.
static constexpr FwIndexType getNum_cmdResponseOut_OutputPorts()
Must be called after VALIDATE. Runs the sequence that was validated.
virtual void RUN_ARGS_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::BlockState block, Svc::SeqArgs buffer)=0
Handler for command RUN_ARGS.
void sequencer_sendSignal_stmtResponse_keepWaiting()
Send signal stmtResponse_keepWaiting to state machine sequencer.
bool isConnected_tlmOut_OutputPort(FwIndexType portNum) const
virtual void Svc_FpySequencer_SequencerStateMachine_action_resetRuntime(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void log_WARNING_HI_InvalidCommand(I32 state) const
Log event InvalidCommand.
void tlmWrite_BreakBeforeNextLine(bool arg, Fw::Time _tlmTime=Fw::Time())
virtual void directive_storeAbs_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsDirective &directive)=0
Internal interface handler for directive_storeAbs.
bool isConnected_logOut_OutputPort(FwIndexType portNum) const
void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase &filePath) const
Log event SequenceCancelled.
virtual void RUN_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN.
void log_ACTIVITY_HI_BreakpointCleared() const
Log event BreakpointCleared.
void log_WARNING_HI_ArgTotalSizeExceedsStackLimit(Svc::Fpy::StackSizeType argSize) const
Log event ArgTotalSizeExceedsStackLimit.
static constexpr FwIndexType getNum_getTlmChan_OutputPorts()
void directive_pushRand_internalInterfaceInvoke(const Svc::FpySequencer_PushRandDirective &directive)
Internal interface base-class function for directive_pushRand.
virtual void directive_getField_internalInterfaceHandler(const Svc::FpySequencer_GetFieldDirective &directive)=0
Internal interface handler for directive_getField.
virtual void directive_loadRel_internalInterfaceHandler(const Svc::FpySequencer_LoadRelDirective &directive)=0
Internal interface handler for directive_loadRel.
Fw::ParamString paramGet_SEQ_BASE_DIR(Fw::ParamValid &valid)
bool isConnected_timeCaller_OutputPort(FwIndexType portNum) const
void tlmWrite_SequencesFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_FileReadDeserializeError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event FileReadDeserializeError.
void directive_setSeed_internalInterfaceInvoke(const Svc::FpySequencer_SetSeedDirective &directive)
Internal interface base-class function for directive_setSeed.
loads a value from an absolute address in the stack (for global variables)
virtual void directive_pushRand_internalInterfaceHandler(const Svc::FpySequencer_PushRandDirective &directive)=0
Internal interface handler for directive_pushRand.
void tlmWrite_SeqPath(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time())
virtual void SET_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SET_BREAKPOINT.
PlatformIndexType FwIndexType
void directive_constCmd_internalInterfaceInvoke(const Svc::FpySequencer_ConstCmdDirective &directive)
Internal interface base-class function for directive_constCmd.
virtual void VALIDATE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command VALIDATE.
static constexpr FwIndexType getNum_checkTimers_InputPorts()
static constexpr FwIndexType getNum_serialOut_OutputPorts()
pops a U32 from the stack and uses it to seed the RNG used by PushRandDirective
bool isConnected_pingOut_OutputPort(FwIndexType portNum) const
pops serialized data from stack and sends to serial output port
void log_WARNING_HI_MismatchedTimeContext(I32 internalTimeContext, I32 otherTimeContext) const
Log event MismatchedTimeContext.
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearBreakBeforeNextLine(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void directive_return_internalInterfaceInvoke(const Svc::FpySequencer_ReturnDirective &directive)
Internal interface base-class function for directive_return.
bool isConnected_cmdOut_OutputPort(FwIndexType portNum) const
Svc::InputSchedPort * get_tlmWrite_InputPort(FwIndexType portNum)
void seqRunIn_handlerBase(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)
Handler base-class function for input port seqRunIn.
void log_WARNING_HI_WrongSchemaVersion(U8 expected, U8 actual) const
Log event WrongSchemaVersion.
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqBroken(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_setBreakBeforeNextLine(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void sequencer_sendSignal_cmd_CLEAR_BREAKPOINT()
Send signal cmd_CLEAR_BREAKPOINT to state machine sequencer.
void log_WARNING_LO_LogWarningLo(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogWarningLo.
Svc::FpySequencer_SequencerStateMachine_State State
The state type.
void log_WARNING_HI_UnknownSequencerDirective(U8 opcode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event UnknownSequencerDirective.
virtual void VALIDATE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void log_WARNING_HI_InvalidSeqCancelCall(I32 state) const
Log event InvalidSeqCancelCall.
stores a value to a local variable at a runtime-determined offset relative to the current stack frame...
virtual void directive_return_internalInterfaceHandler(const Svc::FpySequencer_ReturnDirective &directive)=0
Internal interface handler for directive_return.
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqSucceeded(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void BREAK_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command BREAK.
void tlmWrite_DirectiveErrorIndex(U64 arg, Fw::Time _tlmTime=Fw::Time())
RateGroupDivider component implementation.
void log_WARNING_HI_CmdResponseWhileNotAwaiting(FwOpcodeType opcode, Fw::CmdResponse response) const
Log event CmdResponseWhileNotAwaiting.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setGoalState_RUNNING(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void log_WARNING_HI_CmdResponseWhileAwaitingDirective(FwOpcodeType opcode, Fw::CmdResponse response, U8 expectedDirectiveOpcode) const
Log event CmdResponseWhileAwaitingDirective.
Loads, validates and runs a sequence.
virtual void cmdResponseIn_preMsgHook(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Pre-message hook for async input port cmdResponseIn.
Enum representing parameter validity.
virtual void directive_popEvent_internalInterfaceHandler(const Svc::FpySequencer_PopEventDirective &directive)=0
Internal interface handler for directive_popEvent.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setBreakpoint(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_BreakpointArgs &value)=0
void log_FATAL_LogFatal(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogFatal.
void log_WARNING_HI_TooManySequenceArgs(U8 count, U8 max) const
Log event TooManySequenceArgs.
void sequencer_sendSignal_cmd_CONTINUE()
Send signal cmd_CONTINUE to state machine sequencer.
void directive_storeAbs_internalInterfaceInvoke(const Svc::FpySequencer_StoreAbsDirective &directive)
Internal interface base-class function for directive_storeAbs.
void DUMP_STACK_TO_FILE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
friend class FpySequencerTester
Friend class tester implementation to support white-box testing.
void log_WARNING_HI_MismatchedTimeBase(I32 internalTimeBase, I32 otherTimeBase) const
Log event MismatchedTimeBase.
void sequencer_sendSignal_result_failure()
Send signal result_failure to state machine sequencer.
bool isConnected_seqStartOut_OutputPort(FwIndexType portNum) const
virtual void CONTINUE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CONTINUE.
void log_WARNING_HI_ArgSizeMismatch(Svc::Fpy::StackSizeType expected, FwSizeType actual, const Fw::StringBase &filePath) const
Log event ArgSizeMismatch.
virtual void checkTimers_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port checkTimers.
void seqStartOut_out(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args) const
Invoke output port seqStartOut.
void sequencer_sendSignal_entered()
Send signal entered to state machine sequencer.
void directive_call_internalInterfaceInvoke(const Svc::FpySequencer_CallDirective &directive)
Internal interface base-class function for directive_call.
void directive_exit_internalInterfaceInvoke(const Svc::FpySequencer_ExitDirective &directive)
Internal interface base-class function for directive_exit.
virtual void Svc_FpySequencer_SequencerStateMachine_action_checkShouldWake(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void directive_storeAbsConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreAbsConstOffsetDirective &directive)
Internal interface base-class function for directive_storeAbsConstOffset.
FpySequencerComponentBase::SmId getId() const
Get the state machine id.
pushes the current Fw.Time struct to the stack
void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase &filePath) const
Log event SequenceDone.
void directive_goto_internalInterfaceInvoke(const Svc::FpySequencer_GotoDirective &directive)
Internal interface base-class function for directive_goto.
static constexpr FwIndexType getNum_seqDoneOut_OutputPorts()
void directive_waitRel_internalInterfaceInvoke(const Svc::FpySequencer_WaitRelDirective &directive)
Internal interface base-class function for directive_waitRel.
virtual void directive_pushTlmValAndTime_internalInterfaceHandler(const Svc::FpySequencer_PushTlmValAndTimeDirective &directive)=0
Internal interface handler for directive_pushTlmValAndTime.
void directive_storeRel_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelDirective &directive)
Internal interface base-class function for directive_storeRel.
virtual void directive_pushTlmVal_internalInterfaceHandler(const Svc::FpySequencer_PushTlmValDirective &directive)=0
Internal interface handler for directive_pushTlmVal.
virtual bool Svc_FpySequencer_SequencerStateMachine_guard_goalStateIs_RUNNING(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal) const =0
void SET_BREAKPOINT_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void directive_loadRel_internalInterfaceInvoke(const Svc::FpySequencer_LoadRelDirective &directive)
Internal interface base-class function for directive_loadRel.
Auto-generated base for FpySequencer component.
static constexpr FwIndexType getNum_logOut_OutputPorts()
void sequencer_sendSignal_cmd_RUN(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_RUN to state machine sequencer.
void log_WARNING_HI_FileWriteError(FwSizeType writeSize, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileWriteError.
virtual void directive_storeAbsConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsConstOffsetDirective &directive)=0
Internal interface handler for directive_storeAbsConstOffset.
void checkTimers_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port checkTimers.
static constexpr FwIndexType getNum_prmGet_OutputPorts()
static constexpr FwIndexType getNum_seqCancelIn_InputPorts()
virtual void CANCEL_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CANCEL.
void tlmWrite_BreakOnlyOnceOnBreakpoint(bool arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_WrongCmdResponseIndex(FwOpcodeType opcode, Fw::CmdResponse response, U16 actualCmdIdx, U16 expectedCmdIdx) const
Log event WrongCmdResponseIndex.
Fw::TlmValid getTlmChan_out(FwIndexType portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke output port getTlmChan.
void tlmWrite_SequencesCancelled(U64 arg, Fw::Time _tlmTime=Fw::Time())
virtual void directive_loadAbs_internalInterfaceHandler(const Svc::FpySequencer_LoadAbsDirective &directive)=0
Internal interface handler for directive_loadAbs.
void tlmWrite_BreakpointInUse(bool arg, Fw::Time _tlmTime=Fw::Time())
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqCancelled(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
bool isConnected_seqDoneOut_OutputPort(FwIndexType portNum) const
friend class FpySequencerTesterBase
Autocoded test harness for the enclosing component.
void set_prmGet_OutputPort(FwIndexType portNum, Fw::InputPrmGetPort *port)
Connect port to prmGet[portNum].
void set_getParam_OutputPort(FwIndexType portNum, Fw::InputPrmGetPort *port)
Connect port to getParam[portNum].
void CLEAR_BREAKPOINT_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
U32 StackSizeType
the type which everything referencing a size or offset on the stack is represented in ...
void tlmWrite(FwChanIdType id, Fw::TlmBuffer &_tlmBuff, Fw::Time _tlmTime=Fw::Time()) const
#define FW_PORT_SERIALIZATION
calls for multi-note systems)
Definition: FpConfig.h:83
Loads and validates a sequence with arguments.
void tlmWrite_BreakpointIndex(U32 arg, Fw::Time _tlmTime=Fw::Time())
#define U64(C)
Definition: sha.h:181
void tlmWrite_Debug_NextStatementReadSuccess(bool arg, Fw::Time _tlmTime=Fw::Time())