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
Must be called after VALIDATE. Runs the sequence that was validated.
void invoke(Fw::ComBuffer &data, U32 context) const
Invoke a port interface.
Definition: ComPortAc.cpp:156
void set_seqStartOut_OutputPort(FwIndexType portNum, Svc::InputCmdSeqInPort *port)
Connect port to seqStartOut[portNum].
void log_WARNING_HI_DirectiveTimedOut(U8 opCode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event DirectiveTimedOut.
virtual void directive_pushPrm_internalInterfaceHandler(const Svc::FpySequencer_PushPrmDirective &directive)=0
Internal interface handler for directive_pushPrm.
void init()
Initialization function.
Definition: ComPortAc.cpp:137
virtual void directive_peek_internalInterfaceHandler(const Svc::FpySequencer_PeekDirective &directive)=0
Internal interface handler for directive_peek.
void log_ACTIVITY_HI_SequencePaused(U32 stmtIdx) const
Log event SequencePaused.
virtual void directive_exit_internalInterfaceHandler(const Svc::FpySequencer_ExitDirective &directive)=0
Internal interface handler for directive_exit.
Fw::InputCmdResponsePort * get_cmdResponseIn_InputPort(FwIndexType portNum)
FwIdType FwOpcodeType
The type of a command opcode.
Operation succeeded.
Definition: Os.hpp:26
void set_cmdOut_OutputPort(FwIndexType portNum, Fw::InputComPort *port)
Connect port to cmdOut[portNum].
SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG) override
Serialize an 8-bit unsigned integer value.
called in dispatchStatement method when there were no more statements in the sequence ...
branches based off of the top byte of the stack
void directive_pushVal_internalInterfaceInvoke(const Svc::FpySequencer_PushValDirective &directive)
Internal interface base-class function for directive_pushVal.
void tlmWrite_Debug_NextStatementOpcode(U8 arg, Fw::Time _tlmTime=Fw::Time())
virtual void parametersLoaded()
Called whenever parameters are loaded.
virtual void directive_pushTime_internalInterfaceHandler(const Svc::FpySequencer_PushTimeDirective &directive)=0
Internal interface handler for directive_pushTime.
void log_WARNING_HI_InsufficientBufferSpace(U64 bufferSize, const Fw::StringBase &filePath) const
Log event InsufficientBufferSpace.
static constexpr FwIndexType getNum_seqStartOut_OutputPorts()
PlatformSizeType FwSizeType
Status receive(U8 *destination, FwSizeType capacity, BlockingType blockType, FwSizeType &actualSize, FwQueuePriorityType &priority) override
receive a message from the queue through delegate
Definition: Queue.cpp:71
I32 FwEnumStoreType
void CONTINUE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void sequencer_sendSignal_cmd_STEP()
Send signal cmd_STEP to state machine sequencer.
virtual void cmdResponseIn_handler(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)=0
Handler for input port cmdResponseIn.
void sequencer_sendSignal_result_dispatchStatement_success()
Send signal result_dispatchStatement_success to state machine sequencer.
void directive_stackOp_internalInterfaceInvoke(const Svc::FpySequencer_StackOpDirective &directive)
Internal interface base-class function for directive_stackOp.
void log_WARNING_HI_WrongCRC(U32 expected, U32 actual) const
Log event WrongCRC.
void directive_pushTlmVal_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValDirective &directive)
Internal interface base-class function for directive_pushTlmVal.
Status
status returned from the queue send function
Definition: Queue.hpp:30
virtual void CLEAR_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
virtual void parameterUpdated(FwPrmIdType id)
Called whenever a parameter is updated.
called when statement successfully executed. only raised in the RUNNING.AWAITING_CMD_RESPONSE state ...
called on VALIDATE cmd with the path of the sequence file to validate. only raised in IDLE state ...
virtual void directive_stackCmd_internalInterfaceHandler(const Svc::FpySequencer_StackCmdDirective &directive)=0
Internal interface handler for directive_stackCmd.
called on RUN cmd with the path of the sequence file to run. only raised in IDLE state ...
void sequencer_sendSignal_cmd_SET_BREAKPOINT(const Svc::FpySequencer_BreakpointArgs &value)
Send signal cmd_SET_BREAKPOINT to state machine sequencer.
called on RUN_VALIDATED cmd. only raised in AWAITING_CMD_RUN_VALIDATED state
void init()
Initialization function.
Definition: SchedPortAc.cpp:56
virtual void tlmWrite_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port tlmWrite.
const char * toChar() const
Convert to a C-style char*.
Definition: String.hpp:50
The size of the serial representations of the port arguments.
Definition: CmdPortAc.hpp:38
virtual void CLEAR_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CLEAR_BREAKPOINT.
static constexpr FwIndexType getNum_cmdIn_InputPorts()
Fw::TlmValid getTlmChan_out(FwIndexType portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)
Invoke output port getTlmChan.
void tlmWrite_Debug_ReachedEndOfFile(bool arg, Fw::Time _tlmTime=Fw::Time())
void init()
Initialization function.
void log_WARNING_HI_SequenceExitedWithError(const Fw::StringBase &filePath, U8 errorCode) const
Log event SequenceExitedWithError.
void init()
Initialization function.
Definition: CmdPortAc.cpp:56
void RUN_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void SET_FLAG_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SET_FLAG.
void set_seqDoneOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to seqDoneOut[portNum].
FwIdType FwPrmIdType
The type of a parameter identifier.
void set_tlmOut_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
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
The size of the serial representations of the port arguments.
void STEP_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
The size of the serial representations of the port arguments.
Definition: PingPortAc.hpp:36
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.
The size of the serial representation.
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())
the default value of the EXIT_ON_CMD_FAIL sequence flag
virtual void SET_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U32 stmtIdx, bool breakOnce)=0
virtual void directive_stackOp_internalInterfaceHandler(const Svc::FpySequencer_StackOpDirective &directive)=0
Internal interface handler for directive_stackOp.
void sequencer_sendSignal_cmd_VALIDATE(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_VALIDATE to state machine sequencer.
void directive_noOp_internalInterfaceInvoke(const Svc::FpySequencer_NoOpDirective &directive)
Internal interface base-class function for directive_noOp.
void init()
Initialization function.
Definition: TlmPortAc.cpp:144
static constexpr FwIndexType getNum_tlmWrite_InputPorts()
Enum representing a command response.
virtual void RUN_VALIDATED_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN_VALIDATED.
void log_WARNING_HI_FileReadError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileReadError.
No time base has been established (Required)
void set_logOut_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to logOut[portNum].
virtual void DUMP_STACK_TO_FILE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void tlmWrite_State(FwEnumStoreType arg, Fw::Time _tlmTime=Fw::Time())
message to exit active component task
void addCallPort(InputCmdRegPort *callPort)
Register an input port.
void tlmWrite_SequencesSucceeded(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const
Log event ExtraBytesInSequence.
The size of the serial representations of the port arguments.
void directive_store_internalInterfaceInvoke(const Svc::FpySequencer_StoreDirective &directive)
Internal interface base-class function for directive_store.
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.
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].
Loads, validates and runs a sequence.
void addCallPort(InputPingPort *callPort)
Register an input port.
Definition: PingPortAc.cpp:134
void log_WARNING_LO_CmdResponseFromOldSequence(FwOpcodeType opcode, Fw::CmdResponse response, U16 oldSequenceIdx, U16 currentSequenceIdx) const
Log event CmdResponseFromOldSequence.
virtual void directive_getFlag_internalInterfaceHandler(const Svc::FpySequencer_GetFlagDirective &directive)=0
Internal interface handler for directive_getFlag.
Status send(const U8 *buffer, FwSizeType size, FwQueuePriorityType priority, BlockingType blockType) override
send a message into the queue through delegate
Definition: Queue.cpp:54
FpySequencerComponentBase(const char *compName="")
Construct FpySequencerComponentBase object.
void init()
Initialization function.
virtual void CONTINUE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void sequencer_sendSignal_checkTimersIn()
Send signal checkTimersIn to state machine sequencer.
void tlmWrite_StatementsDispatched(U64 arg, Fw::Time _tlmTime=Fw::Time())
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void tlmWrite_LastDirectiveError(const Svc::Fpy::DirectiveErrorCode &arg, Fw::Time _tlmTime=Fw::Time())
void VALIDATE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_discard_internalInterfaceHandler(const Svc::FpySequencer_DiscardDirective &directive)=0
Internal interface handler for directive_discard.
void resetDeser() override
Reset deserialization pointer to beginning of buffer.
static constexpr FwIndexType getNum_prmSet_OutputPorts()
virtual void seqRunIn_preMsgHook(FwIndexType portNum, const Fw::StringBase &filename)
Pre-message hook for async input port seqRunIn.
void directive_setFlag_internalInterfaceInvoke(const Svc::FpySequencer_SetFlagDirective &directive)
Internal interface base-class function for directive_setFlag.
bool isConnected_getParam_OutputPort(FwIndexType portNum)
peeks at N bytes from the stack, starting from an offset relative to the top of the stack ...
void sequencer_sendSignal_stmtResponse_failure()
Send signal stmtResponse_failure to state machine sequencer.
A string backed by an external buffer.
A serious but recoverable event.
void CANCEL_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void directive_waitAbs_internalInterfaceInvoke(const Svc::FpySequencer_WaitAbsDirective &directive)
Internal interface base-class function for directive_waitAbs.
void directive_peek_internalInterfaceInvoke(const Svc::FpySequencer_PeekDirective &directive)
Internal interface base-class function for directive_peek.
void set_cmdRegOut_OutputPort(FwIndexType portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void log_WARNING_HI_CommandFailed(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath, Fw::CmdResponse response) const
Log event CommandFailed.
void sequencer_sendSignal_stmtResponse_beginSleep()
Send signal stmtResponse_beginSleep to state machine sequencer.
void invoke(FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke a port interface.
Definition: TlmPortAc.cpp:163
bool isConnected() const
Definition: PortBase.cpp:38
void log_WARNING_HI_CommandTimedOut(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath) const
Log event CommandTimedOut.
void sequencer_sendSignal_result_checkStatementTimeout_noTimeout()
Send signal result_checkStatementTimeout_noTimeout to state machine sequencer.
static constexpr FwIndexType getNum_seqRunIn_InputPorts()
virtual void tlmWrite_handler(FwIndexType portNum, U32 context)=0
Handler for input port tlmWrite.
Svc::InputCmdSeqInPort * get_seqRunIn_InputPort(FwIndexType portNum)
virtual void directive_memCmp_internalInterfaceHandler(const Svc::FpySequencer_MemCmpDirective &directive)=0
Internal interface handler for directive_memCmp.
void invoke(const Fw::StringBase &filename) const
Invoke a port interface.
void loadParameters()
Load the parameters from a parameter source.
void log_WARNING_HI_InvalidSeqRunCall(I32 state) const
Log event InvalidSeqRunCall.
virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective &directive)=0
Internal interface handler for directive_if.
#define PRI_FwIndexType
void directive_getField_internalInterfaceInvoke(const Svc::FpySequencer_GetFieldDirective &directive)
Internal interface base-class function for directive_getField.
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.
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)
The size of the serial representations of the port arguments.
Definition: SchedPortAc.hpp:36
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)
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.
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.
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
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.
#define U64(C)
Definition: sha.h:181
void tlmWrite_Debug_NextStatementReadSuccess(bool arg, Fw::Time _tlmTime=Fw::Time())