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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE)));
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(static_cast<FwSizeType>(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  U32 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_NextStatementIndex) {
8291  // Check to see if value has changed. If not, don't write it.
8292  if (arg == this->m_last_Debug_NextStatementIndex) {
8293  return;
8294  }
8295  else {
8296  this->m_last_Debug_NextStatementIndex = arg;
8297  }
8298  }
8299  else {
8300  this->m_first_update_Debug_NextStatementIndex = false;
8301  this->m_last_Debug_NextStatementIndex = 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 
8322 
8323  this->m_tlmOut_OutputPort[0].invoke(
8324  _id,
8325  _tlmTime,
8326  _tlmBuff
8327  );
8328  }
8329  }
8330 
8333  FwOpcodeType arg,
8334  Fw::Time _tlmTime
8335  )
8336  {
8337  // Check to see if it is the first time
8338  if (not this->m_first_update_Debug_NextCmdOpcode) {
8339  // Check to see if value has changed. If not, don't write it.
8340  if (arg == this->m_last_Debug_NextCmdOpcode) {
8341  return;
8342  }
8343  else {
8344  this->m_last_Debug_NextCmdOpcode = arg;
8345  }
8346  }
8347  else {
8348  this->m_first_update_Debug_NextCmdOpcode = false;
8349  this->m_last_Debug_NextCmdOpcode = 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_NEXTCMDOPCODE;
8370 
8371  this->m_tlmOut_OutputPort[0].invoke(
8372  _id,
8373  _tlmTime,
8374  _tlmBuff
8375  );
8376  }
8377  }
8378 
8382  Fw::Time _tlmTime
8383  )
8384  {
8385  // Check to see if it is the first time
8386  if (not this->m_first_update_Debug_StackSize) {
8387  // Check to see if value has changed. If not, don't write it.
8388  if (arg == this->m_last_Debug_StackSize) {
8389  return;
8390  }
8391  else {
8392  this->m_last_Debug_StackSize = arg;
8393  }
8394  }
8395  else {
8396  this->m_first_update_Debug_StackSize = false;
8397  this->m_last_Debug_StackSize = 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_DEBUG_STACKSIZE;
8418 
8419  this->m_tlmOut_OutputPort[0].invoke(
8420  _id,
8421  _tlmTime,
8422  _tlmBuff
8423  );
8424  }
8425  }
8426 
8429  bool arg,
8430  Fw::Time _tlmTime
8431  )
8432  {
8433  // Check to see if it is the first time
8434  if (not this->m_first_update_BreakpointInUse) {
8435  // Check to see if value has changed. If not, don't write it.
8436  if (arg == this->m_last_BreakpointInUse) {
8437  return;
8438  }
8439  else {
8440  this->m_last_BreakpointInUse = arg;
8441  }
8442  }
8443  else {
8444  this->m_first_update_BreakpointInUse = false;
8445  this->m_last_BreakpointInUse = 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_BREAKPOINTINUSE;
8466 
8467  this->m_tlmOut_OutputPort[0].invoke(
8468  _id,
8469  _tlmTime,
8470  _tlmBuff
8471  );
8472  }
8473  }
8474 
8477  U32 arg,
8478  Fw::Time _tlmTime
8479  )
8480  {
8481  // Check to see if it is the first time
8482  if (not this->m_first_update_BreakpointIndex) {
8483  // Check to see if value has changed. If not, don't write it.
8484  if (arg == this->m_last_BreakpointIndex) {
8485  return;
8486  }
8487  else {
8488  this->m_last_BreakpointIndex = arg;
8489  }
8490  }
8491  else {
8492  this->m_first_update_BreakpointIndex = false;
8493  this->m_last_BreakpointIndex = 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 
8513  _id = this->getIdBase() + CHANNELID_BREAKPOINTINDEX;
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_BreakOnlyOnceOnBreakpoint) {
8531  // Check to see if value has changed. If not, don't write it.
8532  if (arg == this->m_last_BreakOnlyOnceOnBreakpoint) {
8533  return;
8534  }
8535  else {
8536  this->m_last_BreakOnlyOnceOnBreakpoint = arg;
8537  }
8538  }
8539  else {
8540  this->m_first_update_BreakOnlyOnceOnBreakpoint = false;
8541  this->m_last_BreakOnlyOnceOnBreakpoint = 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 
8562 
8563  this->m_tlmOut_OutputPort[0].invoke(
8564  _id,
8565  _tlmTime,
8566  _tlmBuff
8567  );
8568  }
8569  }
8570 
8573  bool arg,
8574  Fw::Time _tlmTime
8575  )
8576  {
8577  // Check to see if it is the first time
8578  if (not this->m_first_update_BreakBeforeNextLine) {
8579  // Check to see if value has changed. If not, don't write it.
8580  if (arg == this->m_last_BreakBeforeNextLine) {
8581  return;
8582  }
8583  else {
8584  this->m_last_BreakBeforeNextLine = arg;
8585  }
8586  }
8587  else {
8588  this->m_first_update_BreakBeforeNextLine = false;
8589  this->m_last_BreakBeforeNextLine = 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 
8609  _id = this->getIdBase() + CHANNELID_BREAKBEFORENEXTLINE;
8610 
8611  this->m_tlmOut_OutputPort[0].invoke(
8612  _id,
8613  _tlmTime,
8614  _tlmBuff
8615  );
8616  }
8617  }
8618 
8621  F32 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_STATEMENT_TIMEOUT_SECS) {
8627  // Check to see if value has changed. If not, don't write it.
8628  if (arg == this->m_last_PRM_STATEMENT_TIMEOUT_SECS) {
8629  return;
8630  }
8631  else {
8632  this->m_last_PRM_STATEMENT_TIMEOUT_SECS = arg;
8633  }
8634  }
8635  else {
8636  this->m_first_update_PRM_STATEMENT_TIMEOUT_SECS = false;
8637  this->m_last_PRM_STATEMENT_TIMEOUT_SECS = 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 
8669  bool arg,
8670  Fw::Time _tlmTime
8671  )
8672  {
8673  // Check to see if it is the first time
8674  if (not this->m_first_update_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL) {
8675  // Check to see if value has changed. If not, don't write it.
8676  if (arg == this->m_last_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL) {
8677  return;
8678  }
8679  else {
8680  this->m_last_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = arg;
8681  }
8682  }
8683  else {
8684  this->m_first_update_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = false;
8685  this->m_last_PRM_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = arg;
8686  }
8687 
8688  if (this->m_tlmOut_OutputPort[0].isConnected()) {
8689  if (
8690  this->m_timeCaller_OutputPort[0].isConnected() &&
8691  (_tlmTime == Fw::ZERO_TIME)
8692  ) {
8693  this->m_timeCaller_OutputPort[0].invoke(_tlmTime);
8694  }
8695 
8696  Fw::TlmBuffer _tlmBuff;
8697  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8698  FW_ASSERT(
8699  _stat == Fw::FW_SERIALIZE_OK,
8700  static_cast<FwAssertArgType>(_stat)
8701  );
8702 
8703  FwChanIdType _id;
8704 
8706 
8707  this->m_tlmOut_OutputPort[0].invoke(
8708  _id,
8709  _tlmTime,
8710  _tlmBuff
8711  );
8712  }
8713  }
8714 
8715  // ----------------------------------------------------------------------
8716  // Parameter update hook
8717  // ----------------------------------------------------------------------
8718 
8721  {
8722  // Do nothing by default
8723  }
8724 
8727  {
8728  // Do nothing by default
8729  }
8730 
8731  // ----------------------------------------------------------------------
8732  // Parameter get functions
8733  // ----------------------------------------------------------------------
8734 
8737  {
8738  F32 _local{};
8739  this->m_paramLock.lock();
8740  valid = this->m_param_STATEMENT_TIMEOUT_SECS_valid;
8741  _local = this->m_STATEMENT_TIMEOUT_SECS;
8742  this->m_paramLock.unLock();
8743  return _local;
8744  }
8745 
8748  {
8749  bool _local{};
8750  this->m_paramLock.lock();
8751  valid = this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid;
8752  _local = this->m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL;
8753  this->m_paramLock.unLock();
8754  return _local;
8755  }
8756 
8757  // ----------------------------------------------------------------------
8758  // Time
8759  // ----------------------------------------------------------------------
8760 
8762  getTime() const
8763  {
8764  if (this->m_timeCaller_OutputPort[0].isConnected()) {
8765  Fw::Time _time;
8766  this->m_timeCaller_OutputPort[0].invoke(_time);
8767  return _time;
8768  }
8769  else {
8770  return Fw::Time(TimeBase::TB_NONE, 0, 0);
8771  }
8772  }
8773 
8774  // ----------------------------------------------------------------------
8775  // Message dispatch functions
8776  // ----------------------------------------------------------------------
8777 
8778  Fw::QueuedComponentBase::MsgDispatchStatus FpySequencerComponentBase ::
8779  doDispatch()
8780  {
8781  ComponentIpcSerializableBuffer _msg;
8782  FwQueuePriorityType _priority = 0;
8783 
8784  Os::Queue::Status _msgStatus = this->m_queue.receive(
8785  _msg,
8787  _priority
8788  );
8789  FW_ASSERT(
8790  _msgStatus == Os::Queue::OP_OK,
8791  static_cast<FwAssertArgType>(_msgStatus)
8792  );
8793 
8794  // Reset to beginning of buffer
8795  _msg.resetDeser();
8796 
8797  FwEnumStoreType _desMsg = 0;
8798  Fw::SerializeStatus _deserStatus = _msg.deserializeTo(_desMsg);
8799  FW_ASSERT(
8800  _deserStatus == Fw::FW_SERIALIZE_OK,
8801  static_cast<FwAssertArgType>(_deserStatus)
8802  );
8803 
8804  MsgTypeEnum _msgType = static_cast<MsgTypeEnum>(_desMsg);
8805 
8806  if (_msgType == FPYSEQUENCER_COMPONENT_EXIT) {
8807  return MSG_DISPATCH_EXIT;
8808  }
8809 
8810  FwIndexType portNum = 0;
8811  _deserStatus = _msg.deserializeTo(portNum);
8812  FW_ASSERT(
8813  _deserStatus == Fw::FW_SERIALIZE_OK,
8814  static_cast<FwAssertArgType>(_deserStatus)
8815  );
8816 
8817  switch (_msgType) {
8818  // Handle async input port checkTimers
8819  case CHECKTIMERS_SCHED: {
8820  // Deserialize argument context
8821  U32 context;
8822  _deserStatus = _msg.deserializeTo(context);
8823  FW_ASSERT(
8824  _deserStatus == Fw::FW_SERIALIZE_OK,
8825  static_cast<FwAssertArgType>(_deserStatus)
8826  );
8827  // Call handler function
8828  this->checkTimers_handler(
8829  portNum,
8830  context
8831  );
8832 
8833  break;
8834  }
8835 
8836  // Handle async input port cmdResponseIn
8837  case CMDRESPONSEIN_CMDRESPONSE: {
8838  // Deserialize argument opCode
8839  FwOpcodeType opCode;
8840  _deserStatus = _msg.deserializeTo(opCode);
8841  FW_ASSERT(
8842  _deserStatus == Fw::FW_SERIALIZE_OK,
8843  static_cast<FwAssertArgType>(_deserStatus)
8844  );
8845 
8846  // Deserialize argument cmdSeq
8847  U32 cmdSeq;
8848  _deserStatus = _msg.deserializeTo(cmdSeq);
8849  FW_ASSERT(
8850  _deserStatus == Fw::FW_SERIALIZE_OK,
8851  static_cast<FwAssertArgType>(_deserStatus)
8852  );
8853 
8854  // Deserialize argument response
8855  Fw::CmdResponse response;
8856  _deserStatus = _msg.deserializeTo(response);
8857  FW_ASSERT(
8858  _deserStatus == Fw::FW_SERIALIZE_OK,
8859  static_cast<FwAssertArgType>(_deserStatus)
8860  );
8861  // Call handler function
8862  this->cmdResponseIn_handler(
8863  portNum,
8864  opCode,
8865  cmdSeq,
8866  response
8867  );
8868 
8869  break;
8870  }
8871 
8872  // Handle async input port pingIn
8873  case PINGIN_PING: {
8874  // Deserialize argument key
8875  U32 key;
8876  _deserStatus = _msg.deserializeTo(key);
8877  FW_ASSERT(
8878  _deserStatus == Fw::FW_SERIALIZE_OK,
8879  static_cast<FwAssertArgType>(_deserStatus)
8880  );
8881  // Call handler function
8882  this->pingIn_handler(
8883  portNum,
8884  key
8885  );
8886 
8887  break;
8888  }
8889 
8890  // Handle async input port seqRunIn
8891  case SEQRUNIN_CMDSEQIN: {
8892  // Deserialize argument filename
8893  char __fprime_ac_filename_buffer[Fw::StringBase::BUFFER_SIZE(240)];
8894  Fw::ExternalString filename(__fprime_ac_filename_buffer, sizeof __fprime_ac_filename_buffer);
8895  _deserStatus = _msg.deserializeTo(filename);
8896  FW_ASSERT(
8897  _deserStatus == Fw::FW_SERIALIZE_OK,
8898  static_cast<FwAssertArgType>(_deserStatus)
8899  );
8900  // Call handler function
8901  this->seqRunIn_handler(
8902  portNum,
8903  filename
8904  );
8905 
8906  break;
8907  }
8908 
8909  // Handle async input port tlmWrite
8910  case TLMWRITE_SCHED: {
8911  // Deserialize argument context
8912  U32 context;
8913  _deserStatus = _msg.deserializeTo(context);
8914  FW_ASSERT(
8915  _deserStatus == Fw::FW_SERIALIZE_OK,
8916  static_cast<FwAssertArgType>(_deserStatus)
8917  );
8918  // Call handler function
8919  this->tlmWrite_handler(
8920  portNum,
8921  context
8922  );
8923 
8924  break;
8925  }
8926 
8927  // Handle command RUN
8928  case CMD_RUN: {
8929  // Deserialize opcode
8930  FwOpcodeType _opCode = 0;
8931  _deserStatus = _msg.deserializeTo(_opCode);
8932  FW_ASSERT (
8933  _deserStatus == Fw::FW_SERIALIZE_OK,
8934  static_cast<FwAssertArgType>(_deserStatus)
8935  );
8936 
8937  // Deserialize command sequence
8938  U32 _cmdSeq = 0;
8939  _deserStatus = _msg.deserializeTo(_cmdSeq);
8940  FW_ASSERT (
8941  _deserStatus == Fw::FW_SERIALIZE_OK,
8942  static_cast<FwAssertArgType>(_deserStatus)
8943  );
8944 
8945  // Deserialize command argument buffer
8946  Fw::CmdArgBuffer args;
8947  _deserStatus = _msg.deserializeTo(args);
8948  FW_ASSERT (
8949  _deserStatus == Fw::FW_SERIALIZE_OK,
8950  static_cast<FwAssertArgType>(_deserStatus)
8951  );
8952 
8953  // Reset buffer
8954  args.resetDeser();
8955 
8956  // Deserialize argument fileName
8957  Fw::CmdStringArg fileName;
8958  _deserStatus = args.deserializeTo(fileName);
8959  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
8960  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
8961  this->cmdResponse_out(
8962  _opCode,
8963  _cmdSeq,
8965  );
8966  }
8967  // Don't crash the task if bad arguments were passed from the ground
8968  break;
8969  }
8970 
8971  // Deserialize argument block
8973  _deserStatus = args.deserializeTo(block);
8974  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
8975  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
8976  this->cmdResponse_out(
8977  _opCode,
8978  _cmdSeq,
8980  );
8981  }
8982  // Don't crash the task if bad arguments were passed from the ground
8983  break;
8984  }
8985 
8986  // Make sure there was no data left over.
8987  // That means the argument buffer size was incorrect.
8988 #if FW_CMD_CHECK_RESIDUAL
8989  if (args.getDeserializeSizeLeft() != 0) {
8990  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
8991  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
8992  }
8993  // Don't crash the task if bad arguments were passed from the ground
8994  break;
8995  }
8996 #endif
8997 
8998  // Call handler function
8999  this->RUN_cmdHandler(
9000  _opCode, _cmdSeq,
9001  fileName,
9002  block
9003  );
9004 
9005  break;
9006  }
9007 
9008  // Handle command VALIDATE
9009  case CMD_VALIDATE: {
9010  // Deserialize opcode
9011  FwOpcodeType _opCode = 0;
9012  _deserStatus = _msg.deserializeTo(_opCode);
9013  FW_ASSERT (
9014  _deserStatus == Fw::FW_SERIALIZE_OK,
9015  static_cast<FwAssertArgType>(_deserStatus)
9016  );
9017 
9018  // Deserialize command sequence
9019  U32 _cmdSeq = 0;
9020  _deserStatus = _msg.deserializeTo(_cmdSeq);
9021  FW_ASSERT (
9022  _deserStatus == Fw::FW_SERIALIZE_OK,
9023  static_cast<FwAssertArgType>(_deserStatus)
9024  );
9025 
9026  // Deserialize command argument buffer
9027  Fw::CmdArgBuffer args;
9028  _deserStatus = _msg.deserializeTo(args);
9029  FW_ASSERT (
9030  _deserStatus == Fw::FW_SERIALIZE_OK,
9031  static_cast<FwAssertArgType>(_deserStatus)
9032  );
9033 
9034  // Reset buffer
9035  args.resetDeser();
9036 
9037  // Deserialize argument fileName
9038  Fw::CmdStringArg fileName;
9039  _deserStatus = args.deserializeTo(fileName);
9040  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9041  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9042  this->cmdResponse_out(
9043  _opCode,
9044  _cmdSeq,
9046  );
9047  }
9048  // Don't crash the task if bad arguments were passed from the ground
9049  break;
9050  }
9051 
9052  // Make sure there was no data left over.
9053  // That means the argument buffer size was incorrect.
9054 #if FW_CMD_CHECK_RESIDUAL
9055  if (args.getDeserializeSizeLeft() != 0) {
9056  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9057  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9058  }
9059  // Don't crash the task if bad arguments were passed from the ground
9060  break;
9061  }
9062 #endif
9063 
9064  // Call handler function
9065  this->VALIDATE_cmdHandler(
9066  _opCode, _cmdSeq,
9067  fileName
9068  );
9069 
9070  break;
9071  }
9072 
9073  // Handle command RUN_VALIDATED
9074  case CMD_RUN_VALIDATED: {
9075  // Deserialize opcode
9076  FwOpcodeType _opCode = 0;
9077  _deserStatus = _msg.deserializeTo(_opCode);
9078  FW_ASSERT (
9079  _deserStatus == Fw::FW_SERIALIZE_OK,
9080  static_cast<FwAssertArgType>(_deserStatus)
9081  );
9082 
9083  // Deserialize command sequence
9084  U32 _cmdSeq = 0;
9085  _deserStatus = _msg.deserializeTo(_cmdSeq);
9086  FW_ASSERT (
9087  _deserStatus == Fw::FW_SERIALIZE_OK,
9088  static_cast<FwAssertArgType>(_deserStatus)
9089  );
9090 
9091  // Deserialize command argument buffer
9092  Fw::CmdArgBuffer args;
9093  _deserStatus = _msg.deserializeTo(args);
9094  FW_ASSERT (
9095  _deserStatus == Fw::FW_SERIALIZE_OK,
9096  static_cast<FwAssertArgType>(_deserStatus)
9097  );
9098 
9099  // Reset buffer
9100  args.resetDeser();
9101 
9102  // Deserialize argument block
9104  _deserStatus = args.deserializeTo(block);
9105  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9106  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9107  this->cmdResponse_out(
9108  _opCode,
9109  _cmdSeq,
9111  );
9112  }
9113  // Don't crash the task if bad arguments were passed from the ground
9114  break;
9115  }
9116 
9117  // Make sure there was no data left over.
9118  // That means the argument buffer size was incorrect.
9119 #if FW_CMD_CHECK_RESIDUAL
9120  if (args.getDeserializeSizeLeft() != 0) {
9121  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9122  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9123  }
9124  // Don't crash the task if bad arguments were passed from the ground
9125  break;
9126  }
9127 #endif
9128 
9129  // Call handler function
9131  _opCode, _cmdSeq,
9132  block
9133  );
9134 
9135  break;
9136  }
9137 
9138  // Handle command CANCEL
9139  case CMD_CANCEL: {
9140  // Deserialize opcode
9141  FwOpcodeType _opCode = 0;
9142  _deserStatus = _msg.deserializeTo(_opCode);
9143  FW_ASSERT (
9144  _deserStatus == Fw::FW_SERIALIZE_OK,
9145  static_cast<FwAssertArgType>(_deserStatus)
9146  );
9147 
9148  // Deserialize command sequence
9149  U32 _cmdSeq = 0;
9150  _deserStatus = _msg.deserializeTo(_cmdSeq);
9151  FW_ASSERT (
9152  _deserStatus == Fw::FW_SERIALIZE_OK,
9153  static_cast<FwAssertArgType>(_deserStatus)
9154  );
9155 
9156  // Deserialize command argument buffer
9157  Fw::CmdArgBuffer args;
9158  _deserStatus = _msg.deserializeTo(args);
9159  FW_ASSERT (
9160  _deserStatus == Fw::FW_SERIALIZE_OK,
9161  static_cast<FwAssertArgType>(_deserStatus)
9162  );
9163 
9164  // Reset buffer
9165  args.resetDeser();
9166 
9167  // Make sure there was no data left over.
9168  // That means the argument buffer size was incorrect.
9169 #if FW_CMD_CHECK_RESIDUAL
9170  if (args.getDeserializeSizeLeft() != 0) {
9171  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9172  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9173  }
9174  // Don't crash the task if bad arguments were passed from the ground
9175  break;
9176  }
9177 #endif
9178 
9179  // Call handler function
9180  this->CANCEL_cmdHandler(_opCode, _cmdSeq);
9181 
9182  break;
9183  }
9184 
9185  // Handle command SET_BREAKPOINT
9186  case CMD_SET_BREAKPOINT: {
9187  // Deserialize opcode
9188  FwOpcodeType _opCode = 0;
9189  _deserStatus = _msg.deserializeTo(_opCode);
9190  FW_ASSERT (
9191  _deserStatus == Fw::FW_SERIALIZE_OK,
9192  static_cast<FwAssertArgType>(_deserStatus)
9193  );
9194 
9195  // Deserialize command sequence
9196  U32 _cmdSeq = 0;
9197  _deserStatus = _msg.deserializeTo(_cmdSeq);
9198  FW_ASSERT (
9199  _deserStatus == Fw::FW_SERIALIZE_OK,
9200  static_cast<FwAssertArgType>(_deserStatus)
9201  );
9202 
9203  // Deserialize command argument buffer
9204  Fw::CmdArgBuffer args;
9205  _deserStatus = _msg.deserializeTo(args);
9206  FW_ASSERT (
9207  _deserStatus == Fw::FW_SERIALIZE_OK,
9208  static_cast<FwAssertArgType>(_deserStatus)
9209  );
9210 
9211  // Reset buffer
9212  args.resetDeser();
9213 
9214  // Deserialize argument stmtIdx
9215  U32 stmtIdx;
9216  _deserStatus = args.deserializeTo(stmtIdx);
9217  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9218  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9219  this->cmdResponse_out(
9220  _opCode,
9221  _cmdSeq,
9223  );
9224  }
9225  // Don't crash the task if bad arguments were passed from the ground
9226  break;
9227  }
9228 
9229  // Deserialize argument breakOnce
9230  bool breakOnce;
9231  _deserStatus = args.deserializeTo(breakOnce);
9232  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9233  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9234  this->cmdResponse_out(
9235  _opCode,
9236  _cmdSeq,
9238  );
9239  }
9240  // Don't crash the task if bad arguments were passed from the ground
9241  break;
9242  }
9243 
9244  // Make sure there was no data left over.
9245  // That means the argument buffer size was incorrect.
9246 #if FW_CMD_CHECK_RESIDUAL
9247  if (args.getDeserializeSizeLeft() != 0) {
9248  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9249  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9250  }
9251  // Don't crash the task if bad arguments were passed from the ground
9252  break;
9253  }
9254 #endif
9255 
9256  // Call handler function
9258  _opCode, _cmdSeq,
9259  stmtIdx,
9260  breakOnce
9261  );
9262 
9263  break;
9264  }
9265 
9266  // Handle command BREAK
9267  case CMD_BREAK: {
9268  // Deserialize opcode
9269  FwOpcodeType _opCode = 0;
9270  _deserStatus = _msg.deserializeTo(_opCode);
9271  FW_ASSERT (
9272  _deserStatus == Fw::FW_SERIALIZE_OK,
9273  static_cast<FwAssertArgType>(_deserStatus)
9274  );
9275 
9276  // Deserialize command sequence
9277  U32 _cmdSeq = 0;
9278  _deserStatus = _msg.deserializeTo(_cmdSeq);
9279  FW_ASSERT (
9280  _deserStatus == Fw::FW_SERIALIZE_OK,
9281  static_cast<FwAssertArgType>(_deserStatus)
9282  );
9283 
9284  // Deserialize command argument buffer
9285  Fw::CmdArgBuffer args;
9286  _deserStatus = _msg.deserializeTo(args);
9287  FW_ASSERT (
9288  _deserStatus == Fw::FW_SERIALIZE_OK,
9289  static_cast<FwAssertArgType>(_deserStatus)
9290  );
9291 
9292  // Reset buffer
9293  args.resetDeser();
9294 
9295  // Make sure there was no data left over.
9296  // That means the argument buffer size was incorrect.
9297 #if FW_CMD_CHECK_RESIDUAL
9298  if (args.getDeserializeSizeLeft() != 0) {
9299  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9300  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9301  }
9302  // Don't crash the task if bad arguments were passed from the ground
9303  break;
9304  }
9305 #endif
9306 
9307  // Call handler function
9308  this->BREAK_cmdHandler(_opCode, _cmdSeq);
9309 
9310  break;
9311  }
9312 
9313  // Handle command CONTINUE
9314  case CMD_CONTINUE: {
9315  // Deserialize opcode
9316  FwOpcodeType _opCode = 0;
9317  _deserStatus = _msg.deserializeTo(_opCode);
9318  FW_ASSERT (
9319  _deserStatus == Fw::FW_SERIALIZE_OK,
9320  static_cast<FwAssertArgType>(_deserStatus)
9321  );
9322 
9323  // Deserialize command sequence
9324  U32 _cmdSeq = 0;
9325  _deserStatus = _msg.deserializeTo(_cmdSeq);
9326  FW_ASSERT (
9327  _deserStatus == Fw::FW_SERIALIZE_OK,
9328  static_cast<FwAssertArgType>(_deserStatus)
9329  );
9330 
9331  // Deserialize command argument buffer
9332  Fw::CmdArgBuffer args;
9333  _deserStatus = _msg.deserializeTo(args);
9334  FW_ASSERT (
9335  _deserStatus == Fw::FW_SERIALIZE_OK,
9336  static_cast<FwAssertArgType>(_deserStatus)
9337  );
9338 
9339  // Reset buffer
9340  args.resetDeser();
9341 
9342  // Make sure there was no data left over.
9343  // That means the argument buffer size was incorrect.
9344 #if FW_CMD_CHECK_RESIDUAL
9345  if (args.getDeserializeSizeLeft() != 0) {
9346  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9347  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9348  }
9349  // Don't crash the task if bad arguments were passed from the ground
9350  break;
9351  }
9352 #endif
9353 
9354  // Call handler function
9355  this->CONTINUE_cmdHandler(_opCode, _cmdSeq);
9356 
9357  break;
9358  }
9359 
9360  // Handle command CLEAR_BREAKPOINT
9361  case CMD_CLEAR_BREAKPOINT: {
9362  // Deserialize opcode
9363  FwOpcodeType _opCode = 0;
9364  _deserStatus = _msg.deserializeTo(_opCode);
9365  FW_ASSERT (
9366  _deserStatus == Fw::FW_SERIALIZE_OK,
9367  static_cast<FwAssertArgType>(_deserStatus)
9368  );
9369 
9370  // Deserialize command sequence
9371  U32 _cmdSeq = 0;
9372  _deserStatus = _msg.deserializeTo(_cmdSeq);
9373  FW_ASSERT (
9374  _deserStatus == Fw::FW_SERIALIZE_OK,
9375  static_cast<FwAssertArgType>(_deserStatus)
9376  );
9377 
9378  // Deserialize command argument buffer
9379  Fw::CmdArgBuffer args;
9380  _deserStatus = _msg.deserializeTo(args);
9381  FW_ASSERT (
9382  _deserStatus == Fw::FW_SERIALIZE_OK,
9383  static_cast<FwAssertArgType>(_deserStatus)
9384  );
9385 
9386  // Reset buffer
9387  args.resetDeser();
9388 
9389  // Make sure there was no data left over.
9390  // That means the argument buffer size was incorrect.
9391 #if FW_CMD_CHECK_RESIDUAL
9392  if (args.getDeserializeSizeLeft() != 0) {
9393  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9394  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9395  }
9396  // Don't crash the task if bad arguments were passed from the ground
9397  break;
9398  }
9399 #endif
9400 
9401  // Call handler function
9402  this->CLEAR_BREAKPOINT_cmdHandler(_opCode, _cmdSeq);
9403 
9404  break;
9405  }
9406 
9407  // Handle command STEP
9408  case CMD_STEP: {
9409  // Deserialize opcode
9410  FwOpcodeType _opCode = 0;
9411  _deserStatus = _msg.deserializeTo(_opCode);
9412  FW_ASSERT (
9413  _deserStatus == Fw::FW_SERIALIZE_OK,
9414  static_cast<FwAssertArgType>(_deserStatus)
9415  );
9416 
9417  // Deserialize command sequence
9418  U32 _cmdSeq = 0;
9419  _deserStatus = _msg.deserializeTo(_cmdSeq);
9420  FW_ASSERT (
9421  _deserStatus == Fw::FW_SERIALIZE_OK,
9422  static_cast<FwAssertArgType>(_deserStatus)
9423  );
9424 
9425  // Deserialize command argument buffer
9426  Fw::CmdArgBuffer args;
9427  _deserStatus = _msg.deserializeTo(args);
9428  FW_ASSERT (
9429  _deserStatus == Fw::FW_SERIALIZE_OK,
9430  static_cast<FwAssertArgType>(_deserStatus)
9431  );
9432 
9433  // Reset buffer
9434  args.resetDeser();
9435 
9436  // Make sure there was no data left over.
9437  // That means the argument buffer size was incorrect.
9438 #if FW_CMD_CHECK_RESIDUAL
9439  if (args.getDeserializeSizeLeft() != 0) {
9440  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9441  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9442  }
9443  // Don't crash the task if bad arguments were passed from the ground
9444  break;
9445  }
9446 #endif
9447 
9448  // Call handler function
9449  this->STEP_cmdHandler(_opCode, _cmdSeq);
9450 
9451  break;
9452  }
9453 
9454  // Handle command SET_FLAG
9455  case CMD_SET_FLAG: {
9456  // Deserialize opcode
9457  FwOpcodeType _opCode = 0;
9458  _deserStatus = _msg.deserializeTo(_opCode);
9459  FW_ASSERT (
9460  _deserStatus == Fw::FW_SERIALIZE_OK,
9461  static_cast<FwAssertArgType>(_deserStatus)
9462  );
9463 
9464  // Deserialize command sequence
9465  U32 _cmdSeq = 0;
9466  _deserStatus = _msg.deserializeTo(_cmdSeq);
9467  FW_ASSERT (
9468  _deserStatus == Fw::FW_SERIALIZE_OK,
9469  static_cast<FwAssertArgType>(_deserStatus)
9470  );
9471 
9472  // Deserialize command argument buffer
9473  Fw::CmdArgBuffer args;
9474  _deserStatus = _msg.deserializeTo(args);
9475  FW_ASSERT (
9476  _deserStatus == Fw::FW_SERIALIZE_OK,
9477  static_cast<FwAssertArgType>(_deserStatus)
9478  );
9479 
9480  // Reset buffer
9481  args.resetDeser();
9482 
9483  // Deserialize argument flag
9484  Svc::Fpy::FlagId flag;
9485  _deserStatus = args.deserializeTo(flag);
9486  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9487  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9488  this->cmdResponse_out(
9489  _opCode,
9490  _cmdSeq,
9492  );
9493  }
9494  // Don't crash the task if bad arguments were passed from the ground
9495  break;
9496  }
9497 
9498  // Deserialize argument value
9499  bool value;
9500  _deserStatus = args.deserializeTo(value);
9501  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9502  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9503  this->cmdResponse_out(
9504  _opCode,
9505  _cmdSeq,
9507  );
9508  }
9509  // Don't crash the task if bad arguments were passed from the ground
9510  break;
9511  }
9512 
9513  // Make sure there was no data left over.
9514  // That means the argument buffer size was incorrect.
9515 #if FW_CMD_CHECK_RESIDUAL
9516  if (args.getDeserializeSizeLeft() != 0) {
9517  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9518  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9519  }
9520  // Don't crash the task if bad arguments were passed from the ground
9521  break;
9522  }
9523 #endif
9524 
9525  // Call handler function
9526  this->SET_FLAG_cmdHandler(
9527  _opCode, _cmdSeq,
9528  flag,
9529  value
9530  );
9531 
9532  break;
9533  }
9534 
9535  // Handle command DUMP_STACK_TO_FILE
9536  case CMD_DUMP_STACK_TO_FILE: {
9537  // Deserialize opcode
9538  FwOpcodeType _opCode = 0;
9539  _deserStatus = _msg.deserializeTo(_opCode);
9540  FW_ASSERT (
9541  _deserStatus == Fw::FW_SERIALIZE_OK,
9542  static_cast<FwAssertArgType>(_deserStatus)
9543  );
9544 
9545  // Deserialize command sequence
9546  U32 _cmdSeq = 0;
9547  _deserStatus = _msg.deserializeTo(_cmdSeq);
9548  FW_ASSERT (
9549  _deserStatus == Fw::FW_SERIALIZE_OK,
9550  static_cast<FwAssertArgType>(_deserStatus)
9551  );
9552 
9553  // Deserialize command argument buffer
9554  Fw::CmdArgBuffer args;
9555  _deserStatus = _msg.deserializeTo(args);
9556  FW_ASSERT (
9557  _deserStatus == Fw::FW_SERIALIZE_OK,
9558  static_cast<FwAssertArgType>(_deserStatus)
9559  );
9560 
9561  // Reset buffer
9562  args.resetDeser();
9563 
9564  // Deserialize argument fileName
9565  Fw::CmdStringArg fileName;
9566  _deserStatus = args.deserializeTo(fileName);
9567  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9568  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9569  this->cmdResponse_out(
9570  _opCode,
9571  _cmdSeq,
9573  );
9574  }
9575  // Don't crash the task if bad arguments were passed from the ground
9576  break;
9577  }
9578 
9579  // Make sure there was no data left over.
9580  // That means the argument buffer size was incorrect.
9581 #if FW_CMD_CHECK_RESIDUAL
9582  if (args.getDeserializeSizeLeft() != 0) {
9583  if (this->m_cmdResponseOut_OutputPort[0].isConnected()) {
9584  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9585  }
9586  // Don't crash the task if bad arguments were passed from the ground
9587  break;
9588  }
9589 #endif
9590 
9591  // Call handler function
9593  _opCode, _cmdSeq,
9594  fileName
9595  );
9596 
9597  break;
9598  }
9599 
9600  // Handle internal interface directive_allocate
9601  case INT_IF_DIRECTIVE_ALLOCATE: {
9603  _deserStatus = _msg.deserializeTo(directive);
9604 
9605  // Internal interface should always deserialize
9606  FW_ASSERT(
9607  Fw::FW_SERIALIZE_OK == _deserStatus,
9608  static_cast<FwAssertArgType>(_deserStatus)
9609  );
9610 
9611  // Make sure there was no data left over.
9612  // That means the buffer size was incorrect.
9613  FW_ASSERT(
9614  _msg.getDeserializeSizeLeft() == 0,
9615  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9616  );
9617 
9618  // Call handler function
9620  directive
9621  );
9622 
9623  break;
9624  }
9625 
9626  // Handle internal interface directive_call
9627  case INT_IF_DIRECTIVE_CALL: {
9629  _deserStatus = _msg.deserializeTo(directive);
9630 
9631  // Internal interface should always deserialize
9632  FW_ASSERT(
9633  Fw::FW_SERIALIZE_OK == _deserStatus,
9634  static_cast<FwAssertArgType>(_deserStatus)
9635  );
9636 
9637  // Make sure there was no data left over.
9638  // That means the buffer size was incorrect.
9639  FW_ASSERT(
9640  _msg.getDeserializeSizeLeft() == 0,
9641  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9642  );
9643 
9644  // Call handler function
9646  directive
9647  );
9648 
9649  break;
9650  }
9651 
9652  // Handle internal interface directive_constCmd
9653  case INT_IF_DIRECTIVE_CONSTCMD: {
9655  _deserStatus = _msg.deserializeTo(directive);
9656 
9657  // Internal interface should always deserialize
9658  FW_ASSERT(
9659  Fw::FW_SERIALIZE_OK == _deserStatus,
9660  static_cast<FwAssertArgType>(_deserStatus)
9661  );
9662 
9663  // Make sure there was no data left over.
9664  // That means the buffer size was incorrect.
9665  FW_ASSERT(
9666  _msg.getDeserializeSizeLeft() == 0,
9667  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9668  );
9669 
9670  // Call handler function
9672  directive
9673  );
9674 
9675  break;
9676  }
9677 
9678  // Handle internal interface directive_discard
9679  case INT_IF_DIRECTIVE_DISCARD: {
9681  _deserStatus = _msg.deserializeTo(directive);
9682 
9683  // Internal interface should always deserialize
9684  FW_ASSERT(
9685  Fw::FW_SERIALIZE_OK == _deserStatus,
9686  static_cast<FwAssertArgType>(_deserStatus)
9687  );
9688 
9689  // Make sure there was no data left over.
9690  // That means the buffer size was incorrect.
9691  FW_ASSERT(
9692  _msg.getDeserializeSizeLeft() == 0,
9693  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9694  );
9695 
9696  // Call handler function
9698  directive
9699  );
9700 
9701  break;
9702  }
9703 
9704  // Handle internal interface directive_exit
9705  case INT_IF_DIRECTIVE_EXIT: {
9707  _deserStatus = _msg.deserializeTo(directive);
9708 
9709  // Internal interface should always deserialize
9710  FW_ASSERT(
9711  Fw::FW_SERIALIZE_OK == _deserStatus,
9712  static_cast<FwAssertArgType>(_deserStatus)
9713  );
9714 
9715  // Make sure there was no data left over.
9716  // That means the buffer size was incorrect.
9717  FW_ASSERT(
9718  _msg.getDeserializeSizeLeft() == 0,
9719  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9720  );
9721 
9722  // Call handler function
9724  directive
9725  );
9726 
9727  break;
9728  }
9729 
9730  // Handle internal interface directive_getField
9731  case INT_IF_DIRECTIVE_GETFIELD: {
9733  _deserStatus = _msg.deserializeTo(directive);
9734 
9735  // Internal interface should always deserialize
9736  FW_ASSERT(
9737  Fw::FW_SERIALIZE_OK == _deserStatus,
9738  static_cast<FwAssertArgType>(_deserStatus)
9739  );
9740 
9741  // Make sure there was no data left over.
9742  // That means the buffer size was incorrect.
9743  FW_ASSERT(
9744  _msg.getDeserializeSizeLeft() == 0,
9745  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9746  );
9747 
9748  // Call handler function
9750  directive
9751  );
9752 
9753  break;
9754  }
9755 
9756  // Handle internal interface directive_getFlag
9757  case INT_IF_DIRECTIVE_GETFLAG: {
9759  _deserStatus = _msg.deserializeTo(directive);
9760 
9761  // Internal interface should always deserialize
9762  FW_ASSERT(
9763  Fw::FW_SERIALIZE_OK == _deserStatus,
9764  static_cast<FwAssertArgType>(_deserStatus)
9765  );
9766 
9767  // Make sure there was no data left over.
9768  // That means the buffer size was incorrect.
9769  FW_ASSERT(
9770  _msg.getDeserializeSizeLeft() == 0,
9771  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9772  );
9773 
9774  // Call handler function
9776  directive
9777  );
9778 
9779  break;
9780  }
9781 
9782  // Handle internal interface directive_goto
9783  case INT_IF_DIRECTIVE_GOTO: {
9785  _deserStatus = _msg.deserializeTo(directive);
9786 
9787  // Internal interface should always deserialize
9788  FW_ASSERT(
9789  Fw::FW_SERIALIZE_OK == _deserStatus,
9790  static_cast<FwAssertArgType>(_deserStatus)
9791  );
9792 
9793  // Make sure there was no data left over.
9794  // That means the buffer size was incorrect.
9795  FW_ASSERT(
9796  _msg.getDeserializeSizeLeft() == 0,
9797  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9798  );
9799 
9800  // Call handler function
9802  directive
9803  );
9804 
9805  break;
9806  }
9807 
9808  // Handle internal interface directive_if
9809  case INT_IF_DIRECTIVE_IF: {
9811  _deserStatus = _msg.deserializeTo(directive);
9812 
9813  // Internal interface should always deserialize
9814  FW_ASSERT(
9815  Fw::FW_SERIALIZE_OK == _deserStatus,
9816  static_cast<FwAssertArgType>(_deserStatus)
9817  );
9818 
9819  // Make sure there was no data left over.
9820  // That means the buffer size was incorrect.
9821  FW_ASSERT(
9822  _msg.getDeserializeSizeLeft() == 0,
9823  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9824  );
9825 
9826  // Call handler function
9828  directive
9829  );
9830 
9831  break;
9832  }
9833 
9834  // Handle internal interface directive_loadAbs
9835  case INT_IF_DIRECTIVE_LOADABS: {
9837  _deserStatus = _msg.deserializeTo(directive);
9838 
9839  // Internal interface should always deserialize
9840  FW_ASSERT(
9841  Fw::FW_SERIALIZE_OK == _deserStatus,
9842  static_cast<FwAssertArgType>(_deserStatus)
9843  );
9844 
9845  // Make sure there was no data left over.
9846  // That means the buffer size was incorrect.
9847  FW_ASSERT(
9848  _msg.getDeserializeSizeLeft() == 0,
9849  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9850  );
9851 
9852  // Call handler function
9854  directive
9855  );
9856 
9857  break;
9858  }
9859 
9860  // Handle internal interface directive_loadRel
9861  case INT_IF_DIRECTIVE_LOADREL: {
9863  _deserStatus = _msg.deserializeTo(directive);
9864 
9865  // Internal interface should always deserialize
9866  FW_ASSERT(
9867  Fw::FW_SERIALIZE_OK == _deserStatus,
9868  static_cast<FwAssertArgType>(_deserStatus)
9869  );
9870 
9871  // Make sure there was no data left over.
9872  // That means the buffer size was incorrect.
9873  FW_ASSERT(
9874  _msg.getDeserializeSizeLeft() == 0,
9875  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9876  );
9877 
9878  // Call handler function
9880  directive
9881  );
9882 
9883  break;
9884  }
9885 
9886  // Handle internal interface directive_memCmp
9887  case INT_IF_DIRECTIVE_MEMCMP: {
9889  _deserStatus = _msg.deserializeTo(directive);
9890 
9891  // Internal interface should always deserialize
9892  FW_ASSERT(
9893  Fw::FW_SERIALIZE_OK == _deserStatus,
9894  static_cast<FwAssertArgType>(_deserStatus)
9895  );
9896 
9897  // Make sure there was no data left over.
9898  // That means the buffer size was incorrect.
9899  FW_ASSERT(
9900  _msg.getDeserializeSizeLeft() == 0,
9901  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9902  );
9903 
9904  // Call handler function
9906  directive
9907  );
9908 
9909  break;
9910  }
9911 
9912  // Handle internal interface directive_noOp
9913  case INT_IF_DIRECTIVE_NOOP: {
9915  _deserStatus = _msg.deserializeTo(directive);
9916 
9917  // Internal interface should always deserialize
9918  FW_ASSERT(
9919  Fw::FW_SERIALIZE_OK == _deserStatus,
9920  static_cast<FwAssertArgType>(_deserStatus)
9921  );
9922 
9923  // Make sure there was no data left over.
9924  // That means the buffer size was incorrect.
9925  FW_ASSERT(
9926  _msg.getDeserializeSizeLeft() == 0,
9927  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9928  );
9929 
9930  // Call handler function
9932  directive
9933  );
9934 
9935  break;
9936  }
9937 
9938  // Handle internal interface directive_peek
9939  case INT_IF_DIRECTIVE_PEEK: {
9941  _deserStatus = _msg.deserializeTo(directive);
9942 
9943  // Internal interface should always deserialize
9944  FW_ASSERT(
9945  Fw::FW_SERIALIZE_OK == _deserStatus,
9946  static_cast<FwAssertArgType>(_deserStatus)
9947  );
9948 
9949  // Make sure there was no data left over.
9950  // That means the buffer size was incorrect.
9951  FW_ASSERT(
9952  _msg.getDeserializeSizeLeft() == 0,
9953  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9954  );
9955 
9956  // Call handler function
9958  directive
9959  );
9960 
9961  break;
9962  }
9963 
9964  // Handle internal interface directive_pushPrm
9965  case INT_IF_DIRECTIVE_PUSHPRM: {
9967  _deserStatus = _msg.deserializeTo(directive);
9968 
9969  // Internal interface should always deserialize
9970  FW_ASSERT(
9971  Fw::FW_SERIALIZE_OK == _deserStatus,
9972  static_cast<FwAssertArgType>(_deserStatus)
9973  );
9974 
9975  // Make sure there was no data left over.
9976  // That means the buffer size was incorrect.
9977  FW_ASSERT(
9978  _msg.getDeserializeSizeLeft() == 0,
9979  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
9980  );
9981 
9982  // Call handler function
9984  directive
9985  );
9986 
9987  break;
9988  }
9989 
9990  // Handle internal interface directive_pushTime
9991  case INT_IF_DIRECTIVE_PUSHTIME: {
9993  _deserStatus = _msg.deserializeTo(directive);
9994 
9995  // Internal interface should always deserialize
9996  FW_ASSERT(
9997  Fw::FW_SERIALIZE_OK == _deserStatus,
9998  static_cast<FwAssertArgType>(_deserStatus)
9999  );
10000 
10001  // Make sure there was no data left over.
10002  // That means the buffer size was incorrect.
10003  FW_ASSERT(
10004  _msg.getDeserializeSizeLeft() == 0,
10005  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10006  );
10007 
10008  // Call handler function
10010  directive
10011  );
10012 
10013  break;
10014  }
10015 
10016  // Handle internal interface directive_pushTlmVal
10017  case INT_IF_DIRECTIVE_PUSHTLMVAL: {
10019  _deserStatus = _msg.deserializeTo(directive);
10020 
10021  // Internal interface should always deserialize
10022  FW_ASSERT(
10023  Fw::FW_SERIALIZE_OK == _deserStatus,
10024  static_cast<FwAssertArgType>(_deserStatus)
10025  );
10026 
10027  // Make sure there was no data left over.
10028  // That means the buffer size was incorrect.
10029  FW_ASSERT(
10030  _msg.getDeserializeSizeLeft() == 0,
10031  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10032  );
10033 
10034  // Call handler function
10036  directive
10037  );
10038 
10039  break;
10040  }
10041 
10042  // Handle internal interface directive_pushTlmValAndTime
10043  case INT_IF_DIRECTIVE_PUSHTLMVALANDTIME: {
10045  _deserStatus = _msg.deserializeTo(directive);
10046 
10047  // Internal interface should always deserialize
10048  FW_ASSERT(
10049  Fw::FW_SERIALIZE_OK == _deserStatus,
10050  static_cast<FwAssertArgType>(_deserStatus)
10051  );
10052 
10053  // Make sure there was no data left over.
10054  // That means the buffer size was incorrect.
10055  FW_ASSERT(
10056  _msg.getDeserializeSizeLeft() == 0,
10057  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10058  );
10059 
10060  // Call handler function
10062  directive
10063  );
10064 
10065  break;
10066  }
10067 
10068  // Handle internal interface directive_pushVal
10069  case INT_IF_DIRECTIVE_PUSHVAL: {
10071  _deserStatus = _msg.deserializeTo(directive);
10072 
10073  // Internal interface should always deserialize
10074  FW_ASSERT(
10075  Fw::FW_SERIALIZE_OK == _deserStatus,
10076  static_cast<FwAssertArgType>(_deserStatus)
10077  );
10078 
10079  // Make sure there was no data left over.
10080  // That means the buffer size was incorrect.
10081  FW_ASSERT(
10082  _msg.getDeserializeSizeLeft() == 0,
10083  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10084  );
10085 
10086  // Call handler function
10088  directive
10089  );
10090 
10091  break;
10092  }
10093 
10094  // Handle internal interface directive_return
10095  case INT_IF_DIRECTIVE_RETURN: {
10097  _deserStatus = _msg.deserializeTo(directive);
10098 
10099  // Internal interface should always deserialize
10100  FW_ASSERT(
10101  Fw::FW_SERIALIZE_OK == _deserStatus,
10102  static_cast<FwAssertArgType>(_deserStatus)
10103  );
10104 
10105  // Make sure there was no data left over.
10106  // That means the buffer size was incorrect.
10107  FW_ASSERT(
10108  _msg.getDeserializeSizeLeft() == 0,
10109  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10110  );
10111 
10112  // Call handler function
10114  directive
10115  );
10116 
10117  break;
10118  }
10119 
10120  // Handle internal interface directive_setFlag
10121  case INT_IF_DIRECTIVE_SETFLAG: {
10123  _deserStatus = _msg.deserializeTo(directive);
10124 
10125  // Internal interface should always deserialize
10126  FW_ASSERT(
10127  Fw::FW_SERIALIZE_OK == _deserStatus,
10128  static_cast<FwAssertArgType>(_deserStatus)
10129  );
10130 
10131  // Make sure there was no data left over.
10132  // That means the buffer size was incorrect.
10133  FW_ASSERT(
10134  _msg.getDeserializeSizeLeft() == 0,
10135  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10136  );
10137 
10138  // Call handler function
10140  directive
10141  );
10142 
10143  break;
10144  }
10145 
10146  // Handle internal interface directive_stackCmd
10147  case INT_IF_DIRECTIVE_STACKCMD: {
10149  _deserStatus = _msg.deserializeTo(directive);
10150 
10151  // Internal interface should always deserialize
10152  FW_ASSERT(
10153  Fw::FW_SERIALIZE_OK == _deserStatus,
10154  static_cast<FwAssertArgType>(_deserStatus)
10155  );
10156 
10157  // Make sure there was no data left over.
10158  // That means the buffer size was incorrect.
10159  FW_ASSERT(
10160  _msg.getDeserializeSizeLeft() == 0,
10161  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10162  );
10163 
10164  // Call handler function
10166  directive
10167  );
10168 
10169  break;
10170  }
10171 
10172  // Handle internal interface directive_stackOp
10173  case INT_IF_DIRECTIVE_STACKOP: {
10175  _deserStatus = _msg.deserializeTo(directive);
10176 
10177  // Internal interface should always deserialize
10178  FW_ASSERT(
10179  Fw::FW_SERIALIZE_OK == _deserStatus,
10180  static_cast<FwAssertArgType>(_deserStatus)
10181  );
10182 
10183  // Make sure there was no data left over.
10184  // That means the buffer size was incorrect.
10185  FW_ASSERT(
10186  _msg.getDeserializeSizeLeft() == 0,
10187  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10188  );
10189 
10190  // Call handler function
10192  directive
10193  );
10194 
10195  break;
10196  }
10197 
10198  // Handle internal interface directive_storeAbs
10199  case INT_IF_DIRECTIVE_STOREABS: {
10201  _deserStatus = _msg.deserializeTo(directive);
10202 
10203  // Internal interface should always deserialize
10204  FW_ASSERT(
10205  Fw::FW_SERIALIZE_OK == _deserStatus,
10206  static_cast<FwAssertArgType>(_deserStatus)
10207  );
10208 
10209  // Make sure there was no data left over.
10210  // That means the buffer size was incorrect.
10211  FW_ASSERT(
10212  _msg.getDeserializeSizeLeft() == 0,
10213  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10214  );
10215 
10216  // Call handler function
10218  directive
10219  );
10220 
10221  break;
10222  }
10223 
10224  // Handle internal interface directive_storeAbsConstOffset
10225  case INT_IF_DIRECTIVE_STOREABSCONSTOFFSET: {
10227  _deserStatus = _msg.deserializeTo(directive);
10228 
10229  // Internal interface should always deserialize
10230  FW_ASSERT(
10231  Fw::FW_SERIALIZE_OK == _deserStatus,
10232  static_cast<FwAssertArgType>(_deserStatus)
10233  );
10234 
10235  // Make sure there was no data left over.
10236  // That means the buffer size was incorrect.
10237  FW_ASSERT(
10238  _msg.getDeserializeSizeLeft() == 0,
10239  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10240  );
10241 
10242  // Call handler function
10244  directive
10245  );
10246 
10247  break;
10248  }
10249 
10250  // Handle internal interface directive_storeRel
10251  case INT_IF_DIRECTIVE_STOREREL: {
10253  _deserStatus = _msg.deserializeTo(directive);
10254 
10255  // Internal interface should always deserialize
10256  FW_ASSERT(
10257  Fw::FW_SERIALIZE_OK == _deserStatus,
10258  static_cast<FwAssertArgType>(_deserStatus)
10259  );
10260 
10261  // Make sure there was no data left over.
10262  // That means the buffer size was incorrect.
10263  FW_ASSERT(
10264  _msg.getDeserializeSizeLeft() == 0,
10265  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10266  );
10267 
10268  // Call handler function
10270  directive
10271  );
10272 
10273  break;
10274  }
10275 
10276  // Handle internal interface directive_storeRelConstOffset
10277  case INT_IF_DIRECTIVE_STORERELCONSTOFFSET: {
10279  _deserStatus = _msg.deserializeTo(directive);
10280 
10281  // Internal interface should always deserialize
10282  FW_ASSERT(
10283  Fw::FW_SERIALIZE_OK == _deserStatus,
10284  static_cast<FwAssertArgType>(_deserStatus)
10285  );
10286 
10287  // Make sure there was no data left over.
10288  // That means the buffer size was incorrect.
10289  FW_ASSERT(
10290  _msg.getDeserializeSizeLeft() == 0,
10291  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10292  );
10293 
10294  // Call handler function
10296  directive
10297  );
10298 
10299  break;
10300  }
10301 
10302  // Handle internal interface directive_waitAbs
10303  case INT_IF_DIRECTIVE_WAITABS: {
10305  _deserStatus = _msg.deserializeTo(directive);
10306 
10307  // Internal interface should always deserialize
10308  FW_ASSERT(
10309  Fw::FW_SERIALIZE_OK == _deserStatus,
10310  static_cast<FwAssertArgType>(_deserStatus)
10311  );
10312 
10313  // Make sure there was no data left over.
10314  // That means the buffer size was incorrect.
10315  FW_ASSERT(
10316  _msg.getDeserializeSizeLeft() == 0,
10317  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10318  );
10319 
10320  // Call handler function
10322  directive
10323  );
10324 
10325  break;
10326  }
10327 
10328  // Handle internal interface directive_waitRel
10329  case INT_IF_DIRECTIVE_WAITREL: {
10331  _deserStatus = _msg.deserializeTo(directive);
10332 
10333  // Internal interface should always deserialize
10334  FW_ASSERT(
10335  Fw::FW_SERIALIZE_OK == _deserStatus,
10336  static_cast<FwAssertArgType>(_deserStatus)
10337  );
10338 
10339  // Make sure there was no data left over.
10340  // That means the buffer size was incorrect.
10341  FW_ASSERT(
10342  _msg.getDeserializeSizeLeft() == 0,
10343  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10344  );
10345 
10346  // Call handler function
10348  directive
10349  );
10350 
10351  break;
10352  }
10353 
10354 
10355  // Handle signals to internal state machines
10356  case INTERNAL_STATE_MACHINE_SIGNAL:
10357  this->smDispatch(_msg);
10358  break;
10359 
10360  default:
10361  return MSG_DISPATCH_ERROR;
10362  }
10363 
10364  return MSG_DISPATCH_OK;
10365  }
10366 
10367  // ----------------------------------------------------------------------
10368  // Calls for messages received on special input ports
10369  // ----------------------------------------------------------------------
10370 
10371  void FpySequencerComponentBase ::
10372  m_p_cmdIn_in(
10373  Fw::PassiveComponentBase* callComp,
10374  FwIndexType portNum,
10375  FwOpcodeType opCode,
10376  U32 cmdSeq,
10377  Fw::CmdArgBuffer& args
10378  )
10379  {
10380  FW_ASSERT(callComp);
10381  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10382 
10383  const U32 idBase = callComp->getIdBase();
10384  FW_ASSERT(opCode >= idBase, static_cast<FwAssertArgType>(opCode), static_cast<FwAssertArgType>(idBase));
10385 
10386  // Select base class function based on opcode
10387  switch (opCode - idBase) {
10388  case OPCODE_RUN: {
10389  compPtr->RUN_cmdHandlerBase(
10390  opCode,
10391  cmdSeq,
10392  args
10393  );
10394  break;
10395  }
10396 
10397  case OPCODE_VALIDATE: {
10398  compPtr->VALIDATE_cmdHandlerBase(
10399  opCode,
10400  cmdSeq,
10401  args
10402  );
10403  break;
10404  }
10405 
10406  case OPCODE_RUN_VALIDATED: {
10407  compPtr->RUN_VALIDATED_cmdHandlerBase(
10408  opCode,
10409  cmdSeq,
10410  args
10411  );
10412  break;
10413  }
10414 
10415  case OPCODE_CANCEL: {
10416  compPtr->CANCEL_cmdHandlerBase(
10417  opCode,
10418  cmdSeq,
10419  args
10420  );
10421  break;
10422  }
10423 
10424  case OPCODE_SET_BREAKPOINT: {
10425  compPtr->SET_BREAKPOINT_cmdHandlerBase(
10426  opCode,
10427  cmdSeq,
10428  args
10429  );
10430  break;
10431  }
10432 
10433  case OPCODE_BREAK: {
10434  compPtr->BREAK_cmdHandlerBase(
10435  opCode,
10436  cmdSeq,
10437  args
10438  );
10439  break;
10440  }
10441 
10442  case OPCODE_CONTINUE: {
10443  compPtr->CONTINUE_cmdHandlerBase(
10444  opCode,
10445  cmdSeq,
10446  args
10447  );
10448  break;
10449  }
10450 
10451  case OPCODE_CLEAR_BREAKPOINT: {
10452  compPtr->CLEAR_BREAKPOINT_cmdHandlerBase(
10453  opCode,
10454  cmdSeq,
10455  args
10456  );
10457  break;
10458  }
10459 
10460  case OPCODE_STEP: {
10461  compPtr->STEP_cmdHandlerBase(
10462  opCode,
10463  cmdSeq,
10464  args
10465  );
10466  break;
10467  }
10468 
10469  case OPCODE_SET_FLAG: {
10470  compPtr->SET_FLAG_cmdHandlerBase(
10471  opCode,
10472  cmdSeq,
10473  args
10474  );
10475  break;
10476  }
10477 
10479  compPtr->DUMP_STACK_TO_FILE_cmdHandlerBase(
10480  opCode,
10481  cmdSeq,
10482  args
10483  );
10484  break;
10485  }
10486 
10488  Fw::CmdResponse _cstat = compPtr->paramSet_STATEMENT_TIMEOUT_SECS(args);
10489  compPtr->cmdResponse_out(
10490  opCode,
10491  cmdSeq,
10492  _cstat
10493  );
10494  break;
10495  }
10496 
10498  Fw::CmdResponse _cstat = compPtr->paramSave_STATEMENT_TIMEOUT_SECS();
10499  compPtr->cmdResponse_out(
10500  opCode,
10501  cmdSeq,
10502  _cstat
10503  );
10504  break;
10505  }
10506 
10508  Fw::CmdResponse _cstat = compPtr->paramSet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(args);
10509  compPtr->cmdResponse_out(
10510  opCode,
10511  cmdSeq,
10512  _cstat
10513  );
10514  break;
10515  }
10516 
10518  Fw::CmdResponse _cstat = compPtr->paramSave_FLAG_DEFAULT_EXIT_ON_CMD_FAIL();
10519  compPtr->cmdResponse_out(
10520  opCode,
10521  cmdSeq,
10522  _cstat
10523  );
10524  break;
10525  }
10526  }
10527  }
10528 
10529  // ----------------------------------------------------------------------
10530  // Calls for messages received on typed input ports
10531  // ----------------------------------------------------------------------
10532 
10533  void FpySequencerComponentBase ::
10534  m_p_checkTimers_in(
10535  Fw::PassiveComponentBase* callComp,
10536  FwIndexType portNum,
10537  U32 context
10538  )
10539  {
10540  FW_ASSERT(callComp);
10541  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10542  compPtr->checkTimers_handlerBase(
10543  portNum,
10544  context
10545  );
10546  }
10547 
10548  void FpySequencerComponentBase ::
10549  m_p_cmdResponseIn_in(
10550  Fw::PassiveComponentBase* callComp,
10551  FwIndexType portNum,
10552  FwOpcodeType opCode,
10553  U32 cmdSeq,
10554  const Fw::CmdResponse& response
10555  )
10556  {
10557  FW_ASSERT(callComp);
10558  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10559  compPtr->cmdResponseIn_handlerBase(
10560  portNum,
10561  opCode,
10562  cmdSeq,
10563  response
10564  );
10565  }
10566 
10567  void FpySequencerComponentBase ::
10568  m_p_pingIn_in(
10569  Fw::PassiveComponentBase* callComp,
10570  FwIndexType portNum,
10571  U32 key
10572  )
10573  {
10574  FW_ASSERT(callComp);
10575  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10576  compPtr->pingIn_handlerBase(
10577  portNum,
10578  key
10579  );
10580  }
10581 
10582  void FpySequencerComponentBase ::
10583  m_p_seqRunIn_in(
10584  Fw::PassiveComponentBase* callComp,
10585  FwIndexType portNum,
10586  const Fw::StringBase& filename
10587  )
10588  {
10589  FW_ASSERT(callComp);
10590  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10591  compPtr->seqRunIn_handlerBase(
10592  portNum,
10593  filename
10594  );
10595  }
10596 
10597  void FpySequencerComponentBase ::
10598  m_p_tlmWrite_in(
10599  Fw::PassiveComponentBase* callComp,
10600  FwIndexType portNum,
10601  U32 context
10602  )
10603  {
10604  FW_ASSERT(callComp);
10605  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
10606  compPtr->tlmWrite_handlerBase(
10607  portNum,
10608  context
10609  );
10610  }
10611 
10612  // ----------------------------------------------------------------------
10613  // Send signal helper functions
10614  // ----------------------------------------------------------------------
10615 
10616  void FpySequencerComponentBase ::
10617  sendSignalStart(
10618  SmId smId,
10619  FwEnumStoreType signal,
10620  Fw::SerialBufferBase& buffer
10621  )
10622  {
10624 
10625  // Serialize the message type
10626  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(INTERNAL_STATE_MACHINE_SIGNAL));
10627  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10628 
10629  // Serialize the port number
10630  status = buffer.serializeFrom(static_cast<FwIndexType>(0));
10631  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10632 
10633  // Serialize the state machine ID
10634  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(smId));
10635  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10636 
10637  // Serialize the signal
10638  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(signal));
10639  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10640  }
10641 
10642  void FpySequencerComponentBase ::
10643  sequencer_sendSignalFinish(Fw::LinearBufferBase& buffer)
10644  {
10645  // Send message
10647  Os::Queue::Status qStatus = this->m_queue.send(buffer, 9, _block);
10648 
10649  FW_ASSERT(
10650  qStatus == Os::Queue::OP_OK,
10651  static_cast<FwAssertArgType>(qStatus)
10652  );
10653  }
10654 
10655  // ----------------------------------------------------------------------
10656  // Helper functions for state machine dispatch
10657  // ----------------------------------------------------------------------
10658 
10659  void FpySequencerComponentBase ::
10660  smDispatch(Fw::SerialBufferBase& buffer)
10661  {
10662  // Deserialize the state machine ID and signal
10663  FwEnumStoreType storedSmId;
10664  FwEnumStoreType storedSignal;
10665  FpySequencerComponentBase::deserializeSmIdAndSignal(buffer, storedSmId, storedSignal);
10666 
10667  // Select the target state machine instance
10668  const SmId smId = static_cast<SmId>(storedSmId);
10669  switch (smId) {
10670  case SmId::sequencer: {
10672  this->Svc_FpySequencer_SequencerStateMachine_smDispatch(buffer, this->m_stateMachine_sequencer, signal);
10673  break;
10674  }
10675  default:
10676  FW_ASSERT(0, static_cast<FwAssertArgType>(smId));
10677  break;
10678  }
10679  }
10680 
10681  void FpySequencerComponentBase ::
10682  deserializeSmIdAndSignal(
10683  Fw::SerialBufferBase& buffer,
10684  FwEnumStoreType& smId,
10685  FwEnumStoreType& signal
10686  )
10687  {
10688  // Move deserialization beyond the message type and port number
10689  Fw::SerializeStatus status =
10690  buffer.moveDeserToOffset(ComponentIpcSerializableBuffer::DATA_OFFSET);
10691  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10692 
10693  // Deserialize the state machine ID
10694  status = buffer.deserializeTo(smId);
10695  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10696 
10697  // Deserialize the signal
10698  status = buffer.deserializeTo(signal);
10699  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10700  }
10701 
10702  void FpySequencerComponentBase ::
10703  Svc_FpySequencer_SequencerStateMachine_smDispatch(
10704  Fw::SerialBufferBase& buffer,
10705  Svc_FpySequencer_SequencerStateMachine& sm,
10707  )
10708  {
10709  switch (signal) {
10711  // Deserialize the data
10713  const Fw::SerializeStatus status = buffer.deserializeTo(value);
10714  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10715  // Assert no data left in buffer
10716  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10717  // Call the sendSignal function for sm and cmd_VALIDATE
10718  sm.sendSignal_cmd_VALIDATE(value);
10719  break;
10720  }
10722  // Deserialize the data
10724  const Fw::SerializeStatus status = buffer.deserializeTo(value);
10725  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10726  // Assert no data left in buffer
10727  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10728  // Call the sendSignal function for sm and cmd_RUN
10729  sm.sendSignal_cmd_RUN(value);
10730  break;
10731  }
10733  // Deserialize the data
10735  const Fw::SerializeStatus status = buffer.deserializeTo(value);
10736  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10737  // Assert no data left in buffer
10738  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10739  // Call the sendSignal function for sm and cmd_RUN_VALIDATED
10740  sm.sendSignal_cmd_RUN_VALIDATED(value);
10741  break;
10742  }
10744  // Assert no data left in buffer
10745  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10746  // Call the sendSignal function for sm and cmd_CANCEL
10747  sm.sendSignal_cmd_CANCEL();
10748  break;
10749  }
10751  // Deserialize the data
10753  const Fw::SerializeStatus status = buffer.deserializeTo(value);
10754  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
10755  // Assert no data left in buffer
10756  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10757  // Call the sendSignal function for sm and cmd_SET_BREAKPOINT
10758  sm.sendSignal_cmd_SET_BREAKPOINT(value);
10759  break;
10760  }
10762  // Assert no data left in buffer
10763  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10764  // Call the sendSignal function for sm and cmd_CLEAR_BREAKPOINT
10765  sm.sendSignal_cmd_CLEAR_BREAKPOINT();
10766  break;
10767  }
10769  // Assert no data left in buffer
10770  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10771  // Call the sendSignal function for sm and result_failure
10772  sm.sendSignal_result_failure();
10773  break;
10774  }
10776  // Assert no data left in buffer
10777  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10778  // Call the sendSignal function for sm and result_success
10779  sm.sendSignal_result_success();
10780  break;
10781  }
10783  // Assert no data left in buffer
10784  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10785  // Call the sendSignal function for sm and entered
10786  sm.sendSignal_entered();
10787  break;
10788  }
10790  // Assert no data left in buffer
10791  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10792  // Call the sendSignal function for sm and result_dispatchStatement_success
10793  sm.sendSignal_result_dispatchStatement_success();
10794  break;
10795  }
10797  // Assert no data left in buffer
10798  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10799  // Call the sendSignal function for sm and result_dispatchStatement_failure
10800  sm.sendSignal_result_dispatchStatement_failure();
10801  break;
10802  }
10804  // Assert no data left in buffer
10805  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10806  // Call the sendSignal function for sm and result_dispatchStatement_noMoreStatements
10807  sm.sendSignal_result_dispatchStatement_noMoreStatements();
10808  break;
10809  }
10811  // Assert no data left in buffer
10812  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10813  // Call the sendSignal function for sm and checkTimersIn
10814  sm.sendSignal_checkTimersIn();
10815  break;
10816  }
10818  // Assert no data left in buffer
10819  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10820  // Call the sendSignal function for sm and result_checkShouldWake_wakeup
10821  sm.sendSignal_result_checkShouldWake_wakeup();
10822  break;
10823  }
10825  // Assert no data left in buffer
10826  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10827  // Call the sendSignal function for sm and result_checkShouldWake_keepSleeping
10828  sm.sendSignal_result_checkShouldWake_keepSleeping();
10829  break;
10830  }
10832  // Assert no data left in buffer
10833  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10834  // Call the sendSignal function for sm and result_timeOpFailed
10835  sm.sendSignal_result_timeOpFailed();
10836  break;
10837  }
10839  // Assert no data left in buffer
10840  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10841  // Call the sendSignal function for sm and stmtResponse_beginSleep
10842  sm.sendSignal_stmtResponse_beginSleep();
10843  break;
10844  }
10846  // Assert no data left in buffer
10847  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10848  // Call the sendSignal function for sm and stmtResponse_success
10849  sm.sendSignal_stmtResponse_success();
10850  break;
10851  }
10853  // Assert no data left in buffer
10854  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10855  // Call the sendSignal function for sm and stmtResponse_failure
10856  sm.sendSignal_stmtResponse_failure();
10857  break;
10858  }
10860  // Assert no data left in buffer
10861  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10862  // Call the sendSignal function for sm and stmtResponse_unexpected
10863  sm.sendSignal_stmtResponse_unexpected();
10864  break;
10865  }
10867  // Assert no data left in buffer
10868  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10869  // Call the sendSignal function for sm and stmtResponse_keepWaiting
10870  sm.sendSignal_stmtResponse_keepWaiting();
10871  break;
10872  }
10874  // Assert no data left in buffer
10875  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10876  // Call the sendSignal function for sm and result_checkStatementTimeout_statementTimeout
10877  sm.sendSignal_result_checkStatementTimeout_statementTimeout();
10878  break;
10879  }
10881  // Assert no data left in buffer
10882  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10883  // Call the sendSignal function for sm and result_checkStatementTimeout_noTimeout
10884  sm.sendSignal_result_checkStatementTimeout_noTimeout();
10885  break;
10886  }
10888  // Assert no data left in buffer
10889  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10890  // Call the sendSignal function for sm and cmd_CONTINUE
10891  sm.sendSignal_cmd_CONTINUE();
10892  break;
10893  }
10895  // Assert no data left in buffer
10896  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10897  // Call the sendSignal function for sm and cmd_BREAK
10898  sm.sendSignal_cmd_BREAK();
10899  break;
10900  }
10902  // Assert no data left in buffer
10903  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
10904  // Call the sendSignal function for sm and cmd_STEP
10905  sm.sendSignal_cmd_STEP();
10906  break;
10907  }
10908  default:
10909  FW_ASSERT(0, static_cast<FwAssertArgType>(signal));
10910  break;
10911  }
10912  }
10913 
10914  // ----------------------------------------------------------------------
10915  // Parameter set functions
10916  // ----------------------------------------------------------------------
10917 
10918  Fw::CmdResponse FpySequencerComponentBase ::
10919  paramSet_STATEMENT_TIMEOUT_SECS(Fw::SerialBufferBase& val)
10920  {
10921  F32 _localVal{};
10922  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
10923  if (_stat != Fw::FW_SERIALIZE_OK) {
10925  }
10926 
10927  // Assign value only if successfully deserialized
10928  this->m_paramLock.lock();
10929  this->m_STATEMENT_TIMEOUT_SECS = _localVal;
10930  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::VALID;
10931  this->m_paramLock.unLock();
10932 
10933  // Call notifier
10935  return Fw::CmdResponse::OK;
10936  }
10937 
10938  Fw::CmdResponse FpySequencerComponentBase ::
10939  paramSet_FLAG_DEFAULT_EXIT_ON_CMD_FAIL(Fw::SerialBufferBase& val)
10940  {
10941  bool _localVal{};
10942  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
10943  if (_stat != Fw::FW_SERIALIZE_OK) {
10945  }
10946 
10947  // Assign value only if successfully deserialized
10948  this->m_paramLock.lock();
10949  this->m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL = _localVal;
10950  this->m_param_FLAG_DEFAULT_EXIT_ON_CMD_FAIL_valid = Fw::ParamValid::VALID;
10951  this->m_paramLock.unLock();
10952 
10953  // Call notifier
10955  return Fw::CmdResponse::OK;
10956  }
10957 
10958  // ----------------------------------------------------------------------
10959  // Parameter save functions
10960  // ----------------------------------------------------------------------
10961 
10962  Fw::CmdResponse FpySequencerComponentBase ::
10963  paramSave_STATEMENT_TIMEOUT_SECS()
10964  {
10965  Fw::ParamBuffer _saveBuff;
10966  FwPrmIdType _id;
10967  Fw::SerializeStatus _stat;
10968  if (this->m_prmSet_OutputPort[0].isConnected()) {
10969  this->m_paramLock.lock();
10970 
10971  _stat = _saveBuff.serializeFrom(m_STATEMENT_TIMEOUT_SECS);
10972 
10973  this->m_paramLock.unLock();
10974  if (_stat != Fw::FW_SERIALIZE_OK) {
10976  }
10977 
10978  _id = static_cast<FwPrmIdType>(this->getIdBase() + PARAMID_STATEMENT_TIMEOUT_SECS);
10979 
10980  // Save the parameter
10981  this->m_prmSet_OutputPort[0].invoke(
10982  _id,
10983  _saveBuff
10984  );
10985 
10986  return Fw::CmdResponse::OK;
10987  }
10988 
10990  }
10991 
10992  Fw::CmdResponse FpySequencerComponentBase ::
10993  paramSave_FLAG_DEFAULT_EXIT_ON_CMD_FAIL()
10994  {
10995  Fw::ParamBuffer _saveBuff;
10996  FwPrmIdType _id;
10997  Fw::SerializeStatus _stat;
10998  if (this->m_prmSet_OutputPort[0].isConnected()) {
10999  this->m_paramLock.lock();
11000 
11001  _stat = _saveBuff.serializeFrom(m_FLAG_DEFAULT_EXIT_ON_CMD_FAIL);
11002 
11003  this->m_paramLock.unLock();
11004  if (_stat != Fw::FW_SERIALIZE_OK) {
11006  }
11007 
11008  _id = static_cast<FwPrmIdType>(this->getIdBase() + PARAMID_FLAG_DEFAULT_EXIT_ON_CMD_FAIL);
11009 
11010  // Save the parameter
11011  this->m_prmSet_OutputPort[0].invoke(
11012  _id,
11013  _saveBuff
11014  );
11015 
11016  return Fw::CmdResponse::OK;
11017  }
11018 
11020  }
11021 
11022 }
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.
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())
The size of the serial representations of the port arguments.
Definition: SchedPortAc.hpp:36
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].
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.
The size of the serial representations of the port arguments.
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.
The size of the serial representations of the port arguments.
Definition: CmdPortAc.hpp:38
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.
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.
Loads, validates and runs a sequence.
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.
The size of the serial representation.
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)
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)
The size of the serial representations of the port arguments.
Definition: PingPortAc.hpp:36
void invoke(Fw::Time &time) const
Invoke a port interface.
Definition: TimePortAc.cpp:147
Must be called after VALIDATE. Runs the sequence that was validated.
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].
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
the default value of the EXIT_ON_CMD_FAIL sequence flag
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 tlmWrite_Debug_NextStatementIndex(U32 arg, Fw::Time _tlmTime=Fw::Time())
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()
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
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.
The size of the serial representations of the port arguments.
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.
message to exit active component task
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
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
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.
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.
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())