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 {
233  };
234 
236  enum {
242  };
243 
245  enum class SmId : FwEnumStoreType {
246  sequencer,
247  };
248 
249  protected:
250 
251  // ----------------------------------------------------------------------
252  // Types for internal state machines
253  // ----------------------------------------------------------------------
254 
258  {
259 
260  // ----------------------------------------------------------------------
261  // Friend classes
262  // ----------------------------------------------------------------------
263 
267  friend class FpySequencerTester;
268 
269  public:
270 
273  FpySequencerComponentBase& component
274  );
275 
276  public:
277 
279  void init(
281  );
282 
283  public:
284 
287 
288  private:
289 
291  void action_signalEntered(
292  Signal signal
293  );
294 
296  void action_setSequenceFilePath(
297  Signal signal,
299  );
300 
302  void action_setSequenceBlockState(
303  Signal signal,
305  );
306 
308  void action_validate(
309  Signal signal
310  );
311 
313  void action_report_seqSucceeded(
314  Signal signal
315  );
316 
318  void action_report_seqCancelled(
319  Signal signal
320  );
321 
323  void action_report_seqFailed(
324  Signal signal
325  );
326 
328  void action_report_seqStarted(
329  Signal signal
330  );
331 
333  void action_setGoalState_RUNNING(
334  Signal signal
335  );
336 
338  void action_setGoalState_VALID(
339  Signal signal
340  );
341 
343  void action_setGoalState_IDLE(
344  Signal signal
345  );
346 
348  void action_sendCmdResponse_OK(
349  Signal signal
350  );
351 
353  void action_sendCmdResponse_EXECUTION_ERROR(
354  Signal signal
355  );
356 
358  void action_clearSequenceFile(
359  Signal signal
360  );
361 
363  void action_clearBreakpoint(
364  Signal signal
365  );
366 
368  void action_checkShouldWake(
369  Signal signal
370  );
371 
373  void action_dispatchStatement(
374  Signal signal
375  );
376 
378  void action_resetRuntime(
379  Signal signal
380  );
381 
383  void action_checkStatementTimeout(
384  Signal signal
385  );
386 
388  void action_incrementSequenceCounter(
389  Signal signal
390  );
391 
393  void action_report_seqBroken(
394  Signal signal
395  );
396 
398  void action_setBreakpoint(
399  Signal signal,
401  );
402 
404  void action_setBreakBeforeNextLine(
405  Signal signal
406  );
407 
409  void action_clearBreakBeforeNextLine(
410  Signal signal
411  );
412 
413  private:
414 
416  bool guard_goalStateIs_RUNNING(
417  Signal signal
418  ) const;
419 
421  bool guard_shouldBreak(
422  Signal signal
423  ) const;
424 
426  bool guard_breakOnce(
427  Signal signal
428  ) const;
429 
430  private:
431 
433  FpySequencerComponentBase& m_component;
434 
435  };
436 
437  public:
438 
439  // ----------------------------------------------------------------------
440  // Component initialization
441  // ----------------------------------------------------------------------
442 
444  void init(
445  FwSizeType queueDepth,
446  FwEnumStoreType instance = 0
447  );
448 
449  public:
450 
451  // ----------------------------------------------------------------------
452  // Getters for special input ports
453  // ----------------------------------------------------------------------
454 
459  FwIndexType portNum
460  );
461 
462  public:
463 
464  // ----------------------------------------------------------------------
465  // Getters for typed input ports
466  // ----------------------------------------------------------------------
467 
472  FwIndexType portNum
473  );
474 
479  FwIndexType portNum
480  );
481 
486  FwIndexType portNum
487  );
488 
493  FwIndexType portNum
494  );
495 
500  FwIndexType portNum
501  );
502 
503  public:
504 
505  // ----------------------------------------------------------------------
506  // Connect input ports to special output ports
507  // ----------------------------------------------------------------------
508 
511  FwIndexType portNum,
512  Fw::InputCmdRegPort* port
513  );
514 
517  FwIndexType portNum,
519  );
520 
523  FwIndexType portNum,
524  Fw::InputLogPort* port
525  );
526 
527 #if FW_ENABLE_TEXT_LOGGING == 1
528 
530  void set_logTextOut_OutputPort(
531  FwIndexType portNum,
532  Fw::InputLogTextPort* port
533  );
534 
535 #endif
536 
539  FwIndexType portNum,
540  Fw::InputPrmGetPort* port
541  );
542 
545  FwIndexType portNum,
546  Fw::InputPrmSetPort* port
547  );
548 
551  FwIndexType portNum,
552  Fw::InputTimePort* port
553  );
554 
557  FwIndexType portNum,
558  Fw::InputTlmPort* port
559  );
560 
561  public:
562 
563  // ----------------------------------------------------------------------
564  // Connect typed input ports to typed output ports
565  // ----------------------------------------------------------------------
566 
569  FwIndexType portNum,
570  Fw::InputComPort* port
571  );
572 
575  FwIndexType portNum,
576  Fw::InputPrmGetPort* port
577  );
578 
581  FwIndexType portNum,
582  Fw::InputTlmGetPort* port
583  );
584 
587  FwIndexType portNum,
588  Svc::InputPingPort* port
589  );
590 
593  FwIndexType portNum,
595  );
596 
599  FwIndexType portNum,
601  );
602 
603 #if FW_PORT_SERIALIZATION
604 
605  public:
606 
607  // ----------------------------------------------------------------------
608  // Connect serial input ports to special output ports
609  // ----------------------------------------------------------------------
610 
613  FwIndexType portNum,
614  Fw::InputSerializePort* port
615  );
616 
619  FwIndexType portNum,
620  Fw::InputSerializePort* port
621  );
622 
625  FwIndexType portNum,
626  Fw::InputSerializePort* port
627  );
628 
629 #if FW_ENABLE_TEXT_LOGGING == 1
630 
632  void set_logTextOut_OutputPort(
633  FwIndexType portNum,
634  Fw::InputSerializePort* port
635  );
636 
637 #endif
638 
641  FwIndexType portNum,
642  Fw::InputSerializePort* port
643  );
644 
647  FwIndexType portNum,
648  Fw::InputSerializePort* port
649  );
650 
653  FwIndexType portNum,
654  Fw::InputSerializePort* port
655  );
656 
657 #endif
658 
659 #if FW_PORT_SERIALIZATION
660 
661  public:
662 
663  // ----------------------------------------------------------------------
664  // Connect serial input ports to typed output ports
665  // ----------------------------------------------------------------------
666 
669  FwIndexType portNum,
670  Fw::InputSerializePort* port
671  );
672 
675  FwIndexType portNum,
676  Fw::InputSerializePort* port
677  );
678 
681  FwIndexType portNum,
682  Fw::InputSerializePort* port
683  );
684 
687  FwIndexType portNum,
688  Fw::InputSerializePort* port
689  );
690 
691 #endif
692 
693  public:
694 
695  // ----------------------------------------------------------------------
696  // Command registration
697  // ----------------------------------------------------------------------
698 
702  void regCommands();
703 
704  public:
705 
706  // ----------------------------------------------------------------------
707  // Parameter loading
708  // ----------------------------------------------------------------------
709 
713  void loadParameters();
714 
715  protected:
716 
717  // ----------------------------------------------------------------------
718  // Component construction and destruction
719  // ----------------------------------------------------------------------
720 
723  const char* compName = ""
724  );
725 
727  virtual ~FpySequencerComponentBase();
728 
729  protected:
730 
731  // ----------------------------------------------------------------------
732  // Getters for numbers of special input ports
733  // ----------------------------------------------------------------------
734 
739  return NUM_CMDIN_INPUT_PORTS;
740  }
741 
742  protected:
743 
744  // ----------------------------------------------------------------------
745  // Getters for numbers of typed input ports
746  // ----------------------------------------------------------------------
747 
753  }
754 
760  }
761 
766  return NUM_PINGIN_INPUT_PORTS;
767  }
768 
774  }
775 
781  }
782 
783  protected:
784 
785  // ----------------------------------------------------------------------
786  // Getters for numbers of special output ports
787  // ----------------------------------------------------------------------
788 
794  }
795 
801  }
802 
808  }
809 
810 #if FW_ENABLE_TEXT_LOGGING == 1
811 
815  static constexpr FwIndexType getNum_logTextOut_OutputPorts() {
817  }
818 
819 #endif
820 
826  }
827 
833  }
834 
840  }
841 
847  }
848 
849  protected:
850 
851  // ----------------------------------------------------------------------
852  // Getters for numbers of typed output ports
853  // ----------------------------------------------------------------------
854 
860  }
861 
867  }
868 
874  }
875 
881  }
882 
888  }
889 
895  }
896 
897  protected:
898 
899  // ----------------------------------------------------------------------
900  // Connection status queries for special output ports
901  // ----------------------------------------------------------------------
902 
907  FwIndexType portNum
908  );
909 
914  FwIndexType portNum
915  );
916 
921  FwIndexType portNum
922  );
923 
924 #if FW_ENABLE_TEXT_LOGGING == 1
925 
929  bool isConnected_logTextOut_OutputPort(
930  FwIndexType portNum
931  );
932 
933 #endif
934 
939  FwIndexType portNum
940  );
941 
946  FwIndexType portNum
947  );
948 
953  FwIndexType portNum
954  );
955 
960  FwIndexType portNum
961  );
962 
963  protected:
964 
965  // ----------------------------------------------------------------------
966  // Connection status queries for typed output ports
967  // ----------------------------------------------------------------------
968 
973  FwIndexType portNum
974  );
975 
980  FwIndexType portNum
981  );
982 
987  FwIndexType portNum
988  );
989 
994  FwIndexType portNum
995  );
996 
1001  FwIndexType portNum
1002  );
1003 
1008  FwIndexType portNum
1009  );
1010 
1011  protected:
1012 
1013  // ----------------------------------------------------------------------
1014  // Handlers to implement for typed input ports
1015  // ----------------------------------------------------------------------
1016 
1018  virtual void checkTimers_handler(
1019  FwIndexType portNum,
1020  U32 context
1021  ) = 0;
1022 
1024  virtual void cmdResponseIn_handler(
1025  FwIndexType portNum,
1026  FwOpcodeType opCode,
1027  U32 cmdSeq,
1028  const Fw::CmdResponse& response
1029  ) = 0;
1030 
1032  virtual void pingIn_handler(
1033  FwIndexType portNum,
1034  U32 key
1035  ) = 0;
1036 
1038  virtual void seqRunIn_handler(
1039  FwIndexType portNum,
1040  const Fw::StringBase& filename
1041  ) = 0;
1042 
1044  virtual void tlmWrite_handler(
1045  FwIndexType portNum,
1046  U32 context
1047  ) = 0;
1048 
1049  protected:
1050 
1051  // ----------------------------------------------------------------------
1052  // Port handler base-class functions for typed input ports
1053  //
1054  // Call these functions directly to bypass the corresponding ports
1055  // ----------------------------------------------------------------------
1056 
1059  FwIndexType portNum,
1060  U32 context
1061  );
1062 
1065  FwIndexType portNum,
1066  FwOpcodeType opCode,
1067  U32 cmdSeq,
1068  const Fw::CmdResponse& response
1069  );
1070 
1072  void pingIn_handlerBase(
1073  FwIndexType portNum,
1074  U32 key
1075  );
1076 
1078  void seqRunIn_handlerBase(
1079  FwIndexType portNum,
1080  const Fw::StringBase& filename
1081  );
1082 
1084  void tlmWrite_handlerBase(
1085  FwIndexType portNum,
1086  U32 context
1087  );
1088 
1089  protected:
1090 
1091  // ----------------------------------------------------------------------
1092  // Pre-message hooks for typed async input ports
1093  //
1094  // Each of these functions is invoked just before processing a message
1095  // on the corresponding port. By default, they do nothing. You can
1096  // override them to provide specific pre-message behavior.
1097  // ----------------------------------------------------------------------
1098 
1100  virtual void checkTimers_preMsgHook(
1101  FwIndexType portNum,
1102  U32 context
1103  );
1104 
1106  virtual void cmdResponseIn_preMsgHook(
1107  FwIndexType portNum,
1108  FwOpcodeType opCode,
1109  U32 cmdSeq,
1110  const Fw::CmdResponse& response
1111  );
1112 
1114  virtual void pingIn_preMsgHook(
1115  FwIndexType portNum,
1116  U32 key
1117  );
1118 
1120  virtual void seqRunIn_preMsgHook(
1121  FwIndexType portNum,
1122  const Fw::StringBase& filename
1123  );
1124 
1126  virtual void tlmWrite_preMsgHook(
1127  FwIndexType portNum,
1128  U32 context
1129  );
1130 
1131  protected:
1132 
1133  // ----------------------------------------------------------------------
1134  // Invocation functions for typed output ports
1135  // ----------------------------------------------------------------------
1136 
1138  void cmdOut_out(
1139  FwIndexType portNum,
1140  Fw::ComBuffer& data,
1141  U32 context
1142  );
1143 
1146  FwIndexType portNum,
1147  FwPrmIdType id,
1148  Fw::ParamBuffer& val
1149  );
1151 
1154  FwIndexType portNum,
1155  FwChanIdType id,
1156  Fw::Time& timeTag,
1157  Fw::TlmBuffer& val
1158  );
1161 
1163  void pingOut_out(
1164  FwIndexType portNum,
1165  U32 key
1166  );
1167 
1169  void seqDoneOut_out(
1170  FwIndexType portNum,
1171  FwOpcodeType opCode,
1172  U32 cmdSeq,
1173  const Fw::CmdResponse& response
1174  );
1175 
1177  void seqStartOut_out(
1178  FwIndexType portNum,
1179  const Fw::StringBase& filename
1180  );
1181 
1182  protected:
1183 
1184  // ----------------------------------------------------------------------
1185  // Internal interface handlers
1186  // ----------------------------------------------------------------------
1187 
1190 
1193 
1196 
1199 
1202 
1205 
1208 
1211 
1213  virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective& directive) = 0;
1214 
1217 
1220 
1223 
1226 
1229 
1232 
1235 
1238 
1241 
1244 
1247 
1250 
1253 
1256 
1259 
1262 
1265 
1268 
1271 
1274 
1275  protected:
1276 
1277  // ----------------------------------------------------------------------
1278  // Internal interface base-class functions
1279  // ----------------------------------------------------------------------
1280 
1283 
1286 
1289 
1292 
1295 
1298 
1301 
1304 
1307 
1310 
1313 
1316 
1319 
1322 
1325 
1328 
1331 
1334 
1337 
1340 
1343 
1346 
1349 
1352 
1355 
1358 
1361 
1364 
1367 
1368  protected:
1369 
1370  // ----------------------------------------------------------------------
1371  // State getter functions
1372  // ----------------------------------------------------------------------
1373 
1376 
1377  protected:
1378 
1379  // ----------------------------------------------------------------------
1380  // Signal send functions
1381  // ----------------------------------------------------------------------
1382 
1386  );
1387 
1391  );
1392 
1396  );
1397 
1400 
1403  const Svc::FpySequencer_BreakpointArgs& value
1404  );
1405 
1408 
1411 
1414 
1417 
1420 
1423 
1426 
1429 
1432 
1435 
1438 
1441 
1444 
1447 
1450 
1453 
1456 
1459 
1462 
1465 
1468 
1469  protected:
1470 
1471  // ----------------------------------------------------------------------
1472  // Functions to implement for internal state machine actions
1473  // ----------------------------------------------------------------------
1474 
1479  SmId smId,
1481  ) = 0;
1482 
1487  SmId smId,
1490  ) = 0;
1491 
1496  SmId smId,
1499  ) = 0;
1500 
1505  SmId smId,
1507  ) = 0;
1508 
1513  SmId smId,
1515  ) = 0;
1516 
1521  SmId smId,
1523  ) = 0;
1524 
1529  SmId smId,
1531  ) = 0;
1532 
1537  SmId smId,
1539  ) = 0;
1540 
1545  SmId smId,
1547  ) = 0;
1548 
1553  SmId smId,
1555  ) = 0;
1556 
1561  SmId smId,
1563  ) = 0;
1564 
1569  SmId smId,
1571  ) = 0;
1572 
1577  SmId smId,
1579  ) = 0;
1580 
1585  SmId smId,
1587  ) = 0;
1588 
1593  SmId smId,
1595  ) = 0;
1596 
1601  SmId smId,
1603  ) = 0;
1604 
1609  SmId smId,
1611  ) = 0;
1612 
1617  SmId smId,
1619  ) = 0;
1620 
1625  SmId smId,
1627  ) = 0;
1628 
1633  SmId smId,
1635  ) = 0;
1636 
1641  SmId smId,
1643  ) = 0;
1644 
1649  SmId smId,
1651  const Svc::FpySequencer_BreakpointArgs& value
1652  ) = 0;
1653 
1658  SmId smId,
1660  ) = 0;
1661 
1666  SmId smId,
1668  ) = 0;
1669 
1670  protected:
1671 
1672  // ----------------------------------------------------------------------
1673  // Functions to implement for internal state machine guards
1674  // ----------------------------------------------------------------------
1675 
1680  SmId smId,
1682  ) const = 0;
1683 
1689  SmId smId,
1691  ) const = 0;
1692 
1697  SmId smId,
1699  ) const = 0;
1700 
1701  protected:
1702 
1703  // ----------------------------------------------------------------------
1704  // Command response
1705  // ----------------------------------------------------------------------
1706 
1708  void cmdResponse_out(
1709  FwOpcodeType opCode,
1710  U32 cmdSeq,
1711  Fw::CmdResponse response
1712  );
1713 
1714  protected:
1715 
1716  // ----------------------------------------------------------------------
1717  // Command handlers to implement
1718  // ----------------------------------------------------------------------
1719 
1723  virtual void RUN_cmdHandler(
1724  FwOpcodeType opCode,
1725  U32 cmdSeq,
1726  const Fw::CmdStringArg& fileName,
1728  ) = 0;
1729 
1733  virtual void VALIDATE_cmdHandler(
1734  FwOpcodeType opCode,
1735  U32 cmdSeq,
1736  const Fw::CmdStringArg& fileName
1737  ) = 0;
1738 
1742  virtual void RUN_VALIDATED_cmdHandler(
1743  FwOpcodeType opCode,
1744  U32 cmdSeq,
1746  ) = 0;
1747 
1752  virtual void CANCEL_cmdHandler(
1753  FwOpcodeType opCode,
1754  U32 cmdSeq
1755  ) = 0;
1756 
1763  virtual void SET_BREAKPOINT_cmdHandler(
1764  FwOpcodeType opCode,
1765  U32 cmdSeq,
1766  U32 stmtIdx,
1767  bool breakOnce
1768  ) = 0;
1769 
1775  virtual void BREAK_cmdHandler(
1776  FwOpcodeType opCode,
1777  U32 cmdSeq
1778  ) = 0;
1779 
1784  virtual void CONTINUE_cmdHandler(
1785  FwOpcodeType opCode,
1786  U32 cmdSeq
1787  ) = 0;
1788 
1793  virtual void CLEAR_BREAKPOINT_cmdHandler(
1794  FwOpcodeType opCode,
1795  U32 cmdSeq
1796  ) = 0;
1797 
1802  virtual void STEP_cmdHandler(
1803  FwOpcodeType opCode,
1804  U32 cmdSeq
1805  ) = 0;
1806 
1811  virtual void SET_FLAG_cmdHandler(
1812  FwOpcodeType opCode,
1813  U32 cmdSeq,
1814  Svc::Fpy::FlagId flag,
1815  bool value
1816  ) = 0;
1817 
1821  virtual void DUMP_STACK_TO_FILE_cmdHandler(
1822  FwOpcodeType opCode,
1823  U32 cmdSeq,
1824  const Fw::CmdStringArg& fileName
1825  ) = 0;
1826 
1827  protected:
1828 
1829  // ----------------------------------------------------------------------
1830  // Command handler base-class functions
1831  //
1832  // Call these functions directly to bypass the command input port
1833  // ----------------------------------------------------------------------
1834 
1838  void RUN_cmdHandlerBase(
1839  FwOpcodeType opCode,
1840  U32 cmdSeq,
1841  Fw::CmdArgBuffer& args
1842  );
1843 
1848  FwOpcodeType opCode,
1849  U32 cmdSeq,
1850  Fw::CmdArgBuffer& args
1851  );
1852 
1857  FwOpcodeType opCode,
1858  U32 cmdSeq,
1859  Fw::CmdArgBuffer& args
1860  );
1861 
1866  void CANCEL_cmdHandlerBase(
1867  FwOpcodeType opCode,
1868  U32 cmdSeq,
1869  Fw::CmdArgBuffer& args
1870  );
1871 
1879  FwOpcodeType opCode,
1880  U32 cmdSeq,
1881  Fw::CmdArgBuffer& args
1882  );
1883 
1889  void BREAK_cmdHandlerBase(
1890  FwOpcodeType opCode,
1891  U32 cmdSeq,
1892  Fw::CmdArgBuffer& args
1893  );
1894 
1900  FwOpcodeType opCode,
1901  U32 cmdSeq,
1902  Fw::CmdArgBuffer& args
1903  );
1904 
1910  FwOpcodeType opCode,
1911  U32 cmdSeq,
1912  Fw::CmdArgBuffer& args
1913  );
1914 
1919  void STEP_cmdHandlerBase(
1920  FwOpcodeType opCode,
1921  U32 cmdSeq,
1922  Fw::CmdArgBuffer& args
1923  );
1924 
1930  FwOpcodeType opCode,
1931  U32 cmdSeq,
1932  Fw::CmdArgBuffer& args
1933  );
1934 
1939  FwOpcodeType opCode,
1940  U32 cmdSeq,
1941  Fw::CmdArgBuffer& args
1942  );
1943 
1944  protected:
1945 
1946  // ----------------------------------------------------------------------
1947  // Pre-message hooks for async commands
1948  //
1949  // Each of these functions is invoked just before processing the
1950  // corresponding command. By default they do nothing. You can
1951  // override them to provide specific pre-command behavior.
1952  // ----------------------------------------------------------------------
1953 
1955  virtual void RUN_preMsgHook(
1956  FwOpcodeType opCode,
1957  U32 cmdSeq
1958  );
1959 
1961  virtual void VALIDATE_preMsgHook(
1962  FwOpcodeType opCode,
1963  U32 cmdSeq
1964  );
1965 
1967  virtual void RUN_VALIDATED_preMsgHook(
1968  FwOpcodeType opCode,
1969  U32 cmdSeq
1970  );
1971 
1973  virtual void CANCEL_preMsgHook(
1974  FwOpcodeType opCode,
1975  U32 cmdSeq
1976  );
1977 
1979  virtual void SET_BREAKPOINT_preMsgHook(
1980  FwOpcodeType opCode,
1981  U32 cmdSeq
1982  );
1983 
1985  virtual void BREAK_preMsgHook(
1986  FwOpcodeType opCode,
1987  U32 cmdSeq
1988  );
1989 
1991  virtual void CONTINUE_preMsgHook(
1992  FwOpcodeType opCode,
1993  U32 cmdSeq
1994  );
1995 
1997  virtual void CLEAR_BREAKPOINT_preMsgHook(
1998  FwOpcodeType opCode,
1999  U32 cmdSeq
2000  );
2001 
2003  virtual void STEP_preMsgHook(
2004  FwOpcodeType opCode,
2005  U32 cmdSeq
2006  );
2007 
2009  virtual void SET_FLAG_preMsgHook(
2010  FwOpcodeType opCode,
2011  U32 cmdSeq
2012  );
2013 
2015  virtual void DUMP_STACK_TO_FILE_preMsgHook(
2016  FwOpcodeType opCode,
2017  U32 cmdSeq
2018  );
2019 
2020  protected:
2021 
2022  // ----------------------------------------------------------------------
2023  // Event logging functions
2024  // ----------------------------------------------------------------------
2025 
2027  void log_WARNING_HI_InvalidCommand(I32 state) const;
2028 
2030  void log_WARNING_HI_InvalidSeqRunCall(I32 state) const;
2031 
2034  const Fw::StringBase& filePath,
2035  I32 errorCode
2036  ) const;
2037 
2040  FwSizeType writeSize,
2041  const Fw::StringBase& filePath,
2042  I32 errorCode
2043  ) const;
2044 
2048  const Fw::StringBase& filePath,
2049  I32 errorCode
2050  ) const;
2051 
2055  const Fw::StringBase& filePath
2056  ) const;
2057 
2061  const Fw::StringBase& filePath,
2062  I32 errorCode,
2063  U64 buffLeft,
2064  U64 buffLength
2065  ) const;
2066 
2069  U8 expected,
2070  U8 actual
2071  ) const;
2072 
2075  U32 expected,
2076  U32 actual
2077  ) const;
2078 
2080  void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const;
2081 
2084  U64 bufferSize,
2085  const Fw::StringBase& filePath
2086  ) const;
2087 
2090  FwOpcodeType opCode,
2091  U32 stmtIdx,
2092  const Fw::StringBase& filePath,
2093  Fw::CmdResponse response
2094  ) const;
2095 
2097  void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase& filePath) const;
2098 
2100  void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase& filePath) const;
2101 
2104  const Fw::StringBase& filePath,
2105  U8 errorCode
2106  ) const;
2107 
2110  U8 opcode,
2111  U32 stmtIdx,
2112  const Fw::StringBase& filePath
2113  ) const;
2114 
2117  I32 state,
2118  FwOpcodeType opcode,
2119  Fw::CmdResponse response
2120  ) const;
2121 
2124  FwOpcodeType opcode,
2125  Fw::CmdResponse response,
2126  U16 oldSequenceIdx,
2127  U16 currentSequenceIdx
2128  ) const;
2129 
2132  FwOpcodeType opcode,
2133  Fw::CmdResponse response
2134  ) const;
2135 
2138  FwOpcodeType opcode,
2139  Fw::CmdResponse response,
2140  U8 expectedDirectiveOpcode
2141  ) const;
2142 
2145  FwOpcodeType opcode,
2146  Fw::CmdResponse response,
2147  FwOpcodeType expectedOpcode
2148  ) const;
2149 
2152  FwOpcodeType opcode,
2153  Fw::CmdResponse response,
2154  U16 actualCmdIdx,
2155  U16 expectedCmdIdx
2156  ) const;
2157 
2160  U8 opcode,
2161  U32 stmtIdx,
2162  I32 errorCode,
2163  U64 buffLeft,
2164  U64 buffLength
2165  ) const;
2166 
2169  I32 internalTimeBase,
2170  I32 otherTimeBase
2171  ) const;
2172 
2175  I32 internalTimeContext,
2176  I32 otherTimeContext
2177  ) const;
2178 
2181  FwOpcodeType opCode,
2182  U32 stmtIdx,
2183  const Fw::StringBase& filePath
2184  ) const;
2185 
2188  U8 opCode,
2189  U32 stmtIdx,
2190  const Fw::StringBase& filePath
2191  ) const;
2192 
2195  U8 count,
2196  U8 max
2197  ) const;
2198 
2201  U16 count,
2202  U16 max
2203  ) const;
2204 
2206  void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const;
2207 
2210  U32 breakpointIdx,
2211  bool breakOnce
2212  ) const;
2213 
2215  void log_ACTIVITY_HI_BreakpointCleared() const;
2216 
2217  protected:
2218 
2219  // ----------------------------------------------------------------------
2220  // Telemetry write functions
2221  // ----------------------------------------------------------------------
2222 
2226  void tlmWrite_State(
2227  FwEnumStoreType arg,
2228  Fw::Time _tlmTime = Fw::Time()
2229  );
2230 
2235  U64 arg,
2236  Fw::Time _tlmTime = Fw::Time()
2237  );
2238 
2243  U64 arg,
2244  Fw::Time _tlmTime = Fw::Time()
2245  );
2246 
2251  U64 arg,
2252  Fw::Time _tlmTime = Fw::Time()
2253  );
2254 
2261  U64 arg,
2262  Fw::Time _tlmTime = Fw::Time()
2263  );
2264 
2269  U64 arg,
2270  Fw::Time _tlmTime = Fw::Time()
2271  );
2272 
2277  const Svc::Fpy::DirectiveErrorCode& arg,
2278  Fw::Time _tlmTime = Fw::Time()
2279  );
2280 
2285  U64 arg,
2286  Fw::Time _tlmTime = Fw::Time()
2287  );
2288 
2293  const Svc::Fpy::DirectiveId& arg,
2294  Fw::Time _tlmTime = Fw::Time()
2295  );
2296 
2300  void tlmWrite_SeqPath(
2301  const Fw::StringBase& arg,
2302  Fw::Time _tlmTime = Fw::Time()
2303  );
2304 
2309  bool arg,
2310  Fw::Time _tlmTime = Fw::Time()
2311  );
2312 
2317  bool arg,
2318  Fw::Time _tlmTime = Fw::Time()
2319  );
2320 
2325  U8 arg,
2326  Fw::Time _tlmTime = Fw::Time()
2327  );
2328 
2333  FwOpcodeType arg,
2334  Fw::Time _tlmTime = Fw::Time()
2335  );
2336 
2342  Fw::Time _tlmTime = Fw::Time()
2343  );
2344 
2349  bool arg,
2350  Fw::Time _tlmTime = Fw::Time()
2351  );
2352 
2358  U32 arg,
2359  Fw::Time _tlmTime = Fw::Time()
2360  );
2361 
2366  bool arg,
2367  Fw::Time _tlmTime = Fw::Time()
2368  );
2369 
2376  bool arg,
2377  Fw::Time _tlmTime = Fw::Time()
2378  );
2379 
2384  F32 arg,
2385  Fw::Time _tlmTime = Fw::Time()
2386  );
2387 
2392  bool arg,
2393  Fw::Time _tlmTime = Fw::Time()
2394  );
2395 
2396  protected:
2397 
2398  // ----------------------------------------------------------------------
2399  // Parameter update hook
2400  // ----------------------------------------------------------------------
2401 
2405  virtual void parameterUpdated(
2406  FwPrmIdType id
2407  );
2408 
2409  // ----------------------------------------------------------------------
2410  // Parameter load hook
2411  // ----------------------------------------------------------------------
2412 
2416  virtual void parametersLoaded();
2417 
2418  protected:
2419 
2420  // ----------------------------------------------------------------------
2421  // Parameter get functions
2422  // ----------------------------------------------------------------------
2423 
2433  Fw::ParamValid& valid
2434  );
2435 
2442  Fw::ParamValid& valid
2443  );
2444 
2445  protected:
2446 
2447  // ----------------------------------------------------------------------
2448  // Time
2449  // ----------------------------------------------------------------------
2450 
2454  Fw::Time getTime() const;
2455 
2456  private:
2457 
2458  // ----------------------------------------------------------------------
2459  // Message dispatch functions
2460  // ----------------------------------------------------------------------
2461 
2463  virtual MsgDispatchStatus doDispatch();
2464 
2465  private:
2466 
2467  // ----------------------------------------------------------------------
2468  // Calls for messages received on special input ports
2469  // ----------------------------------------------------------------------
2470 
2472  static void m_p_cmdIn_in(
2473  Fw::PassiveComponentBase* callComp,
2474  FwIndexType portNum,
2475  FwOpcodeType opCode,
2476  U32 cmdSeq,
2477  Fw::CmdArgBuffer& args
2478  );
2479 
2480  private:
2481 
2482  // ----------------------------------------------------------------------
2483  // Calls for messages received on typed input ports
2484  // ----------------------------------------------------------------------
2485 
2487  static void m_p_checkTimers_in(
2488  Fw::PassiveComponentBase* callComp,
2489  FwIndexType portNum,
2490  U32 context
2491  );
2492 
2494  static void m_p_cmdResponseIn_in(
2495  Fw::PassiveComponentBase* callComp,
2496  FwIndexType portNum,
2497  FwOpcodeType opCode,
2498  U32 cmdSeq,
2499  const Fw::CmdResponse& response
2500  );
2501 
2503  static void m_p_pingIn_in(
2504  Fw::PassiveComponentBase* callComp,
2505  FwIndexType portNum,
2506  U32 key
2507  );
2508 
2510  static void m_p_seqRunIn_in(
2511  Fw::PassiveComponentBase* callComp,
2512  FwIndexType portNum,
2513  const Fw::StringBase& filename
2514  );
2515 
2517  static void m_p_tlmWrite_in(
2518  Fw::PassiveComponentBase* callComp,
2519  FwIndexType portNum,
2520  U32 context
2521  );
2522 
2523  private:
2524 
2525  // ----------------------------------------------------------------------
2526  // Send signal helper functions
2527  // ----------------------------------------------------------------------
2528 
2530  void sendSignalStart(
2531  SmId smId,
2532  FwEnumStoreType signal,
2533  Fw::SerialBufferBase& buffer
2534  );
2535 
2537  void sequencer_sendSignalFinish(
2538  Fw::LinearBufferBase& buffer
2539  );
2540 
2541  private:
2542 
2543  // ----------------------------------------------------------------------
2544  // Helper functions for state machine dispatch
2545  // ----------------------------------------------------------------------
2546 
2548  void smDispatch(
2549  Fw::SerialBufferBase& buffer
2550  );
2551 
2553  static void deserializeSmIdAndSignal(
2554  Fw::SerialBufferBase& buffer,
2555  FwEnumStoreType& smId,
2556  FwEnumStoreType& signal
2557  );
2558 
2560  void Svc_FpySequencer_SequencerStateMachine_smDispatch(
2561  Fw::SerialBufferBase& buffer,
2562  Svc_FpySequencer_SequencerStateMachine& sm,
2564  );
2565 
2566  private:
2567 
2568  // ----------------------------------------------------------------------
2569  // Parameter set functions
2570  // ----------------------------------------------------------------------
2571 
2575  Fw::CmdResponse paramSet_STATEMENT_TIMEOUT_SECS(
2576  Fw::SerialBufferBase& val
2577  );
2578 
2582  Fw::CmdResponse paramSet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(
2583  Fw::SerialBufferBase& val
2584  );
2585 
2586  private:
2587 
2588  // ----------------------------------------------------------------------
2589  // Parameter save functions
2590  // ----------------------------------------------------------------------
2591 
2595  Fw::CmdResponse paramSave_STATEMENT_TIMEOUT_SECS();
2596 
2600  Fw::CmdResponse paramSave_FLAG_DEFAULT_EXIT_ON_CMD_FAIL();
2601 
2602  private:
2603 
2604  // ----------------------------------------------------------------------
2605  // Special input ports
2606  // ----------------------------------------------------------------------
2607 
2609  Fw::InputCmdPort m_cmdIn_InputPort[NUM_CMDIN_INPUT_PORTS];
2610 
2611  private:
2612 
2613  // ----------------------------------------------------------------------
2614  // Typed input ports
2615  // ----------------------------------------------------------------------
2616 
2618  Svc::InputSchedPort m_checkTimers_InputPort[NUM_CHECKTIMERS_INPUT_PORTS];
2619 
2621  Fw::InputCmdResponsePort m_cmdResponseIn_InputPort[NUM_CMDRESPONSEIN_INPUT_PORTS];
2622 
2624  Svc::InputPingPort m_pingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
2625 
2627  Svc::InputCmdSeqInPort m_seqRunIn_InputPort[NUM_SEQRUNIN_INPUT_PORTS];
2628 
2630  Svc::InputSchedPort m_tlmWrite_InputPort[NUM_TLMWRITE_INPUT_PORTS];
2631 
2632  private:
2633 
2634  // ----------------------------------------------------------------------
2635  // Special output ports
2636  // ----------------------------------------------------------------------
2637 
2639  Fw::OutputCmdRegPort m_cmdRegOut_OutputPort[NUM_CMDREGOUT_OUTPUT_PORTS];
2640 
2642  Fw::OutputCmdResponsePort m_cmdResponseOut_OutputPort[NUM_CMDRESPONSEOUT_OUTPUT_PORTS];
2643 
2645  Fw::OutputLogPort m_logOut_OutputPort[NUM_LOGOUT_OUTPUT_PORTS];
2646 
2647 #if FW_ENABLE_TEXT_LOGGING == 1
2648 
2650  Fw::OutputLogTextPort m_logTextOut_OutputPort[NUM_LOGTEXTOUT_OUTPUT_PORTS];
2651 
2652 #endif
2653 
2655  Fw::OutputPrmGetPort m_prmGet_OutputPort[NUM_PRMGET_OUTPUT_PORTS];
2656 
2658  Fw::OutputPrmSetPort m_prmSet_OutputPort[NUM_PRMSET_OUTPUT_PORTS];
2659 
2661  Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
2662 
2664  Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
2665 
2666  private:
2667 
2668  // ----------------------------------------------------------------------
2669  // Typed output ports
2670  // ----------------------------------------------------------------------
2671 
2673  Fw::OutputComPort m_cmdOut_OutputPort[NUM_CMDOUT_OUTPUT_PORTS];
2674 
2676  Fw::OutputPrmGetPort m_getParam_OutputPort[NUM_GETPARAM_OUTPUT_PORTS];
2677 
2679  Fw::OutputTlmGetPort m_getTlmChan_OutputPort[NUM_GETTLMCHAN_OUTPUT_PORTS];
2680 
2682  Svc::OutputPingPort m_pingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
2683 
2685  Fw::OutputCmdResponsePort m_seqDoneOut_OutputPort[NUM_SEQDONEOUT_OUTPUT_PORTS];
2686 
2688  Svc::OutputCmdSeqInPort m_seqStartOut_OutputPort[NUM_SEQSTARTOUT_OUTPUT_PORTS];
2689 
2690  private:
2691 
2692  // ----------------------------------------------------------------------
2693  // First update flags for telemetry channels
2694  // ----------------------------------------------------------------------
2695 
2697  bool m_first_update_State = true;
2698 
2700  bool m_first_update_SequencesSucceeded = true;
2701 
2703  bool m_first_update_SequencesFailed = true;
2704 
2706  bool m_first_update_SequencesCancelled = true;
2707 
2709  bool m_first_update_StatementsDispatched = true;
2710 
2712  bool m_first_update_StatementsFailed = true;
2713 
2715  bool m_first_update_LastDirectiveError = true;
2716 
2718  bool m_first_update_DirectiveErrorIndex = true;
2719 
2721  bool m_first_update_DirectiveErrorId = true;
2722 
2724  bool m_first_update_SeqPath = true;
2725 
2727  bool m_first_update_Debug_ReachedEndOfFile = true;
2728 
2730  bool m_first_update_Debug_NextStatementReadSuccess = true;
2731 
2733  bool m_first_update_Debug_NextStatementOpcode = true;
2734 
2736  bool m_first_update_Debug_NextCmdOpcode = true;
2737 
2739  bool m_first_update_Debug_StackSize = true;
2740 
2742  bool m_first_update_BreakpointInUse = true;
2743 
2745  bool m_first_update_BreakpointIndex = true;
2746 
2748  bool m_first_update_BreakOnlyOnceOnBreakpoint = true;
2749 
2751  bool m_first_update_BreakBeforeNextLine = true;
2752 
2754  bool m_first_update_PRM_STATEMENT_TIMEOUT_SECS = true;
2755 
2757  bool m_first_update_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = true;
2758 
2759  private:
2760 
2761  // ----------------------------------------------------------------------
2762  // Last value storage for telemetry channels
2763  // ----------------------------------------------------------------------
2764 
2766  FwEnumStoreType m_last_State = {};
2767 
2769  U64 m_last_SequencesSucceeded = {};
2770 
2772  U64 m_last_SequencesFailed = {};
2773 
2775  U64 m_last_SequencesCancelled = {};
2776 
2778  U64 m_last_StatementsDispatched = {};
2779 
2781  U64 m_last_StatementsFailed = {};
2782 
2784  Svc::Fpy::DirectiveErrorCode m_last_LastDirectiveError = {};
2785 
2787  U64 m_last_DirectiveErrorIndex = {};
2788 
2790  Svc::Fpy::DirectiveId m_last_DirectiveErrorId = {};
2791 
2793  Fw::TlmString m_last_SeqPath = {};
2794 
2796  bool m_last_Debug_ReachedEndOfFile = {};
2797 
2799  bool m_last_Debug_NextStatementReadSuccess = {};
2800 
2802  U8 m_last_Debug_NextStatementOpcode = {};
2803 
2805  FwOpcodeType m_last_Debug_NextCmdOpcode = {};
2806 
2808  Svc::Fpy::StackSizeType m_last_Debug_StackSize = {};
2809 
2811  bool m_last_BreakpointInUse = {};
2812 
2814  U32 m_last_BreakpointIndex = {};
2815 
2817  bool m_last_BreakOnlyOnceOnBreakpoint = {};
2818 
2820  bool m_last_BreakBeforeNextLine = {};
2821 
2823  F32 m_last_PRM_STATEMENT_TIMEOUT_SECS = {};
2824 
2826  bool m_last_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = {};
2827 
2828  private:
2829 
2830  // ----------------------------------------------------------------------
2831  // Parameter validity flags
2832  // ----------------------------------------------------------------------
2833 
2835  Fw::ParamValid m_param_STATEMENT_TIMEOUT_SECS_valid;
2836 
2838  Fw::ParamValid m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid;
2839 
2840  private:
2841 
2842  // ----------------------------------------------------------------------
2843  // Parameter variables
2844  // ----------------------------------------------------------------------
2845 
2852  F32 m_STATEMENT_TIMEOUT_SECS;
2853 
2857  bool m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL;
2858 
2859  private:
2860 
2861  // ----------------------------------------------------------------------
2862  // State machine instances
2863  // ----------------------------------------------------------------------
2864 
2866  Svc_FpySequencer_SequencerStateMachine m_stateMachine_sequencer;
2867 
2868  private:
2869 
2870  // ----------------------------------------------------------------------
2871  // Mutexes
2872  // ----------------------------------------------------------------------
2873 
2875  Os::Mutex m_paramLock;
2876 
2877  };
2878 
2879 }
2880 
2881 #endif
Loads, validates and runs a sequence.
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.
Must be called after VALIDATE. Runs the sequence that was validated.
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.
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)
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
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)
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.
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 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
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())
the default value of the EXIT_ON_CMD_FAIL sequence flag