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 {
242  };
243 
245  enum {
268  };
269 
271  enum {
273  PARAMID_SEQ_BASE_DIR = 0x1,
277  };
281 
283  enum class SmId : FwEnumStoreType {
284  sequencer,
285  };
286 
287  protected:
288 
289  // ----------------------------------------------------------------------
290  // Types for internal state machines
291  // ----------------------------------------------------------------------
292 
296  {
297 
298  // ----------------------------------------------------------------------
299  // Friend classes
300  // ----------------------------------------------------------------------
301 
305  friend class FpySequencerTester;
306 
307  public:
308 
311  FpySequencerComponentBase& component
312  );
313 
314  public:
315 
317  void init(
319  );
320 
321  public:
322 
325 
326  private:
327 
329  void action_signalEntered(
330  Signal signal
331  );
332 
334  void action_setSequenceFilePath(
335  Signal signal,
337  );
338 
340  void action_setSequenceBlockState(
341  Signal signal,
343  );
344 
346  void action_setSequenceArguments(
347  Signal signal,
349  );
350 
352  void action_validate(
353  Signal signal
354  );
355 
357  void action_report_seqSucceeded(
358  Signal signal
359  );
360 
362  void action_report_seqCancelled(
363  Signal signal
364  );
365 
367  void action_report_seqFailed(
368  Signal signal
369  );
370 
372  void action_report_seqStarted(
373  Signal signal
374  );
375 
377  void action_setGoalState_RUNNING(
378  Signal signal
379  );
380 
382  void action_setGoalState_VALID(
383  Signal signal
384  );
385 
387  void action_setGoalState_IDLE(
388  Signal signal
389  );
390 
392  void action_sendCmdResponse_OK(
393  Signal signal
394  );
395 
397  void action_sendCmdResponse_EXECUTION_ERROR(
398  Signal signal
399  );
400 
402  void action_clearSequenceFile(
403  Signal signal
404  );
405 
407  void action_clearBreakpoint(
408  Signal signal
409  );
410 
412  void action_clearSequenceArguments(
413  Signal signal
414  );
415 
417  void action_checkShouldWake(
418  Signal signal
419  );
420 
422  void action_dispatchStatement(
423  Signal signal
424  );
425 
427  void action_resetRuntime(
428  Signal signal
429  );
430 
432  void action_checkStatementTimeout(
433  Signal signal
434  );
435 
437  void action_incrementSequenceCounter(
438  Signal signal
439  );
440 
442  void action_pushArgsToStack(
443  Signal signal
444  );
445 
447  void action_report_seqBroken(
448  Signal signal
449  );
450 
452  void action_setBreakpoint(
453  Signal signal,
455  );
456 
458  void action_setBreakBeforeNextLine(
459  Signal signal
460  );
461 
463  void action_clearBreakBeforeNextLine(
464  Signal signal
465  );
466 
467  private:
468 
470  bool guard_goalStateIs_RUNNING(
471  Signal signal
472  ) const;
473 
475  bool guard_shouldBreak(
476  Signal signal
477  ) const;
478 
480  bool guard_breakOnce(
481  Signal signal
482  ) const;
483 
484  private:
485 
487  FpySequencerComponentBase& m_component;
488 
489  };
490 
491  public:
492 
493  // ----------------------------------------------------------------------
494  // Component initialization
495  // ----------------------------------------------------------------------
496 
498  void init(
499  FwSizeType queueDepth,
500  FwEnumStoreType instance = 0
501  );
502 
503 #if !FW_DIRECT_PORT_CALLS
504 
505  public:
506 
507  // ----------------------------------------------------------------------
508  // Getters for special input ports
509  // ----------------------------------------------------------------------
510 
515  FwIndexType portNum
516  );
517 
518 #endif
519 
520 #if !FW_DIRECT_PORT_CALLS
521 
522  public:
523 
524  // ----------------------------------------------------------------------
525  // Getters for typed input ports
526  // ----------------------------------------------------------------------
527 
532  FwIndexType portNum
533  );
534 
539  FwIndexType portNum
540  );
541 
546  FwIndexType portNum
547  );
548 
553  FwIndexType portNum
554  );
555 
560  FwIndexType portNum
561  );
562 
567  FwIndexType portNum
568  );
569 
570 #endif
571 
572 #if !FW_DIRECT_PORT_CALLS
573 
574  public:
575 
576  // ----------------------------------------------------------------------
577  // Connect input ports to special output ports
578  // ----------------------------------------------------------------------
579 
582  FwIndexType portNum,
583  Fw::InputCmdRegPort* port
584  );
585 
588  FwIndexType portNum,
590  );
591 
594  FwIndexType portNum,
595  Fw::InputLogPort* port
596  );
597 
598 #if FW_ENABLE_TEXT_LOGGING == 1
599 
601  void set_logTextOut_OutputPort(
602  FwIndexType portNum,
603  Fw::InputLogTextPort* port
604  );
605 
606 #endif
607 
610  FwIndexType portNum,
611  Fw::InputPrmGetPort* port
612  );
613 
616  FwIndexType portNum,
617  Fw::InputPrmSetPort* port
618  );
619 
622  FwIndexType portNum,
623  Fw::InputTimePort* port
624  );
625 
628  FwIndexType portNum,
629  Fw::InputTlmPort* port
630  );
631 
632 #endif
633 
634 #if !FW_DIRECT_PORT_CALLS
635 
636  public:
637 
638  // ----------------------------------------------------------------------
639  // Connect typed input ports to typed output ports
640  // ----------------------------------------------------------------------
641 
644  FwIndexType portNum,
645  Fw::InputComPort* port
646  );
647 
650  FwIndexType portNum,
651  Fw::InputPrmGetPort* port
652  );
653 
656  FwIndexType portNum,
657  Fw::InputTlmGetPort* port
658  );
659 
662  FwIndexType portNum,
663  Svc::InputPingPort* port
664  );
665 
668  FwIndexType portNum,
670  );
671 
674  FwIndexType portNum,
676  );
677 
678 #endif
679 
680 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
681 
682  public:
683 
684  // ----------------------------------------------------------------------
685  // Connect serial input ports to special output ports
686  // ----------------------------------------------------------------------
687 
690  FwIndexType portNum,
691  Fw::InputSerializePort* port
692  );
693 
696  FwIndexType portNum,
697  Fw::InputSerializePort* port
698  );
699 
702  FwIndexType portNum,
703  Fw::InputSerializePort* port
704  );
705 
706 #if FW_ENABLE_TEXT_LOGGING == 1
707 
709  void set_logTextOut_OutputPort(
710  FwIndexType portNum,
711  Fw::InputSerializePort* port
712  );
713 
714 #endif
715 
718  FwIndexType portNum,
719  Fw::InputSerializePort* port
720  );
721 
724  FwIndexType portNum,
725  Fw::InputSerializePort* port
726  );
727 
730  FwIndexType portNum,
731  Fw::InputSerializePort* port
732  );
733 
734 #endif
735 
736 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
737 
738  public:
739 
740  // ----------------------------------------------------------------------
741  // Connect serial input ports to typed output ports
742  // ----------------------------------------------------------------------
743 
746  FwIndexType portNum,
747  Fw::InputSerializePort* port
748  );
749 
752  FwIndexType portNum,
753  Fw::InputSerializePort* port
754  );
755 
758  FwIndexType portNum,
759  Fw::InputSerializePort* port
760  );
761 
764  FwIndexType portNum,
765  Fw::InputSerializePort* port
766  );
767 
768 #endif
769 
770 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
771 
772  public:
773 
774  // ----------------------------------------------------------------------
775  // Connect typed and serial input ports to serial output ports
776  // ----------------------------------------------------------------------
777 
779  void set_serialOut_OutputPort(
780  FwIndexType portNum,
781  Fw::InputPortBase* port
782  );
783 
784 #endif
785 
786  public:
787 
788  // ----------------------------------------------------------------------
789  // Command registration
790  // ----------------------------------------------------------------------
791 
795  void regCommands();
796 
797  public:
798 
799  // ----------------------------------------------------------------------
800  // Parameter loading
801  // ----------------------------------------------------------------------
802 
806  void loadParameters();
807 
808  protected:
809 
810  // ----------------------------------------------------------------------
811  // Component construction and destruction
812  // ----------------------------------------------------------------------
813 
816  const char* compName = ""
817  );
818 
820  virtual ~FpySequencerComponentBase();
821 
822  protected:
823 
824  // ----------------------------------------------------------------------
825  // Getters for numbers of special input ports
826  // ----------------------------------------------------------------------
827 
832  return NUM_CMDIN_INPUT_PORTS;
833  }
834 
835  protected:
836 
837  // ----------------------------------------------------------------------
838  // Getters for numbers of typed input ports
839  // ----------------------------------------------------------------------
840 
846  }
847 
853  }
854 
859  return NUM_PINGIN_INPUT_PORTS;
860  }
861 
867  }
868 
874  }
875 
881  }
882 
883  protected:
884 
885  // ----------------------------------------------------------------------
886  // Getters for numbers of special output ports
887  // ----------------------------------------------------------------------
888 
894  }
895 
901  }
902 
908  }
909 
910 #if FW_ENABLE_TEXT_LOGGING == 1
911 
915  static constexpr FwIndexType getNum_logTextOut_OutputPorts() {
917  }
918 
919 #endif
920 
926  }
927 
933  }
934 
940  }
941 
947  }
948 
949  protected:
950 
951  // ----------------------------------------------------------------------
952  // Getters for numbers of typed output ports
953  // ----------------------------------------------------------------------
954 
960  }
961 
967  }
968 
974  }
975 
981  }
982 
988  }
989 
995  }
996 
997  protected:
998 
999  // ----------------------------------------------------------------------
1000  // Getters for numbers of serial output ports
1001  // ----------------------------------------------------------------------
1002 
1008  }
1009 
1010  protected:
1011 
1012  // ----------------------------------------------------------------------
1013  // Connection status queries for special output ports
1014  // ----------------------------------------------------------------------
1015 
1020  FwIndexType portNum
1021  ) const;
1022 
1027  FwIndexType portNum
1028  ) const;
1029 
1034  FwIndexType portNum
1035  ) const;
1036 
1037 #if FW_ENABLE_TEXT_LOGGING == 1
1038 
1042  bool isConnected_logTextOut_OutputPort(
1043  FwIndexType portNum
1044  ) const;
1045 
1046 #endif
1047 
1052  FwIndexType portNum
1053  ) const;
1054 
1059  FwIndexType portNum
1060  ) const;
1061 
1066  FwIndexType portNum
1067  ) const;
1068 
1073  FwIndexType portNum
1074  ) const;
1075 
1076  protected:
1077 
1078  // ----------------------------------------------------------------------
1079  // Connection status queries for typed output ports
1080  // ----------------------------------------------------------------------
1081 
1086  FwIndexType portNum
1087  ) const;
1088 
1093  FwIndexType portNum
1094  ) const;
1095 
1100  FwIndexType portNum
1101  ) const;
1102 
1107  FwIndexType portNum
1108  ) const;
1109 
1114  FwIndexType portNum
1115  ) const;
1116 
1121  FwIndexType portNum
1122  ) const;
1123 
1124  protected:
1125 
1126  // ----------------------------------------------------------------------
1127  // Connection status queries for serial output ports
1128  // ----------------------------------------------------------------------
1129 
1134  FwIndexType portNum
1135  ) const;
1136 
1137 #if FW_DIRECT_PORT_CALLS
1138  public:
1139 #else
1140  protected:
1141 #endif
1142 
1143  // ----------------------------------------------------------------------
1144  // Port handler base-class functions for special input ports
1145  //
1146  // Call these functions directly to bypass the corresponding ports
1147  // ----------------------------------------------------------------------
1148 
1150  void cmdIn_handlerBase(
1151  FwIndexType portNum,
1152  FwOpcodeType opCode,
1153  U32 cmdSeq,
1154  Fw::CmdArgBuffer& args
1155  );
1156 
1157  protected:
1158 
1159  // ----------------------------------------------------------------------
1160  // Handlers to implement for typed input ports
1161  // ----------------------------------------------------------------------
1162 
1164  virtual void checkTimers_handler(
1165  FwIndexType portNum,
1166  U32 context
1167  ) = 0;
1168 
1170  virtual void cmdResponseIn_handler(
1171  FwIndexType portNum,
1172  FwOpcodeType opCode,
1173  U32 cmdSeq,
1174  const Fw::CmdResponse& response
1175  ) = 0;
1176 
1178  virtual void pingIn_handler(
1179  FwIndexType portNum,
1180  U32 key
1181  ) = 0;
1182 
1184  virtual void seqCancelIn_handler(
1185  FwIndexType portNum
1186  ) = 0;
1187 
1189  virtual void seqRunIn_handler(
1190  FwIndexType portNum,
1191  const Fw::StringBase& filename,
1192  const Svc::SeqArgs& args
1193  ) = 0;
1194 
1196  virtual void tlmWrite_handler(
1197  FwIndexType portNum,
1198  U32 context
1199  ) = 0;
1200 
1201 #if FW_DIRECT_PORT_CALLS
1202  public:
1203 #else
1204  protected:
1205 #endif
1206 
1207  // ----------------------------------------------------------------------
1208  // Port handler base-class functions for typed input ports
1209  //
1210  // Call these functions directly to bypass the corresponding ports
1211  // ----------------------------------------------------------------------
1212 
1215  FwIndexType portNum,
1216  U32 context
1217  );
1218 
1221  FwIndexType portNum,
1222  FwOpcodeType opCode,
1223  U32 cmdSeq,
1224  const Fw::CmdResponse& response
1225  );
1226 
1228  void pingIn_handlerBase(
1229  FwIndexType portNum,
1230  U32 key
1231  );
1232 
1235  FwIndexType portNum
1236  );
1237 
1239  void seqRunIn_handlerBase(
1240  FwIndexType portNum,
1241  const Fw::StringBase& filename,
1242  const Svc::SeqArgs& args
1243  );
1244 
1246  void tlmWrite_handlerBase(
1247  FwIndexType portNum,
1248  U32 context
1249  );
1250 
1251  protected:
1252 
1253  // ----------------------------------------------------------------------
1254  // Pre-message hooks for typed async input ports
1255  //
1256  // Each of these functions is invoked just before processing a message
1257  // on the corresponding port. By default, they do nothing. You can
1258  // override them to provide specific pre-message behavior.
1259  // ----------------------------------------------------------------------
1260 
1262  virtual void cmdResponseIn_preMsgHook(
1263  FwIndexType portNum,
1264  FwOpcodeType opCode,
1265  U32 cmdSeq,
1266  const Fw::CmdResponse& response
1267  );
1268 
1270  virtual void pingIn_preMsgHook(
1271  FwIndexType portNum,
1272  U32 key
1273  );
1274 
1276  virtual void seqCancelIn_preMsgHook(
1277  FwIndexType portNum
1278  );
1279 
1281  virtual void seqRunIn_preMsgHook(
1282  FwIndexType portNum,
1283  const Fw::StringBase& filename,
1284  const Svc::SeqArgs& args
1285  );
1286 
1287  protected:
1288 
1289  // ----------------------------------------------------------------------
1290  // Invocation functions for typed output ports
1291  // ----------------------------------------------------------------------
1292 
1294  void cmdOut_out(
1295  FwIndexType portNum,
1296  Fw::ComBuffer& data,
1297  U32 context
1298  ) const;
1299 
1302  FwIndexType portNum,
1303  FwPrmIdType id,
1304  Fw::ParamBuffer& val
1305  ) const;
1307 
1310  FwIndexType portNum,
1311  FwChanIdType id,
1312  Fw::Time& timeTag,
1313  Fw::TlmBuffer& val
1314  ) const;
1317 
1319  void pingOut_out(
1320  FwIndexType portNum,
1321  U32 key
1322  ) const;
1323 
1325  void seqDoneOut_out(
1326  FwIndexType portNum,
1327  FwOpcodeType opCode,
1328  U32 cmdSeq,
1329  const Fw::CmdResponse& response
1330  ) const;
1331 
1333  void seqStartOut_out(
1334  FwIndexType portNum,
1335  const Fw::StringBase& filename,
1336  const Svc::SeqArgs& args
1337  ) const;
1338 
1339  protected:
1340 
1341  // ----------------------------------------------------------------------
1342  // Invocation functions for serial output ports
1343  // ----------------------------------------------------------------------
1344 
1347  FwIndexType portNum,
1348  Fw::LinearBufferBase& buffer
1349  );
1350 
1351  protected:
1352 
1353  // ----------------------------------------------------------------------
1354  // Hooks for internal ports
1355  //
1356  // Each of these functions is invoked just before dropping a message
1357  // on the corresponding internal port. You should override them to provide
1358  // specific drop behavior.
1359  // ----------------------------------------------------------------------
1360 
1362  virtual void tlmWriteInternal_overflowHook() = 0;
1363 
1364  protected:
1365 
1366  // ----------------------------------------------------------------------
1367  // Internal interface handlers
1368  // ----------------------------------------------------------------------
1369 
1372 
1375  const Svc::FpySequencer_AllocateDirective& directive,
1376  U64 sequenceIndex
1377  ) = 0;
1378 
1381  const Svc::FpySequencer_CallDirective& directive,
1382  U64 sequenceIndex
1383  ) = 0;
1384 
1387  const Svc::FpySequencer_ConstCmdDirective& directive,
1388  U64 sequenceIndex
1389  ) = 0;
1390 
1393  const Svc::FpySequencer_DiscardDirective& directive,
1394  U64 sequenceIndex
1395  ) = 0;
1396 
1399  const Svc::FpySequencer_ExitDirective& directive,
1400  U64 sequenceIndex
1401  ) = 0;
1402 
1405  const Svc::FpySequencer_GetFieldDirective& directive,
1406  U64 sequenceIndex
1407  ) = 0;
1408 
1411  const Svc::FpySequencer_GotoDirective& directive,
1412  U64 sequenceIndex
1413  ) = 0;
1414 
1417  const Svc::FpySequencer_IfDirective& directive,
1418  U64 sequenceIndex
1419  ) = 0;
1420 
1423  const Svc::FpySequencer_LoadAbsDirective& directive,
1424  U64 sequenceIndex
1425  ) = 0;
1426 
1429  const Svc::FpySequencer_LoadRelDirective& directive,
1430  U64 sequenceIndex
1431  ) = 0;
1432 
1435  const Svc::FpySequencer_MemCmpDirective& directive,
1436  U64 sequenceIndex
1437  ) = 0;
1438 
1441  const Svc::FpySequencer_NoOpDirective& directive,
1442  U64 sequenceIndex
1443  ) = 0;
1444 
1447  const Svc::FpySequencer_PeekDirective& directive,
1448  U64 sequenceIndex
1449  ) = 0;
1450 
1453  const Svc::FpySequencer_PopEventDirective& directive,
1454  U64 sequenceIndex
1455  ) = 0;
1456 
1460  U64 sequenceIndex
1461  ) = 0;
1462 
1465  const Svc::FpySequencer_PushPrmDirective& directive,
1466  U64 sequenceIndex
1467  ) = 0;
1468 
1471  const Svc::FpySequencer_PushRandDirective& directive,
1472  U64 sequenceIndex
1473  ) = 0;
1474 
1477  const Svc::FpySequencer_PushTimeDirective& directive,
1478  U64 sequenceIndex
1479  ) = 0;
1480 
1483  const Svc::FpySequencer_PushTlmValDirective& directive,
1484  U64 sequenceIndex
1485  ) = 0;
1486 
1490  U64 sequenceIndex
1491  ) = 0;
1492 
1495  const Svc::FpySequencer_PushValDirective& directive,
1496  U64 sequenceIndex
1497  ) = 0;
1498 
1501  const Svc::FpySequencer_ReturnDirective& directive,
1502  U64 sequenceIndex
1503  ) = 0;
1504 
1507  const Svc::FpySequencer_SetSeedDirective& directive,
1508  U64 sequenceIndex
1509  ) = 0;
1510 
1513  const Svc::FpySequencer_StackCmdDirective& directive,
1514  U64 sequenceIndex
1515  ) = 0;
1516 
1519  const Svc::FpySequencer_StackOpDirective& directive,
1520  U64 sequenceIndex
1521  ) = 0;
1522 
1525  const Svc::FpySequencer_StoreAbsDirective& directive,
1526  U64 sequenceIndex
1527  ) = 0;
1528 
1532  U64 sequenceIndex
1533  ) = 0;
1534 
1537  const Svc::FpySequencer_StoreRelDirective& directive,
1538  U64 sequenceIndex
1539  ) = 0;
1540 
1544  U64 sequenceIndex
1545  ) = 0;
1546 
1549  const Svc::FpySequencer_WaitAbsDirective& directive,
1550  U64 sequenceIndex
1551  ) = 0;
1552 
1555  const Svc::FpySequencer_WaitRelDirective& directive,
1556  U64 sequenceIndex
1557  ) = 0;
1558 
1560  virtual void tlmWriteInternal_internalInterfaceHandler() = 0;
1561 
1562  protected:
1563 
1564  // ----------------------------------------------------------------------
1565  // Internal interface base-class functions
1566  // ----------------------------------------------------------------------
1567 
1570 
1573  const Svc::FpySequencer_AllocateDirective& directive,
1574  U64 sequenceIndex
1575  );
1576 
1579  const Svc::FpySequencer_CallDirective& directive,
1580  U64 sequenceIndex
1581  );
1582 
1585  const Svc::FpySequencer_ConstCmdDirective& directive,
1586  U64 sequenceIndex
1587  );
1588 
1591  const Svc::FpySequencer_DiscardDirective& directive,
1592  U64 sequenceIndex
1593  );
1594 
1597  const Svc::FpySequencer_ExitDirective& directive,
1598  U64 sequenceIndex
1599  );
1600 
1603  const Svc::FpySequencer_GetFieldDirective& directive,
1604  U64 sequenceIndex
1605  );
1606 
1609  const Svc::FpySequencer_GotoDirective& directive,
1610  U64 sequenceIndex
1611  );
1612 
1615  const Svc::FpySequencer_IfDirective& directive,
1616  U64 sequenceIndex
1617  );
1618 
1621  const Svc::FpySequencer_LoadAbsDirective& directive,
1622  U64 sequenceIndex
1623  );
1624 
1627  const Svc::FpySequencer_LoadRelDirective& directive,
1628  U64 sequenceIndex
1629  );
1630 
1633  const Svc::FpySequencer_MemCmpDirective& directive,
1634  U64 sequenceIndex
1635  );
1636 
1639  const Svc::FpySequencer_NoOpDirective& directive,
1640  U64 sequenceIndex
1641  );
1642 
1645  const Svc::FpySequencer_PeekDirective& directive,
1646  U64 sequenceIndex
1647  );
1648 
1651  const Svc::FpySequencer_PopEventDirective& directive,
1652  U64 sequenceIndex
1653  );
1654 
1658  U64 sequenceIndex
1659  );
1660 
1663  const Svc::FpySequencer_PushPrmDirective& directive,
1664  U64 sequenceIndex
1665  );
1666 
1669  const Svc::FpySequencer_PushRandDirective& directive,
1670  U64 sequenceIndex
1671  );
1672 
1675  const Svc::FpySequencer_PushTimeDirective& directive,
1676  U64 sequenceIndex
1677  );
1678 
1681  const Svc::FpySequencer_PushTlmValDirective& directive,
1682  U64 sequenceIndex
1683  );
1684 
1688  U64 sequenceIndex
1689  );
1690 
1693  const Svc::FpySequencer_PushValDirective& directive,
1694  U64 sequenceIndex
1695  );
1696 
1699  const Svc::FpySequencer_ReturnDirective& directive,
1700  U64 sequenceIndex
1701  );
1702 
1705  const Svc::FpySequencer_SetSeedDirective& directive,
1706  U64 sequenceIndex
1707  );
1708 
1711  const Svc::FpySequencer_StackCmdDirective& directive,
1712  U64 sequenceIndex
1713  );
1714 
1717  const Svc::FpySequencer_StackOpDirective& directive,
1718  U64 sequenceIndex
1719  );
1720 
1723  const Svc::FpySequencer_StoreAbsDirective& directive,
1724  U64 sequenceIndex
1725  );
1726 
1730  U64 sequenceIndex
1731  );
1732 
1735  const Svc::FpySequencer_StoreRelDirective& directive,
1736  U64 sequenceIndex
1737  );
1738 
1742  U64 sequenceIndex
1743  );
1744 
1747  const Svc::FpySequencer_WaitAbsDirective& directive,
1748  U64 sequenceIndex
1749  );
1750 
1753  const Svc::FpySequencer_WaitRelDirective& directive,
1754  U64 sequenceIndex
1755  );
1756 
1759 
1760  protected:
1761 
1762  // ----------------------------------------------------------------------
1763  // State getter functions
1764  // ----------------------------------------------------------------------
1765 
1768 
1769  protected:
1770 
1771  // ----------------------------------------------------------------------
1772  // Signal send functions
1773  // ----------------------------------------------------------------------
1774 
1778  );
1779 
1783  );
1784 
1788  );
1789 
1792 
1795  const Svc::FpySequencer_BreakpointArgs& value
1796  );
1797 
1800 
1803 
1806 
1809 
1812 
1815 
1818 
1821 
1824 
1827 
1830 
1833 
1836 
1839 
1842 
1845 
1848 
1851 
1854 
1857 
1860 
1861  protected:
1862 
1863  // ----------------------------------------------------------------------
1864  // Functions to implement for internal state machine actions
1865  // ----------------------------------------------------------------------
1866 
1871  SmId smId,
1873  ) = 0;
1874 
1879  SmId smId,
1882  ) = 0;
1883 
1888  SmId smId,
1891  ) = 0;
1892 
1897  SmId smId,
1900  ) = 0;
1901 
1906  SmId smId,
1908  ) = 0;
1909 
1914  SmId smId,
1916  ) = 0;
1917 
1922  SmId smId,
1924  ) = 0;
1925 
1930  SmId smId,
1932  ) = 0;
1933 
1938  SmId smId,
1940  ) = 0;
1941 
1946  SmId smId,
1948  ) = 0;
1949 
1954  SmId smId,
1956  ) = 0;
1957 
1962  SmId smId,
1964  ) = 0;
1965 
1970  SmId smId,
1972  ) = 0;
1973 
1978  SmId smId,
1980  ) = 0;
1981 
1986  SmId smId,
1988  ) = 0;
1989 
1994  SmId smId,
1996  ) = 0;
1997 
2002  SmId smId,
2004  ) = 0;
2005 
2010  SmId smId,
2012  ) = 0;
2013 
2018  SmId smId,
2020  ) = 0;
2021 
2026  SmId smId,
2028  ) = 0;
2029 
2034  SmId smId,
2036  ) = 0;
2037 
2042  SmId smId,
2044  ) = 0;
2045 
2050  SmId smId,
2052  ) = 0;
2053 
2058  SmId smId,
2060  ) = 0;
2061 
2066  SmId smId,
2068  const Svc::FpySequencer_BreakpointArgs& value
2069  ) = 0;
2070 
2075  SmId smId,
2077  ) = 0;
2078 
2083  SmId smId,
2085  ) = 0;
2086 
2087  protected:
2088 
2089  // ----------------------------------------------------------------------
2090  // Functions to implement for internal state machine guards
2091  // ----------------------------------------------------------------------
2092 
2097  SmId smId,
2099  ) const = 0;
2100 
2106  SmId smId,
2108  ) const = 0;
2109 
2114  SmId smId,
2116  ) const = 0;
2117 
2118  protected:
2119 
2120  // ----------------------------------------------------------------------
2121  // Command response
2122  // ----------------------------------------------------------------------
2123 
2125  void cmdResponse_out(
2126  FwOpcodeType opCode,
2127  U32 cmdSeq,
2128  Fw::CmdResponse response
2129  );
2130 
2131  protected:
2132 
2133  // ----------------------------------------------------------------------
2134  // Command handlers to implement
2135  // ----------------------------------------------------------------------
2136 
2140  virtual void RUN_cmdHandler(
2141  FwOpcodeType opCode,
2142  U32 cmdSeq,
2143  const Fw::CmdStringArg& fileName,
2144  const Svc::BlockState& block
2145  ) = 0;
2146 
2148  virtual void RUN_ARGS_cmdHandler(
2149  FwOpcodeType opCode,
2150  U32 cmdSeq,
2151  const Fw::CmdStringArg& fileName,
2152  const Svc::BlockState& block,
2153  const Svc::SeqArgs& buffer
2154  ) = 0;
2155 
2159  virtual void VALIDATE_cmdHandler(
2160  FwOpcodeType opCode,
2161  U32 cmdSeq,
2162  const Fw::CmdStringArg& fileName
2163  ) = 0;
2164 
2168  virtual void VALIDATE_ARGS_cmdHandler(
2169  FwOpcodeType opCode,
2170  U32 cmdSeq,
2171  const Fw::CmdStringArg& fileName,
2172  const Svc::SeqArgs& buffer
2173  ) = 0;
2174 
2178  virtual void RUN_VALIDATED_cmdHandler(
2179  FwOpcodeType opCode,
2180  U32 cmdSeq,
2181  const Svc::BlockState& block
2182  ) = 0;
2183 
2188  virtual void CANCEL_cmdHandler(
2189  FwOpcodeType opCode,
2190  U32 cmdSeq
2191  ) = 0;
2192 
2199  virtual void SET_BREAKPOINT_cmdHandler(
2200  FwOpcodeType opCode,
2201  U32 cmdSeq,
2202  U32 stmtIdx,
2203  bool breakOnce
2204  ) = 0;
2205 
2211  virtual void BREAK_cmdHandler(
2212  FwOpcodeType opCode,
2213  U32 cmdSeq
2214  ) = 0;
2215 
2220  virtual void CONTINUE_cmdHandler(
2221  FwOpcodeType opCode,
2222  U32 cmdSeq
2223  ) = 0;
2224 
2229  virtual void CLEAR_BREAKPOINT_cmdHandler(
2230  FwOpcodeType opCode,
2231  U32 cmdSeq
2232  ) = 0;
2233 
2238  virtual void STEP_cmdHandler(
2239  FwOpcodeType opCode,
2240  U32 cmdSeq
2241  ) = 0;
2242 
2246  virtual void DUMP_STACK_TO_FILE_cmdHandler(
2247  FwOpcodeType opCode,
2248  U32 cmdSeq,
2249  const Fw::CmdStringArg& fileName
2250  ) = 0;
2251 
2252  protected:
2253 
2254  // ----------------------------------------------------------------------
2255  // Command handler base-class functions
2256  //
2257  // Call these functions directly to bypass the command input port
2258  // ----------------------------------------------------------------------
2259 
2263  void RUN_cmdHandlerBase(
2264  FwOpcodeType opCode,
2265  U32 cmdSeq,
2266  Fw::CmdArgBuffer& args
2267  );
2268 
2271  FwOpcodeType opCode,
2272  U32 cmdSeq,
2273  Fw::CmdArgBuffer& args
2274  );
2275 
2280  FwOpcodeType opCode,
2281  U32 cmdSeq,
2282  Fw::CmdArgBuffer& args
2283  );
2284 
2289  FwOpcodeType opCode,
2290  U32 cmdSeq,
2291  Fw::CmdArgBuffer& args
2292  );
2293 
2298  FwOpcodeType opCode,
2299  U32 cmdSeq,
2300  Fw::CmdArgBuffer& args
2301  );
2302 
2307  void CANCEL_cmdHandlerBase(
2308  FwOpcodeType opCode,
2309  U32 cmdSeq,
2310  Fw::CmdArgBuffer& args
2311  );
2312 
2320  FwOpcodeType opCode,
2321  U32 cmdSeq,
2322  Fw::CmdArgBuffer& args
2323  );
2324 
2330  void BREAK_cmdHandlerBase(
2331  FwOpcodeType opCode,
2332  U32 cmdSeq,
2333  Fw::CmdArgBuffer& args
2334  );
2335 
2341  FwOpcodeType opCode,
2342  U32 cmdSeq,
2343  Fw::CmdArgBuffer& args
2344  );
2345 
2351  FwOpcodeType opCode,
2352  U32 cmdSeq,
2353  Fw::CmdArgBuffer& args
2354  );
2355 
2360  void STEP_cmdHandlerBase(
2361  FwOpcodeType opCode,
2362  U32 cmdSeq,
2363  Fw::CmdArgBuffer& args
2364  );
2365 
2370  FwOpcodeType opCode,
2371  U32 cmdSeq,
2372  Fw::CmdArgBuffer& args
2373  );
2374 
2375  protected:
2376 
2377  // ----------------------------------------------------------------------
2378  // Pre-message hooks for async commands
2379  //
2380  // Each of these functions is invoked just before processing the
2381  // corresponding command. By default they do nothing. You can
2382  // override them to provide specific pre-command behavior.
2383  // ----------------------------------------------------------------------
2384 
2386  virtual void RUN_preMsgHook(
2387  FwOpcodeType opCode,
2388  U32 cmdSeq
2389  );
2390 
2392  virtual void RUN_ARGS_preMsgHook(
2393  FwOpcodeType opCode,
2394  U32 cmdSeq
2395  );
2396 
2398  virtual void VALIDATE_preMsgHook(
2399  FwOpcodeType opCode,
2400  U32 cmdSeq
2401  );
2402 
2404  virtual void VALIDATE_ARGS_preMsgHook(
2405  FwOpcodeType opCode,
2406  U32 cmdSeq
2407  );
2408 
2410  virtual void RUN_VALIDATED_preMsgHook(
2411  FwOpcodeType opCode,
2412  U32 cmdSeq
2413  );
2414 
2416  virtual void CANCEL_preMsgHook(
2417  FwOpcodeType opCode,
2418  U32 cmdSeq
2419  );
2420 
2422  virtual void SET_BREAKPOINT_preMsgHook(
2423  FwOpcodeType opCode,
2424  U32 cmdSeq
2425  );
2426 
2428  virtual void BREAK_preMsgHook(
2429  FwOpcodeType opCode,
2430  U32 cmdSeq
2431  );
2432 
2434  virtual void CONTINUE_preMsgHook(
2435  FwOpcodeType opCode,
2436  U32 cmdSeq
2437  );
2438 
2440  virtual void CLEAR_BREAKPOINT_preMsgHook(
2441  FwOpcodeType opCode,
2442  U32 cmdSeq
2443  );
2444 
2446  virtual void STEP_preMsgHook(
2447  FwOpcodeType opCode,
2448  U32 cmdSeq
2449  );
2450 
2452  virtual void DUMP_STACK_TO_FILE_preMsgHook(
2453  FwOpcodeType opCode,
2454  U32 cmdSeq
2455  );
2456 
2457  protected:
2458 
2459  // ----------------------------------------------------------------------
2460  // Event logging functions
2461  // ----------------------------------------------------------------------
2462 
2464  void log_WARNING_HI_InvalidCommand(I32 state) const;
2465 
2467  void log_WARNING_HI_InvalidSeqRunCall(I32 state) const;
2468 
2470  void log_WARNING_HI_InvalidSeqCancelCall(I32 state) const;
2471 
2474  const Fw::StringBase& filePath,
2475  I32 errorCode
2476  ) const;
2477 
2480  FwSizeType writeSize,
2481  const Fw::StringBase& filePath,
2482  I32 errorCode
2483  ) const;
2484 
2487  const Svc::FpySequencer_FileReadStage& readStage,
2488  const Fw::StringBase& filePath,
2489  I32 errorCode
2490  ) const;
2491 
2494  const Svc::FpySequencer_FileReadStage& readStage,
2495  const Fw::StringBase& filePath
2496  ) const;
2497 
2500  const Svc::FpySequencer_FileReadStage& readStage,
2501  const Fw::StringBase& filePath,
2502  I32 errorCode,
2503  U64 buffLeft,
2504  U64 buffLength
2505  ) const;
2506 
2509  U8 expected,
2510  U8 actual
2511  ) const;
2512 
2515  U32 expected,
2516  U32 actual
2517  ) const;
2518 
2520  void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const;
2521 
2524  U64 bufferSize,
2525  const Fw::StringBase& filePath
2526  ) const;
2527 
2530  const Fw::StringBase& filePath,
2531  I32 errorCode
2532  ) const;
2533 
2536  const Fw::StringBase& baseDir,
2537  const Fw::StringBase& fileName
2538  ) const;
2539 
2542  FwOpcodeType opCode,
2543  U32 stmtIdx,
2544  const Fw::StringBase& filePath,
2545  const Fw::CmdResponse& response
2546  ) const;
2547 
2549  void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase& filePath) const;
2550 
2552  void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase& filePath) const;
2553 
2556  const Fw::StringBase& filePath,
2557  I32 errorCode
2558  ) const;
2559 
2562  U8 opcode,
2563  U32 stmtIdx,
2564  const Fw::StringBase& filePath
2565  ) const;
2566 
2569  I32 state,
2570  FwOpcodeType opcode,
2571  const Fw::CmdResponse& response
2572  ) const;
2573 
2576  FwOpcodeType opcode,
2577  const Fw::CmdResponse& response,
2578  U16 oldSequenceIdx,
2579  U16 currentSequenceIdx
2580  ) const;
2581 
2584  FwOpcodeType opcode,
2585  const Fw::CmdResponse& response
2586  ) const;
2587 
2590  FwOpcodeType opcode,
2591  const Fw::CmdResponse& response,
2592  U8 expectedDirectiveOpcode
2593  ) const;
2594 
2597  FwOpcodeType opcode,
2598  const Fw::CmdResponse& response,
2599  FwOpcodeType expectedOpcode
2600  ) const;
2601 
2604  FwOpcodeType opcode,
2605  const Fw::CmdResponse& response,
2606  U16 actualCmdIdx,
2607  U16 expectedCmdIdx
2608  ) const;
2609 
2612  U8 opcode,
2613  U32 stmtIdx,
2614  I32 errorCode,
2615  U64 buffLeft,
2616  U64 buffLength
2617  ) const;
2618 
2621  I32 internalTimeBase,
2622  I32 otherTimeBase
2623  ) const;
2624 
2627  I32 internalTimeContext,
2628  I32 otherTimeContext
2629  ) const;
2630 
2633  FwOpcodeType opCode,
2634  U32 stmtIdx,
2635  const Fw::StringBase& filePath
2636  ) const;
2637 
2640  U8 opCode,
2641  U32 stmtIdx,
2642  const Fw::StringBase& filePath
2643  ) const;
2644 
2647  U8 count,
2648  U8 max
2649  ) const;
2650 
2653  U16 count,
2654  U16 max
2655  ) const;
2656 
2659  Svc::Fpy::StackSizeType expected,
2660  FwSizeType actual,
2661  const Fw::StringBase& filePath
2662  ) const;
2663 
2666  FwSizeType actual,
2667  FwSizeType capacity
2668  ) const;
2669 
2672 
2674  void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const;
2675 
2678  U32 breakpointIdx,
2679  bool breakOnce
2680  ) const;
2681 
2683  void log_ACTIVITY_HI_BreakpointCleared() const;
2684 
2686  void log_FATAL_LogFatal(
2687  const Fw::StringBase& filePath,
2688  const Fw::StringBase& message
2689  ) const;
2690 
2693  const Fw::StringBase& filePath,
2694  const Fw::StringBase& message
2695  ) const;
2696 
2699  const Fw::StringBase& filePath,
2700  const Fw::StringBase& message
2701  ) const;
2702 
2705  const Fw::StringBase& filePath,
2706  const Fw::StringBase& message
2707  ) const;
2708 
2711  const Fw::StringBase& filePath,
2712  const Fw::StringBase& message
2713  ) const;
2714 
2717  const Fw::StringBase& filePath,
2718  const Fw::StringBase& message
2719  ) const;
2720 
2723  const Fw::StringBase& filePath,
2724  const Fw::StringBase& message
2725  ) const;
2726 
2729  const Svc::Fpy::DirectiveId& directive,
2730  I32 state
2731  ) const;
2732 
2735  const Svc::Fpy::DirectiveId& directive,
2736  U64 oldSequenceIdx,
2737  U64 currentSequenceIdx
2738  ) const;
2739 
2740  protected:
2741 
2742  // ----------------------------------------------------------------------
2743  // Telemetry serialized write
2744  // ----------------------------------------------------------------------
2745 
2750  void tlmWrite(
2751  FwChanIdType id,
2752  Fw::TlmBuffer& _tlmBuff,
2753  Fw::Time _tlmTime = Fw::Time()
2754  ) const;
2755 
2756  protected:
2757 
2758  // ----------------------------------------------------------------------
2759  // Telemetry write functions
2760  // ----------------------------------------------------------------------
2761 
2765  void tlmWrite_State(
2766  FwEnumStoreType arg,
2767  Fw::Time _tlmTime = Fw::Time()
2768  );
2769 
2774  U64 arg,
2775  Fw::Time _tlmTime = Fw::Time()
2776  );
2777 
2782  U64 arg,
2783  Fw::Time _tlmTime = Fw::Time()
2784  );
2785 
2790  U64 arg,
2791  Fw::Time _tlmTime = Fw::Time()
2792  );
2793 
2800  U64 arg,
2801  Fw::Time _tlmTime = Fw::Time()
2802  );
2803 
2808  U64 arg,
2809  Fw::Time _tlmTime = Fw::Time()
2810  );
2811 
2816  const Svc::Fpy::DirectiveErrorCode& arg,
2817  Fw::Time _tlmTime = Fw::Time()
2818  );
2819 
2824  U64 arg,
2825  Fw::Time _tlmTime = Fw::Time()
2826  );
2827 
2832  const Svc::Fpy::DirectiveId& arg,
2833  Fw::Time _tlmTime = Fw::Time()
2834  );
2835 
2839  void tlmWrite_SeqPath(
2840  const Fw::StringBase& arg,
2841  Fw::Time _tlmTime = Fw::Time()
2842  );
2843 
2848  bool arg,
2849  Fw::Time _tlmTime = Fw::Time()
2850  );
2851 
2856  bool arg,
2857  Fw::Time _tlmTime = Fw::Time()
2858  );
2859 
2864  U8 arg,
2865  Fw::Time _tlmTime = Fw::Time()
2866  );
2867 
2872  U32 arg,
2873  Fw::Time _tlmTime = Fw::Time()
2874  );
2875 
2880  FwOpcodeType arg,
2881  Fw::Time _tlmTime = Fw::Time()
2882  );
2883 
2889  Fw::Time _tlmTime = Fw::Time()
2890  );
2891 
2896  bool arg,
2897  Fw::Time _tlmTime = Fw::Time()
2898  );
2899 
2905  U32 arg,
2906  Fw::Time _tlmTime = Fw::Time()
2907  );
2908 
2913  bool arg,
2914  Fw::Time _tlmTime = Fw::Time()
2915  );
2916 
2923  bool arg,
2924  Fw::Time _tlmTime = Fw::Time()
2925  );
2926 
2931  F32 arg,
2932  Fw::Time _tlmTime = Fw::Time()
2933  );
2934 
2939  const Fw::StringBase& arg,
2940  Fw::Time _tlmTime = Fw::Time()
2941  );
2942 
2943  protected:
2944 
2945  // ----------------------------------------------------------------------
2946  // Parameter hook functions
2947  // ----------------------------------------------------------------------
2948 
2952  virtual void parameterUpdated(
2953  FwPrmIdType id
2954  );
2955 
2961  virtual void parametersLoaded();
2962 
2968  virtual void parameterLoaded(
2969  FwPrmIdType id,
2970  Fw::ParamValid valid
2971  );
2972 
2973  protected:
2974 
2975  // ----------------------------------------------------------------------
2976  // Parameter get functions
2977  // ----------------------------------------------------------------------
2978 
2988  Fw::ParamValid& valid
2989  );
2990 
3000  Fw::ParamValid& valid
3001  );
3002 
3003  protected:
3004 
3005  // ----------------------------------------------------------------------
3006  // Time
3007  // ----------------------------------------------------------------------
3008 
3012  Fw::Time getTime() const;
3013 
3014  private:
3015 
3016  // ----------------------------------------------------------------------
3017  // Message dispatch functions
3018  // ----------------------------------------------------------------------
3019 
3021  virtual MsgDispatchStatus doDispatch();
3022 
3023  private:
3024 
3025  // ----------------------------------------------------------------------
3026  // Calls for messages received on special input ports
3027  // ----------------------------------------------------------------------
3028 
3030  static void m_p_cmdIn_in(
3031  Fw::PassiveComponentBase* callComp,
3032  FwIndexType portNum,
3033  FwOpcodeType opCode,
3034  U32 cmdSeq,
3035  Fw::CmdArgBuffer& args
3036  );
3037 
3038  private:
3039 
3040  // ----------------------------------------------------------------------
3041  // Calls for messages received on typed input ports
3042  // ----------------------------------------------------------------------
3043 
3045  static void m_p_checkTimers_in(
3046  Fw::PassiveComponentBase* callComp,
3047  FwIndexType portNum,
3048  U32 context
3049  );
3050 
3052  static void m_p_cmdResponseIn_in(
3053  Fw::PassiveComponentBase* callComp,
3054  FwIndexType portNum,
3055  FwOpcodeType opCode,
3056  U32 cmdSeq,
3057  const Fw::CmdResponse& response
3058  );
3059 
3061  static void m_p_pingIn_in(
3062  Fw::PassiveComponentBase* callComp,
3063  FwIndexType portNum,
3064  U32 key
3065  );
3066 
3068  static void m_p_seqCancelIn_in(
3069  Fw::PassiveComponentBase* callComp,
3070  FwIndexType portNum
3071  );
3072 
3074  static void m_p_seqRunIn_in(
3075  Fw::PassiveComponentBase* callComp,
3076  FwIndexType portNum,
3077  const Fw::StringBase& filename,
3078  const Svc::SeqArgs& args
3079  );
3080 
3082  static void m_p_tlmWrite_in(
3083  Fw::PassiveComponentBase* callComp,
3084  FwIndexType portNum,
3085  U32 context
3086  );
3087 
3088  private:
3089 
3090  // ----------------------------------------------------------------------
3091  // Invocation functions for special output ports
3092  // ----------------------------------------------------------------------
3093 
3095  void cmdRegOut_out(
3096  FwIndexType portNum,
3097  FwOpcodeType opCode
3098  ) const;
3099 
3101  void cmdResponseOut_out(
3102  FwIndexType portNum,
3103  FwOpcodeType opCode,
3104  U32 cmdSeq,
3105  const Fw::CmdResponse& response
3106  ) const;
3107 
3109  void logOut_out(
3110  FwIndexType portNum,
3111  FwEventIdType id,
3112  Fw::Time& timeTag,
3113  const Fw::LogSeverity& severity,
3114  Fw::LogBuffer& args
3115  ) const;
3116 
3117 #if FW_ENABLE_TEXT_LOGGING
3118 
3120  void logTextOut_out(
3121  FwIndexType portNum,
3122  FwEventIdType id,
3123  Fw::Time& timeTag,
3124  const Fw::LogSeverity& severity,
3125  Fw::TextLogString& text
3126  ) const;
3127 
3128 #endif
3129 
3131  Fw::ParamValid prmGet_out(
3132  FwIndexType portNum,
3133  FwPrmIdType id,
3134  Fw::ParamBuffer& val
3135  ) const;
3137 
3139  void prmSet_out(
3140  FwIndexType portNum,
3141  FwPrmIdType id,
3142  Fw::ParamBuffer& val
3143  ) const;
3144 
3146  void timeCaller_out(
3147  FwIndexType portNum,
3148  Fw::Time& time
3149  ) const;
3150 
3152  void tlmOut_out(
3153  FwIndexType portNum,
3154  FwChanIdType id,
3155  Fw::Time& timeTag,
3156  Fw::TlmBuffer& val
3157  ) const;
3158 
3159  private:
3160 
3161  // ----------------------------------------------------------------------
3162  // Send signal helper functions
3163  // ----------------------------------------------------------------------
3164 
3166  void sendSignalStart(
3167  SmId smId,
3168  FwEnumStoreType signal,
3169  Fw::SerialBufferBase& buffer
3170  );
3171 
3173  void sequencer_sendSignalFinish(
3174  Fw::LinearBufferBase& buffer
3175  );
3176 
3177  private:
3178 
3179  // ----------------------------------------------------------------------
3180  // Helper functions for state machine dispatch
3181  // ----------------------------------------------------------------------
3182 
3184  void smDispatch(
3185  Fw::SerialBufferBase& buffer
3186  );
3187 
3189  static void deserializeSmIdAndSignal(
3190  Fw::SerialBufferBase& buffer,
3191  FwEnumStoreType& smId,
3192  FwEnumStoreType& signal
3193  );
3194 
3196  void Svc_FpySequencer_SequencerStateMachine_smDispatch(
3197  Fw::SerialBufferBase& buffer,
3198  Svc_FpySequencer_SequencerStateMachine& sm,
3200  );
3201 
3202  private:
3203 
3204  // ----------------------------------------------------------------------
3205  // Parameter set functions
3206  // ----------------------------------------------------------------------
3207 
3211  Fw::CmdResponse paramSet_STATEMENT_TIMEOUT_SECS(
3212  Fw::SerialBufferBase& val
3213  );
3214 
3218  Fw::CmdResponse paramSet_SEQ_BASE_DIR(
3219  Fw::SerialBufferBase& val
3220  );
3221 
3222  private:
3223 
3224  // ----------------------------------------------------------------------
3225  // Parameter save functions
3226  // ----------------------------------------------------------------------
3227 
3231  Fw::CmdResponse paramSave_STATEMENT_TIMEOUT_SECS();
3232 
3236  Fw::CmdResponse paramSave_SEQ_BASE_DIR();
3237 
3238 #if !FW_DIRECT_PORT_CALLS
3239 
3240  private:
3241 
3242  // ----------------------------------------------------------------------
3243  // Special input ports
3244  // ----------------------------------------------------------------------
3245 
3247  Fw::InputCmdPort m_cmdIn_InputPort[NUM_CMDIN_INPUT_PORTS];
3248 
3249 #endif
3250 
3251 #if !FW_DIRECT_PORT_CALLS
3252 
3253  private:
3254 
3255  // ----------------------------------------------------------------------
3256  // Typed input ports
3257  // ----------------------------------------------------------------------
3258 
3260  Svc::InputSchedPort m_checkTimers_InputPort[NUM_CHECKTIMERS_INPUT_PORTS];
3261 
3263  Fw::InputCmdResponsePort m_cmdResponseIn_InputPort[NUM_CMDRESPONSEIN_INPUT_PORTS];
3264 
3266  Svc::InputPingPort m_pingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
3267 
3270 
3272  Svc::InputCmdSeqInPort m_seqRunIn_InputPort[NUM_SEQRUNIN_INPUT_PORTS];
3273 
3275  Svc::InputSchedPort m_tlmWrite_InputPort[NUM_TLMWRITE_INPUT_PORTS];
3276 
3277 #endif
3278 
3279 #if !FW_DIRECT_PORT_CALLS
3280 
3281  private:
3282 
3283  // ----------------------------------------------------------------------
3284  // Special output ports
3285  // ----------------------------------------------------------------------
3286 
3288  Fw::OutputCmdRegPort m_cmdRegOut_OutputPort[NUM_CMDREGOUT_OUTPUT_PORTS];
3289 
3291  Fw::OutputCmdResponsePort m_cmdResponseOut_OutputPort[NUM_CMDRESPONSEOUT_OUTPUT_PORTS];
3292 
3294  Fw::OutputLogPort m_logOut_OutputPort[NUM_LOGOUT_OUTPUT_PORTS];
3295 
3296 #if FW_ENABLE_TEXT_LOGGING == 1
3297 
3299  Fw::OutputLogTextPort m_logTextOut_OutputPort[NUM_LOGTEXTOUT_OUTPUT_PORTS];
3300 
3301 #endif
3302 
3304  Fw::OutputPrmGetPort m_prmGet_OutputPort[NUM_PRMGET_OUTPUT_PORTS];
3305 
3307  Fw::OutputPrmSetPort m_prmSet_OutputPort[NUM_PRMSET_OUTPUT_PORTS];
3308 
3310  Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
3311 
3313  Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
3314 
3315 #endif
3316 
3317 #if !FW_DIRECT_PORT_CALLS
3318 
3319  private:
3320 
3321  // ----------------------------------------------------------------------
3322  // Typed output ports
3323  // ----------------------------------------------------------------------
3324 
3326  Fw::OutputComPort m_cmdOut_OutputPort[NUM_CMDOUT_OUTPUT_PORTS];
3327 
3329  Fw::OutputPrmGetPort m_getParam_OutputPort[NUM_GETPARAM_OUTPUT_PORTS];
3330 
3332  Fw::OutputTlmGetPort m_getTlmChan_OutputPort[NUM_GETTLMCHAN_OUTPUT_PORTS];
3333 
3335  Svc::OutputPingPort m_pingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
3336 
3338  Fw::OutputCmdResponsePort m_seqDoneOut_OutputPort[NUM_SEQDONEOUT_OUTPUT_PORTS];
3339 
3341  Svc::OutputCmdSeqInPort m_seqStartOut_OutputPort[NUM_SEQSTARTOUT_OUTPUT_PORTS];
3342 
3343 #endif
3344 
3345 #if !FW_DIRECT_PORT_CALLS
3346 
3347  private:
3348 
3349  // ----------------------------------------------------------------------
3350  // Serial output ports
3351  // ----------------------------------------------------------------------
3352 
3354  Fw::OutputSerializePort m_serialOut_OutputPort[NUM_SERIALOUT_OUTPUT_PORTS];
3355 
3356 #endif
3357 
3358  private:
3359 
3360  // ----------------------------------------------------------------------
3361  // First update flags for telemetry channels
3362  // ----------------------------------------------------------------------
3363 
3365  bool m_first_update_State = true;
3366 
3368  bool m_first_update_SequencesSucceeded = true;
3369 
3371  bool m_first_update_SequencesFailed = true;
3372 
3374  bool m_first_update_SequencesCancelled = true;
3375 
3377  bool m_first_update_StatementsDispatched = true;
3378 
3380  bool m_first_update_StatementsFailed = true;
3381 
3383  bool m_first_update_LastDirectiveError = true;
3384 
3386  bool m_first_update_DirectiveErrorIndex = true;
3387 
3389  bool m_first_update_DirectiveErrorId = true;
3390 
3392  bool m_first_update_SeqPath = true;
3393 
3395  bool m_first_update_Debug_ReachedEndOfFile = true;
3396 
3398  bool m_first_update_Debug_NextStatementReadSuccess = true;
3399 
3401  bool m_first_update_Debug_NextStatementOpcode = true;
3402 
3404  bool m_first_update_Debug_NextStatementIndex = true;
3405 
3407  bool m_first_update_Debug_NextCmdOpcode = true;
3408 
3410  bool m_first_update_Debug_StackSize = true;
3411 
3413  bool m_first_update_BreakpointInUse = true;
3414 
3416  bool m_first_update_BreakpointIndex = true;
3417 
3419  bool m_first_update_BreakOnlyOnceOnBreakpoint = true;
3420 
3422  bool m_first_update_BreakBeforeNextLine = true;
3423 
3425  bool m_first_update_PRM_STATEMENT_TIMEOUT_SECS = true;
3426 
3428  bool m_first_update_PRM_SEQ_BASE_DIR = true;
3429 
3430  private:
3431 
3432  // ----------------------------------------------------------------------
3433  // Last value storage for telemetry channels
3434  // ----------------------------------------------------------------------
3435 
3437  FwEnumStoreType m_last_State = {};
3438 
3440  U64 m_last_SequencesSucceeded = {};
3441 
3443  U64 m_last_SequencesFailed = {};
3444 
3446  U64 m_last_SequencesCancelled = {};
3447 
3449  U64 m_last_StatementsDispatched = {};
3450 
3452  U64 m_last_StatementsFailed = {};
3453 
3455  Svc::Fpy::DirectiveErrorCode m_last_LastDirectiveError = {};
3456 
3458  U64 m_last_DirectiveErrorIndex = {};
3459 
3461  Svc::Fpy::DirectiveId m_last_DirectiveErrorId = {};
3462 
3464  Fw::TlmString m_last_SeqPath = {};
3465 
3467  bool m_last_Debug_ReachedEndOfFile = {};
3468 
3470  bool m_last_Debug_NextStatementReadSuccess = {};
3471 
3473  U8 m_last_Debug_NextStatementOpcode = {};
3474 
3476  U32 m_last_Debug_NextStatementIndex = {};
3477 
3479  FwOpcodeType m_last_Debug_NextCmdOpcode = {};
3480 
3482  Svc::Fpy::StackSizeType m_last_Debug_StackSize = {};
3483 
3485  bool m_last_BreakpointInUse = {};
3486 
3488  U32 m_last_BreakpointIndex = {};
3489 
3491  bool m_last_BreakOnlyOnceOnBreakpoint = {};
3492 
3494  bool m_last_BreakBeforeNextLine = {};
3495 
3497  F32 m_last_PRM_STATEMENT_TIMEOUT_SECS = {};
3498 
3500  Fw::TlmString m_last_PRM_SEQ_BASE_DIR = {};
3501 
3502  private:
3503 
3504  // ----------------------------------------------------------------------
3505  // Parameter validity flags
3506  // ----------------------------------------------------------------------
3507 
3509  Fw::ParamValid m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::UNINIT;
3510 
3512  Fw::ParamValid m_param_SEQ_BASE_DIR_valid = Fw::ParamValid::UNINIT;
3513 
3514  private:
3515 
3516  // ----------------------------------------------------------------------
3517  // Parameter variables
3518  // ----------------------------------------------------------------------
3519 
3526  F32 m_STATEMENT_TIMEOUT_SECS;
3527 
3534  Fw::ParamString m_SEQ_BASE_DIR;
3535 
3536  private:
3537 
3538  // ----------------------------------------------------------------------
3539  // State machine instances
3540  // ----------------------------------------------------------------------
3541 
3543  Svc_FpySequencer_SequencerStateMachine m_stateMachine_sequencer;
3544 
3545  private:
3546 
3547  // ----------------------------------------------------------------------
3548  // Mutexes
3549  // ----------------------------------------------------------------------
3550 
3552  Os::Mutex m_paramLock;
3553 
3554  };
3555 
3556 }
3557 
3558 #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 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 directive_storeAbsConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsConstOffsetDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_storeAbsConstOffset.
virtual void Svc_FpySequencer_SequencerStateMachine_action_incrementSequenceCounter(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void directive_pushRand_internalInterfaceHandler(const Svc::FpySequencer_PushRandDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_pushRand.
virtual void Svc_FpySequencer_SequencerStateMachine_action_report_seqFailed(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
bool isConnected_getTlmChan_OutputPort(FwIndexType portNum) const
virtual void directive_call_internalInterfaceHandler(const Svc::FpySequencer_CallDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_call.
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 checkTimersInternal_internalInterfaceHandler()=0
Internal interface handler for checkTimersInternal.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setSequenceFilePath(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_SequenceExecutionArgs &value)=0
virtual void directive_pushPrm_internalInterfaceHandler(const Svc::FpySequencer_PushPrmDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_pushPrm.
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.
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 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
void log_WARNING_HI_InsufficientBufferSpace(U64 bufferSize, const Fw::StringBase &filePath) const
Log event InsufficientBufferSpace.
static constexpr FwIndexType getNum_seqStartOut_OutputPorts()
void directive_allocate_internalInterfaceInvoke(const Svc::FpySequencer_AllocateDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_allocate.
bool isConnected_getParam_OutputPort(FwIndexType portNum) const
PlatformSizeType FwSizeType
stores a value to an absolute address in the stack (for global variables), offset from stack ...
virtual void directive_setSeed_internalInterfaceHandler(const Svc::FpySequencer_SetSeedDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_setSeed.
void directive_getField_internalInterfaceInvoke(const Svc::FpySequencer_GetFieldDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_getField.
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 log_WARNING_HI_WrongCRC(U32 expected, U32 actual) const
Log event WrongCRC.
virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_if.
void log_WARNING_HI_ArgSizeExceedsCapacity(FwSizeType actual, FwSizeType capacity) const
Log event ArgSizeExceedsCapacity.
virtual void CLEAR_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
virtual void parameterUpdated(FwPrmIdType id)
Called whenever a parameter is updated.
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
void directive_pushRand_internalInterfaceInvoke(const Svc::FpySequencer_PushRandDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_pushRand.
virtual void Svc_FpySequencer_SequencerStateMachine_action_pushArgsToStack(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
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)
void directive_call_internalInterfaceInvoke(const Svc::FpySequencer_CallDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_call.
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].
void log_WARNING_LO_DirectiveWhileNotAwaiting(const Svc::Fpy::DirectiveId &directive, I32 state) const
Log event DirectiveWhileNotAwaiting.
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.
void directive_pushPrm_internalInterfaceInvoke(const Svc::FpySequencer_PushPrmDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_pushPrm.
Link-time delegating Mutex implementation.
virtual void directive_pushTlmValAndTime_internalInterfaceHandler(const Svc::FpySequencer_PushTlmValAndTimeDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_pushTlmValAndTime.
virtual void CANCEL_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void directive_peek_internalInterfaceInvoke(const Svc::FpySequencer_PeekDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_peek.
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.
virtual void directive_loadAbs_internalInterfaceHandler(const Svc::FpySequencer_LoadAbsDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_loadAbs.
friend class FpySequencerTesterBase
Friend class tester to support autocoded test harness.
void directive_pushTlmValAndTime_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValAndTimeDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_pushTlmValAndTime.
bool isConnected_prmSet_OutputPort(FwIndexType portNum) const
virtual void RUN_ARGS_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN_ARGS.
void sequencer_sendSignal_result_success()
Send signal result_success to state machine sequencer.
void log_WARNING_LO_DirectiveFromOldSequence(const Svc::Fpy::DirectiveId &directive, U64 oldSequenceIdx, U64 currentSequenceIdx) const
Log event DirectiveFromOldSequence.
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 directive_pushVal_internalInterfaceInvoke(const Svc::FpySequencer_PushValDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_pushVal.
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
void sequencer_sendSignal_cmd_VALIDATE(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_VALIDATE to state machine sequencer.
virtual void directive_discard_internalInterfaceHandler(const Svc::FpySequencer_DiscardDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_discard.
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 checkTimersInternal_internalInterfaceInvoke()
Internal interface base-class function for checkTimersInternal.
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.
void directive_pushTime_internalInterfaceInvoke(const Svc::FpySequencer_PushTimeDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_pushTime.
virtual void Svc_FpySequencer_SequencerStateMachine_action_clearSequenceFile(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
pops bytes off the top of the stack and does nothing with them
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 pingIn_preMsgHook(FwIndexType portNum, U32 key)
Pre-message hook for async input port pingIn.
virtual void STEP_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
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.
virtual void parameterLoaded(FwPrmIdType id, Fw::ParamValid valid)
Called for each parameter when parameters are loaded.
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)
Loads and validates a sequence with arguments.
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.
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 void directive_noOp_internalInterfaceHandler(const Svc::FpySequencer_NoOpDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_noOp.
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()
virtual void RUN_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, const Svc::BlockState &block)=0
virtual void directive_popSerializable_internalInterfaceHandler(const Svc::FpySequencer_PopSerializableDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_popSerializable.
void tlmWrite_StatementsFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
FwIdType FwEventIdType
The type of an event identifier.
loads a value from a local variable at a compile-time-known offset relative to the current stack fram...
virtual void directive_goto_internalInterfaceHandler(const Svc::FpySequencer_GotoDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_goto.
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.
F32 paramGet_STATEMENT_TIMEOUT_SECS(Fw::ParamValid &valid)
Svc::InputCmdSeqCancelPort * get_seqCancelIn_InputPort(FwIndexType portNum)
void directive_waitAbs_internalInterfaceInvoke(const Svc::FpySequencer_WaitAbsDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_waitAbs.
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.
pops a severity and message from the stack and emits an F Prime event
void tlmWrite_DirectiveErrorId(const Svc::Fpy::DirectiveId &arg, Fw::Time _tlmTime=Fw::Time())
static constexpr FwIndexType getNum_cmdResponseIn_InputPorts()
void directive_pushTlmVal_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_pushTlmVal.
Svc::InputPingPort * get_pingIn_InputPort(FwIndexType portNum)
void directive_waitRel_internalInterfaceInvoke(const Svc::FpySequencer_WaitRelDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_waitRel.
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.
Fw::InputCmdPort * get_cmdIn_InputPort(FwIndexType portNum)
bool isConnected_cmdResponseOut_OutputPort(FwIndexType portNum) const
virtual void directive_getField_internalInterfaceHandler(const Svc::FpySequencer_GetFieldDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_getField.
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 ...
virtual void directive_constCmd_internalInterfaceHandler(const Svc::FpySequencer_ConstCmdDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_constCmd.
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_storeAbs_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_storeAbs.
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.
virtual void tlmWriteInternal_internalInterfaceHandler()=0
Internal interface handler for tlmWriteInternal.
void tlmWriteInternal_internalInterfaceInvoke()
Internal interface base-class function for tlmWriteInternal.
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 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_loadRel_internalInterfaceHandler(const Svc::FpySequencer_LoadRelDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_loadRel.
void VALIDATE_ARGS_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
static constexpr FwIndexType getNum_prmSet_OutputPorts()
void directive_constCmd_internalInterfaceInvoke(const Svc::FpySequencer_ConstCmdDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_constCmd.
void log_WARNING_HI_LogWarningHi(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogWarningHi.
virtual void directive_allocate_internalInterfaceHandler(const Svc::FpySequencer_AllocateDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_allocate.
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 directive_popEvent_internalInterfaceInvoke(const Svc::FpySequencer_PopEventDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_popEvent.
virtual void directive_pushVal_internalInterfaceHandler(const Svc::FpySequencer_PushValDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_pushVal.
void CANCEL_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_storeRelConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_storeRelConstOffset.
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 directive_goto_internalInterfaceInvoke(const Svc::FpySequencer_GotoDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_goto.
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)
void directive_stackCmd_internalInterfaceInvoke(const Svc::FpySequencer_StackCmdDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_stackCmd.
void directive_memCmp_internalInterfaceInvoke(const Svc::FpySequencer_MemCmpDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_memCmp.
virtual void directive_stackOp_internalInterfaceHandler(const Svc::FpySequencer_StackOpDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_stackOp.
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.
Loads, validates and runs a sequence.
virtual void directive_stackCmd_internalInterfaceHandler(const Svc::FpySequencer_StackCmdDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_stackCmd.
static constexpr FwIndexType getNum_cmdOut_OutputPorts()
void directive_loadRel_internalInterfaceInvoke(const Svc::FpySequencer_LoadRelDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_loadRel.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setGoalState_VALID(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal)=0
virtual void directive_pushTlmVal_internalInterfaceHandler(const Svc::FpySequencer_PushTlmValDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_pushTlmVal.
void directive_stackOp_internalInterfaceInvoke(const Svc::FpySequencer_StackOpDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_stackOp.
sleeps for a relative duration from the current time
virtual void directive_return_internalInterfaceHandler(const Svc::FpySequencer_ReturnDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_return.
void seqDoneOut_out(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response) const
Invoke output port seqDoneOut.
void directive_loadAbs_internalInterfaceInvoke(const Svc::FpySequencer_LoadAbsDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_loadAbs.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:54
void directive_noOp_internalInterfaceInvoke(const Svc::FpySequencer_NoOpDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_noOp.
bool isConnected_serialOut_OutputPort(FwIndexType portNum) const
virtual void directive_memCmp_internalInterfaceHandler(const Svc::FpySequencer_MemCmpDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_memCmp.
void log_ACTIVITY_HI_BreakpointSet(U32 breakpointIdx, bool breakOnce) const
Log event BreakpointSet.
virtual void directive_waitAbs_internalInterfaceHandler(const Svc::FpySequencer_WaitAbsDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_waitAbs.
virtual void directive_pushTime_internalInterfaceHandler(const Svc::FpySequencer_PushTimeDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_pushTime.
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].
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
virtual void Svc_FpySequencer_SequencerStateMachine_action_setSequenceBlockState(SmId smId, Svc_FpySequencer_SequencerStateMachine::Signal signal, const Svc::FpySequencer_SequenceExecutionArgs &value)=0
void sequencer_sendSignal_cmd_CANCEL()
Send signal cmd_CANCEL to state machine sequencer.
void sequencer_sendSignal_result_checkStatementTimeout_statementTimeout()
Send signal result_checkStatementTimeout_statementTimeout to state machine sequencer.
static constexpr FwIndexType getNum_cmdResponseOut_OutputPorts()
Must be called after VALIDATE. Runs the sequence that was validated.
virtual void directive_waitRel_internalInterfaceHandler(const Svc::FpySequencer_WaitRelDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_waitRel.
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())
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()
virtual void directive_popEvent_internalInterfaceHandler(const Svc::FpySequencer_PopEventDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_popEvent.
Fw::ParamString paramGet_SEQ_BASE_DIR(Fw::ParamValid &valid)
virtual void directive_peek_internalInterfaceHandler(const Svc::FpySequencer_PeekDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_peek.
bool isConnected_timeCaller_OutputPort(FwIndexType portNum) const
void tlmWrite_SequencesFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
loads a value from an absolute address in the stack (for global variables)
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
virtual void VALIDATE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command VALIDATE.
static constexpr FwIndexType getNum_checkTimers_InputPorts()
void directive_exit_internalInterfaceInvoke(const Svc::FpySequencer_ExitDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_exit.
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 directive_storeRelConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_storeRelConstOffset.
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
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 directive_storeAbs_internalInterfaceInvoke(const Svc::FpySequencer_StoreAbsDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_storeAbs.
void log_WARNING_LO_LogWarningLo(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogWarningLo.
Svc::FpySequencer_SequencerStateMachine_State State
The state type.
void log_WARNING_HI_UnknownSequencerDirective(U8 opcode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event UnknownSequencerDirective.
virtual void VALIDATE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void log_WARNING_HI_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 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 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 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 directive_storeAbsConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreAbsConstOffsetDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_storeAbsConstOffset.
void log_WARNING_LO_CmdResponseWhileNotRunningSequence(I32 state, FwOpcodeType opcode, const Fw::CmdResponse &response) const
Log event CmdResponseWhileNotRunningSequence.
bool isConnected_seqStartOut_OutputPort(FwIndexType portNum) const
void directive_return_internalInterfaceInvoke(const Svc::FpySequencer_ReturnDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_return.
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.
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.
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.
FpySequencerComponentBase::SmId getId() const
Get the state machine id.
void directive_popSerializable_internalInterfaceInvoke(const Svc::FpySequencer_PopSerializableDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_popSerializable.
pushes the current Fw.Time struct to the stack
void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase &filePath) const
Log event SequenceDone.
static constexpr FwIndexType getNum_seqDoneOut_OutputPorts()
virtual void directive_exit_internalInterfaceHandler(const Svc::FpySequencer_ExitDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_exit.
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 log_WARNING_HI_FileWriteError(FwSizeType writeSize, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileWriteError.
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 directive_if_internalInterfaceInvoke(const Svc::FpySequencer_IfDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_if.
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())
virtual void directive_storeRel_internalInterfaceHandler(const Svc::FpySequencer_StoreRelDirective &directive, U64 sequenceIndex)=0
Internal interface handler for directive_storeRel.
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 tlmWriteInternal_overflowHook()=0
Overflow hook for async input port tlmWriteInternal.
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)
void directive_setSeed_internalInterfaceInvoke(const Svc::FpySequencer_SetSeedDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_setSeed.
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 directive_discard_internalInterfaceInvoke(const Svc::FpySequencer_DiscardDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_discard.
void tlmWrite_BreakpointIndex(U32 arg, Fw::Time _tlmTime=Fw::Time())
void directive_storeRel_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelDirective &directive, U64 sequenceIndex)
Internal interface base-class function for directive_storeRel.
void tlmWrite_Debug_NextStatementReadSuccess(bool arg, Fw::Time _tlmTime=Fw::Time())