F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
FpySequencerComponentAc.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title FpySequencerComponentAc.cpp
3 // \author Generated by fpp-to-cpp
4 // \brief cpp file for FpySequencer component base class
5 // ======================================================================
6 
7 #include "Fw/Types/Assert.hpp"
9 #if FW_ENABLE_TEXT_LOGGING
10 #include "Fw/Types/String.hpp"
11 #endif
13 
14 namespace Svc {
15 
16  namespace {
17 
18  // Constant definitions for the state machine signal buffer
19  namespace SmSignalBuffer {
20 
21  // Union for computing the max size of a signal type
22  union SignalTypeUnion {
23  BYTE size_of_Svc_FpySequencer_BreakpointArgs[Svc::FpySequencer_BreakpointArgs::SERIALIZED_SIZE];
24  BYTE size_of_Svc_FpySequencer_SequenceExecutionArgs[Svc::FpySequencer_SequenceExecutionArgs::SERIALIZED_SIZE];
25  };
26 
27  // The serialized size
28  static constexpr FwSizeType SERIALIZED_SIZE =
29  2 * sizeof(FwEnumStoreType) +
30  sizeof(SignalTypeUnion);
31 
32  }
33 
34  enum MsgTypeEnum {
35  FPYSEQUENCER_COMPONENT_EXIT = Fw::ActiveComponentBase::ACTIVE_COMPONENT_EXIT,
36  CHECKTIMERS_SCHED,
37  CMDRESPONSEIN_CMDRESPONSE,
38  PINGIN_PING,
39  SEQRUNIN_CMDSEQIN,
40  TLMWRITE_SCHED,
41  CMD_RUN,
42  CMD_VALIDATE,
43  CMD_RUN_VALIDATED,
44  CMD_CANCEL,
45  CMD_SET_BREAKPOINT,
46  CMD_BREAK,
47  CMD_CONTINUE,
48  CMD_CLEAR_BREAKPOINT,
49  CMD_STEP,
50  CMD_SET_FLAG,
51  CMD_DUMP_STACK_TO_FILE,
52  INT_IF_DIRECTIVE_ALLOCATE,
53  INT_IF_DIRECTIVE_CALL,
54  INT_IF_DIRECTIVE_CONSTCMD,
55  INT_IF_DIRECTIVE_DISCARD,
56  INT_IF_DIRECTIVE_EXIT,
57  INT_IF_DIRECTIVE_GETFIELD,
58  INT_IF_DIRECTIVE_GETFLAG,
59  INT_IF_DIRECTIVE_GOTO,
60  INT_IF_DIRECTIVE_IF,
61  INT_IF_DIRECTIVE_LOADABS,
62  INT_IF_DIRECTIVE_LOADREL,
63  INT_IF_DIRECTIVE_MEMCMP,
64  INT_IF_DIRECTIVE_NOOP,
65  INT_IF_DIRECTIVE_PEEK,
66  INT_IF_DIRECTIVE_PUSHPRM,
67  INT_IF_DIRECTIVE_PUSHTIME,
68  INT_IF_DIRECTIVE_PUSHTLMVAL,
69  INT_IF_DIRECTIVE_PUSHTLMVALANDTIME,
70  INT_IF_DIRECTIVE_PUSHVAL,
71  INT_IF_DIRECTIVE_RETURN,
72  INT_IF_DIRECTIVE_SETFLAG,
73  INT_IF_DIRECTIVE_STACKCMD,
74  INT_IF_DIRECTIVE_STACKOP,
75  INT_IF_DIRECTIVE_STOREABS,
76  INT_IF_DIRECTIVE_STOREABSCONSTOFFSET,
77  INT_IF_DIRECTIVE_STOREREL,
78  INT_IF_DIRECTIVE_STORERELCONSTOFFSET,
79  INT_IF_DIRECTIVE_WAITABS,
80  INT_IF_DIRECTIVE_WAITREL,
81  INTERNAL_STATE_MACHINE_SIGNAL,
82  };
83 
84  // Get the max size by constructing a union of the async input, command, and
85  // internal port serialization sizes
86  union BuffUnion {
87  BYTE checkTimersPortSize[Svc::InputSchedPort::SERIALIZED_SIZE];
88  BYTE cmdResponseInPortSize[Fw::InputCmdResponsePort::SERIALIZED_SIZE];
93  // Size of directive_allocate argument list
94  BYTE directive_allocateIntIfSize[
96  ];
97  // Size of directive_call argument list
98  BYTE directive_callIntIfSize[
100  ];
101  // Size of directive_constCmd argument list
102  BYTE directive_constCmdIntIfSize[
104  ];
105  // Size of directive_discard argument list
106  BYTE directive_discardIntIfSize[
108  ];
109  // Size of directive_exit argument list
110  BYTE directive_exitIntIfSize[
112  ];
113  // Size of directive_getField argument list
114  BYTE directive_getFieldIntIfSize[
116  ];
117  // Size of directive_getFlag argument list
118  BYTE directive_getFlagIntIfSize[
120  ];
121  // Size of directive_goto argument list
122  BYTE directive_gotoIntIfSize[
124  ];
125  // Size of directive_if argument list
126  BYTE directive_ifIntIfSize[
128  ];
129  // Size of directive_loadAbs argument list
130  BYTE directive_loadAbsIntIfSize[
132  ];
133  // Size of directive_loadRel argument list
134  BYTE directive_loadRelIntIfSize[
136  ];
137  // Size of directive_memCmp argument list
138  BYTE directive_memCmpIntIfSize[
140  ];
141  // Size of directive_noOp argument list
142  BYTE directive_noOpIntIfSize[
144  ];
145  // Size of directive_peek argument list
146  BYTE directive_peekIntIfSize[
148  ];
149  // Size of directive_pushPrm argument list
150  BYTE directive_pushPrmIntIfSize[
152  ];
153  // Size of directive_pushTime argument list
154  BYTE directive_pushTimeIntIfSize[
156  ];
157  // Size of directive_pushTlmVal argument list
158  BYTE directive_pushTlmValIntIfSize[
160  ];
161  // Size of directive_pushTlmValAndTime argument list
162  BYTE directive_pushTlmValAndTimeIntIfSize[
164  ];
165  // Size of directive_pushVal argument list
166  BYTE directive_pushValIntIfSize[
168  ];
169  // Size of directive_return argument list
170  BYTE directive_returnIntIfSize[
172  ];
173  // Size of directive_setFlag argument list
174  BYTE directive_setFlagIntIfSize[
176  ];
177  // Size of directive_stackCmd argument list
178  BYTE directive_stackCmdIntIfSize[
180  ];
181  // Size of directive_stackOp argument list
182  BYTE directive_stackOpIntIfSize[
184  ];
185  // Size of directive_storeAbs argument list
186  BYTE directive_storeAbsIntIfSize[
188  ];
189  // Size of directive_storeAbsConstOffset argument list
190  BYTE directive_storeAbsConstOffsetIntIfSize[
192  ];
193  // Size of directive_storeRel argument list
194  BYTE directive_storeRelIntIfSize[
196  ];
197  // Size of directive_storeRelConstOffset argument list
198  BYTE directive_storeRelConstOffsetIntIfSize[
200  ];
201  // Size of directive_waitAbs argument list
202  BYTE directive_waitAbsIntIfSize[
204  ];
205  // Size of directive_waitRel argument list
206  BYTE directive_waitRelIntIfSize[
208  ];
209  // Size of buffer for internal state machine signals
210  // The internal SmSignalBuffer stores the state machine id, the
211  // signal id, and the signal data
212  BYTE internalSmBufferSize[SmSignalBuffer::SERIALIZED_SIZE];
213  };
214 
215  // Define a message buffer class large enough to handle all the
216  // asynchronous inputs to the component
217  class ComponentIpcSerializableBuffer :
218  public Fw::LinearBufferBase
219  {
220 
221  public:
222 
223  enum {
224  // Offset into data in buffer: Size of message ID and port number
225  DATA_OFFSET = sizeof(FwEnumStoreType) + sizeof(FwIndexType),
226  // Max data size
227  MAX_DATA_SIZE = sizeof(BuffUnion),
228  // Max message size: Size of message id + size of port + max data size
229  SERIALIZATION_SIZE = DATA_OFFSET + MAX_DATA_SIZE
230  };
231 
232  Fw::Serializable::SizeType getCapacity() const {
233  return sizeof(m_buff);
234  }
235 
236  U8* getBuffAddr() {
237  return m_buff;
238  }
239 
240  const U8* getBuffAddr() const {
241  return m_buff;
242  }
243 
244  private:
245  // Should be the max of all the input ports serialized sizes...
246  U8 m_buff[SERIALIZATION_SIZE];
247 
248  };
249  }
250 
251  // ----------------------------------------------------------------------
252  // Types for internal state machines
253  // ----------------------------------------------------------------------
254 
257  m_component(component)
258  {
259 
260  }
261 
264  {
265  this->initBase(static_cast<FwEnumStoreType>(smId));
266  }
267 
269  getId() const
270  {
271  return static_cast<FpySequencerComponentBase::SmId>(this->m_id);
272  }
273 
274  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
275  action_signalEntered(Signal signal)
276  {
277  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_signalEntered(this->getId(), signal);
278  }
279 
280  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
281  action_setSequenceFilePath(
282  Signal signal,
284  )
285  {
286  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setSequenceFilePath(this->getId(), signal, value);
287  }
288 
289  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
290  action_setSequenceBlockState(
291  Signal signal,
293  )
294  {
295  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setSequenceBlockState(this->getId(), signal, value);
296  }
297 
298  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
299  action_validate(Signal signal)
300  {
301  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_validate(this->getId(), signal);
302  }
303 
304  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
305  action_report_seqSucceeded(Signal signal)
306  {
307  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqSucceeded(this->getId(), signal);
308  }
309 
310  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
311  action_report_seqCancelled(Signal signal)
312  {
313  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqCancelled(this->getId(), signal);
314  }
315 
316  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
317  action_report_seqFailed(Signal signal)
318  {
319  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqFailed(this->getId(), signal);
320  }
321 
322  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
323  action_report_seqStarted(Signal signal)
324  {
325  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqStarted(this->getId(), signal);
326  }
327 
328  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
329  action_setGoalState_RUNNING(Signal signal)
330  {
331  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setGoalState_RUNNING(this->getId(), signal);
332  }
333 
334  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
335  action_setGoalState_VALID(Signal signal)
336  {
337  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setGoalState_VALID(this->getId(), signal);
338  }
339 
340  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
341  action_setGoalState_IDLE(Signal signal)
342  {
343  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setGoalState_IDLE(this->getId(), signal);
344  }
345 
346  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
347  action_sendCmdResponse_OK(Signal signal)
348  {
349  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_sendCmdResponse_OK(this->getId(), signal);
350  }
351 
352  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
353  action_sendCmdResponse_EXECUTION_ERROR(Signal signal)
354  {
355  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_sendCmdResponse_EXECUTION_ERROR(this->getId(), signal);
356  }
357 
358  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
359  action_clearSequenceFile(Signal signal)
360  {
361  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_clearSequenceFile(this->getId(), signal);
362  }
363 
364  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
365  action_clearBreakpoint(Signal signal)
366  {
367  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_clearBreakpoint(this->getId(), signal);
368  }
369 
370  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
371  action_checkShouldWake(Signal signal)
372  {
373  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_checkShouldWake(this->getId(), signal);
374  }
375 
376  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
377  action_dispatchStatement(Signal signal)
378  {
379  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_dispatchStatement(this->getId(), signal);
380  }
381 
382  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
383  action_resetRuntime(Signal signal)
384  {
385  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_resetRuntime(this->getId(), signal);
386  }
387 
388  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
389  action_checkStatementTimeout(Signal signal)
390  {
391  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_checkStatementTimeout(this->getId(), signal);
392  }
393 
394  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
395  action_incrementSequenceCounter(Signal signal)
396  {
397  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_incrementSequenceCounter(this->getId(), signal);
398  }
399 
400  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
401  action_report_seqBroken(Signal signal)
402  {
403  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqBroken(this->getId(), signal);
404  }
405 
406  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
407  action_setBreakpoint(
408  Signal signal,
410  )
411  {
412  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setBreakpoint(this->getId(), signal, value);
413  }
414 
415  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
416  action_setBreakBeforeNextLine(Signal signal)
417  {
418  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setBreakBeforeNextLine(this->getId(), signal);
419  }
420 
421  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
422  action_clearBreakBeforeNextLine(Signal signal)
423  {
424  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_clearBreakBeforeNextLine(this->getId(), signal);
425  }
426 
427  bool FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
428  guard_goalStateIs_RUNNING(Signal signal) const
429  {
430  return this->m_component.Svc_FpySequencer_SequencerStateMachine_guard_goalStateIs_RUNNING(this->getId(), signal);
431  }
432 
433  bool FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
434  guard_shouldBreak(Signal signal) const
435  {
436  return this->m_component.Svc_FpySequencer_SequencerStateMachine_guard_shouldBreak(this->getId(), signal);
437  }
438 
439  bool FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
440  guard_breakOnce(Signal signal) const
441  {
442  return this->m_component.Svc_FpySequencer_SequencerStateMachine_guard_breakOnce(this->getId(), signal);
443  }
444 
445  // ----------------------------------------------------------------------
446  // Component initialization
447  // ----------------------------------------------------------------------
448 
451  FwSizeType queueDepth,
452  FwEnumStoreType instance
453  )
454  {
455  // Initialize base class
457 
458  // Initialize state machine instances
459  this->m_stateMachine_sequencer.init(SmId::sequencer);
460 
461  // Connect input port cmdIn
462  for (
463  FwIndexType port = 0;
464  port < static_cast<FwIndexType>(this->getNum_cmdIn_InputPorts());
465  port++
466  ) {
467  this->m_cmdIn_InputPort[port].init();
468  this->m_cmdIn_InputPort[port].addCallComp(
469  this,
470  m_p_cmdIn_in
471  );
472  this->m_cmdIn_InputPort[port].setPortNum(port);
473 
474 #if FW_OBJECT_NAMES == 1
475  Fw::ObjectName portName;
476  portName.format(
477  "%s_cmdIn_InputPort[%" PRI_FwIndexType "]",
478  this->m_objName.toChar(),
479  port
480  );
481  this->m_cmdIn_InputPort[port].setObjName(portName.toChar());
482 #endif
483  }
484 
485  // Connect input port checkTimers
486  for (
487  FwIndexType port = 0;
488  port < static_cast<FwIndexType>(this->getNum_checkTimers_InputPorts());
489  port++
490  ) {
491  this->m_checkTimers_InputPort[port].init();
492  this->m_checkTimers_InputPort[port].addCallComp(
493  this,
494  m_p_checkTimers_in
495  );
496  this->m_checkTimers_InputPort[port].setPortNum(port);
497 
498 #if FW_OBJECT_NAMES == 1
499  Fw::ObjectName portName;
500  portName.format(
501  "%s_checkTimers_InputPort[%" PRI_FwIndexType "]",
502  this->m_objName.toChar(),
503  port
504  );
505  this->m_checkTimers_InputPort[port].setObjName(portName.toChar());
506 #endif
507  }
508 
509  // Connect input port cmdResponseIn
510  for (
511  FwIndexType port = 0;
512  port < static_cast<FwIndexType>(this->getNum_cmdResponseIn_InputPorts());
513  port++
514  ) {
515  this->m_cmdResponseIn_InputPort[port].init();
516  this->m_cmdResponseIn_InputPort[port].addCallComp(
517  this,
518  m_p_cmdResponseIn_in
519  );
520  this->m_cmdResponseIn_InputPort[port].setPortNum(port);
521 
522 #if FW_OBJECT_NAMES == 1
523  Fw::ObjectName portName;
524  portName.format(
525  "%s_cmdResponseIn_InputPort[%" PRI_FwIndexType "]",
526  this->m_objName.toChar(),
527  port
528  );
529  this->m_cmdResponseIn_InputPort[port].setObjName(portName.toChar());
530 #endif
531  }
532 
533  // Connect input port pingIn
534  for (
535  FwIndexType port = 0;
536  port < static_cast<FwIndexType>(this->getNum_pingIn_InputPorts());
537  port++
538  ) {
539  this->m_pingIn_InputPort[port].init();
540  this->m_pingIn_InputPort[port].addCallComp(
541  this,
542  m_p_pingIn_in
543  );
544  this->m_pingIn_InputPort[port].setPortNum(port);
545 
546 #if FW_OBJECT_NAMES == 1
547  Fw::ObjectName portName;
548  portName.format(
549  "%s_pingIn_InputPort[%" PRI_FwIndexType "]",
550  this->m_objName.toChar(),
551  port
552  );
553  this->m_pingIn_InputPort[port].setObjName(portName.toChar());
554 #endif
555  }
556 
557  // Connect input port seqRunIn
558  for (
559  FwIndexType port = 0;
560  port < static_cast<FwIndexType>(this->getNum_seqRunIn_InputPorts());
561  port++
562  ) {
563  this->m_seqRunIn_InputPort[port].init();
564  this->m_seqRunIn_InputPort[port].addCallComp(
565  this,
566  m_p_seqRunIn_in
567  );
568  this->m_seqRunIn_InputPort[port].setPortNum(port);
569 
570 #if FW_OBJECT_NAMES == 1
571  Fw::ObjectName portName;
572  portName.format(
573  "%s_seqRunIn_InputPort[%" PRI_FwIndexType "]",
574  this->m_objName.toChar(),
575  port
576  );
577  this->m_seqRunIn_InputPort[port].setObjName(portName.toChar());
578 #endif
579  }
580 
581  // Connect input port tlmWrite
582  for (
583  FwIndexType port = 0;
584  port < static_cast<FwIndexType>(this->getNum_tlmWrite_InputPorts());
585  port++
586  ) {
587  this->m_tlmWrite_InputPort[port].init();
588  this->m_tlmWrite_InputPort[port].addCallComp(
589  this,
590  m_p_tlmWrite_in
591  );
592  this->m_tlmWrite_InputPort[port].setPortNum(port);
593 
594 #if FW_OBJECT_NAMES == 1
595  Fw::ObjectName portName;
596  portName.format(
597  "%s_tlmWrite_InputPort[%" PRI_FwIndexType "]",
598  this->m_objName.toChar(),
599  port
600  );
601  this->m_tlmWrite_InputPort[port].setObjName(portName.toChar());
602 #endif
603  }
604 
605  // Connect output port cmdRegOut
606  for (
607  FwIndexType port = 0;
608  port < static_cast<FwIndexType>(this->getNum_cmdRegOut_OutputPorts());
609  port++
610  ) {
611  this->m_cmdRegOut_OutputPort[port].init();
612 
613 #if FW_OBJECT_NAMES == 1
614  Fw::ObjectName portName;
615  portName.format(
616  "%s_cmdRegOut_OutputPort[%" PRI_FwIndexType "]",
617  this->m_objName.toChar(),
618  port
619  );
620  this->m_cmdRegOut_OutputPort[port].setObjName(portName.toChar());
621 #endif
622  }
623 
624  // Connect output port cmdResponseOut
625  for (
626  FwIndexType port = 0;
627  port < static_cast<FwIndexType>(this->getNum_cmdResponseOut_OutputPorts());
628  port++
629  ) {
630  this->m_cmdResponseOut_OutputPort[port].init();
631 
632 #if FW_OBJECT_NAMES == 1
633  Fw::ObjectName portName;
634  portName.format(
635  "%s_cmdResponseOut_OutputPort[%" PRI_FwIndexType "]",
636  this->m_objName.toChar(),
637  port
638  );
639  this->m_cmdResponseOut_OutputPort[port].setObjName(portName.toChar());
640 #endif
641  }
642 
643  // Connect output port logOut
644  for (
645  FwIndexType port = 0;
646  port < static_cast<FwIndexType>(this->getNum_logOut_OutputPorts());
647  port++
648  ) {
649  this->m_logOut_OutputPort[port].init();
650 
651 #if FW_OBJECT_NAMES == 1
652  Fw::ObjectName portName;
653  portName.format(
654  "%s_logOut_OutputPort[%" PRI_FwIndexType "]",
655  this->m_objName.toChar(),
656  port
657  );
658  this->m_logOut_OutputPort[port].setObjName(portName.toChar());
659 #endif
660  }
661 
662 #if FW_ENABLE_TEXT_LOGGING == 1
663  // Connect output port logTextOut
664  for (
665  FwIndexType port = 0;
666  port < static_cast<FwIndexType>(this->getNum_logTextOut_OutputPorts());
667  port++
668  ) {
669  this->m_logTextOut_OutputPort[port].init();
670 
671 #if FW_OBJECT_NAMES == 1
672  Fw::ObjectName portName;
673  portName.format(
674  "%s_logTextOut_OutputPort[%" PRI_FwIndexType "]",
675  this->m_objName.toChar(),
676  port
677  );
678  this->m_logTextOut_OutputPort[port].setObjName(portName.toChar());
679 #endif
680  }
681 #endif
682 
683  // Connect output port prmGet
684  for (
685  FwIndexType port = 0;
686  port < static_cast<FwIndexType>(this->getNum_prmGet_OutputPorts());
687  port++
688  ) {
689  this->m_prmGet_OutputPort[port].init();
690 
691 #if FW_OBJECT_NAMES == 1
692  Fw::ObjectName portName;
693  portName.format(
694  "%s_prmGet_OutputPort[%" PRI_FwIndexType "]",
695  this->m_objName.toChar(),
696  port
697  );
698  this->m_prmGet_OutputPort[port].setObjName(portName.toChar());
699 #endif
700  }
701 
702  // Connect output port prmSet
703  for (
704  FwIndexType port = 0;
705  port < static_cast<FwIndexType>(this->getNum_prmSet_OutputPorts());
706  port++
707  ) {
708  this->m_prmSet_OutputPort[port].init();
709 
710 #if FW_OBJECT_NAMES == 1
711  Fw::ObjectName portName;
712  portName.format(
713  "%s_prmSet_OutputPort[%" PRI_FwIndexType "]",
714  this->m_objName.toChar(),
715  port
716  );
717  this->m_prmSet_OutputPort[port].setObjName(portName.toChar());
718 #endif
719  }
720 
721  // Connect output port timeCaller
722  for (
723  FwIndexType port = 0;
724  port < static_cast<FwIndexType>(this->getNum_timeCaller_OutputPorts());
725  port++
726  ) {
727  this->m_timeCaller_OutputPort[port].init();
728 
729 #if FW_OBJECT_NAMES == 1
730  Fw::ObjectName portName;
731  portName.format(
732  "%s_timeCaller_OutputPort[%" PRI_FwIndexType "]",
733  this->m_objName.toChar(),
734  port
735  );
736  this->m_timeCaller_OutputPort[port].setObjName(portName.toChar());
737 #endif
738  }
739 
740  // Connect output port tlmOut
741  for (
742  FwIndexType port = 0;
743  port < static_cast<FwIndexType>(this->getNum_tlmOut_OutputPorts());
744  port++
745  ) {
746  this->m_tlmOut_OutputPort[port].init();
747 
748 #if FW_OBJECT_NAMES == 1
749  Fw::ObjectName portName;
750  portName.format(
751  "%s_tlmOut_OutputPort[%" PRI_FwIndexType "]",
752  this->m_objName.toChar(),
753  port
754  );
755  this->m_tlmOut_OutputPort[port].setObjName(portName.toChar());
756 #endif
757  }
758 
759  // Connect output port cmdOut
760  for (
761  FwIndexType port = 0;
762  port < static_cast<FwIndexType>(this->getNum_cmdOut_OutputPorts());
763  port++
764  ) {
765  this->m_cmdOut_OutputPort[port].init();
766 
767 #if FW_OBJECT_NAMES == 1
768  Fw::ObjectName portName;
769  portName.format(
770  "%s_cmdOut_OutputPort[%" PRI_FwIndexType "]",
771  this->m_objName.toChar(),
772  port
773  );
774  this->m_cmdOut_OutputPort[port].setObjName(portName.toChar());
775 #endif
776  }
777 
778  // Connect output port getParam
779  for (
780  FwIndexType port = 0;
781  port < static_cast<FwIndexType>(this->getNum_getParam_OutputPorts());
782  port++
783  ) {
784  this->m_getParam_OutputPort[port].init();
785 
786 #if FW_OBJECT_NAMES == 1
787  Fw::ObjectName portName;
788  portName.format(
789  "%s_getParam_OutputPort[%" PRI_FwIndexType "]",
790  this->m_objName.toChar(),
791  port
792  );
793  this->m_getParam_OutputPort[port].setObjName(portName.toChar());
794 #endif
795  }
796 
797  // Connect output port getTlmChan
798  for (
799  FwIndexType port = 0;
800  port < static_cast<FwIndexType>(this->getNum_getTlmChan_OutputPorts());
801  port++
802  ) {
803  this->m_getTlmChan_OutputPort[port].init();
804 
805 #if FW_OBJECT_NAMES == 1
806  Fw::ObjectName portName;
807  portName.format(
808  "%s_getTlmChan_OutputPort[%" PRI_FwIndexType "]",
809  this->m_objName.toChar(),
810  port
811  );
812  this->m_getTlmChan_OutputPort[port].setObjName(portName.toChar());
813 #endif
814  }
815 
816  // Connect output port pingOut
817  for (
818  FwIndexType port = 0;
819  port < static_cast<FwIndexType>(this->getNum_pingOut_OutputPorts());
820  port++
821  ) {
822  this->m_pingOut_OutputPort[port].init();
823 
824 #if FW_OBJECT_NAMES == 1
825  Fw::ObjectName portName;
826  portName.format(
827  "%s_pingOut_OutputPort[%" PRI_FwIndexType "]",
828  this->m_objName.toChar(),
829  port
830  );
831  this->m_pingOut_OutputPort[port].setObjName(portName.toChar());
832 #endif
833  }
834 
835  // Connect output port seqDoneOut
836  for (
837  FwIndexType port = 0;
838  port < static_cast<FwIndexType>(this->getNum_seqDoneOut_OutputPorts());
839  port++
840  ) {
841  this->m_seqDoneOut_OutputPort[port].init();
842 
843 #if FW_OBJECT_NAMES == 1
844  Fw::ObjectName portName;
845  portName.format(
846  "%s_seqDoneOut_OutputPort[%" PRI_FwIndexType "]",
847  this->m_objName.toChar(),
848  port
849  );
850  this->m_seqDoneOut_OutputPort[port].setObjName(portName.toChar());
851 #endif
852  }
853 
854  // Connect output port seqStartOut
855  for (
856  FwIndexType port = 0;
857  port < static_cast<FwIndexType>(this->getNum_seqStartOut_OutputPorts());
858  port++
859  ) {
860  this->m_seqStartOut_OutputPort[port].init();
861 
862 #if FW_OBJECT_NAMES == 1
863  Fw::ObjectName portName;
864  portName.format(
865  "%s_seqStartOut_OutputPort[%" PRI_FwIndexType "]",
866  this->m_objName.toChar(),
867  port
868  );
869  this->m_seqStartOut_OutputPort[port].setObjName(portName.toChar());
870 #endif
871  }
872 
873  // Create the queue
874  Os::Queue::Status qStat = this->createQueue(
875  queueDepth,
876  static_cast<FwSizeType>(ComponentIpcSerializableBuffer::SERIALIZATION_SIZE)
877  );
878  FW_ASSERT(
879  Os::Queue::Status::OP_OK == qStat,
880  static_cast<FwAssertArgType>(qStat)
881  );
882  }
883 
884  // ----------------------------------------------------------------------
885  // Getters for special input ports
886  // ----------------------------------------------------------------------
887 
890  {
891  FW_ASSERT(
892  (0 <= portNum) && (portNum < this->getNum_cmdIn_InputPorts()),
893  static_cast<FwAssertArgType>(portNum)
894  );
895 
896  return &this->m_cmdIn_InputPort[portNum];
897  }
898 
899  // ----------------------------------------------------------------------
900  // Getters for typed input ports
901  // ----------------------------------------------------------------------
902 
905  {
906  FW_ASSERT(
907  (0 <= portNum) && (portNum < this->getNum_checkTimers_InputPorts()),
908  static_cast<FwAssertArgType>(portNum)
909  );
910 
911  return &this->m_checkTimers_InputPort[portNum];
912  }
913 
916  {
917  FW_ASSERT(
918  (0 <= portNum) && (portNum < this->getNum_cmdResponseIn_InputPorts()),
919  static_cast<FwAssertArgType>(portNum)
920  );
921 
922  return &this->m_cmdResponseIn_InputPort[portNum];
923  }
924 
927  {
928  FW_ASSERT(
929  (0 <= portNum) && (portNum < this->getNum_pingIn_InputPorts()),
930  static_cast<FwAssertArgType>(portNum)
931  );
932 
933  return &this->m_pingIn_InputPort[portNum];
934  }
935 
938  {
939  FW_ASSERT(
940  (0 <= portNum) && (portNum < this->getNum_seqRunIn_InputPorts()),
941  static_cast<FwAssertArgType>(portNum)
942  );
943 
944  return &this->m_seqRunIn_InputPort[portNum];
945  }
946 
949  {
950  FW_ASSERT(
951  (0 <= portNum) && (portNum < this->getNum_tlmWrite_InputPorts()),
952  static_cast<FwAssertArgType>(portNum)
953  );
954 
955  return &this->m_tlmWrite_InputPort[portNum];
956  }
957 
958  // ----------------------------------------------------------------------
959  // Connect input ports to special output ports
960  // ----------------------------------------------------------------------
961 
964  FwIndexType portNum,
965  Fw::InputCmdRegPort* port
966  )
967  {
968  FW_ASSERT(
969  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
970  static_cast<FwAssertArgType>(portNum)
971  );
972 
973  this->m_cmdRegOut_OutputPort[portNum].addCallPort(port);
974  }
975 
978  FwIndexType portNum,
980  )
981  {
982  FW_ASSERT(
983  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
984  static_cast<FwAssertArgType>(portNum)
985  );
986 
987  this->m_cmdResponseOut_OutputPort[portNum].addCallPort(port);
988  }
989 
992  FwIndexType portNum,
993  Fw::InputLogPort* port
994  )
995  {
996  FW_ASSERT(
997  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
998  static_cast<FwAssertArgType>(portNum)
999  );
1000 
1001  this->m_logOut_OutputPort[portNum].addCallPort(port);
1002  }
1003 
1004 #if FW_ENABLE_TEXT_LOGGING == 1
1005 
1006  void FpySequencerComponentBase ::
1007  set_logTextOut_OutputPort(
1008  FwIndexType portNum,
1009  Fw::InputLogTextPort* port
1010  )
1011  {
1012  FW_ASSERT(
1013  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
1014  static_cast<FwAssertArgType>(portNum)
1015  );
1016 
1017  this->m_logTextOut_OutputPort[portNum].addCallPort(port);
1018  }
1019 
1020 #endif
1021 
1024  FwIndexType portNum,
1025  Fw::InputPrmGetPort* port
1026  )
1027  {
1028  FW_ASSERT(
1029  (0 <= portNum) && (portNum < this->getNum_prmGet_OutputPorts()),
1030  static_cast<FwAssertArgType>(portNum)
1031  );
1032 
1033  this->m_prmGet_OutputPort[portNum].addCallPort(port);
1034  }
1035 
1038  FwIndexType portNum,
1039  Fw::InputPrmSetPort* port
1040  )
1041  {
1042  FW_ASSERT(
1043  (0 <= portNum) && (portNum < this->getNum_prmSet_OutputPorts()),
1044  static_cast<FwAssertArgType>(portNum)
1045  );
1046 
1047  this->m_prmSet_OutputPort[portNum].addCallPort(port);
1048  }
1049 
1052  FwIndexType portNum,
1053  Fw::InputTimePort* port
1054  )
1055  {
1056  FW_ASSERT(
1057  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
1058  static_cast<FwAssertArgType>(portNum)
1059  );
1060 
1061  this->m_timeCaller_OutputPort[portNum].addCallPort(port);
1062  }
1063 
1066  FwIndexType portNum,
1067  Fw::InputTlmPort* port
1068  )
1069  {
1070  FW_ASSERT(
1071  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
1072  static_cast<FwAssertArgType>(portNum)
1073  );
1074 
1075  this->m_tlmOut_OutputPort[portNum].addCallPort(port);
1076  }
1077 
1078  // ----------------------------------------------------------------------
1079  // Connect typed input ports to typed output ports
1080  // ----------------------------------------------------------------------
1081 
1084  FwIndexType portNum,
1085  Fw::InputComPort* port
1086  )
1087  {
1088  FW_ASSERT(
1089  (0 <= portNum) && (portNum < this->getNum_cmdOut_OutputPorts()),
1090  static_cast<FwAssertArgType>(portNum)
1091  );
1092 
1093  this->m_cmdOut_OutputPort[portNum].addCallPort(port);
1094  }
1095 
1098  FwIndexType portNum,
1099  Fw::InputPrmGetPort* port
1100  )
1101  {
1102  FW_ASSERT(
1103  (0 <= portNum) && (portNum < this->getNum_getParam_OutputPorts()),
1104  static_cast<FwAssertArgType>(portNum)
1105  );
1106 
1107  this->m_getParam_OutputPort[portNum].addCallPort(port);
1108  }
1109 
1112  FwIndexType portNum,
1113  Fw::InputTlmGetPort* port
1114  )
1115  {
1116  FW_ASSERT(
1117  (0 <= portNum) && (portNum < this->getNum_getTlmChan_OutputPorts()),
1118  static_cast<FwAssertArgType>(portNum)
1119  );
1120 
1121  this->m_getTlmChan_OutputPort[portNum].addCallPort(port);
1122  }
1123 
1126  FwIndexType portNum,
1127  Svc::InputPingPort* port
1128  )
1129  {
1130  FW_ASSERT(
1131  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
1132  static_cast<FwAssertArgType>(portNum)
1133  );
1134 
1135  this->m_pingOut_OutputPort[portNum].addCallPort(port);
1136  }
1137 
1140  FwIndexType portNum,
1142  )
1143  {
1144  FW_ASSERT(
1145  (0 <= portNum) && (portNum < this->getNum_seqDoneOut_OutputPorts()),
1146  static_cast<FwAssertArgType>(portNum)
1147  );
1148 
1149  this->m_seqDoneOut_OutputPort[portNum].addCallPort(port);
1150  }
1151 
1154  FwIndexType portNum,
1156  )
1157  {
1158  FW_ASSERT(
1159  (0 <= portNum) && (portNum < this->getNum_seqStartOut_OutputPorts()),
1160  static_cast<FwAssertArgType>(portNum)
1161  );
1162 
1163  this->m_seqStartOut_OutputPort[portNum].addCallPort(port);
1164  }
1165 
1166 #if FW_PORT_SERIALIZATION
1167 
1168  // ----------------------------------------------------------------------
1169  // Connect serial input ports to special output ports
1170  // ----------------------------------------------------------------------
1171 
1174  FwIndexType portNum,
1175  Fw::InputSerializePort* port
1176  )
1177  {
1178  FW_ASSERT(
1179  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
1180  static_cast<FwAssertArgType>(portNum)
1181  );
1182 
1183  this->m_cmdRegOut_OutputPort[portNum].registerSerialPort(port);
1184  }
1185 
1188  FwIndexType portNum,
1189  Fw::InputSerializePort* port
1190  )
1191  {
1192  FW_ASSERT(
1193  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
1194  static_cast<FwAssertArgType>(portNum)
1195  );
1196 
1197  this->m_cmdResponseOut_OutputPort[portNum].registerSerialPort(port);
1198  }
1199 
1202  FwIndexType portNum,
1203  Fw::InputSerializePort* port
1204  )
1205  {
1206  FW_ASSERT(
1207  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
1208  static_cast<FwAssertArgType>(portNum)
1209  );
1210 
1211  this->m_logOut_OutputPort[portNum].registerSerialPort(port);
1212  }
1213 
1214 #if FW_ENABLE_TEXT_LOGGING == 1
1215 
1216  void FpySequencerComponentBase ::
1217  set_logTextOut_OutputPort(
1218  FwIndexType portNum,
1219  Fw::InputSerializePort* port
1220  )
1221  {
1222  FW_ASSERT(
1223  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
1224  static_cast<FwAssertArgType>(portNum)
1225  );
1226 
1227  this->m_logTextOut_OutputPort[portNum].registerSerialPort(port);
1228  }
1229 
1230 #endif
1231 
1234  FwIndexType portNum,
1235  Fw::InputSerializePort* port
1236  )
1237  {
1238  FW_ASSERT(
1239  (0 <= portNum) && (portNum < this->getNum_prmSet_OutputPorts()),
1240  static_cast<FwAssertArgType>(portNum)
1241  );
1242 
1243  this->m_prmSet_OutputPort[portNum].registerSerialPort(port);
1244  }
1245 
1248  FwIndexType portNum,
1249  Fw::InputSerializePort* port
1250  )
1251  {
1252  FW_ASSERT(
1253  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
1254  static_cast<FwAssertArgType>(portNum)
1255  );
1256 
1257  this->m_timeCaller_OutputPort[portNum].registerSerialPort(port);
1258  }
1259 
1262  FwIndexType portNum,
1263  Fw::InputSerializePort* port
1264  )
1265  {
1266  FW_ASSERT(
1267  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
1268  static_cast<FwAssertArgType>(portNum)
1269  );
1270 
1271  this->m_tlmOut_OutputPort[portNum].registerSerialPort(port);
1272  }
1273 
1274 #endif
1275 
1276 #if FW_PORT_SERIALIZATION
1277 
1278  // ----------------------------------------------------------------------
1279  // Connect serial input ports to typed output ports
1280  // ----------------------------------------------------------------------
1281 
1284  FwIndexType portNum,
1285  Fw::InputSerializePort* port
1286  )
1287  {
1288  FW_ASSERT(
1289  (0 <= portNum) && (portNum < this->getNum_cmdOut_OutputPorts()),
1290  static_cast<FwAssertArgType>(portNum)
1291  );
1292 
1293  this->m_cmdOut_OutputPort[portNum].registerSerialPort(port);
1294  }
1295 
1298  FwIndexType portNum,
1299  Fw::InputSerializePort* port
1300  )
1301  {
1302  FW_ASSERT(
1303  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
1304  static_cast<FwAssertArgType>(portNum)
1305  );
1306 
1307  this->m_pingOut_OutputPort[portNum].registerSerialPort(port);
1308  }
1309 
1312  FwIndexType portNum,
1313  Fw::InputSerializePort* port
1314  )
1315  {
1316  FW_ASSERT(
1317  (0 <= portNum) && (portNum < this->getNum_seqDoneOut_OutputPorts()),
1318  static_cast<FwAssertArgType>(portNum)
1319  );
1320 
1321  this->m_seqDoneOut_OutputPort[portNum].registerSerialPort(port);
1322  }
1323 
1326  FwIndexType portNum,
1327  Fw::InputSerializePort* port
1328  )
1329  {
1330  FW_ASSERT(
1331  (0 <= portNum) && (portNum < this->getNum_seqStartOut_OutputPorts()),
1332  static_cast<FwAssertArgType>(portNum)
1333  );
1334 
1335  this->m_seqStartOut_OutputPort[portNum].registerSerialPort(port);
1336  }
1337 
1338 #endif
1339 
1340  // ----------------------------------------------------------------------
1341  // Command registration
1342  // ----------------------------------------------------------------------
1343 
1346  {
1347  FW_ASSERT(this->m_cmdRegOut_OutputPort[0].isConnected());
1348 
1349  this->m_cmdRegOut_OutputPort[0].invoke(
1350  this->getIdBase() + OPCODE_RUN
1351  );
1352 
1353  this->m_cmdRegOut_OutputPort[0].invoke(
1354  this->getIdBase() + OPCODE_VALIDATE
1355  );
1356 
1357  this->m_cmdRegOut_OutputPort[0].invoke(
1359  );
1360 
1361  this->m_cmdRegOut_OutputPort[0].invoke(
1362  this->getIdBase() + OPCODE_CANCEL
1363  );
1364 
1365  this->m_cmdRegOut_OutputPort[0].invoke(
1367  );
1368 
1369  this->m_cmdRegOut_OutputPort[0].invoke(
1370  this->getIdBase() + OPCODE_BREAK
1371  );
1372 
1373  this->m_cmdRegOut_OutputPort[0].invoke(
1374  this->getIdBase() + OPCODE_CONTINUE
1375  );
1376 
1377  this->m_cmdRegOut_OutputPort[0].invoke(
1379  );
1380 
1381  this->m_cmdRegOut_OutputPort[0].invoke(
1382  this->getIdBase() + OPCODE_STEP
1383  );
1384 
1385  this->m_cmdRegOut_OutputPort[0].invoke(
1386  this->getIdBase() + OPCODE_SET_FLAG
1387  );
1388 
1389  this->m_cmdRegOut_OutputPort[0].invoke(
1391  );
1392 
1393  this->m_cmdRegOut_OutputPort[0].invoke(
1395  );
1396 
1397  this->m_cmdRegOut_OutputPort[0].invoke(
1399  );
1400 
1401  this->m_cmdRegOut_OutputPort[0].invoke(
1403  );
1404 
1405  this->m_cmdRegOut_OutputPort[0].invoke(
1407  );
1408  }
1409 
1410  // ----------------------------------------------------------------------
1411  // Parameter loading
1412  // ----------------------------------------------------------------------
1413 
1416  {
1417  Fw::ParamBuffer _buff;
1419  const FwPrmIdType _baseId = static_cast<FwPrmIdType>(this->getIdBase());
1420  FW_ASSERT(this->m_prmGet_OutputPort[0].isConnected());
1421 
1422  FwPrmIdType _id{};
1423 
1424  _id = _baseId + PARAMID_STATEMENT_TIMEOUT_SECS;
1425 
1426  // Get parameter STATEMENT_TIMEOUT_SECS
1427  this->m_param_STATEMENT_TIMEOUT_SECS_valid =
1428  this->m_prmGet_OutputPort[0].invoke(
1429  _id,
1430  _buff
1431  );
1432 
1433  // Deserialize value
1434  this->m_paramLock.lock();
1435 
1436  // If there was a deserialization issue, mark it invalid
1437  if (this->m_param_STATEMENT_TIMEOUT_SECS_valid == Fw::ParamValid::VALID) {
1438  _stat = _buff.deserializeTo(this->m_STATEMENT_TIMEOUT_SECS);
1439  if (_stat != Fw::FW_SERIALIZE_OK) {
1440  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::DEFAULT;
1441  // Set default value
1442  this->m_STATEMENT_TIMEOUT_SECS = 0.0f;
1443  }
1444  }
1445  else {
1446  // Set default value
1447  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::DEFAULT;
1448  this->m_STATEMENT_TIMEOUT_SECS = 0.0f;
1449  }
1450 
1451  this->m_paramLock.unLock();
1452 
1453  _id = _baseId + PARAMID_FLAG_DEFAULT_EXIT_ON_CMD_FAIL;
1454 
1455  // Get parameter FLAG_DEFAULT_EXIT_ON_CMD_FAIL
1456  this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid =
1457  this->m_prmGet_OutputPort[0].invoke(
1458  _id,
1459  _buff
1460  );
1461 
1462  // Deserialize value
1463  this->m_paramLock.lock();
1464 
1465  // If there was a deserialization issue, mark it invalid
1466  if (this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid == Fw::ParamValid::VALID) {
1467  _stat = _buff.deserializeTo(this->m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL);
1468  if (_stat != Fw::FW_SERIALIZE_OK) {
1469  this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid = Fw::ParamValid::DEFAULT;
1470  // Set default value
1471  this->m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = false;
1472  }
1473  }
1474  else {
1475  // Set default value
1476  this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid = Fw::ParamValid::DEFAULT;
1477  this->m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = false;
1478  }
1479 
1480  this->m_paramLock.unLock();
1481 
1482  // Call notifier
1483  this->parametersLoaded();
1484  }
1485 
1486  // ----------------------------------------------------------------------
1487  // Component construction and destruction
1488  // ----------------------------------------------------------------------
1489 
1491  FpySequencerComponentBase(const char* compName) :
1492  Fw::ActiveComponentBase(compName),
1493  m_stateMachine_sequencer(*this)
1494  {
1495  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::UNINIT;
1496  this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid = Fw::ParamValid::UNINIT;
1497  }
1498 
1501  {
1502 
1503  }
1504 
1505  // ----------------------------------------------------------------------
1506  // Connection status queries for special output ports
1507  // ----------------------------------------------------------------------
1508 
1511  {
1512  FW_ASSERT(
1513  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
1514  static_cast<FwAssertArgType>(portNum)
1515  );
1516 
1517  return this->m_cmdRegOut_OutputPort[portNum].isConnected();
1518  }
1519 
1522  {
1523  FW_ASSERT(
1524  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
1525  static_cast<FwAssertArgType>(portNum)
1526  );
1527 
1528  return this->m_cmdResponseOut_OutputPort[portNum].isConnected();
1529  }
1530 
1533  {
1534  FW_ASSERT(
1535  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
1536  static_cast<FwAssertArgType>(portNum)
1537  );
1538 
1539  return this->m_logOut_OutputPort[portNum].isConnected();
1540  }
1541 
1542 #if FW_ENABLE_TEXT_LOGGING == 1
1543 
1544  bool FpySequencerComponentBase ::
1545  isConnected_logTextOut_OutputPort(FwIndexType portNum)
1546  {
1547  FW_ASSERT(
1548  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
1549  static_cast<FwAssertArgType>(portNum)
1550  );
1551 
1552  return this->m_logTextOut_OutputPort[portNum].isConnected();
1553  }
1554 
1555 #endif
1556 
1559  {
1560  FW_ASSERT(
1561  (0 <= portNum) && (portNum < this->getNum_prmGet_OutputPorts()),
1562  static_cast<FwAssertArgType>(portNum)
1563  );
1564 
1565  return this->m_prmGet_OutputPort[portNum].isConnected();
1566  }
1567 
1570  {
1571  FW_ASSERT(
1572  (0 <= portNum) && (portNum < this->getNum_prmSet_OutputPorts()),
1573  static_cast<FwAssertArgType>(portNum)
1574  );
1575 
1576  return this->m_prmSet_OutputPort[portNum].isConnected();
1577  }
1578 
1581  {
1582  FW_ASSERT(
1583  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
1584  static_cast<FwAssertArgType>(portNum)
1585  );
1586 
1587  return this->m_timeCaller_OutputPort[portNum].isConnected();
1588  }
1589 
1592  {
1593  FW_ASSERT(
1594  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
1595  static_cast<FwAssertArgType>(portNum)
1596  );
1597 
1598  return this->m_tlmOut_OutputPort[portNum].isConnected();
1599  }
1600 
1601  // ----------------------------------------------------------------------
1602  // Connection status queries for typed output ports
1603  // ----------------------------------------------------------------------
1604 
1607  {
1608  FW_ASSERT(
1609  (0 <= portNum) && (portNum < this->getNum_cmdOut_OutputPorts()),
1610  static_cast<FwAssertArgType>(portNum)
1611  );
1612 
1613  return this->m_cmdOut_OutputPort[portNum].isConnected();
1614  }
1615 
1618  {
1619  FW_ASSERT(
1620  (0 <= portNum) && (portNum < this->getNum_getParam_OutputPorts()),
1621  static_cast<FwAssertArgType>(portNum)
1622  );
1623 
1624  return this->m_getParam_OutputPort[portNum].isConnected();
1625  }
1626 
1629  {
1630  FW_ASSERT(
1631  (0 <= portNum) && (portNum < this->getNum_getTlmChan_OutputPorts()),
1632  static_cast<FwAssertArgType>(portNum)
1633  );
1634 
1635  return this->m_getTlmChan_OutputPort[portNum].isConnected();
1636  }
1637 
1640  {
1641  FW_ASSERT(
1642  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
1643  static_cast<FwAssertArgType>(portNum)
1644  );
1645 
1646  return this->m_pingOut_OutputPort[portNum].isConnected();
1647  }
1648 
1651  {
1652  FW_ASSERT(
1653  (0 <= portNum) && (portNum < this->getNum_seqDoneOut_OutputPorts()),
1654  static_cast<FwAssertArgType>(portNum)
1655  );
1656 
1657  return this->m_seqDoneOut_OutputPort[portNum].isConnected();
1658  }
1659 
1662  {
1663  FW_ASSERT(
1664  (0 <= portNum) && (portNum < this->getNum_seqStartOut_OutputPorts()),
1665  static_cast<FwAssertArgType>(portNum)
1666  );
1667 
1668  return this->m_seqStartOut_OutputPort[portNum].isConnected();
1669  }
1670 
1671  // ----------------------------------------------------------------------
1672  // Port handler base-class functions for typed input ports
1673  //
1674  // Call these functions directly to bypass the corresponding ports
1675  // ----------------------------------------------------------------------
1676 
1679  FwIndexType portNum,
1680  U32 context
1681  )
1682  {
1683  // Make sure port number is valid
1684  FW_ASSERT(
1685  (0 <= portNum) && (portNum < this->getNum_checkTimers_InputPorts()),
1686  static_cast<FwAssertArgType>(portNum)
1687  );
1688 
1689  // Call pre-message hook
1691  portNum,
1692  context
1693  );
1694  ComponentIpcSerializableBuffer msg;
1696 
1697  // Serialize message ID
1698  _status = msg.serializeFrom(
1699  static_cast<FwEnumStoreType>(CHECKTIMERS_SCHED)
1700  );
1701  FW_ASSERT(
1702  _status == Fw::FW_SERIALIZE_OK,
1703  static_cast<FwAssertArgType>(_status)
1704  );
1705 
1706  // Serialize port number
1707  _status = msg.serializeFrom(portNum);
1708  FW_ASSERT(
1709  _status == Fw::FW_SERIALIZE_OK,
1710  static_cast<FwAssertArgType>(_status)
1711  );
1712 
1713  // Serialize argument context
1714  _status = msg.serializeFrom(context);
1715  FW_ASSERT(
1716  _status == Fw::FW_SERIALIZE_OK,
1717  static_cast<FwAssertArgType>(_status)
1718  );
1719 
1720  // Send message
1722  Os::Queue::Status qStatus = this->m_queue.send(msg, 4, _block);
1723 
1724  FW_ASSERT(
1725  qStatus == Os::Queue::OP_OK,
1726  static_cast<FwAssertArgType>(qStatus)
1727  );
1728  }
1729 
1732  FwIndexType portNum,
1733  FwOpcodeType opCode,
1734  U32 cmdSeq,
1735  const Fw::CmdResponse& response
1736  )
1737  {
1738  // Make sure port number is valid
1739  FW_ASSERT(
1740  (0 <= portNum) && (portNum < this->getNum_cmdResponseIn_InputPorts()),
1741  static_cast<FwAssertArgType>(portNum)
1742  );
1743 
1744  // Call pre-message hook
1746  portNum,
1747  opCode,
1748  cmdSeq,
1749  response
1750  );
1751  ComponentIpcSerializableBuffer msg;
1753 
1754  // Serialize message ID
1755  _status = msg.serializeFrom(
1756  static_cast<FwEnumStoreType>(CMDRESPONSEIN_CMDRESPONSE)
1757  );
1758  FW_ASSERT(
1759  _status == Fw::FW_SERIALIZE_OK,
1760  static_cast<FwAssertArgType>(_status)
1761  );
1762 
1763  // Serialize port number
1764  _status = msg.serializeFrom(portNum);
1765  FW_ASSERT(
1766  _status == Fw::FW_SERIALIZE_OK,
1767  static_cast<FwAssertArgType>(_status)
1768  );
1769 
1770  // Serialize argument opCode
1771  _status = msg.serializeFrom(opCode);
1772  FW_ASSERT(
1773  _status == Fw::FW_SERIALIZE_OK,
1774  static_cast<FwAssertArgType>(_status)
1775  );
1776 
1777  // Serialize argument cmdSeq
1778  _status = msg.serializeFrom(cmdSeq);
1779  FW_ASSERT(
1780  _status == Fw::FW_SERIALIZE_OK,
1781  static_cast<FwAssertArgType>(_status)
1782  );
1783 
1784  // Serialize argument response
1785  _status = msg.serializeFrom(response);
1786  FW_ASSERT(
1787  _status == Fw::FW_SERIALIZE_OK,
1788  static_cast<FwAssertArgType>(_status)
1789  );
1790 
1791  // Send message
1793  Os::Queue::Status qStatus = this->m_queue.send(msg, 5, _block);
1794 
1795  FW_ASSERT(
1796  qStatus == Os::Queue::OP_OK,
1797  static_cast<FwAssertArgType>(qStatus)
1798  );
1799  }
1800 
1803  FwIndexType portNum,
1804  U32 key
1805  )
1806  {
1807  // Make sure port number is valid
1808  FW_ASSERT(
1809  (0 <= portNum) && (portNum < this->getNum_pingIn_InputPorts()),
1810  static_cast<FwAssertArgType>(portNum)
1811  );
1812 
1813  // Call pre-message hook
1815  portNum,
1816  key
1817  );
1818  ComponentIpcSerializableBuffer msg;
1820 
1821  // Serialize message ID
1822  _status = msg.serializeFrom(
1823  static_cast<FwEnumStoreType>(PINGIN_PING)
1824  );
1825  FW_ASSERT(
1826  _status == Fw::FW_SERIALIZE_OK,
1827  static_cast<FwAssertArgType>(_status)
1828  );
1829 
1830  // Serialize port number
1831  _status = msg.serializeFrom(portNum);
1832  FW_ASSERT(
1833  _status == Fw::FW_SERIALIZE_OK,
1834  static_cast<FwAssertArgType>(_status)
1835  );
1836 
1837  // Serialize argument key
1838  _status = msg.serializeFrom(key);
1839  FW_ASSERT(
1840  _status == Fw::FW_SERIALIZE_OK,
1841  static_cast<FwAssertArgType>(_status)
1842  );
1843 
1844  // Send message
1846  Os::Queue::Status qStatus = this->m_queue.send(msg, 10, _block);
1847 
1848  FW_ASSERT(
1849  qStatus == Os::Queue::OP_OK,
1850  static_cast<FwAssertArgType>(qStatus)
1851  );
1852  }
1853 
1856  FwIndexType portNum,
1857  const Fw::StringBase& filename
1858  )
1859  {
1860  // Make sure port number is valid
1861  FW_ASSERT(
1862  (0 <= portNum) && (portNum < this->getNum_seqRunIn_InputPorts()),
1863  static_cast<FwAssertArgType>(portNum)
1864  );
1865 
1866  // Call pre-message hook
1868  portNum,
1869  filename
1870  );
1871  ComponentIpcSerializableBuffer msg;
1873 
1874  // Serialize message ID
1875  _status = msg.serializeFrom(
1876  static_cast<FwEnumStoreType>(SEQRUNIN_CMDSEQIN)
1877  );
1878  FW_ASSERT(
1879  _status == Fw::FW_SERIALIZE_OK,
1880  static_cast<FwAssertArgType>(_status)
1881  );
1882 
1883  // Serialize port number
1884  _status = msg.serializeFrom(portNum);
1885  FW_ASSERT(
1886  _status == Fw::FW_SERIALIZE_OK,
1887  static_cast<FwAssertArgType>(_status)
1888  );
1889 
1890  // Serialize argument filename
1891  _status = filename.serializeTo(msg, 240);
1892  FW_ASSERT(
1893  _status == Fw::FW_SERIALIZE_OK,
1894  static_cast<FwAssertArgType>(_status)
1895  );
1896 
1897  // Send message
1899  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
1900 
1901  FW_ASSERT(
1902  qStatus == Os::Queue::OP_OK,
1903  static_cast<FwAssertArgType>(qStatus)
1904  );
1905  }
1906 
1909  FwIndexType portNum,
1910  U32 context
1911  )
1912  {
1913  // Make sure port number is valid
1914  FW_ASSERT(
1915  (0 <= portNum) && (portNum < this->getNum_tlmWrite_InputPorts()),
1916  static_cast<FwAssertArgType>(portNum)
1917  );
1918 
1919  // Call pre-message hook
1921  portNum,
1922  context
1923  );
1924  ComponentIpcSerializableBuffer msg;
1926 
1927  // Serialize message ID
1928  _status = msg.serializeFrom(
1929  static_cast<FwEnumStoreType>(TLMWRITE_SCHED)
1930  );
1931  FW_ASSERT(
1932  _status == Fw::FW_SERIALIZE_OK,
1933  static_cast<FwAssertArgType>(_status)
1934  );
1935 
1936  // Serialize port number
1937  _status = msg.serializeFrom(portNum);
1938  FW_ASSERT(
1939  _status == Fw::FW_SERIALIZE_OK,
1940  static_cast<FwAssertArgType>(_status)
1941  );
1942 
1943  // Serialize argument context
1944  _status = msg.serializeFrom(context);
1945  FW_ASSERT(
1946  _status == Fw::FW_SERIALIZE_OK,
1947  static_cast<FwAssertArgType>(_status)
1948  );
1949 
1950  // Send message
1952  Os::Queue::Status qStatus = this->m_queue.send(msg, 1, _block);
1953 
1954  FW_ASSERT(
1955  qStatus == Os::Queue::OP_OK,
1956  static_cast<FwAssertArgType>(qStatus)
1957  );
1958  }
1959 
1960  // ----------------------------------------------------------------------
1961  // Pre-message hooks for typed async input ports
1962  //
1963  // Each of these functions is invoked just before processing a message
1964  // on the corresponding port. By default, they do nothing. You can
1965  // override them to provide specific pre-message behavior.
1966  // ----------------------------------------------------------------------
1967 
1970  FwIndexType portNum,
1971  U32 context
1972  )
1973  {
1974  // Default: no-op
1975  }
1976 
1979  FwIndexType portNum,
1980  FwOpcodeType opCode,
1981  U32 cmdSeq,
1982  const Fw::CmdResponse& response
1983  )
1984  {
1985  // Default: no-op
1986  }
1987 
1990  FwIndexType portNum,
1991  U32 key
1992  )
1993  {
1994  // Default: no-op
1995  }
1996 
1999  FwIndexType portNum,
2000  const Fw::StringBase& filename
2001  )
2002  {
2003  // Default: no-op
2004  }
2005 
2008  FwIndexType portNum,
2009  U32 context
2010  )
2011  {
2012  // Default: no-op
2013  }
2014 
2015  // ----------------------------------------------------------------------
2016  // Invocation functions for typed output ports
2017  // ----------------------------------------------------------------------
2018 
2021  FwIndexType portNum,
2022  Fw::ComBuffer& data,
2023  U32 context
2024  )
2025  {
2026  FW_ASSERT(
2027  (0 <= portNum) && (portNum < this->getNum_cmdOut_OutputPorts()),
2028  static_cast<FwAssertArgType>(portNum)
2029  );
2030 
2031  FW_ASSERT(
2032  this->m_cmdOut_OutputPort[portNum].isConnected(),
2033  static_cast<FwAssertArgType>(portNum)
2034  );
2035  this->m_cmdOut_OutputPort[portNum].invoke(
2036  data,
2037  context
2038  );
2039  }
2040 
2043  FwIndexType portNum,
2044  FwPrmIdType id,
2045  Fw::ParamBuffer& val
2046  )
2047  {
2048  FW_ASSERT(
2049  (0 <= portNum) && (portNum < this->getNum_getParam_OutputPorts()),
2050  static_cast<FwAssertArgType>(portNum)
2051  );
2052 
2053  FW_ASSERT(
2054  this->m_getParam_OutputPort[portNum].isConnected(),
2055  static_cast<FwAssertArgType>(portNum)
2056  );
2057  return this->m_getParam_OutputPort[portNum].invoke(
2058  id,
2059  val
2060  );
2061  }
2062 
2065  FwIndexType portNum,
2066  FwChanIdType id,
2067  Fw::Time& timeTag,
2068  Fw::TlmBuffer& val
2069  )
2070  {
2071  FW_ASSERT(
2072  (0 <= portNum) && (portNum < this->getNum_getTlmChan_OutputPorts()),
2073  static_cast<FwAssertArgType>(portNum)
2074  );
2075 
2076  FW_ASSERT(
2077  this->m_getTlmChan_OutputPort[portNum].isConnected(),
2078  static_cast<FwAssertArgType>(portNum)
2079  );
2080  return this->m_getTlmChan_OutputPort[portNum].invoke(
2081  id,
2082  timeTag,
2083  val
2084  );
2085  }
2086 
2089  FwIndexType portNum,
2090  U32 key
2091  )
2092  {
2093  FW_ASSERT(
2094  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
2095  static_cast<FwAssertArgType>(portNum)
2096  );
2097 
2098  FW_ASSERT(
2099  this->m_pingOut_OutputPort[portNum].isConnected(),
2100  static_cast<FwAssertArgType>(portNum)
2101  );
2102  this->m_pingOut_OutputPort[portNum].invoke(
2103  key
2104  );
2105  }
2106 
2109  FwIndexType portNum,
2110  FwOpcodeType opCode,
2111  U32 cmdSeq,
2112  const Fw::CmdResponse& response
2113  )
2114  {
2115  FW_ASSERT(
2116  (0 <= portNum) && (portNum < this->getNum_seqDoneOut_OutputPorts()),
2117  static_cast<FwAssertArgType>(portNum)
2118  );
2119 
2120  FW_ASSERT(
2121  this->m_seqDoneOut_OutputPort[portNum].isConnected(),
2122  static_cast<FwAssertArgType>(portNum)
2123  );
2124  this->m_seqDoneOut_OutputPort[portNum].invoke(
2125  opCode,
2126  cmdSeq,
2127  response
2128  );
2129  }
2130 
2133  FwIndexType portNum,
2134  const Fw::StringBase& filename
2135  )
2136  {
2137  FW_ASSERT(
2138  (0 <= portNum) && (portNum < this->getNum_seqStartOut_OutputPorts()),
2139  static_cast<FwAssertArgType>(portNum)
2140  );
2141 
2142  FW_ASSERT(
2143  this->m_seqStartOut_OutputPort[portNum].isConnected(),
2144  static_cast<FwAssertArgType>(portNum)
2145  );
2146  this->m_seqStartOut_OutputPort[portNum].invoke(
2147  filename
2148  );
2149  }
2150 
2151  // ----------------------------------------------------------------------
2152  // Internal interface base-class functions
2153  // ----------------------------------------------------------------------
2154 
2157  {
2158  ComponentIpcSerializableBuffer msg;
2160 
2161  // Serialize the message ID
2162  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_ALLOCATE));
2163  FW_ASSERT (
2164  _status == Fw::FW_SERIALIZE_OK,
2165  static_cast<FwAssertArgType>(_status)
2166  );
2167 
2168  // Fake port number to make message dequeue work
2169  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2170  FW_ASSERT (
2171  _status == Fw::FW_SERIALIZE_OK,
2172  static_cast<FwAssertArgType>(_status)
2173  );
2174 
2175  _status = msg.serializeFrom(directive);
2176  FW_ASSERT(
2177  _status == Fw::FW_SERIALIZE_OK,
2178  static_cast<FwAssertArgType>(_status)
2179  );
2180 
2181  // Send message
2183  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2184 
2185  FW_ASSERT(
2186  qStatus == Os::Queue::OP_OK,
2187  static_cast<FwAssertArgType>(qStatus)
2188  );
2189  }
2190 
2193  {
2194  ComponentIpcSerializableBuffer msg;
2196 
2197  // Serialize the message ID
2198  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_CALL));
2199  FW_ASSERT (
2200  _status == Fw::FW_SERIALIZE_OK,
2201  static_cast<FwAssertArgType>(_status)
2202  );
2203 
2204  // Fake port number to make message dequeue work
2205  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2206  FW_ASSERT (
2207  _status == Fw::FW_SERIALIZE_OK,
2208  static_cast<FwAssertArgType>(_status)
2209  );
2210 
2211  _status = msg.serializeFrom(directive);
2212  FW_ASSERT(
2213  _status == Fw::FW_SERIALIZE_OK,
2214  static_cast<FwAssertArgType>(_status)
2215  );
2216 
2217  // Send message
2219  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2220 
2221  FW_ASSERT(
2222  qStatus == Os::Queue::OP_OK,
2223  static_cast<FwAssertArgType>(qStatus)
2224  );
2225  }
2226 
2229  {
2230  ComponentIpcSerializableBuffer msg;
2232 
2233  // Serialize the message ID
2234  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_CONSTCMD));
2235  FW_ASSERT (
2236  _status == Fw::FW_SERIALIZE_OK,
2237  static_cast<FwAssertArgType>(_status)
2238  );
2239 
2240  // Fake port number to make message dequeue work
2241  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2242  FW_ASSERT (
2243  _status == Fw::FW_SERIALIZE_OK,
2244  static_cast<FwAssertArgType>(_status)
2245  );
2246 
2247  _status = msg.serializeFrom(directive);
2248  FW_ASSERT(
2249  _status == Fw::FW_SERIALIZE_OK,
2250  static_cast<FwAssertArgType>(_status)
2251  );
2252 
2253  // Send message
2255  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2256 
2257  FW_ASSERT(
2258  qStatus == Os::Queue::OP_OK,
2259  static_cast<FwAssertArgType>(qStatus)
2260  );
2261  }
2262 
2265  {
2266  ComponentIpcSerializableBuffer msg;
2268 
2269  // Serialize the message ID
2270  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_DISCARD));
2271  FW_ASSERT (
2272  _status == Fw::FW_SERIALIZE_OK,
2273  static_cast<FwAssertArgType>(_status)
2274  );
2275 
2276  // Fake port number to make message dequeue work
2277  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2278  FW_ASSERT (
2279  _status == Fw::FW_SERIALIZE_OK,
2280  static_cast<FwAssertArgType>(_status)
2281  );
2282 
2283  _status = msg.serializeFrom(directive);
2284  FW_ASSERT(
2285  _status == Fw::FW_SERIALIZE_OK,
2286  static_cast<FwAssertArgType>(_status)
2287  );
2288 
2289  // Send message
2291  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2292 
2293  FW_ASSERT(
2294  qStatus == Os::Queue::OP_OK,
2295  static_cast<FwAssertArgType>(qStatus)
2296  );
2297  }
2298 
2301  {
2302  ComponentIpcSerializableBuffer msg;
2304 
2305  // Serialize the message ID
2306  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_EXIT));
2307  FW_ASSERT (
2308  _status == Fw::FW_SERIALIZE_OK,
2309  static_cast<FwAssertArgType>(_status)
2310  );
2311 
2312  // Fake port number to make message dequeue work
2313  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2314  FW_ASSERT (
2315  _status == Fw::FW_SERIALIZE_OK,
2316  static_cast<FwAssertArgType>(_status)
2317  );
2318 
2319  _status = msg.serializeFrom(directive);
2320  FW_ASSERT(
2321  _status == Fw::FW_SERIALIZE_OK,
2322  static_cast<FwAssertArgType>(_status)
2323  );
2324 
2325  // Send message
2327  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2328 
2329  FW_ASSERT(
2330  qStatus == Os::Queue::OP_OK,
2331  static_cast<FwAssertArgType>(qStatus)
2332  );
2333  }
2334 
2337  {
2338  ComponentIpcSerializableBuffer msg;
2340 
2341  // Serialize the message ID
2342  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_GETFIELD));
2343  FW_ASSERT (
2344  _status == Fw::FW_SERIALIZE_OK,
2345  static_cast<FwAssertArgType>(_status)
2346  );
2347 
2348  // Fake port number to make message dequeue work
2349  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2350  FW_ASSERT (
2351  _status == Fw::FW_SERIALIZE_OK,
2352  static_cast<FwAssertArgType>(_status)
2353  );
2354 
2355  _status = msg.serializeFrom(directive);
2356  FW_ASSERT(
2357  _status == Fw::FW_SERIALIZE_OK,
2358  static_cast<FwAssertArgType>(_status)
2359  );
2360 
2361  // Send message
2363  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2364 
2365  FW_ASSERT(
2366  qStatus == Os::Queue::OP_OK,
2367  static_cast<FwAssertArgType>(qStatus)
2368  );
2369  }
2370 
2373  {
2374  ComponentIpcSerializableBuffer msg;
2376 
2377  // Serialize the message ID
2378  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_GETFLAG));
2379  FW_ASSERT (
2380  _status == Fw::FW_SERIALIZE_OK,
2381  static_cast<FwAssertArgType>(_status)
2382  );
2383 
2384  // Fake port number to make message dequeue work
2385  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2386  FW_ASSERT (
2387  _status == Fw::FW_SERIALIZE_OK,
2388  static_cast<FwAssertArgType>(_status)
2389  );
2390 
2391  _status = msg.serializeFrom(directive);
2392  FW_ASSERT(
2393  _status == Fw::FW_SERIALIZE_OK,
2394  static_cast<FwAssertArgType>(_status)
2395  );
2396 
2397  // Send message
2399  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2400 
2401  FW_ASSERT(
2402  qStatus == Os::Queue::OP_OK,
2403  static_cast<FwAssertArgType>(qStatus)
2404  );
2405  }
2406 
2409  {
2410  ComponentIpcSerializableBuffer msg;
2412 
2413  // Serialize the message ID
2414  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_GOTO));
2415  FW_ASSERT (
2416  _status == Fw::FW_SERIALIZE_OK,
2417  static_cast<FwAssertArgType>(_status)
2418  );
2419 
2420  // Fake port number to make message dequeue work
2421  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2422  FW_ASSERT (
2423  _status == Fw::FW_SERIALIZE_OK,
2424  static_cast<FwAssertArgType>(_status)
2425  );
2426 
2427  _status = msg.serializeFrom(directive);
2428  FW_ASSERT(
2429  _status == Fw::FW_SERIALIZE_OK,
2430  static_cast<FwAssertArgType>(_status)
2431  );
2432 
2433  // Send message
2435  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2436 
2437  FW_ASSERT(
2438  qStatus == Os::Queue::OP_OK,
2439  static_cast<FwAssertArgType>(qStatus)
2440  );
2441  }
2442 
2445  {
2446  ComponentIpcSerializableBuffer msg;
2448 
2449  // Serialize the message ID
2450  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_IF));
2451  FW_ASSERT (
2452  _status == Fw::FW_SERIALIZE_OK,
2453  static_cast<FwAssertArgType>(_status)
2454  );
2455 
2456  // Fake port number to make message dequeue work
2457  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2458  FW_ASSERT (
2459  _status == Fw::FW_SERIALIZE_OK,
2460  static_cast<FwAssertArgType>(_status)
2461  );
2462 
2463  _status = msg.serializeFrom(directive);
2464  FW_ASSERT(
2465  _status == Fw::FW_SERIALIZE_OK,
2466  static_cast<FwAssertArgType>(_status)
2467  );
2468 
2469  // Send message
2471  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2472 
2473  FW_ASSERT(
2474  qStatus == Os::Queue::OP_OK,
2475  static_cast<FwAssertArgType>(qStatus)
2476  );
2477  }
2478 
2481  {
2482  ComponentIpcSerializableBuffer msg;
2484 
2485  // Serialize the message ID
2486  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_LOADABS));
2487  FW_ASSERT (
2488  _status == Fw::FW_SERIALIZE_OK,
2489  static_cast<FwAssertArgType>(_status)
2490  );
2491 
2492  // Fake port number to make message dequeue work
2493  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2494  FW_ASSERT (
2495  _status == Fw::FW_SERIALIZE_OK,
2496  static_cast<FwAssertArgType>(_status)
2497  );
2498 
2499  _status = msg.serializeFrom(directive);
2500  FW_ASSERT(
2501  _status == Fw::FW_SERIALIZE_OK,
2502  static_cast<FwAssertArgType>(_status)
2503  );
2504 
2505  // Send message
2507  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2508 
2509  FW_ASSERT(
2510  qStatus == Os::Queue::OP_OK,
2511  static_cast<FwAssertArgType>(qStatus)
2512  );
2513  }
2514 
2517  {
2518  ComponentIpcSerializableBuffer msg;
2520 
2521  // Serialize the message ID
2522  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_LOADREL));
2523  FW_ASSERT (
2524  _status == Fw::FW_SERIALIZE_OK,
2525  static_cast<FwAssertArgType>(_status)
2526  );
2527 
2528  // Fake port number to make message dequeue work
2529  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2530  FW_ASSERT (
2531  _status == Fw::FW_SERIALIZE_OK,
2532  static_cast<FwAssertArgType>(_status)
2533  );
2534 
2535  _status = msg.serializeFrom(directive);
2536  FW_ASSERT(
2537  _status == Fw::FW_SERIALIZE_OK,
2538  static_cast<FwAssertArgType>(_status)
2539  );
2540 
2541  // Send message
2543  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2544 
2545  FW_ASSERT(
2546  qStatus == Os::Queue::OP_OK,
2547  static_cast<FwAssertArgType>(qStatus)
2548  );
2549  }
2550 
2553  {
2554  ComponentIpcSerializableBuffer msg;
2556 
2557  // Serialize the message ID
2558  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_MEMCMP));
2559  FW_ASSERT (
2560  _status == Fw::FW_SERIALIZE_OK,
2561  static_cast<FwAssertArgType>(_status)
2562  );
2563 
2564  // Fake port number to make message dequeue work
2565  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2566  FW_ASSERT (
2567  _status == Fw::FW_SERIALIZE_OK,
2568  static_cast<FwAssertArgType>(_status)
2569  );
2570 
2571  _status = msg.serializeFrom(directive);
2572  FW_ASSERT(
2573  _status == Fw::FW_SERIALIZE_OK,
2574  static_cast<FwAssertArgType>(_status)
2575  );
2576 
2577  // Send message
2579  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2580 
2581  FW_ASSERT(
2582  qStatus == Os::Queue::OP_OK,
2583  static_cast<FwAssertArgType>(qStatus)
2584  );
2585  }
2586 
2589  {
2590  ComponentIpcSerializableBuffer msg;
2592 
2593  // Serialize the message ID
2594  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_NOOP));
2595  FW_ASSERT (
2596  _status == Fw::FW_SERIALIZE_OK,
2597  static_cast<FwAssertArgType>(_status)
2598  );
2599 
2600  // Fake port number to make message dequeue work
2601  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2602  FW_ASSERT (
2603  _status == Fw::FW_SERIALIZE_OK,
2604  static_cast<FwAssertArgType>(_status)
2605  );
2606 
2607  _status = msg.serializeFrom(directive);
2608  FW_ASSERT(
2609  _status == Fw::FW_SERIALIZE_OK,
2610  static_cast<FwAssertArgType>(_status)
2611  );
2612 
2613  // Send message
2615  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2616 
2617  FW_ASSERT(
2618  qStatus == Os::Queue::OP_OK,
2619  static_cast<FwAssertArgType>(qStatus)
2620  );
2621  }
2622 
2625  {
2626  ComponentIpcSerializableBuffer msg;
2628 
2629  // Serialize the message ID
2630  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PEEK));
2631  FW_ASSERT (
2632  _status == Fw::FW_SERIALIZE_OK,
2633  static_cast<FwAssertArgType>(_status)
2634  );
2635 
2636  // Fake port number to make message dequeue work
2637  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2638  FW_ASSERT (
2639  _status == Fw::FW_SERIALIZE_OK,
2640  static_cast<FwAssertArgType>(_status)
2641  );
2642 
2643  _status = msg.serializeFrom(directive);
2644  FW_ASSERT(
2645  _status == Fw::FW_SERIALIZE_OK,
2646  static_cast<FwAssertArgType>(_status)
2647  );
2648 
2649  // Send message
2651  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2652 
2653  FW_ASSERT(
2654  qStatus == Os::Queue::OP_OK,
2655  static_cast<FwAssertArgType>(qStatus)
2656  );
2657  }
2658 
2661  {
2662  ComponentIpcSerializableBuffer msg;
2664 
2665  // Serialize the message ID
2666  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHPRM));
2667  FW_ASSERT (
2668  _status == Fw::FW_SERIALIZE_OK,
2669  static_cast<FwAssertArgType>(_status)
2670  );
2671 
2672  // Fake port number to make message dequeue work
2673  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2674  FW_ASSERT (
2675  _status == Fw::FW_SERIALIZE_OK,
2676  static_cast<FwAssertArgType>(_status)
2677  );
2678 
2679  _status = msg.serializeFrom(directive);
2680  FW_ASSERT(
2681  _status == Fw::FW_SERIALIZE_OK,
2682  static_cast<FwAssertArgType>(_status)
2683  );
2684 
2685  // Send message
2687  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2688 
2689  FW_ASSERT(
2690  qStatus == Os::Queue::OP_OK,
2691  static_cast<FwAssertArgType>(qStatus)
2692  );
2693  }
2694 
2697  {
2698  ComponentIpcSerializableBuffer msg;
2700 
2701  // Serialize the message ID
2702  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHTIME));
2703  FW_ASSERT (
2704  _status == Fw::FW_SERIALIZE_OK,
2705  static_cast<FwAssertArgType>(_status)
2706  );
2707 
2708  // Fake port number to make message dequeue work
2709  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2710  FW_ASSERT (
2711  _status == Fw::FW_SERIALIZE_OK,
2712  static_cast<FwAssertArgType>(_status)
2713  );
2714 
2715  _status = msg.serializeFrom(directive);
2716  FW_ASSERT(
2717  _status == Fw::FW_SERIALIZE_OK,
2718  static_cast<FwAssertArgType>(_status)
2719  );
2720 
2721  // Send message
2723  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2724 
2725  FW_ASSERT(
2726  qStatus == Os::Queue::OP_OK,
2727  static_cast<FwAssertArgType>(qStatus)
2728  );
2729  }
2730 
2733  {
2734  ComponentIpcSerializableBuffer msg;
2736 
2737  // Serialize the message ID
2738  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHTLMVAL));
2739  FW_ASSERT (
2740  _status == Fw::FW_SERIALIZE_OK,
2741  static_cast<FwAssertArgType>(_status)
2742  );
2743 
2744  // Fake port number to make message dequeue work
2745  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2746  FW_ASSERT (
2747  _status == Fw::FW_SERIALIZE_OK,
2748  static_cast<FwAssertArgType>(_status)
2749  );
2750 
2751  _status = msg.serializeFrom(directive);
2752  FW_ASSERT(
2753  _status == Fw::FW_SERIALIZE_OK,
2754  static_cast<FwAssertArgType>(_status)
2755  );
2756 
2757  // Send message
2759  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2760 
2761  FW_ASSERT(
2762  qStatus == Os::Queue::OP_OK,
2763  static_cast<FwAssertArgType>(qStatus)
2764  );
2765  }
2766 
2769  {
2770  ComponentIpcSerializableBuffer msg;
2772 
2773  // Serialize the message ID
2774  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHTLMVALANDTIME));
2775  FW_ASSERT (
2776  _status == Fw::FW_SERIALIZE_OK,
2777  static_cast<FwAssertArgType>(_status)
2778  );
2779 
2780  // Fake port number to make message dequeue work
2781  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2782  FW_ASSERT (
2783  _status == Fw::FW_SERIALIZE_OK,
2784  static_cast<FwAssertArgType>(_status)
2785  );
2786 
2787  _status = msg.serializeFrom(directive);
2788  FW_ASSERT(
2789  _status == Fw::FW_SERIALIZE_OK,
2790  static_cast<FwAssertArgType>(_status)
2791  );
2792 
2793  // Send message
2795  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2796 
2797  FW_ASSERT(
2798  qStatus == Os::Queue::OP_OK,
2799  static_cast<FwAssertArgType>(qStatus)
2800  );
2801  }
2802 
2805  {
2806  ComponentIpcSerializableBuffer msg;
2808 
2809  // Serialize the message ID
2810  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHVAL));
2811  FW_ASSERT (
2812  _status == Fw::FW_SERIALIZE_OK,
2813  static_cast<FwAssertArgType>(_status)
2814  );
2815 
2816  // Fake port number to make message dequeue work
2817  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2818  FW_ASSERT (
2819  _status == Fw::FW_SERIALIZE_OK,
2820  static_cast<FwAssertArgType>(_status)
2821  );
2822 
2823  _status = msg.serializeFrom(directive);
2824  FW_ASSERT(
2825  _status == Fw::FW_SERIALIZE_OK,
2826  static_cast<FwAssertArgType>(_status)
2827  );
2828 
2829  // Send message
2831  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2832 
2833  FW_ASSERT(
2834  qStatus == Os::Queue::OP_OK,
2835  static_cast<FwAssertArgType>(qStatus)
2836  );
2837  }
2838 
2841  {
2842  ComponentIpcSerializableBuffer msg;
2844 
2845  // Serialize the message ID
2846  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_RETURN));
2847  FW_ASSERT (
2848  _status == Fw::FW_SERIALIZE_OK,
2849  static_cast<FwAssertArgType>(_status)
2850  );
2851 
2852  // Fake port number to make message dequeue work
2853  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2854  FW_ASSERT (
2855  _status == Fw::FW_SERIALIZE_OK,
2856  static_cast<FwAssertArgType>(_status)
2857  );
2858 
2859  _status = msg.serializeFrom(directive);
2860  FW_ASSERT(
2861  _status == Fw::FW_SERIALIZE_OK,
2862  static_cast<FwAssertArgType>(_status)
2863  );
2864 
2865  // Send message
2867  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2868 
2869  FW_ASSERT(
2870  qStatus == Os::Queue::OP_OK,
2871  static_cast<FwAssertArgType>(qStatus)
2872  );
2873  }
2874 
2877  {
2878  ComponentIpcSerializableBuffer msg;
2880 
2881  // Serialize the message ID
2882  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_SETFLAG));
2883  FW_ASSERT (
2884  _status == Fw::FW_SERIALIZE_OK,
2885  static_cast<FwAssertArgType>(_status)
2886  );
2887 
2888  // Fake port number to make message dequeue work
2889  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2890  FW_ASSERT (
2891  _status == Fw::FW_SERIALIZE_OK,
2892  static_cast<FwAssertArgType>(_status)
2893  );
2894 
2895  _status = msg.serializeFrom(directive);
2896  FW_ASSERT(
2897  _status == Fw::FW_SERIALIZE_OK,
2898  static_cast<FwAssertArgType>(_status)
2899  );
2900 
2901  // Send message
2903  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2904 
2905  FW_ASSERT(
2906  qStatus == Os::Queue::OP_OK,
2907  static_cast<FwAssertArgType>(qStatus)
2908  );
2909  }
2910 
2913  {
2914  ComponentIpcSerializableBuffer msg;
2916 
2917  // Serialize the message ID
2918  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STACKCMD));
2919  FW_ASSERT (
2920  _status == Fw::FW_SERIALIZE_OK,
2921  static_cast<FwAssertArgType>(_status)
2922  );
2923 
2924  // Fake port number to make message dequeue work
2925  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2926  FW_ASSERT (
2927  _status == Fw::FW_SERIALIZE_OK,
2928  static_cast<FwAssertArgType>(_status)
2929  );
2930 
2931  _status = msg.serializeFrom(directive);
2932  FW_ASSERT(
2933  _status == Fw::FW_SERIALIZE_OK,
2934  static_cast<FwAssertArgType>(_status)
2935  );
2936 
2937  // Send message
2939  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2940 
2941  FW_ASSERT(
2942  qStatus == Os::Queue::OP_OK,
2943  static_cast<FwAssertArgType>(qStatus)
2944  );
2945  }
2946 
2949  {
2950  ComponentIpcSerializableBuffer msg;
2952 
2953  // Serialize the message ID
2954  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STACKOP));
2955  FW_ASSERT (
2956  _status == Fw::FW_SERIALIZE_OK,
2957  static_cast<FwAssertArgType>(_status)
2958  );
2959 
2960  // Fake port number to make message dequeue work
2961  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2962  FW_ASSERT (
2963  _status == Fw::FW_SERIALIZE_OK,
2964  static_cast<FwAssertArgType>(_status)
2965  );
2966 
2967  _status = msg.serializeFrom(directive);
2968  FW_ASSERT(
2969  _status == Fw::FW_SERIALIZE_OK,
2970  static_cast<FwAssertArgType>(_status)
2971  );
2972 
2973  // Send message
2975  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2976 
2977  FW_ASSERT(
2978  qStatus == Os::Queue::OP_OK,
2979  static_cast<FwAssertArgType>(qStatus)
2980  );
2981  }
2982 
2985  {
2986  ComponentIpcSerializableBuffer msg;
2988 
2989  // Serialize the message ID
2990  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STOREABS));
2991  FW_ASSERT (
2992  _status == Fw::FW_SERIALIZE_OK,
2993  static_cast<FwAssertArgType>(_status)
2994  );
2995 
2996  // Fake port number to make message dequeue work
2997  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2998  FW_ASSERT (
2999  _status == Fw::FW_SERIALIZE_OK,
3000  static_cast<FwAssertArgType>(_status)
3001  );
3002 
3003  _status = msg.serializeFrom(directive);
3004  FW_ASSERT(
3005  _status == Fw::FW_SERIALIZE_OK,
3006  static_cast<FwAssertArgType>(_status)
3007  );
3008 
3009  // Send message
3011  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3012 
3013  FW_ASSERT(
3014  qStatus == Os::Queue::OP_OK,
3015  static_cast<FwAssertArgType>(qStatus)
3016  );
3017  }
3018 
3021  {
3022  ComponentIpcSerializableBuffer msg;
3024 
3025  // Serialize the message ID
3026  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STOREABSCONSTOFFSET));
3027  FW_ASSERT (
3028  _status == Fw::FW_SERIALIZE_OK,
3029  static_cast<FwAssertArgType>(_status)
3030  );
3031 
3032  // Fake port number to make message dequeue work
3033  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3034  FW_ASSERT (
3035  _status == Fw::FW_SERIALIZE_OK,
3036  static_cast<FwAssertArgType>(_status)
3037  );
3038 
3039  _status = msg.serializeFrom(directive);
3040  FW_ASSERT(
3041  _status == Fw::FW_SERIALIZE_OK,
3042  static_cast<FwAssertArgType>(_status)
3043  );
3044 
3045  // Send message
3047  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3048 
3049  FW_ASSERT(
3050  qStatus == Os::Queue::OP_OK,
3051  static_cast<FwAssertArgType>(qStatus)
3052  );
3053  }
3054 
3057  {
3058  ComponentIpcSerializableBuffer msg;
3060 
3061  // Serialize the message ID
3062  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STOREREL));
3063  FW_ASSERT (
3064  _status == Fw::FW_SERIALIZE_OK,
3065  static_cast<FwAssertArgType>(_status)
3066  );
3067 
3068  // Fake port number to make message dequeue work
3069  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3070  FW_ASSERT (
3071  _status == Fw::FW_SERIALIZE_OK,
3072  static_cast<FwAssertArgType>(_status)
3073  );
3074 
3075  _status = msg.serializeFrom(directive);
3076  FW_ASSERT(
3077  _status == Fw::FW_SERIALIZE_OK,
3078  static_cast<FwAssertArgType>(_status)
3079  );
3080 
3081  // Send message
3083  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3084 
3085  FW_ASSERT(
3086  qStatus == Os::Queue::OP_OK,
3087  static_cast<FwAssertArgType>(qStatus)
3088  );
3089  }
3090 
3093  {
3094  ComponentIpcSerializableBuffer msg;
3096 
3097  // Serialize the message ID
3098  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STORERELCONSTOFFSET));
3099  FW_ASSERT (
3100  _status == Fw::FW_SERIALIZE_OK,
3101  static_cast<FwAssertArgType>(_status)
3102  );
3103 
3104  // Fake port number to make message dequeue work
3105  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3106  FW_ASSERT (
3107  _status == Fw::FW_SERIALIZE_OK,
3108  static_cast<FwAssertArgType>(_status)
3109  );
3110 
3111  _status = msg.serializeFrom(directive);
3112  FW_ASSERT(
3113  _status == Fw::FW_SERIALIZE_OK,
3114  static_cast<FwAssertArgType>(_status)
3115  );
3116 
3117  // Send message
3119  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3120 
3121  FW_ASSERT(
3122  qStatus == Os::Queue::OP_OK,
3123  static_cast<FwAssertArgType>(qStatus)
3124  );
3125  }
3126 
3129  {
3130  ComponentIpcSerializableBuffer msg;
3132 
3133  // Serialize the message ID
3134  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_WAITABS));
3135  FW_ASSERT (
3136  _status == Fw::FW_SERIALIZE_OK,
3137  static_cast<FwAssertArgType>(_status)
3138  );
3139 
3140  // Fake port number to make message dequeue work
3141  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3142  FW_ASSERT (
3143  _status == Fw::FW_SERIALIZE_OK,
3144  static_cast<FwAssertArgType>(_status)
3145  );
3146 
3147  _status = msg.serializeFrom(directive);
3148  FW_ASSERT(
3149  _status == Fw::FW_SERIALIZE_OK,
3150  static_cast<FwAssertArgType>(_status)
3151  );
3152 
3153  // Send message
3155  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3156 
3157  FW_ASSERT(
3158  qStatus == Os::Queue::OP_OK,
3159  static_cast<FwAssertArgType>(qStatus)
3160  );
3161  }
3162 
3165  {
3166  ComponentIpcSerializableBuffer msg;
3168 
3169  // Serialize the message ID
3170  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_WAITREL));
3171  FW_ASSERT (
3172  _status == Fw::FW_SERIALIZE_OK,
3173  static_cast<FwAssertArgType>(_status)
3174  );
3175 
3176  // Fake port number to make message dequeue work
3177  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3178  FW_ASSERT (
3179  _status == Fw::FW_SERIALIZE_OK,
3180  static_cast<FwAssertArgType>(_status)
3181  );
3182 
3183  _status = msg.serializeFrom(directive);
3184  FW_ASSERT(
3185  _status == Fw::FW_SERIALIZE_OK,
3186  static_cast<FwAssertArgType>(_status)
3187  );
3188 
3189  // Send message
3191  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3192 
3193  FW_ASSERT(
3194  qStatus == Os::Queue::OP_OK,
3195  static_cast<FwAssertArgType>(qStatus)
3196  );
3197  }
3198 
3199  // ----------------------------------------------------------------------
3200  // State getter functions
3201  // ----------------------------------------------------------------------
3202 
3205  {
3206  return this->m_stateMachine_sequencer.getState();
3207  }
3208 
3209  // ----------------------------------------------------------------------
3210  // Signal send functions
3211  // ----------------------------------------------------------------------
3212 
3215  {
3216  ComponentIpcSerializableBuffer buffer;
3217  // Serialize the message type, port number, state ID, and signal
3218  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_VALIDATE), buffer);
3219  // Serialize the signal data
3220  const Fw::SerializeStatus status = buffer.serializeFrom(value);
3221  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
3222  // Send the message and handle overflow
3223  this->sequencer_sendSignalFinish(buffer);
3224  }
3225 
3228  {
3229  ComponentIpcSerializableBuffer buffer;
3230  // Serialize the message type, port number, state ID, and signal
3231  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_RUN), buffer);
3232  // Serialize the signal data
3233  const Fw::SerializeStatus status = buffer.serializeFrom(value);
3234  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
3235  // Send the message and handle overflow
3236  this->sequencer_sendSignalFinish(buffer);
3237  }
3238 
3241  {
3242  ComponentIpcSerializableBuffer buffer;
3243  // Serialize the message type, port number, state ID, and signal
3244  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_RUN_VALIDATED), buffer);
3245  // Serialize the signal data
3246  const Fw::SerializeStatus status = buffer.serializeFrom(value);
3247  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
3248  // Send the message and handle overflow
3249  this->sequencer_sendSignalFinish(buffer);
3250  }
3251 
3254  {
3255  ComponentIpcSerializableBuffer buffer;
3256  // Serialize the message type, port number, state ID, and signal
3257  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_CANCEL), buffer);
3258  // Send the message and handle overflow
3259  this->sequencer_sendSignalFinish(buffer);
3260  }
3261 
3264  {
3265  ComponentIpcSerializableBuffer buffer;
3266  // Serialize the message type, port number, state ID, and signal
3267  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_SET_BREAKPOINT), buffer);
3268  // Serialize the signal data
3269  const Fw::SerializeStatus status = buffer.serializeFrom(value);
3270  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
3271  // Send the message and handle overflow
3272  this->sequencer_sendSignalFinish(buffer);
3273  }
3274 
3277  {
3278  ComponentIpcSerializableBuffer buffer;
3279  // Serialize the message type, port number, state ID, and signal
3280  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_CLEAR_BREAKPOINT), buffer);
3281  // Send the message and handle overflow
3282  this->sequencer_sendSignalFinish(buffer);
3283  }
3284 
3287  {
3288  ComponentIpcSerializableBuffer buffer;
3289  // Serialize the message type, port number, state ID, and signal
3290  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_failure), buffer);
3291  // Send the message and handle overflow
3292  this->sequencer_sendSignalFinish(buffer);
3293  }
3294 
3297  {
3298  ComponentIpcSerializableBuffer buffer;
3299  // Serialize the message type, port number, state ID, and signal
3300  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_success), buffer);
3301  // Send the message and handle overflow
3302  this->sequencer_sendSignalFinish(buffer);
3303  }
3304 
3307  {
3308  ComponentIpcSerializableBuffer buffer;
3309  // Serialize the message type, port number, state ID, and signal
3310  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::entered), buffer);
3311  // Send the message and handle overflow
3312  this->sequencer_sendSignalFinish(buffer);
3313  }
3314 
3317  {
3318  ComponentIpcSerializableBuffer buffer;
3319  // Serialize the message type, port number, state ID, and signal
3320  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_dispatchStatement_success), buffer);
3321  // Send the message and handle overflow
3322  this->sequencer_sendSignalFinish(buffer);
3323  }
3324 
3327  {
3328  ComponentIpcSerializableBuffer buffer;
3329  // Serialize the message type, port number, state ID, and signal
3330  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_dispatchStatement_failure), buffer);
3331  // Send the message and handle overflow
3332  this->sequencer_sendSignalFinish(buffer);
3333  }
3334 
3337  {
3338  ComponentIpcSerializableBuffer buffer;
3339  // Serialize the message type, port number, state ID, and signal
3340  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_dispatchStatement_noMoreStatements), buffer);
3341  // Send the message and handle overflow
3342  this->sequencer_sendSignalFinish(buffer);
3343  }
3344 
3347  {
3348  ComponentIpcSerializableBuffer buffer;
3349  // Serialize the message type, port number, state ID, and signal
3350  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::checkTimersIn), buffer);
3351  // Send the message and handle overflow
3352  this->sequencer_sendSignalFinish(buffer);
3353  }
3354 
3357  {
3358  ComponentIpcSerializableBuffer buffer;
3359  // Serialize the message type, port number, state ID, and signal
3360  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_checkShouldWake_wakeup), buffer);
3361  // Send the message and handle overflow
3362  this->sequencer_sendSignalFinish(buffer);
3363  }
3364 
3367  {
3368  ComponentIpcSerializableBuffer buffer;
3369  // Serialize the message type, port number, state ID, and signal
3370  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_checkShouldWake_keepSleeping), buffer);
3371  // Send the message and handle overflow
3372  this->sequencer_sendSignalFinish(buffer);
3373  }
3374 
3377  {
3378  ComponentIpcSerializableBuffer buffer;
3379  // Serialize the message type, port number, state ID, and signal
3380  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_timeOpFailed), buffer);
3381  // Send the message and handle overflow
3382  this->sequencer_sendSignalFinish(buffer);
3383  }
3384 
3387  {
3388  ComponentIpcSerializableBuffer buffer;
3389  // Serialize the message type, port number, state ID, and signal
3390  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_beginSleep), buffer);
3391  // Send the message and handle overflow
3392  this->sequencer_sendSignalFinish(buffer);
3393  }
3394 
3397  {
3398  ComponentIpcSerializableBuffer buffer;
3399  // Serialize the message type, port number, state ID, and signal
3400  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_success), buffer);
3401  // Send the message and handle overflow
3402  this->sequencer_sendSignalFinish(buffer);
3403  }
3404 
3407  {
3408  ComponentIpcSerializableBuffer buffer;
3409  // Serialize the message type, port number, state ID, and signal
3410  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_failure), buffer);
3411  // Send the message and handle overflow
3412  this->sequencer_sendSignalFinish(buffer);
3413  }
3414 
3417  {
3418  ComponentIpcSerializableBuffer buffer;
3419  // Serialize the message type, port number, state ID, and signal
3420  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_unexpected), buffer);
3421  // Send the message and handle overflow
3422  this->sequencer_sendSignalFinish(buffer);
3423  }
3424 
3427  {
3428  ComponentIpcSerializableBuffer buffer;
3429  // Serialize the message type, port number, state ID, and signal
3430  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_keepWaiting), buffer);
3431  // Send the message and handle overflow
3432  this->sequencer_sendSignalFinish(buffer);
3433  }
3434 
3437  {
3438  ComponentIpcSerializableBuffer buffer;
3439  // Serialize the message type, port number, state ID, and signal
3440  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_checkStatementTimeout_statementTimeout), buffer);
3441  // Send the message and handle overflow
3442  this->sequencer_sendSignalFinish(buffer);
3443  }
3444 
3447  {
3448  ComponentIpcSerializableBuffer buffer;
3449  // Serialize the message type, port number, state ID, and signal
3450  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_checkStatementTimeout_noTimeout), buffer);
3451  // Send the message and handle overflow
3452  this->sequencer_sendSignalFinish(buffer);
3453  }
3454 
3457  {
3458  ComponentIpcSerializableBuffer buffer;
3459  // Serialize the message type, port number, state ID, and signal
3460  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_CONTINUE), buffer);
3461  // Send the message and handle overflow
3462  this->sequencer_sendSignalFinish(buffer);
3463  }
3464 
3467  {
3468  ComponentIpcSerializableBuffer buffer;
3469  // Serialize the message type, port number, state ID, and signal
3470  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_BREAK), buffer);
3471  // Send the message and handle overflow
3472  this->sequencer_sendSignalFinish(buffer);
3473  }
3474 
3477  {
3478  ComponentIpcSerializableBuffer buffer;
3479  // Serialize the message type, port number, state ID, and signal
3480  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_STEP), buffer);
3481  // Send the message and handle overflow
3482  this->sequencer_sendSignalFinish(buffer);
3483  }
3484 
3485  // ----------------------------------------------------------------------
3486  // Command response
3487  // ----------------------------------------------------------------------
3488 
3491  FwOpcodeType opCode,
3492  U32 cmdSeq,
3493  Fw::CmdResponse response
3494  )
3495  {
3496  FW_ASSERT(this->m_cmdResponseOut_OutputPort[0].isConnected());
3497  this->m_cmdResponseOut_OutputPort[0].invoke(opCode, cmdSeq, response);
3498  }
3499 
3500  // ----------------------------------------------------------------------
3501  // Command handler base-class functions
3502  //
3503  // Call these functions directly to bypass the command input port
3504  // ----------------------------------------------------------------------
3505 
3508  FwOpcodeType opCode,
3509  U32 cmdSeq,
3510  Fw::CmdArgBuffer& args
3511  )
3512  {
3513  // Call pre-message hook
3514  this->RUN_preMsgHook(opCode,cmdSeq);
3515 
3516  // Defer deserializing arguments to the message dispatcher
3517  // to avoid deserializing and reserializing just for IPC
3518  ComponentIpcSerializableBuffer msg;
3520 
3521  // Serialize for IPC
3522  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_RUN));
3523  FW_ASSERT (
3524  _status == Fw::FW_SERIALIZE_OK,
3525  static_cast<FwAssertArgType>(_status)
3526  );
3527 
3528  // Fake port number to make message dequeue work
3529  FwIndexType port = 0;
3530 
3531  _status = msg.serializeFrom(port);
3532  FW_ASSERT (
3533  _status == Fw::FW_SERIALIZE_OK,
3534  static_cast<FwAssertArgType>(_status)
3535  );
3536 
3537  _status = msg.serializeFrom(opCode);
3538  FW_ASSERT (
3539  _status == Fw::FW_SERIALIZE_OK,
3540  static_cast<FwAssertArgType>(_status)
3541  );
3542 
3543  _status = msg.serializeFrom(cmdSeq);
3544  FW_ASSERT (
3545  _status == Fw::FW_SERIALIZE_OK,
3546  static_cast<FwAssertArgType>(_status)
3547  );
3548 
3549  _status = msg.serializeFrom(args);
3550  FW_ASSERT (
3551  _status == Fw::FW_SERIALIZE_OK,
3552  static_cast<FwAssertArgType>(_status)
3553  );
3554 
3555  // Send message
3557  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3558 
3559  FW_ASSERT(
3560  qStatus == Os::Queue::OP_OK,
3561  static_cast<FwAssertArgType>(qStatus)
3562  );
3563  }
3564 
3567  FwOpcodeType opCode,
3568  U32 cmdSeq,
3569  Fw::CmdArgBuffer& args
3570  )
3571  {
3572  // Call pre-message hook
3573  this->VALIDATE_preMsgHook(opCode,cmdSeq);
3574 
3575  // Defer deserializing arguments to the message dispatcher
3576  // to avoid deserializing and reserializing just for IPC
3577  ComponentIpcSerializableBuffer msg;
3579 
3580  // Serialize for IPC
3581  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_VALIDATE));
3582  FW_ASSERT (
3583  _status == Fw::FW_SERIALIZE_OK,
3584  static_cast<FwAssertArgType>(_status)
3585  );
3586 
3587  // Fake port number to make message dequeue work
3588  FwIndexType port = 0;
3589 
3590  _status = msg.serializeFrom(port);
3591  FW_ASSERT (
3592  _status == Fw::FW_SERIALIZE_OK,
3593  static_cast<FwAssertArgType>(_status)
3594  );
3595 
3596  _status = msg.serializeFrom(opCode);
3597  FW_ASSERT (
3598  _status == Fw::FW_SERIALIZE_OK,
3599  static_cast<FwAssertArgType>(_status)
3600  );
3601 
3602  _status = msg.serializeFrom(cmdSeq);
3603  FW_ASSERT (
3604  _status == Fw::FW_SERIALIZE_OK,
3605  static_cast<FwAssertArgType>(_status)
3606  );
3607 
3608  _status = msg.serializeFrom(args);
3609  FW_ASSERT (
3610  _status == Fw::FW_SERIALIZE_OK,
3611  static_cast<FwAssertArgType>(_status)
3612  );
3613 
3614  // Send message
3616  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3617 
3618  FW_ASSERT(
3619  qStatus == Os::Queue::OP_OK,
3620  static_cast<FwAssertArgType>(qStatus)
3621  );
3622  }
3623 
3626  FwOpcodeType opCode,
3627  U32 cmdSeq,
3628  Fw::CmdArgBuffer& args
3629  )
3630  {
3631  // Call pre-message hook
3632  this->RUN_VALIDATED_preMsgHook(opCode,cmdSeq);
3633 
3634  // Defer deserializing arguments to the message dispatcher
3635  // to avoid deserializing and reserializing just for IPC
3636  ComponentIpcSerializableBuffer msg;
3638 
3639  // Serialize for IPC
3640  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_RUN_VALIDATED));
3641  FW_ASSERT (
3642  _status == Fw::FW_SERIALIZE_OK,
3643  static_cast<FwAssertArgType>(_status)
3644  );
3645 
3646  // Fake port number to make message dequeue work
3647  FwIndexType port = 0;
3648 
3649  _status = msg.serializeFrom(port);
3650  FW_ASSERT (
3651  _status == Fw::FW_SERIALIZE_OK,
3652  static_cast<FwAssertArgType>(_status)
3653  );
3654 
3655  _status = msg.serializeFrom(opCode);
3656  FW_ASSERT (
3657  _status == Fw::FW_SERIALIZE_OK,
3658  static_cast<FwAssertArgType>(_status)
3659  );
3660 
3661  _status = msg.serializeFrom(cmdSeq);
3662  FW_ASSERT (
3663  _status == Fw::FW_SERIALIZE_OK,
3664  static_cast<FwAssertArgType>(_status)
3665  );
3666 
3667  _status = msg.serializeFrom(args);
3668  FW_ASSERT (
3669  _status == Fw::FW_SERIALIZE_OK,
3670  static_cast<FwAssertArgType>(_status)
3671  );
3672 
3673  // Send message
3675  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3676 
3677  FW_ASSERT(
3678  qStatus == Os::Queue::OP_OK,
3679  static_cast<FwAssertArgType>(qStatus)
3680  );
3681  }
3682 
3685  FwOpcodeType opCode,
3686  U32 cmdSeq,
3687  Fw::CmdArgBuffer& args
3688  )
3689  {
3690  // Call pre-message hook
3691  this->CANCEL_preMsgHook(opCode,cmdSeq);
3692 
3693  // Defer deserializing arguments to the message dispatcher
3694  // to avoid deserializing and reserializing just for IPC
3695  ComponentIpcSerializableBuffer msg;
3697 
3698  // Serialize for IPC
3699  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_CANCEL));
3700  FW_ASSERT (
3701  _status == Fw::FW_SERIALIZE_OK,
3702  static_cast<FwAssertArgType>(_status)
3703  );
3704 
3705  // Fake port number to make message dequeue work
3706  FwIndexType port = 0;
3707 
3708  _status = msg.serializeFrom(port);
3709  FW_ASSERT (
3710  _status == Fw::FW_SERIALIZE_OK,
3711  static_cast<FwAssertArgType>(_status)
3712  );
3713 
3714  _status = msg.serializeFrom(opCode);
3715  FW_ASSERT (
3716  _status == Fw::FW_SERIALIZE_OK,
3717  static_cast<FwAssertArgType>(_status)
3718  );
3719 
3720  _status = msg.serializeFrom(cmdSeq);
3721  FW_ASSERT (
3722  _status == Fw::FW_SERIALIZE_OK,
3723  static_cast<FwAssertArgType>(_status)
3724  );
3725 
3726  _status = msg.serializeFrom(args);
3727  FW_ASSERT (
3728  _status == Fw::FW_SERIALIZE_OK,
3729  static_cast<FwAssertArgType>(_status)
3730  );
3731 
3732  // Send message
3734  Os::Queue::Status qStatus = this->m_queue.send(msg, 8, _block);
3735 
3736  FW_ASSERT(
3737  qStatus == Os::Queue::OP_OK,
3738  static_cast<FwAssertArgType>(qStatus)
3739  );
3740  }
3741 
3744  FwOpcodeType opCode,
3745  U32 cmdSeq,
3746  Fw::CmdArgBuffer& args
3747  )
3748  {
3749  // Call pre-message hook
3750  this->SET_BREAKPOINT_preMsgHook(opCode,cmdSeq);
3751 
3752  // Defer deserializing arguments to the message dispatcher
3753  // to avoid deserializing and reserializing just for IPC
3754  ComponentIpcSerializableBuffer msg;
3756 
3757  // Serialize for IPC
3758  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_SET_BREAKPOINT));
3759  FW_ASSERT (
3760  _status == Fw::FW_SERIALIZE_OK,
3761  static_cast<FwAssertArgType>(_status)
3762  );
3763 
3764  // Fake port number to make message dequeue work
3765  FwIndexType port = 0;
3766 
3767  _status = msg.serializeFrom(port);
3768  FW_ASSERT (
3769  _status == Fw::FW_SERIALIZE_OK,
3770  static_cast<FwAssertArgType>(_status)
3771  );
3772 
3773  _status = msg.serializeFrom(opCode);
3774  FW_ASSERT (
3775  _status == Fw::FW_SERIALIZE_OK,
3776  static_cast<FwAssertArgType>(_status)
3777  );
3778 
3779  _status = msg.serializeFrom(cmdSeq);
3780  FW_ASSERT (
3781  _status == Fw::FW_SERIALIZE_OK,
3782  static_cast<FwAssertArgType>(_status)
3783  );
3784 
3785  _status = msg.serializeFrom(args);
3786  FW_ASSERT (
3787  _status == Fw::FW_SERIALIZE_OK,
3788  static_cast<FwAssertArgType>(_status)
3789  );
3790 
3791  // Send message
3793  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3794 
3795  FW_ASSERT(
3796  qStatus == Os::Queue::OP_OK,
3797  static_cast<FwAssertArgType>(qStatus)
3798  );
3799  }
3800 
3803  FwOpcodeType opCode,
3804  U32 cmdSeq,
3805  Fw::CmdArgBuffer& args
3806  )
3807  {
3808  // Call pre-message hook
3809  this->BREAK_preMsgHook(opCode,cmdSeq);
3810 
3811  // Defer deserializing arguments to the message dispatcher
3812  // to avoid deserializing and reserializing just for IPC
3813  ComponentIpcSerializableBuffer msg;
3815 
3816  // Serialize for IPC
3817  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_BREAK));
3818  FW_ASSERT (
3819  _status == Fw::FW_SERIALIZE_OK,
3820  static_cast<FwAssertArgType>(_status)
3821  );
3822 
3823  // Fake port number to make message dequeue work
3824  FwIndexType port = 0;
3825 
3826  _status = msg.serializeFrom(port);
3827  FW_ASSERT (
3828  _status == Fw::FW_SERIALIZE_OK,
3829  static_cast<FwAssertArgType>(_status)
3830  );
3831 
3832  _status = msg.serializeFrom(opCode);
3833  FW_ASSERT (
3834  _status == Fw::FW_SERIALIZE_OK,
3835  static_cast<FwAssertArgType>(_status)
3836  );
3837 
3838  _status = msg.serializeFrom(cmdSeq);
3839  FW_ASSERT (
3840  _status == Fw::FW_SERIALIZE_OK,
3841  static_cast<FwAssertArgType>(_status)
3842  );
3843 
3844  _status = msg.serializeFrom(args);
3845  FW_ASSERT (
3846  _status == Fw::FW_SERIALIZE_OK,
3847  static_cast<FwAssertArgType>(_status)
3848  );
3849 
3850  // Send message
3852  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3853 
3854  FW_ASSERT(
3855  qStatus == Os::Queue::OP_OK,
3856  static_cast<FwAssertArgType>(qStatus)
3857  );
3858  }
3859 
3862  FwOpcodeType opCode,
3863  U32 cmdSeq,
3864  Fw::CmdArgBuffer& args
3865  )
3866  {
3867  // Call pre-message hook
3868  this->CONTINUE_preMsgHook(opCode,cmdSeq);
3869 
3870  // Defer deserializing arguments to the message dispatcher
3871  // to avoid deserializing and reserializing just for IPC
3872  ComponentIpcSerializableBuffer msg;
3874 
3875  // Serialize for IPC
3876  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_CONTINUE));
3877  FW_ASSERT (
3878  _status == Fw::FW_SERIALIZE_OK,
3879  static_cast<FwAssertArgType>(_status)
3880  );
3881 
3882  // Fake port number to make message dequeue work
3883  FwIndexType port = 0;
3884 
3885  _status = msg.serializeFrom(port);
3886  FW_ASSERT (
3887  _status == Fw::FW_SERIALIZE_OK,
3888  static_cast<FwAssertArgType>(_status)
3889  );
3890 
3891  _status = msg.serializeFrom(opCode);
3892  FW_ASSERT (
3893  _status == Fw::FW_SERIALIZE_OK,
3894  static_cast<FwAssertArgType>(_status)
3895  );
3896 
3897  _status = msg.serializeFrom(cmdSeq);
3898  FW_ASSERT (
3899  _status == Fw::FW_SERIALIZE_OK,
3900  static_cast<FwAssertArgType>(_status)
3901  );
3902 
3903  _status = msg.serializeFrom(args);
3904  FW_ASSERT (
3905  _status == Fw::FW_SERIALIZE_OK,
3906  static_cast<FwAssertArgType>(_status)
3907  );
3908 
3909  // Send message
3911  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3912 
3913  FW_ASSERT(
3914  qStatus == Os::Queue::OP_OK,
3915  static_cast<FwAssertArgType>(qStatus)
3916  );
3917  }
3918 
3921  FwOpcodeType opCode,
3922  U32 cmdSeq,
3923  Fw::CmdArgBuffer& args
3924  )
3925  {
3926  // Call pre-message hook
3927  this->CLEAR_BREAKPOINT_preMsgHook(opCode,cmdSeq);
3928 
3929  // Defer deserializing arguments to the message dispatcher
3930  // to avoid deserializing and reserializing just for IPC
3931  ComponentIpcSerializableBuffer msg;
3933 
3934  // Serialize for IPC
3935  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_CLEAR_BREAKPOINT));
3936  FW_ASSERT (
3937  _status == Fw::FW_SERIALIZE_OK,
3938  static_cast<FwAssertArgType>(_status)
3939  );
3940 
3941  // Fake port number to make message dequeue work
3942  FwIndexType port = 0;
3943 
3944  _status = msg.serializeFrom(port);
3945  FW_ASSERT (
3946  _status == Fw::FW_SERIALIZE_OK,
3947  static_cast<FwAssertArgType>(_status)
3948  );
3949 
3950  _status = msg.serializeFrom(opCode);
3951  FW_ASSERT (
3952  _status == Fw::FW_SERIALIZE_OK,
3953  static_cast<FwAssertArgType>(_status)
3954  );
3955 
3956  _status = msg.serializeFrom(cmdSeq);
3957  FW_ASSERT (
3958  _status == Fw::FW_SERIALIZE_OK,
3959  static_cast<FwAssertArgType>(_status)
3960  );
3961 
3962  _status = msg.serializeFrom(args);
3963  FW_ASSERT (
3964  _status == Fw::FW_SERIALIZE_OK,
3965  static_cast<FwAssertArgType>(_status)
3966  );
3967 
3968  // Send message
3970  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3971 
3972  FW_ASSERT(
3973  qStatus == Os::Queue::OP_OK,
3974  static_cast<FwAssertArgType>(qStatus)
3975  );
3976  }
3977 
3980  FwOpcodeType opCode,
3981  U32 cmdSeq,
3982  Fw::CmdArgBuffer& args
3983  )
3984  {
3985  // Call pre-message hook
3986  this->STEP_preMsgHook(opCode,cmdSeq);
3987 
3988  // Defer deserializing arguments to the message dispatcher
3989  // to avoid deserializing and reserializing just for IPC
3990  ComponentIpcSerializableBuffer msg;
3992 
3993  // Serialize for IPC
3994  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_STEP));
3995  FW_ASSERT (
3996  _status == Fw::FW_SERIALIZE_OK,
3997  static_cast<FwAssertArgType>(_status)
3998  );
3999 
4000  // Fake port number to make message dequeue work
4001  FwIndexType port = 0;
4002 
4003  _status = msg.serializeFrom(port);
4004  FW_ASSERT (
4005  _status == Fw::FW_SERIALIZE_OK,
4006  static_cast<FwAssertArgType>(_status)
4007  );
4008 
4009  _status = msg.serializeFrom(opCode);
4010  FW_ASSERT (
4011  _status == Fw::FW_SERIALIZE_OK,
4012  static_cast<FwAssertArgType>(_status)
4013  );
4014 
4015  _status = msg.serializeFrom(cmdSeq);
4016  FW_ASSERT (
4017  _status == Fw::FW_SERIALIZE_OK,
4018  static_cast<FwAssertArgType>(_status)
4019  );
4020 
4021  _status = msg.serializeFrom(args);
4022  FW_ASSERT (
4023  _status == Fw::FW_SERIALIZE_OK,
4024  static_cast<FwAssertArgType>(_status)
4025  );
4026 
4027  // Send message
4029  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4030 
4031  FW_ASSERT(
4032  qStatus == Os::Queue::OP_OK,
4033  static_cast<FwAssertArgType>(qStatus)
4034  );
4035  }
4036 
4039  FwOpcodeType opCode,
4040  U32 cmdSeq,
4041  Fw::CmdArgBuffer& args
4042  )
4043  {
4044  // Call pre-message hook
4045  this->SET_FLAG_preMsgHook(opCode,cmdSeq);
4046 
4047  // Defer deserializing arguments to the message dispatcher
4048  // to avoid deserializing and reserializing just for IPC
4049  ComponentIpcSerializableBuffer msg;
4051 
4052  // Serialize for IPC
4053  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_SET_FLAG));
4054  FW_ASSERT (
4055  _status == Fw::FW_SERIALIZE_OK,
4056  static_cast<FwAssertArgType>(_status)
4057  );
4058 
4059  // Fake port number to make message dequeue work
4060  FwIndexType port = 0;
4061 
4062  _status = msg.serializeFrom(port);
4063  FW_ASSERT (
4064  _status == Fw::FW_SERIALIZE_OK,
4065  static_cast<FwAssertArgType>(_status)
4066  );
4067 
4068  _status = msg.serializeFrom(opCode);
4069  FW_ASSERT (
4070  _status == Fw::FW_SERIALIZE_OK,
4071  static_cast<FwAssertArgType>(_status)
4072  );
4073 
4074  _status = msg.serializeFrom(cmdSeq);
4075  FW_ASSERT (
4076  _status == Fw::FW_SERIALIZE_OK,
4077  static_cast<FwAssertArgType>(_status)
4078  );
4079 
4080  _status = msg.serializeFrom(args);
4081  FW_ASSERT (
4082  _status == Fw::FW_SERIALIZE_OK,
4083  static_cast<FwAssertArgType>(_status)
4084  );
4085 
4086  // Send message
4088  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4089 
4090  FW_ASSERT(
4091  qStatus == Os::Queue::OP_OK,
4092  static_cast<FwAssertArgType>(qStatus)
4093  );
4094  }
4095 
4098  FwOpcodeType opCode,
4099  U32 cmdSeq,
4100  Fw::CmdArgBuffer& args
4101  )
4102  {
4103  // Call pre-message hook
4104  this->DUMP_STACK_TO_FILE_preMsgHook(opCode,cmdSeq);
4105 
4106  // Defer deserializing arguments to the message dispatcher
4107  // to avoid deserializing and reserializing just for IPC
4108  ComponentIpcSerializableBuffer msg;
4110 
4111  // Serialize for IPC
4112  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_DUMP_STACK_TO_FILE));
4113  FW_ASSERT (
4114  _status == Fw::FW_SERIALIZE_OK,
4115  static_cast<FwAssertArgType>(_status)
4116  );
4117 
4118  // Fake port number to make message dequeue work
4119  FwIndexType port = 0;
4120 
4121  _status = msg.serializeFrom(port);
4122  FW_ASSERT (
4123  _status == Fw::FW_SERIALIZE_OK,
4124  static_cast<FwAssertArgType>(_status)
4125  );
4126 
4127  _status = msg.serializeFrom(opCode);
4128  FW_ASSERT (
4129  _status == Fw::FW_SERIALIZE_OK,
4130  static_cast<FwAssertArgType>(_status)
4131  );
4132 
4133  _status = msg.serializeFrom(cmdSeq);
4134  FW_ASSERT (
4135  _status == Fw::FW_SERIALIZE_OK,
4136  static_cast<FwAssertArgType>(_status)
4137  );
4138 
4139  _status = msg.serializeFrom(args);
4140  FW_ASSERT (
4141  _status == Fw::FW_SERIALIZE_OK,
4142  static_cast<FwAssertArgType>(_status)
4143  );
4144 
4145  // Send message
4147  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4148 
4149  FW_ASSERT(
4150  qStatus == Os::Queue::OP_OK,
4151  static_cast<FwAssertArgType>(qStatus)
4152  );
4153  }
4154 
4155  // ----------------------------------------------------------------------
4156  // Pre-message hooks for async commands
4157  //
4158  // Each of these functions is invoked just before processing the
4159  // corresponding command. By default they do nothing. You can
4160  // override them to provide specific pre-command behavior.
4161  // ----------------------------------------------------------------------
4162 
4165  FwOpcodeType opCode,
4166  U32 cmdSeq
4167  )
4168  {
4169  // Defaults to no-op; can be overridden
4170  (void) opCode;
4171  (void) cmdSeq;
4172  }
4173 
4176  FwOpcodeType opCode,
4177  U32 cmdSeq
4178  )
4179  {
4180  // Defaults to no-op; can be overridden
4181  (void) opCode;
4182  (void) cmdSeq;
4183  }
4184 
4187  FwOpcodeType opCode,
4188  U32 cmdSeq
4189  )
4190  {
4191  // Defaults to no-op; can be overridden
4192  (void) opCode;
4193  (void) cmdSeq;
4194  }
4195 
4198  FwOpcodeType opCode,
4199  U32 cmdSeq
4200  )
4201  {
4202  // Defaults to no-op; can be overridden
4203  (void) opCode;
4204  (void) cmdSeq;
4205  }
4206 
4209  FwOpcodeType opCode,
4210  U32 cmdSeq
4211  )
4212  {
4213  // Defaults to no-op; can be overridden
4214  (void) opCode;
4215  (void) cmdSeq;
4216  }
4217 
4220  FwOpcodeType opCode,
4221  U32 cmdSeq
4222  )
4223  {
4224  // Defaults to no-op; can be overridden
4225  (void) opCode;
4226  (void) cmdSeq;
4227  }
4228 
4231  FwOpcodeType opCode,
4232  U32 cmdSeq
4233  )
4234  {
4235  // Defaults to no-op; can be overridden
4236  (void) opCode;
4237  (void) cmdSeq;
4238  }
4239 
4242  FwOpcodeType opCode,
4243  U32 cmdSeq
4244  )
4245  {
4246  // Defaults to no-op; can be overridden
4247  (void) opCode;
4248  (void) cmdSeq;
4249  }
4250 
4253  FwOpcodeType opCode,
4254  U32 cmdSeq
4255  )
4256  {
4257  // Defaults to no-op; can be overridden
4258  (void) opCode;
4259  (void) cmdSeq;
4260  }
4261 
4264  FwOpcodeType opCode,
4265  U32 cmdSeq
4266  )
4267  {
4268  // Defaults to no-op; can be overridden
4269  (void) opCode;
4270  (void) cmdSeq;
4271  }
4272 
4275  FwOpcodeType opCode,
4276  U32 cmdSeq
4277  )
4278  {
4279  // Defaults to no-op; can be overridden
4280  (void) opCode;
4281  (void) cmdSeq;
4282  }
4283 
4284  // ----------------------------------------------------------------------
4285  // Event logging functions
4286  // ----------------------------------------------------------------------
4287 
4290  {
4291  // Get the time
4292  Fw::Time _logTime;
4293  if (this->m_timeCaller_OutputPort[0].isConnected()) {
4294  this->m_timeCaller_OutputPort[0].invoke(_logTime);
4295  }
4296 
4297  FwEventIdType _id = static_cast<FwEventIdType>(0);
4298 
4299  _id = this->getIdBase() + EVENTID_INVALIDCOMMAND;
4300 
4301  // Emit the event on the log port
4302  if (this->m_logOut_OutputPort[0].isConnected()) {
4303  Fw::LogBuffer _logBuff;
4305 
4306 #if FW_AMPCS_COMPATIBLE
4307  // Serialize the number of arguments
4308  _status = _logBuff.serializeFrom(static_cast<U8>(1));
4309  FW_ASSERT(
4310  _status == Fw::FW_SERIALIZE_OK,
4311  static_cast<FwAssertArgType>(_status)
4312  );
4313 #endif
4314 
4315 #if FW_AMPCS_COMPATIBLE
4316  // Serialize the argument size
4317  _status = _logBuff.serializeFrom(
4318  static_cast<U8>(sizeof(I32))
4319  );
4320  FW_ASSERT(
4321  _status == Fw::FW_SERIALIZE_OK,
4322  static_cast<FwAssertArgType>(_status)
4323  );
4324 #endif
4325  _status = _logBuff.serializeFrom(state);
4326  FW_ASSERT(
4327  _status == Fw::FW_SERIALIZE_OK,
4328  static_cast<FwAssertArgType>(_status)
4329  );
4330 
4331  this->m_logOut_OutputPort[0].invoke(
4332  _id,
4333  _logTime,
4335  _logBuff
4336  );
4337  }
4338 
4339  // Emit the event on the text log port
4340 #if FW_ENABLE_TEXT_LOGGING
4341  if (this->m_logTextOut_OutputPort[0].isConnected()) {
4342 #if FW_OBJECT_NAMES == 1
4343  const char* _formatString =
4344  "(%s) %s: Cannot execute command in state %" PRIi32 "";
4345 #else
4346  const char* _formatString =
4347  "%s: Cannot execute command in state %" PRIi32 "";
4348 #endif
4349 
4350  Fw::TextLogString _logString;
4351  _logString.format(
4352  _formatString,
4353 #if FW_OBJECT_NAMES == 1
4354  this->m_objName.toChar(),
4355 #endif
4356  "InvalidCommand ",
4357  state
4358  );
4359 
4360  this->m_logTextOut_OutputPort[0].invoke(
4361  _id,
4362  _logTime,
4364  _logString
4365  );
4366  }
4367 #endif
4368  }
4369 
4372  {
4373  // Get the time
4374  Fw::Time _logTime;
4375  if (this->m_timeCaller_OutputPort[0].isConnected()) {
4376  this->m_timeCaller_OutputPort[0].invoke(_logTime);
4377  }
4378 
4379  FwEventIdType _id = static_cast<FwEventIdType>(0);
4380 
4381  _id = this->getIdBase() + EVENTID_INVALIDSEQRUNCALL;
4382 
4383  // Emit the event on the log port
4384  if (this->m_logOut_OutputPort[0].isConnected()) {
4385  Fw::LogBuffer _logBuff;
4387 
4388 #if FW_AMPCS_COMPATIBLE
4389  // Serialize the number of arguments
4390  _status = _logBuff.serializeFrom(static_cast<U8>(1));
4391  FW_ASSERT(
4392  _status == Fw::FW_SERIALIZE_OK,
4393  static_cast<FwAssertArgType>(_status)
4394  );
4395 #endif
4396 
4397 #if FW_AMPCS_COMPATIBLE
4398  // Serialize the argument size
4399  _status = _logBuff.serializeFrom(
4400  static_cast<U8>(sizeof(I32))
4401  );
4402  FW_ASSERT(
4403  _status == Fw::FW_SERIALIZE_OK,
4404  static_cast<FwAssertArgType>(_status)
4405  );
4406 #endif
4407  _status = _logBuff.serializeFrom(state);
4408  FW_ASSERT(
4409  _status == Fw::FW_SERIALIZE_OK,
4410  static_cast<FwAssertArgType>(_status)
4411  );
4412 
4413  this->m_logOut_OutputPort[0].invoke(
4414  _id,
4415  _logTime,
4417  _logBuff
4418  );
4419  }
4420 
4421  // Emit the event on the text log port
4422 #if FW_ENABLE_TEXT_LOGGING
4423  if (this->m_logTextOut_OutputPort[0].isConnected()) {
4424 #if FW_OBJECT_NAMES == 1
4425  const char* _formatString =
4426  "(%s) %s: Cannot run sequence from a port in state %" PRIi32 "";
4427 #else
4428  const char* _formatString =
4429  "%s: Cannot run sequence from a port in state %" PRIi32 "";
4430 #endif
4431 
4432  Fw::TextLogString _logString;
4433  _logString.format(
4434  _formatString,
4435 #if FW_OBJECT_NAMES == 1
4436  this->m_objName.toChar(),
4437 #endif
4438  "InvalidSeqRunCall ",
4439  state
4440  );
4441 
4442  this->m_logTextOut_OutputPort[0].invoke(
4443  _id,
4444  _logTime,
4446  _logString
4447  );
4448  }
4449 #endif
4450  }
4451 
4454  const Fw::StringBase& filePath,
4455  I32 errorCode
4456  ) const
4457  {
4458  // Get the time
4459  Fw::Time _logTime;
4460  if (this->m_timeCaller_OutputPort[0].isConnected()) {
4461  this->m_timeCaller_OutputPort[0].invoke(_logTime);
4462  }
4463 
4464  FwEventIdType _id = static_cast<FwEventIdType>(0);
4465 
4466  _id = this->getIdBase() + EVENTID_FILEOPENERROR;
4467 
4468  // Emit the event on the log port
4469  if (this->m_logOut_OutputPort[0].isConnected()) {
4470  Fw::LogBuffer _logBuff;
4472 
4473 #if FW_AMPCS_COMPATIBLE
4474  // Serialize the number of arguments
4475  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4476  FW_ASSERT(
4477  _status == Fw::FW_SERIALIZE_OK,
4478  static_cast<FwAssertArgType>(_status)
4479  );
4480 #endif
4481 
4482  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
4483  FW_ASSERT(
4484  _status == Fw::FW_SERIALIZE_OK,
4485  static_cast<FwAssertArgType>(_status)
4486  );
4487 
4488 #if FW_AMPCS_COMPATIBLE
4489  // Serialize the argument size
4490  _status = _logBuff.serializeFrom(
4491  static_cast<U8>(sizeof(I32))
4492  );
4493  FW_ASSERT(
4494  _status == Fw::FW_SERIALIZE_OK,
4495  static_cast<FwAssertArgType>(_status)
4496  );
4497 #endif
4498  _status = _logBuff.serializeFrom(errorCode);
4499  FW_ASSERT(
4500  _status == Fw::FW_SERIALIZE_OK,
4501  static_cast<FwAssertArgType>(_status)
4502  );
4503 
4504  this->m_logOut_OutputPort[0].invoke(
4505  _id,
4506  _logTime,
4508  _logBuff
4509  );
4510  }
4511 
4512  // Emit the event on the text log port
4513 #if FW_ENABLE_TEXT_LOGGING
4514  if (this->m_logTextOut_OutputPort[0].isConnected()) {
4515 #if FW_OBJECT_NAMES == 1
4516  const char* _formatString =
4517  "(%s) %s: File open error encountered while opening %s: %" PRIi32 "";
4518 #else
4519  const char* _formatString =
4520  "%s: File open error encountered while opening %s: %" PRIi32 "";
4521 #endif
4522 
4523  Fw::TextLogString _logString;
4524  _logString.format(
4525  _formatString,
4526 #if FW_OBJECT_NAMES == 1
4527  this->m_objName.toChar(),
4528 #endif
4529  "FileOpenError ",
4530  filePath.toChar(),
4531  errorCode
4532  );
4533 
4534  this->m_logTextOut_OutputPort[0].invoke(
4535  _id,
4536  _logTime,
4538  _logString
4539  );
4540  }
4541 #endif
4542  }
4543 
4546  FwSizeType writeSize,
4547  const Fw::StringBase& filePath,
4548  I32 errorCode
4549  ) const
4550  {
4551  // Get the time
4552  Fw::Time _logTime;
4553  if (this->m_timeCaller_OutputPort[0].isConnected()) {
4554  this->m_timeCaller_OutputPort[0].invoke(_logTime);
4555  }
4556 
4557  FwEventIdType _id = static_cast<FwEventIdType>(0);
4558 
4559  _id = this->getIdBase() + EVENTID_FILEWRITEERROR;
4560 
4561  // Emit the event on the log port
4562  if (this->m_logOut_OutputPort[0].isConnected()) {
4563  Fw::LogBuffer _logBuff;
4565 
4566 #if FW_AMPCS_COMPATIBLE
4567  // Serialize the number of arguments
4568  _status = _logBuff.serializeFrom(static_cast<U8>(3));
4569  FW_ASSERT(
4570  _status == Fw::FW_SERIALIZE_OK,
4571  static_cast<FwAssertArgType>(_status)
4572  );
4573 #endif
4574 
4575 #if FW_AMPCS_COMPATIBLE
4576  // Serialize the argument size
4577  _status = _logBuff.serializeFrom(
4578  static_cast<U8>(sizeof(FwSizeType))
4579  );
4580  FW_ASSERT(
4581  _status == Fw::FW_SERIALIZE_OK,
4582  static_cast<FwAssertArgType>(_status)
4583  );
4584 #endif
4585  _status = _logBuff.serializeFrom(writeSize);
4586  FW_ASSERT(
4587  _status == Fw::FW_SERIALIZE_OK,
4588  static_cast<FwAssertArgType>(_status)
4589  );
4590 
4591  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
4592  FW_ASSERT(
4593  _status == Fw::FW_SERIALIZE_OK,
4594  static_cast<FwAssertArgType>(_status)
4595  );
4596 
4597 #if FW_AMPCS_COMPATIBLE
4598  // Serialize the argument size
4599  _status = _logBuff.serializeFrom(
4600  static_cast<U8>(sizeof(I32))
4601  );
4602  FW_ASSERT(
4603  _status == Fw::FW_SERIALIZE_OK,
4604  static_cast<FwAssertArgType>(_status)
4605  );
4606 #endif
4607  _status = _logBuff.serializeFrom(errorCode);
4608  FW_ASSERT(
4609  _status == Fw::FW_SERIALIZE_OK,
4610  static_cast<FwAssertArgType>(_status)
4611  );
4612 
4613  this->m_logOut_OutputPort[0].invoke(
4614  _id,
4615  _logTime,
4617  _logBuff
4618  );
4619  }
4620 
4621  // Emit the event on the text log port
4622 #if FW_ENABLE_TEXT_LOGGING
4623  if (this->m_logTextOut_OutputPort[0].isConnected()) {
4624 #if FW_OBJECT_NAMES == 1
4625  const char* _formatString =
4626  "(%s) %s: File write error encountered while writing %" PRIu64 " bytes to %s: %" PRIi32 "";
4627 #else
4628  const char* _formatString =
4629  "%s: File write error encountered while writing %" PRIu64 " bytes to %s: %" PRIi32 "";
4630 #endif
4631 
4632  Fw::TextLogString _logString;
4633  _logString.format(
4634  _formatString,
4635 #if FW_OBJECT_NAMES == 1
4636  this->m_objName.toChar(),
4637 #endif
4638  "FileWriteError ",
4639  writeSize,
4640  filePath.toChar(),
4641  errorCode
4642  );
4643 
4644  this->m_logTextOut_OutputPort[0].invoke(
4645  _id,
4646  _logTime,
4648  _logString
4649  );
4650  }
4651 #endif
4652  }
4653 
4657  const Fw::StringBase& filePath,
4658  I32 errorCode
4659  ) const
4660  {
4661  // Get the time
4662  Fw::Time _logTime;
4663  if (this->m_timeCaller_OutputPort[0].isConnected()) {
4664  this->m_timeCaller_OutputPort[0].invoke(_logTime);
4665  }
4666 
4667  FwEventIdType _id = static_cast<FwEventIdType>(0);
4668 
4669  _id = this->getIdBase() + EVENTID_FILEREADERROR;
4670 
4671  // Emit the event on the log port
4672  if (this->m_logOut_OutputPort[0].isConnected()) {
4673  Fw::LogBuffer _logBuff;
4675 
4676 #if FW_AMPCS_COMPATIBLE
4677  // Serialize the number of arguments
4678  _status = _logBuff.serializeFrom(static_cast<U8>(3));
4679  FW_ASSERT(
4680  _status == Fw::FW_SERIALIZE_OK,
4681  static_cast<FwAssertArgType>(_status)
4682  );
4683 #endif
4684 
4685 #if FW_AMPCS_COMPATIBLE
4686  // Serialize the argument size
4687  _status = _logBuff.serializeFrom(
4689  );
4690  FW_ASSERT(
4691  _status == Fw::FW_SERIALIZE_OK,
4692  static_cast<FwAssertArgType>(_status)
4693  );
4694 #endif
4695  _status = _logBuff.serializeFrom(readStage);
4696  FW_ASSERT(
4697  _status == Fw::FW_SERIALIZE_OK,
4698  static_cast<FwAssertArgType>(_status)
4699  );
4700 
4701  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
4702  FW_ASSERT(
4703  _status == Fw::FW_SERIALIZE_OK,
4704  static_cast<FwAssertArgType>(_status)
4705  );
4706 
4707 #if FW_AMPCS_COMPATIBLE
4708  // Serialize the argument size
4709  _status = _logBuff.serializeFrom(
4710  static_cast<U8>(sizeof(I32))
4711  );
4712  FW_ASSERT(
4713  _status == Fw::FW_SERIALIZE_OK,
4714  static_cast<FwAssertArgType>(_status)
4715  );
4716 #endif
4717  _status = _logBuff.serializeFrom(errorCode);
4718  FW_ASSERT(
4719  _status == Fw::FW_SERIALIZE_OK,
4720  static_cast<FwAssertArgType>(_status)
4721  );
4722 
4723  this->m_logOut_OutputPort[0].invoke(
4724  _id,
4725  _logTime,
4727  _logBuff
4728  );
4729  }
4730 
4731  // Emit the event on the text log port
4732 #if FW_ENABLE_TEXT_LOGGING
4733  if (this->m_logTextOut_OutputPort[0].isConnected()) {
4734 #if FW_OBJECT_NAMES == 1
4735  const char* _formatString =
4736  "(%s) %s: File read error encountered while reading %s of file %s: %" PRIi32 "";
4737 #else
4738  const char* _formatString =
4739  "%s: File read error encountered while reading %s of file %s: %" PRIi32 "";
4740 #endif
4741 
4742  Fw::String readStageStr;
4743  readStage.toString(readStageStr);
4744 
4745  Fw::TextLogString _logString;
4746  _logString.format(
4747  _formatString,
4748 #if FW_OBJECT_NAMES == 1
4749  this->m_objName.toChar(),
4750 #endif
4751  "FileReadError ",
4752  readStageStr.toChar(),
4753  filePath.toChar(),
4754  errorCode
4755  );
4756 
4757  this->m_logTextOut_OutputPort[0].invoke(
4758  _id,
4759  _logTime,
4761  _logString
4762  );
4763  }
4764 #endif
4765  }
4766 
4770  const Fw::StringBase& filePath
4771  ) const
4772  {
4773  // Get the time
4774  Fw::Time _logTime;
4775  if (this->m_timeCaller_OutputPort[0].isConnected()) {
4776  this->m_timeCaller_OutputPort[0].invoke(_logTime);
4777  }
4778 
4779  FwEventIdType _id = static_cast<FwEventIdType>(0);
4780 
4781  _id = this->getIdBase() + EVENTID_ENDOFFILEERROR;
4782 
4783  // Emit the event on the log port
4784  if (this->m_logOut_OutputPort[0].isConnected()) {
4785  Fw::LogBuffer _logBuff;
4787 
4788 #if FW_AMPCS_COMPATIBLE
4789  // Serialize the number of arguments
4790  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4791  FW_ASSERT(
4792  _status == Fw::FW_SERIALIZE_OK,
4793  static_cast<FwAssertArgType>(_status)
4794  );
4795 #endif
4796 
4797 #if FW_AMPCS_COMPATIBLE
4798  // Serialize the argument size
4799  _status = _logBuff.serializeFrom(
4801  );
4802  FW_ASSERT(
4803  _status == Fw::FW_SERIALIZE_OK,
4804  static_cast<FwAssertArgType>(_status)
4805  );
4806 #endif
4807  _status = _logBuff.serializeFrom(readStage);
4808  FW_ASSERT(
4809  _status == Fw::FW_SERIALIZE_OK,
4810  static_cast<FwAssertArgType>(_status)
4811  );
4812 
4813  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
4814  FW_ASSERT(
4815  _status == Fw::FW_SERIALIZE_OK,
4816  static_cast<FwAssertArgType>(_status)
4817  );
4818 
4819  this->m_logOut_OutputPort[0].invoke(
4820  _id,
4821  _logTime,
4823  _logBuff
4824  );
4825  }
4826 
4827  // Emit the event on the text log port
4828 #if FW_ENABLE_TEXT_LOGGING
4829  if (this->m_logTextOut_OutputPort[0].isConnected()) {
4830 #if FW_OBJECT_NAMES == 1
4831  const char* _formatString =
4832  "(%s) %s: End of file encountered unexpectedly while reading %s of file %s";
4833 #else
4834  const char* _formatString =
4835  "%s: End of file encountered unexpectedly while reading %s of file %s";
4836 #endif
4837 
4838  Fw::String readStageStr;
4839  readStage.toString(readStageStr);
4840 
4841  Fw::TextLogString _logString;
4842  _logString.format(
4843  _formatString,
4844 #if FW_OBJECT_NAMES == 1
4845  this->m_objName.toChar(),
4846 #endif
4847  "EndOfFileError ",
4848  readStageStr.toChar(),
4849  filePath.toChar()
4850  );
4851 
4852  this->m_logTextOut_OutputPort[0].invoke(
4853  _id,
4854  _logTime,
4856  _logString
4857  );
4858  }
4859 #endif
4860  }
4861 
4865  const Fw::StringBase& filePath,
4866  I32 errorCode,
4867  U64 buffLeft,
4868  U64 buffLength
4869  ) const
4870  {
4871  // Get the time
4872  Fw::Time _logTime;
4873  if (this->m_timeCaller_OutputPort[0].isConnected()) {
4874  this->m_timeCaller_OutputPort[0].invoke(_logTime);
4875  }
4876 
4877  FwEventIdType _id = static_cast<FwEventIdType>(0);
4878 
4880 
4881  // Emit the event on the log port
4882  if (this->m_logOut_OutputPort[0].isConnected()) {
4883  Fw::LogBuffer _logBuff;
4885 
4886 #if FW_AMPCS_COMPATIBLE
4887  // Serialize the number of arguments
4888  _status = _logBuff.serializeFrom(static_cast<U8>(5));
4889  FW_ASSERT(
4890  _status == Fw::FW_SERIALIZE_OK,
4891  static_cast<FwAssertArgType>(_status)
4892  );
4893 #endif
4894 
4895 #if FW_AMPCS_COMPATIBLE
4896  // Serialize the argument size
4897  _status = _logBuff.serializeFrom(
4899  );
4900  FW_ASSERT(
4901  _status == Fw::FW_SERIALIZE_OK,
4902  static_cast<FwAssertArgType>(_status)
4903  );
4904 #endif
4905  _status = _logBuff.serializeFrom(readStage);
4906  FW_ASSERT(
4907  _status == Fw::FW_SERIALIZE_OK,
4908  static_cast<FwAssertArgType>(_status)
4909  );
4910 
4911  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
4912  FW_ASSERT(
4913  _status == Fw::FW_SERIALIZE_OK,
4914  static_cast<FwAssertArgType>(_status)
4915  );
4916 
4917 #if FW_AMPCS_COMPATIBLE
4918  // Serialize the argument size
4919  _status = _logBuff.serializeFrom(
4920  static_cast<U8>(sizeof(I32))
4921  );
4922  FW_ASSERT(
4923  _status == Fw::FW_SERIALIZE_OK,
4924  static_cast<FwAssertArgType>(_status)
4925  );
4926 #endif
4927  _status = _logBuff.serializeFrom(errorCode);
4928  FW_ASSERT(
4929  _status == Fw::FW_SERIALIZE_OK,
4930  static_cast<FwAssertArgType>(_status)
4931  );
4932 
4933 #if FW_AMPCS_COMPATIBLE
4934  // Serialize the argument size
4935  _status = _logBuff.serializeFrom(
4936  static_cast<U8>(sizeof(U64))
4937  );
4938  FW_ASSERT(
4939  _status == Fw::FW_SERIALIZE_OK,
4940  static_cast<FwAssertArgType>(_status)
4941  );
4942 #endif
4943  _status = _logBuff.serializeFrom(buffLeft);
4944  FW_ASSERT(
4945  _status == Fw::FW_SERIALIZE_OK,
4946  static_cast<FwAssertArgType>(_status)
4947  );
4948 
4949 #if FW_AMPCS_COMPATIBLE
4950  // Serialize the argument size
4951  _status = _logBuff.serializeFrom(
4952  static_cast<U8>(sizeof(U64))
4953  );
4954  FW_ASSERT(
4955  _status == Fw::FW_SERIALIZE_OK,
4956  static_cast<FwAssertArgType>(_status)
4957  );
4958 #endif
4959  _status = _logBuff.serializeFrom(buffLength);
4960  FW_ASSERT(
4961  _status == Fw::FW_SERIALIZE_OK,
4962  static_cast<FwAssertArgType>(_status)
4963  );
4964 
4965  this->m_logOut_OutputPort[0].invoke(
4966  _id,
4967  _logTime,
4969  _logBuff
4970  );
4971  }
4972 
4973  // Emit the event on the text log port
4974 #if FW_ENABLE_TEXT_LOGGING
4975  if (this->m_logTextOut_OutputPort[0].isConnected()) {
4976 #if FW_OBJECT_NAMES == 1
4977  const char* _formatString =
4978  "(%s) %s: Deserialize error encountered while reading %s of file %s: %" PRIi32 " (%" PRIu64 " bytes left out of %" PRIu64 ")";
4979 #else
4980  const char* _formatString =
4981  "%s: Deserialize error encountered while reading %s of file %s: %" PRIi32 " (%" PRIu64 " bytes left out of %" PRIu64 ")";
4982 #endif
4983 
4984  Fw::String readStageStr;
4985  readStage.toString(readStageStr);
4986 
4987  Fw::TextLogString _logString;
4988  _logString.format(
4989  _formatString,
4990 #if FW_OBJECT_NAMES == 1
4991  this->m_objName.toChar(),
4992 #endif
4993  "FileReadDeserializeError ",
4994  readStageStr.toChar(),
4995  filePath.toChar(),
4996  errorCode,
4997  buffLeft,
4998  buffLength
4999  );
5000 
5001  this->m_logTextOut_OutputPort[0].invoke(
5002  _id,
5003  _logTime,
5005  _logString
5006  );
5007  }
5008 #endif
5009  }
5010 
5013  U8 expected,
5014  U8 actual
5015  ) const
5016  {
5017  // Get the time
5018  Fw::Time _logTime;
5019  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5020  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5021  }
5022 
5023  FwEventIdType _id = static_cast<FwEventIdType>(0);
5024 
5025  _id = this->getIdBase() + EVENTID_WRONGSCHEMAVERSION;
5026 
5027  // Emit the event on the log port
5028  if (this->m_logOut_OutputPort[0].isConnected()) {
5029  Fw::LogBuffer _logBuff;
5031 
5032 #if FW_AMPCS_COMPATIBLE
5033  // Serialize the number of arguments
5034  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5035  FW_ASSERT(
5036  _status == Fw::FW_SERIALIZE_OK,
5037  static_cast<FwAssertArgType>(_status)
5038  );
5039 #endif
5040 
5041 #if FW_AMPCS_COMPATIBLE
5042  // Serialize the argument size
5043  _status = _logBuff.serializeFrom(
5044  static_cast<U8>(sizeof(U8))
5045  );
5046  FW_ASSERT(
5047  _status == Fw::FW_SERIALIZE_OK,
5048  static_cast<FwAssertArgType>(_status)
5049  );
5050 #endif
5051  _status = _logBuff.serializeFrom(expected);
5052  FW_ASSERT(
5053  _status == Fw::FW_SERIALIZE_OK,
5054  static_cast<FwAssertArgType>(_status)
5055  );
5056 
5057 #if FW_AMPCS_COMPATIBLE
5058  // Serialize the argument size
5059  _status = _logBuff.serializeFrom(
5060  static_cast<U8>(sizeof(U8))
5061  );
5062  FW_ASSERT(
5063  _status == Fw::FW_SERIALIZE_OK,
5064  static_cast<FwAssertArgType>(_status)
5065  );
5066 #endif
5067  _status = _logBuff.serializeFrom(actual);
5068  FW_ASSERT(
5069  _status == Fw::FW_SERIALIZE_OK,
5070  static_cast<FwAssertArgType>(_status)
5071  );
5072 
5073  this->m_logOut_OutputPort[0].invoke(
5074  _id,
5075  _logTime,
5077  _logBuff
5078  );
5079  }
5080 
5081  // Emit the event on the text log port
5082 #if FW_ENABLE_TEXT_LOGGING
5083  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5084 #if FW_OBJECT_NAMES == 1
5085  const char* _formatString =
5086  "(%s) %s: Expected schema version %" PRIu8 ", found %" PRIu8 "";
5087 #else
5088  const char* _formatString =
5089  "%s: Expected schema version %" PRIu8 ", found %" PRIu8 "";
5090 #endif
5091 
5092  Fw::TextLogString _logString;
5093  _logString.format(
5094  _formatString,
5095 #if FW_OBJECT_NAMES == 1
5096  this->m_objName.toChar(),
5097 #endif
5098  "WrongSchemaVersion ",
5099  expected,
5100  actual
5101  );
5102 
5103  this->m_logTextOut_OutputPort[0].invoke(
5104  _id,
5105  _logTime,
5107  _logString
5108  );
5109  }
5110 #endif
5111  }
5112 
5115  U32 expected,
5116  U32 actual
5117  ) const
5118  {
5119  // Get the time
5120  Fw::Time _logTime;
5121  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5122  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5123  }
5124 
5125  FwEventIdType _id = static_cast<FwEventIdType>(0);
5126 
5127  _id = this->getIdBase() + EVENTID_WRONGCRC;
5128 
5129  // Emit the event on the log port
5130  if (this->m_logOut_OutputPort[0].isConnected()) {
5131  Fw::LogBuffer _logBuff;
5133 
5134 #if FW_AMPCS_COMPATIBLE
5135  // Serialize the number of arguments
5136  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5137  FW_ASSERT(
5138  _status == Fw::FW_SERIALIZE_OK,
5139  static_cast<FwAssertArgType>(_status)
5140  );
5141 #endif
5142 
5143 #if FW_AMPCS_COMPATIBLE
5144  // Serialize the argument size
5145  _status = _logBuff.serializeFrom(
5146  static_cast<U8>(sizeof(U32))
5147  );
5148  FW_ASSERT(
5149  _status == Fw::FW_SERIALIZE_OK,
5150  static_cast<FwAssertArgType>(_status)
5151  );
5152 #endif
5153  _status = _logBuff.serializeFrom(expected);
5154  FW_ASSERT(
5155  _status == Fw::FW_SERIALIZE_OK,
5156  static_cast<FwAssertArgType>(_status)
5157  );
5158 
5159 #if FW_AMPCS_COMPATIBLE
5160  // Serialize the argument size
5161  _status = _logBuff.serializeFrom(
5162  static_cast<U8>(sizeof(U32))
5163  );
5164  FW_ASSERT(
5165  _status == Fw::FW_SERIALIZE_OK,
5166  static_cast<FwAssertArgType>(_status)
5167  );
5168 #endif
5169  _status = _logBuff.serializeFrom(actual);
5170  FW_ASSERT(
5171  _status == Fw::FW_SERIALIZE_OK,
5172  static_cast<FwAssertArgType>(_status)
5173  );
5174 
5175  this->m_logOut_OutputPort[0].invoke(
5176  _id,
5177  _logTime,
5179  _logBuff
5180  );
5181  }
5182 
5183  // Emit the event on the text log port
5184 #if FW_ENABLE_TEXT_LOGGING
5185  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5186 #if FW_OBJECT_NAMES == 1
5187  const char* _formatString =
5188  "(%s) %s: Expected CRC %" PRIu32 ", actual was %" PRIu32 "";
5189 #else
5190  const char* _formatString =
5191  "%s: Expected CRC %" PRIu32 ", actual was %" PRIu32 "";
5192 #endif
5193 
5194  Fw::TextLogString _logString;
5195  _logString.format(
5196  _formatString,
5197 #if FW_OBJECT_NAMES == 1
5198  this->m_objName.toChar(),
5199 #endif
5200  "WrongCRC ",
5201  expected,
5202  actual
5203  );
5204 
5205  this->m_logTextOut_OutputPort[0].invoke(
5206  _id,
5207  _logTime,
5209  _logString
5210  );
5211  }
5212 #endif
5213  }
5214 
5217  {
5218  // Get the time
5219  Fw::Time _logTime;
5220  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5221  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5222  }
5223 
5224  FwEventIdType _id = static_cast<FwEventIdType>(0);
5225 
5226  _id = this->getIdBase() + EVENTID_EXTRABYTESINSEQUENCE;
5227 
5228  // Emit the event on the log port
5229  if (this->m_logOut_OutputPort[0].isConnected()) {
5230  Fw::LogBuffer _logBuff;
5232 
5233 #if FW_AMPCS_COMPATIBLE
5234  // Serialize the number of arguments
5235  _status = _logBuff.serializeFrom(static_cast<U8>(1));
5236  FW_ASSERT(
5237  _status == Fw::FW_SERIALIZE_OK,
5238  static_cast<FwAssertArgType>(_status)
5239  );
5240 #endif
5241 
5242 #if FW_AMPCS_COMPATIBLE
5243  // Serialize the argument size
5244  _status = _logBuff.serializeFrom(
5245  static_cast<U8>(sizeof(FwSizeType))
5246  );
5247  FW_ASSERT(
5248  _status == Fw::FW_SERIALIZE_OK,
5249  static_cast<FwAssertArgType>(_status)
5250  );
5251 #endif
5252  _status = _logBuff.serializeFrom(remaining);
5253  FW_ASSERT(
5254  _status == Fw::FW_SERIALIZE_OK,
5255  static_cast<FwAssertArgType>(_status)
5256  );
5257 
5258  this->m_logOut_OutputPort[0].invoke(
5259  _id,
5260  _logTime,
5262  _logBuff
5263  );
5264  }
5265 
5266  // Emit the event on the text log port
5267 #if FW_ENABLE_TEXT_LOGGING
5268  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5269 #if FW_OBJECT_NAMES == 1
5270  const char* _formatString =
5271  "(%s) %s: File had %" PRIu64 " extra bytes at the end";
5272 #else
5273  const char* _formatString =
5274  "%s: File had %" PRIu64 " extra bytes at the end";
5275 #endif
5276 
5277  Fw::TextLogString _logString;
5278  _logString.format(
5279  _formatString,
5280 #if FW_OBJECT_NAMES == 1
5281  this->m_objName.toChar(),
5282 #endif
5283  "ExtraBytesInSequence ",
5284  remaining
5285  );
5286 
5287  this->m_logTextOut_OutputPort[0].invoke(
5288  _id,
5289  _logTime,
5291  _logString
5292  );
5293  }
5294 #endif
5295  }
5296 
5299  U64 bufferSize,
5300  const Fw::StringBase& filePath
5301  ) const
5302  {
5303  // Get the time
5304  Fw::Time _logTime;
5305  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5306  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5307  }
5308 
5309  FwEventIdType _id = static_cast<FwEventIdType>(0);
5310 
5312 
5313  // Emit the event on the log port
5314  if (this->m_logOut_OutputPort[0].isConnected()) {
5315  Fw::LogBuffer _logBuff;
5317 
5318 #if FW_AMPCS_COMPATIBLE
5319  // Serialize the number of arguments
5320  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5321  FW_ASSERT(
5322  _status == Fw::FW_SERIALIZE_OK,
5323  static_cast<FwAssertArgType>(_status)
5324  );
5325 #endif
5326 
5327 #if FW_AMPCS_COMPATIBLE
5328  // Serialize the argument size
5329  _status = _logBuff.serializeFrom(
5330  static_cast<U8>(sizeof(U64))
5331  );
5332  FW_ASSERT(
5333  _status == Fw::FW_SERIALIZE_OK,
5334  static_cast<FwAssertArgType>(_status)
5335  );
5336 #endif
5337  _status = _logBuff.serializeFrom(bufferSize);
5338  FW_ASSERT(
5339  _status == Fw::FW_SERIALIZE_OK,
5340  static_cast<FwAssertArgType>(_status)
5341  );
5342 
5343  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
5344  FW_ASSERT(
5345  _status == Fw::FW_SERIALIZE_OK,
5346  static_cast<FwAssertArgType>(_status)
5347  );
5348 
5349  this->m_logOut_OutputPort[0].invoke(
5350  _id,
5351  _logTime,
5353  _logBuff
5354  );
5355  }
5356 
5357  // Emit the event on the text log port
5358 #if FW_ENABLE_TEXT_LOGGING
5359  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5360 #if FW_OBJECT_NAMES == 1
5361  const char* _formatString =
5362  "(%s) %s: Buffer capacity of %" PRIu64 " was not big enough for sequence %s";
5363 #else
5364  const char* _formatString =
5365  "%s: Buffer capacity of %" PRIu64 " was not big enough for sequence %s";
5366 #endif
5367 
5368  Fw::TextLogString _logString;
5369  _logString.format(
5370  _formatString,
5371 #if FW_OBJECT_NAMES == 1
5372  this->m_objName.toChar(),
5373 #endif
5374  "InsufficientBufferSpace ",
5375  bufferSize,
5376  filePath.toChar()
5377  );
5378 
5379  this->m_logTextOut_OutputPort[0].invoke(
5380  _id,
5381  _logTime,
5383  _logString
5384  );
5385  }
5386 #endif
5387  }
5388 
5391  FwOpcodeType opCode,
5392  U32 stmtIdx,
5393  const Fw::StringBase& filePath,
5394  Fw::CmdResponse response
5395  ) const
5396  {
5397  // Get the time
5398  Fw::Time _logTime;
5399  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5400  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5401  }
5402 
5403  FwEventIdType _id = static_cast<FwEventIdType>(0);
5404 
5405  _id = this->getIdBase() + EVENTID_COMMANDFAILED;
5406 
5407  // Emit the event on the log port
5408  if (this->m_logOut_OutputPort[0].isConnected()) {
5409  Fw::LogBuffer _logBuff;
5411 
5412 #if FW_AMPCS_COMPATIBLE
5413  // Serialize the number of arguments
5414  _status = _logBuff.serializeFrom(static_cast<U8>(4));
5415  FW_ASSERT(
5416  _status == Fw::FW_SERIALIZE_OK,
5417  static_cast<FwAssertArgType>(_status)
5418  );
5419 #endif
5420 
5421 #if FW_AMPCS_COMPATIBLE
5422  // Serialize the argument size
5423  _status = _logBuff.serializeFrom(
5424  static_cast<U8>(sizeof(FwOpcodeType))
5425  );
5426  FW_ASSERT(
5427  _status == Fw::FW_SERIALIZE_OK,
5428  static_cast<FwAssertArgType>(_status)
5429  );
5430 #endif
5431  _status = _logBuff.serializeFrom(opCode);
5432  FW_ASSERT(
5433  _status == Fw::FW_SERIALIZE_OK,
5434  static_cast<FwAssertArgType>(_status)
5435  );
5436 
5437 #if FW_AMPCS_COMPATIBLE
5438  // Serialize the argument size
5439  _status = _logBuff.serializeFrom(
5440  static_cast<U8>(sizeof(U32))
5441  );
5442  FW_ASSERT(
5443  _status == Fw::FW_SERIALIZE_OK,
5444  static_cast<FwAssertArgType>(_status)
5445  );
5446 #endif
5447  _status = _logBuff.serializeFrom(stmtIdx);
5448  FW_ASSERT(
5449  _status == Fw::FW_SERIALIZE_OK,
5450  static_cast<FwAssertArgType>(_status)
5451  );
5452 
5453  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
5454  FW_ASSERT(
5455  _status == Fw::FW_SERIALIZE_OK,
5456  static_cast<FwAssertArgType>(_status)
5457  );
5458 
5459 #if FW_AMPCS_COMPATIBLE
5460  // Serialize the argument size
5461  _status = _logBuff.serializeFrom(
5462  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
5463  );
5464  FW_ASSERT(
5465  _status == Fw::FW_SERIALIZE_OK,
5466  static_cast<FwAssertArgType>(_status)
5467  );
5468 #endif
5469  _status = _logBuff.serializeFrom(response);
5470  FW_ASSERT(
5471  _status == Fw::FW_SERIALIZE_OK,
5472  static_cast<FwAssertArgType>(_status)
5473  );
5474 
5475  this->m_logOut_OutputPort[0].invoke(
5476  _id,
5477  _logTime,
5479  _logBuff
5480  );
5481  }
5482 
5483  // Emit the event on the text log port
5484 #if FW_ENABLE_TEXT_LOGGING
5485  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5486 #if FW_OBJECT_NAMES == 1
5487  const char* _formatString =
5488  "(%s) %s: Failed to execute command opcode %" PRIu32 " index %" PRIu32 " in sequence file %s: response was %s";
5489 #else
5490  const char* _formatString =
5491  "%s: Failed to execute command opcode %" PRIu32 " index %" PRIu32 " in sequence file %s: response was %s";
5492 #endif
5493 
5494  Fw::String responseStr;
5495  response.toString(responseStr);
5496 
5497  Fw::TextLogString _logString;
5498  _logString.format(
5499  _formatString,
5500 #if FW_OBJECT_NAMES == 1
5501  this->m_objName.toChar(),
5502 #endif
5503  "CommandFailed ",
5504  opCode,
5505  stmtIdx,
5506  filePath.toChar(),
5507  responseStr.toChar()
5508  );
5509 
5510  this->m_logTextOut_OutputPort[0].invoke(
5511  _id,
5512  _logTime,
5514  _logString
5515  );
5516  }
5517 #endif
5518  }
5519 
5522  {
5523  // Get the time
5524  Fw::Time _logTime;
5525  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5526  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5527  }
5528 
5529  FwEventIdType _id = static_cast<FwEventIdType>(0);
5530 
5531  _id = this->getIdBase() + EVENTID_SEQUENCEDONE;
5532 
5533  // Emit the event on the log port
5534  if (this->m_logOut_OutputPort[0].isConnected()) {
5535  Fw::LogBuffer _logBuff;
5537 
5538 #if FW_AMPCS_COMPATIBLE
5539  // Serialize the number of arguments
5540  _status = _logBuff.serializeFrom(static_cast<U8>(1));
5541  FW_ASSERT(
5542  _status == Fw::FW_SERIALIZE_OK,
5543  static_cast<FwAssertArgType>(_status)
5544  );
5545 #endif
5546 
5547  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
5548  FW_ASSERT(
5549  _status == Fw::FW_SERIALIZE_OK,
5550  static_cast<FwAssertArgType>(_status)
5551  );
5552 
5553  this->m_logOut_OutputPort[0].invoke(
5554  _id,
5555  _logTime,
5557  _logBuff
5558  );
5559  }
5560 
5561  // Emit the event on the text log port
5562 #if FW_ENABLE_TEXT_LOGGING
5563  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5564 #if FW_OBJECT_NAMES == 1
5565  const char* _formatString =
5566  "(%s) %s: Completed sequence file %s";
5567 #else
5568  const char* _formatString =
5569  "%s: Completed sequence file %s";
5570 #endif
5571 
5572  Fw::TextLogString _logString;
5573  _logString.format(
5574  _formatString,
5575 #if FW_OBJECT_NAMES == 1
5576  this->m_objName.toChar(),
5577 #endif
5578  "SequenceDone ",
5579  filePath.toChar()
5580  );
5581 
5582  this->m_logTextOut_OutputPort[0].invoke(
5583  _id,
5584  _logTime,
5586  _logString
5587  );
5588  }
5589 #endif
5590  }
5591 
5594  {
5595  // Get the time
5596  Fw::Time _logTime;
5597  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5598  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5599  }
5600 
5601  FwEventIdType _id = static_cast<FwEventIdType>(0);
5602 
5603  _id = this->getIdBase() + EVENTID_SEQUENCECANCELLED;
5604 
5605  // Emit the event on the log port
5606  if (this->m_logOut_OutputPort[0].isConnected()) {
5607  Fw::LogBuffer _logBuff;
5609 
5610 #if FW_AMPCS_COMPATIBLE
5611  // Serialize the number of arguments
5612  _status = _logBuff.serializeFrom(static_cast<U8>(1));
5613  FW_ASSERT(
5614  _status == Fw::FW_SERIALIZE_OK,
5615  static_cast<FwAssertArgType>(_status)
5616  );
5617 #endif
5618 
5619  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
5620  FW_ASSERT(
5621  _status == Fw::FW_SERIALIZE_OK,
5622  static_cast<FwAssertArgType>(_status)
5623  );
5624 
5625  this->m_logOut_OutputPort[0].invoke(
5626  _id,
5627  _logTime,
5629  _logBuff
5630  );
5631  }
5632 
5633  // Emit the event on the text log port
5634 #if FW_ENABLE_TEXT_LOGGING
5635  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5636 #if FW_OBJECT_NAMES == 1
5637  const char* _formatString =
5638  "(%s) %s: Cancelled sequence file %s";
5639 #else
5640  const char* _formatString =
5641  "%s: Cancelled sequence file %s";
5642 #endif
5643 
5644  Fw::TextLogString _logString;
5645  _logString.format(
5646  _formatString,
5647 #if FW_OBJECT_NAMES == 1
5648  this->m_objName.toChar(),
5649 #endif
5650  "SequenceCancelled ",
5651  filePath.toChar()
5652  );
5653 
5654  this->m_logTextOut_OutputPort[0].invoke(
5655  _id,
5656  _logTime,
5658  _logString
5659  );
5660  }
5661 #endif
5662  }
5663 
5666  const Fw::StringBase& filePath,
5667  U8 errorCode
5668  ) const
5669  {
5670  // Get the time
5671  Fw::Time _logTime;
5672  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5673  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5674  }
5675 
5676  FwEventIdType _id = static_cast<FwEventIdType>(0);
5677 
5679 
5680  // Emit the event on the log port
5681  if (this->m_logOut_OutputPort[0].isConnected()) {
5682  Fw::LogBuffer _logBuff;
5684 
5685 #if FW_AMPCS_COMPATIBLE
5686  // Serialize the number of arguments
5687  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5688  FW_ASSERT(
5689  _status == Fw::FW_SERIALIZE_OK,
5690  static_cast<FwAssertArgType>(_status)
5691  );
5692 #endif
5693 
5694  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
5695  FW_ASSERT(
5696  _status == Fw::FW_SERIALIZE_OK,
5697  static_cast<FwAssertArgType>(_status)
5698  );
5699 
5700 #if FW_AMPCS_COMPATIBLE
5701  // Serialize the argument size
5702  _status = _logBuff.serializeFrom(
5703  static_cast<U8>(sizeof(U8))
5704  );
5705  FW_ASSERT(
5706  _status == Fw::FW_SERIALIZE_OK,
5707  static_cast<FwAssertArgType>(_status)
5708  );
5709 #endif
5710  _status = _logBuff.serializeFrom(errorCode);
5711  FW_ASSERT(
5712  _status == Fw::FW_SERIALIZE_OK,
5713  static_cast<FwAssertArgType>(_status)
5714  );
5715 
5716  this->m_logOut_OutputPort[0].invoke(
5717  _id,
5718  _logTime,
5720  _logBuff
5721  );
5722  }
5723 
5724  // Emit the event on the text log port
5725 #if FW_ENABLE_TEXT_LOGGING
5726  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5727 #if FW_OBJECT_NAMES == 1
5728  const char* _formatString =
5729  "(%s) %s: Sequence %s exited with error code %" PRIu8 "";
5730 #else
5731  const char* _formatString =
5732  "%s: Sequence %s exited with error code %" PRIu8 "";
5733 #endif
5734 
5735  Fw::TextLogString _logString;
5736  _logString.format(
5737  _formatString,
5738 #if FW_OBJECT_NAMES == 1
5739  this->m_objName.toChar(),
5740 #endif
5741  "SequenceExitedWithError ",
5742  filePath.toChar(),
5743  errorCode
5744  );
5745 
5746  this->m_logTextOut_OutputPort[0].invoke(
5747  _id,
5748  _logTime,
5750  _logString
5751  );
5752  }
5753 #endif
5754  }
5755 
5758  U8 opcode,
5759  U32 stmtIdx,
5760  const Fw::StringBase& filePath
5761  ) const
5762  {
5763  // Get the time
5764  Fw::Time _logTime;
5765  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5766  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5767  }
5768 
5769  FwEventIdType _id = static_cast<FwEventIdType>(0);
5770 
5772 
5773  // Emit the event on the log port
5774  if (this->m_logOut_OutputPort[0].isConnected()) {
5775  Fw::LogBuffer _logBuff;
5777 
5778 #if FW_AMPCS_COMPATIBLE
5779  // Serialize the number of arguments
5780  _status = _logBuff.serializeFrom(static_cast<U8>(3));
5781  FW_ASSERT(
5782  _status == Fw::FW_SERIALIZE_OK,
5783  static_cast<FwAssertArgType>(_status)
5784  );
5785 #endif
5786 
5787 #if FW_AMPCS_COMPATIBLE
5788  // Serialize the argument size
5789  _status = _logBuff.serializeFrom(
5790  static_cast<U8>(sizeof(U8))
5791  );
5792  FW_ASSERT(
5793  _status == Fw::FW_SERIALIZE_OK,
5794  static_cast<FwAssertArgType>(_status)
5795  );
5796 #endif
5797  _status = _logBuff.serializeFrom(opcode);
5798  FW_ASSERT(
5799  _status == Fw::FW_SERIALIZE_OK,
5800  static_cast<FwAssertArgType>(_status)
5801  );
5802 
5803 #if FW_AMPCS_COMPATIBLE
5804  // Serialize the argument size
5805  _status = _logBuff.serializeFrom(
5806  static_cast<U8>(sizeof(U32))
5807  );
5808  FW_ASSERT(
5809  _status == Fw::FW_SERIALIZE_OK,
5810  static_cast<FwAssertArgType>(_status)
5811  );
5812 #endif
5813  _status = _logBuff.serializeFrom(stmtIdx);
5814  FW_ASSERT(
5815  _status == Fw::FW_SERIALIZE_OK,
5816  static_cast<FwAssertArgType>(_status)
5817  );
5818 
5819  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
5820  FW_ASSERT(
5821  _status == Fw::FW_SERIALIZE_OK,
5822  static_cast<FwAssertArgType>(_status)
5823  );
5824 
5825  this->m_logOut_OutputPort[0].invoke(
5826  _id,
5827  _logTime,
5829  _logBuff
5830  );
5831  }
5832 
5833  // Emit the event on the text log port
5834 #if FW_ENABLE_TEXT_LOGGING
5835  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5836 #if FW_OBJECT_NAMES == 1
5837  const char* _formatString =
5838  "(%s) %s: Unknown sequencer directive id %" PRIu8 " at index %" PRIu32 " in file %s";
5839 #else
5840  const char* _formatString =
5841  "%s: Unknown sequencer directive id %" PRIu8 " at index %" PRIu32 " in file %s";
5842 #endif
5843 
5844  Fw::TextLogString _logString;
5845  _logString.format(
5846  _formatString,
5847 #if FW_OBJECT_NAMES == 1
5848  this->m_objName.toChar(),
5849 #endif
5850  "UnknownSequencerDirective ",
5851  opcode,
5852  stmtIdx,
5853  filePath.toChar()
5854  );
5855 
5856  this->m_logTextOut_OutputPort[0].invoke(
5857  _id,
5858  _logTime,
5860  _logString
5861  );
5862  }
5863 #endif
5864  }
5865 
5868  I32 state,
5869  FwOpcodeType opcode,
5870  Fw::CmdResponse response
5871  ) const
5872  {
5873  // Get the time
5874  Fw::Time _logTime;
5875  if (this->m_timeCaller_OutputPort[0].isConnected()) {
5876  this->m_timeCaller_OutputPort[0].invoke(_logTime);
5877  }
5878 
5879  FwEventIdType _id = static_cast<FwEventIdType>(0);
5880 
5882 
5883  // Emit the event on the log port
5884  if (this->m_logOut_OutputPort[0].isConnected()) {
5885  Fw::LogBuffer _logBuff;
5887 
5888 #if FW_AMPCS_COMPATIBLE
5889  // Serialize the number of arguments
5890  _status = _logBuff.serializeFrom(static_cast<U8>(3));
5891  FW_ASSERT(
5892  _status == Fw::FW_SERIALIZE_OK,
5893  static_cast<FwAssertArgType>(_status)
5894  );
5895 #endif
5896 
5897 #if FW_AMPCS_COMPATIBLE
5898  // Serialize the argument size
5899  _status = _logBuff.serializeFrom(
5900  static_cast<U8>(sizeof(I32))
5901  );
5902  FW_ASSERT(
5903  _status == Fw::FW_SERIALIZE_OK,
5904  static_cast<FwAssertArgType>(_status)
5905  );
5906 #endif
5907  _status = _logBuff.serializeFrom(state);
5908  FW_ASSERT(
5909  _status == Fw::FW_SERIALIZE_OK,
5910  static_cast<FwAssertArgType>(_status)
5911  );
5912 
5913 #if FW_AMPCS_COMPATIBLE
5914  // Serialize the argument size
5915  _status = _logBuff.serializeFrom(
5916  static_cast<U8>(sizeof(FwOpcodeType))
5917  );
5918  FW_ASSERT(
5919  _status == Fw::FW_SERIALIZE_OK,
5920  static_cast<FwAssertArgType>(_status)
5921  );
5922 #endif
5923  _status = _logBuff.serializeFrom(opcode);
5924  FW_ASSERT(
5925  _status == Fw::FW_SERIALIZE_OK,
5926  static_cast<FwAssertArgType>(_status)
5927  );
5928 
5929 #if FW_AMPCS_COMPATIBLE
5930  // Serialize the argument size
5931  _status = _logBuff.serializeFrom(
5932  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
5933  );
5934  FW_ASSERT(
5935  _status == Fw::FW_SERIALIZE_OK,
5936  static_cast<FwAssertArgType>(_status)
5937  );
5938 #endif
5939  _status = _logBuff.serializeFrom(response);
5940  FW_ASSERT(
5941  _status == Fw::FW_SERIALIZE_OK,
5942  static_cast<FwAssertArgType>(_status)
5943  );
5944 
5945  this->m_logOut_OutputPort[0].invoke(
5946  _id,
5947  _logTime,
5949  _logBuff
5950  );
5951  }
5952 
5953  // Emit the event on the text log port
5954 #if FW_ENABLE_TEXT_LOGGING
5955  if (this->m_logTextOut_OutputPort[0].isConnected()) {
5956 #if FW_OBJECT_NAMES == 1
5957  const char* _formatString =
5958  "(%s) %s: Received a command response while not running a sequence (was in state %" PRIi32 " opcode was %" PRIu32 " response code %s)";
5959 #else
5960  const char* _formatString =
5961  "%s: Received a command response while not running a sequence (was in state %" PRIi32 " opcode was %" PRIu32 " response code %s)";
5962 #endif
5963 
5964  Fw::String responseStr;
5965  response.toString(responseStr);
5966 
5967  Fw::TextLogString _logString;
5968  _logString.format(
5969  _formatString,
5970 #if FW_OBJECT_NAMES == 1
5971  this->m_objName.toChar(),
5972 #endif
5973  "CmdResponseWhileNotRunningSequence ",
5974  state,
5975  opcode,
5976  responseStr.toChar()
5977  );
5978 
5979  this->m_logTextOut_OutputPort[0].invoke(
5980  _id,
5981  _logTime,
5983  _logString
5984  );
5985  }
5986 #endif
5987  }
5988 
5991  FwOpcodeType opcode,
5992  Fw::CmdResponse response,
5993  U16 oldSequenceIdx,
5994  U16 currentSequenceIdx
5995  ) const
5996  {
5997  // Get the time
5998  Fw::Time _logTime;
5999  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6000  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6001  }
6002 
6003  FwEventIdType _id = static_cast<FwEventIdType>(0);
6004 
6006 
6007  // Emit the event on the log port
6008  if (this->m_logOut_OutputPort[0].isConnected()) {
6009  Fw::LogBuffer _logBuff;
6011 
6012 #if FW_AMPCS_COMPATIBLE
6013  // Serialize the number of arguments
6014  _status = _logBuff.serializeFrom(static_cast<U8>(4));
6015  FW_ASSERT(
6016  _status == Fw::FW_SERIALIZE_OK,
6017  static_cast<FwAssertArgType>(_status)
6018  );
6019 #endif
6020 
6021 #if FW_AMPCS_COMPATIBLE
6022  // Serialize the argument size
6023  _status = _logBuff.serializeFrom(
6024  static_cast<U8>(sizeof(FwOpcodeType))
6025  );
6026  FW_ASSERT(
6027  _status == Fw::FW_SERIALIZE_OK,
6028  static_cast<FwAssertArgType>(_status)
6029  );
6030 #endif
6031  _status = _logBuff.serializeFrom(opcode);
6032  FW_ASSERT(
6033  _status == Fw::FW_SERIALIZE_OK,
6034  static_cast<FwAssertArgType>(_status)
6035  );
6036 
6037 #if FW_AMPCS_COMPATIBLE
6038  // Serialize the argument size
6039  _status = _logBuff.serializeFrom(
6040  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6041  );
6042  FW_ASSERT(
6043  _status == Fw::FW_SERIALIZE_OK,
6044  static_cast<FwAssertArgType>(_status)
6045  );
6046 #endif
6047  _status = _logBuff.serializeFrom(response);
6048  FW_ASSERT(
6049  _status == Fw::FW_SERIALIZE_OK,
6050  static_cast<FwAssertArgType>(_status)
6051  );
6052 
6053 #if FW_AMPCS_COMPATIBLE
6054  // Serialize the argument size
6055  _status = _logBuff.serializeFrom(
6056  static_cast<U8>(sizeof(U16))
6057  );
6058  FW_ASSERT(
6059  _status == Fw::FW_SERIALIZE_OK,
6060  static_cast<FwAssertArgType>(_status)
6061  );
6062 #endif
6063  _status = _logBuff.serializeFrom(oldSequenceIdx);
6064  FW_ASSERT(
6065  _status == Fw::FW_SERIALIZE_OK,
6066  static_cast<FwAssertArgType>(_status)
6067  );
6068 
6069 #if FW_AMPCS_COMPATIBLE
6070  // Serialize the argument size
6071  _status = _logBuff.serializeFrom(
6072  static_cast<U8>(sizeof(U16))
6073  );
6074  FW_ASSERT(
6075  _status == Fw::FW_SERIALIZE_OK,
6076  static_cast<FwAssertArgType>(_status)
6077  );
6078 #endif
6079  _status = _logBuff.serializeFrom(currentSequenceIdx);
6080  FW_ASSERT(
6081  _status == Fw::FW_SERIALIZE_OK,
6082  static_cast<FwAssertArgType>(_status)
6083  );
6084 
6085  this->m_logOut_OutputPort[0].invoke(
6086  _id,
6087  _logTime,
6089  _logBuff
6090  );
6091  }
6092 
6093  // Emit the event on the text log port
6094 #if FW_ENABLE_TEXT_LOGGING
6095  if (this->m_logTextOut_OutputPort[0].isConnected()) {
6096 #if FW_OBJECT_NAMES == 1
6097  const char* _formatString =
6098  "(%s) %s: Received a response from cmd opcode %" PRIu32 " (response %s), but it was from a previous sequence, not the current one (old idx: %" PRIu16 ", current idx: %" PRIu16 ")";
6099 #else
6100  const char* _formatString =
6101  "%s: Received a response from cmd opcode %" PRIu32 " (response %s), but it was from a previous sequence, not the current one (old idx: %" PRIu16 ", current idx: %" PRIu16 ")";
6102 #endif
6103 
6104  Fw::String responseStr;
6105  response.toString(responseStr);
6106 
6107  Fw::TextLogString _logString;
6108  _logString.format(
6109  _formatString,
6110 #if FW_OBJECT_NAMES == 1
6111  this->m_objName.toChar(),
6112 #endif
6113  "CmdResponseFromOldSequence ",
6114  opcode,
6115  responseStr.toChar(),
6116  oldSequenceIdx,
6117  currentSequenceIdx
6118  );
6119 
6120  this->m_logTextOut_OutputPort[0].invoke(
6121  _id,
6122  _logTime,
6124  _logString
6125  );
6126  }
6127 #endif
6128  }
6129 
6132  FwOpcodeType opcode,
6133  Fw::CmdResponse response
6134  ) const
6135  {
6136  // Get the time
6137  Fw::Time _logTime;
6138  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6139  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6140  }
6141 
6142  FwEventIdType _id = static_cast<FwEventIdType>(0);
6143 
6145 
6146  // Emit the event on the log port
6147  if (this->m_logOut_OutputPort[0].isConnected()) {
6148  Fw::LogBuffer _logBuff;
6150 
6151 #if FW_AMPCS_COMPATIBLE
6152  // Serialize the number of arguments
6153  _status = _logBuff.serializeFrom(static_cast<U8>(2));
6154  FW_ASSERT(
6155  _status == Fw::FW_SERIALIZE_OK,
6156  static_cast<FwAssertArgType>(_status)
6157  );
6158 #endif
6159 
6160 #if FW_AMPCS_COMPATIBLE
6161  // Serialize the argument size
6162  _status = _logBuff.serializeFrom(
6163  static_cast<U8>(sizeof(FwOpcodeType))
6164  );
6165  FW_ASSERT(
6166  _status == Fw::FW_SERIALIZE_OK,
6167  static_cast<FwAssertArgType>(_status)
6168  );
6169 #endif
6170  _status = _logBuff.serializeFrom(opcode);
6171  FW_ASSERT(
6172  _status == Fw::FW_SERIALIZE_OK,
6173  static_cast<FwAssertArgType>(_status)
6174  );
6175 
6176 #if FW_AMPCS_COMPATIBLE
6177  // Serialize the argument size
6178  _status = _logBuff.serializeFrom(
6179  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6180  );
6181  FW_ASSERT(
6182  _status == Fw::FW_SERIALIZE_OK,
6183  static_cast<FwAssertArgType>(_status)
6184  );
6185 #endif
6186  _status = _logBuff.serializeFrom(response);
6187  FW_ASSERT(
6188  _status == Fw::FW_SERIALIZE_OK,
6189  static_cast<FwAssertArgType>(_status)
6190  );
6191 
6192  this->m_logOut_OutputPort[0].invoke(
6193  _id,
6194  _logTime,
6196  _logBuff
6197  );
6198  }
6199 
6200  // Emit the event on the text log port
6201 #if FW_ENABLE_TEXT_LOGGING
6202  if (this->m_logTextOut_OutputPort[0].isConnected()) {
6203 #if FW_OBJECT_NAMES == 1
6204  const char* _formatString =
6205  "(%s) %s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was not awaiting a response";
6206 #else
6207  const char* _formatString =
6208  "%s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was not awaiting a response";
6209 #endif
6210 
6211  Fw::String responseStr;
6212  response.toString(responseStr);
6213 
6214  Fw::TextLogString _logString;
6215  _logString.format(
6216  _formatString,
6217 #if FW_OBJECT_NAMES == 1
6218  this->m_objName.toChar(),
6219 #endif
6220  "CmdResponseWhileNotAwaiting ",
6221  opcode,
6222  responseStr.toChar()
6223  );
6224 
6225  this->m_logTextOut_OutputPort[0].invoke(
6226  _id,
6227  _logTime,
6229  _logString
6230  );
6231  }
6232 #endif
6233  }
6234 
6237  FwOpcodeType opcode,
6238  Fw::CmdResponse response,
6239  U8 expectedDirectiveOpcode
6240  ) const
6241  {
6242  // Get the time
6243  Fw::Time _logTime;
6244  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6245  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6246  }
6247 
6248  FwEventIdType _id = static_cast<FwEventIdType>(0);
6249 
6251 
6252  // Emit the event on the log port
6253  if (this->m_logOut_OutputPort[0].isConnected()) {
6254  Fw::LogBuffer _logBuff;
6256 
6257 #if FW_AMPCS_COMPATIBLE
6258  // Serialize the number of arguments
6259  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6260  FW_ASSERT(
6261  _status == Fw::FW_SERIALIZE_OK,
6262  static_cast<FwAssertArgType>(_status)
6263  );
6264 #endif
6265 
6266 #if FW_AMPCS_COMPATIBLE
6267  // Serialize the argument size
6268  _status = _logBuff.serializeFrom(
6269  static_cast<U8>(sizeof(FwOpcodeType))
6270  );
6271  FW_ASSERT(
6272  _status == Fw::FW_SERIALIZE_OK,
6273  static_cast<FwAssertArgType>(_status)
6274  );
6275 #endif
6276  _status = _logBuff.serializeFrom(opcode);
6277  FW_ASSERT(
6278  _status == Fw::FW_SERIALIZE_OK,
6279  static_cast<FwAssertArgType>(_status)
6280  );
6281 
6282 #if FW_AMPCS_COMPATIBLE
6283  // Serialize the argument size
6284  _status = _logBuff.serializeFrom(
6285  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6286  );
6287  FW_ASSERT(
6288  _status == Fw::FW_SERIALIZE_OK,
6289  static_cast<FwAssertArgType>(_status)
6290  );
6291 #endif
6292  _status = _logBuff.serializeFrom(response);
6293  FW_ASSERT(
6294  _status == Fw::FW_SERIALIZE_OK,
6295  static_cast<FwAssertArgType>(_status)
6296  );
6297 
6298 #if FW_AMPCS_COMPATIBLE
6299  // Serialize the argument size
6300  _status = _logBuff.serializeFrom(
6301  static_cast<U8>(sizeof(U8))
6302  );
6303  FW_ASSERT(
6304  _status == Fw::FW_SERIALIZE_OK,
6305  static_cast<FwAssertArgType>(_status)
6306  );
6307 #endif
6308  _status = _logBuff.serializeFrom(expectedDirectiveOpcode);
6309  FW_ASSERT(
6310  _status == Fw::FW_SERIALIZE_OK,
6311  static_cast<FwAssertArgType>(_status)
6312  );
6313 
6314  this->m_logOut_OutputPort[0].invoke(
6315  _id,
6316  _logTime,
6318  _logBuff
6319  );
6320  }
6321 
6322  // Emit the event on the text log port
6323 #if FW_ENABLE_TEXT_LOGGING
6324  if (this->m_logTextOut_OutputPort[0].isConnected()) {
6325 #if FW_OBJECT_NAMES == 1
6326  const char* _formatString =
6327  "(%s) %s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was awaiting directive opcode %" PRIu8 "";
6328 #else
6329  const char* _formatString =
6330  "%s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was awaiting directive opcode %" PRIu8 "";
6331 #endif
6332 
6333  Fw::String responseStr;
6334  response.toString(responseStr);
6335 
6336  Fw::TextLogString _logString;
6337  _logString.format(
6338  _formatString,
6339 #if FW_OBJECT_NAMES == 1
6340  this->m_objName.toChar(),
6341 #endif
6342  "CmdResponseWhileAwaitingDirective ",
6343  opcode,
6344  responseStr.toChar(),
6345  expectedDirectiveOpcode
6346  );
6347 
6348  this->m_logTextOut_OutputPort[0].invoke(
6349  _id,
6350  _logTime,
6352  _logString
6353  );
6354  }
6355 #endif
6356  }
6357 
6360  FwOpcodeType opcode,
6361  Fw::CmdResponse response,
6362  FwOpcodeType expectedOpcode
6363  ) const
6364  {
6365  // Get the time
6366  Fw::Time _logTime;
6367  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6368  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6369  }
6370 
6371  FwEventIdType _id = static_cast<FwEventIdType>(0);
6372 
6373  _id = this->getIdBase() + EVENTID_WRONGCMDRESPONSEOPCODE;
6374 
6375  // Emit the event on the log port
6376  if (this->m_logOut_OutputPort[0].isConnected()) {
6377  Fw::LogBuffer _logBuff;
6379 
6380 #if FW_AMPCS_COMPATIBLE
6381  // Serialize the number of arguments
6382  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6383  FW_ASSERT(
6384  _status == Fw::FW_SERIALIZE_OK,
6385  static_cast<FwAssertArgType>(_status)
6386  );
6387 #endif
6388 
6389 #if FW_AMPCS_COMPATIBLE
6390  // Serialize the argument size
6391  _status = _logBuff.serializeFrom(
6392  static_cast<U8>(sizeof(FwOpcodeType))
6393  );
6394  FW_ASSERT(
6395  _status == Fw::FW_SERIALIZE_OK,
6396  static_cast<FwAssertArgType>(_status)
6397  );
6398 #endif
6399  _status = _logBuff.serializeFrom(opcode);
6400  FW_ASSERT(
6401  _status == Fw::FW_SERIALIZE_OK,
6402  static_cast<FwAssertArgType>(_status)
6403  );
6404 
6405 #if FW_AMPCS_COMPATIBLE
6406  // Serialize the argument size
6407  _status = _logBuff.serializeFrom(
6408  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6409  );
6410  FW_ASSERT(
6411  _status == Fw::FW_SERIALIZE_OK,
6412  static_cast<FwAssertArgType>(_status)
6413  );
6414 #endif
6415  _status = _logBuff.serializeFrom(response);
6416  FW_ASSERT(
6417  _status == Fw::FW_SERIALIZE_OK,
6418  static_cast<FwAssertArgType>(_status)
6419  );
6420 
6421 #if FW_AMPCS_COMPATIBLE
6422  // Serialize the argument size
6423  _status = _logBuff.serializeFrom(
6424  static_cast<U8>(sizeof(FwOpcodeType))
6425  );
6426  FW_ASSERT(
6427  _status == Fw::FW_SERIALIZE_OK,
6428  static_cast<FwAssertArgType>(_status)
6429  );
6430 #endif
6431  _status = _logBuff.serializeFrom(expectedOpcode);
6432  FW_ASSERT(
6433  _status == Fw::FW_SERIALIZE_OK,
6434  static_cast<FwAssertArgType>(_status)
6435  );
6436 
6437  this->m_logOut_OutputPort[0].invoke(
6438  _id,
6439  _logTime,
6441  _logBuff
6442  );
6443  }
6444 
6445  // Emit the event on the text log port
6446 #if FW_ENABLE_TEXT_LOGGING
6447  if (this->m_logTextOut_OutputPort[0].isConnected()) {
6448 #if FW_OBJECT_NAMES == 1
6449  const char* _formatString =
6450  "(%s) %s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was expecting a response from command opcode %" PRIu32 "";
6451 #else
6452  const char* _formatString =
6453  "%s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was expecting a response from command opcode %" PRIu32 "";
6454 #endif
6455 
6456  Fw::String responseStr;
6457  response.toString(responseStr);
6458 
6459  Fw::TextLogString _logString;
6460  _logString.format(
6461  _formatString,
6462 #if FW_OBJECT_NAMES == 1
6463  this->m_objName.toChar(),
6464 #endif
6465  "WrongCmdResponseOpcode ",
6466  opcode,
6467  responseStr.toChar(),
6468  expectedOpcode
6469  );
6470 
6471  this->m_logTextOut_OutputPort[0].invoke(
6472  _id,
6473  _logTime,
6475  _logString
6476  );
6477  }
6478 #endif
6479  }
6480 
6483  FwOpcodeType opcode,
6484  Fw::CmdResponse response,
6485  U16 actualCmdIdx,
6486  U16 expectedCmdIdx
6487  ) const
6488  {
6489  // Get the time
6490  Fw::Time _logTime;
6491  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6492  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6493  }
6494 
6495  FwEventIdType _id = static_cast<FwEventIdType>(0);
6496 
6497  _id = this->getIdBase() + EVENTID_WRONGCMDRESPONSEINDEX;
6498 
6499  // Emit the event on the log port
6500  if (this->m_logOut_OutputPort[0].isConnected()) {
6501  Fw::LogBuffer _logBuff;
6503 
6504 #if FW_AMPCS_COMPATIBLE
6505  // Serialize the number of arguments
6506  _status = _logBuff.serializeFrom(static_cast<U8>(4));
6507  FW_ASSERT(
6508  _status == Fw::FW_SERIALIZE_OK,
6509  static_cast<FwAssertArgType>(_status)
6510  );
6511 #endif
6512 
6513 #if FW_AMPCS_COMPATIBLE
6514  // Serialize the argument size
6515  _status = _logBuff.serializeFrom(
6516  static_cast<U8>(sizeof(FwOpcodeType))
6517  );
6518  FW_ASSERT(
6519  _status == Fw::FW_SERIALIZE_OK,
6520  static_cast<FwAssertArgType>(_status)
6521  );
6522 #endif
6523  _status = _logBuff.serializeFrom(opcode);
6524  FW_ASSERT(
6525  _status == Fw::FW_SERIALIZE_OK,
6526  static_cast<FwAssertArgType>(_status)
6527  );
6528 
6529 #if FW_AMPCS_COMPATIBLE
6530  // Serialize the argument size
6531  _status = _logBuff.serializeFrom(
6532  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6533  );
6534  FW_ASSERT(
6535  _status == Fw::FW_SERIALIZE_OK,
6536  static_cast<FwAssertArgType>(_status)
6537  );
6538 #endif
6539  _status = _logBuff.serializeFrom(response);
6540  FW_ASSERT(
6541  _status == Fw::FW_SERIALIZE_OK,
6542  static_cast<FwAssertArgType>(_status)
6543  );
6544 
6545 #if FW_AMPCS_COMPATIBLE
6546  // Serialize the argument size
6547  _status = _logBuff.serializeFrom(
6548  static_cast<U8>(sizeof(U16))
6549  );
6550  FW_ASSERT(
6551  _status == Fw::FW_SERIALIZE_OK,
6552  static_cast<FwAssertArgType>(_status)
6553  );
6554 #endif
6555  _status = _logBuff.serializeFrom(actualCmdIdx);
6556  FW_ASSERT(
6557  _status == Fw::FW_SERIALIZE_OK,
6558  static_cast<FwAssertArgType>(_status)
6559  );
6560 
6561 #if FW_AMPCS_COMPATIBLE
6562  // Serialize the argument size
6563  _status = _logBuff.serializeFrom(
6564  static_cast<U8>(sizeof(U16))
6565  );
6566  FW_ASSERT(
6567  _status == Fw::FW_SERIALIZE_OK,
6568  static_cast<FwAssertArgType>(_status)
6569  );
6570 #endif
6571  _status = _logBuff.serializeFrom(expectedCmdIdx);
6572  FW_ASSERT(
6573  _status == Fw::FW_SERIALIZE_OK,
6574  static_cast<FwAssertArgType>(_status)
6575  );
6576 
6577  this->m_logOut_OutputPort[0].invoke(
6578  _id,
6579  _logTime,
6581  _logBuff
6582  );
6583  }
6584 
6585  // Emit the event on the text log port
6586 #if FW_ENABLE_TEXT_LOGGING
6587  if (this->m_logTextOut_OutputPort[0].isConnected()) {
6588 #if FW_OBJECT_NAMES == 1
6589  const char* _formatString =
6590  "(%s) %s: Received a response from the correct cmd (opcode %" PRIu32 " response %s), but it was for a different instance of that opcode in the same sequence (actual idx %" PRIu16 " expected %" PRIu16 ")";
6591 #else
6592  const char* _formatString =
6593  "%s: Received a response from the correct cmd (opcode %" PRIu32 " response %s), but it was for a different instance of that opcode in the same sequence (actual idx %" PRIu16 " expected %" PRIu16 ")";
6594 #endif
6595 
6596  Fw::String responseStr;
6597  response.toString(responseStr);
6598 
6599  Fw::TextLogString _logString;
6600  _logString.format(
6601  _formatString,
6602 #if FW_OBJECT_NAMES == 1
6603  this->m_objName.toChar(),
6604 #endif
6605  "WrongCmdResponseIndex ",
6606  opcode,
6607  responseStr.toChar(),
6608  actualCmdIdx,
6609  expectedCmdIdx
6610  );
6611 
6612  this->m_logTextOut_OutputPort[0].invoke(
6613  _id,
6614  _logTime,
6616  _logString
6617  );
6618  }
6619 #endif
6620  }
6621 
6624  U8 opcode,
6625  U32 stmtIdx,
6626  I32 errorCode,
6627  U64 buffLeft,
6628  U64 buffLength
6629  ) const
6630  {
6631  // Get the time
6632  Fw::Time _logTime;
6633  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6634  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6635  }
6636 
6637  FwEventIdType _id = static_cast<FwEventIdType>(0);
6638 
6640 
6641  // Emit the event on the log port
6642  if (this->m_logOut_OutputPort[0].isConnected()) {
6643  Fw::LogBuffer _logBuff;
6645 
6646 #if FW_AMPCS_COMPATIBLE
6647  // Serialize the number of arguments
6648  _status = _logBuff.serializeFrom(static_cast<U8>(5));
6649  FW_ASSERT(
6650  _status == Fw::FW_SERIALIZE_OK,
6651  static_cast<FwAssertArgType>(_status)
6652  );
6653 #endif
6654 
6655 #if FW_AMPCS_COMPATIBLE
6656  // Serialize the argument size
6657  _status = _logBuff.serializeFrom(
6658  static_cast<U8>(sizeof(U8))
6659  );
6660  FW_ASSERT(
6661  _status == Fw::FW_SERIALIZE_OK,
6662  static_cast<FwAssertArgType>(_status)
6663  );
6664 #endif
6665  _status = _logBuff.serializeFrom(opcode);
6666  FW_ASSERT(
6667  _status == Fw::FW_SERIALIZE_OK,
6668  static_cast<FwAssertArgType>(_status)
6669  );
6670 
6671 #if FW_AMPCS_COMPATIBLE
6672  // Serialize the argument size
6673  _status = _logBuff.serializeFrom(
6674  static_cast<U8>(sizeof(U32))
6675  );
6676  FW_ASSERT(
6677  _status == Fw::FW_SERIALIZE_OK,
6678  static_cast<FwAssertArgType>(_status)
6679  );
6680 #endif
6681  _status = _logBuff.serializeFrom(stmtIdx);
6682  FW_ASSERT(
6683  _status == Fw::FW_SERIALIZE_OK,
6684  static_cast<FwAssertArgType>(_status)
6685  );
6686 
6687 #if FW_AMPCS_COMPATIBLE
6688  // Serialize the argument size
6689  _status = _logBuff.serializeFrom(
6690  static_cast<U8>(sizeof(I32))
6691  );
6692  FW_ASSERT(
6693  _status == Fw::FW_SERIALIZE_OK,
6694  static_cast<FwAssertArgType>(_status)
6695  );
6696 #endif
6697  _status = _logBuff.serializeFrom(errorCode);
6698  FW_ASSERT(
6699  _status == Fw::FW_SERIALIZE_OK,
6700  static_cast<FwAssertArgType>(_status)
6701  );
6702 
6703 #if FW_AMPCS_COMPATIBLE
6704  // Serialize the argument size
6705  _status = _logBuff.serializeFrom(
6706  static_cast<U8>(sizeof(U64))
6707  );
6708  FW_ASSERT(
6709  _status == Fw::FW_SERIALIZE_OK,
6710  static_cast<FwAssertArgType>(_status)
6711  );
6712 #endif
6713  _status = _logBuff.serializeFrom(buffLeft);
6714  FW_ASSERT(
6715  _status == Fw::FW_SERIALIZE_OK,
6716  static_cast<FwAssertArgType>(_status)
6717  );
6718 
6719 #if FW_AMPCS_COMPATIBLE
6720  // Serialize the argument size
6721  _status = _logBuff.serializeFrom(
6722  static_cast<U8>(sizeof(U64))
6723  );
6724  FW_ASSERT(
6725  _status == Fw::FW_SERIALIZE_OK,
6726  static_cast<FwAssertArgType>(_status)
6727  );
6728 #endif
6729  _status = _logBuff.serializeFrom(buffLength);
6730  FW_ASSERT(
6731  _status == Fw::FW_SERIALIZE_OK,
6732  static_cast<FwAssertArgType>(_status)
6733  );
6734 
6735  this->m_logOut_OutputPort[0].invoke(
6736  _id,
6737  _logTime,
6739  _logBuff
6740  );
6741  }
6742 
6743  // Emit the event on the text log port
6744 #if FW_ENABLE_TEXT_LOGGING
6745  if (this->m_logTextOut_OutputPort[0].isConnected()) {
6746 #if FW_OBJECT_NAMES == 1
6747  const char* _formatString =
6748  "(%s) %s: Deserialize error encountered while reading directive opcode %" PRIu8 " at index %" PRIu32 ": %" PRIi32 " (%" PRIu64 " bytes left out of %" PRIu64 ")";
6749 #else
6750  const char* _formatString =
6751  "%s: Deserialize error encountered while reading directive opcode %" PRIu8 " at index %" PRIu32 ": %" PRIi32 " (%" PRIu64 " bytes left out of %" PRIu64 ")";
6752 #endif
6753 
6754  Fw::TextLogString _logString;
6755  _logString.format(
6756  _formatString,
6757 #if FW_OBJECT_NAMES == 1
6758  this->m_objName.toChar(),
6759 #endif
6760  "DirectiveDeserializeError ",
6761  opcode,
6762  stmtIdx,
6763  errorCode,
6764  buffLeft,
6765  buffLength
6766  );
6767 
6768  this->m_logTextOut_OutputPort[0].invoke(
6769  _id,
6770  _logTime,
6772  _logString
6773  );
6774  }
6775 #endif
6776  }
6777 
6780  I32 internalTimeBase,
6781  I32 otherTimeBase
6782  ) const
6783  {
6784  // Get the time
6785  Fw::Time _logTime;
6786  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6787  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6788  }
6789 
6790  FwEventIdType _id = static_cast<FwEventIdType>(0);
6791 
6792  _id = this->getIdBase() + EVENTID_MISMATCHEDTIMEBASE;
6793 
6794  // Emit the event on the log port
6795  if (this->m_logOut_OutputPort[0].isConnected()) {
6796  Fw::LogBuffer _logBuff;
6798 
6799 #if FW_AMPCS_COMPATIBLE
6800  // Serialize the number of arguments
6801  _status = _logBuff.serializeFrom(static_cast<U8>(2));
6802  FW_ASSERT(
6803  _status == Fw::FW_SERIALIZE_OK,
6804  static_cast<FwAssertArgType>(_status)
6805  );
6806 #endif
6807 
6808 #if FW_AMPCS_COMPATIBLE
6809  // Serialize the argument size
6810  _status = _logBuff.serializeFrom(
6811  static_cast<U8>(sizeof(I32))
6812  );
6813  FW_ASSERT(
6814  _status == Fw::FW_SERIALIZE_OK,
6815  static_cast<FwAssertArgType>(_status)
6816  );
6817 #endif
6818  _status = _logBuff.serializeFrom(internalTimeBase);
6819  FW_ASSERT(
6820  _status == Fw::FW_SERIALIZE_OK,
6821  static_cast<FwAssertArgType>(_status)
6822  );
6823 
6824 #if FW_AMPCS_COMPATIBLE
6825  // Serialize the argument size
6826  _status = _logBuff.serializeFrom(
6827  static_cast<U8>(sizeof(I32))
6828  );
6829  FW_ASSERT(
6830  _status == Fw::FW_SERIALIZE_OK,
6831  static_cast<FwAssertArgType>(_status)
6832  );
6833 #endif
6834  _status = _logBuff.serializeFrom(otherTimeBase);
6835  FW_ASSERT(
6836  _status == Fw::FW_SERIALIZE_OK,
6837  static_cast<FwAssertArgType>(_status)
6838  );
6839 
6840  this->m_logOut_OutputPort[0].invoke(
6841  _id,
6842  _logTime,
6844  _logBuff
6845  );
6846  }
6847 
6848  // Emit the event on the text log port
6849 #if FW_ENABLE_TEXT_LOGGING
6850  if (this->m_logTextOut_OutputPort[0].isConnected()) {
6851 #if FW_OBJECT_NAMES == 1
6852  const char* _formatString =
6853  "(%s) %s: getTime() time base was %" PRIi32 ", but tried to operate on it with time base %" PRIi32 "";
6854 #else
6855  const char* _formatString =
6856  "%s: getTime() time base was %" PRIi32 ", but tried to operate on it with time base %" PRIi32 "";
6857 #endif
6858 
6859  Fw::TextLogString _logString;
6860  _logString.format(
6861  _formatString,
6862 #if FW_OBJECT_NAMES == 1
6863  this->m_objName.toChar(),
6864 #endif
6865  "MismatchedTimeBase ",
6866  internalTimeBase,
6867  otherTimeBase
6868  );
6869 
6870  this->m_logTextOut_OutputPort[0].invoke(
6871  _id,
6872  _logTime,
6874  _logString
6875  );
6876  }
6877 #endif
6878  }
6879 
6882  I32 internalTimeContext,
6883  I32 otherTimeContext
6884  ) const
6885  {
6886  // Get the time
6887  Fw::Time _logTime;
6888  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6889  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6890  }
6891 
6892  FwEventIdType _id = static_cast<FwEventIdType>(0);
6893 
6894  _id = this->getIdBase() + EVENTID_MISMATCHEDTIMECONTEXT;
6895 
6896  // Emit the event on the log port
6897  if (this->m_logOut_OutputPort[0].isConnected()) {
6898  Fw::LogBuffer _logBuff;
6900 
6901 #if FW_AMPCS_COMPATIBLE
6902  // Serialize the number of arguments
6903  _status = _logBuff.serializeFrom(static_cast<U8>(2));
6904  FW_ASSERT(
6905  _status == Fw::FW_SERIALIZE_OK,
6906  static_cast<FwAssertArgType>(_status)
6907  );
6908 #endif
6909 
6910 #if FW_AMPCS_COMPATIBLE
6911  // Serialize the argument size
6912  _status = _logBuff.serializeFrom(
6913  static_cast<U8>(sizeof(I32))
6914  );
6915  FW_ASSERT(
6916  _status == Fw::FW_SERIALIZE_OK,
6917  static_cast<FwAssertArgType>(_status)
6918  );
6919 #endif
6920  _status = _logBuff.serializeFrom(internalTimeContext);
6921  FW_ASSERT(
6922  _status == Fw::FW_SERIALIZE_OK,
6923  static_cast<FwAssertArgType>(_status)
6924  );
6925 
6926 #if FW_AMPCS_COMPATIBLE
6927  // Serialize the argument size
6928  _status = _logBuff.serializeFrom(
6929  static_cast<U8>(sizeof(I32))
6930  );
6931  FW_ASSERT(
6932  _status == Fw::FW_SERIALIZE_OK,
6933  static_cast<FwAssertArgType>(_status)
6934  );
6935 #endif
6936  _status = _logBuff.serializeFrom(otherTimeContext);
6937  FW_ASSERT(
6938  _status == Fw::FW_SERIALIZE_OK,
6939  static_cast<FwAssertArgType>(_status)
6940  );
6941 
6942  this->m_logOut_OutputPort[0].invoke(
6943  _id,
6944  _logTime,
6946  _logBuff
6947  );
6948  }
6949 
6950  // Emit the event on the text log port
6951 #if FW_ENABLE_TEXT_LOGGING
6952  if (this->m_logTextOut_OutputPort[0].isConnected()) {
6953 #if FW_OBJECT_NAMES == 1
6954  const char* _formatString =
6955  "(%s) %s: getTime() time context was %" PRIi32 ", but tried to operate on it with time context %" PRIi32 "";
6956 #else
6957  const char* _formatString =
6958  "%s: getTime() time context was %" PRIi32 ", but tried to operate on it with time context %" PRIi32 "";
6959 #endif
6960 
6961  Fw::TextLogString _logString;
6962  _logString.format(
6963  _formatString,
6964 #if FW_OBJECT_NAMES == 1
6965  this->m_objName.toChar(),
6966 #endif
6967  "MismatchedTimeContext ",
6968  internalTimeContext,
6969  otherTimeContext
6970  );
6971 
6972  this->m_logTextOut_OutputPort[0].invoke(
6973  _id,
6974  _logTime,
6976  _logString
6977  );
6978  }
6979 #endif
6980  }
6981 
6984  FwOpcodeType opCode,
6985  U32 stmtIdx,
6986  const Fw::StringBase& filePath
6987  ) const
6988  {
6989  // Get the time
6990  Fw::Time _logTime;
6991  if (this->m_timeCaller_OutputPort[0].isConnected()) {
6992  this->m_timeCaller_OutputPort[0].invoke(_logTime);
6993  }
6994 
6995  FwEventIdType _id = static_cast<FwEventIdType>(0);
6996 
6997  _id = this->getIdBase() + EVENTID_COMMANDTIMEDOUT;
6998 
6999  // Emit the event on the log port
7000  if (this->m_logOut_OutputPort[0].isConnected()) {
7001  Fw::LogBuffer _logBuff;
7003 
7004 #if FW_AMPCS_COMPATIBLE
7005  // Serialize the number of arguments
7006  _status = _logBuff.serializeFrom(static_cast<U8>(3));
7007  FW_ASSERT(
7008  _status == Fw::FW_SERIALIZE_OK,
7009  static_cast<FwAssertArgType>(_status)
7010  );
7011 #endif
7012 
7013 #if FW_AMPCS_COMPATIBLE
7014  // Serialize the argument size
7015  _status = _logBuff.serializeFrom(
7016  static_cast<U8>(sizeof(FwOpcodeType))
7017  );
7018  FW_ASSERT(
7019  _status == Fw::FW_SERIALIZE_OK,
7020  static_cast<FwAssertArgType>(_status)
7021  );
7022 #endif
7023  _status = _logBuff.serializeFrom(opCode);
7024  FW_ASSERT(
7025  _status == Fw::FW_SERIALIZE_OK,
7026  static_cast<FwAssertArgType>(_status)
7027  );
7028 
7029 #if FW_AMPCS_COMPATIBLE
7030  // Serialize the argument size
7031  _status = _logBuff.serializeFrom(
7032  static_cast<U8>(sizeof(U32))
7033  );
7034  FW_ASSERT(
7035  _status == Fw::FW_SERIALIZE_OK,
7036  static_cast<FwAssertArgType>(_status)
7037  );
7038 #endif
7039  _status = _logBuff.serializeFrom(stmtIdx);
7040  FW_ASSERT(
7041  _status == Fw::FW_SERIALIZE_OK,
7042  static_cast<FwAssertArgType>(_status)
7043  );
7044 
7045  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
7046  FW_ASSERT(
7047  _status == Fw::FW_SERIALIZE_OK,
7048  static_cast<FwAssertArgType>(_status)
7049  );
7050 
7051  this->m_logOut_OutputPort[0].invoke(
7052  _id,
7053  _logTime,
7055  _logBuff
7056  );
7057  }
7058 
7059  // Emit the event on the text log port
7060 #if FW_ENABLE_TEXT_LOGGING
7061  if (this->m_logTextOut_OutputPort[0].isConnected()) {
7062 #if FW_OBJECT_NAMES == 1
7063  const char* _formatString =
7064  "(%s) %s: A command opcode %" PRIu32 " at index %" PRIu32 " timed out in sequence %s, causing the sequence to fail";
7065 #else
7066  const char* _formatString =
7067  "%s: A command opcode %" PRIu32 " at index %" PRIu32 " timed out in sequence %s, causing the sequence to fail";
7068 #endif
7069 
7070  Fw::TextLogString _logString;
7071  _logString.format(
7072  _formatString,
7073 #if FW_OBJECT_NAMES == 1
7074  this->m_objName.toChar(),
7075 #endif
7076  "CommandTimedOut ",
7077  opCode,
7078  stmtIdx,
7079  filePath.toChar()
7080  );
7081 
7082  this->m_logTextOut_OutputPort[0].invoke(
7083  _id,
7084  _logTime,
7086  _logString
7087  );
7088  }
7089 #endif
7090  }
7091 
7094  U8 opCode,
7095  U32 stmtIdx,
7096  const Fw::StringBase& filePath
7097  ) const
7098  {
7099  // Get the time
7100  Fw::Time _logTime;
7101  if (this->m_timeCaller_OutputPort[0].isConnected()) {
7102  this->m_timeCaller_OutputPort[0].invoke(_logTime);
7103  }
7104 
7105  FwEventIdType _id = static_cast<FwEventIdType>(0);
7106 
7107  _id = this->getIdBase() + EVENTID_DIRECTIVETIMEDOUT;
7108 
7109  // Emit the event on the log port
7110  if (this->m_logOut_OutputPort[0].isConnected()) {
7111  Fw::LogBuffer _logBuff;
7113 
7114 #if FW_AMPCS_COMPATIBLE
7115  // Serialize the number of arguments
7116  _status = _logBuff.serializeFrom(static_cast<U8>(3));
7117  FW_ASSERT(
7118  _status == Fw::FW_SERIALIZE_OK,
7119  static_cast<FwAssertArgType>(_status)
7120  );
7121 #endif
7122 
7123 #if FW_AMPCS_COMPATIBLE
7124  // Serialize the argument size
7125  _status = _logBuff.serializeFrom(
7126  static_cast<U8>(sizeof(U8))
7127  );
7128  FW_ASSERT(
7129  _status == Fw::FW_SERIALIZE_OK,
7130  static_cast<FwAssertArgType>(_status)
7131  );
7132 #endif
7133  _status = _logBuff.serializeFrom(opCode);
7134  FW_ASSERT(
7135  _status == Fw::FW_SERIALIZE_OK,
7136  static_cast<FwAssertArgType>(_status)
7137  );
7138 
7139 #if FW_AMPCS_COMPATIBLE
7140  // Serialize the argument size
7141  _status = _logBuff.serializeFrom(
7142  static_cast<U8>(sizeof(U32))
7143  );
7144  FW_ASSERT(
7145  _status == Fw::FW_SERIALIZE_OK,
7146  static_cast<FwAssertArgType>(_status)
7147  );
7148 #endif
7149  _status = _logBuff.serializeFrom(stmtIdx);
7150  FW_ASSERT(
7151  _status == Fw::FW_SERIALIZE_OK,
7152  static_cast<FwAssertArgType>(_status)
7153  );
7154 
7155  _status = filePath.serializeTo(_logBuff, FW_MIN(FW_LOG_STRING_MAX_SIZE, 80));
7156  FW_ASSERT(
7157  _status == Fw::FW_SERIALIZE_OK,
7158  static_cast<FwAssertArgType>(_status)
7159  );
7160 
7161  this->m_logOut_OutputPort[0].invoke(
7162  _id,
7163  _logTime,
7165  _logBuff
7166  );
7167  }
7168 
7169  // Emit the event on the text log port
7170 #if FW_ENABLE_TEXT_LOGGING
7171  if (this->m_logTextOut_OutputPort[0].isConnected()) {
7172 #if FW_OBJECT_NAMES == 1
7173  const char* _formatString =
7174  "(%s) %s: A directive opcode %" PRIu8 " at index %" PRIu32 " timed out in sequence %s, causing the sequence to fail";
7175 #else
7176  const char* _formatString =
7177  "%s: A directive opcode %" PRIu8 " at index %" PRIu32 " timed out in sequence %s, causing the sequence to fail";
7178 #endif
7179 
7180  Fw::TextLogString _logString;
7181  _logString.format(
7182  _formatString,
7183 #if FW_OBJECT_NAMES == 1
7184  this->m_objName.toChar(),
7185 #endif
7186  "DirectiveTimedOut ",
7187  opCode,
7188  stmtIdx,
7189  filePath.toChar()
7190  );
7191 
7192  this->m_logTextOut_OutputPort[0].invoke(
7193  _id,
7194  _logTime,
7196  _logString
7197  );
7198  }
7199 #endif
7200  }
7201 
7204  U8 count,
7205  U8 max
7206  ) const
7207  {
7208  // Get the time
7209  Fw::Time _logTime;
7210  if (this->m_timeCaller_OutputPort[0].isConnected()) {
7211  this->m_timeCaller_OutputPort[0].invoke(_logTime);
7212  }
7213 
7214  FwEventIdType _id = static_cast<FwEventIdType>(0);
7215 
7216  _id = this->getIdBase() + EVENTID_TOOMANYSEQUENCEARGS;
7217 
7218  // Emit the event on the log port
7219  if (this->m_logOut_OutputPort[0].isConnected()) {
7220  Fw::LogBuffer _logBuff;
7222 
7223 #if FW_AMPCS_COMPATIBLE
7224  // Serialize the number of arguments
7225  _status = _logBuff.serializeFrom(static_cast<U8>(2));
7226  FW_ASSERT(
7227  _status == Fw::FW_SERIALIZE_OK,
7228  static_cast<FwAssertArgType>(_status)
7229  );
7230 #endif
7231 
7232 #if FW_AMPCS_COMPATIBLE
7233  // Serialize the argument size
7234  _status = _logBuff.serializeFrom(
7235  static_cast<U8>(sizeof(U8))
7236  );
7237  FW_ASSERT(
7238  _status == Fw::FW_SERIALIZE_OK,
7239  static_cast<FwAssertArgType>(_status)
7240  );
7241 #endif
7242  _status = _logBuff.serializeFrom(count);
7243  FW_ASSERT(
7244  _status == Fw::FW_SERIALIZE_OK,
7245  static_cast<FwAssertArgType>(_status)
7246  );
7247 
7248 #if FW_AMPCS_COMPATIBLE
7249  // Serialize the argument size
7250  _status = _logBuff.serializeFrom(
7251  static_cast<U8>(sizeof(U8))
7252  );
7253  FW_ASSERT(
7254  _status == Fw::FW_SERIALIZE_OK,
7255  static_cast<FwAssertArgType>(_status)
7256  );
7257 #endif
7258  _status = _logBuff.serializeFrom(max);
7259  FW_ASSERT(
7260  _status == Fw::FW_SERIALIZE_OK,
7261  static_cast<FwAssertArgType>(_status)
7262  );
7263 
7264  this->m_logOut_OutputPort[0].invoke(
7265  _id,
7266  _logTime,
7268  _logBuff
7269  );
7270  }
7271 
7272  // Emit the event on the text log port
7273 #if FW_ENABLE_TEXT_LOGGING
7274  if (this->m_logTextOut_OutputPort[0].isConnected()) {
7275 #if FW_OBJECT_NAMES == 1
7276  const char* _formatString =
7277  "(%s) %s: A sequence specified it had %" PRIu8 " args but the max was %" PRIu8 "";
7278 #else
7279  const char* _formatString =
7280  "%s: A sequence specified it had %" PRIu8 " args but the max was %" PRIu8 "";
7281 #endif
7282 
7283  Fw::TextLogString _logString;
7284  _logString.format(
7285  _formatString,
7286 #if FW_OBJECT_NAMES == 1
7287  this->m_objName.toChar(),
7288 #endif
7289  "TooManySequenceArgs ",
7290  count,
7291  max
7292  );
7293 
7294  this->m_logTextOut_OutputPort[0].invoke(
7295  _id,
7296  _logTime,
7298  _logString
7299  );
7300  }
7301 #endif
7302  }
7303 
7306  U16 count,
7307  U16 max
7308  ) const
7309  {
7310  // Get the time
7311  Fw::Time _logTime;
7312  if (this->m_timeCaller_OutputPort[0].isConnected()) {
7313  this->m_timeCaller_OutputPort[0].invoke(_logTime);
7314  }
7315 
7316  FwEventIdType _id = static_cast<FwEventIdType>(0);
7317 
7319 
7320  // Emit the event on the log port
7321  if (this->m_logOut_OutputPort[0].isConnected()) {
7322  Fw::LogBuffer _logBuff;
7324 
7325 #if FW_AMPCS_COMPATIBLE
7326  // Serialize the number of arguments
7327  _status = _logBuff.serializeFrom(static_cast<U8>(2));
7328  FW_ASSERT(
7329  _status == Fw::FW_SERIALIZE_OK,
7330  static_cast<FwAssertArgType>(_status)
7331  );
7332 #endif
7333 
7334 #if FW_AMPCS_COMPATIBLE
7335  // Serialize the argument size
7336  _status = _logBuff.serializeFrom(
7337  static_cast<U8>(sizeof(U16))
7338  );
7339  FW_ASSERT(
7340  _status == Fw::FW_SERIALIZE_OK,
7341  static_cast<FwAssertArgType>(_status)
7342  );
7343 #endif
7344  _status = _logBuff.serializeFrom(count);
7345  FW_ASSERT(
7346  _status == Fw::FW_SERIALIZE_OK,
7347  static_cast<FwAssertArgType>(_status)
7348  );
7349 
7350 #if FW_AMPCS_COMPATIBLE
7351  // Serialize the argument size
7352  _status = _logBuff.serializeFrom(
7353  static_cast<U8>(sizeof(U16))
7354  );
7355  FW_ASSERT(
7356  _status == Fw::FW_SERIALIZE_OK,
7357  static_cast<FwAssertArgType>(_status)
7358  );
7359 #endif
7360  _status = _logBuff.serializeFrom(max);
7361  FW_ASSERT(
7362  _status == Fw::FW_SERIALIZE_OK,
7363  static_cast<FwAssertArgType>(_status)
7364  );
7365 
7366  this->m_logOut_OutputPort[0].invoke(
7367  _id,
7368  _logTime,
7370  _logBuff
7371  );
7372  }
7373 
7374  // Emit the event on the text log port
7375 #if FW_ENABLE_TEXT_LOGGING
7376  if (this->m_logTextOut_OutputPort[0].isConnected()) {
7377 #if FW_OBJECT_NAMES == 1
7378  const char* _formatString =
7379  "(%s) %s: A sequence specified it had %" PRIu16 " directives but the max was %" PRIu16 "";
7380 #else
7381  const char* _formatString =
7382  "%s: A sequence specified it had %" PRIu16 " directives but the max was %" PRIu16 "";
7383 #endif
7384 
7385  Fw::TextLogString _logString;
7386  _logString.format(
7387  _formatString,
7388 #if FW_OBJECT_NAMES == 1
7389  this->m_objName.toChar(),
7390 #endif
7391  "TooManySequenceDirectives ",
7392  count,
7393  max
7394  );
7395 
7396  this->m_logTextOut_OutputPort[0].invoke(
7397  _id,
7398  _logTime,
7400  _logString
7401  );
7402  }
7403 #endif
7404  }
7405 
7408  {
7409  // Get the time
7410  Fw::Time _logTime;
7411  if (this->m_timeCaller_OutputPort[0].isConnected()) {
7412  this->m_timeCaller_OutputPort[0].invoke(_logTime);
7413  }
7414 
7415  FwEventIdType _id = static_cast<FwEventIdType>(0);
7416 
7417  _id = this->getIdBase() + EVENTID_SEQUENCEPAUSED;
7418 
7419  // Emit the event on the log port
7420  if (this->m_logOut_OutputPort[0].isConnected()) {
7421  Fw::LogBuffer _logBuff;
7423 
7424 #if FW_AMPCS_COMPATIBLE
7425  // Serialize the number of arguments
7426  _status = _logBuff.serializeFrom(static_cast<U8>(1));
7427  FW_ASSERT(
7428  _status == Fw::FW_SERIALIZE_OK,
7429  static_cast<FwAssertArgType>(_status)
7430  );
7431 #endif
7432 
7433 #if FW_AMPCS_COMPATIBLE
7434  // Serialize the argument size
7435  _status = _logBuff.serializeFrom(
7436  static_cast<U8>(sizeof(U32))
7437  );
7438  FW_ASSERT(
7439  _status == Fw::FW_SERIALIZE_OK,
7440  static_cast<FwAssertArgType>(_status)
7441  );
7442 #endif
7443  _status = _logBuff.serializeFrom(stmtIdx);
7444  FW_ASSERT(
7445  _status == Fw::FW_SERIALIZE_OK,
7446  static_cast<FwAssertArgType>(_status)
7447  );
7448 
7449  this->m_logOut_OutputPort[0].invoke(
7450  _id,
7451  _logTime,
7453  _logBuff
7454  );
7455  }
7456 
7457  // Emit the event on the text log port
7458 #if FW_ENABLE_TEXT_LOGGING
7459  if (this->m_logTextOut_OutputPort[0].isConnected()) {
7460 #if FW_OBJECT_NAMES == 1
7461  const char* _formatString =
7462  "(%s) %s: Sequence paused before dispatching directive index %" PRIu32 "";
7463 #else
7464  const char* _formatString =
7465  "%s: Sequence paused before dispatching directive index %" PRIu32 "";
7466 #endif
7467 
7468  Fw::TextLogString _logString;
7469  _logString.format(
7470  _formatString,
7471 #if FW_OBJECT_NAMES == 1
7472  this->m_objName.toChar(),
7473 #endif
7474  "SequencePaused ",
7475  stmtIdx
7476  );
7477 
7478  this->m_logTextOut_OutputPort[0].invoke(
7479  _id,
7480  _logTime,
7482  _logString
7483  );
7484  }
7485 #endif
7486  }
7487 
7490  U32 breakpointIdx,
7491  bool breakOnce
7492  ) const
7493  {
7494  // Get the time
7495  Fw::Time _logTime;
7496  if (this->m_timeCaller_OutputPort[0].isConnected()) {
7497  this->m_timeCaller_OutputPort[0].invoke(_logTime);
7498  }
7499 
7500  FwEventIdType _id = static_cast<FwEventIdType>(0);
7501 
7502  _id = this->getIdBase() + EVENTID_BREAKPOINTSET;
7503 
7504  // Emit the event on the log port
7505  if (this->m_logOut_OutputPort[0].isConnected()) {
7506  Fw::LogBuffer _logBuff;
7508 
7509 #if FW_AMPCS_COMPATIBLE
7510  // Serialize the number of arguments
7511  _status = _logBuff.serializeFrom(static_cast<U8>(2));
7512  FW_ASSERT(
7513  _status == Fw::FW_SERIALIZE_OK,
7514  static_cast<FwAssertArgType>(_status)
7515  );
7516 #endif
7517 
7518 #if FW_AMPCS_COMPATIBLE
7519  // Serialize the argument size
7520  _status = _logBuff.serializeFrom(
7521  static_cast<U8>(sizeof(U32))
7522  );
7523  FW_ASSERT(
7524  _status == Fw::FW_SERIALIZE_OK,
7525  static_cast<FwAssertArgType>(_status)
7526  );
7527 #endif
7528  _status = _logBuff.serializeFrom(breakpointIdx);
7529  FW_ASSERT(
7530  _status == Fw::FW_SERIALIZE_OK,
7531  static_cast<FwAssertArgType>(_status)
7532  );
7533 
7534 #if FW_AMPCS_COMPATIBLE
7535  // Serialize the argument size
7536  _status = _logBuff.serializeFrom(
7537  static_cast<U8>(sizeof(U8))
7538  );
7539  FW_ASSERT(
7540  _status == Fw::FW_SERIALIZE_OK,
7541  static_cast<FwAssertArgType>(_status)
7542  );
7543 #endif
7544  _status = _logBuff.serializeFrom(breakOnce);
7545  FW_ASSERT(
7546  _status == Fw::FW_SERIALIZE_OK,
7547  static_cast<FwAssertArgType>(_status)
7548  );
7549 
7550  this->m_logOut_OutputPort[0].invoke(
7551  _id,
7552  _logTime,
7554  _logBuff
7555  );
7556  }
7557 
7558  // Emit the event on the text log port
7559 #if FW_ENABLE_TEXT_LOGGING
7560  if (this->m_logTextOut_OutputPort[0].isConnected()) {
7561 #if FW_OBJECT_NAMES == 1
7562  const char* _formatString =
7563  "(%s) %s: Breakpoint set before directive index %" PRIu32 ". Will break once: %d";
7564 #else
7565  const char* _formatString =
7566  "%s: Breakpoint set before directive index %" PRIu32 ". Will break once: %d";
7567 #endif
7568 
7569  Fw::TextLogString _logString;
7570  _logString.format(
7571  _formatString,
7572 #if FW_OBJECT_NAMES == 1
7573  this->m_objName.toChar(),
7574 #endif
7575  "BreakpointSet ",
7576  breakpointIdx,
7577  breakOnce
7578  );
7579 
7580  this->m_logTextOut_OutputPort[0].invoke(
7581  _id,
7582  _logTime,
7584  _logString
7585  );
7586  }
7587 #endif
7588  }
7589 
7592  {
7593  // Get the time
7594  Fw::Time _logTime;
7595  if (this->m_timeCaller_OutputPort[0].isConnected()) {
7596  this->m_timeCaller_OutputPort[0].invoke(_logTime);
7597  }
7598 
7599  FwEventIdType _id = static_cast<FwEventIdType>(0);
7600 
7601  _id = this->getIdBase() + EVENTID_BREAKPOINTCLEARED;
7602 
7603  // Emit the event on the log port
7604  if (this->m_logOut_OutputPort[0].isConnected()) {
7605  Fw::LogBuffer _logBuff;
7606 
7607 #if FW_AMPCS_COMPATIBLE
7609  // Serialize the number of arguments
7610  _status = _logBuff.serializeFrom(static_cast<U8>(0));
7611  FW_ASSERT(
7612  _status == Fw::FW_SERIALIZE_OK,
7613  static_cast<FwAssertArgType>(_status)
7614  );
7615 #endif
7616 
7617  this->m_logOut_OutputPort[0].invoke(
7618  _id,
7619  _logTime,
7621  _logBuff
7622  );
7623  }
7624 
7625  // Emit the event on the text log port
7626 #if FW_ENABLE_TEXT_LOGGING
7627  if (this->m_logTextOut_OutputPort[0].isConnected()) {
7628 #if FW_OBJECT_NAMES == 1
7629  const char* _formatString =
7630  "(%s) %s: Breakpoint cleared";
7631 #else
7632  const char* _formatString =
7633  "%s: Breakpoint cleared";
7634 #endif
7635 
7636  Fw::TextLogString _logString;
7637  _logString.format(
7638  _formatString,
7639 #if FW_OBJECT_NAMES == 1
7640  this->m_objName.toChar(),
7641 #endif
7642  "BreakpointCleared "
7643  );
7644 
7645  this->m_logTextOut_OutputPort[0].invoke(
7646  _id,
7647  _logTime,
7649  _logString
7650  );
7651  }
7652 #endif
7653  }
7654 
7655  // ----------------------------------------------------------------------
7656  // Telemetry write functions
7657  // ----------------------------------------------------------------------
7658 
7661  FwEnumStoreType arg,
7662  Fw::Time _tlmTime
7663  )
7664  {
7665  // Check to see if it is the first time
7666  if (not this->m_first_update_State) {
7667  // Check to see if value has changed. If not, don't write it.
7668  if (arg == this->m_last_State) {
7669  return;
7670  }
7671  else {
7672  this->m_last_State = arg;
7673  }
7674  }
7675  else {
7676  this->m_first_update_State = false;
7677  this->m_last_State = arg;
7678  }
7679 
7680  if (this->m_tlmOut_OutputPort[0].isConnected()) {
7681  if (
7682  this->m_timeCaller_OutputPort[0].isConnected() &&
7683  (_tlmTime == Fw::ZERO_TIME)
7684  ) {
7685  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
7686  }
7687 
7688  Fw::TlmBuffer _tlmBuff;
7689  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
7690  FW_ASSERT(
7691  _stat == Fw::FW_SERIALIZE_OK,
7692  static_cast<FwAssertArgType>(_stat)
7693  );
7694 
7695  FwChanIdType _id;
7696 
7697  _id = this->getIdBase() + CHANNELID_STATE;
7698 
7699  this->m_tlmOut_OutputPort[0].invoke(
7700  _id,
7701  _tlmTime,
7702  _tlmBuff
7703  );
7704  }
7705  }
7706 
7709  U64 arg,
7710  Fw::Time _tlmTime
7711  )
7712  {
7713  // Check to see if it is the first time
7714  if (not this->m_first_update_SequencesSucceeded) {
7715  // Check to see if value has changed. If not, don't write it.
7716  if (arg == this->m_last_SequencesSucceeded) {
7717  return;
7718  }
7719  else {
7720  this->m_last_SequencesSucceeded = arg;
7721  }
7722  }
7723  else {
7724  this->m_first_update_SequencesSucceeded = false;
7725  this->m_last_SequencesSucceeded = arg;
7726  }
7727 
7728  if (this->m_tlmOut_OutputPort[0].isConnected()) {
7729  if (
7730  this->m_timeCaller_OutputPort[0].isConnected() &&
7731  (_tlmTime == Fw::ZERO_TIME)
7732  ) {
7733  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
7734  }
7735 
7736  Fw::TlmBuffer _tlmBuff;
7737  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
7738  FW_ASSERT(
7739  _stat == Fw::FW_SERIALIZE_OK,
7740  static_cast<FwAssertArgType>(_stat)
7741  );
7742 
7743  FwChanIdType _id;
7744 
7745  _id = this->getIdBase() + CHANNELID_SEQUENCESSUCCEEDED;
7746 
7747  this->m_tlmOut_OutputPort[0].invoke(
7748  _id,
7749  _tlmTime,
7750  _tlmBuff
7751  );
7752  }
7753  }
7754 
7757  U64 arg,
7758  Fw::Time _tlmTime
7759  )
7760  {
7761  // Check to see if it is the first time
7762  if (not this->m_first_update_SequencesFailed) {
7763  // Check to see if value has changed. If not, don't write it.
7764  if (arg == this->m_last_SequencesFailed) {
7765  return;
7766  }
7767  else {
7768  this->m_last_SequencesFailed = arg;
7769  }
7770  }
7771  else {
7772  this->m_first_update_SequencesFailed = false;
7773  this->m_last_SequencesFailed = arg;
7774  }
7775 
7776  if (this->m_tlmOut_OutputPort[0].isConnected()) {
7777  if (
7778  this->m_timeCaller_OutputPort[0].isConnected() &&
7779  (_tlmTime == Fw::ZERO_TIME)
7780  ) {
7781  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
7782  }
7783 
7784  Fw::TlmBuffer _tlmBuff;
7785  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
7786  FW_ASSERT(
7787  _stat == Fw::FW_SERIALIZE_OK,
7788  static_cast<FwAssertArgType>(_stat)
7789  );
7790 
7791  FwChanIdType _id;
7792 
7793  _id = this->getIdBase() + CHANNELID_SEQUENCESFAILED;
7794 
7795  this->m_tlmOut_OutputPort[0].invoke(
7796  _id,
7797  _tlmTime,
7798  _tlmBuff
7799  );
7800  }
7801  }
7802 
7805  U64 arg,
7806  Fw::Time _tlmTime
7807  )
7808  {
7809  // Check to see if it is the first time
7810  if (not this->m_first_update_SequencesCancelled) {
7811  // Check to see if value has changed. If not, don't write it.
7812  if (arg == this->m_last_SequencesCancelled) {
7813  return;
7814  }
7815  else {
7816  this->m_last_SequencesCancelled = arg;
7817  }
7818  }
7819  else {
7820  this->m_first_update_SequencesCancelled = false;
7821  this->m_last_SequencesCancelled = arg;
7822  }
7823 
7824  if (this->m_tlmOut_OutputPort[0].isConnected()) {
7825  if (
7826  this->m_timeCaller_OutputPort[0].isConnected() &&
7827  (_tlmTime == Fw::ZERO_TIME)
7828  ) {
7829  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
7830  }
7831 
7832  Fw::TlmBuffer _tlmBuff;
7833  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
7834  FW_ASSERT(
7835  _stat == Fw::FW_SERIALIZE_OK,
7836  static_cast<FwAssertArgType>(_stat)
7837  );
7838 
7839  FwChanIdType _id;
7840 
7841  _id = this->getIdBase() + CHANNELID_SEQUENCESCANCELLED;
7842 
7843  this->m_tlmOut_OutputPort[0].invoke(
7844  _id,
7845  _tlmTime,
7846  _tlmBuff
7847  );
7848  }
7849  }
7850 
7853  U64 arg,
7854  Fw::Time _tlmTime
7855  )
7856  {
7857  // Check to see if it is the first time
7858  if (not this->m_first_update_StatementsDispatched) {
7859  // Check to see if value has changed. If not, don't write it.
7860  if (arg == this->m_last_StatementsDispatched) {
7861  return;
7862  }
7863  else {
7864  this->m_last_StatementsDispatched = arg;
7865  }
7866  }
7867  else {
7868  this->m_first_update_StatementsDispatched = false;
7869  this->m_last_StatementsDispatched = arg;
7870  }
7871 
7872  if (this->m_tlmOut_OutputPort[0].isConnected()) {
7873  if (
7874  this->m_timeCaller_OutputPort[0].isConnected() &&
7875  (_tlmTime == Fw::ZERO_TIME)
7876  ) {
7877  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
7878  }
7879 
7880  Fw::TlmBuffer _tlmBuff;
7881  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
7882  FW_ASSERT(
7883  _stat == Fw::FW_SERIALIZE_OK,
7884  static_cast<FwAssertArgType>(_stat)
7885  );
7886 
7887  FwChanIdType _id;
7888 
7889  _id = this->getIdBase() + CHANNELID_STATEMENTSDISPATCHED;
7890 
7891  this->m_tlmOut_OutputPort[0].invoke(
7892  _id,
7893  _tlmTime,
7894  _tlmBuff
7895  );
7896  }
7897  }
7898 
7901  U64 arg,
7902  Fw::Time _tlmTime
7903  )
7904  {
7905  // Check to see if it is the first time
7906  if (not this->m_first_update_StatementsFailed) {
7907  // Check to see if value has changed. If not, don't write it.
7908  if (arg == this->m_last_StatementsFailed) {
7909  return;
7910  }
7911  else {
7912  this->m_last_StatementsFailed = arg;
7913  }
7914  }
7915  else {
7916  this->m_first_update_StatementsFailed = false;
7917  this->m_last_StatementsFailed = arg;
7918  }
7919 
7920  if (this->m_tlmOut_OutputPort[0].isConnected()) {
7921  if (
7922  this->m_timeCaller_OutputPort[0].isConnected() &&
7923  (_tlmTime == Fw::ZERO_TIME)
7924  ) {
7925  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
7926  }
7927 
7928  Fw::TlmBuffer _tlmBuff;
7929  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
7930  FW_ASSERT(
7931  _stat == Fw::FW_SERIALIZE_OK,
7932  static_cast<FwAssertArgType>(_stat)
7933  );
7934 
7935  FwChanIdType _id;
7936 
7937  _id = this->getIdBase() + CHANNELID_STATEMENTSFAILED;
7938 
7939  this->m_tlmOut_OutputPort[0].invoke(
7940  _id,
7941  _tlmTime,
7942  _tlmBuff
7943  );
7944  }
7945  }
7946 
7949  const Svc::Fpy::DirectiveErrorCode& arg,
7950  Fw::Time _tlmTime
7951  )
7952  {
7953  // Check to see if it is the first time
7954  if (not this->m_first_update_LastDirectiveError) {
7955  // Check to see if value has changed. If not, don't write it.
7956  if (arg == this->m_last_LastDirectiveError) {
7957  return;
7958  }
7959  else {
7960  this->m_last_LastDirectiveError = arg;
7961  }
7962  }
7963  else {
7964  this->m_first_update_LastDirectiveError = false;
7965  this->m_last_LastDirectiveError = arg;
7966  }
7967 
7968  if (this->m_tlmOut_OutputPort[0].isConnected()) {
7969  if (
7970  this->m_timeCaller_OutputPort[0].isConnected() &&
7971  (_tlmTime == Fw::ZERO_TIME)
7972  ) {
7973  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
7974  }
7975 
7976  Fw::TlmBuffer _tlmBuff;
7977  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
7978  FW_ASSERT(
7979  _stat == Fw::FW_SERIALIZE_OK,
7980  static_cast<FwAssertArgType>(_stat)
7981  );
7982 
7983  FwChanIdType _id;
7984 
7985  _id = this->getIdBase() + CHANNELID_LASTDIRECTIVEERROR;
7986 
7987  this->m_tlmOut_OutputPort[0].invoke(
7988  _id,
7989  _tlmTime,
7990  _tlmBuff
7991  );
7992  }
7993  }
7994 
7997  U64 arg,
7998  Fw::Time _tlmTime
7999  )
8000  {
8001  // Check to see if it is the first time
8002  if (not this->m_first_update_DirectiveErrorIndex) {
8003  // Check to see if value has changed. If not, don't write it.
8004  if (arg == this->m_last_DirectiveErrorIndex) {
8005  return;
8006  }
8007  else {
8008  this->m_last_DirectiveErrorIndex = arg;
8009  }
8010  }
8011  else {
8012  this->m_first_update_DirectiveErrorIndex = false;
8013  this->m_last_DirectiveErrorIndex = arg;
8014  }
8015 
8016  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8017  if (
8018  this->m_timeCaller_OutputPort[0].isConnected() &&
8019  (_tlmTime == Fw::ZERO_TIME)
8020  ) {
8021  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8022  }
8023 
8024  Fw::TlmBuffer _tlmBuff;
8025  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8026  FW_ASSERT(
8027  _stat == Fw::FW_SERIALIZE_OK,
8028  static_cast<FwAssertArgType>(_stat)
8029  );
8030 
8031  FwChanIdType _id;
8032 
8033  _id = this->getIdBase() + CHANNELID_DIRECTIVEERRORINDEX;
8034 
8035  this->m_tlmOut_OutputPort[0].invoke(
8036  _id,
8037  _tlmTime,
8038  _tlmBuff
8039  );
8040  }
8041  }
8042 
8045  const Svc::Fpy::DirectiveId& arg,
8046  Fw::Time _tlmTime
8047  )
8048  {
8049  // Check to see if it is the first time
8050  if (not this->m_first_update_DirectiveErrorId) {
8051  // Check to see if value has changed. If not, don't write it.
8052  if (arg == this->m_last_DirectiveErrorId) {
8053  return;
8054  }
8055  else {
8056  this->m_last_DirectiveErrorId = arg;
8057  }
8058  }
8059  else {
8060  this->m_first_update_DirectiveErrorId = false;
8061  this->m_last_DirectiveErrorId = arg;
8062  }
8063 
8064  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8065  if (
8066  this->m_timeCaller_OutputPort[0].isConnected() &&
8067  (_tlmTime == Fw::ZERO_TIME)
8068  ) {
8069  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8070  }
8071 
8072  Fw::TlmBuffer _tlmBuff;
8073  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8074  FW_ASSERT(
8075  _stat == Fw::FW_SERIALIZE_OK,
8076  static_cast<FwAssertArgType>(_stat)
8077  );
8078 
8079  FwChanIdType _id;
8080 
8081  _id = this->getIdBase() + CHANNELID_DIRECTIVEERRORID;
8082 
8083  this->m_tlmOut_OutputPort[0].invoke(
8084  _id,
8085  _tlmTime,
8086  _tlmBuff
8087  );
8088  }
8089  }
8090 
8093  const Fw::StringBase& arg,
8094  Fw::Time _tlmTime
8095  )
8096  {
8097  // Check to see if it is the first time
8098  if (not this->m_first_update_SeqPath) {
8099  // Check to see if value has changed. If not, don't write it.
8100  if (arg == this->m_last_SeqPath) {
8101  return;
8102  }
8103  else {
8104  this->m_last_SeqPath = arg;
8105  }
8106  }
8107  else {
8108  this->m_first_update_SeqPath = false;
8109  this->m_last_SeqPath = arg;
8110  }
8111 
8112  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8113  if (
8114  this->m_timeCaller_OutputPort[0].isConnected() &&
8115  (_tlmTime == Fw::ZERO_TIME)
8116  ) {
8117  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8118  }
8119 
8120  Fw::TlmBuffer _tlmBuff;
8121  Fw::SerializeStatus _stat = arg.serializeTo(_tlmBuff, FW_MIN(FW_TLM_STRING_MAX_SIZE, 200));
8122  FW_ASSERT(
8123  _stat == Fw::FW_SERIALIZE_OK,
8124  static_cast<FwAssertArgType>(_stat)
8125  );
8126 
8127  FwChanIdType _id;
8128 
8129  _id = this->getIdBase() + CHANNELID_SEQPATH;
8130 
8131  this->m_tlmOut_OutputPort[0].invoke(
8132  _id,
8133  _tlmTime,
8134  _tlmBuff
8135  );
8136  }
8137  }
8138 
8141  bool arg,
8142  Fw::Time _tlmTime
8143  )
8144  {
8145  // Check to see if it is the first time
8146  if (not this->m_first_update_Debug_ReachedEndOfFile) {
8147  // Check to see if value has changed. If not, don't write it.
8148  if (arg == this->m_last_Debug_ReachedEndOfFile) {
8149  return;
8150  }
8151  else {
8152  this->m_last_Debug_ReachedEndOfFile = arg;
8153  }
8154  }
8155  else {
8156  this->m_first_update_Debug_ReachedEndOfFile = false;
8157  this->m_last_Debug_ReachedEndOfFile = arg;
8158  }
8159 
8160  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8161  if (
8162  this->m_timeCaller_OutputPort[0].isConnected() &&
8163  (_tlmTime == Fw::ZERO_TIME)
8164  ) {
8165  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8166  }
8167 
8168  Fw::TlmBuffer _tlmBuff;
8169  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8170  FW_ASSERT(
8171  _stat == Fw::FW_SERIALIZE_OK,
8172  static_cast<FwAssertArgType>(_stat)
8173  );
8174 
8175  FwChanIdType _id;
8176 
8178 
8179  this->m_tlmOut_OutputPort[0].invoke(
8180  _id,
8181  _tlmTime,
8182  _tlmBuff
8183  );
8184  }
8185  }
8186 
8189  bool arg,
8190  Fw::Time _tlmTime
8191  )
8192  {
8193  // Check to see if it is the first time
8194  if (not this->m_first_update_Debug_NextStatementReadSuccess) {
8195  // Check to see if value has changed. If not, don't write it.
8196  if (arg == this->m_last_Debug_NextStatementReadSuccess) {
8197  return;
8198  }
8199  else {
8200  this->m_last_Debug_NextStatementReadSuccess = arg;
8201  }
8202  }
8203  else {
8204  this->m_first_update_Debug_NextStatementReadSuccess = false;
8205  this->m_last_Debug_NextStatementReadSuccess = arg;
8206  }
8207 
8208  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8209  if (
8210  this->m_timeCaller_OutputPort[0].isConnected() &&
8211  (_tlmTime == Fw::ZERO_TIME)
8212  ) {
8213  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8214  }
8215 
8216  Fw::TlmBuffer _tlmBuff;
8217  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8218  FW_ASSERT(
8219  _stat == Fw::FW_SERIALIZE_OK,
8220  static_cast<FwAssertArgType>(_stat)
8221  );
8222 
8223  FwChanIdType _id;
8224 
8226 
8227  this->m_tlmOut_OutputPort[0].invoke(
8228  _id,
8229  _tlmTime,
8230  _tlmBuff
8231  );
8232  }
8233  }
8234 
8237  U8 arg,
8238  Fw::Time _tlmTime
8239  )
8240  {
8241  // Check to see if it is the first time
8242  if (not this->m_first_update_Debug_NextStatementOpcode) {
8243  // Check to see if value has changed. If not, don't write it.
8244  if (arg == this->m_last_Debug_NextStatementOpcode) {
8245  return;
8246  }
8247  else {
8248  this->m_last_Debug_NextStatementOpcode = arg;
8249  }
8250  }
8251  else {
8252  this->m_first_update_Debug_NextStatementOpcode = false;
8253  this->m_last_Debug_NextStatementOpcode = arg;
8254  }
8255 
8256  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8257  if (
8258  this->m_timeCaller_OutputPort[0].isConnected() &&
8259  (_tlmTime == Fw::ZERO_TIME)
8260  ) {
8261  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8262  }
8263 
8264  Fw::TlmBuffer _tlmBuff;
8265  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8266  FW_ASSERT(
8267  _stat == Fw::FW_SERIALIZE_OK,
8268  static_cast<FwAssertArgType>(_stat)
8269  );
8270 
8271  FwChanIdType _id;
8272 
8274 
8275  this->m_tlmOut_OutputPort[0].invoke(
8276  _id,
8277  _tlmTime,
8278  _tlmBuff
8279  );
8280  }
8281  }
8282 
8285  FwOpcodeType arg,
8286  Fw::Time _tlmTime
8287  )
8288  {
8289  // Check to see if it is the first time
8290  if (not this->m_first_update_Debug_NextCmdOpcode) {
8291  // Check to see if value has changed. If not, don't write it.
8292  if (arg == this->m_last_Debug_NextCmdOpcode) {
8293  return;
8294  }
8295  else {
8296  this->m_last_Debug_NextCmdOpcode = arg;
8297  }
8298  }
8299  else {
8300  this->m_first_update_Debug_NextCmdOpcode = false;
8301  this->m_last_Debug_NextCmdOpcode = arg;
8302  }
8303 
8304  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8305  if (
8306  this->m_timeCaller_OutputPort[0].isConnected() &&
8307  (_tlmTime == Fw::ZERO_TIME)
8308  ) {
8309  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8310  }
8311 
8312  Fw::TlmBuffer _tlmBuff;
8313  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8314  FW_ASSERT(
8315  _stat == Fw::FW_SERIALIZE_OK,
8316  static_cast<FwAssertArgType>(_stat)
8317  );
8318 
8319  FwChanIdType _id;
8320 
8321  _id = this->getIdBase() + CHANNELID_DEBUG_NEXTCMDOPCODE;
8322 
8323  this->m_tlmOut_OutputPort[0].invoke(
8324  _id,
8325  _tlmTime,
8326  _tlmBuff
8327  );
8328  }
8329  }
8330 
8334  Fw::Time _tlmTime
8335  )
8336  {
8337  // Check to see if it is the first time
8338  if (not this->m_first_update_Debug_StackSize) {
8339  // Check to see if value has changed. If not, don't write it.
8340  if (arg == this->m_last_Debug_StackSize) {
8341  return;
8342  }
8343  else {
8344  this->m_last_Debug_StackSize = arg;
8345  }
8346  }
8347  else {
8348  this->m_first_update_Debug_StackSize = false;
8349  this->m_last_Debug_StackSize = arg;
8350  }
8351 
8352  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8353  if (
8354  this->m_timeCaller_OutputPort[0].isConnected() &&
8355  (_tlmTime == Fw::ZERO_TIME)
8356  ) {
8357  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8358  }
8359 
8360  Fw::TlmBuffer _tlmBuff;
8361  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8362  FW_ASSERT(
8363  _stat == Fw::FW_SERIALIZE_OK,
8364  static_cast<FwAssertArgType>(_stat)
8365  );
8366 
8367  FwChanIdType _id;
8368 
8369  _id = this->getIdBase() + CHANNELID_DEBUG_STACKSIZE;
8370 
8371  this->m_tlmOut_OutputPort[0].invoke(
8372  _id,
8373  _tlmTime,
8374  _tlmBuff
8375  );
8376  }
8377  }
8378 
8381  bool arg,
8382  Fw::Time _tlmTime
8383  )
8384  {
8385  // Check to see if it is the first time
8386  if (not this->m_first_update_BreakpointInUse) {
8387  // Check to see if value has changed. If not, don't write it.
8388  if (arg == this->m_last_BreakpointInUse) {
8389  return;
8390  }
8391  else {
8392  this->m_last_BreakpointInUse = arg;
8393  }
8394  }
8395  else {
8396  this->m_first_update_BreakpointInUse = false;
8397  this->m_last_BreakpointInUse = arg;
8398  }
8399 
8400  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8401  if (
8402  this->m_timeCaller_OutputPort[0].isConnected() &&
8403  (_tlmTime == Fw::ZERO_TIME)
8404  ) {
8405  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8406  }
8407 
8408  Fw::TlmBuffer _tlmBuff;
8409  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8410  FW_ASSERT(
8411  _stat == Fw::FW_SERIALIZE_OK,
8412  static_cast<FwAssertArgType>(_stat)
8413  );
8414 
8415  FwChanIdType _id;
8416 
8417  _id = this->getIdBase() + CHANNELID_BREAKPOINTINUSE;
8418 
8419  this->m_tlmOut_OutputPort[0].invoke(
8420  _id,
8421  _tlmTime,
8422  _tlmBuff
8423  );
8424  }
8425  }
8426 
8429  U32 arg,
8430  Fw::Time _tlmTime
8431  )
8432  {
8433  // Check to see if it is the first time
8434  if (not this->m_first_update_BreakpointIndex) {
8435  // Check to see if value has changed. If not, don't write it.
8436  if (arg == this->m_last_BreakpointIndex) {
8437  return;
8438  }
8439  else {
8440  this->m_last_BreakpointIndex = arg;
8441  }
8442  }
8443  else {
8444  this->m_first_update_BreakpointIndex = false;
8445  this->m_last_BreakpointIndex = arg;
8446  }
8447 
8448  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8449  if (
8450  this->m_timeCaller_OutputPort[0].isConnected() &&
8451  (_tlmTime == Fw::ZERO_TIME)
8452  ) {
8453  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8454  }
8455 
8456  Fw::TlmBuffer _tlmBuff;
8457  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8458  FW_ASSERT(
8459  _stat == Fw::FW_SERIALIZE_OK,
8460  static_cast<FwAssertArgType>(_stat)
8461  );
8462 
8463  FwChanIdType _id;
8464 
8465  _id = this->getIdBase() + CHANNELID_BREAKPOINTINDEX;
8466 
8467  this->m_tlmOut_OutputPort[0].invoke(
8468  _id,
8469  _tlmTime,
8470  _tlmBuff
8471  );
8472  }
8473  }
8474 
8477  bool arg,
8478  Fw::Time _tlmTime
8479  )
8480  {
8481  // Check to see if it is the first time
8482  if (not this->m_first_update_BreakOnlyOnceOnBreakpoint) {
8483  // Check to see if value has changed. If not, don't write it.
8484  if (arg == this->m_last_BreakOnlyOnceOnBreakpoint) {
8485  return;
8486  }
8487  else {
8488  this->m_last_BreakOnlyOnceOnBreakpoint = arg;
8489  }
8490  }
8491  else {
8492  this->m_first_update_BreakOnlyOnceOnBreakpoint = false;
8493  this->m_last_BreakOnlyOnceOnBreakpoint = arg;
8494  }
8495 
8496  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8497  if (
8498  this->m_timeCaller_OutputPort[0].isConnected() &&
8499  (_tlmTime == Fw::ZERO_TIME)
8500  ) {
8501  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8502  }
8503 
8504  Fw::TlmBuffer _tlmBuff;
8505  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8506  FW_ASSERT(
8507  _stat == Fw::FW_SERIALIZE_OK,
8508  static_cast<FwAssertArgType>(_stat)
8509  );
8510 
8511  FwChanIdType _id;
8512 
8514 
8515  this->m_tlmOut_OutputPort[0].invoke(
8516  _id,
8517  _tlmTime,
8518  _tlmBuff
8519  );
8520  }
8521  }
8522 
8525  bool arg,
8526  Fw::Time _tlmTime
8527  )
8528  {
8529  // Check to see if it is the first time
8530  if (not this->m_first_update_BreakBeforeNextLine) {
8531  // Check to see if value has changed. If not, don't write it.
8532  if (arg == this->m_last_BreakBeforeNextLine) {
8533  return;
8534  }
8535  else {
8536  this->m_last_BreakBeforeNextLine = arg;
8537  }
8538  }
8539  else {
8540  this->m_first_update_BreakBeforeNextLine = false;
8541  this->m_last_BreakBeforeNextLine = arg;
8542  }
8543 
8544  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8545  if (
8546  this->m_timeCaller_OutputPort[0].isConnected() &&
8547  (_tlmTime == Fw::ZERO_TIME)
8548  ) {
8549  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8550  }
8551 
8552  Fw::TlmBuffer _tlmBuff;
8553  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8554  FW_ASSERT(
8555  _stat == Fw::FW_SERIALIZE_OK,
8556  static_cast<FwAssertArgType>(_stat)
8557  );
8558 
8559  FwChanIdType _id;
8560 
8561  _id = this->getIdBase() + CHANNELID_BREAKBEFORENEXTLINE;
8562 
8563  this->m_tlmOut_OutputPort[0].invoke(
8564  _id,
8565  _tlmTime,
8566  _tlmBuff
8567  );
8568  }
8569  }
8570 
8573  F32 arg,
8574  Fw::Time _tlmTime
8575  )
8576  {
8577  // Check to see if it is the first time
8578  if (not this->m_first_update_PRM_STATEMENT_TIMEOUT_SECS) {
8579  // Check to see if value has changed. If not, don't write it.
8580  if (arg == this->m_last_PRM_STATEMENT_TIMEOUT_SECS) {
8581  return;
8582  }
8583  else {
8584  this->m_last_PRM_STATEMENT_TIMEOUT_SECS = arg;
8585  }
8586  }
8587  else {
8588  this->m_first_update_PRM_STATEMENT_TIMEOUT_SECS = false;
8589  this->m_last_PRM_STATEMENT_TIMEOUT_SECS = arg;
8590  }
8591 
8592  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8593  if (
8594  this->m_timeCaller_OutputPort[0].isConnected() &&
8595  (_tlmTime == Fw::ZERO_TIME)
8596  ) {
8597  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8598  }
8599 
8600  Fw::TlmBuffer _tlmBuff;
8601  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8602  FW_ASSERT(
8603  _stat == Fw::FW_SERIALIZE_OK,
8604  static_cast<FwAssertArgType>(_stat)
8605  );
8606 
8607  FwChanIdType _id;
8608 
8610 
8611  this->m_tlmOut_OutputPort[0].invoke(
8612  _id,
8613  _tlmTime,
8614  _tlmBuff
8615  );
8616  }
8617  }
8618 
8621  bool arg,
8622  Fw::Time _tlmTime
8623  )
8624  {
8625  // Check to see if it is the first time
8626  if (not this->m_first_update_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL) {
8627  // Check to see if value has changed. If not, don't write it.
8628  if (arg == this->m_last_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL) {
8629  return;
8630  }
8631  else {
8632  this->m_last_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = arg;
8633  }
8634  }
8635  else {
8636  this->m_first_update_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = false;
8637  this->m_last_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = arg;
8638  }
8639 
8640  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8641  if (
8642  this->m_timeCaller_OutputPort[0].isConnected() &&
8643  (_tlmTime == Fw::ZERO_TIME)
8644  ) {
8645  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8646  }
8647 
8648  Fw::TlmBuffer _tlmBuff;
8649  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8650  FW_ASSERT(
8651  _stat == Fw::FW_SERIALIZE_OK,
8652  static_cast<FwAssertArgType>(_stat)
8653  );
8654 
8655  FwChanIdType _id;
8656 
8658 
8659  this->m_tlmOut_OutputPort[0].invoke(
8660  _id,
8661  _tlmTime,
8662  _tlmBuff
8663  );
8664  }
8665  }
8666 
8667  // ----------------------------------------------------------------------
8668  // Parameter update hook
8669  // ----------------------------------------------------------------------
8670 
8673  {
8674  // Do nothing by default
8675  }
8676 
8679  {
8680  // Do nothing by default
8681  }
8682 
8683  // ----------------------------------------------------------------------
8684  // Parameter get functions
8685  // ----------------------------------------------------------------------
8686 
8689  {
8690  F32 _local{};
8691  this->m_paramLock.lock();
8692  valid = this->m_param_STATEMENT_TIMEOUT_SECS_valid;
8693  _local = this->m_STATEMENT_TIMEOUT_SECS;
8694  this->m_paramLock.unLock();
8695  return _local;
8696  }
8697 
8700  {
8701  bool _local{};
8702  this->m_paramLock.lock();
8703  valid = this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid;
8704  _local = this->m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL;
8705  this->m_paramLock.unLock();
8706  return _local;
8707  }
8708 
8709  // ----------------------------------------------------------------------
8710  // Time
8711  // ----------------------------------------------------------------------
8712 
8714  getTime() const
8715  {
8716  if (this->m_timeCaller_OutputPort[0].isConnected()) {
8717  Fw::Time _time;
8718  this->m_timeCaller_OutputPort[0].invoke(_time);
8719  return _time;
8720  }
8721  else {
8722  return Fw::Time(TimeBase::TB_NONE, 0, 0);
8723  }
8724  }
8725 
8726  // ----------------------------------------------------------------------
8727  // Message dispatch functions
8728  // ----------------------------------------------------------------------
8729 
8730  Fw::QueuedComponentBase::MsgDispatchStatus FpySequencerComponentBase ::
8731  doDispatch()
8732  {
8733  ComponentIpcSerializableBuffer _msg;
8734  FwQueuePriorityType _priority = 0;
8735 
8736  Os::Queue::Status _msgStatus = this->m_queue.receive(
8737  _msg,
8739  _priority
8740  );
8741  FW_ASSERT(
8742  _msgStatus == Os::Queue::OP_OK,
8743  static_cast<FwAssertArgType>(_msgStatus)
8744  );
8745 
8746  // Reset to beginning of buffer
8747  _msg.resetDeser();
8748 
8749  FwEnumStoreType _desMsg = 0;
8750  Fw::SerializeStatus _deserStatus = _msg.deserializeTo(_desMsg);
8751  FW_ASSERT(
8752  _deserStatus == Fw::FW_SERIALIZE_OK,
8753  static_cast<FwAssertArgType>(_deserStatus)
8754  );
8755 
8756  MsgTypeEnum _msgType = static_cast<MsgTypeEnum>(_desMsg);
8757 
8758  if (_msgType == FPYSEQUENCER_COMPONENT_EXIT) {
8759  return MSG_DISPATCH_EXIT;
8760  }
8761 
8762  FwIndexType portNum = 0;
8763  _deserStatus = _msg.deserializeTo(portNum);
8764  FW_ASSERT(
8765  _deserStatus == Fw::FW_SERIALIZE_OK,
8766  static_cast<FwAssertArgType>(_deserStatus)
8767  );
8768 
8769  switch (_msgType) {
8770  // Handle async input port checkTimers
8771  case CHECKTIMERS_SCHED: {
8772  // Deserialize argument context
8773  U32 context;
8774  _deserStatus = _msg.deserializeTo(context);
8775  FW_ASSERT(
8776  _deserStatus == Fw::FW_SERIALIZE_OK,
8777  static_cast<FwAssertArgType>(_deserStatus)
8778  );
8779  // Call handler function
8780  this->checkTimers_handler(
8781  portNum,
8782  context
8783  );
8784 
8785  break;
8786  }
8787 
8788  // Handle async input port cmdResponseIn
8789  case CMDRESPONSEIN_CMDRESPONSE: {
8790  // Deserialize argument opCode
8791  FwOpcodeType opCode;
8792  _deserStatus = _msg.deserializeTo(opCode);
8793  FW_ASSERT(
8794  _deserStatus == Fw::FW_SERIALIZE_OK,
8795  static_cast<FwAssertArgType>(_deserStatus)
8796  );
8797 
8798  // Deserialize argument cmdSeq
8799  U32 cmdSeq;
8800  _deserStatus = _msg.deserializeTo(cmdSeq);
8801  FW_ASSERT(
8802  _deserStatus == Fw::FW_SERIALIZE_OK,
8803  static_cast<FwAssertArgType>(_deserStatus)
8804  );
8805 
8806  // Deserialize argument response
8807  Fw::CmdResponse response;
8808  _deserStatus = _msg.deserializeTo(response);
8809  FW_ASSERT(
8810  _deserStatus == Fw::FW_SERIALIZE_OK,
8811  static_cast<FwAssertArgType>(_deserStatus)
8812  );
8813  // Call handler function
8814  this->cmdResponseIn_handler(
8815  portNum,
8816  opCode,
8817  cmdSeq,
8818  response
8819  );
8820 
8821  break;
8822  }
8823 
8824  // Handle async input port pingIn
8825  case PINGIN_PING: {
8826  // Deserialize argument key
8827  U32 key;
8828  _deserStatus = _msg.deserializeTo(key);
8829  FW_ASSERT(
8830  _deserStatus == Fw::FW_SERIALIZE_OK,
8831  static_cast<FwAssertArgType>(_deserStatus)
8832  );
8833  // Call handler function
8834  this->pingIn_handler(
8835  portNum,
8836  key
8837  );
8838 
8839  break;
8840  }
8841 
8842  // Handle async input port seqRunIn
8843  case SEQRUNIN_CMDSEQIN: {
8844  // Deserialize argument filename
8845  char __fprime_ac_filename_buffer[Fw::StringBase::BUFFER_SIZE(240)];
8846  Fw::ExternalString filename(__fprime_ac_filename_buffer, sizeof __fprime_ac_filename_buffer);
8847  _deserStatus = _msg.deserializeTo(filename);
8848  FW_ASSERT(
8849  _deserStatus == Fw::FW_SERIALIZE_OK,
8850  static_cast<FwAssertArgType>(_deserStatus)
8851  );
8852  // Call handler function
8853  this->seqRunIn_handler(
8854  portNum,
8855  filename
8856  );
8857 
8858  break;
8859  }
8860 
8861  // Handle async input port tlmWrite
8862  case TLMWRITE_SCHED: {
8863  // Deserialize argument context
8864  U32 context;
8865  _deserStatus = _msg.deserializeTo(context);
8866  FW_ASSERT(
8867  _deserStatus == Fw::FW_SERIALIZE_OK,
8868  static_cast<FwAssertArgType>(_deserStatus)
8869  );
8870  // Call handler function
8871  this->tlmWrite_handler(
8872  portNum,
8873  context
8874  );
8875 
8876  break;
8877  }
8878 
8879  // Handle command RUN
8880  case CMD_RUN: {
8881  // Deserialize opcode
8882  FwOpcodeType _opCode = 0;
8883  _deserStatus = _msg.deserializeTo(_opCode);
8884  FW_ASSERT (
8885  _deserStatus == Fw::FW_SERIALIZE_OK,
8886  static_cast<FwAssertArgType>(_deserStatus)
8887  );
8888 
8889  // Deserialize command sequence
8890  U32 _cmdSeq = 0;
8891  _deserStatus = _msg.deserializeTo(_cmdSeq);
8892  FW_ASSERT (
8893  _deserStatus == Fw::FW_SERIALIZE_OK,
8894  static_cast<FwAssertArgType>(_deserStatus)
8895  );
8896 
8897  // Deserialize command argument buffer
8898  Fw::CmdArgBuffer args;
8899  _deserStatus = _msg.deserializeTo(args);
8900  FW_ASSERT (
8901  _deserStatus == Fw::FW_SERIALIZE_OK,
8902  static_cast<FwAssertArgType>(_deserStatus)
8903  );
8904 
8905  // Reset buffer
8906  args.resetDeser();
8907 
8908  // Deserialize argument fileName
8909  Fw::CmdStringArg fileName;
8910  _deserStatus = args.deserializeTo(fileName);
8911  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
8912  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
8913  this->cmdResponse_out(
8914  _opCode,
8915  _cmdSeq,
8917  );
8918  }
8919  // Don't crash the task if bad arguments were passed from the ground
8920  break;
8921  }
8922 
8923  // Deserialize argument block
8925  _deserStatus = args.deserializeTo(block);
8926  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
8927  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
8928  this->cmdResponse_out(
8929  _opCode,
8930  _cmdSeq,
8932  );
8933  }
8934  // Don't crash the task if bad arguments were passed from the ground
8935  break;
8936  }
8937 
8938  // Make sure there was no data left over.
8939  // That means the argument buffer size was incorrect.
8940 #if FW_CMD_CHECK_RESIDUAL
8941  if (args.getDeserializeSizeLeft() != 0) {
8942  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
8943  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
8944  }
8945  // Don't crash the task if bad arguments were passed from the ground
8946  break;
8947  }
8948 #endif
8949 
8950  // Call handler function
8951  this->RUN_cmdHandler(
8952  _opCode, _cmdSeq,
8953  fileName,
8954  block
8955  );
8956 
8957  break;
8958  }
8959 
8960  // Handle command VALIDATE
8961  case CMD_VALIDATE: {
8962  // Deserialize opcode
8963  FwOpcodeType _opCode = 0;
8964  _deserStatus = _msg.deserializeTo(_opCode);
8965  FW_ASSERT (
8966  _deserStatus == Fw::FW_SERIALIZE_OK,
8967  static_cast<FwAssertArgType>(_deserStatus)
8968  );
8969 
8970  // Deserialize command sequence
8971  U32 _cmdSeq = 0;
8972  _deserStatus = _msg.deserializeTo(_cmdSeq);
8973  FW_ASSERT (
8974  _deserStatus == Fw::FW_SERIALIZE_OK,
8975  static_cast<FwAssertArgType>(_deserStatus)
8976  );
8977 
8978  // Deserialize command argument buffer
8979  Fw::CmdArgBuffer args;
8980  _deserStatus = _msg.deserializeTo(args);
8981  FW_ASSERT (
8982  _deserStatus == Fw::FW_SERIALIZE_OK,
8983  static_cast<FwAssertArgType>(_deserStatus)
8984  );
8985 
8986  // Reset buffer
8987  args.resetDeser();
8988 
8989  // Deserialize argument fileName
8990  Fw::CmdStringArg fileName;
8991  _deserStatus = args.deserializeTo(fileName);
8992  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
8993  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
8994  this->cmdResponse_out(
8995  _opCode,
8996  _cmdSeq,
8998  );
8999  }
9000  // Don't crash the task if bad arguments were passed from the ground
9001  break;
9002  }
9003 
9004  // Make sure there was no data left over.
9005  // That means the argument buffer size was incorrect.
9006 #if FW_CMD_CHECK_RESIDUAL
9007  if (args.getDeserializeSizeLeft() != 0) {
9008  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9009  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9010  }
9011  // Don't crash the task if bad arguments were passed from the ground
9012  break;
9013  }
9014 #endif
9015 
9016  // Call handler function
9017  this->VALIDATE_cmdHandler(
9018  _opCode, _cmdSeq,
9019  fileName
9020  );
9021 
9022  break;
9023  }
9024 
9025  // Handle command RUN_VALIDATED
9026  case CMD_RUN_VALIDATED: {
9027  // Deserialize opcode
9028  FwOpcodeType _opCode = 0;
9029  _deserStatus = _msg.deserializeTo(_opCode);
9030  FW_ASSERT (
9031  _deserStatus == Fw::FW_SERIALIZE_OK,
9032  static_cast<FwAssertArgType>(_deserStatus)
9033  );
9034 
9035  // Deserialize command sequence
9036  U32 _cmdSeq = 0;
9037  _deserStatus = _msg.deserializeTo(_cmdSeq);
9038  FW_ASSERT (
9039  _deserStatus == Fw::FW_SERIALIZE_OK,
9040  static_cast<FwAssertArgType>(_deserStatus)
9041  );
9042 
9043  // Deserialize command argument buffer
9044  Fw::CmdArgBuffer args;
9045  _deserStatus = _msg.deserializeTo(args);
9046  FW_ASSERT (
9047  _deserStatus == Fw::FW_SERIALIZE_OK,
9048  static_cast<FwAssertArgType>(_deserStatus)
9049  );
9050 
9051  // Reset buffer
9052  args.resetDeser();
9053 
9054  // Deserialize argument block
9056  _deserStatus = args.deserializeTo(block);
9057  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9058  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9059  this->cmdResponse_out(
9060  _opCode,
9061  _cmdSeq,
9063  );
9064  }
9065  // Don't crash the task if bad arguments were passed from the ground
9066  break;
9067  }
9068 
9069  // Make sure there was no data left over.
9070  // That means the argument buffer size was incorrect.
9071 #if FW_CMD_CHECK_RESIDUAL
9072  if (args.getDeserializeSizeLeft() != 0) {
9073  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9074  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9075  }
9076  // Don't crash the task if bad arguments were passed from the ground
9077  break;
9078  }
9079 #endif
9080 
9081  // Call handler function
9083  _opCode, _cmdSeq,
9084  block
9085  );
9086 
9087  break;
9088  }
9089 
9090  // Handle command CANCEL
9091  case CMD_CANCEL: {
9092  // Deserialize opcode
9093  FwOpcodeType _opCode = 0;
9094  _deserStatus = _msg.deserializeTo(_opCode);
9095  FW_ASSERT (
9096  _deserStatus == Fw::FW_SERIALIZE_OK,
9097  static_cast<FwAssertArgType>(_deserStatus)
9098  );
9099 
9100  // Deserialize command sequence
9101  U32 _cmdSeq = 0;
9102  _deserStatus = _msg.deserializeTo(_cmdSeq);
9103  FW_ASSERT (
9104  _deserStatus == Fw::FW_SERIALIZE_OK,
9105  static_cast<FwAssertArgType>(_deserStatus)
9106  );
9107 
9108  // Deserialize command argument buffer
9109  Fw::CmdArgBuffer args;
9110  _deserStatus = _msg.deserializeTo(args);
9111  FW_ASSERT (
9112  _deserStatus == Fw::FW_SERIALIZE_OK,
9113  static_cast<FwAssertArgType>(_deserStatus)
9114  );
9115 
9116  // Reset buffer
9117  args.resetDeser();
9118 
9119  // Make sure there was no data left over.
9120  // That means the argument buffer size was incorrect.
9121 #if FW_CMD_CHECK_RESIDUAL
9122  if (args.getDeserializeSizeLeft() != 0) {
9123  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9124  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9125  }
9126  // Don't crash the task if bad arguments were passed from the ground
9127  break;
9128  }
9129 #endif
9130 
9131  // Call handler function
9132  this->CANCEL_cmdHandler(_opCode, _cmdSeq);
9133 
9134  break;
9135  }
9136 
9137  // Handle command SET_BREAKPOINT
9138  case CMD_SET_BREAKPOINT: {
9139  // Deserialize opcode
9140  FwOpcodeType _opCode = 0;
9141  _deserStatus = _msg.deserializeTo(_opCode);
9142  FW_ASSERT (
9143  _deserStatus == Fw::FW_SERIALIZE_OK,
9144  static_cast<FwAssertArgType>(_deserStatus)
9145  );
9146 
9147  // Deserialize command sequence
9148  U32 _cmdSeq = 0;
9149  _deserStatus = _msg.deserializeTo(_cmdSeq);
9150  FW_ASSERT (
9151  _deserStatus == Fw::FW_SERIALIZE_OK,
9152  static_cast<FwAssertArgType>(_deserStatus)
9153  );
9154 
9155  // Deserialize command argument buffer
9156  Fw::CmdArgBuffer args;
9157  _deserStatus = _msg.deserializeTo(args);
9158  FW_ASSERT (
9159  _deserStatus == Fw::FW_SERIALIZE_OK,
9160  static_cast<FwAssertArgType>(_deserStatus)
9161  );
9162 
9163  // Reset buffer
9164  args.resetDeser();
9165 
9166  // Deserialize argument stmtIdx
9167  U32 stmtIdx;
9168  _deserStatus = args.deserializeTo(stmtIdx);
9169  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9170  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9171  this->cmdResponse_out(
9172  _opCode,
9173  _cmdSeq,
9175  );
9176  }
9177  // Don't crash the task if bad arguments were passed from the ground
9178  break;
9179  }
9180 
9181  // Deserialize argument breakOnce
9182  bool breakOnce;
9183  _deserStatus = args.deserializeTo(breakOnce);
9184  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9185  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9186  this->cmdResponse_out(
9187  _opCode,
9188  _cmdSeq,
9190  );
9191  }
9192  // Don't crash the task if bad arguments were passed from the ground
9193  break;
9194  }
9195 
9196  // Make sure there was no data left over.
9197  // That means the argument buffer size was incorrect.
9198 #if FW_CMD_CHECK_RESIDUAL
9199  if (args.getDeserializeSizeLeft() != 0) {
9200  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9201  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9202  }
9203  // Don't crash the task if bad arguments were passed from the ground
9204  break;
9205  }
9206 #endif
9207 
9208  // Call handler function
9210  _opCode, _cmdSeq,
9211  stmtIdx,
9212  breakOnce
9213  );
9214 
9215  break;
9216  }
9217 
9218  // Handle command BREAK
9219  case CMD_BREAK: {
9220  // Deserialize opcode
9221  FwOpcodeType _opCode = 0;
9222  _deserStatus = _msg.deserializeTo(_opCode);
9223  FW_ASSERT (
9224  _deserStatus == Fw::FW_SERIALIZE_OK,
9225  static_cast<FwAssertArgType>(_deserStatus)
9226  );
9227 
9228  // Deserialize command sequence
9229  U32 _cmdSeq = 0;
9230  _deserStatus = _msg.deserializeTo(_cmdSeq);
9231  FW_ASSERT (
9232  _deserStatus == Fw::FW_SERIALIZE_OK,
9233  static_cast<FwAssertArgType>(_deserStatus)
9234  );
9235 
9236  // Deserialize command argument buffer
9237  Fw::CmdArgBuffer args;
9238  _deserStatus = _msg.deserializeTo(args);
9239  FW_ASSERT (
9240  _deserStatus == Fw::FW_SERIALIZE_OK,
9241  static_cast<FwAssertArgType>(_deserStatus)
9242  );
9243 
9244  // Reset buffer
9245  args.resetDeser();
9246 
9247  // Make sure there was no data left over.
9248  // That means the argument buffer size was incorrect.
9249 #if FW_CMD_CHECK_RESIDUAL
9250  if (args.getDeserializeSizeLeft() != 0) {
9251  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9252  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9253  }
9254  // Don't crash the task if bad arguments were passed from the ground
9255  break;
9256  }
9257 #endif
9258 
9259  // Call handler function
9260  this->BREAK_cmdHandler(_opCode, _cmdSeq);
9261 
9262  break;
9263  }
9264 
9265  // Handle command CONTINUE
9266  case CMD_CONTINUE: {
9267  // Deserialize opcode
9268  FwOpcodeType _opCode = 0;
9269  _deserStatus = _msg.deserializeTo(_opCode);
9270  FW_ASSERT (
9271  _deserStatus == Fw::FW_SERIALIZE_OK,
9272  static_cast<FwAssertArgType>(_deserStatus)
9273  );
9274 
9275  // Deserialize command sequence
9276  U32 _cmdSeq = 0;
9277  _deserStatus = _msg.deserializeTo(_cmdSeq);
9278  FW_ASSERT (
9279  _deserStatus == Fw::FW_SERIALIZE_OK,
9280  static_cast<FwAssertArgType>(_deserStatus)
9281  );
9282 
9283  // Deserialize command argument buffer
9284  Fw::CmdArgBuffer args;
9285  _deserStatus = _msg.deserializeTo(args);
9286  FW_ASSERT (
9287  _deserStatus == Fw::FW_SERIALIZE_OK,
9288  static_cast<FwAssertArgType>(_deserStatus)
9289  );
9290 
9291  // Reset buffer
9292  args.resetDeser();
9293 
9294  // Make sure there was no data left over.
9295  // That means the argument buffer size was incorrect.
9296 #if FW_CMD_CHECK_RESIDUAL
9297  if (args.getDeserializeSizeLeft() != 0) {
9298  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9299  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9300  }
9301  // Don't crash the task if bad arguments were passed from the ground
9302  break;
9303  }
9304 #endif
9305 
9306  // Call handler function
9307  this->CONTINUE_cmdHandler(_opCode, _cmdSeq);
9308 
9309  break;
9310  }
9311 
9312  // Handle command CLEAR_BREAKPOINT
9313  case CMD_CLEAR_BREAKPOINT: {
9314  // Deserialize opcode
9315  FwOpcodeType _opCode = 0;
9316  _deserStatus = _msg.deserializeTo(_opCode);
9317  FW_ASSERT (
9318  _deserStatus == Fw::FW_SERIALIZE_OK,
9319  static_cast<FwAssertArgType>(_deserStatus)
9320  );
9321 
9322  // Deserialize command sequence
9323  U32 _cmdSeq = 0;
9324  _deserStatus = _msg.deserializeTo(_cmdSeq);
9325  FW_ASSERT (
9326  _deserStatus == Fw::FW_SERIALIZE_OK,
9327  static_cast<FwAssertArgType>(_deserStatus)
9328  );
9329 
9330  // Deserialize command argument buffer
9331  Fw::CmdArgBuffer args;
9332  _deserStatus = _msg.deserializeTo(args);
9333  FW_ASSERT (
9334  _deserStatus == Fw::FW_SERIALIZE_OK,
9335  static_cast<FwAssertArgType>(_deserStatus)
9336  );
9337 
9338  // Reset buffer
9339  args.resetDeser();
9340 
9341  // Make sure there was no data left over.
9342  // That means the argument buffer size was incorrect.
9343 #if FW_CMD_CHECK_RESIDUAL
9344  if (args.getDeserializeSizeLeft() != 0) {
9345  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9346  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9347  }
9348  // Don't crash the task if bad arguments were passed from the ground
9349  break;
9350  }
9351 #endif
9352 
9353  // Call handler function
9354  this->CLEAR_BREAKPOINT_cmdHandler(_opCode, _cmdSeq);
9355 
9356  break;
9357  }
9358 
9359  // Handle command STEP
9360  case CMD_STEP: {
9361  // Deserialize opcode
9362  FwOpcodeType _opCode = 0;
9363  _deserStatus = _msg.deserializeTo(_opCode);
9364  FW_ASSERT (
9365  _deserStatus == Fw::FW_SERIALIZE_OK,
9366  static_cast<FwAssertArgType>(_deserStatus)
9367  );
9368 
9369  // Deserialize command sequence
9370  U32 _cmdSeq = 0;
9371  _deserStatus = _msg.deserializeTo(_cmdSeq);
9372  FW_ASSERT (
9373  _deserStatus == Fw::FW_SERIALIZE_OK,
9374  static_cast<FwAssertArgType>(_deserStatus)
9375  );
9376 
9377  // Deserialize command argument buffer
9378  Fw::CmdArgBuffer args;
9379  _deserStatus = _msg.deserializeTo(args);
9380  FW_ASSERT (
9381  _deserStatus == Fw::FW_SERIALIZE_OK,
9382  static_cast<FwAssertArgType>(_deserStatus)
9383  );
9384 
9385  // Reset buffer
9386  args.resetDeser();
9387 
9388  // Make sure there was no data left over.
9389  // That means the argument buffer size was incorrect.
9390 #if FW_CMD_CHECK_RESIDUAL
9391  if (args.getDeserializeSizeLeft() != 0) {
9392  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9393  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9394  }
9395  // Don't crash the task if bad arguments were passed from the ground
9396  break;
9397  }
9398 #endif
9399 
9400  // Call handler function
9401  this->STEP_cmdHandler(_opCode, _cmdSeq);
9402 
9403  break;
9404  }
9405 
9406  // Handle command SET_FLAG
9407  case CMD_SET_FLAG: {
9408  // Deserialize opcode
9409  FwOpcodeType _opCode = 0;
9410  _deserStatus = _msg.deserializeTo(_opCode);
9411  FW_ASSERT (
9412  _deserStatus == Fw::FW_SERIALIZE_OK,
9413  static_cast<FwAssertArgType>(_deserStatus)
9414  );
9415 
9416  // Deserialize command sequence
9417  U32 _cmdSeq = 0;
9418  _deserStatus = _msg.deserializeTo(_cmdSeq);
9419  FW_ASSERT (
9420  _deserStatus == Fw::FW_SERIALIZE_OK,
9421  static_cast<FwAssertArgType>(_deserStatus)
9422  );
9423 
9424  // Deserialize command argument buffer
9425  Fw::CmdArgBuffer args;
9426  _deserStatus = _msg.deserializeTo(args);
9427  FW_ASSERT (
9428  _deserStatus == Fw::FW_SERIALIZE_OK,
9429  static_cast<FwAssertArgType>(_deserStatus)
9430  );
9431 
9432  // Reset buffer
9433  args.resetDeser();
9434 
9435  // Deserialize argument flag
9436  Svc::Fpy::FlagId flag;
9437  _deserStatus = args.deserializeTo(flag);
9438  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9439  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9440  this->cmdResponse_out(
9441  _opCode,
9442  _cmdSeq,
9444  );
9445  }
9446  // Don't crash the task if bad arguments were passed from the ground
9447  break;
9448  }
9449 
9450  // Deserialize argument value
9451  bool value;
9452  _deserStatus = args.deserializeTo(value);
9453  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9454  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9455  this->cmdResponse_out(
9456  _opCode,
9457  _cmdSeq,
9459  );
9460  }
9461  // Don't crash the task if bad arguments were passed from the ground
9462  break;
9463  }
9464 
9465  // Make sure there was no data left over.
9466  // That means the argument buffer size was incorrect.
9467 #if FW_CMD_CHECK_RESIDUAL
9468  if (args.getDeserializeSizeLeft() != 0) {
9469  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9470  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9471  }
9472  // Don't crash the task if bad arguments were passed from the ground
9473  break;
9474  }
9475 #endif
9476 
9477  // Call handler function
9478  this->SET_FLAG_cmdHandler(
9479  _opCode, _cmdSeq,
9480  flag,
9481  value
9482  );
9483 
9484  break;
9485  }
9486 
9487  // Handle command DUMP_STACK_TO_FILE
9488  case CMD_DUMP_STACK_TO_FILE: {
9489  // Deserialize opcode
9490  FwOpcodeType _opCode = 0;
9491  _deserStatus = _msg.deserializeTo(_opCode);
9492  FW_ASSERT (
9493  _deserStatus == Fw::FW_SERIALIZE_OK,
9494  static_cast<FwAssertArgType>(_deserStatus)
9495  );
9496 
9497  // Deserialize command sequence
9498  U32 _cmdSeq = 0;
9499  _deserStatus = _msg.deserializeTo(_cmdSeq);
9500  FW_ASSERT (
9501  _deserStatus == Fw::FW_SERIALIZE_OK,
9502  static_cast<FwAssertArgType>(_deserStatus)
9503  );
9504 
9505  // Deserialize command argument buffer
9506  Fw::CmdArgBuffer args;
9507  _deserStatus = _msg.deserializeTo(args);
9508  FW_ASSERT (
9509  _deserStatus == Fw::FW_SERIALIZE_OK,
9510  static_cast<FwAssertArgType>(_deserStatus)
9511  );
9512 
9513  // Reset buffer
9514  args.resetDeser();
9515 
9516  // Deserialize argument fileName
9517  Fw::CmdStringArg fileName;
9518  _deserStatus = args.deserializeTo(fileName);
9519  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9520  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9521  this->cmdResponse_out(
9522  _opCode,
9523  _cmdSeq,
9525  );
9526  }
9527  // Don't crash the task if bad arguments were passed from the ground
9528  break;
9529  }
9530 
9531  // Make sure there was no data left over.
9532  // That means the argument buffer size was incorrect.
9533 #if FW_CMD_CHECK_RESIDUAL
9534  if (args.getDeserializeSizeLeft() != 0) {
9535  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9536  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9537  }
9538  // Don't crash the task if bad arguments were passed from the ground
9539  break;
9540  }
9541 #endif
9542 
9543  // Call handler function
9545  _opCode, _cmdSeq,
9546  fileName
9547  );
9548 
9549  break;
9550  }
9551 
9552  // Handle internal interface directive_allocate
9553  case INT_IF_DIRECTIVE_ALLOCATE: {
9555  _deserStatus = _msg.deserializeTo(directive);
9556 
9557  // Internal interface should always deserialize
9558  FW_ASSERT(
9559  Fw::FW_SERIALIZE_OK == _deserStatus,
9560  static_cast<FwAssertArgType>(_deserStatus)
9561  );
9562 
9563  // Make sure there was no data left over.
9564  // That means the buffer size was incorrect.
9565  FW_ASSERT(
9566  _msg.getDeserializeSizeLeft() == 0,
9567  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9568  );
9569 
9570  // Call handler function
9572  directive
9573  );
9574 
9575  break;
9576  }
9577 
9578  // Handle internal interface directive_call
9579  case INT_IF_DIRECTIVE_CALL: {
9581  _deserStatus = _msg.deserializeTo(directive);
9582 
9583  // Internal interface should always deserialize
9584  FW_ASSERT(
9585  Fw::FW_SERIALIZE_OK == _deserStatus,
9586  static_cast<FwAssertArgType>(_deserStatus)
9587  );
9588 
9589  // Make sure there was no data left over.
9590  // That means the buffer size was incorrect.
9591  FW_ASSERT(
9592  _msg.getDeserializeSizeLeft() == 0,
9593  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9594  );
9595 
9596  // Call handler function
9598  directive
9599  );
9600 
9601  break;
9602  }
9603 
9604  // Handle internal interface directive_constCmd
9605  case INT_IF_DIRECTIVE_CONSTCMD: {
9607  _deserStatus = _msg.deserializeTo(directive);
9608 
9609  // Internal interface should always deserialize
9610  FW_ASSERT(
9611  Fw::FW_SERIALIZE_OK == _deserStatus,
9612  static_cast<FwAssertArgType>(_deserStatus)
9613  );
9614 
9615  // Make sure there was no data left over.
9616  // That means the buffer size was incorrect.
9617  FW_ASSERT(
9618  _msg.getDeserializeSizeLeft() == 0,
9619  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9620  );
9621 
9622  // Call handler function
9624  directive
9625  );
9626 
9627  break;
9628  }
9629 
9630  // Handle internal interface directive_discard
9631  case INT_IF_DIRECTIVE_DISCARD: {
9633  _deserStatus = _msg.deserializeTo(directive);
9634 
9635  // Internal interface should always deserialize
9636  FW_ASSERT(
9637  Fw::FW_SERIALIZE_OK == _deserStatus,
9638  static_cast<FwAssertArgType>(_deserStatus)
9639  );
9640 
9641  // Make sure there was no data left over.
9642  // That means the buffer size was incorrect.
9643  FW_ASSERT(
9644  _msg.getDeserializeSizeLeft() == 0,
9645  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9646  );
9647 
9648  // Call handler function
9650  directive
9651  );
9652 
9653  break;
9654  }
9655 
9656  // Handle internal interface directive_exit
9657  case INT_IF_DIRECTIVE_EXIT: {
9659  _deserStatus = _msg.deserializeTo(directive);
9660 
9661  // Internal interface should always deserialize
9662  FW_ASSERT(
9663  Fw::FW_SERIALIZE_OK == _deserStatus,
9664  static_cast<FwAssertArgType>(_deserStatus)
9665  );
9666 
9667  // Make sure there was no data left over.
9668  // That means the buffer size was incorrect.
9669  FW_ASSERT(
9670  _msg.getDeserializeSizeLeft() == 0,
9671  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9672  );
9673 
9674  // Call handler function
9676  directive
9677  );
9678 
9679  break;
9680  }
9681 
9682  // Handle internal interface directive_getField
9683  case INT_IF_DIRECTIVE_GETFIELD: {
9685  _deserStatus = _msg.deserializeTo(directive);
9686 
9687  // Internal interface should always deserialize
9688  FW_ASSERT(
9689  Fw::FW_SERIALIZE_OK == _deserStatus,
9690  static_cast<FwAssertArgType>(_deserStatus)
9691  );
9692 
9693  // Make sure there was no data left over.
9694  // That means the buffer size was incorrect.
9695  FW_ASSERT(
9696  _msg.getDeserializeSizeLeft() == 0,
9697  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9698  );
9699 
9700  // Call handler function
9702  directive
9703  );
9704 
9705  break;
9706  }
9707 
9708  // Handle internal interface directive_getFlag
9709  case INT_IF_DIRECTIVE_GETFLAG: {
9711  _deserStatus = _msg.deserializeTo(directive);
9712 
9713  // Internal interface should always deserialize
9714  FW_ASSERT(
9715  Fw::FW_SERIALIZE_OK == _deserStatus,
9716  static_cast<FwAssertArgType>(_deserStatus)
9717  );
9718 
9719  // Make sure there was no data left over.
9720  // That means the buffer size was incorrect.
9721  FW_ASSERT(
9722  _msg.getDeserializeSizeLeft() == 0,
9723  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9724  );
9725 
9726  // Call handler function
9728  directive
9729  );
9730 
9731  break;
9732  }
9733 
9734  // Handle internal interface directive_goto
9735  case INT_IF_DIRECTIVE_GOTO: {
9737  _deserStatus = _msg.deserializeTo(directive);
9738 
9739  // Internal interface should always deserialize
9740  FW_ASSERT(
9741  Fw::FW_SERIALIZE_OK == _deserStatus,
9742  static_cast<FwAssertArgType>(_deserStatus)
9743  );
9744 
9745  // Make sure there was no data left over.
9746  // That means the buffer size was incorrect.
9747  FW_ASSERT(
9748  _msg.getDeserializeSizeLeft() == 0,
9749  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9750  );
9751 
9752  // Call handler function
9754  directive
9755  );
9756 
9757  break;
9758  }
9759 
9760  // Handle internal interface directive_if
9761  case INT_IF_DIRECTIVE_IF: {
9763  _deserStatus = _msg.deserializeTo(directive);
9764 
9765  // Internal interface should always deserialize
9766  FW_ASSERT(
9767  Fw::FW_SERIALIZE_OK == _deserStatus,
9768  static_cast<FwAssertArgType>(_deserStatus)
9769  );
9770 
9771  // Make sure there was no data left over.
9772  // That means the buffer size was incorrect.
9773  FW_ASSERT(
9774  _msg.getDeserializeSizeLeft() == 0,
9775  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9776  );
9777 
9778  // Call handler function
9780  directive
9781  );
9782 
9783  break;
9784  }
9785 
9786  // Handle internal interface directive_loadAbs
9787  case INT_IF_DIRECTIVE_LOADABS: {
9789  _deserStatus = _msg.deserializeTo(directive);
9790 
9791  // Internal interface should always deserialize
9792  FW_ASSERT(
9793  Fw::FW_SERIALIZE_OK == _deserStatus,
9794  static_cast<FwAssertArgType>(_deserStatus)
9795  );
9796 
9797  // Make sure there was no data left over.
9798  // That means the buffer size was incorrect.
9799  FW_ASSERT(
9800  _msg.getDeserializeSizeLeft() == 0,
9801  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9802  );
9803 
9804  // Call handler function
9806  directive
9807  );
9808 
9809  break;
9810  }
9811 
9812  // Handle internal interface directive_loadRel
9813  case INT_IF_DIRECTIVE_LOADREL: {
9815  _deserStatus = _msg.deserializeTo(directive);
9816 
9817  // Internal interface should always deserialize
9818  FW_ASSERT(
9819  Fw::FW_SERIALIZE_OK == _deserStatus,
9820  static_cast<FwAssertArgType>(_deserStatus)
9821  );
9822 
9823  // Make sure there was no data left over.
9824  // That means the buffer size was incorrect.
9825  FW_ASSERT(
9826  _msg.getDeserializeSizeLeft() == 0,
9827  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9828  );
9829 
9830  // Call handler function
9832  directive
9833  );
9834 
9835  break;
9836  }
9837 
9838  // Handle internal interface directive_memCmp
9839  case INT_IF_DIRECTIVE_MEMCMP: {
9841  _deserStatus = _msg.deserializeTo(directive);
9842 
9843  // Internal interface should always deserialize
9844  FW_ASSERT(
9845  Fw::FW_SERIALIZE_OK == _deserStatus,
9846  static_cast<FwAssertArgType>(_deserStatus)
9847  );
9848 
9849  // Make sure there was no data left over.
9850  // That means the buffer size was incorrect.
9851  FW_ASSERT(
9852  _msg.getDeserializeSizeLeft() == 0,
9853  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9854  );
9855 
9856  // Call handler function
9858  directive
9859  );
9860 
9861  break;
9862  }
9863 
9864  // Handle internal interface directive_noOp
9865  case INT_IF_DIRECTIVE_NOOP: {
9867  _deserStatus = _msg.deserializeTo(directive);
9868 
9869  // Internal interface should always deserialize
9870  FW_ASSERT(
9871  Fw::FW_SERIALIZE_OK == _deserStatus,
9872  static_cast<FwAssertArgType>(_deserStatus)
9873  );
9874 
9875  // Make sure there was no data left over.
9876  // That means the buffer size was incorrect.
9877  FW_ASSERT(
9878  _msg.getDeserializeSizeLeft() == 0,
9879  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9880  );
9881 
9882  // Call handler function
9884  directive
9885  );
9886 
9887  break;
9888  }
9889 
9890  // Handle internal interface directive_peek
9891  case INT_IF_DIRECTIVE_PEEK: {
9893  _deserStatus = _msg.deserializeTo(directive);
9894 
9895  // Internal interface should always deserialize
9896  FW_ASSERT(
9897  Fw::FW_SERIALIZE_OK == _deserStatus,
9898  static_cast<FwAssertArgType>(_deserStatus)
9899  );
9900 
9901  // Make sure there was no data left over.
9902  // That means the buffer size was incorrect.
9903  FW_ASSERT(
9904  _msg.getDeserializeSizeLeft() == 0,
9905  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9906  );
9907 
9908  // Call handler function
9910  directive
9911  );
9912 
9913  break;
9914  }
9915 
9916  // Handle internal interface directive_pushPrm
9917  case INT_IF_DIRECTIVE_PUSHPRM: {
9919  _deserStatus = _msg.deserializeTo(directive);
9920 
9921  // Internal interface should always deserialize
9922  FW_ASSERT(
9923  Fw::FW_SERIALIZE_OK == _deserStatus,
9924  static_cast<FwAssertArgType>(_deserStatus)
9925  );
9926 
9927  // Make sure there was no data left over.
9928  // That means the buffer size was incorrect.
9929  FW_ASSERT(
9930  _msg.getDeserializeSizeLeft() == 0,
9931  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9932  );
9933 
9934  // Call handler function
9936  directive
9937  );
9938 
9939  break;
9940  }
9941 
9942  // Handle internal interface directive_pushTime
9943  case INT_IF_DIRECTIVE_PUSHTIME: {
9945  _deserStatus = _msg.deserializeTo(directive);
9946 
9947  // Internal interface should always deserialize
9948  FW_ASSERT(
9949  Fw::FW_SERIALIZE_OK == _deserStatus,
9950  static_cast<FwAssertArgType>(_deserStatus)
9951  );
9952 
9953  // Make sure there was no data left over.
9954  // That means the buffer size was incorrect.
9955  FW_ASSERT(
9956  _msg.getDeserializeSizeLeft() == 0,
9957  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9958  );
9959 
9960  // Call handler function
9962  directive
9963  );
9964 
9965  break;
9966  }
9967 
9968  // Handle internal interface directive_pushTlmVal
9969  case INT_IF_DIRECTIVE_PUSHTLMVAL: {
9971  _deserStatus = _msg.deserializeTo(directive);
9972 
9973  // Internal interface should always deserialize
9974  FW_ASSERT(
9975  Fw::FW_SERIALIZE_OK == _deserStatus,
9976  static_cast<FwAssertArgType>(_deserStatus)
9977  );
9978 
9979  // Make sure there was no data left over.
9980  // That means the buffer size was incorrect.
9981  FW_ASSERT(
9982  _msg.getDeserializeSizeLeft() == 0,
9983  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9984  );
9985 
9986  // Call handler function
9988  directive
9989  );
9990 
9991  break;
9992  }
9993 
9994  // Handle internal interface directive_pushTlmValAndTime
9995  case INT_IF_DIRECTIVE_PUSHTLMVALANDTIME: {
9997  _deserStatus = _msg.deserializeTo(directive);
9998 
9999  // Internal interface should always deserialize
10000  FW_ASSERT(
10001  Fw::FW_SERIALIZE_OK == _deserStatus,
10002  static_cast<FwAssertArgType>(_deserStatus)
10003  );
10004 
10005  // Make sure there was no data left over.
10006  // That means the buffer size was incorrect.
10007  FW_ASSERT(
10008  _msg.getDeserializeSizeLeft() == 0,
10009  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10010  );
10011 
10012  // Call handler function
10014  directive
10015  );
10016 
10017  break;
10018  }
10019 
10020  // Handle internal interface directive_pushVal
10021  case INT_IF_DIRECTIVE_PUSHVAL: {
10023  _deserStatus = _msg.deserializeTo(directive);
10024 
10025  // Internal interface should always deserialize
10026  FW_ASSERT(
10027  Fw::FW_SERIALIZE_OK == _deserStatus,
10028  static_cast<FwAssertArgType>(_deserStatus)
10029  );
10030 
10031  // Make sure there was no data left over.
10032  // That means the buffer size was incorrect.
10033  FW_ASSERT(
10034  _msg.getDeserializeSizeLeft() == 0,
10035  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10036  );
10037 
10038  // Call handler function
10040  directive
10041  );
10042 
10043  break;
10044  }
10045 
10046  // Handle internal interface directive_return
10047  case INT_IF_DIRECTIVE_RETURN: {
10049  _deserStatus = _msg.deserializeTo(directive);
10050 
10051  // Internal interface should always deserialize
10052  FW_ASSERT(
10053  Fw::FW_SERIALIZE_OK == _deserStatus,
10054  static_cast<FwAssertArgType>(_deserStatus)
10055  );
10056 
10057  // Make sure there was no data left over.
10058  // That means the buffer size was incorrect.
10059  FW_ASSERT(
10060  _msg.getDeserializeSizeLeft() == 0,
10061  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10062  );
10063 
10064  // Call handler function
10066  directive
10067  );
10068 
10069  break;
10070  }
10071 
10072  // Handle internal interface directive_setFlag
10073  case INT_IF_DIRECTIVE_SETFLAG: {
10075  _deserStatus = _msg.deserializeTo(directive);
10076 
10077  // Internal interface should always deserialize
10078  FW_ASSERT(
10079  Fw::FW_SERIALIZE_OK == _deserStatus,
10080  static_cast<FwAssertArgType>(_deserStatus)
10081  );
10082 
10083  // Make sure there was no data left over.
10084  // That means the buffer size was incorrect.
10085  FW_ASSERT(
10086  _msg.getDeserializeSizeLeft() == 0,
10087  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10088  );
10089 
10090  // Call handler function
10092  directive
10093  );
10094 
10095  break;
10096  }
10097 
10098  // Handle internal interface directive_stackCmd
10099  case INT_IF_DIRECTIVE_STACKCMD: {
10101  _deserStatus = _msg.deserializeTo(directive);
10102 
10103  // Internal interface should always deserialize
10104  FW_ASSERT(
10105  Fw::FW_SERIALIZE_OK == _deserStatus,
10106  static_cast<FwAssertArgType>(_deserStatus)
10107  );
10108 
10109  // Make sure there was no data left over.
10110  // That means the buffer size was incorrect.
10111  FW_ASSERT(
10112  _msg.getDeserializeSizeLeft() == 0,
10113  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10114  );
10115 
10116  // Call handler function
10118  directive
10119  );
10120 
10121  break;
10122  }
10123 
10124  // Handle internal interface directive_stackOp
10125  case INT_IF_DIRECTIVE_STACKOP: {
10127  _deserStatus = _msg.deserializeTo(directive);
10128 
10129  // Internal interface should always deserialize
10130  FW_ASSERT(
10131  Fw::FW_SERIALIZE_OK == _deserStatus,
10132  static_cast<FwAssertArgType>(_deserStatus)
10133  );
10134 
10135  // Make sure there was no data left over.
10136  // That means the buffer size was incorrect.
10137  FW_ASSERT(
10138  _msg.getDeserializeSizeLeft() == 0,
10139  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10140  );
10141 
10142  // Call handler function
10144  directive
10145  );
10146 
10147  break;
10148  }
10149 
10150  // Handle internal interface directive_storeAbs
10151  case INT_IF_DIRECTIVE_STOREABS: {
10153  _deserStatus = _msg.deserializeTo(directive);
10154 
10155  // Internal interface should always deserialize
10156  FW_ASSERT(
10157  Fw::FW_SERIALIZE_OK == _deserStatus,
10158  static_cast<FwAssertArgType>(_deserStatus)
10159  );
10160 
10161  // Make sure there was no data left over.
10162  // That means the buffer size was incorrect.
10163  FW_ASSERT(
10164  _msg.getDeserializeSizeLeft() == 0,
10165  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10166  );
10167 
10168  // Call handler function
10170  directive
10171  );
10172 
10173  break;
10174  }
10175 
10176  // Handle internal interface directive_storeAbsConstOffset
10177  case INT_IF_DIRECTIVE_STOREABSCONSTOFFSET: {
10179  _deserStatus = _msg.deserializeTo(directive);
10180 
10181  // Internal interface should always deserialize
10182  FW_ASSERT(
10183  Fw::FW_SERIALIZE_OK == _deserStatus,
10184  static_cast<FwAssertArgType>(_deserStatus)
10185  );
10186 
10187  // Make sure there was no data left over.
10188  // That means the buffer size was incorrect.
10189  FW_ASSERT(
10190  _msg.getDeserializeSizeLeft() == 0,
10191  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10192  );
10193 
10194  // Call handler function
10196  directive
10197  );
10198 
10199  break;
10200  }
10201 
10202  // Handle internal interface directive_storeRel
10203  case INT_IF_DIRECTIVE_STOREREL: {
10205  _deserStatus = _msg.deserializeTo(directive);
10206 
10207  // Internal interface should always deserialize
10208  FW_ASSERT(
10209  Fw::FW_SERIALIZE_OK == _deserStatus,
10210  static_cast<FwAssertArgType>(_deserStatus)
10211  );
10212 
10213  // Make sure there was no data left over.
10214  // That means the buffer size was incorrect.
10215  FW_ASSERT(
10216  _msg.getDeserializeSizeLeft() == 0,
10217  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10218  );
10219 
10220  // Call handler function
10222  directive
10223  );
10224 
10225  break;
10226  }
10227 
10228  // Handle internal interface directive_storeRelConstOffset
10229  case INT_IF_DIRECTIVE_STORERELCONSTOFFSET: {
10231  _deserStatus = _msg.deserializeTo(directive);
10232 
10233  // Internal interface should always deserialize
10234  FW_ASSERT(
10235  Fw::FW_SERIALIZE_OK == _deserStatus,
10236  static_cast<FwAssertArgType>(_deserStatus)
10237  );
10238 
10239  // Make sure there was no data left over.
10240  // That means the buffer size was incorrect.
10241  FW_ASSERT(
10242  _msg.getDeserializeSizeLeft() == 0,
10243  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10244  );
10245 
10246  // Call handler function
10248  directive
10249  );
10250 
10251  break;
10252  }
10253 
10254  // Handle internal interface directive_waitAbs
10255  case INT_IF_DIRECTIVE_WAITABS: {
10257  _deserStatus = _msg.deserializeTo(directive);
10258 
10259  // Internal interface should always deserialize
10260  FW_ASSERT(
10261  Fw::FW_SERIALIZE_OK == _deserStatus,
10262  static_cast<FwAssertArgType>(_deserStatus)
10263  );
10264 
10265  // Make sure there was no data left over.
10266  // That means the buffer size was incorrect.
10267  FW_ASSERT(
10268  _msg.getDeserializeSizeLeft() == 0,
10269  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10270  );
10271 
10272  // Call handler function
10274  directive
10275  );
10276 
10277  break;
10278  }
10279 
10280  // Handle internal interface directive_waitRel
10281  case INT_IF_DIRECTIVE_WAITREL: {
10283  _deserStatus = _msg.deserializeTo(directive);
10284 
10285  // Internal interface should always deserialize
10286  FW_ASSERT(
10287  Fw::FW_SERIALIZE_OK == _deserStatus,
10288  static_cast<FwAssertArgType>(_deserStatus)
10289  );
10290 
10291  // Make sure there was no data left over.
10292  // That means the buffer size was incorrect.
10293  FW_ASSERT(
10294  _msg.getDeserializeSizeLeft() == 0,
10295  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10296  );
10297 
10298  // Call handler function
10300  directive
10301  );
10302 
10303  break;
10304  }
10305 
10306 
10307  // Handle signals to internal state machines
10308  case INTERNAL_STATE_MACHINE_SIGNAL:
10309  this->smDispatch(_msg);
10310  break;
10311 
10312  default:
10313  return MSG_DISPATCH_ERROR;
10314  }
10315 
10316  return MSG_DISPATCH_OK;
10317  }
10318 
10319  // ----------------------------------------------------------------------
10320  // Calls for messages received on special input ports
10321  // ----------------------------------------------------------------------
10322 
10323  void FpySequencerComponentBase ::
10324  m_p_cmdIn_in(
10325  Fw::PassiveComponentBase* callComp,
10326  FwIndexType portNum,
10327  FwOpcodeType opCode,
10328  U32 cmdSeq,
10329  Fw::CmdArgBuffer& args
10330  )
10331  {
10332  FW_ASSERT(callComp);
10333  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10334 
10335  const U32 idBase = callComp->getIdBase();
10336  FW_ASSERT(opCode >= idBase, static_cast<FwAssertArgType>(opCode), static_cast<FwAssertArgType>(idBase));
10337 
10338  // Select base class function based on opcode
10339  switch (opCode - idBase) {
10340  case OPCODE_RUN: {
10341  compPtr->RUN_cmdHandlerBase(
10342  opCode,
10343  cmdSeq,
10344  args
10345  );
10346  break;
10347  }
10348 
10349  case OPCODE_VALIDATE: {
10350  compPtr->VALIDATE_cmdHandlerBase(
10351  opCode,
10352  cmdSeq,
10353  args
10354  );
10355  break;
10356  }
10357 
10358  case OPCODE_RUN_VALIDATED: {
10359  compPtr->RUN_VALIDATED_cmdHandlerBase(
10360  opCode,
10361  cmdSeq,
10362  args
10363  );
10364  break;
10365  }
10366 
10367  case OPCODE_CANCEL: {
10368  compPtr->CANCEL_cmdHandlerBase(
10369  opCode,
10370  cmdSeq,
10371  args
10372  );
10373  break;
10374  }
10375 
10376  case OPCODE_SET_BREAKPOINT: {
10377  compPtr->SET_BREAKPOINT_cmdHandlerBase(
10378  opCode,
10379  cmdSeq,
10380  args
10381  );
10382  break;
10383  }
10384 
10385  case OPCODE_BREAK: {
10386  compPtr->BREAK_cmdHandlerBase(
10387  opCode,
10388  cmdSeq,
10389  args
10390  );
10391  break;
10392  }
10393 
10394  case OPCODE_CONTINUE: {
10395  compPtr->CONTINUE_cmdHandlerBase(
10396  opCode,
10397  cmdSeq,
10398  args
10399  );
10400  break;
10401  }
10402 
10403  case OPCODE_CLEAR_BREAKPOINT: {
10404  compPtr->CLEAR_BREAKPOINT_cmdHandlerBase(
10405  opCode,
10406  cmdSeq,
10407  args
10408  );
10409  break;
10410  }
10411 
10412  case OPCODE_STEP: {
10413  compPtr->STEP_cmdHandlerBase(
10414  opCode,
10415  cmdSeq,
10416  args
10417  );
10418  break;
10419  }
10420 
10421  case OPCODE_SET_FLAG: {
10422  compPtr->SET_FLAG_cmdHandlerBase(
10423  opCode,
10424  cmdSeq,
10425  args
10426  );
10427  break;
10428  }
10429 
10431  compPtr->DUMP_STACK_TO_FILE_cmdHandlerBase(
10432  opCode,
10433  cmdSeq,
10434  args
10435  );
10436  break;
10437  }
10438 
10440  Fw::CmdResponse _cstat = compPtr->paramSet_STATEMENT_TIMEOUT_SECS(args);
10441  compPtr->cmdResponse_out(
10442  opCode,
10443  cmdSeq,
10444  _cstat
10445  );
10446  break;
10447  }
10448 
10450  Fw::CmdResponse _cstat = compPtr->paramSave_STATEMENT_TIMEOUT_SECS();
10451  compPtr->cmdResponse_out(
10452  opCode,
10453  cmdSeq,
10454  _cstat
10455  );
10456  break;
10457  }
10458 
10460  Fw::CmdResponse _cstat = compPtr->paramSet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(args);
10461  compPtr->cmdResponse_out(
10462  opCode,
10463  cmdSeq,
10464  _cstat
10465  );
10466  break;
10467  }
10468 
10470  Fw::CmdResponse _cstat = compPtr->paramSave_FLAG_DEFAULT_EXIT_ON_CMD_FAIL();
10471  compPtr->cmdResponse_out(
10472  opCode,
10473  cmdSeq,
10474  _cstat
10475  );
10476  break;
10477  }
10478  }
10479  }
10480 
10481  // ----------------------------------------------------------------------
10482  // Calls for messages received on typed input ports
10483  // ----------------------------------------------------------------------
10484 
10485  void FpySequencerComponentBase ::
10486  m_p_checkTimers_in(
10487  Fw::PassiveComponentBase* callComp,
10488  FwIndexType portNum,
10489  U32 context
10490  )
10491  {
10492  FW_ASSERT(callComp);
10493  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10494  compPtr->checkTimers_handlerBase(
10495  portNum,
10496  context
10497  );
10498  }
10499 
10500  void FpySequencerComponentBase ::
10501  m_p_cmdResponseIn_in(
10502  Fw::PassiveComponentBase* callComp,
10503  FwIndexType portNum,
10504  FwOpcodeType opCode,
10505  U32 cmdSeq,
10506  const Fw::CmdResponse& response
10507  )
10508  {
10509  FW_ASSERT(callComp);
10510  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10511  compPtr->cmdResponseIn_handlerBase(
10512  portNum,
10513  opCode,
10514  cmdSeq,
10515  response
10516  );
10517  }
10518 
10519  void FpySequencerComponentBase ::
10520  m_p_pingIn_in(
10521  Fw::PassiveComponentBase* callComp,
10522  FwIndexType portNum,
10523  U32 key
10524  )
10525  {
10526  FW_ASSERT(callComp);
10527  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10528  compPtr->pingIn_handlerBase(
10529  portNum,
10530  key
10531  );
10532  }
10533 
10534  void FpySequencerComponentBase ::
10535  m_p_seqRunIn_in(
10536  Fw::PassiveComponentBase* callComp,
10537  FwIndexType portNum,
10538  const Fw::StringBase& filename
10539  )
10540  {
10541  FW_ASSERT(callComp);
10542  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10543  compPtr->seqRunIn_handlerBase(
10544  portNum,
10545  filename
10546  );
10547  }
10548 
10549  void FpySequencerComponentBase ::
10550  m_p_tlmWrite_in(
10551  Fw::PassiveComponentBase* callComp,
10552  FwIndexType portNum,
10553  U32 context
10554  )
10555  {
10556  FW_ASSERT(callComp);
10557  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10558  compPtr->tlmWrite_handlerBase(
10559  portNum,
10560  context
10561  );
10562  }
10563 
10564  // ----------------------------------------------------------------------
10565  // Send signal helper functions
10566  // ----------------------------------------------------------------------
10567 
10568  void FpySequencerComponentBase ::
10569  sendSignalStart(
10570  SmId smId,
10571  FwEnumStoreType signal,
10572  Fw::SerialBufferBase& buffer
10573  )
10574  {
10576 
10577  // Serialize the message type
10578  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(INTERNAL_STATE_MACHINE_SIGNAL));
10579  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10580 
10581  // Serialize the port number
10582  status = buffer.serializeFrom(static_cast<FwIndexType>(0));
10583  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10584 
10585  // Serialize the state machine ID
10586  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(smId));
10587  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10588 
10589  // Serialize the signal
10590  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(signal));
10591  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10592  }
10593 
10594  void FpySequencerComponentBase ::
10595  sequencer_sendSignalFinish(Fw::LinearBufferBase& buffer)
10596  {
10597  // Send message
10599  Os::Queue::Status qStatus = this->m_queue.send(buffer, 9, _block);
10600 
10601  FW_ASSERT(
10602  qStatus == Os::Queue::OP_OK,
10603  static_cast<FwAssertArgType>(qStatus)
10604  );
10605  }
10606 
10607  // ----------------------------------------------------------------------
10608  // Helper functions for state machine dispatch
10609  // ----------------------------------------------------------------------
10610 
10611  void FpySequencerComponentBase ::
10612  smDispatch(Fw::SerialBufferBase& buffer)
10613  {
10614  // Deserialize the state machine ID and signal
10615  FwEnumStoreType storedSmId;
10616  FwEnumStoreType storedSignal;
10617  FpySequencerComponentBase::deserializeSmIdAndSignal(buffer, storedSmId, storedSignal);
10618 
10619  // Select the target state machine instance
10620  const SmId smId = static_cast<SmId>(storedSmId);
10621  switch (smId) {
10622  case SmId::sequencer: {
10624  this->Svc_FpySequencer_SequencerStateMachine_smDispatch(buffer, this->m_stateMachine_sequencer, signal);
10625  break;
10626  }
10627  default:
10628  FW_ASSERT(0, static_cast<FwAssertArgType>(smId));
10629  break;
10630  }
10631  }
10632 
10633  void FpySequencerComponentBase ::
10634  deserializeSmIdAndSignal(
10635  Fw::SerialBufferBase& buffer,
10636  FwEnumStoreType& smId,
10637  FwEnumStoreType& signal
10638  )
10639  {
10640  // Move deserialization beyond the message type and port number
10641  Fw::SerializeStatus status =
10642  buffer.moveDeserToOffset(ComponentIpcSerializableBuffer::DATA_OFFSET);
10643  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10644 
10645  // Deserialize the state machine ID
10646  status = buffer.deserializeTo(smId);
10647  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10648 
10649  // Deserialize the signal
10650  status = buffer.deserializeTo(signal);
10651  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10652  }
10653 
10654  void FpySequencerComponentBase ::
10655  Svc_FpySequencer_SequencerStateMachine_smDispatch(
10656  Fw::SerialBufferBase& buffer,
10657  Svc_FpySequencer_SequencerStateMachine& sm,
10659  )
10660  {
10661  switch (signal) {
10663  // Deserialize the data
10665  const Fw::SerializeStatus status = buffer.deserializeTo(value);
10666  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10667  // Assert no data left in buffer
10668  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10669  // Call the sendSignal function for sm and cmd_VALIDATE
10670  sm.sendSignal_cmd_VALIDATE(value);
10671  break;
10672  }
10674  // Deserialize the data
10676  const Fw::SerializeStatus status = buffer.deserializeTo(value);
10677  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10678  // Assert no data left in buffer
10679  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10680  // Call the sendSignal function for sm and cmd_RUN
10681  sm.sendSignal_cmd_RUN(value);
10682  break;
10683  }
10685  // Deserialize the data
10687  const Fw::SerializeStatus status = buffer.deserializeTo(value);
10688  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10689  // Assert no data left in buffer
10690  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10691  // Call the sendSignal function for sm and cmd_RUN_VALIDATED
10692  sm.sendSignal_cmd_RUN_VALIDATED(value);
10693  break;
10694  }
10696  // Assert no data left in buffer
10697  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10698  // Call the sendSignal function for sm and cmd_CANCEL
10699  sm.sendSignal_cmd_CANCEL();
10700  break;
10701  }
10703  // Deserialize the data
10705  const Fw::SerializeStatus status = buffer.deserializeTo(value);
10706  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10707  // Assert no data left in buffer
10708  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10709  // Call the sendSignal function for sm and cmd_SET_BREAKPOINT
10710  sm.sendSignal_cmd_SET_BREAKPOINT(value);
10711  break;
10712  }
10714  // Assert no data left in buffer
10715  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10716  // Call the sendSignal function for sm and cmd_CLEAR_BREAKPOINT
10717  sm.sendSignal_cmd_CLEAR_BREAKPOINT();
10718  break;
10719  }
10721  // Assert no data left in buffer
10722  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10723  // Call the sendSignal function for sm and result_failure
10724  sm.sendSignal_result_failure();
10725  break;
10726  }
10728  // Assert no data left in buffer
10729  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10730  // Call the sendSignal function for sm and result_success
10731  sm.sendSignal_result_success();
10732  break;
10733  }
10735  // Assert no data left in buffer
10736  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10737  // Call the sendSignal function for sm and entered
10738  sm.sendSignal_entered();
10739  break;
10740  }
10742  // Assert no data left in buffer
10743  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10744  // Call the sendSignal function for sm and result_dispatchStatement_success
10745  sm.sendSignal_result_dispatchStatement_success();
10746  break;
10747  }
10749  // Assert no data left in buffer
10750  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10751  // Call the sendSignal function for sm and result_dispatchStatement_failure
10752  sm.sendSignal_result_dispatchStatement_failure();
10753  break;
10754  }
10756  // Assert no data left in buffer
10757  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10758  // Call the sendSignal function for sm and result_dispatchStatement_noMoreStatements
10759  sm.sendSignal_result_dispatchStatement_noMoreStatements();
10760  break;
10761  }
10763  // Assert no data left in buffer
10764  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10765  // Call the sendSignal function for sm and checkTimersIn
10766  sm.sendSignal_checkTimersIn();
10767  break;
10768  }
10770  // Assert no data left in buffer
10771  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10772  // Call the sendSignal function for sm and result_checkShouldWake_wakeup
10773  sm.sendSignal_result_checkShouldWake_wakeup();
10774  break;
10775  }
10777  // Assert no data left in buffer
10778  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10779  // Call the sendSignal function for sm and result_checkShouldWake_keepSleeping
10780  sm.sendSignal_result_checkShouldWake_keepSleeping();
10781  break;
10782  }
10784  // Assert no data left in buffer
10785  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10786  // Call the sendSignal function for sm and result_timeOpFailed
10787  sm.sendSignal_result_timeOpFailed();
10788  break;
10789  }
10791  // Assert no data left in buffer
10792  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10793  // Call the sendSignal function for sm and stmtResponse_beginSleep
10794  sm.sendSignal_stmtResponse_beginSleep();
10795  break;
10796  }
10798  // Assert no data left in buffer
10799  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10800  // Call the sendSignal function for sm and stmtResponse_success
10801  sm.sendSignal_stmtResponse_success();
10802  break;
10803  }
10805  // Assert no data left in buffer
10806  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10807  // Call the sendSignal function for sm and stmtResponse_failure
10808  sm.sendSignal_stmtResponse_failure();
10809  break;
10810  }
10812  // Assert no data left in buffer
10813  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10814  // Call the sendSignal function for sm and stmtResponse_unexpected
10815  sm.sendSignal_stmtResponse_unexpected();
10816  break;
10817  }
10819  // Assert no data left in buffer
10820  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10821  // Call the sendSignal function for sm and stmtResponse_keepWaiting
10822  sm.sendSignal_stmtResponse_keepWaiting();
10823  break;
10824  }
10826  // Assert no data left in buffer
10827  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10828  // Call the sendSignal function for sm and result_checkStatementTimeout_statementTimeout
10829  sm.sendSignal_result_checkStatementTimeout_statementTimeout();
10830  break;
10831  }
10833  // Assert no data left in buffer
10834  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10835  // Call the sendSignal function for sm and result_checkStatementTimeout_noTimeout
10836  sm.sendSignal_result_checkStatementTimeout_noTimeout();
10837  break;
10838  }
10840  // Assert no data left in buffer
10841  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10842  // Call the sendSignal function for sm and cmd_CONTINUE
10843  sm.sendSignal_cmd_CONTINUE();
10844  break;
10845  }
10847  // Assert no data left in buffer
10848  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10849  // Call the sendSignal function for sm and cmd_BREAK
10850  sm.sendSignal_cmd_BREAK();
10851  break;
10852  }
10854  // Assert no data left in buffer
10855  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10856  // Call the sendSignal function for sm and cmd_STEP
10857  sm.sendSignal_cmd_STEP();
10858  break;
10859  }
10860  default:
10861  FW_ASSERT(0, static_cast<FwAssertArgType>(signal));
10862  break;
10863  }
10864  }
10865 
10866  // ----------------------------------------------------------------------
10867  // Parameter set functions
10868  // ----------------------------------------------------------------------
10869 
10870  Fw::CmdResponse FpySequencerComponentBase ::
10871  paramSet_STATEMENT_TIMEOUT_SECS(Fw::SerialBufferBase& val)
10872  {
10873  F32 _localVal{};
10874  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
10875  if (_stat != Fw::FW_SERIALIZE_OK) {
10877  }
10878 
10879  // Assign value only if successfully deserialized
10880  this->m_paramLock.lock();
10881  this->m_STATEMENT_TIMEOUT_SECS = _localVal;
10882  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::VALID;
10883  this->m_paramLock.unLock();
10884 
10885  // Call notifier
10887  return Fw::CmdResponse::OK;
10888  }
10889 
10890  Fw::CmdResponse FpySequencerComponentBase ::
10891  paramSet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(Fw::SerialBufferBase& val)
10892  {
10893  bool _localVal{};
10894  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
10895  if (_stat != Fw::FW_SERIALIZE_OK) {
10897  }
10898 
10899  // Assign value only if successfully deserialized
10900  this->m_paramLock.lock();
10901  this->m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = _localVal;
10902  this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid = Fw::ParamValid::VALID;
10903  this->m_paramLock.unLock();
10904 
10905  // Call notifier
10907  return Fw::CmdResponse::OK;
10908  }
10909 
10910  // ----------------------------------------------------------------------
10911  // Parameter save functions
10912  // ----------------------------------------------------------------------
10913 
10914  Fw::CmdResponse FpySequencerComponentBase ::
10915  paramSave_STATEMENT_TIMEOUT_SECS()
10916  {
10917  Fw::ParamBuffer _saveBuff;
10918  FwPrmIdType _id;
10919  Fw::SerializeStatus _stat;
10920  if (this->m_prmSet_OutputPort[0].isConnected()) {
10921  this->m_paramLock.lock();
10922 
10923  _stat = _saveBuff.serializeFrom(m_STATEMENT_TIMEOUT_SECS);
10924 
10925  this->m_paramLock.unLock();
10926  if (_stat != Fw::FW_SERIALIZE_OK) {
10928  }
10929 
10930  _id = static_cast<FwPrmIdType>(this->getIdBase() + PARAMID_STATEMENT_TIMEOUT_SECS);
10931 
10932  // Save the parameter
10933  this->m_prmSet_OutputPort[0].invoke(
10934  _id,
10935  _saveBuff
10936  );
10937 
10938  return Fw::CmdResponse::OK;
10939  }
10940 
10942  }
10943 
10944  Fw::CmdResponse FpySequencerComponentBase ::
10945  paramSave_FLAG_DEFAULT_EXIT_ON_CMD_FAIL()
10946  {
10947  Fw::ParamBuffer _saveBuff;
10948  FwPrmIdType _id;
10949  Fw::SerializeStatus _stat;
10950  if (this->m_prmSet_OutputPort[0].isConnected()) {
10951  this->m_paramLock.lock();
10952 
10953  _stat = _saveBuff.serializeFrom(m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL);
10954 
10955  this->m_paramLock.unLock();
10956  if (_stat != Fw::FW_SERIALIZE_OK) {
10958  }
10959 
10960  _id = static_cast<FwPrmIdType>(this->getIdBase() + PARAMID_FLAG_DEFAULT_EXIT_ON_CMD_FAIL);
10961 
10962  // Save the parameter
10963  this->m_prmSet_OutputPort[0].invoke(
10964  _id,
10965  _saveBuff
10966  );
10967 
10968  return Fw::CmdResponse::OK;
10969  }
10970 
10972  }
10973 
10974 }
Loads, validates and runs a sequence.
bool isConnected_tlmOut_OutputPort(FwIndexType portNum)
void tlmWrite_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(bool arg, Fw::Time _tlmTime=Fw::Time())
Serialization/Deserialization operation was successful.
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.
called when an unexpected or incorrect statement response comes in. only raised in the RUNNING state ...
virtual void directive_waitRel_internalInterfaceHandler(const Svc::FpySequencer_WaitRelDirective &directive)=0
Internal interface handler for directive_waitRel.
called in dispatchStatement method when a statement was unable to be sent out
virtual void DUMP_STACK_TO_FILE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command DUMP_STACK_TO_FILE.
void addCallPort(InputTimePort *callPort)
Register an input port.
Definition: TimePortAc.cpp:134
void invoke(Fw::ComBuffer &data, U32 context) const
Invoke a port interface.
Definition: ComPortAc.cpp:156
void set_seqStartOut_OutputPort(FwIndexType portNum, Svc::InputCmdSeqInPort *port)
Connect port to seqStartOut[portNum].
void log_WARNING_HI_DirectiveTimedOut(U8 opCode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event DirectiveTimedOut.
virtual void directive_pushPrm_internalInterfaceHandler(const Svc::FpySequencer_PushPrmDirective &directive)=0
Internal interface handler for directive_pushPrm.
void init()
Initialization function.
Definition: ComPortAc.cpp:137
virtual void directive_peek_internalInterfaceHandler(const Svc::FpySequencer_PeekDirective &directive)=0
Internal interface handler for directive_peek.
void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const
Log event SequencePaused.
virtual void directive_exit_internalInterfaceHandler(const Svc::FpySequencer_ExitDirective &directive)=0
Internal interface handler for directive_exit.
Fw::InputCmdResponsePort * get_cmdResponseIn_InputPort(FwIndexType portNum)
FwIdType FwOpcodeType
The type of a command opcode.
Operation succeeded.
Definition: Os.hpp:26
void set_cmdOut_OutputPort(FwIndexType portNum, Fw::InputComPort *port)
Connect port to cmdOut[portNum].
SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG) override
Serialize an 8-bit unsigned integer value.
called in dispatchStatement method when there were no more statements in the sequence ...
branches based off of the top byte of the stack
void directive_pushVal_internalInterfaceInvoke(const Svc::FpySequencer_PushValDirective &directive)
Internal interface base-class function for directive_pushVal.
void tlmWrite_Debug_NextStatementOpcode(U8 arg, Fw::Time _tlmTime=Fw::Time())
virtual void parametersLoaded()
Called whenever parameters are loaded.
Must be called after VALIDATE. Runs the sequence that was validated.
virtual void directive_pushTime_internalInterfaceHandler(const Svc::FpySequencer_PushTimeDirective &directive)=0
Internal interface handler for directive_pushTime.
void log_WARNING_HI_InsufficientBufferSpace(U64 bufferSize, const Fw::StringBase &filePath) const
Log event InsufficientBufferSpace.
static constexpr FwIndexType getNum_seqStartOut_OutputPorts()
PlatformSizeType FwSizeType
stores a value to an absolute address in the stack (for global variables), offset from stack ...
Status receive(U8 *destination, FwSizeType capacity, BlockingType blockType, FwSizeType &actualSize, FwQueuePriorityType &priority) override
receive a message from the queue through delegate
Definition: Queue.cpp:71
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.
virtual void cmdResponseIn_handler(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)=0
Handler for input port cmdResponseIn.
void sequencer_sendSignal_result_dispatchStatement_success()
Send signal result_dispatchStatement_success to state machine sequencer.
void directive_stackOp_internalInterfaceInvoke(const Svc::FpySequencer_StackOpDirective &directive)
Internal interface base-class function for directive_stackOp.
void log_WARNING_HI_WrongCRC(U32 expected, U32 actual) const
Log event WrongCRC.
void directive_pushTlmVal_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValDirective &directive)
Internal interface base-class function for directive_pushTlmVal.
Status
status returned from the queue send function
Definition: Queue.hpp:30
virtual void CLEAR_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
virtual void parameterUpdated(FwPrmIdType id)
Called whenever a parameter is updated.
called when statement successfully executed. only raised in the RUNNING.AWAITING_CMD_RESPONSE state ...
called on VALIDATE cmd with the path of the sequence file to validate. only raised in IDLE state ...
virtual void directive_stackCmd_internalInterfaceHandler(const Svc::FpySequencer_StackCmdDirective &directive)=0
Internal interface handler for directive_stackCmd.
called on RUN cmd with the path of the sequence file to run. only raised in IDLE state ...
void sequencer_sendSignal_cmd_SET_BREAKPOINT(const Svc::FpySequencer_BreakpointArgs &value)
Send signal cmd_SET_BREAKPOINT to state machine sequencer.
called on RUN_VALIDATED cmd. only raised in AWAITING_CMD_RUN_VALIDATED state
void init()
Initialization function.
Definition: SchedPortAc.cpp:56
virtual void tlmWrite_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port tlmWrite.
const char * toChar() const
Convert to a C-style char*.
Definition: String.hpp:50
virtual void CLEAR_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CLEAR_BREAKPOINT.
static constexpr FwIndexType getNum_cmdIn_InputPorts()
Fw::TlmValid getTlmChan_out(FwIndexType portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)
Invoke output port getTlmChan.
void tlmWrite_Debug_ReachedEndOfFile(bool arg, Fw::Time _tlmTime=Fw::Time())
void init()
Initialization function.
void log_WARNING_HI_SequenceExitedWithError(const Fw::StringBase &filePath, U8 errorCode) const
Log event SequenceExitedWithError.
void init()
Initialization function.
Definition: CmdPortAc.cpp:56
void RUN_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void SET_FLAG_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SET_FLAG.
void set_seqDoneOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to seqDoneOut[portNum].
FwIdType FwPrmIdType
The type of a parameter identifier.
void set_tlmOut_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
The size of the serial representations of the port arguments.
Definition: SchedPortAc.hpp:36
void unLock()
unlock the mutex and assert success
Definition: Mutex.cpp:41
stores a value to a local variable at a compile-time-known offset relative to the current stack frame...
void addCallPort(InputPrmSetPort *callPort)
Register an input port.
virtual void CANCEL_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void invoke(U32 key) const
Invoke a port interface.
Definition: PingPortAc.cpp:147
void STEP_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
static constexpr FwIndexType getNum_pingIn_InputPorts()
void addCallPort(InputTlmGetPort *callPort)
Register an input port.
pop an opcode and arg buf off the stack, send to cmd dispatcher and await response ...
virtual const CHAR * toChar() const =0
Convert to a C-style char*.
void sequencer_sendSignal_result_checkShouldWake_wakeup()
Send signal result_checkShouldWake_wakeup to state machine sequencer.
virtual void directive_goto_internalInterfaceHandler(const Svc::FpySequencer_GotoDirective &directive)=0
Internal interface handler for directive_goto.
void directive_if_internalInterfaceInvoke(const Svc::FpySequencer_IfDirective &directive)
Internal interface base-class function for directive_if.
const Time ZERO_TIME
Definition: Time.cpp:5
virtual void directive_storeRel_internalInterfaceHandler(const Svc::FpySequencer_StoreRelDirective &directive)=0
Internal interface handler for directive_storeRel.
void sequencer_sendSignal_result_success()
Send signal result_success to state machine sequencer.
void cmdResponseIn_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Handler base-class function for input port cmdResponseIn.
void sequencer_sendSignal_stmtResponse_success()
Send signal stmtResponse_success to state machine sequencer.
virtual ~FpySequencerComponentBase()
Destroy FpySequencerComponentBase object.
virtual void directive_setFlag_internalInterfaceHandler(const Svc::FpySequencer_SetFlagDirective &directive)=0
Internal interface handler for directive_setFlag.
void log_WARNING_LO_CmdResponseWhileNotRunningSequence(I32 state, FwOpcodeType opcode, Fw::CmdResponse response) const
Log event CmdResponseWhileNotRunningSequence.
void tlmWrite_Debug_StackSize(Svc::Fpy::StackSizeType arg, Fw::Time _tlmTime=Fw::Time())
virtual void SET_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U32 stmtIdx, bool breakOnce)=0
virtual void directive_stackOp_internalInterfaceHandler(const Svc::FpySequencer_StackOpDirective &directive)=0
Internal interface handler for directive_stackOp.
void sequencer_sendSignal_cmd_VALIDATE(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_VALIDATE to state machine sequencer.
void directive_noOp_internalInterfaceInvoke(const Svc::FpySequencer_NoOpDirective &directive)
Internal interface base-class function for directive_noOp.
void init()
Initialization function.
Definition: TlmPortAc.cpp:144
static constexpr FwIndexType getNum_tlmWrite_InputPorts()
Enum representing a command response.
virtual void RUN_VALIDATED_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN_VALIDATED.
void log_WARNING_HI_FileReadError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileReadError.
No time base has been established (Required)
void set_logOut_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to logOut[portNum].
virtual void DUMP_STACK_TO_FILE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void tlmWrite_State(FwEnumStoreType arg, Fw::Time _tlmTime=Fw::Time())
void addCallPort(InputCmdRegPort *callPort)
Register an input port.
void tlmWrite_SequencesSucceeded(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const
Log event ExtraBytesInSequence.
virtual SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG)=0
Serialize an 8-bit unsigned integer value.
void directive_allocate_internalInterfaceInvoke(const Svc::FpySequencer_AllocateDirective &directive)
Internal interface base-class function for directive_allocate.
pops bytes off the top of the stack and does nothing with them
void directive_storeRelConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive)
Internal interface base-class function for directive_storeRelConstOffset.
static constexpr FwIndexType getNum_timeCaller_OutputPorts()
virtual void directive_waitAbs_internalInterfaceHandler(const Svc::FpySequencer_WaitAbsDirective &directive)=0
Internal interface handler for directive_waitAbs.
void init()
Initialization function.
virtual void RUN_VALIDATED_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, Svc::FpySequencer_BlockState block)=0
bool isConnected_pingOut_OutputPort(FwIndexType portNum)
virtual void pingIn_preMsgHook(FwIndexType portNum, U32 key)
Pre-message hook for async input port pingIn.
virtual void STEP_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
Os::Queue m_queue
queue object for active component
void directive_pushTlmValAndTime_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValAndTimeDirective &directive)
Internal interface base-class function for directive_pushTlmValAndTime.
The size of the serial representations of the port arguments.
Definition: PingPortAc.hpp:36
void directive_stackCmd_internalInterfaceInvoke(const Svc::FpySequencer_StackCmdDirective &directive)
Internal interface base-class function for directive_stackCmd.
void log_WARNING_HI_TooManySequenceDirectives(U16 count, U16 max) const
Log event TooManySequenceDirectives.
bool isConnected_seqStartOut_OutputPort(FwIndexType portNum)
void sequencer_sendSignal_stmtResponse_unexpected()
Send signal stmtResponse_unexpected to state machine sequencer.
virtual void RUN_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::FpySequencer_BlockState block)=0
void sequencer_sendSignal_cmd_BREAK()
Send signal cmd_BREAK to state machine sequencer.
void sequencer_sendSignal_result_dispatchStatement_failure()
Send signal result_dispatchStatement_failure to state machine sequencer.
void log_WARNING_HI_DirectiveDeserializeError(U8 opcode, U32 stmtIdx, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event DirectiveDeserializeError.
virtual void pingIn_handler(FwIndexType portNum, U32 key)=0
Handler for input port pingIn.
Svc::InputSchedPort * get_checkTimers_InputPort(FwIndexType portNum)
void addCallPort(InputTlmPort *callPort)
Register an input port.
Definition: TlmPortAc.cpp:150
virtual void STEP_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command STEP.
void addCallPort(InputPrmGetPort *callPort)
Register an input port.
void RUN_VALIDATED_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void tlmWrite_PRM_STATEMENT_TIMEOUT_SECS(F32 arg, Fw::Time _tlmTime=Fw::Time())
void init()
Object initializer.
Definition: ObjBase.cpp:24
void set_pingOut_OutputPort(FwIndexType portNum, Svc::InputPingPort *port)
Connect port to pingOut[portNum].
static constexpr FwIndexType getNum_tlmOut_OutputPorts()
void seqStartOut_out(FwIndexType portNum, const Fw::StringBase &filename)
Invoke output port seqStartOut.
virtual void directive_allocate_internalInterfaceHandler(const Svc::FpySequencer_AllocateDirective &directive)=0
Internal interface handler for directive_allocate.
static constexpr FwIndexType getNum_pingOut_OutputPorts()
SerializeStatus
forward declaration for string
Svc_FpySequencer_SequencerStateMachine::State sequencer_getState() const
Get the state of state machine instance sequencer.
called in STEP cmd. only raised in RUNNING.PAUSED state
void set_getTlmChan_OutputPort(FwIndexType portNum, Fw::InputTlmGetPort *port)
Connect port to getTlmChan[portNum].
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: CmdPortAc.cpp:62
float F32
32-bit floating point
Definition: BasicTypes.h:83
virtual void checkTimers_handler(FwIndexType portNum, U32 context)=0
Handler for input port checkTimers.
virtual SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG)=0
Deserialize an 8-bit unsigned integer value.
Message will block until space is available.
Definition: Queue.hpp:47
bool isConnected_timeCaller_OutputPort(FwIndexType portNum)
static constexpr FwIndexType getNum_getParam_OutputPorts()
static constexpr FwIndexType getNum_cmdRegOut_OutputPorts()
void log_WARNING_HI_WrongCmdResponseOpcode(FwOpcodeType opcode, Fw::CmdResponse response, FwOpcodeType expectedOpcode) const
Log event WrongCmdResponseOpcode.
void tlmWrite_StatementsFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
FwIdType FwEventIdType
The type of an event identifier.
loads a value from a local variable at a compile-time-known offset relative to the current stack fram...
void regCommands()
Register commands with the Command Dispatcher.
void invoke(FwOpcodeType opCode) const
Invoke a port interface.
void directive_loadAbs_internalInterfaceInvoke(const Svc::FpySequencer_LoadAbsDirective &directive)
Internal interface base-class function for directive_loadAbs.
called in dispatchStatement method when a statement was successfully dispatched
F32 paramGet_STATEMENT_TIMEOUT_SECS(Fw::ParamValid &valid)
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
Fw::TlmValid invoke(FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke a port interface.
#define FW_OBJECT_NAMES
Indicates whether or not object names are stored (more memory, can be used for tracking objects) ...
Definition: FpConfig.h:26
pop two byte arrays off the top of the stack, call memcmp, push 1 if they were equal, 0 otherwise
void init()
Initialization function.
Definition: TimePortAc.cpp:128
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
void directive_memCmp_internalInterfaceInvoke(const Svc::FpySequencer_MemCmpDirective &directive)
Internal interface base-class function for directive_memCmp.
Os::Queue::Status createQueue(FwSizeType depth, FwSizeType msgSize)
void directive_pushTime_internalInterfaceInvoke(const Svc::FpySequencer_PushTimeDirective &directive)
Internal interface base-class function for directive_pushTime.
void tlmWrite_DirectiveErrorId(const Svc::Fpy::DirectiveId &arg, Fw::Time _tlmTime=Fw::Time())
static constexpr FwIndexType getNum_cmdResponseIn_InputPorts()
Svc::InputPingPort * get_pingIn_InputPort(FwIndexType portNum)
void tlmWrite_Debug_NextCmdOpcode(FwOpcodeType arg, Fw::Time _tlmTime=Fw::Time())
void tlmWrite_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port tlmWrite.
bool isConnected_prmSet_OutputPort(FwIndexType portNum)
#define FW_MIN(a, b)
MIN macro.
Definition: BasicTypes.h:92
A less serious but recoverable event.
Fw::ParamValid invoke(FwPrmIdType id, Fw::ParamBuffer &val) const
Invoke a port interface.
virtual void SET_FLAG_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, Svc::Fpy::FlagId flag, bool value)=0
ActiveComponentBase(const char *name)
Constructor.
virtual void directive_constCmd_internalInterfaceHandler(const Svc::FpySequencer_ConstCmdDirective &directive)=0
Internal interface handler for directive_constCmd.
void init()
Initialization function.
Definition: PingPortAc.cpp:128
Fw::InputCmdPort * get_cmdIn_InputPort(FwIndexType portNum)
void invoke(Fw::Time &time) const
Invoke a port interface.
Definition: TimePortAc.cpp:147
void pingIn_handlerBase(FwIndexType portNum, U32 key)
Handler base-class function for input port pingIn.
stores a value to an absolute address in the stack (for global variables), const offset ...
void set_timeCaller_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
message to exit active component task
void SET_FLAG_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Serializable::SizeType getDeserializeSizeLeft() const override
Get remaining deserialization buffer size.
virtual void directive_pushVal_internalInterfaceHandler(const Svc::FpySequencer_PushValDirective &directive)=0
Internal interface handler for directive_pushVal.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
const char * toChar() const
Convert to a C-style char*.
Definition: ObjectName.hpp:50
void invoke(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response) const
Invoke a port interface.
void sequencer_sendSignal_cmd_RUN_VALIDATED(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_RUN_VALIDATED to state machine sequencer.
virtual void BREAK_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
Svc_FpySequencer_SequencerStateMachine(FpySequencerComponentBase &component)
Constructor.
FwIdType FwChanIdType
The type of a telemetry channel identifier.
FwSizeType SizeType
void log_WARNING_HI_EndOfFileError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath) const
Log event EndOfFileError.
void set_cmdResponseOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to cmdResponseOut[portNum].
void addCallPort(InputPingPort *callPort)
Register an input port.
Definition: PingPortAc.cpp:134
void log_WARNING_LO_CmdResponseFromOldSequence(FwOpcodeType opcode, Fw::CmdResponse response, U16 oldSequenceIdx, U16 currentSequenceIdx) const
Log event CmdResponseFromOldSequence.
virtual void directive_getFlag_internalInterfaceHandler(const Svc::FpySequencer_GetFlagDirective &directive)=0
Internal interface handler for directive_getFlag.
Status send(const U8 *buffer, FwSizeType size, FwQueuePriorityType priority, BlockingType blockType) override
send a message into the queue through delegate
Definition: Queue.cpp:54
FpySequencerComponentBase(const char *compName="")
Construct FpySequencerComponentBase object.
virtual void directive_call_internalInterfaceHandler(const Svc::FpySequencer_CallDirective &directive)=0
Internal interface handler for directive_call.
void init()
Initialization function.
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 addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void tlmWrite_LastDirectiveError(const Svc::Fpy::DirectiveErrorCode &arg, Fw::Time _tlmTime=Fw::Time())
void VALIDATE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_discard_internalInterfaceHandler(const Svc::FpySequencer_DiscardDirective &directive)=0
Internal interface handler for directive_discard.
void resetDeser() override
Reset deserialization pointer to beginning of buffer.
static constexpr FwIndexType getNum_prmSet_OutputPorts()
virtual void seqRunIn_preMsgHook(FwIndexType portNum, const Fw::StringBase &filename)
Pre-message hook for async input port seqRunIn.
void directive_setFlag_internalInterfaceInvoke(const Svc::FpySequencer_SetFlagDirective &directive)
Internal interface base-class function for directive_setFlag.
bool isConnected_getParam_OutputPort(FwIndexType portNum)
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.
A string backed by an external buffer.
A serious but recoverable event.
void CANCEL_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void directive_waitAbs_internalInterfaceInvoke(const Svc::FpySequencer_WaitAbsDirective &directive)
Internal interface base-class function for directive_waitAbs.
void directive_peek_internalInterfaceInvoke(const Svc::FpySequencer_PeekDirective &directive)
Internal interface base-class function for directive_peek.
void set_cmdRegOut_OutputPort(FwIndexType portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void log_WARNING_HI_CommandFailed(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath, Fw::CmdResponse response) const
Log event CommandFailed.
void sequencer_sendSignal_stmtResponse_beginSleep()
Send signal stmtResponse_beginSleep to state machine sequencer.
void invoke(FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke a port interface.
Definition: TlmPortAc.cpp:163
bool isConnected() const
Definition: PortBase.cpp:38
void log_WARNING_HI_CommandTimedOut(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event CommandTimedOut.
void sequencer_sendSignal_result_checkStatementTimeout_noTimeout()
Send signal result_checkStatementTimeout_noTimeout to state machine sequencer.
static constexpr FwIndexType getNum_seqRunIn_InputPorts()
virtual void tlmWrite_handler(FwIndexType portNum, U32 context)=0
Handler for input port tlmWrite.
Svc::InputCmdSeqInPort * get_seqRunIn_InputPort(FwIndexType portNum)
virtual void directive_memCmp_internalInterfaceHandler(const Svc::FpySequencer_MemCmpDirective &directive)=0
Internal interface handler for directive_memCmp.
void invoke(const Fw::StringBase &filename) const
Invoke a port interface.
void loadParameters()
Load the parameters from a parameter source.
void log_WARNING_HI_InvalidSeqRunCall(I32 state) const
Log event InvalidSeqRunCall.
virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective &directive)=0
Internal interface handler for directive_if.
#define PRI_FwIndexType
void directive_getField_internalInterfaceInvoke(const Svc::FpySequencer_GetFieldDirective &directive)
Internal interface base-class function for directive_getField.
static constexpr FwIndexType getNum_cmdOut_OutputPorts()
The size of the serial representation.
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
Definition: StringBase.cpp:39
void init()
Initialization function.
Definition: LogPortAc.cpp:151
Command successfully executed.
called in BREAK cmd. only raised in RUNNING state
virtual Serializable::SizeType getDeserializeSizeLeft() const =0
Get remaining deserialization buffer size.
sleeps for a relative duration from the current time
void setPortNum(FwIndexType portNum)
bool isConnected_seqDoneOut_OutputPort(FwIndexType portNum)
virtual void directive_storeRelConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive)=0
Internal interface handler for directive_storeRelConstOffset.
void directive_discard_internalInterfaceInvoke(const Svc::FpySequencer_DiscardDirective &directive)
Internal interface base-class function for directive_discard.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:53
virtual void directive_noOp_internalInterfaceHandler(const Svc::FpySequencer_NoOpDirective &directive)=0
Internal interface handler for directive_noOp.
BlockingType
message type
Definition: Queue.hpp:46
The size of the serial representations of the port arguments.
Definition: CmdPortAc.hpp:38
void log_ACTIVITY_HI_BreakpointSet(U32 breakpointIdx, bool breakOnce) const
Log event BreakpointSet.
void directive_pushPrm_internalInterfaceInvoke(const Svc::FpySequencer_PushPrmDirective &directive)
Internal interface base-class function for directive_pushPrm.
void sequencer_sendSignal_result_timeOpFailed()
Send signal result_timeOpFailed to state machine sequencer.
void BREAK_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void seqDoneOut_out(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Invoke output port seqDoneOut.
void log_WARNING_HI_FileOpenError(const Fw::StringBase &filePath, I32 errorCode) const
Log event FileOpenError.
void init(FpySequencerComponentBase::SmId smId)
Initialize the state machine.
void set_prmSet_OutputPort(FwIndexType portNum, Fw::InputPrmSetPort *port)
Connect port to prmSet[portNum].
Command failed to deserialize.
PlatformQueuePriorityType FwQueuePriorityType
The type of queue priorities used.
Command had execution error.
Important informational events.
virtual void seqRunIn_handler(FwIndexType portNum, const Fw::StringBase &filename)=0
Handler for input port seqRunIn.
void sequencer_sendSignal_cmd_CANCEL()
Send signal cmd_CANCEL to state machine sequencer.
void sequencer_sendSignal_result_checkStatementTimeout_statementTimeout()
Send signal result_checkStatementTimeout_statementTimeout to state machine sequencer.
static constexpr FwIndexType getNum_cmdResponseOut_OutputPorts()
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: SchedPortAc.cpp:62
void sequencer_sendSignal_stmtResponse_keepWaiting()
Send signal stmtResponse_keepWaiting to state machine sequencer.
void invoke(FwEventIdType id, Fw::Time &timeTag, const Fw::LogSeverity &severity, Fw::LogBuffer &args) const
Invoke a port interface.
Definition: LogPortAc.cpp:170
void init()
Initialization function.
bool isConnected_cmdResponseOut_OutputPort(FwIndexType portNum)
void log_WARNING_HI_InvalidCommand(I32 state) const
Log event InvalidCommand.
void tlmWrite_BreakBeforeNextLine(bool arg, Fw::Time _tlmTime=Fw::Time())
virtual void directive_storeAbs_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsDirective &directive)=0
Internal interface handler for directive_storeAbs.
void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase &filePath) const
Log event SequenceCancelled.
virtual void RUN_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN.
void log_ACTIVITY_HI_BreakpointCleared() const
Log event BreakpointCleared.
static constexpr FwIndexType getNum_getTlmChan_OutputPorts()
void init()
Initialization function.
virtual void directive_getField_internalInterfaceHandler(const Svc::FpySequencer_GetFieldDirective &directive)=0
Internal interface handler for directive_getField.
void pingOut_out(FwIndexType portNum, U32 key)
Invoke output port pingOut.
virtual void directive_loadRel_internalInterfaceHandler(const Svc::FpySequencer_LoadRelDirective &directive)=0
Internal interface handler for directive_loadRel.
bool isConnected_cmdOut_OutputPort(FwIndexType portNum)
A message was sent requesting an exit of the loop.
called when the statement unsuccessfully executed. only raised in the RUNNING.AWAITING_CMD_RESPONSE s...
called in CONTINUE cmd. only raised in RUNNING.PAUSED state
FpySequencer_SequencerStateMachineStateMachineBase::State getState() const
Get the state.
void tlmWrite_SequencesFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_FileReadDeserializeError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event FileReadDeserializeError.
loads a value from an absolute address in the stack (for global variables)
bool isConnected_logOut_OutputPort(FwIndexType portNum)
void tlmWrite_SeqPath(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time())
virtual void SET_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SET_BREAKPOINT.
PlatformIndexType FwIndexType
void directive_constCmd_internalInterfaceInvoke(const Svc::FpySequencer_ConstCmdDirective &directive)
Internal interface base-class function for directive_constCmd.
virtual void VALIDATE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command VALIDATE.
static constexpr FwIndexType getNum_checkTimers_InputPorts()
bool isConnected_prmGet_OutputPort(FwIndexType portNum)
void log_WARNING_HI_MismatchedTimeContext(I32 internalTimeContext, I32 otherTimeContext) const
Log event MismatchedTimeContext.
void directive_return_internalInterfaceInvoke(const Svc::FpySequencer_ReturnDirective &directive)
Internal interface base-class function for directive_return.
Svc::InputSchedPort * get_tlmWrite_InputPort(FwIndexType portNum)
void log_WARNING_HI_WrongSchemaVersion(U8 expected, U8 actual) const
Log event WrongSchemaVersion.
void addCallPort(InputLogPort *callPort)
Register an input port.
Definition: LogPortAc.cpp:157
void directive_getFlag_internalInterfaceInvoke(const Svc::FpySequencer_GetFlagDirective &directive)
Internal interface base-class function for directive_getFlag.
void cmdOut_out(FwIndexType portNum, Fw::ComBuffer &data, U32 context)
Invoke output port cmdOut.
void addCallPort(InputCmdSeqInPort *callPort)
Register an input port.
void sequencer_sendSignal_cmd_CLEAR_BREAKPOINT()
Send signal cmd_CLEAR_BREAKPOINT to state machine sequencer.
void log_WARNING_HI_UnknownSequencerDirective(U8 opcode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event UnknownSequencerDirective.
virtual void VALIDATE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void init()
Initialization function.
stores a value to a local variable at a runtime-determined offset relative to the current stack frame...
void init()
Initialization function.
Definition: PingPortAc.cpp:56
virtual void directive_return_internalInterfaceHandler(const Svc::FpySequencer_ReturnDirective &directive)=0
Internal interface handler for directive_return.
virtual void BREAK_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command BREAK.
void tlmWrite_DirectiveErrorIndex(U64 arg, Fw::Time _tlmTime=Fw::Time())
Command failed validation.
RateGroupDivider component implementation.
void log_WARNING_HI_CmdResponseWhileNotAwaiting(FwOpcodeType opcode, Fw::CmdResponse response) const
Log event CmdResponseWhileNotAwaiting.
bool isConnected_cmdRegOut_OutputPort(FwIndexType portNum)
void log_WARNING_HI_CmdResponseWhileAwaitingDirective(FwOpcodeType opcode, Fw::CmdResponse response, U8 expectedDirectiveOpcode) const
Log event CmdResponseWhileAwaitingDirective.
virtual void cmdResponseIn_preMsgHook(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Pre-message hook for async input port cmdResponseIn.
message sent/received okay
Definition: Queue.hpp:31
SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG) override
Deserialize an 8-bit unsigned integer value.
void seqRunIn_handlerBase(FwIndexType portNum, const Fw::StringBase &filename)
Handler base-class function for input port seqRunIn.
Enum representing parameter validity.
U8 BYTE
byte type
Definition: BasicTypes.h:56
void log_WARNING_HI_TooManySequenceArgs(U8 count, U8 max) const
Log event TooManySequenceArgs.
void sequencer_sendSignal_cmd_CONTINUE()
Send signal cmd_CONTINUE to state machine sequencer.
void directive_storeAbs_internalInterfaceInvoke(const Svc::FpySequencer_StoreAbsDirective &directive)
Internal interface base-class function for directive_storeAbs.
void DUMP_STACK_TO_FILE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void log_WARNING_HI_MismatchedTimeBase(I32 internalTimeBase, I32 otherTimeBase) const
Log event MismatchedTimeBase.
void invoke(FwPrmIdType id, Fw::ParamBuffer &val) const
Invoke a port interface.
void sequencer_sendSignal_result_failure()
Send signal result_failure to state machine sequencer.
virtual void CONTINUE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CONTINUE.
called on CANCEL cmd. raised in all states except IDLE
virtual void checkTimers_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port checkTimers.
void addCallPort(InputComPort *callPort)
Register an input port.
Definition: ComPortAc.cpp:143
void sequencer_sendSignal_entered()
Send signal entered to state machine sequencer.
void directive_call_internalInterfaceInvoke(const Svc::FpySequencer_CallDirective &directive)
Internal interface base-class function for directive_call.
void directive_exit_internalInterfaceInvoke(const Svc::FpySequencer_ExitDirective &directive)
Internal interface base-class function for directive_exit.
Fw::ParamValid getParam_out(FwIndexType portNum, FwPrmIdType id, Fw::ParamBuffer &val)
Invoke output port getParam.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: PingPortAc.cpp:62
void directive_storeAbsConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreAbsConstOffsetDirective &directive)
Internal interface base-class function for directive_storeAbsConstOffset.
FpySequencerComponentBase::SmId getId() const
Get the state machine id.
pushes the current Fw.Time struct to the stack
void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase &filePath) const
Log event SequenceDone.
void directive_goto_internalInterfaceInvoke(const Svc::FpySequencer_GotoDirective &directive)
Internal interface base-class function for directive_goto.
The size of the serial representations of the port arguments.
static constexpr FwIndexType getNum_seqDoneOut_OutputPorts()
void directive_waitRel_internalInterfaceInvoke(const Svc::FpySequencer_WaitRelDirective &directive)
Internal interface base-class function for directive_waitRel.
virtual void directive_pushTlmValAndTime_internalInterfaceHandler(const Svc::FpySequencer_PushTlmValAndTimeDirective &directive)=0
Internal interface handler for directive_pushTlmValAndTime.
void directive_storeRel_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelDirective &directive)
Internal interface base-class function for directive_storeRel.
Message will return with status when space is unavailable.
Definition: Queue.hpp:48
virtual void directive_pushTlmVal_internalInterfaceHandler(const Svc::FpySequencer_PushTlmValDirective &directive)=0
Internal interface handler for directive_pushTlmVal.
Implementation of malloc based allocator.
void SET_BREAKPOINT_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void directive_loadRel_internalInterfaceInvoke(const Svc::FpySequencer_LoadRelDirective &directive)
Internal interface base-class function for directive_loadRel.
Auto-generated base for FpySequencer component.
static constexpr FwIndexType getNum_logOut_OutputPorts()
void sequencer_sendSignal_cmd_RUN(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_RUN to state machine sequencer.
void log_WARNING_HI_FileWriteError(FwSizeType writeSize, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileWriteError.
virtual void directive_storeAbsConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsConstOffsetDirective &directive)=0
Internal interface handler for directive_storeAbsConstOffset.
static constexpr SizeType BUFFER_SIZE(SizeType maxLength)
Get the size of a null-terminated string buffer.
void init()
Initialization function.
void checkTimers_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port checkTimers.
void init()
Initialization function.
The size of the serial representations of the port arguments.
static constexpr FwIndexType getNum_prmGet_OutputPorts()
pops a bool off the stack, sets a flag with a specific index to that bool
virtual void CANCEL_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CANCEL.
void tlmWrite_BreakOnlyOnceOnBreakpoint(bool arg, Fw::Time _tlmTime=Fw::Time())
bool isConnected_getTlmChan_OutputPort(FwIndexType portNum)
virtual SerializeStatus moveDeserToOffset(FwSizeType offset)=0
Move deserialization pointer to specified offset.
called when the statement is telling the sequencer to await a later stmt response ...
void log_WARNING_HI_WrongCmdResponseIndex(FwOpcodeType opcode, Fw::CmdResponse response, U16 actualCmdIdx, U16 expectedCmdIdx) const
Log event WrongCmdResponseIndex.
gets a flag and pushes its value as a U8 to the stack
FpySequencer_SequencerStateMachineStateMachineBase::Signal Signal
void tlmWrite_SequencesCancelled(U64 arg, Fw::Time _tlmTime=Fw::Time())
virtual void directive_loadAbs_internalInterfaceHandler(const Svc::FpySequencer_LoadAbsDirective &directive)=0
Internal interface handler for directive_loadAbs.
#define FW_ASSERT(...)
Definition: Assert.hpp:14
void tlmWrite_BreakpointInUse(bool arg, Fw::Time _tlmTime=Fw::Time())
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)
PlatformAssertArgType FwAssertArgType
The type of arguments to assert functions.
U32 StackSizeType
the type which everything referencing a size or offset on the stack is represented in ...
void addCallPort(InputCmdResponsePort *callPort)
Register an input port.
void lock()
lock the mutex and assert success
Definition: Mutex.cpp:34
bool paramGet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(Fw::ParamValid &valid)
void tlmWrite_BreakpointIndex(U32 arg, Fw::Time _tlmTime=Fw::Time())
SerializeStatus serializeTo(SerialBufferBase &buffer, Endianness mode=Endianness::BIG) const override
Serialize the contents of this object to a buffer.
#define U64(C)
Definition: sha.h:181
void tlmWrite_Debug_NextStatementReadSuccess(bool arg, Fw::Time _tlmTime=Fw::Time())
the default value of the EXIT_ON_CMD_FAIL sequence flag