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