F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
FpySequencerComponentAc.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title FpySequencerComponentAc.hpp
3 // \author Generated by fpp-to-cpp
4 // \brief hpp file for FpySequencer component base class
5 // ======================================================================
6 
7 #ifndef Svc_FpySequencerComponentAc_HPP
8 #define Svc_FpySequencerComponentAc_HPP
9 
10 #include <atomic>
11 
12 #include "Fw/Cmd/CmdPortAc.hpp"
13 #include "Fw/Cmd/CmdRegPortAc.hpp"
16 #include "Fw/Cmd/CmdString.hpp"
17 #include "Fw/Com/ComPortAc.hpp"
19 #include "Fw/FPrimeBasicTypes.hpp"
20 #include "Fw/Log/LogPortAc.hpp"
21 #include "Fw/Log/LogString.hpp"
22 #include "Fw/Log/LogTextPortAc.hpp"
23 #if !FW_DIRECT_PORT_CALLS
25 #endif
26 #if !FW_DIRECT_PORT_CALLS
28 #endif
29 #include "Fw/Prm/PrmGetPortAc.hpp"
30 #include "Fw/Prm/PrmSetPortAc.hpp"
31 #include "Fw/Prm/PrmString.hpp"
32 #include "Fw/Time/TimePortAc.hpp"
33 #include "Fw/Tlm/TlmGetPortAc.hpp"
34 #include "Fw/Tlm/TlmPortAc.hpp"
35 #include "Fw/Tlm/TlmString.hpp"
37 #include "Os/Mutex.hpp"
78 #include "Svc/Ping/PingPortAc.hpp"
91 
92 static_assert(
94  "FpySequencer component requires serialization"
95 );
96 
97 namespace Svc {
98 
105  {
106 
107  // ----------------------------------------------------------------------
108  // Friend classes
109  // ----------------------------------------------------------------------
110 
114  friend class FpySequencerTester;
115 
116  protected:
117 
118  // ----------------------------------------------------------------------
119  // Constants
120  // ----------------------------------------------------------------------
121 
123  enum {
125  };
126 
128  enum {
135  };
136 
138  enum {
147  };
148 
150  enum {
157  };
158 
160  enum {
162  };
163 
165  enum {
166  OPCODE_RUN = 0x0,
172  OPCODE_SET_BREAKPOINT = 0x6,
174  OPCODE_BREAK = 0x7,
178  OPCODE_CONTINUE = 0x8,
183  OPCODE_STEP = 0xa,
191  };
192 
194  enum {
240  };
241 
243  enum {
266  };
267 
269  enum {
271  PARAMID_SEQ_BASE_DIR = 0x1,
275  };
279 
281  enum class SmId : FwEnumStoreType {
282  sequencer,
283  };
284 
285  protected:
286 
287  // ----------------------------------------------------------------------
288  // Types for internal state machines
289  // ----------------------------------------------------------------------
290 
294  {
295 
296  // ----------------------------------------------------------------------
297  // Friend classes
298  // ----------------------------------------------------------------------
299 
303  friend class FpySequencerTester;
304 
305  public:
306 
309  FpySequencerComponentBase& component
310  );
311 
312  public:
313 
315  void init(
317  );
318 
319  public:
320 
323 
324  private:
325 
327  void action_signalEntered(
328  Signal signal
329  );
330 
332  void action_setSequenceFilePath(
333  Signal signal,
335  );
336 
338  void action_setSequenceBlockState(
339  Signal signal,
341  );
342 
344  void action_setSequenceArguments(
345  Signal signal,
347  );
348 
350  void action_validate(
351  Signal signal
352  );
353 
355  void action_report_seqSucceeded(
356  Signal signal
357  );
358 
360  void action_report_seqCancelled(
361  Signal signal
362  );
363 
365  void action_report_seqFailed(
366  Signal signal
367  );
368 
370  void action_report_seqStarted(
371  Signal signal
372  );
373 
375  void action_setGoalState_RUNNING(
376  Signal signal
377  );
378 
380  void action_setGoalState_VALID(
381  Signal signal
382  );
383 
385  void action_setGoalState_IDLE(
386  Signal signal
387  );
388 
390  void action_sendCmdResponse_OK(
391  Signal signal
392  );
393 
395  void action_sendCmdResponse_EXECUTION_ERROR(
396  Signal signal
397  );
398 
400  void action_clearSequenceFile(
401  Signal signal
402  );
403 
405  void action_clearBreakpoint(
406  Signal signal
407  );
408 
410  void action_clearSequenceArguments(
411  Signal signal
412  );
413 
415  void action_checkShouldWake(
416  Signal signal
417  );
418 
420  void action_dispatchStatement(
421  Signal signal
422  );
423 
425  void action_resetRuntime(
426  Signal signal
427  );
428 
430  void action_checkStatementTimeout(
431  Signal signal
432  );
433 
435  void action_incrementSequenceCounter(
436  Signal signal
437  );
438 
440  void action_pushArgsToStack(
441  Signal signal
442  );
443 
445  void action_report_seqBroken(
446  Signal signal
447  );
448 
450  void action_setBreakpoint(
451  Signal signal,
453  );
454 
456  void action_setBreakBeforeNextLine(
457  Signal signal
458  );
459 
461  void action_clearBreakBeforeNextLine(
462  Signal signal
463  );
464 
465  private:
466 
468  bool guard_goalStateIs_RUNNING(
469  Signal signal
470  ) const;
471 
473  bool guard_shouldBreak(
474  Signal signal
475  ) const;
476 
478  bool guard_breakOnce(
479  Signal signal
480  ) const;
481 
482  private:
483 
485  FpySequencerComponentBase& m_component;
486 
487  };
488 
489  public:
490 
491  // ----------------------------------------------------------------------
492  // Component initialization
493  // ----------------------------------------------------------------------
494 
496  void init(
497  FwSizeType queueDepth,
498  FwEnumStoreType instance = 0
499  );
500 
501 #if !FW_DIRECT_PORT_CALLS
502 
503  public:
504 
505  // ----------------------------------------------------------------------
506  // Getters for special input ports
507  // ----------------------------------------------------------------------
508 
513  FwIndexType portNum
514  );
515 
516 #endif
517 
518 #if !FW_DIRECT_PORT_CALLS
519 
520  public:
521 
522  // ----------------------------------------------------------------------
523  // Getters for typed input ports
524  // ----------------------------------------------------------------------
525 
530  FwIndexType portNum
531  );
532 
537  FwIndexType portNum
538  );
539 
544  FwIndexType portNum
545  );
546 
551  FwIndexType portNum
552  );
553 
558  FwIndexType portNum
559  );
560 
565  FwIndexType portNum
566  );
567 
568 #endif
569 
570 #if !FW_DIRECT_PORT_CALLS
571 
572  public:
573 
574  // ----------------------------------------------------------------------
575  // Connect input ports to special output ports
576  // ----------------------------------------------------------------------
577 
580  FwIndexType portNum,
581  Fw::InputCmdRegPort* port
582  );
583 
586  FwIndexType portNum,
588  );
589 
592  FwIndexType portNum,
593  Fw::InputLogPort* port
594  );
595 
596 #if FW_ENABLE_TEXT_LOGGING == 1
597 
599  void set_logTextOut_OutputPort(
600  FwIndexType portNum,
601  Fw::InputLogTextPort* port
602  );
603 
604 #endif
605 
608  FwIndexType portNum,
609  Fw::InputPrmGetPort* port
610  );
611 
614  FwIndexType portNum,
615  Fw::InputPrmSetPort* port
616  );
617 
620  FwIndexType portNum,
621  Fw::InputTimePort* port
622  );
623 
626  FwIndexType portNum,
627  Fw::InputTlmPort* port
628  );
629 
630 #endif
631 
632 #if !FW_DIRECT_PORT_CALLS
633 
634  public:
635 
636  // ----------------------------------------------------------------------
637  // Connect typed input ports to typed output ports
638  // ----------------------------------------------------------------------
639 
642  FwIndexType portNum,
643  Fw::InputComPort* port
644  );
645 
648  FwIndexType portNum,
649  Fw::InputPrmGetPort* port
650  );
651 
654  FwIndexType portNum,
655  Fw::InputTlmGetPort* port
656  );
657 
660  FwIndexType portNum,
661  Svc::InputPingPort* port
662  );
663 
666  FwIndexType portNum,
668  );
669 
672  FwIndexType portNum,
674  );
675 
676 #endif
677 
678 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
679 
680  public:
681 
682  // ----------------------------------------------------------------------
683  // Connect serial input ports to special output ports
684  // ----------------------------------------------------------------------
685 
688  FwIndexType portNum,
689  Fw::InputSerializePort* port
690  );
691 
694  FwIndexType portNum,
695  Fw::InputSerializePort* port
696  );
697 
700  FwIndexType portNum,
701  Fw::InputSerializePort* port
702  );
703 
704 #if FW_ENABLE_TEXT_LOGGING == 1
705 
707  void set_logTextOut_OutputPort(
708  FwIndexType portNum,
709  Fw::InputSerializePort* port
710  );
711 
712 #endif
713 
716  FwIndexType portNum,
717  Fw::InputSerializePort* port
718  );
719 
722  FwIndexType portNum,
723  Fw::InputSerializePort* port
724  );
725 
728  FwIndexType portNum,
729  Fw::InputSerializePort* port
730  );
731 
732 #endif
733 
734 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
735 
736  public:
737 
738  // ----------------------------------------------------------------------
739  // Connect serial input ports to typed output ports
740  // ----------------------------------------------------------------------
741 
744  FwIndexType portNum,
745  Fw::InputSerializePort* port
746  );
747 
750  FwIndexType portNum,
751  Fw::InputSerializePort* port
752  );
753 
756  FwIndexType portNum,
757  Fw::InputSerializePort* port
758  );
759 
762  FwIndexType portNum,
763  Fw::InputSerializePort* port
764  );
765 
766 #endif
767 
768 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
769 
770  public:
771 
772  // ----------------------------------------------------------------------
773  // Connect typed and serial input ports to serial output ports
774  // ----------------------------------------------------------------------
775 
777  void set_serialOut_OutputPort(
778  FwIndexType portNum,
779  Fw::InputPortBase* port
780  );
781 
782 #endif
783 
784  public:
785 
786  // ----------------------------------------------------------------------
787  // Command registration
788  // ----------------------------------------------------------------------
789 
793  void regCommands();
794 
795  public:
796 
797  // ----------------------------------------------------------------------
798  // Parameter loading
799  // ----------------------------------------------------------------------
800 
804  void loadParameters();
805 
806  protected:
807 
808  // ----------------------------------------------------------------------
809  // Component construction and destruction
810  // ----------------------------------------------------------------------
811 
814  const char* compName = ""
815  );
816 
818  virtual ~FpySequencerComponentBase();
819 
820  protected:
821 
822  // ----------------------------------------------------------------------
823  // Getters for numbers of special input ports
824  // ----------------------------------------------------------------------
825 
830  return NUM_CMDIN_INPUT_PORTS;
831  }
832 
833  protected:
834 
835  // ----------------------------------------------------------------------
836  // Getters for numbers of typed input ports
837  // ----------------------------------------------------------------------
838 
844  }
845 
851  }
852 
857  return NUM_PINGIN_INPUT_PORTS;
858  }
859 
865  }
866 
872  }
873 
879  }
880 
881  protected:
882 
883  // ----------------------------------------------------------------------
884  // Getters for numbers of special output ports
885  // ----------------------------------------------------------------------
886 
892  }
893 
899  }
900 
906  }
907 
908 #if FW_ENABLE_TEXT_LOGGING == 1
909 
913  static constexpr FwIndexType getNum_logTextOut_OutputPorts() {
915  }
916 
917 #endif
918 
924  }
925 
931  }
932 
938  }
939 
945  }
946 
947  protected:
948 
949  // ----------------------------------------------------------------------
950  // Getters for numbers of typed output ports
951  // ----------------------------------------------------------------------
952 
958  }
959 
965  }
966 
972  }
973 
979  }
980 
986  }
987 
993  }
994 
995  protected:
996 
997  // ----------------------------------------------------------------------
998  // Getters for numbers of serial output ports
999  // ----------------------------------------------------------------------
1000 
1006  }
1007 
1008  protected:
1009 
1010  // ----------------------------------------------------------------------
1011  // Connection status queries for special output ports
1012  // ----------------------------------------------------------------------
1013 
1018  FwIndexType portNum
1019  ) const;
1020 
1025  FwIndexType portNum
1026  ) const;
1027 
1032  FwIndexType portNum
1033  ) const;
1034 
1035 #if FW_ENABLE_TEXT_LOGGING == 1
1036 
1040  bool isConnected_logTextOut_OutputPort(
1041  FwIndexType portNum
1042  ) const;
1043 
1044 #endif
1045 
1050  FwIndexType portNum
1051  ) const;
1052 
1057  FwIndexType portNum
1058  ) const;
1059 
1064  FwIndexType portNum
1065  ) const;
1066 
1071  FwIndexType portNum
1072  ) const;
1073 
1074  protected:
1075 
1076  // ----------------------------------------------------------------------
1077  // Connection status queries for typed output ports
1078  // ----------------------------------------------------------------------
1079 
1084  FwIndexType portNum
1085  ) const;
1086 
1091  FwIndexType portNum
1092  ) const;
1093 
1098  FwIndexType portNum
1099  ) const;
1100 
1105  FwIndexType portNum
1106  ) const;
1107 
1112  FwIndexType portNum
1113  ) const;
1114 
1119  FwIndexType portNum
1120  ) const;
1121 
1122  protected:
1123 
1124  // ----------------------------------------------------------------------
1125  // Connection status queries for serial output ports
1126  // ----------------------------------------------------------------------
1127 
1132  FwIndexType portNum
1133  ) const;
1134 
1135 #if FW_DIRECT_PORT_CALLS
1136  public:
1137 #else
1138  protected:
1139 #endif
1140 
1141  // ----------------------------------------------------------------------
1142  // Port handler base-class functions for special input ports
1143  //
1144  // Call these functions directly to bypass the corresponding ports
1145  // ----------------------------------------------------------------------
1146 
1148  void cmdIn_handlerBase(
1149  FwIndexType portNum,
1150  FwOpcodeType opCode,
1151  U32 cmdSeq,
1152  Fw::CmdArgBuffer& args
1153  );
1154 
1155  protected:
1156 
1157  // ----------------------------------------------------------------------
1158  // Handlers to implement for typed input ports
1159  // ----------------------------------------------------------------------
1160 
1162  virtual void checkTimers_handler(
1163  FwIndexType portNum,
1164  U32 context
1165  ) = 0;
1166 
1168  virtual void cmdResponseIn_handler(
1169  FwIndexType portNum,
1170  FwOpcodeType opCode,
1171  U32 cmdSeq,
1172  const Fw::CmdResponse& response
1173  ) = 0;
1174 
1176  virtual void pingIn_handler(
1177  FwIndexType portNum,
1178  U32 key
1179  ) = 0;
1180 
1182  virtual void seqCancelIn_handler(
1183  FwIndexType portNum
1184  ) = 0;
1185 
1187  virtual void seqRunIn_handler(
1188  FwIndexType portNum,
1189  const Fw::StringBase& filename,
1190  const Svc::SeqArgs& args
1191  ) = 0;
1192 
1194  virtual void tlmWrite_handler(
1195  FwIndexType portNum,
1196  U32 context
1197  ) = 0;
1198 
1199 #if FW_DIRECT_PORT_CALLS
1200  public:
1201 #else
1202  protected:
1203 #endif
1204 
1205  // ----------------------------------------------------------------------
1206  // Port handler base-class functions for typed input ports
1207  //
1208  // Call these functions directly to bypass the corresponding ports
1209  // ----------------------------------------------------------------------
1210 
1213  FwIndexType portNum,
1214  U32 context
1215  );
1216 
1219  FwIndexType portNum,
1220  FwOpcodeType opCode,
1221  U32 cmdSeq,
1222  const Fw::CmdResponse& response
1223  );
1224 
1226  void pingIn_handlerBase(
1227  FwIndexType portNum,
1228  U32 key
1229  );
1230 
1233  FwIndexType portNum
1234  );
1235 
1237  void seqRunIn_handlerBase(
1238  FwIndexType portNum,
1239  const Fw::StringBase& filename,
1240  const Svc::SeqArgs& args
1241  );
1242 
1244  void tlmWrite_handlerBase(
1245  FwIndexType portNum,
1246  U32 context
1247  );
1248 
1249  protected:
1250 
1251  // ----------------------------------------------------------------------
1252  // Pre-message hooks for typed async input ports
1253  //
1254  // Each of these functions is invoked just before processing a message
1255  // on the corresponding port. By default, they do nothing. You can
1256  // override them to provide specific pre-message behavior.
1257  // ----------------------------------------------------------------------
1258 
1260  virtual void checkTimers_preMsgHook(
1261  FwIndexType portNum,
1262  U32 context
1263  );
1264 
1266  virtual void cmdResponseIn_preMsgHook(
1267  FwIndexType portNum,
1268  FwOpcodeType opCode,
1269  U32 cmdSeq,
1270  const Fw::CmdResponse& response
1271  );
1272 
1274  virtual void pingIn_preMsgHook(
1275  FwIndexType portNum,
1276  U32 key
1277  );
1278 
1280  virtual void seqCancelIn_preMsgHook(
1281  FwIndexType portNum
1282  );
1283 
1285  virtual void seqRunIn_preMsgHook(
1286  FwIndexType portNum,
1287  const Fw::StringBase& filename,
1288  const Svc::SeqArgs& args
1289  );
1290 
1292  virtual void tlmWrite_preMsgHook(
1293  FwIndexType portNum,
1294  U32 context
1295  );
1296 
1297  protected:
1298 
1299  // ----------------------------------------------------------------------
1300  // Invocation functions for typed output ports
1301  // ----------------------------------------------------------------------
1302 
1304  void cmdOut_out(
1305  FwIndexType portNum,
1306  Fw::ComBuffer& data,
1307  U32 context
1308  ) const;
1309 
1312  FwIndexType portNum,
1313  FwPrmIdType id,
1314  Fw::ParamBuffer& val
1315  ) const;
1317 
1320  FwIndexType portNum,
1321  FwChanIdType id,
1322  Fw::Time& timeTag,
1323  Fw::TlmBuffer& val
1324  ) const;
1327 
1329  void pingOut_out(
1330  FwIndexType portNum,
1331  U32 key
1332  ) const;
1333 
1335  void seqDoneOut_out(
1336  FwIndexType portNum,
1337  FwOpcodeType opCode,
1338  U32 cmdSeq,
1339  const Fw::CmdResponse& response
1340  ) const;
1341 
1343  void seqStartOut_out(
1344  FwIndexType portNum,
1345  const Fw::StringBase& filename,
1346  const Svc::SeqArgs& args
1347  ) const;
1348 
1349  protected:
1350 
1351  // ----------------------------------------------------------------------
1352  // Invocation functions for serial output ports
1353  // ----------------------------------------------------------------------
1354 
1357  FwIndexType portNum,
1358  Fw::LinearBufferBase& buffer
1359  );
1360 
1361  protected:
1362 
1363  // ----------------------------------------------------------------------
1364  // Internal interface handlers
1365  // ----------------------------------------------------------------------
1366 
1369 
1372 
1375 
1378 
1381 
1384 
1387 
1389  virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective& directive) = 0;
1390 
1393 
1396 
1399 
1402 
1405 
1408 
1411 
1414 
1417 
1420 
1423 
1426 
1429 
1432 
1435 
1438 
1441 
1444 
1447 
1450 
1453 
1456 
1459 
1460  protected:
1461 
1462  // ----------------------------------------------------------------------
1463  // Internal interface base-class functions
1464  // ----------------------------------------------------------------------
1465 
1468 
1471 
1474 
1477 
1480 
1483 
1486 
1489 
1492 
1495 
1498 
1501 
1504 
1507 
1510 
1513 
1516 
1519 
1522 
1525 
1528 
1531 
1534 
1537 
1540 
1543 
1546 
1549 
1552 
1555 
1558 
1559  protected:
1560 
1561  // ----------------------------------------------------------------------
1562  // State getter functions
1563  // ----------------------------------------------------------------------
1564 
1567 
1568  protected:
1569 
1570  // ----------------------------------------------------------------------
1571  // Signal send functions
1572  // ----------------------------------------------------------------------
1573 
1577  );
1578 
1582  );
1583 
1587  );
1588 
1591 
1594  const Svc::FpySequencer_BreakpointArgs& value
1595  );
1596 
1599 
1602 
1605 
1608 
1611 
1614 
1617 
1620 
1623 
1626 
1629 
1632 
1635 
1638 
1641 
1644 
1647 
1650 
1653 
1656 
1659 
1660  protected:
1661 
1662  // ----------------------------------------------------------------------
1663  // Functions to implement for internal state machine actions
1664  // ----------------------------------------------------------------------
1665 
1670  SmId smId,
1672  ) = 0;
1673 
1678  SmId smId,
1681  ) = 0;
1682 
1687  SmId smId,
1690  ) = 0;
1691 
1696  SmId smId,
1699  ) = 0;
1700 
1705  SmId smId,
1707  ) = 0;
1708 
1713  SmId smId,
1715  ) = 0;
1716 
1721  SmId smId,
1723  ) = 0;
1724 
1729  SmId smId,
1731  ) = 0;
1732 
1737  SmId smId,
1739  ) = 0;
1740 
1745  SmId smId,
1747  ) = 0;
1748 
1753  SmId smId,
1755  ) = 0;
1756 
1761  SmId smId,
1763  ) = 0;
1764 
1769  SmId smId,
1771  ) = 0;
1772 
1777  SmId smId,
1779  ) = 0;
1780 
1785  SmId smId,
1787  ) = 0;
1788 
1793  SmId smId,
1795  ) = 0;
1796 
1801  SmId smId,
1803  ) = 0;
1804 
1809  SmId smId,
1811  ) = 0;
1812 
1817  SmId smId,
1819  ) = 0;
1820 
1825  SmId smId,
1827  ) = 0;
1828 
1833  SmId smId,
1835  ) = 0;
1836 
1841  SmId smId,
1843  ) = 0;
1844 
1849  SmId smId,
1851  ) = 0;
1852 
1857  SmId smId,
1859  ) = 0;
1860 
1865  SmId smId,
1867  const Svc::FpySequencer_BreakpointArgs& value
1868  ) = 0;
1869 
1874  SmId smId,
1876  ) = 0;
1877 
1882  SmId smId,
1884  ) = 0;
1885 
1886  protected:
1887 
1888  // ----------------------------------------------------------------------
1889  // Functions to implement for internal state machine guards
1890  // ----------------------------------------------------------------------
1891 
1896  SmId smId,
1898  ) const = 0;
1899 
1905  SmId smId,
1907  ) const = 0;
1908 
1913  SmId smId,
1915  ) const = 0;
1916 
1917  protected:
1918 
1919  // ----------------------------------------------------------------------
1920  // Command response
1921  // ----------------------------------------------------------------------
1922 
1924  void cmdResponse_out(
1925  FwOpcodeType opCode,
1926  U32 cmdSeq,
1927  Fw::CmdResponse response
1928  );
1929 
1930  protected:
1931 
1932  // ----------------------------------------------------------------------
1933  // Command handlers to implement
1934  // ----------------------------------------------------------------------
1935 
1939  virtual void RUN_cmdHandler(
1940  FwOpcodeType opCode,
1941  U32 cmdSeq,
1942  const Fw::CmdStringArg& fileName,
1943  const Svc::BlockState& block
1944  ) = 0;
1945 
1947  virtual void RUN_ARGS_cmdHandler(
1948  FwOpcodeType opCode,
1949  U32 cmdSeq,
1950  const Fw::CmdStringArg& fileName,
1951  const Svc::BlockState& block,
1952  const Svc::SeqArgs& buffer
1953  ) = 0;
1954 
1958  virtual void VALIDATE_cmdHandler(
1959  FwOpcodeType opCode,
1960  U32 cmdSeq,
1961  const Fw::CmdStringArg& fileName
1962  ) = 0;
1963 
1967  virtual void VALIDATE_ARGS_cmdHandler(
1968  FwOpcodeType opCode,
1969  U32 cmdSeq,
1970  const Fw::CmdStringArg& fileName,
1971  const Svc::SeqArgs& buffer
1972  ) = 0;
1973 
1977  virtual void RUN_VALIDATED_cmdHandler(
1978  FwOpcodeType opCode,
1979  U32 cmdSeq,
1980  const Svc::BlockState& block
1981  ) = 0;
1982 
1987  virtual void CANCEL_cmdHandler(
1988  FwOpcodeType opCode,
1989  U32 cmdSeq
1990  ) = 0;
1991 
1998  virtual void SET_BREAKPOINT_cmdHandler(
1999  FwOpcodeType opCode,
2000  U32 cmdSeq,
2001  U32 stmtIdx,
2002  bool breakOnce
2003  ) = 0;
2004 
2010  virtual void BREAK_cmdHandler(
2011  FwOpcodeType opCode,
2012  U32 cmdSeq
2013  ) = 0;
2014 
2019  virtual void CONTINUE_cmdHandler(
2020  FwOpcodeType opCode,
2021  U32 cmdSeq
2022  ) = 0;
2023 
2028  virtual void CLEAR_BREAKPOINT_cmdHandler(
2029  FwOpcodeType opCode,
2030  U32 cmdSeq
2031  ) = 0;
2032 
2037  virtual void STEP_cmdHandler(
2038  FwOpcodeType opCode,
2039  U32 cmdSeq
2040  ) = 0;
2041 
2045  virtual void DUMP_STACK_TO_FILE_cmdHandler(
2046  FwOpcodeType opCode,
2047  U32 cmdSeq,
2048  const Fw::CmdStringArg& fileName
2049  ) = 0;
2050 
2051  protected:
2052 
2053  // ----------------------------------------------------------------------
2054  // Command handler base-class functions
2055  //
2056  // Call these functions directly to bypass the command input port
2057  // ----------------------------------------------------------------------
2058 
2062  void RUN_cmdHandlerBase(
2063  FwOpcodeType opCode,
2064  U32 cmdSeq,
2065  Fw::CmdArgBuffer& args
2066  );
2067 
2070  FwOpcodeType opCode,
2071  U32 cmdSeq,
2072  Fw::CmdArgBuffer& args
2073  );
2074 
2079  FwOpcodeType opCode,
2080  U32 cmdSeq,
2081  Fw::CmdArgBuffer& args
2082  );
2083 
2088  FwOpcodeType opCode,
2089  U32 cmdSeq,
2090  Fw::CmdArgBuffer& args
2091  );
2092 
2097  FwOpcodeType opCode,
2098  U32 cmdSeq,
2099  Fw::CmdArgBuffer& args
2100  );
2101 
2106  void CANCEL_cmdHandlerBase(
2107  FwOpcodeType opCode,
2108  U32 cmdSeq,
2109  Fw::CmdArgBuffer& args
2110  );
2111 
2119  FwOpcodeType opCode,
2120  U32 cmdSeq,
2121  Fw::CmdArgBuffer& args
2122  );
2123 
2129  void BREAK_cmdHandlerBase(
2130  FwOpcodeType opCode,
2131  U32 cmdSeq,
2132  Fw::CmdArgBuffer& args
2133  );
2134 
2140  FwOpcodeType opCode,
2141  U32 cmdSeq,
2142  Fw::CmdArgBuffer& args
2143  );
2144 
2150  FwOpcodeType opCode,
2151  U32 cmdSeq,
2152  Fw::CmdArgBuffer& args
2153  );
2154 
2159  void STEP_cmdHandlerBase(
2160  FwOpcodeType opCode,
2161  U32 cmdSeq,
2162  Fw::CmdArgBuffer& args
2163  );
2164 
2169  FwOpcodeType opCode,
2170  U32 cmdSeq,
2171  Fw::CmdArgBuffer& args
2172  );
2173 
2174  protected:
2175 
2176  // ----------------------------------------------------------------------
2177  // Pre-message hooks for async commands
2178  //
2179  // Each of these functions is invoked just before processing the
2180  // corresponding command. By default they do nothing. You can
2181  // override them to provide specific pre-command behavior.
2182  // ----------------------------------------------------------------------
2183 
2185  virtual void RUN_preMsgHook(
2186  FwOpcodeType opCode,
2187  U32 cmdSeq
2188  );
2189 
2191  virtual void RUN_ARGS_preMsgHook(
2192  FwOpcodeType opCode,
2193  U32 cmdSeq
2194  );
2195 
2197  virtual void VALIDATE_preMsgHook(
2198  FwOpcodeType opCode,
2199  U32 cmdSeq
2200  );
2201 
2203  virtual void VALIDATE_ARGS_preMsgHook(
2204  FwOpcodeType opCode,
2205  U32 cmdSeq
2206  );
2207 
2209  virtual void RUN_VALIDATED_preMsgHook(
2210  FwOpcodeType opCode,
2211  U32 cmdSeq
2212  );
2213 
2215  virtual void CANCEL_preMsgHook(
2216  FwOpcodeType opCode,
2217  U32 cmdSeq
2218  );
2219 
2221  virtual void SET_BREAKPOINT_preMsgHook(
2222  FwOpcodeType opCode,
2223  U32 cmdSeq
2224  );
2225 
2227  virtual void BREAK_preMsgHook(
2228  FwOpcodeType opCode,
2229  U32 cmdSeq
2230  );
2231 
2233  virtual void CONTINUE_preMsgHook(
2234  FwOpcodeType opCode,
2235  U32 cmdSeq
2236  );
2237 
2239  virtual void CLEAR_BREAKPOINT_preMsgHook(
2240  FwOpcodeType opCode,
2241  U32 cmdSeq
2242  );
2243 
2245  virtual void STEP_preMsgHook(
2246  FwOpcodeType opCode,
2247  U32 cmdSeq
2248  );
2249 
2251  virtual void DUMP_STACK_TO_FILE_preMsgHook(
2252  FwOpcodeType opCode,
2253  U32 cmdSeq
2254  );
2255 
2256  protected:
2257 
2258  // ----------------------------------------------------------------------
2259  // Event logging functions
2260  // ----------------------------------------------------------------------
2261 
2263  void log_WARNING_HI_InvalidCommand(I32 state) const;
2264 
2266  void log_WARNING_HI_InvalidSeqRunCall(I32 state) const;
2267 
2269  void log_WARNING_HI_InvalidSeqCancelCall(I32 state) const;
2270 
2273  const Fw::StringBase& filePath,
2274  I32 errorCode
2275  ) const;
2276 
2279  FwSizeType writeSize,
2280  const Fw::StringBase& filePath,
2281  I32 errorCode
2282  ) const;
2283 
2286  const Svc::FpySequencer_FileReadStage& readStage,
2287  const Fw::StringBase& filePath,
2288  I32 errorCode
2289  ) const;
2290 
2293  const Svc::FpySequencer_FileReadStage& readStage,
2294  const Fw::StringBase& filePath
2295  ) const;
2296 
2299  const Svc::FpySequencer_FileReadStage& readStage,
2300  const Fw::StringBase& filePath,
2301  I32 errorCode,
2302  U64 buffLeft,
2303  U64 buffLength
2304  ) const;
2305 
2308  U8 expected,
2309  U8 actual
2310  ) const;
2311 
2314  U32 expected,
2315  U32 actual
2316  ) const;
2317 
2319  void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const;
2320 
2323  U64 bufferSize,
2324  const Fw::StringBase& filePath
2325  ) const;
2326 
2329  const Fw::StringBase& filePath,
2330  I32 errorCode
2331  ) const;
2332 
2335  const Fw::StringBase& baseDir,
2336  const Fw::StringBase& fileName
2337  ) const;
2338 
2341  FwOpcodeType opCode,
2342  U32 stmtIdx,
2343  const Fw::StringBase& filePath,
2344  const Fw::CmdResponse& response
2345  ) const;
2346 
2348  void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase& filePath) const;
2349 
2351  void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase& filePath) const;
2352 
2355  const Fw::StringBase& filePath,
2356  I32 errorCode
2357  ) const;
2358 
2361  U8 opcode,
2362  U32 stmtIdx,
2363  const Fw::StringBase& filePath
2364  ) const;
2365 
2368  I32 state,
2369  FwOpcodeType opcode,
2370  const Fw::CmdResponse& response
2371  ) const;
2372 
2375  FwOpcodeType opcode,
2376  const Fw::CmdResponse& response,
2377  U16 oldSequenceIdx,
2378  U16 currentSequenceIdx
2379  ) const;
2380 
2383  FwOpcodeType opcode,
2384  const Fw::CmdResponse& response
2385  ) const;
2386 
2389  FwOpcodeType opcode,
2390  const Fw::CmdResponse& response,
2391  U8 expectedDirectiveOpcode
2392  ) const;
2393 
2396  FwOpcodeType opcode,
2397  const Fw::CmdResponse& response,
2398  FwOpcodeType expectedOpcode
2399  ) const;
2400 
2403  FwOpcodeType opcode,
2404  const Fw::CmdResponse& response,
2405  U16 actualCmdIdx,
2406  U16 expectedCmdIdx
2407  ) const;
2408 
2411  U8 opcode,
2412  U32 stmtIdx,
2413  I32 errorCode,
2414  U64 buffLeft,
2415  U64 buffLength
2416  ) const;
2417 
2420  I32 internalTimeBase,
2421  I32 otherTimeBase
2422  ) const;
2423 
2426  I32 internalTimeContext,
2427  I32 otherTimeContext
2428  ) const;
2429 
2432  FwOpcodeType opCode,
2433  U32 stmtIdx,
2434  const Fw::StringBase& filePath
2435  ) const;
2436 
2439  U8 opCode,
2440  U32 stmtIdx,
2441  const Fw::StringBase& filePath
2442  ) const;
2443 
2446  U8 count,
2447  U8 max
2448  ) const;
2449 
2452  U16 count,
2453  U16 max
2454  ) const;
2455 
2458  Svc::Fpy::StackSizeType expected,
2459  FwSizeType actual,
2460  const Fw::StringBase& filePath
2461  ) const;
2462 
2465  FwSizeType actual,
2466  FwSizeType capacity
2467  ) const;
2468 
2471 
2473  void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const;
2474 
2477  U32 breakpointIdx,
2478  bool breakOnce
2479  ) const;
2480 
2482  void log_ACTIVITY_HI_BreakpointCleared() const;
2483 
2485  void log_FATAL_LogFatal(
2486  const Fw::StringBase& filePath,
2487  const Fw::StringBase& message
2488  ) const;
2489 
2492  const Fw::StringBase& filePath,
2493  const Fw::StringBase& message
2494  ) const;
2495 
2498  const Fw::StringBase& filePath,
2499  const Fw::StringBase& message
2500  ) const;
2501 
2504  const Fw::StringBase& filePath,
2505  const Fw::StringBase& message
2506  ) const;
2507 
2510  const Fw::StringBase& filePath,
2511  const Fw::StringBase& message
2512  ) const;
2513 
2516  const Fw::StringBase& filePath,
2517  const Fw::StringBase& message
2518  ) const;
2519 
2522  const Fw::StringBase& filePath,
2523  const Fw::StringBase& message
2524  ) const;
2525 
2526  protected:
2527 
2528  // ----------------------------------------------------------------------
2529  // Telemetry serialized write
2530  // ----------------------------------------------------------------------
2531 
2536  void tlmWrite(
2537  FwChanIdType id,
2538  Fw::TlmBuffer& _tlmBuff,
2539  Fw::Time _tlmTime = Fw::Time()
2540  ) const;
2541 
2542  protected:
2543 
2544  // ----------------------------------------------------------------------
2545  // Telemetry write functions
2546  // ----------------------------------------------------------------------
2547 
2551  void tlmWrite_State(
2552  FwEnumStoreType arg,
2553  Fw::Time _tlmTime = Fw::Time()
2554  );
2555 
2560  U64 arg,
2561  Fw::Time _tlmTime = Fw::Time()
2562  );
2563 
2568  U64 arg,
2569  Fw::Time _tlmTime = Fw::Time()
2570  );
2571 
2576  U64 arg,
2577  Fw::Time _tlmTime = Fw::Time()
2578  );
2579 
2586  U64 arg,
2587  Fw::Time _tlmTime = Fw::Time()
2588  );
2589 
2594  U64 arg,
2595  Fw::Time _tlmTime = Fw::Time()
2596  );
2597 
2602  const Svc::Fpy::DirectiveErrorCode& arg,
2603  Fw::Time _tlmTime = Fw::Time()
2604  );
2605 
2610  U64 arg,
2611  Fw::Time _tlmTime = Fw::Time()
2612  );
2613 
2618  const Svc::Fpy::DirectiveId& arg,
2619  Fw::Time _tlmTime = Fw::Time()
2620  );
2621 
2625  void tlmWrite_SeqPath(
2626  const Fw::StringBase& arg,
2627  Fw::Time _tlmTime = Fw::Time()
2628  );
2629 
2634  bool arg,
2635  Fw::Time _tlmTime = Fw::Time()
2636  );
2637 
2642  bool arg,
2643  Fw::Time _tlmTime = Fw::Time()
2644  );
2645 
2650  U8 arg,
2651  Fw::Time _tlmTime = Fw::Time()
2652  );
2653 
2658  U32 arg,
2659  Fw::Time _tlmTime = Fw::Time()
2660  );
2661 
2666  FwOpcodeType arg,
2667  Fw::Time _tlmTime = Fw::Time()
2668  );
2669 
2675  Fw::Time _tlmTime = Fw::Time()
2676  );
2677 
2682  bool arg,
2683  Fw::Time _tlmTime = Fw::Time()
2684  );
2685 
2691  U32 arg,
2692  Fw::Time _tlmTime = Fw::Time()
2693  );
2694 
2699  bool arg,
2700  Fw::Time _tlmTime = Fw::Time()
2701  );
2702 
2709  bool arg,
2710  Fw::Time _tlmTime = Fw::Time()
2711  );
2712 
2717  F32 arg,
2718  Fw::Time _tlmTime = Fw::Time()
2719  );
2720 
2725  const Fw::StringBase& arg,
2726  Fw::Time _tlmTime = Fw::Time()
2727  );
2728 
2729  protected:
2730 
2731  // ----------------------------------------------------------------------
2732  // Parameter hook functions
2733  // ----------------------------------------------------------------------
2734 
2738  virtual void parameterUpdated(
2739  FwPrmIdType id
2740  );
2741 
2745  virtual void parametersLoaded();
2746 
2747  protected:
2748 
2749  // ----------------------------------------------------------------------
2750  // Parameter get functions
2751  // ----------------------------------------------------------------------
2752 
2762  Fw::ParamValid& valid
2763  );
2764 
2774  Fw::ParamValid& valid
2775  );
2776 
2777  protected:
2778 
2779  // ----------------------------------------------------------------------
2780  // Time
2781  // ----------------------------------------------------------------------
2782 
2786  Fw::Time getTime() const;
2787 
2788  private:
2789 
2790  // ----------------------------------------------------------------------
2791  // Message dispatch functions
2792  // ----------------------------------------------------------------------
2793 
2795  virtual MsgDispatchStatus doDispatch();
2796 
2797  private:
2798 
2799  // ----------------------------------------------------------------------
2800  // Calls for messages received on special input ports
2801  // ----------------------------------------------------------------------
2802 
2804  static void m_p_cmdIn_in(
2805  Fw::PassiveComponentBase* callComp,
2806  FwIndexType portNum,
2807  FwOpcodeType opCode,
2808  U32 cmdSeq,
2809  Fw::CmdArgBuffer& args
2810  );
2811 
2812  private:
2813 
2814  // ----------------------------------------------------------------------
2815  // Calls for messages received on typed input ports
2816  // ----------------------------------------------------------------------
2817 
2819  static void m_p_checkTimers_in(
2820  Fw::PassiveComponentBase* callComp,
2821  FwIndexType portNum,
2822  U32 context
2823  );
2824 
2826  static void m_p_cmdResponseIn_in(
2827  Fw::PassiveComponentBase* callComp,
2828  FwIndexType portNum,
2829  FwOpcodeType opCode,
2830  U32 cmdSeq,
2831  const Fw::CmdResponse& response
2832  );
2833 
2835  static void m_p_pingIn_in(
2836  Fw::PassiveComponentBase* callComp,
2837  FwIndexType portNum,
2838  U32 key
2839  );
2840 
2842  static void m_p_seqCancelIn_in(
2843  Fw::PassiveComponentBase* callComp,
2844  FwIndexType portNum
2845  );
2846 
2848  static void m_p_seqRunIn_in(
2849  Fw::PassiveComponentBase* callComp,
2850  FwIndexType portNum,
2851  const Fw::StringBase& filename,
2852  const Svc::SeqArgs& args
2853  );
2854 
2856  static void m_p_tlmWrite_in(
2857  Fw::PassiveComponentBase* callComp,
2858  FwIndexType portNum,
2859  U32 context
2860  );
2861 
2862  private:
2863 
2864  // ----------------------------------------------------------------------
2865  // Invocation functions for special output ports
2866  // ----------------------------------------------------------------------
2867 
2869  void cmdRegOut_out(
2870  FwIndexType portNum,
2871  FwOpcodeType opCode
2872  ) const;
2873 
2875  void cmdResponseOut_out(
2876  FwIndexType portNum,
2877  FwOpcodeType opCode,
2878  U32 cmdSeq,
2879  const Fw::CmdResponse& response
2880  ) const;
2881 
2883  void logOut_out(
2884  FwIndexType portNum,
2885  FwEventIdType id,
2886  Fw::Time& timeTag,
2887  const Fw::LogSeverity& severity,
2888  Fw::LogBuffer& args
2889  ) const;
2890 
2891 #if FW_ENABLE_TEXT_LOGGING
2892 
2894  void logTextOut_out(
2895  FwIndexType portNum,
2896  FwEventIdType id,
2897  Fw::Time& timeTag,
2898  const Fw::LogSeverity& severity,
2899  Fw::TextLogString& text
2900  ) const;
2901 
2902 #endif
2903 
2905  Fw::ParamValid prmGet_out(
2906  FwIndexType portNum,
2907  FwPrmIdType id,
2908  Fw::ParamBuffer& val
2909  ) const;
2911 
2913  void prmSet_out(
2914  FwIndexType portNum,
2915  FwPrmIdType id,
2916  Fw::ParamBuffer& val
2917  ) const;
2918 
2920  void timeCaller_out(
2921  FwIndexType portNum,
2922  Fw::Time& time
2923  ) const;
2924 
2926  void tlmOut_out(
2927  FwIndexType portNum,
2928  FwChanIdType id,
2929  Fw::Time& timeTag,
2930  Fw::TlmBuffer& val
2931  ) const;
2932 
2933  private:
2934 
2935  // ----------------------------------------------------------------------
2936  // Send signal helper functions
2937  // ----------------------------------------------------------------------
2938 
2940  void sendSignalStart(
2941  SmId smId,
2942  FwEnumStoreType signal,
2943  Fw::SerialBufferBase& buffer
2944  );
2945 
2947  void sequencer_sendSignalFinish(
2948  Fw::LinearBufferBase& buffer
2949  );
2950 
2951  private:
2952 
2953  // ----------------------------------------------------------------------
2954  // Helper functions for state machine dispatch
2955  // ----------------------------------------------------------------------
2956 
2958  void smDispatch(
2959  Fw::SerialBufferBase& buffer
2960  );
2961 
2963  static void deserializeSmIdAndSignal(
2964  Fw::SerialBufferBase& buffer,
2965  FwEnumStoreType& smId,
2966  FwEnumStoreType& signal
2967  );
2968 
2970  void Svc_FpySequencer_SequencerStateMachine_smDispatch(
2971  Fw::SerialBufferBase& buffer,
2972  Svc_FpySequencer_SequencerStateMachine& sm,
2974  );
2975 
2976  private:
2977 
2978  // ----------------------------------------------------------------------
2979  // Parameter set functions
2980  // ----------------------------------------------------------------------
2981 
2985  Fw::CmdResponse paramSet_STATEMENT_TIMEOUT_SECS(
2986  Fw::SerialBufferBase& val
2987  );
2988 
2992  Fw::CmdResponse paramSet_SEQ_BASE_DIR(
2993  Fw::SerialBufferBase& val
2994  );
2995 
2996  private:
2997 
2998  // ----------------------------------------------------------------------
2999  // Parameter save functions
3000  // ----------------------------------------------------------------------
3001 
3005  Fw::CmdResponse paramSave_STATEMENT_TIMEOUT_SECS();
3006 
3010  Fw::CmdResponse paramSave_SEQ_BASE_DIR();
3011 
3012 #if !FW_DIRECT_PORT_CALLS
3013 
3014  private:
3015 
3016  // ----------------------------------------------------------------------
3017  // Special input ports
3018  // ----------------------------------------------------------------------
3019 
3021  Fw::InputCmdPort m_cmdIn_InputPort[NUM_CMDIN_INPUT_PORTS];
3022 
3023 #endif
3024 
3025 #if !FW_DIRECT_PORT_CALLS
3026 
3027  private:
3028 
3029  // ----------------------------------------------------------------------
3030  // Typed input ports
3031  // ----------------------------------------------------------------------
3032 
3034  Svc::InputSchedPort m_checkTimers_InputPort[NUM_CHECKTIMERS_INPUT_PORTS];
3035 
3037  Fw::InputCmdResponsePort m_cmdResponseIn_InputPort[NUM_CMDRESPONSEIN_INPUT_PORTS];
3038 
3040  Svc::InputPingPort m_pingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
3041 
3044 
3046  Svc::InputCmdSeqInPort m_seqRunIn_InputPort[NUM_SEQRUNIN_INPUT_PORTS];
3047 
3049  Svc::InputSchedPort m_tlmWrite_InputPort[NUM_TLMWRITE_INPUT_PORTS];
3050 
3051 #endif
3052 
3053 #if !FW_DIRECT_PORT_CALLS
3054 
3055  private:
3056 
3057  // ----------------------------------------------------------------------
3058  // Special output ports
3059  // ----------------------------------------------------------------------
3060 
3062  Fw::OutputCmdRegPort m_cmdRegOut_OutputPort[NUM_CMDREGOUT_OUTPUT_PORTS];
3063 
3065  Fw::OutputCmdResponsePort m_cmdResponseOut_OutputPort[NUM_CMDRESPONSEOUT_OUTPUT_PORTS];
3066 
3068  Fw::OutputLogPort m_logOut_OutputPort[NUM_LOGOUT_OUTPUT_PORTS];
3069 
3070 #if FW_ENABLE_TEXT_LOGGING == 1
3071 
3073  Fw::OutputLogTextPort m_logTextOut_OutputPort[NUM_LOGTEXTOUT_OUTPUT_PORTS];
3074 
3075 #endif
3076 
3078  Fw::OutputPrmGetPort m_prmGet_OutputPort[NUM_PRMGET_OUTPUT_PORTS];
3079 
3081  Fw::OutputPrmSetPort m_prmSet_OutputPort[NUM_PRMSET_OUTPUT_PORTS];
3082 
3084  Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
3085 
3087  Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
3088 
3089 #endif
3090 
3091 #if !FW_DIRECT_PORT_CALLS
3092 
3093  private:
3094 
3095  // ----------------------------------------------------------------------
3096  // Typed output ports
3097  // ----------------------------------------------------------------------
3098 
3100  Fw::OutputComPort m_cmdOut_OutputPort[NUM_CMDOUT_OUTPUT_PORTS];
3101 
3103  Fw::OutputPrmGetPort m_getParam_OutputPort[NUM_GETPARAM_OUTPUT_PORTS];
3104 
3106  Fw::OutputTlmGetPort m_getTlmChan_OutputPort[NUM_GETTLMCHAN_OUTPUT_PORTS];
3107 
3109  Svc::OutputPingPort m_pingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
3110 
3112  Fw::OutputCmdResponsePort m_seqDoneOut_OutputPort[NUM_SEQDONEOUT_OUTPUT_PORTS];
3113 
3115  Svc::OutputCmdSeqInPort m_seqStartOut_OutputPort[NUM_SEQSTARTOUT_OUTPUT_PORTS];
3116 
3117 #endif
3118 
3119 #if !FW_DIRECT_PORT_CALLS
3120 
3121  private:
3122 
3123  // ----------------------------------------------------------------------
3124  // Serial output ports
3125  // ----------------------------------------------------------------------
3126 
3128  Fw::OutputSerializePort m_serialOut_OutputPort[NUM_SERIALOUT_OUTPUT_PORTS];
3129 
3130 #endif
3131 
3132  private:
3133 
3134  // ----------------------------------------------------------------------
3135  // First update flags for telemetry channels
3136  // ----------------------------------------------------------------------
3137 
3139  bool m_first_update_State = true;
3140 
3142  bool m_first_update_SequencesSucceeded = true;
3143 
3145  bool m_first_update_SequencesFailed = true;
3146 
3148  bool m_first_update_SequencesCancelled = true;
3149 
3151  bool m_first_update_StatementsDispatched = true;
3152 
3154  bool m_first_update_StatementsFailed = true;
3155 
3157  bool m_first_update_LastDirectiveError = true;
3158 
3160  bool m_first_update_DirectiveErrorIndex = true;
3161 
3163  bool m_first_update_DirectiveErrorId = true;
3164 
3166  bool m_first_update_SeqPath = true;
3167 
3169  bool m_first_update_Debug_ReachedEndOfFile = true;
3170 
3172  bool m_first_update_Debug_NextStatementReadSuccess = true;
3173 
3175  bool m_first_update_Debug_NextStatementOpcode = true;
3176 
3178  bool m_first_update_Debug_NextStatementIndex = true;
3179 
3181  bool m_first_update_Debug_NextCmdOpcode = true;
3182 
3184  bool m_first_update_Debug_StackSize = true;
3185 
3187  bool m_first_update_BreakpointInUse = true;
3188 
3190  bool m_first_update_BreakpointIndex = true;
3191 
3193  bool m_first_update_BreakOnlyOnceOnBreakpoint = true;
3194 
3196  bool m_first_update_BreakBeforeNextLine = true;
3197 
3199  bool m_first_update_PRM_STATEMENT_TIMEOUT_SECS = true;
3200 
3202  bool m_first_update_PRM_SEQ_BASE_DIR = true;
3203 
3204  private:
3205 
3206  // ----------------------------------------------------------------------
3207  // Last value storage for telemetry channels
3208  // ----------------------------------------------------------------------
3209 
3211  FwEnumStoreType m_last_State = {};
3212 
3214  U64 m_last_SequencesSucceeded = {};
3215 
3217  U64 m_last_SequencesFailed = {};
3218 
3220  U64 m_last_SequencesCancelled = {};
3221 
3223  U64 m_last_StatementsDispatched = {};
3224 
3226  U64 m_last_StatementsFailed = {};
3227 
3229  Svc::Fpy::DirectiveErrorCode m_last_LastDirectiveError = {};
3230 
3232  U64 m_last_DirectiveErrorIndex = {};
3233 
3235  Svc::Fpy::DirectiveId m_last_DirectiveErrorId = {};
3236 
3238  Fw::TlmString m_last_SeqPath = {};
3239 
3241  bool m_last_Debug_ReachedEndOfFile = {};
3242 
3244  bool m_last_Debug_NextStatementReadSuccess = {};
3245 
3247  U8 m_last_Debug_NextStatementOpcode = {};
3248 
3250  U32 m_last_Debug_NextStatementIndex = {};
3251 
3253  FwOpcodeType m_last_Debug_NextCmdOpcode = {};
3254 
3256  Svc::Fpy::StackSizeType m_last_Debug_StackSize = {};
3257 
3259  bool m_last_BreakpointInUse = {};
3260 
3262  U32 m_last_BreakpointIndex = {};
3263 
3265  bool m_last_BreakOnlyOnceOnBreakpoint = {};
3266 
3268  bool m_last_BreakBeforeNextLine = {};
3269 
3271  F32 m_last_PRM_STATEMENT_TIMEOUT_SECS = {};
3272 
3274  Fw::TlmString m_last_PRM_SEQ_BASE_DIR = {};
3275 
3276  private:
3277 
3278  // ----------------------------------------------------------------------
3279  // Parameter validity flags
3280  // ----------------------------------------------------------------------
3281 
3283  Fw::ParamValid m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::UNINIT;
3284 
3286  Fw::ParamValid m_param_SEQ_BASE_DIR_valid = Fw::ParamValid::UNINIT;
3287 
3288  private:
3289 
3290  // ----------------------------------------------------------------------
3291  // Parameter variables
3292  // ----------------------------------------------------------------------
3293 
3300  F32 m_STATEMENT_TIMEOUT_SECS;
3301 
3308  Fw::ParamString m_SEQ_BASE_DIR;
3309 
3310  private:
3311 
3312  // ----------------------------------------------------------------------
3313  // State machine instances
3314  // ----------------------------------------------------------------------
3315 
3317  Svc_FpySequencer_SequencerStateMachine m_stateMachine_sequencer;
3318 
3319  private:
3320 
3321  // ----------------------------------------------------------------------
3322  // Mutexes
3323  // ----------------------------------------------------------------------
3324 
3326  Os::Mutex m_paramLock;
3327 
3328  };
3329 
3330 }
3331 
3332 #endif
void cmdOut_out(FwIndexType portNum, Fw::ComBuffer &data, U32 context) const
Invoke output port cmdOut.
void pingOut_out(FwIndexType portNum, U32 key) const
Invoke output port pingOut.
virtual void seqCancelIn_handler(FwIndexType portNum)=0
Handler for input port seqCancelIn.
void sequencer_sendSignal_result_dispatchStatement_noMoreStatements()
Send signal result_dispatchStatement_noMoreStatements to state machine sequencer. ...
sets the index of the next directive to execute
void sequencer_sendSignal_result_checkShouldWake_keepSleeping()
Send signal result_checkShouldWake_keepSleeping to state machine sequencer.
virtual void directive_waitRel_internalInterfaceHandler(const Svc::FpySequencer_WaitRelDirective &directive)=0
Internal interface handler for directive_waitRel.
virtual void DUMP_STACK_TO_FILE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command DUMP_STACK_TO_FILE.
virtual void Svc_FpySequencer_SequencerStateMachine_action_checkStatementTimeout(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_incrementSequenceCounter(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqFailed(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
bool isConnected_getTlmChan_OutputPort(FwIndexType portNum) const
void set_seqStartOut_OutputPort(FwIndexType portNum, Svc::InputCmdSeqInPort *port)
Connect port to seqStartOut[portNum].
void log_WARNING_HI_DirectiveTimedOut(U8 opCode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event DirectiveTimedOut.
virtual void directive_pushPrm_internalInterfaceHandler(const Svc::FpySequencer_PushPrmDirective &directive)=0
Internal interface handler for directive_pushPrm.
virtual void directive_peek_internalInterfaceHandler(const Svc::FpySequencer_PeekDirective &directive)=0
Internal interface handler for directive_peek.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setSequenceFilePath(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_SequenceExecutionArgs &value)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_signalEntered(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const
Log event SequencePaused.
virtual void directive_exit_internalInterfaceHandler(const Svc::FpySequencer_ExitDirective &directive)=0
Internal interface handler for directive_exit.
Fw::InputCmdResponsePort * get_cmdResponseIn_InputPort(FwIndexType portNum)
virtual void seqCancelIn_preMsgHook(FwIndexType portNum)
Pre-message hook for async input port seqCancelIn.
FwIdType FwOpcodeType
The type of a command opcode.
void set_cmdOut_OutputPort(FwIndexType portNum, Fw::InputComPort *port)
Connect port to cmdOut[portNum].
virtual void seqRunIn_handler(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)=0
Handler for input port seqRunIn.
branches based off of the top byte of the stack
void directive_pushVal_internalInterfaceInvoke(const Svc::FpySequencer_PushValDirective &directive)
Internal interface base-class function for directive_pushVal.
void tlmWrite_Debug_NextStatementOpcode(U8 arg, Fw::Time _tlmTime=Fw::Time())
virtual void parametersLoaded()
Called whenever parameters are loaded.
bool isConnected_cmdRegOut_OutputPort(FwIndexType portNum) const
virtual void directive_pushTime_internalInterfaceHandler(const Svc::FpySequencer_PushTimeDirective &directive)=0
Internal interface handler for directive_pushTime.
void log_WARNING_HI_InsufficientBufferSpace(U64 bufferSize, const Fw::StringBase &filePath) const
Log event InsufficientBufferSpace.
static constexpr FwIndexType getNum_seqStartOut_OutputPorts()
bool isConnected_getParam_OutputPort(FwIndexType portNum) const
PlatformSizeType FwSizeType
void directive_popEvent_internalInterfaceInvoke(const Svc::FpySequencer_PopEventDirective &directive)
Internal interface base-class function for directive_popEvent.
stores a value to an absolute address in the stack (for global variables), offset from stack ...
I32 FwEnumStoreType
void CONTINUE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void sequencer_sendSignal_cmd_STEP()
Send signal cmd_STEP to state machine sequencer.
void sequencer_sendSignal_result_dispatchStatement_success()
Send signal result_dispatchStatement_success to state machine sequencer.
virtual void cmdResponseIn_handler(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)=0
Handler for input port cmdResponseIn.
void directive_stackOp_internalInterfaceInvoke(const Svc::FpySequencer_StackOpDirective &directive)
Internal interface base-class function for directive_stackOp.
void log_WARNING_HI_WrongCRC(U32 expected, U32 actual) const
Log event WrongCRC.
void log_WARNING_HI_ArgSizeExceedsCapacity(FwSizeType actual, FwSizeType capacity) const
Log event ArgSizeExceedsCapacity.
void directive_pushTlmVal_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValDirective &directive)
Internal interface base-class function for directive_pushTlmVal.
virtual void CLEAR_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
virtual void parameterUpdated(FwPrmIdType id)
Called whenever a parameter is updated.
virtual void directive_stackCmd_internalInterfaceHandler(const Svc::FpySequencer_StackCmdDirective &directive)=0
Internal interface handler for directive_stackCmd.
void sequencer_sendSignal_cmd_SET_BREAKPOINT(const Svc::FpySequencer_BreakpointArgs &value)
Send signal cmd_SET_BREAKPOINT to state machine sequencer.
virtual void Svc_FpySequencer_SequencerStateMachine_action_sendCmdResponse_OK(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_pushArgsToStack(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void tlmWrite_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port tlmWrite.
void log_WARNING_HI_CommandFailed(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath, const Fw::CmdResponse &response) const
Log event CommandFailed.
virtual void CLEAR_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CLEAR_BREAKPOINT.
static constexpr FwIndexType getNum_cmdIn_InputPorts()
void tlmWrite_Debug_ReachedEndOfFile(bool arg, Fw::Time _tlmTime=Fw::Time())
void RUN_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_popSerializable_internalInterfaceHandler(const Svc::FpySequencer_PopSerializableDirective &directive)=0
Internal interface handler for directive_popSerializable.
void set_seqDoneOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to seqDoneOut[portNum].
FwIdType FwPrmIdType
The type of a parameter identifier.
void set_tlmOut_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
virtual void Svc_FpySequencer_SequencerStateMachine_action_setGoalState_IDLE(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
stores a value to a local variable at a compile-time-known offset relative to the current stack frame...
Fw::SerializeStatus serialOut_out(FwIndexType portNum, Fw::LinearBufferBase &buffer)
Invoke output port serialOut.
virtual void CANCEL_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
Fw::ParamValid getParam_out(FwIndexType portNum, FwPrmIdType id, Fw::ParamBuffer &val) const
Invoke output port getParam.
void STEP_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual bool Svc_FpySequencer_SequencerStateMachine_guard_breakOnce(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal) const =0
static constexpr FwIndexType getNum_pingIn_InputPorts()
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqStarted(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
bool isConnected_prmGet_OutputPort(FwIndexType portNum) const
pop an opcode and arg buf off the stack, send to cmd dispatcher and await response ...
void log_WARNING_HI_SequenceFilePathTooLong(const Fw::StringBase &baseDir, const Fw::StringBase &fileName) const
Log event SequenceFilePathTooLong.
void sequencer_sendSignal_result_checkShouldWake_wakeup()
Send signal result_checkShouldWake_wakeup to state machine sequencer.
friend class FpySequencerTesterBase
Friend class tester to support autocoded test harness.
virtual void directive_goto_internalInterfaceHandler(const Svc::FpySequencer_GotoDirective &directive)=0
Internal interface handler for directive_goto.
void directive_if_internalInterfaceInvoke(const Svc::FpySequencer_IfDirective &directive)
Internal interface base-class function for directive_if.
bool isConnected_prmSet_OutputPort(FwIndexType portNum) const
virtual void RUN_ARGS_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN_ARGS.
virtual void directive_storeRel_internalInterfaceHandler(const Svc::FpySequencer_StoreRelDirective &directive)=0
Internal interface handler for directive_storeRel.
void sequencer_sendSignal_result_success()
Send signal result_success to state machine sequencer.
virtual void RUN_VALIDATED_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Svc::BlockState &block)=0
void cmdResponseIn_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Handler base-class function for input port cmdResponseIn.
void sequencer_sendSignal_stmtResponse_success()
Send signal stmtResponse_success to state machine sequencer.
virtual void VALIDATE_ARGS_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command VALIDATE_ARGS.
virtual ~FpySequencerComponentBase()
Destroy FpySequencerComponentBase object.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setSequenceArguments(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_SequenceExecutionArgs &value)=0
void 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 set_logOut_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to logOut[portNum].
virtual void DUMP_STACK_TO_FILE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void tlmWrite_State(FwEnumStoreType arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_FileApiError(const Fw::StringBase &filePath, I32 errorCode) const
Log event FileApiError.
void tlmWrite_SequencesSucceeded(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const
Log event ExtraBytesInSequence.
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearSequenceFile(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void directive_allocate_internalInterfaceInvoke(const Svc::FpySequencer_AllocateDirective &directive)
Internal interface base-class function for directive_allocate.
pops bytes off the top of the stack and does nothing with them
void directive_storeRelConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive)
Internal interface base-class function for directive_storeRelConstOffset.
static constexpr FwIndexType getNum_timeCaller_OutputPorts()
virtual void seqRunIn_preMsgHook(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)
Pre-message hook for async input port seqRunIn.
void log_DIAGNOSTIC_LogDiagnostic(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogDiagnostic.
void log_COMMAND_LogCommand(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogCommand.
virtual void directive_waitAbs_internalInterfaceHandler(const Svc::FpySequencer_WaitAbsDirective &directive)=0
Internal interface handler for directive_waitAbs.
virtual void pingIn_preMsgHook(FwIndexType portNum, U32 key)
Pre-message hook for async input port pingIn.
virtual void STEP_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void directive_pushTlmValAndTime_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValAndTimeDirective &directive)
Internal interface base-class function for directive_pushTlmValAndTime.
void directive_stackCmd_internalInterfaceInvoke(const Svc::FpySequencer_StackCmdDirective &directive)
Internal interface base-class function for directive_stackCmd.
void cmdIn_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Handler base-class function for input port cmdIn.
void log_WARNING_HI_TooManySequenceDirectives(U16 count, U16 max) const
Log event TooManySequenceDirectives.
void sequencer_sendSignal_stmtResponse_unexpected()
Send signal stmtResponse_unexpected to state machine sequencer.
void sequencer_sendSignal_cmd_BREAK()
Send signal cmd_BREAK to state machine sequencer.
void sequencer_sendSignal_result_dispatchStatement_failure()
Send signal result_dispatchStatement_failure to state machine sequencer.
void log_WARNING_HI_DirectiveDeserializeError(U8 opcode, U32 stmtIdx, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event DirectiveDeserializeError.
virtual void pingIn_handler(FwIndexType portNum, U32 key)=0
Handler for input port pingIn.
Svc::InputSchedPort * get_checkTimers_InputPort(FwIndexType portNum)
virtual void STEP_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command STEP.
void RUN_VALIDATED_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void tlmWrite_PRM_STATEMENT_TIMEOUT_SECS(F32 arg, Fw::Time _tlmTime=Fw::Time())
void init()
Object initializer.
Definition: ObjBase.cpp:24
void set_pingOut_OutputPort(FwIndexType portNum, Svc::InputPingPort *port)
Connect port to pingOut[portNum].
static constexpr FwIndexType getNum_tlmOut_OutputPorts()
void log_ACTIVITY_LO_LogActivityLo(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogActivityLo.
virtual void directive_allocate_internalInterfaceHandler(const Svc::FpySequencer_AllocateDirective &directive)=0
Internal interface handler for directive_allocate.
static constexpr FwIndexType getNum_pingOut_OutputPorts()
SerializeStatus
forward declaration for string
Svc_FpySequencer_SequencerStateMachine::State sequencer_getState() const
Get the state of state machine instance sequencer.
void set_getTlmChan_OutputPort(FwIndexType portNum, Fw::InputTlmGetPort *port)
Connect port to getTlmChan[portNum].
void log_WARNING_HI_SequenceExitedWithError(const Fw::StringBase &filePath, I32 errorCode) const
Log event SequenceExitedWithError.
float F32
32-bit floating point
Definition: BasicTypes.h:84
virtual bool Svc_FpySequencer_SequencerStateMachine_guard_shouldBreak(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal) const =0
void log_WARNING_HI_WrongCmdResponseIndex(FwOpcodeType opcode, const Fw::CmdResponse &response, U16 actualCmdIdx, U16 expectedCmdIdx) const
Log event WrongCmdResponseIndex.
virtual void checkTimers_handler(FwIndexType portNum, U32 context)=0
Handler for input port checkTimers.
static constexpr FwIndexType getNum_getParam_OutputPorts()
static constexpr FwIndexType getNum_cmdRegOut_OutputPorts()
void directive_popSerializable_internalInterfaceInvoke(const Svc::FpySequencer_PopSerializableDirective &directive)
Internal interface base-class function for directive_popSerializable.
virtual void RUN_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, const Svc::BlockState &block)=0
void tlmWrite_StatementsFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
FwIdType FwEventIdType
The type of an event identifier.
loads a value from a local variable at a compile-time-known offset relative to the current stack fram...
void seqCancelIn_handlerBase(FwIndexType portNum)
Handler base-class function for input port seqCancelIn.
void log_ACTIVITY_HI_LogActivityHi(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogActivityHi.
void regCommands()
Register commands with the Command Dispatcher.
void directive_loadAbs_internalInterfaceInvoke(const Svc::FpySequencer_LoadAbsDirective &directive)
Internal interface base-class function for directive_loadAbs.
F32 paramGet_STATEMENT_TIMEOUT_SECS(Fw::ParamValid &valid)
Svc::InputCmdSeqCancelPort * get_seqCancelIn_InputPort(FwIndexType portNum)
void log_WARNING_HI_EndOfFileError(const Svc::FpySequencer_FileReadStage &readStage, const Fw::StringBase &filePath) const
Log event EndOfFileError.
pop two byte arrays off the top of the stack, call memcmp, push 1 if they were equal, 0 otherwise
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
void directive_memCmp_internalInterfaceInvoke(const Svc::FpySequencer_MemCmpDirective &directive)
Internal interface base-class function for directive_memCmp.
pops a severity and message from the stack and emits an F Prime event
void directive_pushTime_internalInterfaceInvoke(const Svc::FpySequencer_PushTimeDirective &directive)
Internal interface base-class function for directive_pushTime.
void tlmWrite_DirectiveErrorId(const Svc::Fpy::DirectiveId &arg, Fw::Time _tlmTime=Fw::Time())
static constexpr FwIndexType getNum_cmdResponseIn_InputPorts()
Svc::InputPingPort * get_pingIn_InputPort(FwIndexType portNum)
void tlmWrite_Debug_NextCmdOpcode(FwOpcodeType arg, Fw::Time _tlmTime=Fw::Time())
void tlmWrite_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port tlmWrite.
void RUN_ARGS_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Base-class handler function for command RUN_ARGS.
virtual void directive_setSeed_internalInterfaceHandler(const Svc::FpySequencer_SetSeedDirective &directive)=0
Internal interface handler for directive_setSeed.
virtual void directive_constCmd_internalInterfaceHandler(const Svc::FpySequencer_ConstCmdDirective &directive)=0
Internal interface handler for directive_constCmd.
Must be called after VALIDATE. Runs the sequence that was validated.
Fw::InputCmdPort * get_cmdIn_InputPort(FwIndexType portNum)
bool isConnected_cmdResponseOut_OutputPort(FwIndexType portNum) const
void tlmWrite_PRM_SEQ_BASE_DIR(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time())
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearSequenceArguments(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void pingIn_handlerBase(FwIndexType portNum, U32 key)
Handler base-class function for input port pingIn.
stores a value to an absolute address in the stack (for global variables), const offset ...
void set_timeCaller_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
friend class FpySequencerTester
Test implementation for the enclosing component.
virtual void Svc_FpySequencer_SequencerStateMachine_action_dispatchStatement(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void directive_pushVal_internalInterfaceHandler(const Svc::FpySequencer_PushValDirective &directive)=0
Internal interface handler for directive_pushVal.
void sequencer_sendSignal_cmd_RUN_VALIDATED(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_RUN_VALIDATED to state machine sequencer.
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearBreakpoint(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void BREAK_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
Svc_FpySequencer_SequencerStateMachine(FpySequencerComponentBase &component)
Constructor.
FwIdType FwChanIdType
The type of a telemetry channel identifier.
void log_WARNING_HI_FileReadError(const Svc::FpySequencer_FileReadStage &readStage, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileReadError.
void set_cmdResponseOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to cmdResponseOut[portNum].
Sequencer blocking state.
FpySequencerComponentBase(const char *compName="")
Construct FpySequencerComponentBase object.
virtual void directive_call_internalInterfaceHandler(const Svc::FpySequencer_CallDirective &directive)=0
Internal interface handler for directive_call.
virtual void CONTINUE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void sequencer_sendSignal_checkTimersIn()
Send signal checkTimersIn to state machine sequencer.
void tlmWrite_StatementsDispatched(U64 arg, Fw::Time _tlmTime=Fw::Time())
void tlmWrite_LastDirectiveError(const Svc::Fpy::DirectiveErrorCode &arg, Fw::Time _tlmTime=Fw::Time())
void VALIDATE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_discard_internalInterfaceHandler(const Svc::FpySequencer_DiscardDirective &directive)=0
Internal interface handler for directive_discard.
void VALIDATE_ARGS_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
static constexpr FwIndexType getNum_prmSet_OutputPorts()
void log_WARNING_HI_LogWarningHi(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogWarningHi.
Implementation of state machine Svc_FpySequencer_SequencerStateMachine.
peeks at N bytes from the stack, starting from an offset relative to the top of the stack ...
void sequencer_sendSignal_stmtResponse_failure()
Send signal stmtResponse_failure to state machine sequencer.
void CANCEL_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void directive_waitAbs_internalInterfaceInvoke(const Svc::FpySequencer_WaitAbsDirective &directive)
Internal interface base-class function for directive_waitAbs.
void directive_peek_internalInterfaceInvoke(const Svc::FpySequencer_PeekDirective &directive)
Internal interface base-class function for directive_peek.
void set_cmdRegOut_OutputPort(FwIndexType portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void tlmWrite_Debug_NextStatementIndex(U32 arg, Fw::Time _tlmTime=Fw::Time())
void sequencer_sendSignal_stmtResponse_beginSleep()
Send signal stmtResponse_beginSleep to state machine sequencer.
void log_WARNING_HI_CmdResponseWhileNotAwaiting(FwOpcodeType opcode, const Fw::CmdResponse &response) const
Log event CmdResponseWhileNotAwaiting.
void log_WARNING_HI_CommandTimedOut(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event CommandTimedOut.
void sequencer_sendSignal_result_checkStatementTimeout_noTimeout()
Send signal result_checkStatementTimeout_noTimeout to state machine sequencer.
Enum representing event severity.
static constexpr FwIndexType getNum_seqRunIn_InputPorts()
virtual void tlmWrite_handler(FwIndexType portNum, U32 context)=0
Handler for input port tlmWrite.
Svc::InputCmdSeqInPort * get_seqRunIn_InputPort(FwIndexType portNum)
virtual void directive_memCmp_internalInterfaceHandler(const Svc::FpySequencer_MemCmpDirective &directive)=0
Internal interface handler for directive_memCmp.
void loadParameters()
Load the parameters from a parameter source.
virtual void Svc_FpySequencer_SequencerStateMachine_action_sendCmdResponse_EXECUTION_ERROR(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void log_WARNING_HI_InvalidSeqRunCall(I32 state) const
Log event InvalidSeqRunCall.
virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective &directive)=0
Internal interface handler for directive_if.
void directive_getField_internalInterfaceInvoke(const Svc::FpySequencer_GetFieldDirective &directive)
Internal interface base-class function for directive_getField.
static constexpr FwIndexType getNum_cmdOut_OutputPorts()
virtual void Svc_FpySequencer_SequencerStateMachine_action_setGoalState_VALID(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
sleeps for a relative duration from the current time
void seqDoneOut_out(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response) const
Invoke output port seqDoneOut.
virtual void directive_storeRelConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive)=0
Internal interface handler for directive_storeRelConstOffset.
void directive_discard_internalInterfaceInvoke(const Svc::FpySequencer_DiscardDirective &directive)
Internal interface base-class function for directive_discard.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:54
bool isConnected_serialOut_OutputPort(FwIndexType portNum) const
virtual void directive_noOp_internalInterfaceHandler(const Svc::FpySequencer_NoOpDirective &directive)=0
Internal interface handler for directive_noOp.
void log_ACTIVITY_HI_BreakpointSet(U32 breakpointIdx, bool breakOnce) const
Log event BreakpointSet.
void directive_pushPrm_internalInterfaceInvoke(const Svc::FpySequencer_PushPrmDirective &directive)
Internal interface base-class function for directive_pushPrm.
void sequencer_sendSignal_result_timeOpFailed()
Send signal result_timeOpFailed to state machine sequencer.
void BREAK_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void log_WARNING_HI_FileOpenError(const Fw::StringBase &filePath, I32 errorCode) const
Log event FileOpenError.
void init(FpySequencerComponentBase::SmId smId)
Initialize the state machine.
void set_prmSet_OutputPort(FwIndexType portNum, Fw::InputPrmSetPort *port)
Connect port to prmSet[portNum].
virtual void Svc_FpySequencer_SequencerStateMachine_action_setSequenceBlockState(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_SequenceExecutionArgs &value)=0
void sequencer_sendSignal_cmd_CANCEL()
Send signal cmd_CANCEL to state machine sequencer.
void sequencer_sendSignal_result_checkStatementTimeout_statementTimeout()
Send signal result_checkStatementTimeout_statementTimeout to state machine sequencer.
static constexpr FwIndexType getNum_cmdResponseOut_OutputPorts()
void sequencer_sendSignal_stmtResponse_keepWaiting()
Send signal stmtResponse_keepWaiting to state machine sequencer.
bool isConnected_tlmOut_OutputPort(FwIndexType portNum) const
virtual void Svc_FpySequencer_SequencerStateMachine_action_resetRuntime(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void log_WARNING_HI_InvalidCommand(I32 state) const
Log event InvalidCommand.
void tlmWrite_BreakBeforeNextLine(bool arg, Fw::Time _tlmTime=Fw::Time())
virtual void directive_storeAbs_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsDirective &directive)=0
Internal interface handler for directive_storeAbs.
bool isConnected_logOut_OutputPort(FwIndexType portNum) const
void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase &filePath) const
Log event SequenceCancelled.
virtual void RUN_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN.
void log_ACTIVITY_HI_BreakpointCleared() const
Log event BreakpointCleared.
void log_WARNING_HI_ArgTotalSizeExceedsStackLimit(Svc::Fpy::StackSizeType argSize) const
Log event ArgTotalSizeExceedsStackLimit.
static constexpr FwIndexType getNum_getTlmChan_OutputPorts()
void directive_pushRand_internalInterfaceInvoke(const Svc::FpySequencer_PushRandDirective &directive)
Internal interface base-class function for directive_pushRand.
virtual void directive_getField_internalInterfaceHandler(const Svc::FpySequencer_GetFieldDirective &directive)=0
Internal interface handler for directive_getField.
virtual void directive_loadRel_internalInterfaceHandler(const Svc::FpySequencer_LoadRelDirective &directive)=0
Internal interface handler for directive_loadRel.
Fw::ParamString paramGet_SEQ_BASE_DIR(Fw::ParamValid &valid)
bool isConnected_timeCaller_OutputPort(FwIndexType portNum) const
void tlmWrite_SequencesFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
void directive_setSeed_internalInterfaceInvoke(const Svc::FpySequencer_SetSeedDirective &directive)
Internal interface base-class function for directive_setSeed.
loads a value from an absolute address in the stack (for global variables)
virtual void directive_pushRand_internalInterfaceHandler(const Svc::FpySequencer_PushRandDirective &directive)=0
Internal interface handler for directive_pushRand.
void tlmWrite_SeqPath(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time())
virtual void SET_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SET_BREAKPOINT.
PlatformIndexType FwIndexType
void directive_constCmd_internalInterfaceInvoke(const Svc::FpySequencer_ConstCmdDirective &directive)
Internal interface base-class function for directive_constCmd.
virtual void VALIDATE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command VALIDATE.
static constexpr FwIndexType getNum_checkTimers_InputPorts()
static constexpr FwIndexType getNum_serialOut_OutputPorts()
pops a U32 from the stack and uses it to seed the RNG used by PushRandDirective
bool isConnected_pingOut_OutputPort(FwIndexType portNum) const
pops serialized data from stack and sends to serial output port
void log_WARNING_HI_MismatchedTimeContext(I32 internalTimeContext, I32 otherTimeContext) const
Log event MismatchedTimeContext.
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearBreakBeforeNextLine(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void directive_return_internalInterfaceInvoke(const Svc::FpySequencer_ReturnDirective &directive)
Internal interface base-class function for directive_return.
bool isConnected_cmdOut_OutputPort(FwIndexType portNum) const
Svc::InputSchedPort * get_tlmWrite_InputPort(FwIndexType portNum)
void seqRunIn_handlerBase(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)
Handler base-class function for input port seqRunIn.
void log_WARNING_HI_WrongSchemaVersion(U8 expected, U8 actual) const
Log event WrongSchemaVersion.
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqBroken(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void Svc_FpySequencer_SequencerStateMachine_action_setBreakBeforeNextLine(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void sequencer_sendSignal_cmd_CLEAR_BREAKPOINT()
Send signal cmd_CLEAR_BREAKPOINT to state machine sequencer.
void log_WARNING_LO_LogWarningLo(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogWarningLo.
Svc::FpySequencer_SequencerStateMachine_State State
The state type.
void log_WARNING_HI_UnknownSequencerDirective(U8 opcode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event UnknownSequencerDirective.
Loads, validates and runs a sequence.
virtual void VALIDATE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void log_WARNING_HI_CmdResponseWhileAwaitingDirective(FwOpcodeType opcode, const Fw::CmdResponse &response, U8 expectedDirectiveOpcode) const
Log event CmdResponseWhileAwaitingDirective.
void log_WARNING_HI_InvalidSeqCancelCall(I32 state) const
Log event InvalidSeqCancelCall.
stores a value to a local variable at a runtime-determined offset relative to the current stack frame...
virtual void directive_return_internalInterfaceHandler(const Svc::FpySequencer_ReturnDirective &directive)=0
Internal interface handler for directive_return.
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqSucceeded(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void BREAK_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command BREAK.
void tlmWrite_DirectiveErrorIndex(U64 arg, Fw::Time _tlmTime=Fw::Time())
RateGroupDivider component implementation.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setGoalState_RUNNING(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void cmdResponseIn_preMsgHook(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Pre-message hook for async input port cmdResponseIn.
Enum representing parameter validity.
virtual void directive_popEvent_internalInterfaceHandler(const Svc::FpySequencer_PopEventDirective &directive)=0
Internal interface handler for directive_popEvent.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setBreakpoint(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_BreakpointArgs &value)=0
void log_FATAL_LogFatal(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogFatal.
virtual void VALIDATE_ARGS_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, const Svc::SeqArgs &buffer)=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.
void log_WARNING_LO_CmdResponseWhileNotRunningSequence(I32 state, FwOpcodeType opcode, const Fw::CmdResponse &response) const
Log event CmdResponseWhileNotRunningSequence.
bool isConnected_seqStartOut_OutputPort(FwIndexType portNum) const
virtual void RUN_ARGS_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, const Svc::BlockState &block, const Svc::SeqArgs &buffer)=0
Handler for command RUN_ARGS.
virtual void CONTINUE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CONTINUE.
void log_WARNING_HI_ArgSizeMismatch(Svc::Fpy::StackSizeType expected, FwSizeType actual, const Fw::StringBase &filePath) const
Log event ArgSizeMismatch.
virtual void checkTimers_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port checkTimers.
void seqStartOut_out(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args) const
Invoke output port seqStartOut.
void sequencer_sendSignal_entered()
Send signal entered to state machine sequencer.
void directive_call_internalInterfaceInvoke(const Svc::FpySequencer_CallDirective &directive)
Internal interface base-class function for directive_call.
void directive_exit_internalInterfaceInvoke(const Svc::FpySequencer_ExitDirective &directive)
Internal interface base-class function for directive_exit.
virtual void Svc_FpySequencer_SequencerStateMachine_action_checkShouldWake(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
void log_WARNING_HI_WrongCmdResponseOpcode(FwOpcodeType opcode, const Fw::CmdResponse &response, FwOpcodeType expectedOpcode) const
Log event WrongCmdResponseOpcode.
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()
Loads and validates a sequence with arguments.
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 log_WARNING_HI_FileReadDeserializeError(const Svc::FpySequencer_FileReadStage &readStage, const Fw::StringBase &filePath, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event FileReadDeserializeError.
void log_WARNING_LO_CmdResponseFromOldSequence(FwOpcodeType opcode, const Fw::CmdResponse &response, U16 oldSequenceIdx, U16 currentSequenceIdx) const
Log event CmdResponseFromOldSequence.
void checkTimers_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port checkTimers.
static constexpr FwIndexType getNum_prmGet_OutputPorts()
static constexpr FwIndexType getNum_seqCancelIn_InputPorts()
virtual void CANCEL_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CANCEL.
void tlmWrite_BreakOnlyOnceOnBreakpoint(bool arg, Fw::Time _tlmTime=Fw::Time())
Fw::TlmValid getTlmChan_out(FwIndexType portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke output port getTlmChan.
void tlmWrite_SequencesCancelled(U64 arg, Fw::Time _tlmTime=Fw::Time())
virtual void directive_loadAbs_internalInterfaceHandler(const Svc::FpySequencer_LoadAbsDirective &directive)=0
Internal interface handler for directive_loadAbs.
void tlmWrite_BreakpointInUse(bool arg, Fw::Time _tlmTime=Fw::Time())
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqCancelled(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
bool isConnected_seqDoneOut_OutputPort(FwIndexType portNum) const
friend class FpySequencerTesterBase
Autocoded test harness for the enclosing component.
void set_prmGet_OutputPort(FwIndexType portNum, Fw::InputPrmGetPort *port)
Connect port to prmGet[portNum].
void set_getParam_OutputPort(FwIndexType portNum, Fw::InputPrmGetPort *port)
Connect port to getParam[portNum].
void CLEAR_BREAKPOINT_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
U32 StackSizeType
the type which everything referencing a size or offset on the stack is represented in ...
void tlmWrite(FwChanIdType id, Fw::TlmBuffer &_tlmBuff, Fw::Time _tlmTime=Fw::Time()) const
#define FW_PORT_SERIALIZATION
calls for multi-note systems)
Definition: FpConfig.h:83
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())