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 #if FW_ENABLE_TEXT_LOGGING == 1
23 #include "Fw/Log/LogTextPortAc.hpp"
24 #endif
27 #include "Fw/Prm/PrmGetPortAc.hpp"
28 #include "Fw/Prm/PrmSetPortAc.hpp"
29 #include "Fw/Prm/PrmString.hpp"
30 #include "Fw/Time/TimePortAc.hpp"
31 #include "Fw/Tlm/TlmGetPortAc.hpp"
32 #include "Fw/Tlm/TlmPortAc.hpp"
33 #include "Fw/Tlm/TlmString.hpp"
35 #include "Os/Mutex.hpp"
75 #include "Svc/Ping/PingPortAc.hpp"
83 
84 namespace Svc {
85 
92  {
93 
94  // ----------------------------------------------------------------------
95  // Friend classes
96  // ----------------------------------------------------------------------
97 
99  friend class FpySequencerTesterBase;
101  friend class FpySequencerTester;
102 
103  protected:
104 
105  // ----------------------------------------------------------------------
106  // Constants
107  // ----------------------------------------------------------------------
108 
110  enum {
112  };
113 
115  enum {
121  };
122 
124  enum {
133  };
134 
136  enum {
143  };
144 
146  enum {
147  OPCODE_RUN = 0x0,
151  OPCODE_SET_BREAKPOINT = 0x4,
153  OPCODE_BREAK = 0x5,
157  OPCODE_CONTINUE = 0x6,
162  OPCODE_STEP = 0x8,
164  OPCODE_SET_FLAG = 0x9,
172  };
173 
175  enum {
208  };
209 
211  enum {
234  };
235 
237  enum {
243  };
244 
246  enum class SmId : FwEnumStoreType {
247  sequencer,
248  };
249 
250  protected:
251 
252  // ----------------------------------------------------------------------
253  // Types for internal state machines
254  // ----------------------------------------------------------------------
255 
259  {
260 
261  // ----------------------------------------------------------------------
262  // Friend classes
263  // ----------------------------------------------------------------------
264 
268  friend class FpySequencerTester;
269 
270  public:
271 
274  FpySequencerComponentBase& component
275  );
276 
277  public:
278 
280  void init(
282  );
283 
284  public:
285 
288 
289  private:
290 
292  void action_signalEntered(
293  Signal signal
294  );
295 
297  void action_setSequenceFilePath(
298  Signal signal,
300  );
301 
303  void action_setSequenceBlockState(
304  Signal signal,
306  );
307 
309  void action_validate(
310  Signal signal
311  );
312 
314  void action_report_seqSucceeded(
315  Signal signal
316  );
317 
319  void action_report_seqCancelled(
320  Signal signal
321  );
322 
324  void action_report_seqFailed(
325  Signal signal
326  );
327 
329  void action_report_seqStarted(
330  Signal signal
331  );
332 
334  void action_setGoalState_RUNNING(
335  Signal signal
336  );
337 
339  void action_setGoalState_VALID(
340  Signal signal
341  );
342 
344  void action_setGoalState_IDLE(
345  Signal signal
346  );
347 
349  void action_sendCmdResponse_OK(
350  Signal signal
351  );
352 
354  void action_sendCmdResponse_EXECUTION_ERROR(
355  Signal signal
356  );
357 
359  void action_clearSequenceFile(
360  Signal signal
361  );
362 
364  void action_clearBreakpoint(
365  Signal signal
366  );
367 
369  void action_checkShouldWake(
370  Signal signal
371  );
372 
374  void action_dispatchStatement(
375  Signal signal
376  );
377 
379  void action_resetRuntime(
380  Signal signal
381  );
382 
384  void action_checkStatementTimeout(
385  Signal signal
386  );
387 
389  void action_incrementSequenceCounter(
390  Signal signal
391  );
392 
394  void action_report_seqBroken(
395  Signal signal
396  );
397 
399  void action_setBreakpoint(
400  Signal signal,
402  );
403 
405  void action_setBreakBeforeNextLine(
406  Signal signal
407  );
408 
410  void action_clearBreakBeforeNextLine(
411  Signal signal
412  );
413 
414  private:
415 
417  bool guard_goalStateIs_RUNNING(
418  Signal signal
419  ) const;
420 
422  bool guard_shouldBreak(
423  Signal signal
424  ) const;
425 
427  bool guard_breakOnce(
428  Signal signal
429  ) const;
430 
431  private:
432 
434  FpySequencerComponentBase& m_component;
435 
436  };
437 
438  public:
439 
440  // ----------------------------------------------------------------------
441  // Component initialization
442  // ----------------------------------------------------------------------
443 
445  void init(
446  FwSizeType queueDepth,
447  FwEnumStoreType instance = 0
448  );
449 
450  public:
451 
452  // ----------------------------------------------------------------------
453  // Getters for special input ports
454  // ----------------------------------------------------------------------
455 
460  FwIndexType portNum
461  );
462 
463  public:
464 
465  // ----------------------------------------------------------------------
466  // Getters for typed input ports
467  // ----------------------------------------------------------------------
468 
473  FwIndexType portNum
474  );
475 
480  FwIndexType portNum
481  );
482 
487  FwIndexType portNum
488  );
489 
494  FwIndexType portNum
495  );
496 
501  FwIndexType portNum
502  );
503 
504  public:
505 
506  // ----------------------------------------------------------------------
507  // Connect input ports to special output ports
508  // ----------------------------------------------------------------------
509 
512  FwIndexType portNum,
513  Fw::InputCmdRegPort* port
514  );
515 
518  FwIndexType portNum,
520  );
521 
524  FwIndexType portNum,
525  Fw::InputLogPort* port
526  );
527 
528 #if FW_ENABLE_TEXT_LOGGING == 1
529 
531  void set_logTextOut_OutputPort(
532  FwIndexType portNum,
533  Fw::InputLogTextPort* port
534  );
535 
536 #endif
537 
540  FwIndexType portNum,
541  Fw::InputPrmGetPort* port
542  );
543 
546  FwIndexType portNum,
547  Fw::InputPrmSetPort* port
548  );
549 
552  FwIndexType portNum,
553  Fw::InputTimePort* port
554  );
555 
558  FwIndexType portNum,
559  Fw::InputTlmPort* port
560  );
561 
562  public:
563 
564  // ----------------------------------------------------------------------
565  // Connect typed input ports to typed output ports
566  // ----------------------------------------------------------------------
567 
570  FwIndexType portNum,
571  Fw::InputComPort* port
572  );
573 
576  FwIndexType portNum,
577  Fw::InputPrmGetPort* port
578  );
579 
582  FwIndexType portNum,
583  Fw::InputTlmGetPort* port
584  );
585 
588  FwIndexType portNum,
589  Svc::InputPingPort* port
590  );
591 
594  FwIndexType portNum,
596  );
597 
600  FwIndexType portNum,
602  );
603 
604 #if FW_PORT_SERIALIZATION
605 
606  public:
607 
608  // ----------------------------------------------------------------------
609  // Connect serial input ports to special output ports
610  // ----------------------------------------------------------------------
611 
614  FwIndexType portNum,
615  Fw::InputSerializePort* port
616  );
617 
620  FwIndexType portNum,
621  Fw::InputSerializePort* port
622  );
623 
626  FwIndexType portNum,
627  Fw::InputSerializePort* port
628  );
629 
630 #if FW_ENABLE_TEXT_LOGGING == 1
631 
633  void set_logTextOut_OutputPort(
634  FwIndexType portNum,
635  Fw::InputSerializePort* port
636  );
637 
638 #endif
639 
642  FwIndexType portNum,
643  Fw::InputSerializePort* port
644  );
645 
648  FwIndexType portNum,
649  Fw::InputSerializePort* port
650  );
651 
654  FwIndexType portNum,
655  Fw::InputSerializePort* port
656  );
657 
658 #endif
659 
660 #if FW_PORT_SERIALIZATION
661 
662  public:
663 
664  // ----------------------------------------------------------------------
665  // Connect serial input ports to typed output ports
666  // ----------------------------------------------------------------------
667 
670  FwIndexType portNum,
671  Fw::InputSerializePort* port
672  );
673 
676  FwIndexType portNum,
677  Fw::InputSerializePort* port
678  );
679 
682  FwIndexType portNum,
683  Fw::InputSerializePort* port
684  );
685 
688  FwIndexType portNum,
689  Fw::InputSerializePort* port
690  );
691 
692 #endif
693 
694  public:
695 
696  // ----------------------------------------------------------------------
697  // Command registration
698  // ----------------------------------------------------------------------
699 
703  void regCommands();
704 
705  public:
706 
707  // ----------------------------------------------------------------------
708  // Parameter loading
709  // ----------------------------------------------------------------------
710 
714  void loadParameters();
715 
716  protected:
717 
718  // ----------------------------------------------------------------------
719  // Component construction and destruction
720  // ----------------------------------------------------------------------
721 
724  const char* compName = ""
725  );
726 
728  virtual ~FpySequencerComponentBase();
729 
730  protected:
731 
732  // ----------------------------------------------------------------------
733  // Getters for numbers of special input ports
734  // ----------------------------------------------------------------------
735 
740  return NUM_CMDIN_INPUT_PORTS;
741  }
742 
743  protected:
744 
745  // ----------------------------------------------------------------------
746  // Getters for numbers of typed input ports
747  // ----------------------------------------------------------------------
748 
754  }
755 
761  }
762 
767  return NUM_PINGIN_INPUT_PORTS;
768  }
769 
775  }
776 
782  }
783 
784  protected:
785 
786  // ----------------------------------------------------------------------
787  // Getters for numbers of special output ports
788  // ----------------------------------------------------------------------
789 
795  }
796 
802  }
803 
809  }
810 
811 #if FW_ENABLE_TEXT_LOGGING == 1
812 
816  static constexpr FwIndexType getNum_logTextOut_OutputPorts() {
818  }
819 
820 #endif
821 
827  }
828 
834  }
835 
841  }
842 
848  }
849 
850  protected:
851 
852  // ----------------------------------------------------------------------
853  // Getters for numbers of typed output ports
854  // ----------------------------------------------------------------------
855 
861  }
862 
868  }
869 
875  }
876 
882  }
883 
889  }
890 
896  }
897 
898  protected:
899 
900  // ----------------------------------------------------------------------
901  // Connection status queries for special output ports
902  // ----------------------------------------------------------------------
903 
908  FwIndexType portNum
909  );
910 
915  FwIndexType portNum
916  );
917 
922  FwIndexType portNum
923  );
924 
925 #if FW_ENABLE_TEXT_LOGGING == 1
926 
930  bool isConnected_logTextOut_OutputPort(
931  FwIndexType portNum
932  );
933 
934 #endif
935 
940  FwIndexType portNum
941  );
942 
947  FwIndexType portNum
948  );
949 
954  FwIndexType portNum
955  );
956 
961  FwIndexType portNum
962  );
963 
964  protected:
965 
966  // ----------------------------------------------------------------------
967  // Connection status queries for typed output ports
968  // ----------------------------------------------------------------------
969 
974  FwIndexType portNum
975  );
976 
981  FwIndexType portNum
982  );
983 
988  FwIndexType portNum
989  );
990 
995  FwIndexType portNum
996  );
997 
1002  FwIndexType portNum
1003  );
1004 
1009  FwIndexType portNum
1010  );
1011 
1012  protected:
1013 
1014  // ----------------------------------------------------------------------
1015  // Handlers to implement for typed input ports
1016  // ----------------------------------------------------------------------
1017 
1019  virtual void checkTimers_handler(
1020  FwIndexType portNum,
1021  U32 context
1022  ) = 0;
1023 
1025  virtual void cmdResponseIn_handler(
1026  FwIndexType portNum,
1027  FwOpcodeType opCode,
1028  U32 cmdSeq,
1029  const Fw::CmdResponse& response
1030  ) = 0;
1031 
1033  virtual void pingIn_handler(
1034  FwIndexType portNum,
1035  U32 key
1036  ) = 0;
1037 
1039  virtual void seqRunIn_handler(
1040  FwIndexType portNum,
1041  const Fw::StringBase& filename
1042  ) = 0;
1043 
1045  virtual void tlmWrite_handler(
1046  FwIndexType portNum,
1047  U32 context
1048  ) = 0;
1049 
1050  protected:
1051 
1052  // ----------------------------------------------------------------------
1053  // Port handler base-class functions for typed input ports
1054  //
1055  // Call these functions directly to bypass the corresponding ports
1056  // ----------------------------------------------------------------------
1057 
1060  FwIndexType portNum,
1061  U32 context
1062  );
1063 
1066  FwIndexType portNum,
1067  FwOpcodeType opCode,
1068  U32 cmdSeq,
1069  const Fw::CmdResponse& response
1070  );
1071 
1073  void pingIn_handlerBase(
1074  FwIndexType portNum,
1075  U32 key
1076  );
1077 
1079  void seqRunIn_handlerBase(
1080  FwIndexType portNum,
1081  const Fw::StringBase& filename
1082  );
1083 
1085  void tlmWrite_handlerBase(
1086  FwIndexType portNum,
1087  U32 context
1088  );
1089 
1090  protected:
1091 
1092  // ----------------------------------------------------------------------
1093  // Pre-message hooks for typed async input ports
1094  //
1095  // Each of these functions is invoked just before processing a message
1096  // on the corresponding port. By default, they do nothing. You can
1097  // override them to provide specific pre-message behavior.
1098  // ----------------------------------------------------------------------
1099 
1101  virtual void checkTimers_preMsgHook(
1102  FwIndexType portNum,
1103  U32 context
1104  );
1105 
1107  virtual void cmdResponseIn_preMsgHook(
1108  FwIndexType portNum,
1109  FwOpcodeType opCode,
1110  U32 cmdSeq,
1111  const Fw::CmdResponse& response
1112  );
1113 
1115  virtual void pingIn_preMsgHook(
1116  FwIndexType portNum,
1117  U32 key
1118  );
1119 
1121  virtual void seqRunIn_preMsgHook(
1122  FwIndexType portNum,
1123  const Fw::StringBase& filename
1124  );
1125 
1127  virtual void tlmWrite_preMsgHook(
1128  FwIndexType portNum,
1129  U32 context
1130  );
1131 
1132  protected:
1133 
1134  // ----------------------------------------------------------------------
1135  // Invocation functions for typed output ports
1136  // ----------------------------------------------------------------------
1137 
1139  void cmdOut_out(
1140  FwIndexType portNum,
1141  Fw::ComBuffer& data,
1142  U32 context
1143  );
1144 
1147  FwIndexType portNum,
1148  FwPrmIdType id,
1149  Fw::ParamBuffer& val
1150  );
1152 
1155  FwIndexType portNum,
1156  FwChanIdType id,
1157  Fw::Time& timeTag,
1158  Fw::TlmBuffer& val
1159  );
1162 
1164  void pingOut_out(
1165  FwIndexType portNum,
1166  U32 key
1167  );
1168 
1170  void seqDoneOut_out(
1171  FwIndexType portNum,
1172  FwOpcodeType opCode,
1173  U32 cmdSeq,
1174  const Fw::CmdResponse& response
1175  );
1176 
1178  void seqStartOut_out(
1179  FwIndexType portNum,
1180  const Fw::StringBase& filename
1181  );
1182 
1183  protected:
1184 
1185  // ----------------------------------------------------------------------
1186  // Internal interface handlers
1187  // ----------------------------------------------------------------------
1188 
1191 
1194 
1197 
1200 
1203 
1206 
1209 
1212 
1214  virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective& directive) = 0;
1215 
1218 
1221 
1224 
1227 
1230 
1233 
1236 
1239 
1242 
1245 
1248 
1251 
1254 
1257 
1260 
1263 
1266 
1269 
1272 
1275 
1276  protected:
1277 
1278  // ----------------------------------------------------------------------
1279  // Internal interface base-class functions
1280  // ----------------------------------------------------------------------
1281 
1284 
1287 
1290 
1293 
1296 
1299 
1302 
1305 
1308 
1311 
1314 
1317 
1320 
1323 
1326 
1329 
1332 
1335 
1338 
1341 
1344 
1347 
1350 
1353 
1356 
1359 
1362 
1365 
1368 
1369  protected:
1370 
1371  // ----------------------------------------------------------------------
1372  // State getter functions
1373  // ----------------------------------------------------------------------
1374 
1377 
1378  protected:
1379 
1380  // ----------------------------------------------------------------------
1381  // Signal send functions
1382  // ----------------------------------------------------------------------
1383 
1387  );
1388 
1392  );
1393 
1397  );
1398 
1401 
1404  const Svc::FpySequencer_BreakpointArgs& value
1405  );
1406 
1409 
1412 
1415 
1418 
1421 
1424 
1427 
1430 
1433 
1436 
1439 
1442 
1445 
1448 
1451 
1454 
1457 
1460 
1463 
1466 
1469 
1470  protected:
1471 
1472  // ----------------------------------------------------------------------
1473  // Functions to implement for internal state machine actions
1474  // ----------------------------------------------------------------------
1475 
1480  SmId smId,
1482  ) = 0;
1483 
1488  SmId smId,
1491  ) = 0;
1492 
1497  SmId smId,
1500  ) = 0;
1501 
1506  SmId smId,
1508  ) = 0;
1509 
1514  SmId smId,
1516  ) = 0;
1517 
1522  SmId smId,
1524  ) = 0;
1525 
1530  SmId smId,
1532  ) = 0;
1533 
1538  SmId smId,
1540  ) = 0;
1541 
1546  SmId smId,
1548  ) = 0;
1549 
1554  SmId smId,
1556  ) = 0;
1557 
1562  SmId smId,
1564  ) = 0;
1565 
1570  SmId smId,
1572  ) = 0;
1573 
1578  SmId smId,
1580  ) = 0;
1581 
1586  SmId smId,
1588  ) = 0;
1589 
1594  SmId smId,
1596  ) = 0;
1597 
1602  SmId smId,
1604  ) = 0;
1605 
1610  SmId smId,
1612  ) = 0;
1613 
1618  SmId smId,
1620  ) = 0;
1621 
1626  SmId smId,
1628  ) = 0;
1629 
1634  SmId smId,
1636  ) = 0;
1637 
1642  SmId smId,
1644  ) = 0;
1645 
1650  SmId smId,
1652  const Svc::FpySequencer_BreakpointArgs& value
1653  ) = 0;
1654 
1659  SmId smId,
1661  ) = 0;
1662 
1667  SmId smId,
1669  ) = 0;
1670 
1671  protected:
1672 
1673  // ----------------------------------------------------------------------
1674  // Functions to implement for internal state machine guards
1675  // ----------------------------------------------------------------------
1676 
1681  SmId smId,
1683  ) const = 0;
1684 
1690  SmId smId,
1692  ) const = 0;
1693 
1698  SmId smId,
1700  ) const = 0;
1701 
1702  protected:
1703 
1704  // ----------------------------------------------------------------------
1705  // Command response
1706  // ----------------------------------------------------------------------
1707 
1709  void cmdResponse_out(
1710  FwOpcodeType opCode,
1711  U32 cmdSeq,
1712  Fw::CmdResponse response
1713  );
1714 
1715  protected:
1716 
1717  // ----------------------------------------------------------------------
1718  // Command handlers to implement
1719  // ----------------------------------------------------------------------
1720 
1724  virtual void RUN_cmdHandler(
1725  FwOpcodeType opCode,
1726  U32 cmdSeq,
1727  const Fw::CmdStringArg& fileName,
1729  ) = 0;
1730 
1734  virtual void VALIDATE_cmdHandler(
1735  FwOpcodeType opCode,
1736  U32 cmdSeq,
1737  const Fw::CmdStringArg& fileName
1738  ) = 0;
1739 
1743  virtual void RUN_VALIDATED_cmdHandler(
1744  FwOpcodeType opCode,
1745  U32 cmdSeq,
1747  ) = 0;
1748 
1753  virtual void CANCEL_cmdHandler(
1754  FwOpcodeType opCode,
1755  U32 cmdSeq
1756  ) = 0;
1757 
1764  virtual void SET_BREAKPOINT_cmdHandler(
1765  FwOpcodeType opCode,
1766  U32 cmdSeq,
1767  U32 stmtIdx,
1768  bool breakOnce
1769  ) = 0;
1770 
1776  virtual void BREAK_cmdHandler(
1777  FwOpcodeType opCode,
1778  U32 cmdSeq
1779  ) = 0;
1780 
1785  virtual void CONTINUE_cmdHandler(
1786  FwOpcodeType opCode,
1787  U32 cmdSeq
1788  ) = 0;
1789 
1794  virtual void CLEAR_BREAKPOINT_cmdHandler(
1795  FwOpcodeType opCode,
1796  U32 cmdSeq
1797  ) = 0;
1798 
1803  virtual void STEP_cmdHandler(
1804  FwOpcodeType opCode,
1805  U32 cmdSeq
1806  ) = 0;
1807 
1812  virtual void SET_FLAG_cmdHandler(
1813  FwOpcodeType opCode,
1814  U32 cmdSeq,
1815  Svc::Fpy::FlagId flag,
1816  bool value
1817  ) = 0;
1818 
1822  virtual void DUMP_STACK_TO_FILE_cmdHandler(
1823  FwOpcodeType opCode,
1824  U32 cmdSeq,
1825  const Fw::CmdStringArg& fileName
1826  ) = 0;
1827 
1828  protected:
1829 
1830  // ----------------------------------------------------------------------
1831  // Command handler base-class functions
1832  //
1833  // Call these functions directly to bypass the command input port
1834  // ----------------------------------------------------------------------
1835 
1839  void RUN_cmdHandlerBase(
1840  FwOpcodeType opCode,
1841  U32 cmdSeq,
1842  Fw::CmdArgBuffer& args
1843  );
1844 
1849  FwOpcodeType opCode,
1850  U32 cmdSeq,
1851  Fw::CmdArgBuffer& args
1852  );
1853 
1858  FwOpcodeType opCode,
1859  U32 cmdSeq,
1860  Fw::CmdArgBuffer& args
1861  );
1862 
1867  void CANCEL_cmdHandlerBase(
1868  FwOpcodeType opCode,
1869  U32 cmdSeq,
1870  Fw::CmdArgBuffer& args
1871  );
1872 
1880  FwOpcodeType opCode,
1881  U32 cmdSeq,
1882  Fw::CmdArgBuffer& args
1883  );
1884 
1890  void BREAK_cmdHandlerBase(
1891  FwOpcodeType opCode,
1892  U32 cmdSeq,
1893  Fw::CmdArgBuffer& args
1894  );
1895 
1901  FwOpcodeType opCode,
1902  U32 cmdSeq,
1903  Fw::CmdArgBuffer& args
1904  );
1905 
1911  FwOpcodeType opCode,
1912  U32 cmdSeq,
1913  Fw::CmdArgBuffer& args
1914  );
1915 
1920  void STEP_cmdHandlerBase(
1921  FwOpcodeType opCode,
1922  U32 cmdSeq,
1923  Fw::CmdArgBuffer& args
1924  );
1925 
1931  FwOpcodeType opCode,
1932  U32 cmdSeq,
1933  Fw::CmdArgBuffer& args
1934  );
1935 
1940  FwOpcodeType opCode,
1941  U32 cmdSeq,
1942  Fw::CmdArgBuffer& args
1943  );
1944 
1945  protected:
1946 
1947  // ----------------------------------------------------------------------
1948  // Pre-message hooks for async commands
1949  //
1950  // Each of these functions is invoked just before processing the
1951  // corresponding command. By default they do nothing. You can
1952  // override them to provide specific pre-command behavior.
1953  // ----------------------------------------------------------------------
1954 
1956  virtual void RUN_preMsgHook(
1957  FwOpcodeType opCode,
1958  U32 cmdSeq
1959  );
1960 
1962  virtual void VALIDATE_preMsgHook(
1963  FwOpcodeType opCode,
1964  U32 cmdSeq
1965  );
1966 
1968  virtual void RUN_VALIDATED_preMsgHook(
1969  FwOpcodeType opCode,
1970  U32 cmdSeq
1971  );
1972 
1974  virtual void CANCEL_preMsgHook(
1975  FwOpcodeType opCode,
1976  U32 cmdSeq
1977  );
1978 
1980  virtual void SET_BREAKPOINT_preMsgHook(
1981  FwOpcodeType opCode,
1982  U32 cmdSeq
1983  );
1984 
1986  virtual void BREAK_preMsgHook(
1987  FwOpcodeType opCode,
1988  U32 cmdSeq
1989  );
1990 
1992  virtual void CONTINUE_preMsgHook(
1993  FwOpcodeType opCode,
1994  U32 cmdSeq
1995  );
1996 
1998  virtual void CLEAR_BREAKPOINT_preMsgHook(
1999  FwOpcodeType opCode,
2000  U32 cmdSeq
2001  );
2002 
2004  virtual void STEP_preMsgHook(
2005  FwOpcodeType opCode,
2006  U32 cmdSeq
2007  );
2008 
2010  virtual void SET_FLAG_preMsgHook(
2011  FwOpcodeType opCode,
2012  U32 cmdSeq
2013  );
2014 
2016  virtual void DUMP_STACK_TO_FILE_preMsgHook(
2017  FwOpcodeType opCode,
2018  U32 cmdSeq
2019  );
2020 
2021  protected:
2022 
2023  // ----------------------------------------------------------------------
2024  // Event logging functions
2025  // ----------------------------------------------------------------------
2026 
2028  void log_WARNING_HI_InvalidCommand(I32 state) const;
2029 
2031  void log_WARNING_HI_InvalidSeqRunCall(I32 state) const;
2032 
2035  const Fw::StringBase& filePath,
2036  I32 errorCode
2037  ) const;
2038 
2041  FwSizeType writeSize,
2042  const Fw::StringBase& filePath,
2043  I32 errorCode
2044  ) const;
2045 
2049  const Fw::StringBase& filePath,
2050  I32 errorCode
2051  ) const;
2052 
2056  const Fw::StringBase& filePath
2057  ) const;
2058 
2062  const Fw::StringBase& filePath,
2063  I32 errorCode,
2064  U64 buffLeft,
2065  U64 buffLength
2066  ) const;
2067 
2070  U8 expected,
2071  U8 actual
2072  ) const;
2073 
2076  U32 expected,
2077  U32 actual
2078  ) const;
2079 
2081  void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const;
2082 
2085  U64 bufferSize,
2086  const Fw::StringBase& filePath
2087  ) const;
2088 
2091  FwOpcodeType opCode,
2092  U32 stmtIdx,
2093  const Fw::StringBase& filePath,
2094  Fw::CmdResponse response
2095  ) const;
2096 
2098  void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase& filePath) const;
2099 
2101  void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase& filePath) const;
2102 
2105  const Fw::StringBase& filePath,
2106  U8 errorCode
2107  ) const;
2108 
2111  U8 opcode,
2112  U32 stmtIdx,
2113  const Fw::StringBase& filePath
2114  ) const;
2115 
2118  I32 state,
2119  FwOpcodeType opcode,
2120  Fw::CmdResponse response
2121  ) const;
2122 
2125  FwOpcodeType opcode,
2126  Fw::CmdResponse response,
2127  U16 oldSequenceIdx,
2128  U16 currentSequenceIdx
2129  ) const;
2130 
2133  FwOpcodeType opcode,
2134  Fw::CmdResponse response
2135  ) const;
2136 
2139  FwOpcodeType opcode,
2140  Fw::CmdResponse response,
2141  U8 expectedDirectiveOpcode
2142  ) const;
2143 
2146  FwOpcodeType opcode,
2147  Fw::CmdResponse response,
2148  FwOpcodeType expectedOpcode
2149  ) const;
2150 
2153  FwOpcodeType opcode,
2154  Fw::CmdResponse response,
2155  U16 actualCmdIdx,
2156  U16 expectedCmdIdx
2157  ) const;
2158 
2161  U8 opcode,
2162  U32 stmtIdx,
2163  I32 errorCode,
2164  U64 buffLeft,
2165  U64 buffLength
2166  ) const;
2167 
2170  I32 internalTimeBase,
2171  I32 otherTimeBase
2172  ) const;
2173 
2176  I32 internalTimeContext,
2177  I32 otherTimeContext
2178  ) const;
2179 
2182  FwOpcodeType opCode,
2183  U32 stmtIdx,
2184  const Fw::StringBase& filePath
2185  ) const;
2186 
2189  U8 opCode,
2190  U32 stmtIdx,
2191  const Fw::StringBase& filePath
2192  ) const;
2193 
2196  U8 count,
2197  U8 max
2198  ) const;
2199 
2202  U16 count,
2203  U16 max
2204  ) const;
2205 
2207  void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const;
2208 
2211  U32 breakpointIdx,
2212  bool breakOnce
2213  ) const;
2214 
2216  void log_ACTIVITY_HI_BreakpointCleared() const;
2217 
2218  protected:
2219 
2220  // ----------------------------------------------------------------------
2221  // Telemetry write functions
2222  // ----------------------------------------------------------------------
2223 
2227  void tlmWrite_State(
2228  FwEnumStoreType arg,
2229  Fw::Time _tlmTime = Fw::Time()
2230  );
2231 
2236  U64 arg,
2237  Fw::Time _tlmTime = Fw::Time()
2238  );
2239 
2244  U64 arg,
2245  Fw::Time _tlmTime = Fw::Time()
2246  );
2247 
2252  U64 arg,
2253  Fw::Time _tlmTime = Fw::Time()
2254  );
2255 
2262  U64 arg,
2263  Fw::Time _tlmTime = Fw::Time()
2264  );
2265 
2270  U64 arg,
2271  Fw::Time _tlmTime = Fw::Time()
2272  );
2273 
2278  const Svc::Fpy::DirectiveErrorCode& arg,
2279  Fw::Time _tlmTime = Fw::Time()
2280  );
2281 
2286  U64 arg,
2287  Fw::Time _tlmTime = Fw::Time()
2288  );
2289 
2294  const Svc::Fpy::DirectiveId& arg,
2295  Fw::Time _tlmTime = Fw::Time()
2296  );
2297 
2301  void tlmWrite_SeqPath(
2302  const Fw::StringBase& arg,
2303  Fw::Time _tlmTime = Fw::Time()
2304  );
2305 
2310  bool arg,
2311  Fw::Time _tlmTime = Fw::Time()
2312  );
2313 
2318  bool arg,
2319  Fw::Time _tlmTime = Fw::Time()
2320  );
2321 
2326  U8 arg,
2327  Fw::Time _tlmTime = Fw::Time()
2328  );
2329 
2334  U32 arg,
2335  Fw::Time _tlmTime = Fw::Time()
2336  );
2337 
2342  FwOpcodeType arg,
2343  Fw::Time _tlmTime = Fw::Time()
2344  );
2345 
2351  Fw::Time _tlmTime = Fw::Time()
2352  );
2353 
2358  bool arg,
2359  Fw::Time _tlmTime = Fw::Time()
2360  );
2361 
2367  U32 arg,
2368  Fw::Time _tlmTime = Fw::Time()
2369  );
2370 
2375  bool arg,
2376  Fw::Time _tlmTime = Fw::Time()
2377  );
2378 
2385  bool arg,
2386  Fw::Time _tlmTime = Fw::Time()
2387  );
2388 
2393  F32 arg,
2394  Fw::Time _tlmTime = Fw::Time()
2395  );
2396 
2401  bool arg,
2402  Fw::Time _tlmTime = Fw::Time()
2403  );
2404 
2405  protected:
2406 
2407  // ----------------------------------------------------------------------
2408  // Parameter update hook
2409  // ----------------------------------------------------------------------
2410 
2414  virtual void parameterUpdated(
2415  FwPrmIdType id
2416  );
2417 
2418  // ----------------------------------------------------------------------
2419  // Parameter load hook
2420  // ----------------------------------------------------------------------
2421 
2425  virtual void parametersLoaded();
2426 
2427  protected:
2428 
2429  // ----------------------------------------------------------------------
2430  // Parameter get functions
2431  // ----------------------------------------------------------------------
2432 
2442  Fw::ParamValid& valid
2443  );
2444 
2451  Fw::ParamValid& valid
2452  );
2453 
2454  protected:
2455 
2456  // ----------------------------------------------------------------------
2457  // Time
2458  // ----------------------------------------------------------------------
2459 
2463  Fw::Time getTime() const;
2464 
2465  private:
2466 
2467  // ----------------------------------------------------------------------
2468  // Message dispatch functions
2469  // ----------------------------------------------------------------------
2470 
2472  virtual MsgDispatchStatus doDispatch();
2473 
2474  private:
2475 
2476  // ----------------------------------------------------------------------
2477  // Calls for messages received on special input ports
2478  // ----------------------------------------------------------------------
2479 
2481  static void m_p_cmdIn_in(
2482  Fw::PassiveComponentBase* callComp,
2483  FwIndexType portNum,
2484  FwOpcodeType opCode,
2485  U32 cmdSeq,
2486  Fw::CmdArgBuffer& args
2487  );
2488 
2489  private:
2490 
2491  // ----------------------------------------------------------------------
2492  // Calls for messages received on typed input ports
2493  // ----------------------------------------------------------------------
2494 
2496  static void m_p_checkTimers_in(
2497  Fw::PassiveComponentBase* callComp,
2498  FwIndexType portNum,
2499  U32 context
2500  );
2501 
2503  static void m_p_cmdResponseIn_in(
2504  Fw::PassiveComponentBase* callComp,
2505  FwIndexType portNum,
2506  FwOpcodeType opCode,
2507  U32 cmdSeq,
2508  const Fw::CmdResponse& response
2509  );
2510 
2512  static void m_p_pingIn_in(
2513  Fw::PassiveComponentBase* callComp,
2514  FwIndexType portNum,
2515  U32 key
2516  );
2517 
2519  static void m_p_seqRunIn_in(
2520  Fw::PassiveComponentBase* callComp,
2521  FwIndexType portNum,
2522  const Fw::StringBase& filename
2523  );
2524 
2526  static void m_p_tlmWrite_in(
2527  Fw::PassiveComponentBase* callComp,
2528  FwIndexType portNum,
2529  U32 context
2530  );
2531 
2532  private:
2533 
2534  // ----------------------------------------------------------------------
2535  // Send signal helper functions
2536  // ----------------------------------------------------------------------
2537 
2539  void sendSignalStart(
2540  SmId smId,
2541  FwEnumStoreType signal,
2542  Fw::SerialBufferBase& buffer
2543  );
2544 
2546  void sequencer_sendSignalFinish(
2547  Fw::LinearBufferBase& buffer
2548  );
2549 
2550  private:
2551 
2552  // ----------------------------------------------------------------------
2553  // Helper functions for state machine dispatch
2554  // ----------------------------------------------------------------------
2555 
2557  void smDispatch(
2558  Fw::SerialBufferBase& buffer
2559  );
2560 
2562  static void deserializeSmIdAndSignal(
2563  Fw::SerialBufferBase& buffer,
2564  FwEnumStoreType& smId,
2565  FwEnumStoreType& signal
2566  );
2567 
2569  void Svc_FpySequencer_SequencerStateMachine_smDispatch(
2570  Fw::SerialBufferBase& buffer,
2571  Svc_FpySequencer_SequencerStateMachine& sm,
2573  );
2574 
2575  private:
2576 
2577  // ----------------------------------------------------------------------
2578  // Parameter set functions
2579  // ----------------------------------------------------------------------
2580 
2584  Fw::CmdResponse paramSet_STATEMENT_TIMEOUT_SECS(
2585  Fw::SerialBufferBase& val
2586  );
2587 
2591  Fw::CmdResponse paramSet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(
2592  Fw::SerialBufferBase& val
2593  );
2594 
2595  private:
2596 
2597  // ----------------------------------------------------------------------
2598  // Parameter save functions
2599  // ----------------------------------------------------------------------
2600 
2604  Fw::CmdResponse paramSave_STATEMENT_TIMEOUT_SECS();
2605 
2609  Fw::CmdResponse paramSave_FLAG_DEFAULT_EXIT_ON_CMD_FAIL();
2610 
2611  private:
2612 
2613  // ----------------------------------------------------------------------
2614  // Special input ports
2615  // ----------------------------------------------------------------------
2616 
2618  Fw::InputCmdPort m_cmdIn_InputPort[NUM_CMDIN_INPUT_PORTS];
2619 
2620  private:
2621 
2622  // ----------------------------------------------------------------------
2623  // Typed input ports
2624  // ----------------------------------------------------------------------
2625 
2627  Svc::InputSchedPort m_checkTimers_InputPort[NUM_CHECKTIMERS_INPUT_PORTS];
2628 
2630  Fw::InputCmdResponsePort m_cmdResponseIn_InputPort[NUM_CMDRESPONSEIN_INPUT_PORTS];
2631 
2633  Svc::InputPingPort m_pingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
2634 
2636  Svc::InputCmdSeqInPort m_seqRunIn_InputPort[NUM_SEQRUNIN_INPUT_PORTS];
2637 
2639  Svc::InputSchedPort m_tlmWrite_InputPort[NUM_TLMWRITE_INPUT_PORTS];
2640 
2641  private:
2642 
2643  // ----------------------------------------------------------------------
2644  // Special output ports
2645  // ----------------------------------------------------------------------
2646 
2648  Fw::OutputCmdRegPort m_cmdRegOut_OutputPort[NUM_CMDREGOUT_OUTPUT_PORTS];
2649 
2651  Fw::OutputCmdResponsePort m_cmdResponseOut_OutputPort[NUM_CMDRESPONSEOUT_OUTPUT_PORTS];
2652 
2654  Fw::OutputLogPort m_logOut_OutputPort[NUM_LOGOUT_OUTPUT_PORTS];
2655 
2656 #if FW_ENABLE_TEXT_LOGGING == 1
2657 
2659  Fw::OutputLogTextPort m_logTextOut_OutputPort[NUM_LOGTEXTOUT_OUTPUT_PORTS];
2660 
2661 #endif
2662 
2664  Fw::OutputPrmGetPort m_prmGet_OutputPort[NUM_PRMGET_OUTPUT_PORTS];
2665 
2667  Fw::OutputPrmSetPort m_prmSet_OutputPort[NUM_PRMSET_OUTPUT_PORTS];
2668 
2670  Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
2671 
2673  Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
2674 
2675  private:
2676 
2677  // ----------------------------------------------------------------------
2678  // Typed output ports
2679  // ----------------------------------------------------------------------
2680 
2682  Fw::OutputComPort m_cmdOut_OutputPort[NUM_CMDOUT_OUTPUT_PORTS];
2683 
2685  Fw::OutputPrmGetPort m_getParam_OutputPort[NUM_GETPARAM_OUTPUT_PORTS];
2686 
2688  Fw::OutputTlmGetPort m_getTlmChan_OutputPort[NUM_GETTLMCHAN_OUTPUT_PORTS];
2689 
2691  Svc::OutputPingPort m_pingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
2692 
2694  Fw::OutputCmdResponsePort m_seqDoneOut_OutputPort[NUM_SEQDONEOUT_OUTPUT_PORTS];
2695 
2697  Svc::OutputCmdSeqInPort m_seqStartOut_OutputPort[NUM_SEQSTARTOUT_OUTPUT_PORTS];
2698 
2699  private:
2700 
2701  // ----------------------------------------------------------------------
2702  // First update flags for telemetry channels
2703  // ----------------------------------------------------------------------
2704 
2706  bool m_first_update_State = true;
2707 
2709  bool m_first_update_SequencesSucceeded = true;
2710 
2712  bool m_first_update_SequencesFailed = true;
2713 
2715  bool m_first_update_SequencesCancelled = true;
2716 
2718  bool m_first_update_StatementsDispatched = true;
2719 
2721  bool m_first_update_StatementsFailed = true;
2722 
2724  bool m_first_update_LastDirectiveError = true;
2725 
2727  bool m_first_update_DirectiveErrorIndex = true;
2728 
2730  bool m_first_update_DirectiveErrorId = true;
2731 
2733  bool m_first_update_SeqPath = true;
2734 
2736  bool m_first_update_Debug_ReachedEndOfFile = true;
2737 
2739  bool m_first_update_Debug_NextStatementReadSuccess = true;
2740 
2742  bool m_first_update_Debug_NextStatementOpcode = true;
2743 
2745  bool m_first_update_Debug_NextStatementIndex = true;
2746 
2748  bool m_first_update_Debug_NextCmdOpcode = true;
2749 
2751  bool m_first_update_Debug_StackSize = true;
2752 
2754  bool m_first_update_BreakpointInUse = true;
2755 
2757  bool m_first_update_BreakpointIndex = true;
2758 
2760  bool m_first_update_BreakOnlyOnceOnBreakpoint = true;
2761 
2763  bool m_first_update_BreakBeforeNextLine = true;
2764 
2766  bool m_first_update_PRM_STATEMENT_TIMEOUT_SECS = true;
2767 
2769  bool m_first_update_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = true;
2770 
2771  private:
2772 
2773  // ----------------------------------------------------------------------
2774  // Last value storage for telemetry channels
2775  // ----------------------------------------------------------------------
2776 
2778  FwEnumStoreType m_last_State = {};
2779 
2781  U64 m_last_SequencesSucceeded = {};
2782 
2784  U64 m_last_SequencesFailed = {};
2785 
2787  U64 m_last_SequencesCancelled = {};
2788 
2790  U64 m_last_StatementsDispatched = {};
2791 
2793  U64 m_last_StatementsFailed = {};
2794 
2796  Svc::Fpy::DirectiveErrorCode m_last_LastDirectiveError = {};
2797 
2799  U64 m_last_DirectiveErrorIndex = {};
2800 
2802  Svc::Fpy::DirectiveId m_last_DirectiveErrorId = {};
2803 
2805  Fw::TlmString m_last_SeqPath = {};
2806 
2808  bool m_last_Debug_ReachedEndOfFile = {};
2809 
2811  bool m_last_Debug_NextStatementReadSuccess = {};
2812 
2814  U8 m_last_Debug_NextStatementOpcode = {};
2815 
2817  U32 m_last_Debug_NextStatementIndex = {};
2818 
2820  FwOpcodeType m_last_Debug_NextCmdOpcode = {};
2821 
2823  Svc::Fpy::StackSizeType m_last_Debug_StackSize = {};
2824 
2826  bool m_last_BreakpointInUse = {};
2827 
2829  U32 m_last_BreakpointIndex = {};
2830 
2832  bool m_last_BreakOnlyOnceOnBreakpoint = {};
2833 
2835  bool m_last_BreakBeforeNextLine = {};
2836 
2838  F32 m_last_PRM_STATEMENT_TIMEOUT_SECS = {};
2839 
2841  bool m_last_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = {};
2842 
2843  private:
2844 
2845  // ----------------------------------------------------------------------
2846  // Parameter validity flags
2847  // ----------------------------------------------------------------------
2848 
2850  Fw::ParamValid m_param_STATEMENT_TIMEOUT_SECS_valid;
2851 
2853  Fw::ParamValid m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid;
2854 
2855  private:
2856 
2857  // ----------------------------------------------------------------------
2858  // Parameter variables
2859  // ----------------------------------------------------------------------
2860 
2867  F32 m_STATEMENT_TIMEOUT_SECS;
2868 
2872  bool m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL;
2873 
2874  private:
2875 
2876  // ----------------------------------------------------------------------
2877  // State machine instances
2878  // ----------------------------------------------------------------------
2879 
2881  Svc_FpySequencer_SequencerStateMachine m_stateMachine_sequencer;
2882 
2883  private:
2884 
2885  // ----------------------------------------------------------------------
2886  // Mutexes
2887  // ----------------------------------------------------------------------
2888 
2890  Os::Mutex m_paramLock;
2891 
2892  };
2893 
2894 }
2895 
2896 #endif
bool isConnected_tlmOut_OutputPort(FwIndexType portNum)
void tlmWrite_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(bool arg, Fw::Time _tlmTime=Fw::Time())
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
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)
FwIdType FwOpcodeType
The type of a command opcode.
void set_cmdOut_OutputPort(FwIndexType portNum, Fw::InputComPort *port)
Connect port to cmdOut[portNum].
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.
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()
PlatformSizeType FwSizeType
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 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()
Fw::TlmValid getTlmChan_out(FwIndexType portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)
Invoke output port getTlmChan.
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 SET_FLAG_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SET_FLAG.
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...
virtual void CANCEL_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
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
pop an opcode and arg buf off the stack, send to cmd dispatcher and await response ...
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.
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 ~FpySequencerComponentBase()
Destroy FpySequencerComponentBase object.
virtual void directive_setFlag_internalInterfaceHandler(const Svc::FpySequencer_SetFlagDirective &directive)=0
Internal interface handler for directive_setFlag.
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 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 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::FpySequencer_BlockState block)=0
bool isConnected_pingOut_OutputPort(FwIndexType portNum)
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 log_WARNING_HI_TooManySequenceDirectives(U16 count, U16 max) const
Log event TooManySequenceDirectives.
bool isConnected_seqStartOut_OutputPort(FwIndexType portNum)
void sequencer_sendSignal_stmtResponse_unexpected()
Send signal stmtResponse_unexpected to state machine sequencer.
virtual void RUN_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::FpySequencer_BlockState block)=0
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.
Loads, validates and runs a sequence.
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 seqStartOut_out(FwIndexType portNum, const Fw::StringBase &filename)
Invoke output port seqStartOut.
virtual void directive_allocate_internalInterfaceHandler(const Svc::FpySequencer_AllocateDirective &directive)=0
Internal interface handler for directive_allocate.
static constexpr FwIndexType getNum_pingOut_OutputPorts()
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:83
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.
bool isConnected_timeCaller_OutputPort(FwIndexType portNum)
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 tlmWrite_StatementsFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
loads a value from a local variable at a compile-time-known offset relative to the current stack fram...
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)
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.
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.
bool isConnected_prmSet_OutputPort(FwIndexType portNum)
virtual void SET_FLAG_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, Svc::Fpy::FlagId flag, bool value)=0
virtual void directive_constCmd_internalInterfaceHandler(const Svc::FpySequencer_ConstCmdDirective &directive)=0
Internal interface handler for directive_constCmd.
Fw::InputCmdPort * get_cmdIn_InputPort(FwIndexType portNum)
Must be called after VALIDATE. Runs the sequence that was validated.
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.
void SET_FLAG_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
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.
virtual void directive_getFlag_internalInterfaceHandler(const Svc::FpySequencer_GetFlagDirective &directive)=0
Internal interface handler for directive_getFlag.
the default value of the EXIT_ON_CMD_FAIL sequence flag
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.
static constexpr FwIndexType getNum_prmSet_OutputPorts()
virtual void seqRunIn_preMsgHook(FwIndexType portNum, const Fw::StringBase &filename)
Pre-message hook for async input port seqRunIn.
void directive_setFlag_internalInterfaceInvoke(const Svc::FpySequencer_SetFlagDirective &directive)
Internal interface base-class function for directive_setFlag.
bool isConnected_getParam_OutputPort(FwIndexType portNum)
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.
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
bool isConnected_seqDoneOut_OutputPort(FwIndexType portNum)
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:53
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 seqDoneOut_out(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Invoke output port seqDoneOut.
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
virtual void seqRunIn_handler(FwIndexType portNum, const Fw::StringBase &filename)=0
Handler for input port seqRunIn.
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()
void sequencer_sendSignal_stmtResponse_keepWaiting()
Send signal stmtResponse_keepWaiting to state machine sequencer.
virtual void Svc_FpySequencer_SequencerStateMachine_action_resetRuntime(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
bool isConnected_cmdResponseOut_OutputPort(FwIndexType portNum)
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.
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.
static constexpr FwIndexType getNum_getTlmChan_OutputPorts()
virtual void directive_getField_internalInterfaceHandler(const Svc::FpySequencer_GetFieldDirective &directive)=0
Internal interface handler for directive_getField.
void pingOut_out(FwIndexType portNum, U32 key)
Invoke output port pingOut.
virtual void directive_loadRel_internalInterfaceHandler(const Svc::FpySequencer_LoadRelDirective &directive)=0
Internal interface handler for directive_loadRel.
bool isConnected_cmdOut_OutputPort(FwIndexType portNum)
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.
loads a value from an absolute address in the stack (for global variables)
bool isConnected_logOut_OutputPort(FwIndexType portNum)
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()
bool isConnected_prmGet_OutputPort(FwIndexType portNum)
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.
Svc::InputSchedPort * get_tlmWrite_InputPort(FwIndexType portNum)
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
void directive_getFlag_internalInterfaceInvoke(const Svc::FpySequencer_GetFlagDirective &directive)
Internal interface base-class function for directive_getFlag.
void cmdOut_out(FwIndexType portNum, Fw::ComBuffer &data, U32 context)
Invoke output port cmdOut.
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_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
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
bool isConnected_cmdRegOut_OutputPort(FwIndexType portNum)
void log_WARNING_HI_CmdResponseWhileAwaitingDirective(FwOpcodeType opcode, Fw::CmdResponse response, U8 expectedDirectiveOpcode) const
Log event CmdResponseWhileAwaitingDirective.
virtual void cmdResponseIn_preMsgHook(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Pre-message hook for async input port cmdResponseIn.
void seqRunIn_handlerBase(FwIndexType portNum, const Fw::StringBase &filename)
Handler base-class function for input port seqRunIn.
Enum representing parameter validity.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setBreakpoint(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_BreakpointArgs &value)=0
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
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.
virtual void CONTINUE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CONTINUE.
virtual void checkTimers_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port checkTimers.
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
Fw::ParamValid getParam_out(FwIndexType portNum, FwPrmIdType id, Fw::ParamBuffer &val)
Invoke output port getParam.
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()
pops a bool off the stack, sets a flag with a specific index to that bool
virtual void CANCEL_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CANCEL.
void tlmWrite_BreakOnlyOnceOnBreakpoint(bool arg, Fw::Time _tlmTime=Fw::Time())
bool isConnected_getTlmChan_OutputPort(FwIndexType portNum)
void log_WARNING_HI_WrongCmdResponseIndex(FwOpcodeType opcode, Fw::CmdResponse response, U16 actualCmdIdx, U16 expectedCmdIdx) const
Log event WrongCmdResponseIndex.
gets a flag and pushes its value as a U8 to the stack
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
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 ...
bool paramGet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(Fw::ParamValid &valid)
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())