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"
66 #include "Svc/Ping/PingPortAc.hpp"
74 
75 namespace Svc {
76 
83  {
84 
85  // ----------------------------------------------------------------------
86  // Friend classes
87  // ----------------------------------------------------------------------
88 
90  friend class FpySequencerTesterBase;
92  friend class FpySequencerTester;
93 
94  protected:
95 
96  // ----------------------------------------------------------------------
97  // Constants
98  // ----------------------------------------------------------------------
99 
101  enum {
103  };
104 
106  enum {
112  };
113 
115  enum {
124  };
125 
127  enum {
134  };
135 
137  enum {
138  OPCODE_RUN = 0x0,
142  OPCODE_SET_BREAKPOINT = 0x4,
144  OPCODE_BREAK = 0x5,
148  OPCODE_CONTINUE = 0x6,
153  OPCODE_STEP = 0x8,
155  OPCODE_SET_FLAG = 0x9,
162  };
163 
165  enum {
196  };
197 
199  enum {
220  };
221 
223  enum {
229  };
230 
232  enum class SmId : FwEnumStoreType {
233  sequencer,
234  };
235 
236  protected:
237 
238  // ----------------------------------------------------------------------
239  // Types for internal state machines
240  // ----------------------------------------------------------------------
241 
245  {
246 
247  // ----------------------------------------------------------------------
248  // Friend classes
249  // ----------------------------------------------------------------------
250 
254  friend class FpySequencerTester;
255 
256  public:
257 
260  FpySequencerComponentBase& component
261  );
262 
263  public:
264 
266  void init(
268  );
269 
270  public:
271 
274 
275  private:
276 
278  void action_signalEntered(
279  Signal signal
280  );
281 
283  void action_setSequenceFilePath(
284  Signal signal,
286  );
287 
289  void action_setSequenceBlockState(
290  Signal signal,
292  );
293 
295  void action_validate(
296  Signal signal
297  );
298 
300  void action_report_seqSucceeded(
301  Signal signal
302  );
303 
305  void action_report_seqCancelled(
306  Signal signal
307  );
308 
310  void action_report_seqFailed(
311  Signal signal
312  );
313 
315  void action_report_seqStarted(
316  Signal signal
317  );
318 
320  void action_setGoalState_RUNNING(
321  Signal signal
322  );
323 
325  void action_setGoalState_VALID(
326  Signal signal
327  );
328 
330  void action_setGoalState_IDLE(
331  Signal signal
332  );
333 
335  void action_sendCmdResponse_OK(
336  Signal signal
337  );
338 
340  void action_sendCmdResponse_EXECUTION_ERROR(
341  Signal signal
342  );
343 
345  void action_clearSequenceFile(
346  Signal signal
347  );
348 
350  void action_clearBreakpoint(
351  Signal signal
352  );
353 
355  void action_checkShouldWake(
356  Signal signal
357  );
358 
360  void action_dispatchStatement(
361  Signal signal
362  );
363 
365  void action_resetRuntime(
366  Signal signal
367  );
368 
370  void action_checkStatementTimeout(
371  Signal signal
372  );
373 
375  void action_incrementSequenceCounter(
376  Signal signal
377  );
378 
380  void action_report_seqBroken(
381  Signal signal
382  );
383 
385  void action_setBreakpoint(
386  Signal signal,
388  );
389 
391  void action_setBreakBeforeNextLine(
392  Signal signal
393  );
394 
396  void action_clearBreakBeforeNextLine(
397  Signal signal
398  );
399 
400  private:
401 
403  bool guard_goalStateIs_RUNNING(
404  Signal signal
405  ) const;
406 
408  bool guard_shouldBreak(
409  Signal signal
410  ) const;
411 
413  bool guard_breakOnce(
414  Signal signal
415  ) const;
416 
417  private:
418 
420  FpySequencerComponentBase& m_component;
421 
422  };
423 
424  public:
425 
426  // ----------------------------------------------------------------------
427  // Component initialization
428  // ----------------------------------------------------------------------
429 
431  void init(
432  FwSizeType queueDepth,
433  FwEnumStoreType instance = 0
434  );
435 
436  public:
437 
438  // ----------------------------------------------------------------------
439  // Getters for special input ports
440  // ----------------------------------------------------------------------
441 
446  FwIndexType portNum
447  );
448 
449  public:
450 
451  // ----------------------------------------------------------------------
452  // Getters for typed input ports
453  // ----------------------------------------------------------------------
454 
459  FwIndexType portNum
460  );
461 
466  FwIndexType portNum
467  );
468 
473  FwIndexType portNum
474  );
475 
480  FwIndexType portNum
481  );
482 
487  FwIndexType portNum
488  );
489 
490  public:
491 
492  // ----------------------------------------------------------------------
493  // Connect input ports to special output ports
494  // ----------------------------------------------------------------------
495 
498  FwIndexType portNum,
499  Fw::InputCmdRegPort* port
500  );
501 
504  FwIndexType portNum,
506  );
507 
510  FwIndexType portNum,
511  Fw::InputLogPort* port
512  );
513 
514 #if FW_ENABLE_TEXT_LOGGING == 1
515 
517  void set_logTextOut_OutputPort(
518  FwIndexType portNum,
519  Fw::InputLogTextPort* port
520  );
521 
522 #endif
523 
526  FwIndexType portNum,
527  Fw::InputPrmGetPort* port
528  );
529 
532  FwIndexType portNum,
533  Fw::InputPrmSetPort* port
534  );
535 
538  FwIndexType portNum,
539  Fw::InputTimePort* port
540  );
541 
544  FwIndexType portNum,
545  Fw::InputTlmPort* port
546  );
547 
548  public:
549 
550  // ----------------------------------------------------------------------
551  // Connect typed input ports to typed output ports
552  // ----------------------------------------------------------------------
553 
556  FwIndexType portNum,
557  Fw::InputComPort* port
558  );
559 
562  FwIndexType portNum,
563  Fw::InputPrmGetPort* port
564  );
565 
568  FwIndexType portNum,
569  Fw::InputTlmGetPort* port
570  );
571 
574  FwIndexType portNum,
575  Svc::InputPingPort* port
576  );
577 
580  FwIndexType portNum,
582  );
583 
586  FwIndexType portNum,
588  );
589 
590 #if FW_PORT_SERIALIZATION
591 
592  public:
593 
594  // ----------------------------------------------------------------------
595  // Connect serial input ports to special output ports
596  // ----------------------------------------------------------------------
597 
600  FwIndexType portNum,
601  Fw::InputSerializePort* port
602  );
603 
606  FwIndexType portNum,
607  Fw::InputSerializePort* port
608  );
609 
612  FwIndexType portNum,
613  Fw::InputSerializePort* port
614  );
615 
616 #if FW_ENABLE_TEXT_LOGGING == 1
617 
619  void set_logTextOut_OutputPort(
620  FwIndexType portNum,
621  Fw::InputSerializePort* port
622  );
623 
624 #endif
625 
628  FwIndexType portNum,
629  Fw::InputSerializePort* port
630  );
631 
634  FwIndexType portNum,
635  Fw::InputSerializePort* port
636  );
637 
640  FwIndexType portNum,
641  Fw::InputSerializePort* port
642  );
643 
644 #endif
645 
646 #if FW_PORT_SERIALIZATION
647 
648  public:
649 
650  // ----------------------------------------------------------------------
651  // Connect serial input ports to typed output ports
652  // ----------------------------------------------------------------------
653 
656  FwIndexType portNum,
657  Fw::InputSerializePort* port
658  );
659 
662  FwIndexType portNum,
663  Fw::InputSerializePort* port
664  );
665 
668  FwIndexType portNum,
669  Fw::InputSerializePort* port
670  );
671 
674  FwIndexType portNum,
675  Fw::InputSerializePort* port
676  );
677 
678 #endif
679 
680  public:
681 
682  // ----------------------------------------------------------------------
683  // Command registration
684  // ----------------------------------------------------------------------
685 
689  void regCommands();
690 
691  public:
692 
693  // ----------------------------------------------------------------------
694  // Parameter loading
695  // ----------------------------------------------------------------------
696 
700  void loadParameters();
701 
702  protected:
703 
704  // ----------------------------------------------------------------------
705  // Component construction and destruction
706  // ----------------------------------------------------------------------
707 
710  const char* compName = ""
711  );
712 
714  virtual ~FpySequencerComponentBase();
715 
716  protected:
717 
718  // ----------------------------------------------------------------------
719  // Getters for numbers of special input ports
720  // ----------------------------------------------------------------------
721 
726  return NUM_CMDIN_INPUT_PORTS;
727  }
728 
729  protected:
730 
731  // ----------------------------------------------------------------------
732  // Getters for numbers of typed input ports
733  // ----------------------------------------------------------------------
734 
740  }
741 
747  }
748 
753  return NUM_PINGIN_INPUT_PORTS;
754  }
755 
761  }
762 
768  }
769 
770  protected:
771 
772  // ----------------------------------------------------------------------
773  // Getters for numbers of special output ports
774  // ----------------------------------------------------------------------
775 
781  }
782 
788  }
789 
795  }
796 
797 #if FW_ENABLE_TEXT_LOGGING == 1
798 
802  static constexpr FwIndexType getNum_logTextOut_OutputPorts() {
804  }
805 
806 #endif
807 
813  }
814 
820  }
821 
827  }
828 
834  }
835 
836  protected:
837 
838  // ----------------------------------------------------------------------
839  // Getters for numbers of typed output ports
840  // ----------------------------------------------------------------------
841 
847  }
848 
854  }
855 
861  }
862 
868  }
869 
875  }
876 
882  }
883 
884  protected:
885 
886  // ----------------------------------------------------------------------
887  // Connection status queries for special output ports
888  // ----------------------------------------------------------------------
889 
894  FwIndexType portNum
895  );
896 
901  FwIndexType portNum
902  );
903 
908  FwIndexType portNum
909  );
910 
911 #if FW_ENABLE_TEXT_LOGGING == 1
912 
916  bool isConnected_logTextOut_OutputPort(
917  FwIndexType portNum
918  );
919 
920 #endif
921 
926  FwIndexType portNum
927  );
928 
933  FwIndexType portNum
934  );
935 
940  FwIndexType portNum
941  );
942 
947  FwIndexType portNum
948  );
949 
950  protected:
951 
952  // ----------------------------------------------------------------------
953  // Connection status queries for typed output ports
954  // ----------------------------------------------------------------------
955 
960  FwIndexType portNum
961  );
962 
967  FwIndexType portNum
968  );
969 
974  FwIndexType portNum
975  );
976 
981  FwIndexType portNum
982  );
983 
988  FwIndexType portNum
989  );
990 
995  FwIndexType portNum
996  );
997 
998  protected:
999 
1000  // ----------------------------------------------------------------------
1001  // Handlers to implement for typed input ports
1002  // ----------------------------------------------------------------------
1003 
1005  virtual void checkTimers_handler(
1006  FwIndexType portNum,
1007  U32 context
1008  ) = 0;
1009 
1011  virtual void cmdResponseIn_handler(
1012  FwIndexType portNum,
1013  FwOpcodeType opCode,
1014  U32 cmdSeq,
1015  const Fw::CmdResponse& response
1016  ) = 0;
1017 
1019  virtual void pingIn_handler(
1020  FwIndexType portNum,
1021  U32 key
1022  ) = 0;
1023 
1025  virtual void seqRunIn_handler(
1026  FwIndexType portNum,
1027  const Fw::StringBase& filename
1028  ) = 0;
1029 
1031  virtual void tlmWrite_handler(
1032  FwIndexType portNum,
1033  U32 context
1034  ) = 0;
1035 
1036  protected:
1037 
1038  // ----------------------------------------------------------------------
1039  // Port handler base-class functions for typed input ports
1040  //
1041  // Call these functions directly to bypass the corresponding ports
1042  // ----------------------------------------------------------------------
1043 
1046  FwIndexType portNum,
1047  U32 context
1048  );
1049 
1052  FwIndexType portNum,
1053  FwOpcodeType opCode,
1054  U32 cmdSeq,
1055  const Fw::CmdResponse& response
1056  );
1057 
1059  void pingIn_handlerBase(
1060  FwIndexType portNum,
1061  U32 key
1062  );
1063 
1065  void seqRunIn_handlerBase(
1066  FwIndexType portNum,
1067  const Fw::StringBase& filename
1068  );
1069 
1071  void tlmWrite_handlerBase(
1072  FwIndexType portNum,
1073  U32 context
1074  );
1075 
1076  protected:
1077 
1078  // ----------------------------------------------------------------------
1079  // Pre-message hooks for typed async input ports
1080  //
1081  // Each of these functions is invoked just before processing a message
1082  // on the corresponding port. By default, they do nothing. You can
1083  // override them to provide specific pre-message behavior.
1084  // ----------------------------------------------------------------------
1085 
1087  virtual void checkTimers_preMsgHook(
1088  FwIndexType portNum,
1089  U32 context
1090  );
1091 
1093  virtual void cmdResponseIn_preMsgHook(
1094  FwIndexType portNum,
1095  FwOpcodeType opCode,
1096  U32 cmdSeq,
1097  const Fw::CmdResponse& response
1098  );
1099 
1101  virtual void pingIn_preMsgHook(
1102  FwIndexType portNum,
1103  U32 key
1104  );
1105 
1107  virtual void seqRunIn_preMsgHook(
1108  FwIndexType portNum,
1109  const Fw::StringBase& filename
1110  );
1111 
1113  virtual void tlmWrite_preMsgHook(
1114  FwIndexType portNum,
1115  U32 context
1116  );
1117 
1118  protected:
1119 
1120  // ----------------------------------------------------------------------
1121  // Invocation functions for typed output ports
1122  // ----------------------------------------------------------------------
1123 
1125  void cmdOut_out(
1126  FwIndexType portNum,
1127  Fw::ComBuffer& data,
1128  U32 context
1129  );
1130 
1133  FwIndexType portNum,
1134  FwPrmIdType id,
1135  Fw::ParamBuffer& val
1136  );
1138 
1141  FwIndexType portNum,
1142  FwChanIdType id,
1143  Fw::Time& timeTag,
1144  Fw::TlmBuffer& val
1145  );
1148 
1150  void pingOut_out(
1151  FwIndexType portNum,
1152  U32 key
1153  );
1154 
1156  void seqDoneOut_out(
1157  FwIndexType portNum,
1158  FwOpcodeType opCode,
1159  U32 cmdSeq,
1160  const Fw::CmdResponse& response
1161  );
1162 
1164  void seqStartOut_out(
1165  FwIndexType portNum,
1166  const Fw::StringBase& filename
1167  );
1168 
1169  protected:
1170 
1171  // ----------------------------------------------------------------------
1172  // Internal interface handlers
1173  // ----------------------------------------------------------------------
1174 
1177 
1180 
1183 
1186 
1189 
1192 
1194  virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective& directive) = 0;
1195 
1198 
1201 
1204 
1207 
1210 
1213 
1216 
1219 
1222 
1225 
1228 
1231 
1234 
1237 
1238  protected:
1239 
1240  // ----------------------------------------------------------------------
1241  // Internal interface base-class functions
1242  // ----------------------------------------------------------------------
1243 
1246 
1249 
1252 
1255 
1258 
1261 
1264 
1267 
1270 
1273 
1276 
1279 
1282 
1285 
1288 
1291 
1294 
1297 
1300 
1303 
1306 
1307  protected:
1308 
1309  // ----------------------------------------------------------------------
1310  // State getter functions
1311  // ----------------------------------------------------------------------
1312 
1315 
1316  protected:
1317 
1318  // ----------------------------------------------------------------------
1319  // Signal send functions
1320  // ----------------------------------------------------------------------
1321 
1325  );
1326 
1330  );
1331 
1335  );
1336 
1339 
1342  const Svc::FpySequencer_BreakpointArgs& value
1343  );
1344 
1347 
1350 
1353 
1356 
1359 
1362 
1365 
1368 
1371 
1374 
1377 
1380 
1383 
1386 
1389 
1392 
1395 
1398 
1401 
1404 
1407 
1408  protected:
1409 
1410  // ----------------------------------------------------------------------
1411  // Functions to implement for internal state machine actions
1412  // ----------------------------------------------------------------------
1413 
1418  SmId smId,
1420  ) = 0;
1421 
1426  SmId smId,
1429  ) = 0;
1430 
1435  SmId smId,
1438  ) = 0;
1439 
1444  SmId smId,
1446  ) = 0;
1447 
1452  SmId smId,
1454  ) = 0;
1455 
1460  SmId smId,
1462  ) = 0;
1463 
1468  SmId smId,
1470  ) = 0;
1471 
1476  SmId smId,
1478  ) = 0;
1479 
1484  SmId smId,
1486  ) = 0;
1487 
1492  SmId smId,
1494  ) = 0;
1495 
1500  SmId smId,
1502  ) = 0;
1503 
1508  SmId smId,
1510  ) = 0;
1511 
1516  SmId smId,
1518  ) = 0;
1519 
1524  SmId smId,
1526  ) = 0;
1527 
1532  SmId smId,
1534  ) = 0;
1535 
1540  SmId smId,
1542  ) = 0;
1543 
1548  SmId smId,
1550  ) = 0;
1551 
1556  SmId smId,
1558  ) = 0;
1559 
1564  SmId smId,
1566  ) = 0;
1567 
1572  SmId smId,
1574  ) = 0;
1575 
1580  SmId smId,
1582  ) = 0;
1583 
1588  SmId smId,
1590  const Svc::FpySequencer_BreakpointArgs& value
1591  ) = 0;
1592 
1597  SmId smId,
1599  ) = 0;
1600 
1605  SmId smId,
1607  ) = 0;
1608 
1609  protected:
1610 
1611  // ----------------------------------------------------------------------
1612  // Functions to implement for internal state machine guards
1613  // ----------------------------------------------------------------------
1614 
1619  SmId smId,
1621  ) const = 0;
1622 
1628  SmId smId,
1630  ) const = 0;
1631 
1636  SmId smId,
1638  ) const = 0;
1639 
1640  protected:
1641 
1642  // ----------------------------------------------------------------------
1643  // Command response
1644  // ----------------------------------------------------------------------
1645 
1647  void cmdResponse_out(
1648  FwOpcodeType opCode,
1649  U32 cmdSeq,
1650  Fw::CmdResponse response
1651  );
1652 
1653  protected:
1654 
1655  // ----------------------------------------------------------------------
1656  // Command handlers to implement
1657  // ----------------------------------------------------------------------
1658 
1662  virtual void RUN_cmdHandler(
1663  FwOpcodeType opCode,
1664  U32 cmdSeq,
1665  const Fw::CmdStringArg& fileName,
1667  ) = 0;
1668 
1672  virtual void VALIDATE_cmdHandler(
1673  FwOpcodeType opCode,
1674  U32 cmdSeq,
1675  const Fw::CmdStringArg& fileName
1676  ) = 0;
1677 
1681  virtual void RUN_VALIDATED_cmdHandler(
1682  FwOpcodeType opCode,
1683  U32 cmdSeq,
1685  ) = 0;
1686 
1691  virtual void CANCEL_cmdHandler(
1692  FwOpcodeType opCode,
1693  U32 cmdSeq
1694  ) = 0;
1695 
1702  virtual void SET_BREAKPOINT_cmdHandler(
1703  FwOpcodeType opCode,
1704  U32 cmdSeq,
1705  U32 stmtIdx,
1706  bool breakOnce
1707  ) = 0;
1708 
1714  virtual void BREAK_cmdHandler(
1715  FwOpcodeType opCode,
1716  U32 cmdSeq
1717  ) = 0;
1718 
1723  virtual void CONTINUE_cmdHandler(
1724  FwOpcodeType opCode,
1725  U32 cmdSeq
1726  ) = 0;
1727 
1732  virtual void CLEAR_BREAKPOINT_cmdHandler(
1733  FwOpcodeType opCode,
1734  U32 cmdSeq
1735  ) = 0;
1736 
1741  virtual void STEP_cmdHandler(
1742  FwOpcodeType opCode,
1743  U32 cmdSeq
1744  ) = 0;
1745 
1750  virtual void SET_FLAG_cmdHandler(
1751  FwOpcodeType opCode,
1752  U32 cmdSeq,
1753  Svc::Fpy::FlagId flag,
1754  bool value
1755  ) = 0;
1756 
1757  protected:
1758 
1759  // ----------------------------------------------------------------------
1760  // Command handler base-class functions
1761  //
1762  // Call these functions directly to bypass the command input port
1763  // ----------------------------------------------------------------------
1764 
1768  void RUN_cmdHandlerBase(
1769  FwOpcodeType opCode,
1770  U32 cmdSeq,
1771  Fw::CmdArgBuffer& args
1772  );
1773 
1778  FwOpcodeType opCode,
1779  U32 cmdSeq,
1780  Fw::CmdArgBuffer& args
1781  );
1782 
1787  FwOpcodeType opCode,
1788  U32 cmdSeq,
1789  Fw::CmdArgBuffer& args
1790  );
1791 
1796  void CANCEL_cmdHandlerBase(
1797  FwOpcodeType opCode,
1798  U32 cmdSeq,
1799  Fw::CmdArgBuffer& args
1800  );
1801 
1809  FwOpcodeType opCode,
1810  U32 cmdSeq,
1811  Fw::CmdArgBuffer& args
1812  );
1813 
1819  void BREAK_cmdHandlerBase(
1820  FwOpcodeType opCode,
1821  U32 cmdSeq,
1822  Fw::CmdArgBuffer& args
1823  );
1824 
1830  FwOpcodeType opCode,
1831  U32 cmdSeq,
1832  Fw::CmdArgBuffer& args
1833  );
1834 
1840  FwOpcodeType opCode,
1841  U32 cmdSeq,
1842  Fw::CmdArgBuffer& args
1843  );
1844 
1849  void STEP_cmdHandlerBase(
1850  FwOpcodeType opCode,
1851  U32 cmdSeq,
1852  Fw::CmdArgBuffer& args
1853  );
1854 
1860  FwOpcodeType opCode,
1861  U32 cmdSeq,
1862  Fw::CmdArgBuffer& args
1863  );
1864 
1865  protected:
1866 
1867  // ----------------------------------------------------------------------
1868  // Pre-message hooks for async commands
1869  //
1870  // Each of these functions is invoked just before processing the
1871  // corresponding command. By default they do nothing. You can
1872  // override them to provide specific pre-command behavior.
1873  // ----------------------------------------------------------------------
1874 
1876  virtual void RUN_preMsgHook(
1877  FwOpcodeType opCode,
1878  U32 cmdSeq
1879  );
1880 
1882  virtual void VALIDATE_preMsgHook(
1883  FwOpcodeType opCode,
1884  U32 cmdSeq
1885  );
1886 
1888  virtual void RUN_VALIDATED_preMsgHook(
1889  FwOpcodeType opCode,
1890  U32 cmdSeq
1891  );
1892 
1894  virtual void CANCEL_preMsgHook(
1895  FwOpcodeType opCode,
1896  U32 cmdSeq
1897  );
1898 
1900  virtual void SET_BREAKPOINT_preMsgHook(
1901  FwOpcodeType opCode,
1902  U32 cmdSeq
1903  );
1904 
1906  virtual void BREAK_preMsgHook(
1907  FwOpcodeType opCode,
1908  U32 cmdSeq
1909  );
1910 
1912  virtual void CONTINUE_preMsgHook(
1913  FwOpcodeType opCode,
1914  U32 cmdSeq
1915  );
1916 
1918  virtual void CLEAR_BREAKPOINT_preMsgHook(
1919  FwOpcodeType opCode,
1920  U32 cmdSeq
1921  );
1922 
1924  virtual void STEP_preMsgHook(
1925  FwOpcodeType opCode,
1926  U32 cmdSeq
1927  );
1928 
1930  virtual void SET_FLAG_preMsgHook(
1931  FwOpcodeType opCode,
1932  U32 cmdSeq
1933  );
1934 
1935  protected:
1936 
1937  // ----------------------------------------------------------------------
1938  // Event logging functions
1939  // ----------------------------------------------------------------------
1940 
1942  void log_WARNING_HI_InvalidCommand(I32 state) const;
1943 
1945  void log_WARNING_HI_InvalidSeqRunCall(I32 state) const;
1946 
1949  const Fw::StringBase& filePath,
1950  I32 errorCode
1951  ) const;
1952 
1956  const Fw::StringBase& filePath,
1957  I32 errorCode
1958  ) const;
1959 
1963  const Fw::StringBase& filePath
1964  ) const;
1965 
1969  const Fw::StringBase& filePath,
1970  I32 errorCode,
1971  U64 buffLeft,
1972  U64 buffLength
1973  ) const;
1974 
1977  U8 expected,
1978  U8 actual
1979  ) const;
1980 
1983  U32 expected,
1984  U32 actual
1985  ) const;
1986 
1988  void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const;
1989 
1992  U64 bufferSize,
1993  const Fw::StringBase& filePath
1994  ) const;
1995 
1998  FwOpcodeType opCode,
1999  U32 stmtIdx,
2000  const Fw::StringBase& filePath,
2001  Fw::CmdResponse response
2002  ) const;
2003 
2005  void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase& filePath) const;
2006 
2008  void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase& filePath) const;
2009 
2012  U8 opcode,
2013  U32 stmtIdx,
2014  const Fw::StringBase& filePath
2015  ) const;
2016 
2019  I32 state,
2020  FwOpcodeType opcode,
2021  Fw::CmdResponse response
2022  ) const;
2023 
2026  FwOpcodeType opcode,
2027  Fw::CmdResponse response,
2028  U16 oldSequenceIdx,
2029  U16 currentSequenceIdx
2030  ) const;
2031 
2034  FwOpcodeType opcode,
2035  Fw::CmdResponse response
2036  ) const;
2037 
2040  FwOpcodeType opcode,
2041  Fw::CmdResponse response,
2042  U8 expectedDirectiveOpcode
2043  ) const;
2044 
2047  FwOpcodeType opcode,
2048  Fw::CmdResponse response,
2049  FwOpcodeType expectedOpcode
2050  ) const;
2051 
2054  FwOpcodeType opcode,
2055  Fw::CmdResponse response,
2056  U16 actualCmdIdx,
2057  U16 expectedCmdIdx
2058  ) const;
2059 
2062  U8 opcode,
2063  U32 stmtIdx,
2064  I32 errorCode,
2065  U64 buffLeft,
2066  U64 buffLength
2067  ) const;
2068 
2071  I32 internalTimeBase,
2072  I32 otherTimeBase
2073  ) const;
2074 
2077  I32 internalTimeContext,
2078  I32 otherTimeContext
2079  ) const;
2080 
2083  FwOpcodeType opCode,
2084  U32 stmtIdx,
2085  const Fw::StringBase& filePath
2086  ) const;
2087 
2090  U8 opCode,
2091  U32 stmtIdx,
2092  const Fw::StringBase& filePath
2093  ) const;
2094 
2097  U8 count,
2098  U8 max
2099  ) const;
2100 
2103  U16 count,
2104  U16 max
2105  ) const;
2106 
2108  void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const;
2109 
2112  U32 breakpointIdx,
2113  bool breakOnce
2114  ) const;
2115 
2117  void log_ACTIVITY_HI_BreakpointCleared() const;
2118 
2119  protected:
2120 
2121  // ----------------------------------------------------------------------
2122  // Telemetry write functions
2123  // ----------------------------------------------------------------------
2124 
2128  void tlmWrite_State(
2129  FwEnumStoreType arg,
2130  Fw::Time _tlmTime = Fw::Time()
2131  );
2132 
2137  U64 arg,
2138  Fw::Time _tlmTime = Fw::Time()
2139  );
2140 
2145  U64 arg,
2146  Fw::Time _tlmTime = Fw::Time()
2147  );
2148 
2153  U64 arg,
2154  Fw::Time _tlmTime = Fw::Time()
2155  );
2156 
2163  U64 arg,
2164  Fw::Time _tlmTime = Fw::Time()
2165  );
2166 
2171  U64 arg,
2172  Fw::Time _tlmTime = Fw::Time()
2173  );
2174 
2180  Fw::Time _tlmTime = Fw::Time()
2181  );
2182 
2187  U64 arg,
2188  Fw::Time _tlmTime = Fw::Time()
2189  );
2190 
2195  const Svc::Fpy::DirectiveId& arg,
2196  Fw::Time _tlmTime = Fw::Time()
2197  );
2198 
2202  void tlmWrite_SeqPath(
2203  const Fw::StringBase& arg,
2204  Fw::Time _tlmTime = Fw::Time()
2205  );
2206 
2211  bool arg,
2212  Fw::Time _tlmTime = Fw::Time()
2213  ) const;
2214 
2219  bool arg,
2220  Fw::Time _tlmTime = Fw::Time()
2221  ) const;
2222 
2227  U8 arg,
2228  Fw::Time _tlmTime = Fw::Time()
2229  );
2230 
2235  FwOpcodeType arg,
2236  Fw::Time _tlmTime = Fw::Time()
2237  );
2238 
2243  bool arg,
2244  Fw::Time _tlmTime = Fw::Time()
2245  ) const;
2246 
2252  U32 arg,
2253  Fw::Time _tlmTime = Fw::Time()
2254  );
2255 
2260  bool arg,
2261  Fw::Time _tlmTime = Fw::Time()
2262  ) const;
2263 
2270  bool arg,
2271  Fw::Time _tlmTime = Fw::Time()
2272  ) const;
2273 
2278  F32 arg,
2279  Fw::Time _tlmTime = Fw::Time()
2280  );
2281 
2286  bool arg,
2287  Fw::Time _tlmTime = Fw::Time()
2288  ) const;
2289 
2290  protected:
2291 
2292  // ----------------------------------------------------------------------
2293  // Parameter update hook
2294  // ----------------------------------------------------------------------
2295 
2299  virtual void parameterUpdated(
2300  FwPrmIdType id
2301  );
2302 
2303  // ----------------------------------------------------------------------
2304  // Parameter load hook
2305  // ----------------------------------------------------------------------
2306 
2310  virtual void parametersLoaded();
2311 
2312  protected:
2313 
2314  // ----------------------------------------------------------------------
2315  // Parameter get functions
2316  // ----------------------------------------------------------------------
2317 
2327  Fw::ParamValid& valid
2328  );
2329 
2336  Fw::ParamValid& valid
2337  );
2338 
2339  protected:
2340 
2341  // ----------------------------------------------------------------------
2342  // Time
2343  // ----------------------------------------------------------------------
2344 
2348  Fw::Time getTime() const;
2349 
2350  private:
2351 
2352  // ----------------------------------------------------------------------
2353  // Message dispatch functions
2354  // ----------------------------------------------------------------------
2355 
2357  virtual MsgDispatchStatus doDispatch();
2358 
2359  private:
2360 
2361  // ----------------------------------------------------------------------
2362  // Calls for messages received on special input ports
2363  // ----------------------------------------------------------------------
2364 
2366  static void m_p_cmdIn_in(
2367  Fw::PassiveComponentBase* callComp,
2368  FwIndexType portNum,
2369  FwOpcodeType opCode,
2370  U32 cmdSeq,
2371  Fw::CmdArgBuffer& args
2372  );
2373 
2374  private:
2375 
2376  // ----------------------------------------------------------------------
2377  // Calls for messages received on typed input ports
2378  // ----------------------------------------------------------------------
2379 
2381  static void m_p_checkTimers_in(
2382  Fw::PassiveComponentBase* callComp,
2383  FwIndexType portNum,
2384  U32 context
2385  );
2386 
2388  static void m_p_cmdResponseIn_in(
2389  Fw::PassiveComponentBase* callComp,
2390  FwIndexType portNum,
2391  FwOpcodeType opCode,
2392  U32 cmdSeq,
2393  const Fw::CmdResponse& response
2394  );
2395 
2397  static void m_p_pingIn_in(
2398  Fw::PassiveComponentBase* callComp,
2399  FwIndexType portNum,
2400  U32 key
2401  );
2402 
2404  static void m_p_seqRunIn_in(
2405  Fw::PassiveComponentBase* callComp,
2406  FwIndexType portNum,
2407  const Fw::StringBase& filename
2408  );
2409 
2411  static void m_p_tlmWrite_in(
2412  Fw::PassiveComponentBase* callComp,
2413  FwIndexType portNum,
2414  U32 context
2415  );
2416 
2417  private:
2418 
2419  // ----------------------------------------------------------------------
2420  // Send signal helper functions
2421  // ----------------------------------------------------------------------
2422 
2424  void sendSignalStart(
2425  SmId smId,
2426  FwEnumStoreType signal,
2427  Fw::SerializeBufferBase& buffer
2428  );
2429 
2431  void sequencer_sendSignalFinish(
2432  Fw::SerializeBufferBase& buffer
2433  );
2434 
2435  private:
2436 
2437  // ----------------------------------------------------------------------
2438  // Helper functions for state machine dispatch
2439  // ----------------------------------------------------------------------
2440 
2442  void smDispatch(
2443  Fw::SerializeBufferBase& buffer
2444  );
2445 
2447  static void deserializeSmIdAndSignal(
2448  Fw::SerializeBufferBase& buffer,
2449  FwEnumStoreType& smId,
2450  FwEnumStoreType& signal
2451  );
2452 
2454  void Svc_FpySequencer_SequencerStateMachine_smDispatch(
2455  Fw::SerializeBufferBase& buffer,
2456  Svc_FpySequencer_SequencerStateMachine& sm,
2458  );
2459 
2460  private:
2461 
2462  // ----------------------------------------------------------------------
2463  // Parameter set functions
2464  // ----------------------------------------------------------------------
2465 
2469  Fw::CmdResponse paramSet_STATEMENT_TIMEOUT_SECS(
2471  );
2472 
2476  Fw::CmdResponse paramSet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(
2478  );
2479 
2480  private:
2481 
2482  // ----------------------------------------------------------------------
2483  // Parameter save functions
2484  // ----------------------------------------------------------------------
2485 
2489  Fw::CmdResponse paramSave_STATEMENT_TIMEOUT_SECS();
2490 
2494  Fw::CmdResponse paramSave_FLAG_DEFAULT_EXIT_ON_CMD_FAIL();
2495 
2496  private:
2497 
2498  // ----------------------------------------------------------------------
2499  // Special input ports
2500  // ----------------------------------------------------------------------
2501 
2503  Fw::InputCmdPort m_cmdIn_InputPort[NUM_CMDIN_INPUT_PORTS];
2504 
2505  private:
2506 
2507  // ----------------------------------------------------------------------
2508  // Typed input ports
2509  // ----------------------------------------------------------------------
2510 
2512  Svc::InputSchedPort m_checkTimers_InputPort[NUM_CHECKTIMERS_INPUT_PORTS];
2513 
2515  Fw::InputCmdResponsePort m_cmdResponseIn_InputPort[NUM_CMDRESPONSEIN_INPUT_PORTS];
2516 
2518  Svc::InputPingPort m_pingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
2519 
2521  Svc::InputCmdSeqInPort m_seqRunIn_InputPort[NUM_SEQRUNIN_INPUT_PORTS];
2522 
2524  Svc::InputSchedPort m_tlmWrite_InputPort[NUM_TLMWRITE_INPUT_PORTS];
2525 
2526  private:
2527 
2528  // ----------------------------------------------------------------------
2529  // Special output ports
2530  // ----------------------------------------------------------------------
2531 
2533  Fw::OutputCmdRegPort m_cmdRegOut_OutputPort[NUM_CMDREGOUT_OUTPUT_PORTS];
2534 
2536  Fw::OutputCmdResponsePort m_cmdResponseOut_OutputPort[NUM_CMDRESPONSEOUT_OUTPUT_PORTS];
2537 
2539  Fw::OutputLogPort m_logOut_OutputPort[NUM_LOGOUT_OUTPUT_PORTS];
2540 
2541 #if FW_ENABLE_TEXT_LOGGING == 1
2542 
2544  Fw::OutputLogTextPort m_logTextOut_OutputPort[NUM_LOGTEXTOUT_OUTPUT_PORTS];
2545 
2546 #endif
2547 
2549  Fw::OutputPrmGetPort m_prmGet_OutputPort[NUM_PRMGET_OUTPUT_PORTS];
2550 
2552  Fw::OutputPrmSetPort m_prmSet_OutputPort[NUM_PRMSET_OUTPUT_PORTS];
2553 
2555  Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
2556 
2558  Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
2559 
2560  private:
2561 
2562  // ----------------------------------------------------------------------
2563  // Typed output ports
2564  // ----------------------------------------------------------------------
2565 
2567  Fw::OutputComPort m_cmdOut_OutputPort[NUM_CMDOUT_OUTPUT_PORTS];
2568 
2570  Fw::OutputPrmGetPort m_getParam_OutputPort[NUM_GETPARAM_OUTPUT_PORTS];
2571 
2573  Fw::OutputTlmGetPort m_getTlmChan_OutputPort[NUM_GETTLMCHAN_OUTPUT_PORTS];
2574 
2576  Svc::OutputPingPort m_pingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
2577 
2579  Fw::OutputCmdResponsePort m_seqDoneOut_OutputPort[NUM_SEQDONEOUT_OUTPUT_PORTS];
2580 
2582  Svc::OutputCmdSeqInPort m_seqStartOut_OutputPort[NUM_SEQSTARTOUT_OUTPUT_PORTS];
2583 
2584  private:
2585 
2586  // ----------------------------------------------------------------------
2587  // First update flags for telemetry channels
2588  // ----------------------------------------------------------------------
2589 
2591  bool m_first_update_State = true;
2592 
2594  bool m_first_update_SequencesSucceeded = true;
2595 
2597  bool m_first_update_SequencesFailed = true;
2598 
2600  bool m_first_update_SequencesCancelled = true;
2601 
2603  bool m_first_update_StatementsDispatched = true;
2604 
2606  bool m_first_update_StatementsFailed = true;
2607 
2609  bool m_first_update_LastDirectiveError = true;
2610 
2612  bool m_first_update_DirectiveErrorIndex = true;
2613 
2615  bool m_first_update_DirectiveErrorId = true;
2616 
2618  bool m_first_update_SeqPath = true;
2619 
2621  bool m_first_update_Debug_NextStatementOpcode = true;
2622 
2624  bool m_first_update_Debug_NextCmdOpcode = true;
2625 
2627  bool m_first_update_BreakpointIndex = true;
2628 
2630  bool m_first_update_PRM_STATEMENT_TIMEOUT_SECS = true;
2631 
2632  private:
2633 
2634  // ----------------------------------------------------------------------
2635  // Last value storage for telemetry channels
2636  // ----------------------------------------------------------------------
2637 
2639  FwEnumStoreType m_last_State = {};
2640 
2642  U64 m_last_SequencesSucceeded = {};
2643 
2645  U64 m_last_SequencesFailed = {};
2646 
2648  U64 m_last_SequencesCancelled = {};
2649 
2651  U64 m_last_StatementsDispatched = {};
2652 
2654  U64 m_last_StatementsFailed = {};
2655 
2657  Svc::FpySequencer_DirectiveErrorCode m_last_LastDirectiveError = {};
2658 
2660  U64 m_last_DirectiveErrorIndex = {};
2661 
2663  Svc::Fpy::DirectiveId m_last_DirectiveErrorId = {};
2664 
2666  Fw::TlmString m_last_SeqPath = {};
2667 
2669  U8 m_last_Debug_NextStatementOpcode = {};
2670 
2672  FwOpcodeType m_last_Debug_NextCmdOpcode = {};
2673 
2675  U32 m_last_BreakpointIndex = {};
2676 
2678  F32 m_last_PRM_STATEMENT_TIMEOUT_SECS = {};
2679 
2680  private:
2681 
2682  // ----------------------------------------------------------------------
2683  // Parameter validity flags
2684  // ----------------------------------------------------------------------
2685 
2687  Fw::ParamValid m_param_STATEMENT_TIMEOUT_SECS_valid;
2688 
2690  Fw::ParamValid m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid;
2691 
2692  private:
2693 
2694  // ----------------------------------------------------------------------
2695  // Parameter variables
2696  // ----------------------------------------------------------------------
2697 
2704  F32 m_STATEMENT_TIMEOUT_SECS;
2705 
2709  bool m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL;
2710 
2711  private:
2712 
2713  // ----------------------------------------------------------------------
2714  // State machine instances
2715  // ----------------------------------------------------------------------
2716 
2718  Svc_FpySequencer_SequencerStateMachine m_stateMachine_sequencer;
2719 
2720  private:
2721 
2722  // ----------------------------------------------------------------------
2723  // Mutexes
2724  // ----------------------------------------------------------------------
2725 
2727  Os::Mutex m_paramLock;
2728 
2729  };
2730 
2731 }
2732 
2733 #endif
bool isConnected_tlmOut_OutputPort(FwIndexType portNum)
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 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_storeTlmVal_internalInterfaceHandler(const Svc::FpySequencer_StoreTlmValDirective &directive)=0
Internal interface handler for directive_storeTlmVal.
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)
void directive_storePrm_internalInterfaceInvoke(const Svc::FpySequencer_StorePrmDirective &directive)
Internal interface base-class function for directive_storePrm.
FwIdType FwOpcodeType
The type of a command opcode.
void set_cmdOut_OutputPort(FwIndexType portNum, Fw::InputComPort *port)
Connect port to cmdOut[portNum].
Loads, validates and runs a sequence.
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()
void tlmWrite_BreakBeforeNextLine(bool arg, Fw::Time _tlmTime=Fw::Time()) const
PlatformSizeType FwSizeType
the default value of the EXIT_ON_CMD_FAIL sequence flag
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.
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 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 directive_store_internalInterfaceHandler(const Svc::FpySequencer_StoreDirective &directive)=0
Internal interface handler for directive_store.
void directive_load_internalInterfaceInvoke(const Svc::FpySequencer_LoadDirective &directive)
Internal interface base-class function for directive_load.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setGoalState_IDLE(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void directive_storePrm_internalInterfaceHandler(const Svc::FpySequencer_StorePrmDirective &directive)=0
Internal interface handler for directive_storePrm.
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.
void sequencer_sendSignal_result_success()
Send signal result_success to state machine sequencer.
void tlmWrite_Debug_NextStatementReadSuccess(bool arg, Fw::Time _tlmTime=Fw::Time()) const
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.
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].
void tlmWrite_BreakpointInUse(bool arg, Fw::Time _tlmTime=Fw::Time()) const
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.
void directive_store_internalInterfaceInvoke(const Svc::FpySequencer_StoreDirective &directive)
Internal interface base-class function for directive_store.
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
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.
void tlmWrite_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(bool arg, Fw::Time _tlmTime=Fw::Time()) const
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())
void regCommands()
Register commands with the Command Dispatcher.
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
void directive_storeTlmVal_internalInterfaceInvoke(const Svc::FpySequencer_StoreTlmValDirective &directive)
Internal interface base-class function for directive_storeTlmVal.
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.
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
Must be called after VALIDATE. Runs the sequence that was validated.
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 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 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.
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 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 tlmWrite_LastDirectiveError(const Svc::FpySequencer_DirectiveErrorCode &arg, Fw::Time _tlmTime=Fw::Time())
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.
pops some bytes off the stack and puts them in lvar array
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)
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.
gets bytes from lvar array and pushes them to stack
void log_ACTIVITY_HI_BreakpointSet(U32 breakpointIdx, bool breakOnce) const
Log event BreakpointSet.
void tlmWrite_BreakOnlyOnceOnBreakpoint(bool arg, Fw::Time _tlmTime=Fw::Time()) const
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 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()
void pingOut_out(FwIndexType portNum, U32 key)
Invoke output port pingOut.
bool isConnected_cmdOut_OutputPort(FwIndexType portNum)
void tlmWrite_Debug_ReachedEndOfFile(bool arg, Fw::Time _tlmTime=Fw::Time()) const
void tlmWrite_SequencesFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_FileReadDeserializeError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event FileReadDeserializeError.
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()
virtual void directive_load_internalInterfaceHandler(const Svc::FpySequencer_LoadDirective &directive)=0
Internal interface handler for directive_load.
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
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
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.
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_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.
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.
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)
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 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.
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 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)
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