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  SEQCANCELIN_CMDSEQCANCEL,
40  SEQRUNIN_CMDSEQIN,
41  TLMWRITE_SCHED,
42  CMD_RUN,
43  CMD_RUN_ARGS,
44  CMD_VALIDATE,
45  CMD_VALIDATE_ARGS,
46  CMD_RUN_VALIDATED,
47  CMD_CANCEL,
48  CMD_SET_BREAKPOINT,
49  CMD_BREAK,
50  CMD_CONTINUE,
51  CMD_CLEAR_BREAKPOINT,
52  CMD_STEP,
53  CMD_DUMP_STACK_TO_FILE,
54  INT_IF_DIRECTIVE_ALLOCATE,
55  INT_IF_DIRECTIVE_CALL,
56  INT_IF_DIRECTIVE_CONSTCMD,
57  INT_IF_DIRECTIVE_DISCARD,
58  INT_IF_DIRECTIVE_EXIT,
59  INT_IF_DIRECTIVE_GETFIELD,
60  INT_IF_DIRECTIVE_GOTO,
61  INT_IF_DIRECTIVE_IF,
62  INT_IF_DIRECTIVE_LOADABS,
63  INT_IF_DIRECTIVE_LOADREL,
64  INT_IF_DIRECTIVE_MEMCMP,
65  INT_IF_DIRECTIVE_NOOP,
66  INT_IF_DIRECTIVE_PEEK,
67  INT_IF_DIRECTIVE_POPEVENT,
68  INT_IF_DIRECTIVE_PUSHPRM,
69  INT_IF_DIRECTIVE_PUSHTIME,
70  INT_IF_DIRECTIVE_PUSHTLMVAL,
71  INT_IF_DIRECTIVE_PUSHTLMVALANDTIME,
72  INT_IF_DIRECTIVE_PUSHVAL,
73  INT_IF_DIRECTIVE_RETURN,
74  INT_IF_DIRECTIVE_STACKCMD,
75  INT_IF_DIRECTIVE_STACKOP,
76  INT_IF_DIRECTIVE_STOREABS,
77  INT_IF_DIRECTIVE_STOREABSCONSTOFFSET,
78  INT_IF_DIRECTIVE_STOREREL,
79  INT_IF_DIRECTIVE_STORERELCONSTOFFSET,
80  INT_IF_DIRECTIVE_WAITABS,
81  INT_IF_DIRECTIVE_WAITREL,
82  INTERNAL_STATE_MACHINE_SIGNAL,
83  };
84 
85  // Get the max size by constructing a union of the async input, command, and
86  // internal port serialization sizes
87  union BuffUnion {
88  BYTE checkTimersPortSize[Svc::SchedPortBuffer::CAPACITY];
89  BYTE cmdResponseInPortSize[Fw::CmdResponsePortBuffer::CAPACITY];
90  BYTE pingInPortSize[Svc::PingPortBuffer::CAPACITY];
91  BYTE seqRunInPortSize[Svc::CmdSeqInPortBuffer::CAPACITY];
92  BYTE tlmWritePortSize[Svc::SchedPortBuffer::CAPACITY];
93  BYTE cmdPortSize[Fw::CmdPortBuffer::CAPACITY];
94  // Size of directive_allocate argument list
95  BYTE directive_allocateIntIfSize[
97  ];
98  // Size of directive_call argument list
99  BYTE directive_callIntIfSize[
101  ];
102  // Size of directive_constCmd argument list
103  BYTE directive_constCmdIntIfSize[
105  ];
106  // Size of directive_discard argument list
107  BYTE directive_discardIntIfSize[
109  ];
110  // Size of directive_exit argument list
111  BYTE directive_exitIntIfSize[
113  ];
114  // Size of directive_getField argument list
115  BYTE directive_getFieldIntIfSize[
117  ];
118  // Size of directive_goto argument list
119  BYTE directive_gotoIntIfSize[
121  ];
122  // Size of directive_if argument list
123  BYTE directive_ifIntIfSize[
125  ];
126  // Size of directive_loadAbs argument list
127  BYTE directive_loadAbsIntIfSize[
129  ];
130  // Size of directive_loadRel argument list
131  BYTE directive_loadRelIntIfSize[
133  ];
134  // Size of directive_memCmp argument list
135  BYTE directive_memCmpIntIfSize[
137  ];
138  // Size of directive_noOp argument list
139  BYTE directive_noOpIntIfSize[
141  ];
142  // Size of directive_peek argument list
143  BYTE directive_peekIntIfSize[
145  ];
146  // Size of directive_popEvent argument list
147  BYTE directive_popEventIntIfSize[
149  ];
150  // Size of directive_pushPrm argument list
151  BYTE directive_pushPrmIntIfSize[
153  ];
154  // Size of directive_pushTime argument list
155  BYTE directive_pushTimeIntIfSize[
157  ];
158  // Size of directive_pushTlmVal argument list
159  BYTE directive_pushTlmValIntIfSize[
161  ];
162  // Size of directive_pushTlmValAndTime argument list
163  BYTE directive_pushTlmValAndTimeIntIfSize[
165  ];
166  // Size of directive_pushVal argument list
167  BYTE directive_pushValIntIfSize[
169  ];
170  // Size of directive_return argument list
171  BYTE directive_returnIntIfSize[
173  ];
174  // Size of directive_stackCmd argument list
175  BYTE directive_stackCmdIntIfSize[
177  ];
178  // Size of directive_stackOp argument list
179  BYTE directive_stackOpIntIfSize[
181  ];
182  // Size of directive_storeAbs argument list
183  BYTE directive_storeAbsIntIfSize[
185  ];
186  // Size of directive_storeAbsConstOffset argument list
187  BYTE directive_storeAbsConstOffsetIntIfSize[
189  ];
190  // Size of directive_storeRel argument list
191  BYTE directive_storeRelIntIfSize[
193  ];
194  // Size of directive_storeRelConstOffset argument list
195  BYTE directive_storeRelConstOffsetIntIfSize[
197  ];
198  // Size of directive_waitAbs argument list
199  BYTE directive_waitAbsIntIfSize[
201  ];
202  // Size of directive_waitRel argument list
203  BYTE directive_waitRelIntIfSize[
205  ];
206  // Size of buffer for internal state machine signals
207  // The internal SmSignalBuffer stores the state machine id, the
208  // signal id, and the signal data
209  BYTE internalSmBufferSize[SmSignalBuffer::SERIALIZED_SIZE];
210  };
211 
212  // Define a message buffer class large enough to handle all the
213  // asynchronous inputs to the component
214  class ComponentIpcSerializableBuffer :
215  public Fw::LinearBufferBase
216  {
217 
218  public:
219 
220  enum {
221  // Offset into data in buffer: Size of message ID and port number
222  DATA_OFFSET = sizeof(FwEnumStoreType) + sizeof(FwIndexType),
223  // Max data size
224  MAX_DATA_SIZE = sizeof(BuffUnion),
225  // Max message size: Size of message id + size of port + max data size
226  SERIALIZATION_SIZE = DATA_OFFSET + MAX_DATA_SIZE
227  };
228 
229  Fw::Serializable::SizeType getCapacity() const {
230  return sizeof(m_buff);
231  }
232 
233  U8* getBuffAddr() {
234  return m_buff;
235  }
236 
237  const U8* getBuffAddr() const {
238  return m_buff;
239  }
240 
241  private:
242  // Should be the max of all the input ports serialized sizes...
243  U8 m_buff[SERIALIZATION_SIZE];
244 
245  };
246  }
247 
248  // ----------------------------------------------------------------------
249  // Types for internal state machines
250  // ----------------------------------------------------------------------
251 
254  m_component(component)
255  {
256 
257  }
258 
261  {
262  this->initBase(static_cast<FwEnumStoreType>(smId));
263  }
264 
266  getId() const
267  {
268  return static_cast<FpySequencerComponentBase::SmId>(this->m_id);
269  }
270 
271  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
272  action_signalEntered(Signal signal)
273  {
274  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_signalEntered(this->getId(), signal);
275  }
276 
277  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
278  action_setSequenceFilePath(
279  Signal signal,
281  )
282  {
283  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setSequenceFilePath(this->getId(), signal, value);
284  }
285 
286  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
287  action_setSequenceBlockState(
288  Signal signal,
290  )
291  {
292  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setSequenceBlockState(this->getId(), signal, value);
293  }
294 
295  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
296  action_setSequenceArguments(
297  Signal signal,
299  )
300  {
301  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setSequenceArguments(this->getId(), signal, value);
302  }
303 
304  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
305  action_validate(Signal signal)
306  {
307  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_validate(this->getId(), signal);
308  }
309 
310  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
311  action_report_seqSucceeded(Signal signal)
312  {
313  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqSucceeded(this->getId(), signal);
314  }
315 
316  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
317  action_report_seqCancelled(Signal signal)
318  {
319  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqCancelled(this->getId(), signal);
320  }
321 
322  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
323  action_report_seqFailed(Signal signal)
324  {
325  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqFailed(this->getId(), signal);
326  }
327 
328  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
329  action_report_seqStarted(Signal signal)
330  {
331  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqStarted(this->getId(), signal);
332  }
333 
334  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
335  action_setGoalState_RUNNING(Signal signal)
336  {
337  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setGoalState_RUNNING(this->getId(), signal);
338  }
339 
340  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
341  action_setGoalState_VALID(Signal signal)
342  {
343  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setGoalState_VALID(this->getId(), signal);
344  }
345 
346  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
347  action_setGoalState_IDLE(Signal signal)
348  {
349  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setGoalState_IDLE(this->getId(), signal);
350  }
351 
352  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
353  action_sendCmdResponse_OK(Signal signal)
354  {
355  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_sendCmdResponse_OK(this->getId(), signal);
356  }
357 
358  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
359  action_sendCmdResponse_EXECUTION_ERROR(Signal signal)
360  {
361  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_sendCmdResponse_EXECUTION_ERROR(this->getId(), signal);
362  }
363 
364  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
365  action_clearSequenceFile(Signal signal)
366  {
367  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_clearSequenceFile(this->getId(), signal);
368  }
369 
370  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
371  action_clearBreakpoint(Signal signal)
372  {
373  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_clearBreakpoint(this->getId(), signal);
374  }
375 
376  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
377  action_clearSequenceArguments(Signal signal)
378  {
379  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_clearSequenceArguments(this->getId(), signal);
380  }
381 
382  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
383  action_checkShouldWake(Signal signal)
384  {
385  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_checkShouldWake(this->getId(), signal);
386  }
387 
388  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
389  action_dispatchStatement(Signal signal)
390  {
391  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_dispatchStatement(this->getId(), signal);
392  }
393 
394  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
395  action_resetRuntime(Signal signal)
396  {
397  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_resetRuntime(this->getId(), signal);
398  }
399 
400  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
401  action_checkStatementTimeout(Signal signal)
402  {
403  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_checkStatementTimeout(this->getId(), signal);
404  }
405 
406  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
407  action_incrementSequenceCounter(Signal signal)
408  {
409  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_incrementSequenceCounter(this->getId(), signal);
410  }
411 
412  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
413  action_pushArgsToStack(Signal signal)
414  {
415  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_pushArgsToStack(this->getId(), signal);
416  }
417 
418  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
419  action_report_seqBroken(Signal signal)
420  {
421  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_report_seqBroken(this->getId(), signal);
422  }
423 
424  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
425  action_setBreakpoint(
426  Signal signal,
428  )
429  {
430  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setBreakpoint(this->getId(), signal, value);
431  }
432 
433  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
434  action_setBreakBeforeNextLine(Signal signal)
435  {
436  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_setBreakBeforeNextLine(this->getId(), signal);
437  }
438 
439  void FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
440  action_clearBreakBeforeNextLine(Signal signal)
441  {
442  this->m_component.Svc_FpySequencer_SequencerStateMachine_action_clearBreakBeforeNextLine(this->getId(), signal);
443  }
444 
445  bool FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
446  guard_goalStateIs_RUNNING(Signal signal) const
447  {
448  return this->m_component.Svc_FpySequencer_SequencerStateMachine_guard_goalStateIs_RUNNING(this->getId(), signal);
449  }
450 
451  bool FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
452  guard_shouldBreak(Signal signal) const
453  {
454  return this->m_component.Svc_FpySequencer_SequencerStateMachine_guard_shouldBreak(this->getId(), signal);
455  }
456 
457  bool FpySequencerComponentBase::Svc_FpySequencer_SequencerStateMachine ::
458  guard_breakOnce(Signal signal) const
459  {
460  return this->m_component.Svc_FpySequencer_SequencerStateMachine_guard_breakOnce(this->getId(), signal);
461  }
462 
463  // ----------------------------------------------------------------------
464  // Component initialization
465  // ----------------------------------------------------------------------
466 
469  FwSizeType queueDepth,
470  FwEnumStoreType instance
471  )
472  {
473  // Initialize base class
475 
476  // Initialize state machine instances
477  this->m_stateMachine_sequencer.init(SmId::sequencer);
478 
479 #if !FW_DIRECT_PORT_CALLS
480  // Connect input port cmdIn
481  for (
482  FwIndexType port = 0;
483  port < static_cast<FwIndexType>(this->getNum_cmdIn_InputPorts());
484  port++
485  ) {
486  this->m_cmdIn_InputPort[port].init();
487  this->m_cmdIn_InputPort[port].addCallComp(
488  this,
489  m_p_cmdIn_in
490  );
491  this->m_cmdIn_InputPort[port].setPortNum(port);
492 
493 #if FW_OBJECT_NAMES == 1
494  Fw::ObjectName portName;
495  portName.format(
496  "%s_cmdIn_InputPort[%" PRI_FwIndexType "]",
497  this->m_objName.toChar(),
498  port
499  );
500  this->m_cmdIn_InputPort[port].setObjName(portName.toChar());
501 #endif
502  }
503 #endif
504 
505 #if !FW_DIRECT_PORT_CALLS
506  // Connect input port checkTimers
507  for (
508  FwIndexType port = 0;
509  port < static_cast<FwIndexType>(this->getNum_checkTimers_InputPorts());
510  port++
511  ) {
512  this->m_checkTimers_InputPort[port].init();
513  this->m_checkTimers_InputPort[port].addCallComp(
514  this,
515  m_p_checkTimers_in
516  );
517  this->m_checkTimers_InputPort[port].setPortNum(port);
518 
519 #if FW_OBJECT_NAMES == 1
520  Fw::ObjectName portName;
521  portName.format(
522  "%s_checkTimers_InputPort[%" PRI_FwIndexType "]",
523  this->m_objName.toChar(),
524  port
525  );
526  this->m_checkTimers_InputPort[port].setObjName(portName.toChar());
527 #endif
528  }
529 #endif
530 
531 #if !FW_DIRECT_PORT_CALLS
532  // Connect input port cmdResponseIn
533  for (
534  FwIndexType port = 0;
535  port < static_cast<FwIndexType>(this->getNum_cmdResponseIn_InputPorts());
536  port++
537  ) {
538  this->m_cmdResponseIn_InputPort[port].init();
539  this->m_cmdResponseIn_InputPort[port].addCallComp(
540  this,
541  m_p_cmdResponseIn_in
542  );
543  this->m_cmdResponseIn_InputPort[port].setPortNum(port);
544 
545 #if FW_OBJECT_NAMES == 1
546  Fw::ObjectName portName;
547  portName.format(
548  "%s_cmdResponseIn_InputPort[%" PRI_FwIndexType "]",
549  this->m_objName.toChar(),
550  port
551  );
552  this->m_cmdResponseIn_InputPort[port].setObjName(portName.toChar());
553 #endif
554  }
555 #endif
556 
557 #if !FW_DIRECT_PORT_CALLS
558  // Connect input port pingIn
559  for (
560  FwIndexType port = 0;
561  port < static_cast<FwIndexType>(this->getNum_pingIn_InputPorts());
562  port++
563  ) {
564  this->m_pingIn_InputPort[port].init();
565  this->m_pingIn_InputPort[port].addCallComp(
566  this,
567  m_p_pingIn_in
568  );
569  this->m_pingIn_InputPort[port].setPortNum(port);
570 
571 #if FW_OBJECT_NAMES == 1
572  Fw::ObjectName portName;
573  portName.format(
574  "%s_pingIn_InputPort[%" PRI_FwIndexType "]",
575  this->m_objName.toChar(),
576  port
577  );
578  this->m_pingIn_InputPort[port].setObjName(portName.toChar());
579 #endif
580  }
581 #endif
582 
583 #if !FW_DIRECT_PORT_CALLS
584  // Connect input port seqCancelIn
585  for (
586  FwIndexType port = 0;
587  port < static_cast<FwIndexType>(this->getNum_seqCancelIn_InputPorts());
588  port++
589  ) {
590  this->m_seqCancelIn_InputPort[port].init();
591  this->m_seqCancelIn_InputPort[port].addCallComp(
592  this,
593  m_p_seqCancelIn_in
594  );
595  this->m_seqCancelIn_InputPort[port].setPortNum(port);
596 
597 #if FW_OBJECT_NAMES == 1
598  Fw::ObjectName portName;
599  portName.format(
600  "%s_seqCancelIn_InputPort[%" PRI_FwIndexType "]",
601  this->m_objName.toChar(),
602  port
603  );
604  this->m_seqCancelIn_InputPort[port].setObjName(portName.toChar());
605 #endif
606  }
607 #endif
608 
609 #if !FW_DIRECT_PORT_CALLS
610  // Connect input port seqRunIn
611  for (
612  FwIndexType port = 0;
613  port < static_cast<FwIndexType>(this->getNum_seqRunIn_InputPorts());
614  port++
615  ) {
616  this->m_seqRunIn_InputPort[port].init();
617  this->m_seqRunIn_InputPort[port].addCallComp(
618  this,
619  m_p_seqRunIn_in
620  );
621  this->m_seqRunIn_InputPort[port].setPortNum(port);
622 
623 #if FW_OBJECT_NAMES == 1
624  Fw::ObjectName portName;
625  portName.format(
626  "%s_seqRunIn_InputPort[%" PRI_FwIndexType "]",
627  this->m_objName.toChar(),
628  port
629  );
630  this->m_seqRunIn_InputPort[port].setObjName(portName.toChar());
631 #endif
632  }
633 #endif
634 
635 #if !FW_DIRECT_PORT_CALLS
636  // Connect input port tlmWrite
637  for (
638  FwIndexType port = 0;
639  port < static_cast<FwIndexType>(this->getNum_tlmWrite_InputPorts());
640  port++
641  ) {
642  this->m_tlmWrite_InputPort[port].init();
643  this->m_tlmWrite_InputPort[port].addCallComp(
644  this,
645  m_p_tlmWrite_in
646  );
647  this->m_tlmWrite_InputPort[port].setPortNum(port);
648 
649 #if FW_OBJECT_NAMES == 1
650  Fw::ObjectName portName;
651  portName.format(
652  "%s_tlmWrite_InputPort[%" PRI_FwIndexType "]",
653  this->m_objName.toChar(),
654  port
655  );
656  this->m_tlmWrite_InputPort[port].setObjName(portName.toChar());
657 #endif
658  }
659 #endif
660 
661 #if !FW_DIRECT_PORT_CALLS
662  // Connect output port cmdRegOut
663  for (
664  FwIndexType port = 0;
665  port < static_cast<FwIndexType>(this->getNum_cmdRegOut_OutputPorts());
666  port++
667  ) {
668  this->m_cmdRegOut_OutputPort[port].init();
669 
670 #if FW_OBJECT_NAMES == 1
671  Fw::ObjectName portName;
672  portName.format(
673  "%s_cmdRegOut_OutputPort[%" PRI_FwIndexType "]",
674  this->m_objName.toChar(),
675  port
676  );
677  this->m_cmdRegOut_OutputPort[port].setObjName(portName.toChar());
678 #endif
679  }
680 #endif
681 
682 #if !FW_DIRECT_PORT_CALLS
683  // Connect output port cmdResponseOut
684  for (
685  FwIndexType port = 0;
686  port < static_cast<FwIndexType>(this->getNum_cmdResponseOut_OutputPorts());
687  port++
688  ) {
689  this->m_cmdResponseOut_OutputPort[port].init();
690 
691 #if FW_OBJECT_NAMES == 1
692  Fw::ObjectName portName;
693  portName.format(
694  "%s_cmdResponseOut_OutputPort[%" PRI_FwIndexType "]",
695  this->m_objName.toChar(),
696  port
697  );
698  this->m_cmdResponseOut_OutputPort[port].setObjName(portName.toChar());
699 #endif
700  }
701 #endif
702 
703 #if !FW_DIRECT_PORT_CALLS
704  // Connect output port logOut
705  for (
706  FwIndexType port = 0;
707  port < static_cast<FwIndexType>(this->getNum_logOut_OutputPorts());
708  port++
709  ) {
710  this->m_logOut_OutputPort[port].init();
711 
712 #if FW_OBJECT_NAMES == 1
713  Fw::ObjectName portName;
714  portName.format(
715  "%s_logOut_OutputPort[%" PRI_FwIndexType "]",
716  this->m_objName.toChar(),
717  port
718  );
719  this->m_logOut_OutputPort[port].setObjName(portName.toChar());
720 #endif
721  }
722 #endif
723 
724 #if !FW_DIRECT_PORT_CALLS && FW_ENABLE_TEXT_LOGGING
725  // Connect output port logTextOut
726  for (
727  FwIndexType port = 0;
728  port < static_cast<FwIndexType>(this->getNum_logTextOut_OutputPorts());
729  port++
730  ) {
731  this->m_logTextOut_OutputPort[port].init();
732 
733 #if FW_OBJECT_NAMES == 1
734  Fw::ObjectName portName;
735  portName.format(
736  "%s_logTextOut_OutputPort[%" PRI_FwIndexType "]",
737  this->m_objName.toChar(),
738  port
739  );
740  this->m_logTextOut_OutputPort[port].setObjName(portName.toChar());
741 #endif
742  }
743 #endif
744 
745 #if !FW_DIRECT_PORT_CALLS
746  // Connect output port prmGet
747  for (
748  FwIndexType port = 0;
749  port < static_cast<FwIndexType>(this->getNum_prmGet_OutputPorts());
750  port++
751  ) {
752  this->m_prmGet_OutputPort[port].init();
753 
754 #if FW_OBJECT_NAMES == 1
755  Fw::ObjectName portName;
756  portName.format(
757  "%s_prmGet_OutputPort[%" PRI_FwIndexType "]",
758  this->m_objName.toChar(),
759  port
760  );
761  this->m_prmGet_OutputPort[port].setObjName(portName.toChar());
762 #endif
763  }
764 #endif
765 
766 #if !FW_DIRECT_PORT_CALLS
767  // Connect output port prmSet
768  for (
769  FwIndexType port = 0;
770  port < static_cast<FwIndexType>(this->getNum_prmSet_OutputPorts());
771  port++
772  ) {
773  this->m_prmSet_OutputPort[port].init();
774 
775 #if FW_OBJECT_NAMES == 1
776  Fw::ObjectName portName;
777  portName.format(
778  "%s_prmSet_OutputPort[%" PRI_FwIndexType "]",
779  this->m_objName.toChar(),
780  port
781  );
782  this->m_prmSet_OutputPort[port].setObjName(portName.toChar());
783 #endif
784  }
785 #endif
786 
787 #if !FW_DIRECT_PORT_CALLS
788  // Connect output port timeCaller
789  for (
790  FwIndexType port = 0;
791  port < static_cast<FwIndexType>(this->getNum_timeCaller_OutputPorts());
792  port++
793  ) {
794  this->m_timeCaller_OutputPort[port].init();
795 
796 #if FW_OBJECT_NAMES == 1
797  Fw::ObjectName portName;
798  portName.format(
799  "%s_timeCaller_OutputPort[%" PRI_FwIndexType "]",
800  this->m_objName.toChar(),
801  port
802  );
803  this->m_timeCaller_OutputPort[port].setObjName(portName.toChar());
804 #endif
805  }
806 #endif
807 
808 #if !FW_DIRECT_PORT_CALLS
809  // Connect output port tlmOut
810  for (
811  FwIndexType port = 0;
812  port < static_cast<FwIndexType>(this->getNum_tlmOut_OutputPorts());
813  port++
814  ) {
815  this->m_tlmOut_OutputPort[port].init();
816 
817 #if FW_OBJECT_NAMES == 1
818  Fw::ObjectName portName;
819  portName.format(
820  "%s_tlmOut_OutputPort[%" PRI_FwIndexType "]",
821  this->m_objName.toChar(),
822  port
823  );
824  this->m_tlmOut_OutputPort[port].setObjName(portName.toChar());
825 #endif
826  }
827 #endif
828 
829 #if !FW_DIRECT_PORT_CALLS
830  // Connect output port cmdOut
831  for (
832  FwIndexType port = 0;
833  port < static_cast<FwIndexType>(this->getNum_cmdOut_OutputPorts());
834  port++
835  ) {
836  this->m_cmdOut_OutputPort[port].init();
837 
838 #if FW_OBJECT_NAMES == 1
839  Fw::ObjectName portName;
840  portName.format(
841  "%s_cmdOut_OutputPort[%" PRI_FwIndexType "]",
842  this->m_objName.toChar(),
843  port
844  );
845  this->m_cmdOut_OutputPort[port].setObjName(portName.toChar());
846 #endif
847  }
848 #endif
849 
850 #if !FW_DIRECT_PORT_CALLS
851  // Connect output port getParam
852  for (
853  FwIndexType port = 0;
854  port < static_cast<FwIndexType>(this->getNum_getParam_OutputPorts());
855  port++
856  ) {
857  this->m_getParam_OutputPort[port].init();
858 
859 #if FW_OBJECT_NAMES == 1
860  Fw::ObjectName portName;
861  portName.format(
862  "%s_getParam_OutputPort[%" PRI_FwIndexType "]",
863  this->m_objName.toChar(),
864  port
865  );
866  this->m_getParam_OutputPort[port].setObjName(portName.toChar());
867 #endif
868  }
869 #endif
870 
871 #if !FW_DIRECT_PORT_CALLS
872  // Connect output port getTlmChan
873  for (
874  FwIndexType port = 0;
875  port < static_cast<FwIndexType>(this->getNum_getTlmChan_OutputPorts());
876  port++
877  ) {
878  this->m_getTlmChan_OutputPort[port].init();
879 
880 #if FW_OBJECT_NAMES == 1
881  Fw::ObjectName portName;
882  portName.format(
883  "%s_getTlmChan_OutputPort[%" PRI_FwIndexType "]",
884  this->m_objName.toChar(),
885  port
886  );
887  this->m_getTlmChan_OutputPort[port].setObjName(portName.toChar());
888 #endif
889  }
890 #endif
891 
892 #if !FW_DIRECT_PORT_CALLS
893  // Connect output port pingOut
894  for (
895  FwIndexType port = 0;
896  port < static_cast<FwIndexType>(this->getNum_pingOut_OutputPorts());
897  port++
898  ) {
899  this->m_pingOut_OutputPort[port].init();
900 
901 #if FW_OBJECT_NAMES == 1
902  Fw::ObjectName portName;
903  portName.format(
904  "%s_pingOut_OutputPort[%" PRI_FwIndexType "]",
905  this->m_objName.toChar(),
906  port
907  );
908  this->m_pingOut_OutputPort[port].setObjName(portName.toChar());
909 #endif
910  }
911 #endif
912 
913 #if !FW_DIRECT_PORT_CALLS
914  // Connect output port seqDoneOut
915  for (
916  FwIndexType port = 0;
917  port < static_cast<FwIndexType>(this->getNum_seqDoneOut_OutputPorts());
918  port++
919  ) {
920  this->m_seqDoneOut_OutputPort[port].init();
921 
922 #if FW_OBJECT_NAMES == 1
923  Fw::ObjectName portName;
924  portName.format(
925  "%s_seqDoneOut_OutputPort[%" PRI_FwIndexType "]",
926  this->m_objName.toChar(),
927  port
928  );
929  this->m_seqDoneOut_OutputPort[port].setObjName(portName.toChar());
930 #endif
931  }
932 #endif
933 
934 #if !FW_DIRECT_PORT_CALLS
935  // Connect output port seqStartOut
936  for (
937  FwIndexType port = 0;
938  port < static_cast<FwIndexType>(this->getNum_seqStartOut_OutputPorts());
939  port++
940  ) {
941  this->m_seqStartOut_OutputPort[port].init();
942 
943 #if FW_OBJECT_NAMES == 1
944  Fw::ObjectName portName;
945  portName.format(
946  "%s_seqStartOut_OutputPort[%" PRI_FwIndexType "]",
947  this->m_objName.toChar(),
948  port
949  );
950  this->m_seqStartOut_OutputPort[port].setObjName(portName.toChar());
951 #endif
952  }
953 #endif
954 
955  // Create the queue
956  Os::Queue::Status qStat = this->createQueue(
957  queueDepth,
958  static_cast<FwSizeType>(ComponentIpcSerializableBuffer::SERIALIZATION_SIZE)
959  );
960  FW_ASSERT(
961  Os::Queue::Status::OP_OK == qStat,
962  static_cast<FwAssertArgType>(qStat)
963  );
964  }
965 
966 #if !FW_DIRECT_PORT_CALLS
967 
968  // ----------------------------------------------------------------------
969  // Getters for special input ports
970  // ----------------------------------------------------------------------
971 
974  {
975  FW_ASSERT(
976  (0 <= portNum) && (portNum < this->getNum_cmdIn_InputPorts()),
977  static_cast<FwAssertArgType>(portNum)
978  );
979 
980  return &this->m_cmdIn_InputPort[portNum];
981  }
982 
983 #endif
984 
985 #if !FW_DIRECT_PORT_CALLS
986 
987  // ----------------------------------------------------------------------
988  // Getters for typed input ports
989  // ----------------------------------------------------------------------
990 
993  {
994  FW_ASSERT(
995  (0 <= portNum) && (portNum < this->getNum_checkTimers_InputPorts()),
996  static_cast<FwAssertArgType>(portNum)
997  );
998 
999  return &this->m_checkTimers_InputPort[portNum];
1000  }
1001 
1004  {
1005  FW_ASSERT(
1006  (0 <= portNum) && (portNum < this->getNum_cmdResponseIn_InputPorts()),
1007  static_cast<FwAssertArgType>(portNum)
1008  );
1009 
1010  return &this->m_cmdResponseIn_InputPort[portNum];
1011  }
1012 
1015  {
1016  FW_ASSERT(
1017  (0 <= portNum) && (portNum < this->getNum_pingIn_InputPorts()),
1018  static_cast<FwAssertArgType>(portNum)
1019  );
1020 
1021  return &this->m_pingIn_InputPort[portNum];
1022  }
1023 
1026  {
1027  FW_ASSERT(
1028  (0 <= portNum) && (portNum < this->getNum_seqCancelIn_InputPorts()),
1029  static_cast<FwAssertArgType>(portNum)
1030  );
1031 
1032  return &this->m_seqCancelIn_InputPort[portNum];
1033  }
1034 
1037  {
1038  FW_ASSERT(
1039  (0 <= portNum) && (portNum < this->getNum_seqRunIn_InputPorts()),
1040  static_cast<FwAssertArgType>(portNum)
1041  );
1042 
1043  return &this->m_seqRunIn_InputPort[portNum];
1044  }
1045 
1048  {
1049  FW_ASSERT(
1050  (0 <= portNum) && (portNum < this->getNum_tlmWrite_InputPorts()),
1051  static_cast<FwAssertArgType>(portNum)
1052  );
1053 
1054  return &this->m_tlmWrite_InputPort[portNum];
1055  }
1056 
1057 #endif
1058 
1059 #if !FW_DIRECT_PORT_CALLS
1060 
1061  // ----------------------------------------------------------------------
1062  // Connect input ports to special output ports
1063  // ----------------------------------------------------------------------
1064 
1067  FwIndexType portNum,
1068  Fw::InputCmdRegPort* port
1069  )
1070  {
1071  FW_ASSERT(
1072  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
1073  static_cast<FwAssertArgType>(portNum)
1074  );
1075 
1076  this->m_cmdRegOut_OutputPort[portNum].addCallPort(port);
1077  }
1078 
1081  FwIndexType portNum,
1083  )
1084  {
1085  FW_ASSERT(
1086  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
1087  static_cast<FwAssertArgType>(portNum)
1088  );
1089 
1090  this->m_cmdResponseOut_OutputPort[portNum].addCallPort(port);
1091  }
1092 
1095  FwIndexType portNum,
1096  Fw::InputLogPort* port
1097  )
1098  {
1099  FW_ASSERT(
1100  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
1101  static_cast<FwAssertArgType>(portNum)
1102  );
1103 
1104  this->m_logOut_OutputPort[portNum].addCallPort(port);
1105  }
1106 
1107 #if FW_ENABLE_TEXT_LOGGING == 1
1108 
1109  void FpySequencerComponentBase ::
1110  set_logTextOut_OutputPort(
1111  FwIndexType portNum,
1112  Fw::InputLogTextPort* port
1113  )
1114  {
1115  FW_ASSERT(
1116  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
1117  static_cast<FwAssertArgType>(portNum)
1118  );
1119 
1120  this->m_logTextOut_OutputPort[portNum].addCallPort(port);
1121  }
1122 
1123 #endif
1124 
1127  FwIndexType portNum,
1128  Fw::InputPrmGetPort* port
1129  )
1130  {
1131  FW_ASSERT(
1132  (0 <= portNum) && (portNum < this->getNum_prmGet_OutputPorts()),
1133  static_cast<FwAssertArgType>(portNum)
1134  );
1135 
1136  this->m_prmGet_OutputPort[portNum].addCallPort(port);
1137  }
1138 
1141  FwIndexType portNum,
1142  Fw::InputPrmSetPort* port
1143  )
1144  {
1145  FW_ASSERT(
1146  (0 <= portNum) && (portNum < this->getNum_prmSet_OutputPorts()),
1147  static_cast<FwAssertArgType>(portNum)
1148  );
1149 
1150  this->m_prmSet_OutputPort[portNum].addCallPort(port);
1151  }
1152 
1155  FwIndexType portNum,
1156  Fw::InputTimePort* port
1157  )
1158  {
1159  FW_ASSERT(
1160  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
1161  static_cast<FwAssertArgType>(portNum)
1162  );
1163 
1164  this->m_timeCaller_OutputPort[portNum].addCallPort(port);
1165  }
1166 
1169  FwIndexType portNum,
1170  Fw::InputTlmPort* port
1171  )
1172  {
1173  FW_ASSERT(
1174  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
1175  static_cast<FwAssertArgType>(portNum)
1176  );
1177 
1178  this->m_tlmOut_OutputPort[portNum].addCallPort(port);
1179  }
1180 
1181 #endif
1182 
1183 #if !FW_DIRECT_PORT_CALLS
1184 
1185  // ----------------------------------------------------------------------
1186  // Connect typed input ports to typed output ports
1187  // ----------------------------------------------------------------------
1188 
1191  FwIndexType portNum,
1192  Fw::InputComPort* port
1193  )
1194  {
1195  FW_ASSERT(
1196  (0 <= portNum) && (portNum < this->getNum_cmdOut_OutputPorts()),
1197  static_cast<FwAssertArgType>(portNum)
1198  );
1199 
1200  this->m_cmdOut_OutputPort[portNum].addCallPort(port);
1201  }
1202 
1205  FwIndexType portNum,
1206  Fw::InputPrmGetPort* port
1207  )
1208  {
1209  FW_ASSERT(
1210  (0 <= portNum) && (portNum < this->getNum_getParam_OutputPorts()),
1211  static_cast<FwAssertArgType>(portNum)
1212  );
1213 
1214  this->m_getParam_OutputPort[portNum].addCallPort(port);
1215  }
1216 
1219  FwIndexType portNum,
1220  Fw::InputTlmGetPort* port
1221  )
1222  {
1223  FW_ASSERT(
1224  (0 <= portNum) && (portNum < this->getNum_getTlmChan_OutputPorts()),
1225  static_cast<FwAssertArgType>(portNum)
1226  );
1227 
1228  this->m_getTlmChan_OutputPort[portNum].addCallPort(port);
1229  }
1230 
1233  FwIndexType portNum,
1234  Svc::InputPingPort* port
1235  )
1236  {
1237  FW_ASSERT(
1238  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
1239  static_cast<FwAssertArgType>(portNum)
1240  );
1241 
1242  this->m_pingOut_OutputPort[portNum].addCallPort(port);
1243  }
1244 
1247  FwIndexType portNum,
1249  )
1250  {
1251  FW_ASSERT(
1252  (0 <= portNum) && (portNum < this->getNum_seqDoneOut_OutputPorts()),
1253  static_cast<FwAssertArgType>(portNum)
1254  );
1255 
1256  this->m_seqDoneOut_OutputPort[portNum].addCallPort(port);
1257  }
1258 
1261  FwIndexType portNum,
1263  )
1264  {
1265  FW_ASSERT(
1266  (0 <= portNum) && (portNum < this->getNum_seqStartOut_OutputPorts()),
1267  static_cast<FwAssertArgType>(portNum)
1268  );
1269 
1270  this->m_seqStartOut_OutputPort[portNum].addCallPort(port);
1271  }
1272 
1273 #endif
1274 
1275 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
1276 
1277  // ----------------------------------------------------------------------
1278  // Connect serial input ports to special output ports
1279  // ----------------------------------------------------------------------
1280 
1283  FwIndexType portNum,
1284  Fw::InputSerializePort* port
1285  )
1286  {
1287  FW_ASSERT(
1288  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
1289  static_cast<FwAssertArgType>(portNum)
1290  );
1291 
1292  this->m_cmdRegOut_OutputPort[portNum].registerSerialPort(port);
1293  }
1294 
1297  FwIndexType portNum,
1298  Fw::InputSerializePort* port
1299  )
1300  {
1301  FW_ASSERT(
1302  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
1303  static_cast<FwAssertArgType>(portNum)
1304  );
1305 
1306  this->m_cmdResponseOut_OutputPort[portNum].registerSerialPort(port);
1307  }
1308 
1311  FwIndexType portNum,
1312  Fw::InputSerializePort* port
1313  )
1314  {
1315  FW_ASSERT(
1316  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
1317  static_cast<FwAssertArgType>(portNum)
1318  );
1319 
1320  this->m_logOut_OutputPort[portNum].registerSerialPort(port);
1321  }
1322 
1323 #if FW_ENABLE_TEXT_LOGGING == 1
1324 
1325  void FpySequencerComponentBase ::
1326  set_logTextOut_OutputPort(
1327  FwIndexType portNum,
1328  Fw::InputSerializePort* port
1329  )
1330  {
1331  FW_ASSERT(
1332  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
1333  static_cast<FwAssertArgType>(portNum)
1334  );
1335 
1336  this->m_logTextOut_OutputPort[portNum].registerSerialPort(port);
1337  }
1338 
1339 #endif
1340 
1343  FwIndexType portNum,
1344  Fw::InputSerializePort* port
1345  )
1346  {
1347  FW_ASSERT(
1348  (0 <= portNum) && (portNum < this->getNum_prmSet_OutputPorts()),
1349  static_cast<FwAssertArgType>(portNum)
1350  );
1351 
1352  this->m_prmSet_OutputPort[portNum].registerSerialPort(port);
1353  }
1354 
1357  FwIndexType portNum,
1358  Fw::InputSerializePort* port
1359  )
1360  {
1361  FW_ASSERT(
1362  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
1363  static_cast<FwAssertArgType>(portNum)
1364  );
1365 
1366  this->m_timeCaller_OutputPort[portNum].registerSerialPort(port);
1367  }
1368 
1371  FwIndexType portNum,
1372  Fw::InputSerializePort* port
1373  )
1374  {
1375  FW_ASSERT(
1376  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
1377  static_cast<FwAssertArgType>(portNum)
1378  );
1379 
1380  this->m_tlmOut_OutputPort[portNum].registerSerialPort(port);
1381  }
1382 
1383 #endif
1384 
1385 #if !FW_DIRECT_PORT_CALLS && FW_PORT_SERIALIZATION
1386 
1387  // ----------------------------------------------------------------------
1388  // Connect serial input ports to typed output ports
1389  // ----------------------------------------------------------------------
1390 
1393  FwIndexType portNum,
1394  Fw::InputSerializePort* port
1395  )
1396  {
1397  FW_ASSERT(
1398  (0 <= portNum) && (portNum < this->getNum_cmdOut_OutputPorts()),
1399  static_cast<FwAssertArgType>(portNum)
1400  );
1401 
1402  this->m_cmdOut_OutputPort[portNum].registerSerialPort(port);
1403  }
1404 
1407  FwIndexType portNum,
1408  Fw::InputSerializePort* port
1409  )
1410  {
1411  FW_ASSERT(
1412  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
1413  static_cast<FwAssertArgType>(portNum)
1414  );
1415 
1416  this->m_pingOut_OutputPort[portNum].registerSerialPort(port);
1417  }
1418 
1421  FwIndexType portNum,
1422  Fw::InputSerializePort* port
1423  )
1424  {
1425  FW_ASSERT(
1426  (0 <= portNum) && (portNum < this->getNum_seqDoneOut_OutputPorts()),
1427  static_cast<FwAssertArgType>(portNum)
1428  );
1429 
1430  this->m_seqDoneOut_OutputPort[portNum].registerSerialPort(port);
1431  }
1432 
1435  FwIndexType portNum,
1436  Fw::InputSerializePort* port
1437  )
1438  {
1439  FW_ASSERT(
1440  (0 <= portNum) && (portNum < this->getNum_seqStartOut_OutputPorts()),
1441  static_cast<FwAssertArgType>(portNum)
1442  );
1443 
1444  this->m_seqStartOut_OutputPort[portNum].registerSerialPort(port);
1445  }
1446 
1447 #endif
1448 
1449  // ----------------------------------------------------------------------
1450  // Command registration
1451  // ----------------------------------------------------------------------
1452 
1455  {
1457 
1458  this->cmdRegOut_out(
1459  0,
1460  this->getIdBase() + OPCODE_RUN
1461  );
1462 
1463  this->cmdRegOut_out(
1464  0,
1465  this->getIdBase() + OPCODE_RUN_ARGS
1466  );
1467 
1468  this->cmdRegOut_out(
1469  0,
1470  this->getIdBase() + OPCODE_VALIDATE
1471  );
1472 
1473  this->cmdRegOut_out(
1474  0,
1476  );
1477 
1478  this->cmdRegOut_out(
1479  0,
1481  );
1482 
1483  this->cmdRegOut_out(
1484  0,
1485  this->getIdBase() + OPCODE_CANCEL
1486  );
1487 
1488  this->cmdRegOut_out(
1489  0,
1491  );
1492 
1493  this->cmdRegOut_out(
1494  0,
1495  this->getIdBase() + OPCODE_BREAK
1496  );
1497 
1498  this->cmdRegOut_out(
1499  0,
1500  this->getIdBase() + OPCODE_CONTINUE
1501  );
1502 
1503  this->cmdRegOut_out(
1504  0,
1506  );
1507 
1508  this->cmdRegOut_out(
1509  0,
1510  this->getIdBase() + OPCODE_STEP
1511  );
1512 
1513  this->cmdRegOut_out(
1514  0,
1516  );
1517 
1518  this->cmdRegOut_out(
1519  0,
1521  );
1522 
1523  this->cmdRegOut_out(
1524  0,
1526  );
1527  }
1528 
1529  // ----------------------------------------------------------------------
1530  // Parameter loading
1531  // ----------------------------------------------------------------------
1532 
1535  {
1536  Fw::ParamBuffer _buff;
1538  const FwPrmIdType _baseId = static_cast<FwPrmIdType>(this->getIdBase());
1540 
1541  FwPrmIdType _id{};
1542 
1543  _id = _baseId + PARAMID_STATEMENT_TIMEOUT_SECS;
1544 
1545  // Get parameter STATEMENT_TIMEOUT_SECS
1546  this->m_param_STATEMENT_TIMEOUT_SECS_valid = this->prmGet_out(
1547  0,
1548  _id,
1549  _buff
1550  );
1551 
1552  // Deserialize value
1553  this->m_paramLock.lock();
1554 
1555  // If there was a deserialization issue, mark it invalid
1556  if (this->m_param_STATEMENT_TIMEOUT_SECS_valid == Fw::ParamValid::VALID) {
1557  _stat = _buff.deserializeTo(this->m_STATEMENT_TIMEOUT_SECS);
1558  if (_stat != Fw::FW_SERIALIZE_OK) {
1559  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::DEFAULT;
1560  // Set default value
1561  this->m_STATEMENT_TIMEOUT_SECS = 0.0f;
1562  }
1563  }
1564  else {
1565  // Set default value
1566  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::DEFAULT;
1567  this->m_STATEMENT_TIMEOUT_SECS = 0.0f;
1568  }
1569 
1570  this->m_paramLock.unLock();
1571 
1572  // Call notifier
1573  this->parametersLoaded();
1574  }
1575 
1576  // ----------------------------------------------------------------------
1577  // Component construction and destruction
1578  // ----------------------------------------------------------------------
1579 
1581  FpySequencerComponentBase(const char* compName) :
1582  Fw::ActiveComponentBase(compName),
1583  m_stateMachine_sequencer(*this)
1584  {
1585  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::UNINIT;
1586  }
1587 
1590  {
1591 
1592  }
1593 
1594 #if !FW_DIRECT_PORT_CALLS
1595 
1596  // ----------------------------------------------------------------------
1597  // Connection status queries for special output ports
1598  // ----------------------------------------------------------------------
1599 
1602  {
1603  FW_ASSERT(
1604  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
1605  static_cast<FwAssertArgType>(portNum)
1606  );
1607 
1608  return this->m_cmdRegOut_OutputPort[portNum].isConnected();
1609  }
1610 
1613  {
1614  FW_ASSERT(
1615  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
1616  static_cast<FwAssertArgType>(portNum)
1617  );
1618 
1619  return this->m_cmdResponseOut_OutputPort[portNum].isConnected();
1620  }
1621 
1624  {
1625  FW_ASSERT(
1626  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
1627  static_cast<FwAssertArgType>(portNum)
1628  );
1629 
1630  return this->m_logOut_OutputPort[portNum].isConnected();
1631  }
1632 
1633 #if FW_ENABLE_TEXT_LOGGING == 1
1634 
1635  bool FpySequencerComponentBase ::
1636  isConnected_logTextOut_OutputPort(FwIndexType portNum) const
1637  {
1638  FW_ASSERT(
1639  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
1640  static_cast<FwAssertArgType>(portNum)
1641  );
1642 
1643  return this->m_logTextOut_OutputPort[portNum].isConnected();
1644  }
1645 
1646 #endif
1647 
1650  {
1651  FW_ASSERT(
1652  (0 <= portNum) && (portNum < this->getNum_prmGet_OutputPorts()),
1653  static_cast<FwAssertArgType>(portNum)
1654  );
1655 
1656  return this->m_prmGet_OutputPort[portNum].isConnected();
1657  }
1658 
1661  {
1662  FW_ASSERT(
1663  (0 <= portNum) && (portNum < this->getNum_prmSet_OutputPorts()),
1664  static_cast<FwAssertArgType>(portNum)
1665  );
1666 
1667  return this->m_prmSet_OutputPort[portNum].isConnected();
1668  }
1669 
1672  {
1673  FW_ASSERT(
1674  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
1675  static_cast<FwAssertArgType>(portNum)
1676  );
1677 
1678  return this->m_timeCaller_OutputPort[portNum].isConnected();
1679  }
1680 
1683  {
1684  FW_ASSERT(
1685  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
1686  static_cast<FwAssertArgType>(portNum)
1687  );
1688 
1689  return this->m_tlmOut_OutputPort[portNum].isConnected();
1690  }
1691 
1692 #endif
1693 
1694 #if !FW_DIRECT_PORT_CALLS
1695 
1696  // ----------------------------------------------------------------------
1697  // Connection status queries for typed output ports
1698  // ----------------------------------------------------------------------
1699 
1702  {
1703  FW_ASSERT(
1704  (0 <= portNum) && (portNum < this->getNum_cmdOut_OutputPorts()),
1705  static_cast<FwAssertArgType>(portNum)
1706  );
1707 
1708  return this->m_cmdOut_OutputPort[portNum].isConnected();
1709  }
1710 
1713  {
1714  FW_ASSERT(
1715  (0 <= portNum) && (portNum < this->getNum_getParam_OutputPorts()),
1716  static_cast<FwAssertArgType>(portNum)
1717  );
1718 
1719  return this->m_getParam_OutputPort[portNum].isConnected();
1720  }
1721 
1724  {
1725  FW_ASSERT(
1726  (0 <= portNum) && (portNum < this->getNum_getTlmChan_OutputPorts()),
1727  static_cast<FwAssertArgType>(portNum)
1728  );
1729 
1730  return this->m_getTlmChan_OutputPort[portNum].isConnected();
1731  }
1732 
1735  {
1736  FW_ASSERT(
1737  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
1738  static_cast<FwAssertArgType>(portNum)
1739  );
1740 
1741  return this->m_pingOut_OutputPort[portNum].isConnected();
1742  }
1743 
1746  {
1747  FW_ASSERT(
1748  (0 <= portNum) && (portNum < this->getNum_seqDoneOut_OutputPorts()),
1749  static_cast<FwAssertArgType>(portNum)
1750  );
1751 
1752  return this->m_seqDoneOut_OutputPort[portNum].isConnected();
1753  }
1754 
1757  {
1758  FW_ASSERT(
1759  (0 <= portNum) && (portNum < this->getNum_seqStartOut_OutputPorts()),
1760  static_cast<FwAssertArgType>(portNum)
1761  );
1762 
1763  return this->m_seqStartOut_OutputPort[portNum].isConnected();
1764  }
1765 
1766 #endif
1767 
1768  // ----------------------------------------------------------------------
1769  // Port handler base-class functions for special input ports
1770  //
1771  // Call these functions directly to bypass the corresponding ports
1772  // ----------------------------------------------------------------------
1773 
1776  FwIndexType portNum,
1777  FwOpcodeType opCode,
1778  U32 cmdSeq,
1779  Fw::CmdArgBuffer& args
1780  )
1781  {
1782 
1783  const U32 idBase = this->getIdBase();
1784  FW_ASSERT(opCode >= idBase, static_cast<FwAssertArgType>(opCode), static_cast<FwAssertArgType>(idBase));
1785 
1786  // Select base class function based on opcode
1787  switch (opCode - idBase) {
1788  case OPCODE_RUN: {
1789  this->RUN_cmdHandlerBase(
1790  opCode,
1791  cmdSeq,
1792  args
1793  );
1794  break;
1795  }
1796 
1797  case OPCODE_RUN_ARGS: {
1799  opCode,
1800  cmdSeq,
1801  args
1802  );
1803  break;
1804  }
1805 
1806  case OPCODE_VALIDATE: {
1808  opCode,
1809  cmdSeq,
1810  args
1811  );
1812  break;
1813  }
1814 
1815  case OPCODE_VALIDATE_ARGS: {
1817  opCode,
1818  cmdSeq,
1819  args
1820  );
1821  break;
1822  }
1823 
1824  case OPCODE_RUN_VALIDATED: {
1826  opCode,
1827  cmdSeq,
1828  args
1829  );
1830  break;
1831  }
1832 
1833  case OPCODE_CANCEL: {
1834  this->CANCEL_cmdHandlerBase(
1835  opCode,
1836  cmdSeq,
1837  args
1838  );
1839  break;
1840  }
1841 
1842  case OPCODE_SET_BREAKPOINT: {
1844  opCode,
1845  cmdSeq,
1846  args
1847  );
1848  break;
1849  }
1850 
1851  case OPCODE_BREAK: {
1852  this->BREAK_cmdHandlerBase(
1853  opCode,
1854  cmdSeq,
1855  args
1856  );
1857  break;
1858  }
1859 
1860  case OPCODE_CONTINUE: {
1862  opCode,
1863  cmdSeq,
1864  args
1865  );
1866  break;
1867  }
1868 
1869  case OPCODE_CLEAR_BREAKPOINT: {
1871  opCode,
1872  cmdSeq,
1873  args
1874  );
1875  break;
1876  }
1877 
1878  case OPCODE_STEP: {
1879  this->STEP_cmdHandlerBase(
1880  opCode,
1881  cmdSeq,
1882  args
1883  );
1884  break;
1885  }
1886 
1889  opCode,
1890  cmdSeq,
1891  args
1892  );
1893  break;
1894  }
1895 
1897  Fw::CmdResponse _cstat = this->paramSet_STATEMENT_TIMEOUT_SECS(args);
1898  this->cmdResponse_out(
1899  opCode,
1900  cmdSeq,
1901  _cstat
1902  );
1903  break;
1904  }
1905 
1907  Fw::CmdResponse _cstat = this->paramSave_STATEMENT_TIMEOUT_SECS();
1908  this->cmdResponse_out(
1909  opCode,
1910  cmdSeq,
1911  _cstat
1912  );
1913  break;
1914  }
1915  default:
1916  // Unknown opcode: ignore it
1917  break;
1918  }
1919  }
1920 
1921  // ----------------------------------------------------------------------
1922  // Port handler base-class functions for typed input ports
1923  //
1924  // Call these functions directly to bypass the corresponding ports
1925  // ----------------------------------------------------------------------
1926 
1929  FwIndexType portNum,
1930  U32 context
1931  )
1932  {
1933  // Make sure port number is valid
1934  FW_ASSERT(
1935  (0 <= portNum) && (portNum < this->getNum_checkTimers_InputPorts()),
1936  static_cast<FwAssertArgType>(portNum)
1937  );
1938 
1939  // Call pre-message hook
1941  portNum,
1942  context
1943  );
1944  ComponentIpcSerializableBuffer msg;
1946 
1947  // Serialize message ID
1948  _status = msg.serializeFrom(
1949  static_cast<FwEnumStoreType>(CHECKTIMERS_SCHED)
1950  );
1951  FW_ASSERT(
1952  _status == Fw::FW_SERIALIZE_OK,
1953  static_cast<FwAssertArgType>(_status)
1954  );
1955 
1956  // Serialize port number
1957  _status = msg.serializeFrom(portNum);
1958  FW_ASSERT(
1959  _status == Fw::FW_SERIALIZE_OK,
1960  static_cast<FwAssertArgType>(_status)
1961  );
1962 
1963  // Serialize argument context
1964  _status = msg.serializeFrom(context);
1965  FW_ASSERT(
1966  _status == Fw::FW_SERIALIZE_OK,
1967  static_cast<FwAssertArgType>(_status)
1968  );
1969 
1970  // Send message
1972  Os::Queue::Status qStatus = this->m_queue.send(msg, 4, _block);
1973 
1974  FW_ASSERT(
1975  qStatus == Os::Queue::OP_OK,
1976  static_cast<FwAssertArgType>(qStatus)
1977  );
1978  }
1979 
1982  FwIndexType portNum,
1983  FwOpcodeType opCode,
1984  U32 cmdSeq,
1985  const Fw::CmdResponse& response
1986  )
1987  {
1988  // Make sure port number is valid
1989  FW_ASSERT(
1990  (0 <= portNum) && (portNum < this->getNum_cmdResponseIn_InputPorts()),
1991  static_cast<FwAssertArgType>(portNum)
1992  );
1993 
1994  // Call pre-message hook
1996  portNum,
1997  opCode,
1998  cmdSeq,
1999  response
2000  );
2001  ComponentIpcSerializableBuffer msg;
2003 
2004  // Serialize message ID
2005  _status = msg.serializeFrom(
2006  static_cast<FwEnumStoreType>(CMDRESPONSEIN_CMDRESPONSE)
2007  );
2008  FW_ASSERT(
2009  _status == Fw::FW_SERIALIZE_OK,
2010  static_cast<FwAssertArgType>(_status)
2011  );
2012 
2013  // Serialize port number
2014  _status = msg.serializeFrom(portNum);
2015  FW_ASSERT(
2016  _status == Fw::FW_SERIALIZE_OK,
2017  static_cast<FwAssertArgType>(_status)
2018  );
2019 
2020  // Serialize argument opCode
2021  _status = msg.serializeFrom(opCode);
2022  FW_ASSERT(
2023  _status == Fw::FW_SERIALIZE_OK,
2024  static_cast<FwAssertArgType>(_status)
2025  );
2026 
2027  // Serialize argument cmdSeq
2028  _status = msg.serializeFrom(cmdSeq);
2029  FW_ASSERT(
2030  _status == Fw::FW_SERIALIZE_OK,
2031  static_cast<FwAssertArgType>(_status)
2032  );
2033 
2034  // Serialize argument response
2035  _status = msg.serializeFrom(response);
2036  FW_ASSERT(
2037  _status == Fw::FW_SERIALIZE_OK,
2038  static_cast<FwAssertArgType>(_status)
2039  );
2040 
2041  // Send message
2043  Os::Queue::Status qStatus = this->m_queue.send(msg, 5, _block);
2044 
2045  FW_ASSERT(
2046  qStatus == Os::Queue::OP_OK,
2047  static_cast<FwAssertArgType>(qStatus)
2048  );
2049  }
2050 
2053  FwIndexType portNum,
2054  U32 key
2055  )
2056  {
2057  // Make sure port number is valid
2058  FW_ASSERT(
2059  (0 <= portNum) && (portNum < this->getNum_pingIn_InputPorts()),
2060  static_cast<FwAssertArgType>(portNum)
2061  );
2062 
2063  // Call pre-message hook
2065  portNum,
2066  key
2067  );
2068  ComponentIpcSerializableBuffer msg;
2070 
2071  // Serialize message ID
2072  _status = msg.serializeFrom(
2073  static_cast<FwEnumStoreType>(PINGIN_PING)
2074  );
2075  FW_ASSERT(
2076  _status == Fw::FW_SERIALIZE_OK,
2077  static_cast<FwAssertArgType>(_status)
2078  );
2079 
2080  // Serialize port number
2081  _status = msg.serializeFrom(portNum);
2082  FW_ASSERT(
2083  _status == Fw::FW_SERIALIZE_OK,
2084  static_cast<FwAssertArgType>(_status)
2085  );
2086 
2087  // Serialize argument key
2088  _status = msg.serializeFrom(key);
2089  FW_ASSERT(
2090  _status == Fw::FW_SERIALIZE_OK,
2091  static_cast<FwAssertArgType>(_status)
2092  );
2093 
2094  // Send message
2096  Os::Queue::Status qStatus = this->m_queue.send(msg, 10, _block);
2097 
2098  FW_ASSERT(
2099  qStatus == Os::Queue::OP_OK,
2100  static_cast<FwAssertArgType>(qStatus)
2101  );
2102  }
2103 
2106  {
2107  // Make sure port number is valid
2108  FW_ASSERT(
2109  (0 <= portNum) && (portNum < this->getNum_seqCancelIn_InputPorts()),
2110  static_cast<FwAssertArgType>(portNum)
2111  );
2112 
2113  // Call pre-message hook
2114  seqCancelIn_preMsgHook(portNum);
2115  ComponentIpcSerializableBuffer msg;
2117 
2118  // Serialize message ID
2119  _status = msg.serializeFrom(
2120  static_cast<FwEnumStoreType>(SEQCANCELIN_CMDSEQCANCEL)
2121  );
2122  FW_ASSERT(
2123  _status == Fw::FW_SERIALIZE_OK,
2124  static_cast<FwAssertArgType>(_status)
2125  );
2126 
2127  // Serialize port number
2128  _status = msg.serializeFrom(portNum);
2129  FW_ASSERT(
2130  _status == Fw::FW_SERIALIZE_OK,
2131  static_cast<FwAssertArgType>(_status)
2132  );
2133 
2134  // Send message
2136  Os::Queue::Status qStatus = this->m_queue.send(msg, 8, _block);
2137 
2138  FW_ASSERT(
2139  qStatus == Os::Queue::OP_OK,
2140  static_cast<FwAssertArgType>(qStatus)
2141  );
2142  }
2143 
2146  FwIndexType portNum,
2147  const Fw::StringBase& filename,
2148  const Svc::SeqArgs& args
2149  )
2150  {
2151  // Make sure port number is valid
2152  FW_ASSERT(
2153  (0 <= portNum) && (portNum < this->getNum_seqRunIn_InputPorts()),
2154  static_cast<FwAssertArgType>(portNum)
2155  );
2156 
2157  // Call pre-message hook
2159  portNum,
2160  filename,
2161  args
2162  );
2163  ComponentIpcSerializableBuffer msg;
2165 
2166  // Serialize message ID
2167  _status = msg.serializeFrom(
2168  static_cast<FwEnumStoreType>(SEQRUNIN_CMDSEQIN)
2169  );
2170  FW_ASSERT(
2171  _status == Fw::FW_SERIALIZE_OK,
2172  static_cast<FwAssertArgType>(_status)
2173  );
2174 
2175  // Serialize port number
2176  _status = msg.serializeFrom(portNum);
2177  FW_ASSERT(
2178  _status == Fw::FW_SERIALIZE_OK,
2179  static_cast<FwAssertArgType>(_status)
2180  );
2181 
2182  // Serialize argument filename
2183  _status = filename.serializeTo(msg, 240);
2184  FW_ASSERT(
2185  _status == Fw::FW_SERIALIZE_OK,
2186  static_cast<FwAssertArgType>(_status)
2187  );
2188 
2189  // Serialize argument args
2190  _status = msg.serializeFrom(args);
2191  FW_ASSERT(
2192  _status == Fw::FW_SERIALIZE_OK,
2193  static_cast<FwAssertArgType>(_status)
2194  );
2195 
2196  // Send message
2198  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
2199 
2200  FW_ASSERT(
2201  qStatus == Os::Queue::OP_OK,
2202  static_cast<FwAssertArgType>(qStatus)
2203  );
2204  }
2205 
2208  FwIndexType portNum,
2209  U32 context
2210  )
2211  {
2212  // Make sure port number is valid
2213  FW_ASSERT(
2214  (0 <= portNum) && (portNum < this->getNum_tlmWrite_InputPorts()),
2215  static_cast<FwAssertArgType>(portNum)
2216  );
2217 
2218  // Call pre-message hook
2220  portNum,
2221  context
2222  );
2223  ComponentIpcSerializableBuffer msg;
2225 
2226  // Serialize message ID
2227  _status = msg.serializeFrom(
2228  static_cast<FwEnumStoreType>(TLMWRITE_SCHED)
2229  );
2230  FW_ASSERT(
2231  _status == Fw::FW_SERIALIZE_OK,
2232  static_cast<FwAssertArgType>(_status)
2233  );
2234 
2235  // Serialize port number
2236  _status = msg.serializeFrom(portNum);
2237  FW_ASSERT(
2238  _status == Fw::FW_SERIALIZE_OK,
2239  static_cast<FwAssertArgType>(_status)
2240  );
2241 
2242  // Serialize argument context
2243  _status = msg.serializeFrom(context);
2244  FW_ASSERT(
2245  _status == Fw::FW_SERIALIZE_OK,
2246  static_cast<FwAssertArgType>(_status)
2247  );
2248 
2249  // Send message
2251  Os::Queue::Status qStatus = this->m_queue.send(msg, 1, _block);
2252 
2253  FW_ASSERT(
2254  qStatus == Os::Queue::OP_OK,
2255  static_cast<FwAssertArgType>(qStatus)
2256  );
2257  }
2258 
2259  // ----------------------------------------------------------------------
2260  // Pre-message hooks for typed async input ports
2261  //
2262  // Each of these functions is invoked just before processing a message
2263  // on the corresponding port. By default, they do nothing. You can
2264  // override them to provide specific pre-message behavior.
2265  // ----------------------------------------------------------------------
2266 
2269  FwIndexType portNum,
2270  U32 context
2271  )
2272  {
2273  // Default: no-op
2274  }
2275 
2278  FwIndexType portNum,
2279  FwOpcodeType opCode,
2280  U32 cmdSeq,
2281  const Fw::CmdResponse& response
2282  )
2283  {
2284  // Default: no-op
2285  }
2286 
2289  FwIndexType portNum,
2290  U32 key
2291  )
2292  {
2293  // Default: no-op
2294  }
2295 
2298  {
2299  // Default: no-op
2300  }
2301 
2304  FwIndexType portNum,
2305  const Fw::StringBase& filename,
2306  const Svc::SeqArgs& args
2307  )
2308  {
2309  // Default: no-op
2310  }
2311 
2314  FwIndexType portNum,
2315  U32 context
2316  )
2317  {
2318  // Default: no-op
2319  }
2320 
2321 #if !FW_DIRECT_PORT_CALLS
2322 
2323  // ----------------------------------------------------------------------
2324  // Invocation functions for typed output ports
2325  // ----------------------------------------------------------------------
2326 
2329  FwIndexType portNum,
2330  Fw::ComBuffer& data,
2331  U32 context
2332  ) const
2333  {
2334  FW_ASSERT(
2335  (0 <= portNum) && (portNum < this->getNum_cmdOut_OutputPorts()),
2336  static_cast<FwAssertArgType>(portNum)
2337  );
2338 
2339  FW_ASSERT(
2340  this->m_cmdOut_OutputPort[portNum].isConnected(),
2341  static_cast<FwAssertArgType>(portNum)
2342  );
2343  this->m_cmdOut_OutputPort[portNum].invoke(
2344  data,
2345  context
2346  );
2347  }
2348 
2351  FwIndexType portNum,
2352  FwPrmIdType id,
2353  Fw::ParamBuffer& val
2354  ) const
2355  {
2356  FW_ASSERT(
2357  (0 <= portNum) && (portNum < this->getNum_getParam_OutputPorts()),
2358  static_cast<FwAssertArgType>(portNum)
2359  );
2360 
2361  FW_ASSERT(
2362  this->m_getParam_OutputPort[portNum].isConnected(),
2363  static_cast<FwAssertArgType>(portNum)
2364  );
2365  return this->m_getParam_OutputPort[portNum].invoke(
2366  id,
2367  val
2368  );
2369  }
2370 
2373  FwIndexType portNum,
2374  FwChanIdType id,
2375  Fw::Time& timeTag,
2376  Fw::TlmBuffer& val
2377  ) const
2378  {
2379  FW_ASSERT(
2380  (0 <= portNum) && (portNum < this->getNum_getTlmChan_OutputPorts()),
2381  static_cast<FwAssertArgType>(portNum)
2382  );
2383 
2384  FW_ASSERT(
2385  this->m_getTlmChan_OutputPort[portNum].isConnected(),
2386  static_cast<FwAssertArgType>(portNum)
2387  );
2388  return this->m_getTlmChan_OutputPort[portNum].invoke(
2389  id,
2390  timeTag,
2391  val
2392  );
2393  }
2394 
2397  FwIndexType portNum,
2398  U32 key
2399  ) const
2400  {
2401  FW_ASSERT(
2402  (0 <= portNum) && (portNum < this->getNum_pingOut_OutputPorts()),
2403  static_cast<FwAssertArgType>(portNum)
2404  );
2405 
2406  FW_ASSERT(
2407  this->m_pingOut_OutputPort[portNum].isConnected(),
2408  static_cast<FwAssertArgType>(portNum)
2409  );
2410  this->m_pingOut_OutputPort[portNum].invoke(
2411  key
2412  );
2413  }
2414 
2417  FwIndexType portNum,
2418  FwOpcodeType opCode,
2419  U32 cmdSeq,
2420  const Fw::CmdResponse& response
2421  ) const
2422  {
2423  FW_ASSERT(
2424  (0 <= portNum) && (portNum < this->getNum_seqDoneOut_OutputPorts()),
2425  static_cast<FwAssertArgType>(portNum)
2426  );
2427 
2428  FW_ASSERT(
2429  this->m_seqDoneOut_OutputPort[portNum].isConnected(),
2430  static_cast<FwAssertArgType>(portNum)
2431  );
2432  this->m_seqDoneOut_OutputPort[portNum].invoke(
2433  opCode,
2434  cmdSeq,
2435  response
2436  );
2437  }
2438 
2441  FwIndexType portNum,
2442  const Fw::StringBase& filename,
2443  const Svc::SeqArgs& args
2444  ) const
2445  {
2446  FW_ASSERT(
2447  (0 <= portNum) && (portNum < this->getNum_seqStartOut_OutputPorts()),
2448  static_cast<FwAssertArgType>(portNum)
2449  );
2450 
2451  FW_ASSERT(
2452  this->m_seqStartOut_OutputPort[portNum].isConnected(),
2453  static_cast<FwAssertArgType>(portNum)
2454  );
2455  this->m_seqStartOut_OutputPort[portNum].invoke(
2456  filename,
2457  args
2458  );
2459  }
2460 
2461 #endif
2462 
2463  // ----------------------------------------------------------------------
2464  // Internal interface base-class functions
2465  // ----------------------------------------------------------------------
2466 
2469  {
2470  ComponentIpcSerializableBuffer msg;
2472 
2473  // Serialize the message ID
2474  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_ALLOCATE));
2475  FW_ASSERT (
2476  _status == Fw::FW_SERIALIZE_OK,
2477  static_cast<FwAssertArgType>(_status)
2478  );
2479 
2480  // Fake port number to make message dequeue work
2481  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2482  FW_ASSERT (
2483  _status == Fw::FW_SERIALIZE_OK,
2484  static_cast<FwAssertArgType>(_status)
2485  );
2486 
2487  _status = msg.serializeFrom(directive);
2488  FW_ASSERT(
2489  _status == Fw::FW_SERIALIZE_OK,
2490  static_cast<FwAssertArgType>(_status)
2491  );
2492 
2493  // Send message
2495  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2496 
2497  FW_ASSERT(
2498  qStatus == Os::Queue::OP_OK,
2499  static_cast<FwAssertArgType>(qStatus)
2500  );
2501  }
2502 
2505  {
2506  ComponentIpcSerializableBuffer msg;
2508 
2509  // Serialize the message ID
2510  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_CALL));
2511  FW_ASSERT (
2512  _status == Fw::FW_SERIALIZE_OK,
2513  static_cast<FwAssertArgType>(_status)
2514  );
2515 
2516  // Fake port number to make message dequeue work
2517  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2518  FW_ASSERT (
2519  _status == Fw::FW_SERIALIZE_OK,
2520  static_cast<FwAssertArgType>(_status)
2521  );
2522 
2523  _status = msg.serializeFrom(directive);
2524  FW_ASSERT(
2525  _status == Fw::FW_SERIALIZE_OK,
2526  static_cast<FwAssertArgType>(_status)
2527  );
2528 
2529  // Send message
2531  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2532 
2533  FW_ASSERT(
2534  qStatus == Os::Queue::OP_OK,
2535  static_cast<FwAssertArgType>(qStatus)
2536  );
2537  }
2538 
2541  {
2542  ComponentIpcSerializableBuffer msg;
2544 
2545  // Serialize the message ID
2546  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_CONSTCMD));
2547  FW_ASSERT (
2548  _status == Fw::FW_SERIALIZE_OK,
2549  static_cast<FwAssertArgType>(_status)
2550  );
2551 
2552  // Fake port number to make message dequeue work
2553  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2554  FW_ASSERT (
2555  _status == Fw::FW_SERIALIZE_OK,
2556  static_cast<FwAssertArgType>(_status)
2557  );
2558 
2559  _status = msg.serializeFrom(directive);
2560  FW_ASSERT(
2561  _status == Fw::FW_SERIALIZE_OK,
2562  static_cast<FwAssertArgType>(_status)
2563  );
2564 
2565  // Send message
2567  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2568 
2569  FW_ASSERT(
2570  qStatus == Os::Queue::OP_OK,
2571  static_cast<FwAssertArgType>(qStatus)
2572  );
2573  }
2574 
2577  {
2578  ComponentIpcSerializableBuffer msg;
2580 
2581  // Serialize the message ID
2582  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_DISCARD));
2583  FW_ASSERT (
2584  _status == Fw::FW_SERIALIZE_OK,
2585  static_cast<FwAssertArgType>(_status)
2586  );
2587 
2588  // Fake port number to make message dequeue work
2589  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2590  FW_ASSERT (
2591  _status == Fw::FW_SERIALIZE_OK,
2592  static_cast<FwAssertArgType>(_status)
2593  );
2594 
2595  _status = msg.serializeFrom(directive);
2596  FW_ASSERT(
2597  _status == Fw::FW_SERIALIZE_OK,
2598  static_cast<FwAssertArgType>(_status)
2599  );
2600 
2601  // Send message
2603  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2604 
2605  FW_ASSERT(
2606  qStatus == Os::Queue::OP_OK,
2607  static_cast<FwAssertArgType>(qStatus)
2608  );
2609  }
2610 
2613  {
2614  ComponentIpcSerializableBuffer msg;
2616 
2617  // Serialize the message ID
2618  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_EXIT));
2619  FW_ASSERT (
2620  _status == Fw::FW_SERIALIZE_OK,
2621  static_cast<FwAssertArgType>(_status)
2622  );
2623 
2624  // Fake port number to make message dequeue work
2625  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2626  FW_ASSERT (
2627  _status == Fw::FW_SERIALIZE_OK,
2628  static_cast<FwAssertArgType>(_status)
2629  );
2630 
2631  _status = msg.serializeFrom(directive);
2632  FW_ASSERT(
2633  _status == Fw::FW_SERIALIZE_OK,
2634  static_cast<FwAssertArgType>(_status)
2635  );
2636 
2637  // Send message
2639  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2640 
2641  FW_ASSERT(
2642  qStatus == Os::Queue::OP_OK,
2643  static_cast<FwAssertArgType>(qStatus)
2644  );
2645  }
2646 
2649  {
2650  ComponentIpcSerializableBuffer msg;
2652 
2653  // Serialize the message ID
2654  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_GETFIELD));
2655  FW_ASSERT (
2656  _status == Fw::FW_SERIALIZE_OK,
2657  static_cast<FwAssertArgType>(_status)
2658  );
2659 
2660  // Fake port number to make message dequeue work
2661  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2662  FW_ASSERT (
2663  _status == Fw::FW_SERIALIZE_OK,
2664  static_cast<FwAssertArgType>(_status)
2665  );
2666 
2667  _status = msg.serializeFrom(directive);
2668  FW_ASSERT(
2669  _status == Fw::FW_SERIALIZE_OK,
2670  static_cast<FwAssertArgType>(_status)
2671  );
2672 
2673  // Send message
2675  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2676 
2677  FW_ASSERT(
2678  qStatus == Os::Queue::OP_OK,
2679  static_cast<FwAssertArgType>(qStatus)
2680  );
2681  }
2682 
2685  {
2686  ComponentIpcSerializableBuffer msg;
2688 
2689  // Serialize the message ID
2690  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_GOTO));
2691  FW_ASSERT (
2692  _status == Fw::FW_SERIALIZE_OK,
2693  static_cast<FwAssertArgType>(_status)
2694  );
2695 
2696  // Fake port number to make message dequeue work
2697  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2698  FW_ASSERT (
2699  _status == Fw::FW_SERIALIZE_OK,
2700  static_cast<FwAssertArgType>(_status)
2701  );
2702 
2703  _status = msg.serializeFrom(directive);
2704  FW_ASSERT(
2705  _status == Fw::FW_SERIALIZE_OK,
2706  static_cast<FwAssertArgType>(_status)
2707  );
2708 
2709  // Send message
2711  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2712 
2713  FW_ASSERT(
2714  qStatus == Os::Queue::OP_OK,
2715  static_cast<FwAssertArgType>(qStatus)
2716  );
2717  }
2718 
2721  {
2722  ComponentIpcSerializableBuffer msg;
2724 
2725  // Serialize the message ID
2726  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_IF));
2727  FW_ASSERT (
2728  _status == Fw::FW_SERIALIZE_OK,
2729  static_cast<FwAssertArgType>(_status)
2730  );
2731 
2732  // Fake port number to make message dequeue work
2733  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2734  FW_ASSERT (
2735  _status == Fw::FW_SERIALIZE_OK,
2736  static_cast<FwAssertArgType>(_status)
2737  );
2738 
2739  _status = msg.serializeFrom(directive);
2740  FW_ASSERT(
2741  _status == Fw::FW_SERIALIZE_OK,
2742  static_cast<FwAssertArgType>(_status)
2743  );
2744 
2745  // Send message
2747  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2748 
2749  FW_ASSERT(
2750  qStatus == Os::Queue::OP_OK,
2751  static_cast<FwAssertArgType>(qStatus)
2752  );
2753  }
2754 
2757  {
2758  ComponentIpcSerializableBuffer msg;
2760 
2761  // Serialize the message ID
2762  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_LOADABS));
2763  FW_ASSERT (
2764  _status == Fw::FW_SERIALIZE_OK,
2765  static_cast<FwAssertArgType>(_status)
2766  );
2767 
2768  // Fake port number to make message dequeue work
2769  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2770  FW_ASSERT (
2771  _status == Fw::FW_SERIALIZE_OK,
2772  static_cast<FwAssertArgType>(_status)
2773  );
2774 
2775  _status = msg.serializeFrom(directive);
2776  FW_ASSERT(
2777  _status == Fw::FW_SERIALIZE_OK,
2778  static_cast<FwAssertArgType>(_status)
2779  );
2780 
2781  // Send message
2783  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2784 
2785  FW_ASSERT(
2786  qStatus == Os::Queue::OP_OK,
2787  static_cast<FwAssertArgType>(qStatus)
2788  );
2789  }
2790 
2793  {
2794  ComponentIpcSerializableBuffer msg;
2796 
2797  // Serialize the message ID
2798  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_LOADREL));
2799  FW_ASSERT (
2800  _status == Fw::FW_SERIALIZE_OK,
2801  static_cast<FwAssertArgType>(_status)
2802  );
2803 
2804  // Fake port number to make message dequeue work
2805  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2806  FW_ASSERT (
2807  _status == Fw::FW_SERIALIZE_OK,
2808  static_cast<FwAssertArgType>(_status)
2809  );
2810 
2811  _status = msg.serializeFrom(directive);
2812  FW_ASSERT(
2813  _status == Fw::FW_SERIALIZE_OK,
2814  static_cast<FwAssertArgType>(_status)
2815  );
2816 
2817  // Send message
2819  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2820 
2821  FW_ASSERT(
2822  qStatus == Os::Queue::OP_OK,
2823  static_cast<FwAssertArgType>(qStatus)
2824  );
2825  }
2826 
2829  {
2830  ComponentIpcSerializableBuffer msg;
2832 
2833  // Serialize the message ID
2834  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_MEMCMP));
2835  FW_ASSERT (
2836  _status == Fw::FW_SERIALIZE_OK,
2837  static_cast<FwAssertArgType>(_status)
2838  );
2839 
2840  // Fake port number to make message dequeue work
2841  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2842  FW_ASSERT (
2843  _status == Fw::FW_SERIALIZE_OK,
2844  static_cast<FwAssertArgType>(_status)
2845  );
2846 
2847  _status = msg.serializeFrom(directive);
2848  FW_ASSERT(
2849  _status == Fw::FW_SERIALIZE_OK,
2850  static_cast<FwAssertArgType>(_status)
2851  );
2852 
2853  // Send message
2855  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2856 
2857  FW_ASSERT(
2858  qStatus == Os::Queue::OP_OK,
2859  static_cast<FwAssertArgType>(qStatus)
2860  );
2861  }
2862 
2865  {
2866  ComponentIpcSerializableBuffer msg;
2868 
2869  // Serialize the message ID
2870  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_NOOP));
2871  FW_ASSERT (
2872  _status == Fw::FW_SERIALIZE_OK,
2873  static_cast<FwAssertArgType>(_status)
2874  );
2875 
2876  // Fake port number to make message dequeue work
2877  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2878  FW_ASSERT (
2879  _status == Fw::FW_SERIALIZE_OK,
2880  static_cast<FwAssertArgType>(_status)
2881  );
2882 
2883  _status = msg.serializeFrom(directive);
2884  FW_ASSERT(
2885  _status == Fw::FW_SERIALIZE_OK,
2886  static_cast<FwAssertArgType>(_status)
2887  );
2888 
2889  // Send message
2891  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2892 
2893  FW_ASSERT(
2894  qStatus == Os::Queue::OP_OK,
2895  static_cast<FwAssertArgType>(qStatus)
2896  );
2897  }
2898 
2901  {
2902  ComponentIpcSerializableBuffer msg;
2904 
2905  // Serialize the message ID
2906  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PEEK));
2907  FW_ASSERT (
2908  _status == Fw::FW_SERIALIZE_OK,
2909  static_cast<FwAssertArgType>(_status)
2910  );
2911 
2912  // Fake port number to make message dequeue work
2913  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2914  FW_ASSERT (
2915  _status == Fw::FW_SERIALIZE_OK,
2916  static_cast<FwAssertArgType>(_status)
2917  );
2918 
2919  _status = msg.serializeFrom(directive);
2920  FW_ASSERT(
2921  _status == Fw::FW_SERIALIZE_OK,
2922  static_cast<FwAssertArgType>(_status)
2923  );
2924 
2925  // Send message
2927  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2928 
2929  FW_ASSERT(
2930  qStatus == Os::Queue::OP_OK,
2931  static_cast<FwAssertArgType>(qStatus)
2932  );
2933  }
2934 
2937  {
2938  ComponentIpcSerializableBuffer msg;
2940 
2941  // Serialize the message ID
2942  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_POPEVENT));
2943  FW_ASSERT (
2944  _status == Fw::FW_SERIALIZE_OK,
2945  static_cast<FwAssertArgType>(_status)
2946  );
2947 
2948  // Fake port number to make message dequeue work
2949  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2950  FW_ASSERT (
2951  _status == Fw::FW_SERIALIZE_OK,
2952  static_cast<FwAssertArgType>(_status)
2953  );
2954 
2955  _status = msg.serializeFrom(directive);
2956  FW_ASSERT(
2957  _status == Fw::FW_SERIALIZE_OK,
2958  static_cast<FwAssertArgType>(_status)
2959  );
2960 
2961  // Send message
2963  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
2964 
2965  FW_ASSERT(
2966  qStatus == Os::Queue::OP_OK,
2967  static_cast<FwAssertArgType>(qStatus)
2968  );
2969  }
2970 
2973  {
2974  ComponentIpcSerializableBuffer msg;
2976 
2977  // Serialize the message ID
2978  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHPRM));
2979  FW_ASSERT (
2980  _status == Fw::FW_SERIALIZE_OK,
2981  static_cast<FwAssertArgType>(_status)
2982  );
2983 
2984  // Fake port number to make message dequeue work
2985  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
2986  FW_ASSERT (
2987  _status == Fw::FW_SERIALIZE_OK,
2988  static_cast<FwAssertArgType>(_status)
2989  );
2990 
2991  _status = msg.serializeFrom(directive);
2992  FW_ASSERT(
2993  _status == Fw::FW_SERIALIZE_OK,
2994  static_cast<FwAssertArgType>(_status)
2995  );
2996 
2997  // Send message
2999  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3000 
3001  FW_ASSERT(
3002  qStatus == Os::Queue::OP_OK,
3003  static_cast<FwAssertArgType>(qStatus)
3004  );
3005  }
3006 
3009  {
3010  ComponentIpcSerializableBuffer msg;
3012 
3013  // Serialize the message ID
3014  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHTIME));
3015  FW_ASSERT (
3016  _status == Fw::FW_SERIALIZE_OK,
3017  static_cast<FwAssertArgType>(_status)
3018  );
3019 
3020  // Fake port number to make message dequeue work
3021  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3022  FW_ASSERT (
3023  _status == Fw::FW_SERIALIZE_OK,
3024  static_cast<FwAssertArgType>(_status)
3025  );
3026 
3027  _status = msg.serializeFrom(directive);
3028  FW_ASSERT(
3029  _status == Fw::FW_SERIALIZE_OK,
3030  static_cast<FwAssertArgType>(_status)
3031  );
3032 
3033  // Send message
3035  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3036 
3037  FW_ASSERT(
3038  qStatus == Os::Queue::OP_OK,
3039  static_cast<FwAssertArgType>(qStatus)
3040  );
3041  }
3042 
3045  {
3046  ComponentIpcSerializableBuffer msg;
3048 
3049  // Serialize the message ID
3050  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHTLMVAL));
3051  FW_ASSERT (
3052  _status == Fw::FW_SERIALIZE_OK,
3053  static_cast<FwAssertArgType>(_status)
3054  );
3055 
3056  // Fake port number to make message dequeue work
3057  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3058  FW_ASSERT (
3059  _status == Fw::FW_SERIALIZE_OK,
3060  static_cast<FwAssertArgType>(_status)
3061  );
3062 
3063  _status = msg.serializeFrom(directive);
3064  FW_ASSERT(
3065  _status == Fw::FW_SERIALIZE_OK,
3066  static_cast<FwAssertArgType>(_status)
3067  );
3068 
3069  // Send message
3071  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3072 
3073  FW_ASSERT(
3074  qStatus == Os::Queue::OP_OK,
3075  static_cast<FwAssertArgType>(qStatus)
3076  );
3077  }
3078 
3081  {
3082  ComponentIpcSerializableBuffer msg;
3084 
3085  // Serialize the message ID
3086  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHTLMVALANDTIME));
3087  FW_ASSERT (
3088  _status == Fw::FW_SERIALIZE_OK,
3089  static_cast<FwAssertArgType>(_status)
3090  );
3091 
3092  // Fake port number to make message dequeue work
3093  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3094  FW_ASSERT (
3095  _status == Fw::FW_SERIALIZE_OK,
3096  static_cast<FwAssertArgType>(_status)
3097  );
3098 
3099  _status = msg.serializeFrom(directive);
3100  FW_ASSERT(
3101  _status == Fw::FW_SERIALIZE_OK,
3102  static_cast<FwAssertArgType>(_status)
3103  );
3104 
3105  // Send message
3107  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3108 
3109  FW_ASSERT(
3110  qStatus == Os::Queue::OP_OK,
3111  static_cast<FwAssertArgType>(qStatus)
3112  );
3113  }
3114 
3117  {
3118  ComponentIpcSerializableBuffer msg;
3120 
3121  // Serialize the message ID
3122  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_PUSHVAL));
3123  FW_ASSERT (
3124  _status == Fw::FW_SERIALIZE_OK,
3125  static_cast<FwAssertArgType>(_status)
3126  );
3127 
3128  // Fake port number to make message dequeue work
3129  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3130  FW_ASSERT (
3131  _status == Fw::FW_SERIALIZE_OK,
3132  static_cast<FwAssertArgType>(_status)
3133  );
3134 
3135  _status = msg.serializeFrom(directive);
3136  FW_ASSERT(
3137  _status == Fw::FW_SERIALIZE_OK,
3138  static_cast<FwAssertArgType>(_status)
3139  );
3140 
3141  // Send message
3143  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3144 
3145  FW_ASSERT(
3146  qStatus == Os::Queue::OP_OK,
3147  static_cast<FwAssertArgType>(qStatus)
3148  );
3149  }
3150 
3153  {
3154  ComponentIpcSerializableBuffer msg;
3156 
3157  // Serialize the message ID
3158  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_RETURN));
3159  FW_ASSERT (
3160  _status == Fw::FW_SERIALIZE_OK,
3161  static_cast<FwAssertArgType>(_status)
3162  );
3163 
3164  // Fake port number to make message dequeue work
3165  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3166  FW_ASSERT (
3167  _status == Fw::FW_SERIALIZE_OK,
3168  static_cast<FwAssertArgType>(_status)
3169  );
3170 
3171  _status = msg.serializeFrom(directive);
3172  FW_ASSERT(
3173  _status == Fw::FW_SERIALIZE_OK,
3174  static_cast<FwAssertArgType>(_status)
3175  );
3176 
3177  // Send message
3179  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3180 
3181  FW_ASSERT(
3182  qStatus == Os::Queue::OP_OK,
3183  static_cast<FwAssertArgType>(qStatus)
3184  );
3185  }
3186 
3189  {
3190  ComponentIpcSerializableBuffer msg;
3192 
3193  // Serialize the message ID
3194  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STACKCMD));
3195  FW_ASSERT (
3196  _status == Fw::FW_SERIALIZE_OK,
3197  static_cast<FwAssertArgType>(_status)
3198  );
3199 
3200  // Fake port number to make message dequeue work
3201  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3202  FW_ASSERT (
3203  _status == Fw::FW_SERIALIZE_OK,
3204  static_cast<FwAssertArgType>(_status)
3205  );
3206 
3207  _status = msg.serializeFrom(directive);
3208  FW_ASSERT(
3209  _status == Fw::FW_SERIALIZE_OK,
3210  static_cast<FwAssertArgType>(_status)
3211  );
3212 
3213  // Send message
3215  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3216 
3217  FW_ASSERT(
3218  qStatus == Os::Queue::OP_OK,
3219  static_cast<FwAssertArgType>(qStatus)
3220  );
3221  }
3222 
3225  {
3226  ComponentIpcSerializableBuffer msg;
3228 
3229  // Serialize the message ID
3230  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STACKOP));
3231  FW_ASSERT (
3232  _status == Fw::FW_SERIALIZE_OK,
3233  static_cast<FwAssertArgType>(_status)
3234  );
3235 
3236  // Fake port number to make message dequeue work
3237  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3238  FW_ASSERT (
3239  _status == Fw::FW_SERIALIZE_OK,
3240  static_cast<FwAssertArgType>(_status)
3241  );
3242 
3243  _status = msg.serializeFrom(directive);
3244  FW_ASSERT(
3245  _status == Fw::FW_SERIALIZE_OK,
3246  static_cast<FwAssertArgType>(_status)
3247  );
3248 
3249  // Send message
3251  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3252 
3253  FW_ASSERT(
3254  qStatus == Os::Queue::OP_OK,
3255  static_cast<FwAssertArgType>(qStatus)
3256  );
3257  }
3258 
3261  {
3262  ComponentIpcSerializableBuffer msg;
3264 
3265  // Serialize the message ID
3266  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STOREABS));
3267  FW_ASSERT (
3268  _status == Fw::FW_SERIALIZE_OK,
3269  static_cast<FwAssertArgType>(_status)
3270  );
3271 
3272  // Fake port number to make message dequeue work
3273  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3274  FW_ASSERT (
3275  _status == Fw::FW_SERIALIZE_OK,
3276  static_cast<FwAssertArgType>(_status)
3277  );
3278 
3279  _status = msg.serializeFrom(directive);
3280  FW_ASSERT(
3281  _status == Fw::FW_SERIALIZE_OK,
3282  static_cast<FwAssertArgType>(_status)
3283  );
3284 
3285  // Send message
3287  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3288 
3289  FW_ASSERT(
3290  qStatus == Os::Queue::OP_OK,
3291  static_cast<FwAssertArgType>(qStatus)
3292  );
3293  }
3294 
3297  {
3298  ComponentIpcSerializableBuffer msg;
3300 
3301  // Serialize the message ID
3302  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STOREABSCONSTOFFSET));
3303  FW_ASSERT (
3304  _status == Fw::FW_SERIALIZE_OK,
3305  static_cast<FwAssertArgType>(_status)
3306  );
3307 
3308  // Fake port number to make message dequeue work
3309  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3310  FW_ASSERT (
3311  _status == Fw::FW_SERIALIZE_OK,
3312  static_cast<FwAssertArgType>(_status)
3313  );
3314 
3315  _status = msg.serializeFrom(directive);
3316  FW_ASSERT(
3317  _status == Fw::FW_SERIALIZE_OK,
3318  static_cast<FwAssertArgType>(_status)
3319  );
3320 
3321  // Send message
3323  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3324 
3325  FW_ASSERT(
3326  qStatus == Os::Queue::OP_OK,
3327  static_cast<FwAssertArgType>(qStatus)
3328  );
3329  }
3330 
3333  {
3334  ComponentIpcSerializableBuffer msg;
3336 
3337  // Serialize the message ID
3338  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STOREREL));
3339  FW_ASSERT (
3340  _status == Fw::FW_SERIALIZE_OK,
3341  static_cast<FwAssertArgType>(_status)
3342  );
3343 
3344  // Fake port number to make message dequeue work
3345  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3346  FW_ASSERT (
3347  _status == Fw::FW_SERIALIZE_OK,
3348  static_cast<FwAssertArgType>(_status)
3349  );
3350 
3351  _status = msg.serializeFrom(directive);
3352  FW_ASSERT(
3353  _status == Fw::FW_SERIALIZE_OK,
3354  static_cast<FwAssertArgType>(_status)
3355  );
3356 
3357  // Send message
3359  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3360 
3361  FW_ASSERT(
3362  qStatus == Os::Queue::OP_OK,
3363  static_cast<FwAssertArgType>(qStatus)
3364  );
3365  }
3366 
3369  {
3370  ComponentIpcSerializableBuffer msg;
3372 
3373  // Serialize the message ID
3374  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_STORERELCONSTOFFSET));
3375  FW_ASSERT (
3376  _status == Fw::FW_SERIALIZE_OK,
3377  static_cast<FwAssertArgType>(_status)
3378  );
3379 
3380  // Fake port number to make message dequeue work
3381  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3382  FW_ASSERT (
3383  _status == Fw::FW_SERIALIZE_OK,
3384  static_cast<FwAssertArgType>(_status)
3385  );
3386 
3387  _status = msg.serializeFrom(directive);
3388  FW_ASSERT(
3389  _status == Fw::FW_SERIALIZE_OK,
3390  static_cast<FwAssertArgType>(_status)
3391  );
3392 
3393  // Send message
3395  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3396 
3397  FW_ASSERT(
3398  qStatus == Os::Queue::OP_OK,
3399  static_cast<FwAssertArgType>(qStatus)
3400  );
3401  }
3402 
3405  {
3406  ComponentIpcSerializableBuffer msg;
3408 
3409  // Serialize the message ID
3410  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_WAITABS));
3411  FW_ASSERT (
3412  _status == Fw::FW_SERIALIZE_OK,
3413  static_cast<FwAssertArgType>(_status)
3414  );
3415 
3416  // Fake port number to make message dequeue work
3417  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3418  FW_ASSERT (
3419  _status == Fw::FW_SERIALIZE_OK,
3420  static_cast<FwAssertArgType>(_status)
3421  );
3422 
3423  _status = msg.serializeFrom(directive);
3424  FW_ASSERT(
3425  _status == Fw::FW_SERIALIZE_OK,
3426  static_cast<FwAssertArgType>(_status)
3427  );
3428 
3429  // Send message
3431  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3432 
3433  FW_ASSERT(
3434  qStatus == Os::Queue::OP_OK,
3435  static_cast<FwAssertArgType>(qStatus)
3436  );
3437  }
3438 
3441  {
3442  ComponentIpcSerializableBuffer msg;
3444 
3445  // Serialize the message ID
3446  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(INT_IF_DIRECTIVE_WAITREL));
3447  FW_ASSERT (
3448  _status == Fw::FW_SERIALIZE_OK,
3449  static_cast<FwAssertArgType>(_status)
3450  );
3451 
3452  // Fake port number to make message dequeue work
3453  _status = msg.serializeFrom(static_cast<FwIndexType>(0));
3454  FW_ASSERT (
3455  _status == Fw::FW_SERIALIZE_OK,
3456  static_cast<FwAssertArgType>(_status)
3457  );
3458 
3459  _status = msg.serializeFrom(directive);
3460  FW_ASSERT(
3461  _status == Fw::FW_SERIALIZE_OK,
3462  static_cast<FwAssertArgType>(_status)
3463  );
3464 
3465  // Send message
3467  Os::Queue::Status qStatus = this->m_queue.send(msg, 6, _block);
3468 
3469  FW_ASSERT(
3470  qStatus == Os::Queue::OP_OK,
3471  static_cast<FwAssertArgType>(qStatus)
3472  );
3473  }
3474 
3475  // ----------------------------------------------------------------------
3476  // State getter functions
3477  // ----------------------------------------------------------------------
3478 
3481  {
3482  return this->m_stateMachine_sequencer.getState();
3483  }
3484 
3485  // ----------------------------------------------------------------------
3486  // Signal send functions
3487  // ----------------------------------------------------------------------
3488 
3491  {
3492  ComponentIpcSerializableBuffer buffer;
3493  // Serialize the message type, port number, state ID, and signal
3494  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_VALIDATE), buffer);
3495  // Serialize the signal data
3496  const Fw::SerializeStatus status = buffer.serializeFrom(value);
3497  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
3498  // Send the message and handle overflow
3499  this->sequencer_sendSignalFinish(buffer);
3500  }
3501 
3504  {
3505  ComponentIpcSerializableBuffer buffer;
3506  // Serialize the message type, port number, state ID, and signal
3507  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_RUN), buffer);
3508  // Serialize the signal data
3509  const Fw::SerializeStatus status = buffer.serializeFrom(value);
3510  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
3511  // Send the message and handle overflow
3512  this->sequencer_sendSignalFinish(buffer);
3513  }
3514 
3517  {
3518  ComponentIpcSerializableBuffer buffer;
3519  // Serialize the message type, port number, state ID, and signal
3520  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_RUN_VALIDATED), buffer);
3521  // Serialize the signal data
3522  const Fw::SerializeStatus status = buffer.serializeFrom(value);
3523  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
3524  // Send the message and handle overflow
3525  this->sequencer_sendSignalFinish(buffer);
3526  }
3527 
3530  {
3531  ComponentIpcSerializableBuffer buffer;
3532  // Serialize the message type, port number, state ID, and signal
3533  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_CANCEL), buffer);
3534  // Send the message and handle overflow
3535  this->sequencer_sendSignalFinish(buffer);
3536  }
3537 
3540  {
3541  ComponentIpcSerializableBuffer buffer;
3542  // Serialize the message type, port number, state ID, and signal
3543  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_SET_BREAKPOINT), buffer);
3544  // Serialize the signal data
3545  const Fw::SerializeStatus status = buffer.serializeFrom(value);
3546  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
3547  // Send the message and handle overflow
3548  this->sequencer_sendSignalFinish(buffer);
3549  }
3550 
3553  {
3554  ComponentIpcSerializableBuffer buffer;
3555  // Serialize the message type, port number, state ID, and signal
3556  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_CLEAR_BREAKPOINT), buffer);
3557  // Send the message and handle overflow
3558  this->sequencer_sendSignalFinish(buffer);
3559  }
3560 
3563  {
3564  ComponentIpcSerializableBuffer buffer;
3565  // Serialize the message type, port number, state ID, and signal
3566  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_failure), buffer);
3567  // Send the message and handle overflow
3568  this->sequencer_sendSignalFinish(buffer);
3569  }
3570 
3573  {
3574  ComponentIpcSerializableBuffer buffer;
3575  // Serialize the message type, port number, state ID, and signal
3576  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_success), buffer);
3577  // Send the message and handle overflow
3578  this->sequencer_sendSignalFinish(buffer);
3579  }
3580 
3583  {
3584  ComponentIpcSerializableBuffer buffer;
3585  // Serialize the message type, port number, state ID, and signal
3586  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::entered), buffer);
3587  // Send the message and handle overflow
3588  this->sequencer_sendSignalFinish(buffer);
3589  }
3590 
3593  {
3594  ComponentIpcSerializableBuffer buffer;
3595  // Serialize the message type, port number, state ID, and signal
3596  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_dispatchStatement_success), buffer);
3597  // Send the message and handle overflow
3598  this->sequencer_sendSignalFinish(buffer);
3599  }
3600 
3603  {
3604  ComponentIpcSerializableBuffer buffer;
3605  // Serialize the message type, port number, state ID, and signal
3606  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_dispatchStatement_failure), buffer);
3607  // Send the message and handle overflow
3608  this->sequencer_sendSignalFinish(buffer);
3609  }
3610 
3613  {
3614  ComponentIpcSerializableBuffer buffer;
3615  // Serialize the message type, port number, state ID, and signal
3616  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_dispatchStatement_noMoreStatements), buffer);
3617  // Send the message and handle overflow
3618  this->sequencer_sendSignalFinish(buffer);
3619  }
3620 
3623  {
3624  ComponentIpcSerializableBuffer buffer;
3625  // Serialize the message type, port number, state ID, and signal
3626  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::checkTimersIn), buffer);
3627  // Send the message and handle overflow
3628  this->sequencer_sendSignalFinish(buffer);
3629  }
3630 
3633  {
3634  ComponentIpcSerializableBuffer buffer;
3635  // Serialize the message type, port number, state ID, and signal
3636  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_checkShouldWake_wakeup), buffer);
3637  // Send the message and handle overflow
3638  this->sequencer_sendSignalFinish(buffer);
3639  }
3640 
3643  {
3644  ComponentIpcSerializableBuffer buffer;
3645  // Serialize the message type, port number, state ID, and signal
3646  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_checkShouldWake_keepSleeping), buffer);
3647  // Send the message and handle overflow
3648  this->sequencer_sendSignalFinish(buffer);
3649  }
3650 
3653  {
3654  ComponentIpcSerializableBuffer buffer;
3655  // Serialize the message type, port number, state ID, and signal
3656  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_timeOpFailed), buffer);
3657  // Send the message and handle overflow
3658  this->sequencer_sendSignalFinish(buffer);
3659  }
3660 
3663  {
3664  ComponentIpcSerializableBuffer buffer;
3665  // Serialize the message type, port number, state ID, and signal
3666  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_beginSleep), buffer);
3667  // Send the message and handle overflow
3668  this->sequencer_sendSignalFinish(buffer);
3669  }
3670 
3673  {
3674  ComponentIpcSerializableBuffer buffer;
3675  // Serialize the message type, port number, state ID, and signal
3676  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_success), buffer);
3677  // Send the message and handle overflow
3678  this->sequencer_sendSignalFinish(buffer);
3679  }
3680 
3683  {
3684  ComponentIpcSerializableBuffer buffer;
3685  // Serialize the message type, port number, state ID, and signal
3686  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_failure), buffer);
3687  // Send the message and handle overflow
3688  this->sequencer_sendSignalFinish(buffer);
3689  }
3690 
3693  {
3694  ComponentIpcSerializableBuffer buffer;
3695  // Serialize the message type, port number, state ID, and signal
3696  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_unexpected), buffer);
3697  // Send the message and handle overflow
3698  this->sequencer_sendSignalFinish(buffer);
3699  }
3700 
3703  {
3704  ComponentIpcSerializableBuffer buffer;
3705  // Serialize the message type, port number, state ID, and signal
3706  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::stmtResponse_keepWaiting), buffer);
3707  // Send the message and handle overflow
3708  this->sequencer_sendSignalFinish(buffer);
3709  }
3710 
3713  {
3714  ComponentIpcSerializableBuffer buffer;
3715  // Serialize the message type, port number, state ID, and signal
3716  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_checkStatementTimeout_statementTimeout), buffer);
3717  // Send the message and handle overflow
3718  this->sequencer_sendSignalFinish(buffer);
3719  }
3720 
3723  {
3724  ComponentIpcSerializableBuffer buffer;
3725  // Serialize the message type, port number, state ID, and signal
3726  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::result_checkStatementTimeout_noTimeout), buffer);
3727  // Send the message and handle overflow
3728  this->sequencer_sendSignalFinish(buffer);
3729  }
3730 
3733  {
3734  ComponentIpcSerializableBuffer buffer;
3735  // Serialize the message type, port number, state ID, and signal
3736  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_CONTINUE), buffer);
3737  // Send the message and handle overflow
3738  this->sequencer_sendSignalFinish(buffer);
3739  }
3740 
3743  {
3744  ComponentIpcSerializableBuffer buffer;
3745  // Serialize the message type, port number, state ID, and signal
3746  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_BREAK), buffer);
3747  // Send the message and handle overflow
3748  this->sequencer_sendSignalFinish(buffer);
3749  }
3750 
3753  {
3754  ComponentIpcSerializableBuffer buffer;
3755  // Serialize the message type, port number, state ID, and signal
3756  this->sendSignalStart(SmId::sequencer, static_cast<FwEnumStoreType>(Svc_FpySequencer_SequencerStateMachine::Signal::cmd_STEP), buffer);
3757  // Send the message and handle overflow
3758  this->sequencer_sendSignalFinish(buffer);
3759  }
3760 
3761  // ----------------------------------------------------------------------
3762  // Command response
3763  // ----------------------------------------------------------------------
3764 
3767  FwOpcodeType opCode,
3768  U32 cmdSeq,
3769  Fw::CmdResponse response
3770  )
3771  {
3773  this->cmdResponseOut_out(0, opCode, cmdSeq, response);
3774  }
3775 
3776  // ----------------------------------------------------------------------
3777  // Command handler base-class functions
3778  //
3779  // Call these functions directly to bypass the command input port
3780  // ----------------------------------------------------------------------
3781 
3784  FwOpcodeType opCode,
3785  U32 cmdSeq,
3786  Fw::CmdArgBuffer& args
3787  )
3788  {
3789  // Call pre-message hook
3790  this->RUN_preMsgHook(opCode,cmdSeq);
3791 
3792  // Defer deserializing arguments to the message dispatcher
3793  // to avoid deserializing and reserializing just for IPC
3794  ComponentIpcSerializableBuffer msg;
3796 
3797  // Serialize for IPC
3798  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_RUN));
3799  FW_ASSERT (
3800  _status == Fw::FW_SERIALIZE_OK,
3801  static_cast<FwAssertArgType>(_status)
3802  );
3803 
3804  // Fake port number to make message dequeue work
3805  FwIndexType port = 0;
3806 
3807  _status = msg.serializeFrom(port);
3808  FW_ASSERT (
3809  _status == Fw::FW_SERIALIZE_OK,
3810  static_cast<FwAssertArgType>(_status)
3811  );
3812 
3813  _status = msg.serializeFrom(opCode);
3814  FW_ASSERT (
3815  _status == Fw::FW_SERIALIZE_OK,
3816  static_cast<FwAssertArgType>(_status)
3817  );
3818 
3819  _status = msg.serializeFrom(cmdSeq);
3820  FW_ASSERT (
3821  _status == Fw::FW_SERIALIZE_OK,
3822  static_cast<FwAssertArgType>(_status)
3823  );
3824 
3825  _status = msg.serializeFrom(args);
3826  FW_ASSERT (
3827  _status == Fw::FW_SERIALIZE_OK,
3828  static_cast<FwAssertArgType>(_status)
3829  );
3830 
3831  // Send message
3833  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3834 
3835  FW_ASSERT(
3836  qStatus == Os::Queue::OP_OK,
3837  static_cast<FwAssertArgType>(qStatus)
3838  );
3839  }
3840 
3843  FwOpcodeType opCode,
3844  U32 cmdSeq,
3845  Fw::CmdArgBuffer& args
3846  )
3847  {
3848  // Call pre-message hook
3849  this->RUN_ARGS_preMsgHook(opCode,cmdSeq);
3850 
3851  // Defer deserializing arguments to the message dispatcher
3852  // to avoid deserializing and reserializing just for IPC
3853  ComponentIpcSerializableBuffer msg;
3855 
3856  // Serialize for IPC
3857  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_RUN_ARGS));
3858  FW_ASSERT (
3859  _status == Fw::FW_SERIALIZE_OK,
3860  static_cast<FwAssertArgType>(_status)
3861  );
3862 
3863  // Fake port number to make message dequeue work
3864  FwIndexType port = 0;
3865 
3866  _status = msg.serializeFrom(port);
3867  FW_ASSERT (
3868  _status == Fw::FW_SERIALIZE_OK,
3869  static_cast<FwAssertArgType>(_status)
3870  );
3871 
3872  _status = msg.serializeFrom(opCode);
3873  FW_ASSERT (
3874  _status == Fw::FW_SERIALIZE_OK,
3875  static_cast<FwAssertArgType>(_status)
3876  );
3877 
3878  _status = msg.serializeFrom(cmdSeq);
3879  FW_ASSERT (
3880  _status == Fw::FW_SERIALIZE_OK,
3881  static_cast<FwAssertArgType>(_status)
3882  );
3883 
3884  _status = msg.serializeFrom(args);
3885  FW_ASSERT (
3886  _status == Fw::FW_SERIALIZE_OK,
3887  static_cast<FwAssertArgType>(_status)
3888  );
3889 
3890  // Send message
3892  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3893 
3894  FW_ASSERT(
3895  qStatus == Os::Queue::OP_OK,
3896  static_cast<FwAssertArgType>(qStatus)
3897  );
3898  }
3899 
3902  FwOpcodeType opCode,
3903  U32 cmdSeq,
3904  Fw::CmdArgBuffer& args
3905  )
3906  {
3907  // Call pre-message hook
3908  this->VALIDATE_preMsgHook(opCode,cmdSeq);
3909 
3910  // Defer deserializing arguments to the message dispatcher
3911  // to avoid deserializing and reserializing just for IPC
3912  ComponentIpcSerializableBuffer msg;
3914 
3915  // Serialize for IPC
3916  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_VALIDATE));
3917  FW_ASSERT (
3918  _status == Fw::FW_SERIALIZE_OK,
3919  static_cast<FwAssertArgType>(_status)
3920  );
3921 
3922  // Fake port number to make message dequeue work
3923  FwIndexType port = 0;
3924 
3925  _status = msg.serializeFrom(port);
3926  FW_ASSERT (
3927  _status == Fw::FW_SERIALIZE_OK,
3928  static_cast<FwAssertArgType>(_status)
3929  );
3930 
3931  _status = msg.serializeFrom(opCode);
3932  FW_ASSERT (
3933  _status == Fw::FW_SERIALIZE_OK,
3934  static_cast<FwAssertArgType>(_status)
3935  );
3936 
3937  _status = msg.serializeFrom(cmdSeq);
3938  FW_ASSERT (
3939  _status == Fw::FW_SERIALIZE_OK,
3940  static_cast<FwAssertArgType>(_status)
3941  );
3942 
3943  _status = msg.serializeFrom(args);
3944  FW_ASSERT (
3945  _status == Fw::FW_SERIALIZE_OK,
3946  static_cast<FwAssertArgType>(_status)
3947  );
3948 
3949  // Send message
3951  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
3952 
3953  FW_ASSERT(
3954  qStatus == Os::Queue::OP_OK,
3955  static_cast<FwAssertArgType>(qStatus)
3956  );
3957  }
3958 
3961  FwOpcodeType opCode,
3962  U32 cmdSeq,
3963  Fw::CmdArgBuffer& args
3964  )
3965  {
3966  // Call pre-message hook
3967  this->VALIDATE_ARGS_preMsgHook(opCode,cmdSeq);
3968 
3969  // Defer deserializing arguments to the message dispatcher
3970  // to avoid deserializing and reserializing just for IPC
3971  ComponentIpcSerializableBuffer msg;
3973 
3974  // Serialize for IPC
3975  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_VALIDATE_ARGS));
3976  FW_ASSERT (
3977  _status == Fw::FW_SERIALIZE_OK,
3978  static_cast<FwAssertArgType>(_status)
3979  );
3980 
3981  // Fake port number to make message dequeue work
3982  FwIndexType port = 0;
3983 
3984  _status = msg.serializeFrom(port);
3985  FW_ASSERT (
3986  _status == Fw::FW_SERIALIZE_OK,
3987  static_cast<FwAssertArgType>(_status)
3988  );
3989 
3990  _status = msg.serializeFrom(opCode);
3991  FW_ASSERT (
3992  _status == Fw::FW_SERIALIZE_OK,
3993  static_cast<FwAssertArgType>(_status)
3994  );
3995 
3996  _status = msg.serializeFrom(cmdSeq);
3997  FW_ASSERT (
3998  _status == Fw::FW_SERIALIZE_OK,
3999  static_cast<FwAssertArgType>(_status)
4000  );
4001 
4002  _status = msg.serializeFrom(args);
4003  FW_ASSERT (
4004  _status == Fw::FW_SERIALIZE_OK,
4005  static_cast<FwAssertArgType>(_status)
4006  );
4007 
4008  // Send message
4010  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4011 
4012  FW_ASSERT(
4013  qStatus == Os::Queue::OP_OK,
4014  static_cast<FwAssertArgType>(qStatus)
4015  );
4016  }
4017 
4020  FwOpcodeType opCode,
4021  U32 cmdSeq,
4022  Fw::CmdArgBuffer& args
4023  )
4024  {
4025  // Call pre-message hook
4026  this->RUN_VALIDATED_preMsgHook(opCode,cmdSeq);
4027 
4028  // Defer deserializing arguments to the message dispatcher
4029  // to avoid deserializing and reserializing just for IPC
4030  ComponentIpcSerializableBuffer msg;
4032 
4033  // Serialize for IPC
4034  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_RUN_VALIDATED));
4035  FW_ASSERT (
4036  _status == Fw::FW_SERIALIZE_OK,
4037  static_cast<FwAssertArgType>(_status)
4038  );
4039 
4040  // Fake port number to make message dequeue work
4041  FwIndexType port = 0;
4042 
4043  _status = msg.serializeFrom(port);
4044  FW_ASSERT (
4045  _status == Fw::FW_SERIALIZE_OK,
4046  static_cast<FwAssertArgType>(_status)
4047  );
4048 
4049  _status = msg.serializeFrom(opCode);
4050  FW_ASSERT (
4051  _status == Fw::FW_SERIALIZE_OK,
4052  static_cast<FwAssertArgType>(_status)
4053  );
4054 
4055  _status = msg.serializeFrom(cmdSeq);
4056  FW_ASSERT (
4057  _status == Fw::FW_SERIALIZE_OK,
4058  static_cast<FwAssertArgType>(_status)
4059  );
4060 
4061  _status = msg.serializeFrom(args);
4062  FW_ASSERT (
4063  _status == Fw::FW_SERIALIZE_OK,
4064  static_cast<FwAssertArgType>(_status)
4065  );
4066 
4067  // Send message
4069  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4070 
4071  FW_ASSERT(
4072  qStatus == Os::Queue::OP_OK,
4073  static_cast<FwAssertArgType>(qStatus)
4074  );
4075  }
4076 
4079  FwOpcodeType opCode,
4080  U32 cmdSeq,
4081  Fw::CmdArgBuffer& args
4082  )
4083  {
4084  // Call pre-message hook
4085  this->CANCEL_preMsgHook(opCode,cmdSeq);
4086 
4087  // Defer deserializing arguments to the message dispatcher
4088  // to avoid deserializing and reserializing just for IPC
4089  ComponentIpcSerializableBuffer msg;
4091 
4092  // Serialize for IPC
4093  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_CANCEL));
4094  FW_ASSERT (
4095  _status == Fw::FW_SERIALIZE_OK,
4096  static_cast<FwAssertArgType>(_status)
4097  );
4098 
4099  // Fake port number to make message dequeue work
4100  FwIndexType port = 0;
4101 
4102  _status = msg.serializeFrom(port);
4103  FW_ASSERT (
4104  _status == Fw::FW_SERIALIZE_OK,
4105  static_cast<FwAssertArgType>(_status)
4106  );
4107 
4108  _status = msg.serializeFrom(opCode);
4109  FW_ASSERT (
4110  _status == Fw::FW_SERIALIZE_OK,
4111  static_cast<FwAssertArgType>(_status)
4112  );
4113 
4114  _status = msg.serializeFrom(cmdSeq);
4115  FW_ASSERT (
4116  _status == Fw::FW_SERIALIZE_OK,
4117  static_cast<FwAssertArgType>(_status)
4118  );
4119 
4120  _status = msg.serializeFrom(args);
4121  FW_ASSERT (
4122  _status == Fw::FW_SERIALIZE_OK,
4123  static_cast<FwAssertArgType>(_status)
4124  );
4125 
4126  // Send message
4128  Os::Queue::Status qStatus = this->m_queue.send(msg, 8, _block);
4129 
4130  FW_ASSERT(
4131  qStatus == Os::Queue::OP_OK,
4132  static_cast<FwAssertArgType>(qStatus)
4133  );
4134  }
4135 
4138  FwOpcodeType opCode,
4139  U32 cmdSeq,
4140  Fw::CmdArgBuffer& args
4141  )
4142  {
4143  // Call pre-message hook
4144  this->SET_BREAKPOINT_preMsgHook(opCode,cmdSeq);
4145 
4146  // Defer deserializing arguments to the message dispatcher
4147  // to avoid deserializing and reserializing just for IPC
4148  ComponentIpcSerializableBuffer msg;
4150 
4151  // Serialize for IPC
4152  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_SET_BREAKPOINT));
4153  FW_ASSERT (
4154  _status == Fw::FW_SERIALIZE_OK,
4155  static_cast<FwAssertArgType>(_status)
4156  );
4157 
4158  // Fake port number to make message dequeue work
4159  FwIndexType port = 0;
4160 
4161  _status = msg.serializeFrom(port);
4162  FW_ASSERT (
4163  _status == Fw::FW_SERIALIZE_OK,
4164  static_cast<FwAssertArgType>(_status)
4165  );
4166 
4167  _status = msg.serializeFrom(opCode);
4168  FW_ASSERT (
4169  _status == Fw::FW_SERIALIZE_OK,
4170  static_cast<FwAssertArgType>(_status)
4171  );
4172 
4173  _status = msg.serializeFrom(cmdSeq);
4174  FW_ASSERT (
4175  _status == Fw::FW_SERIALIZE_OK,
4176  static_cast<FwAssertArgType>(_status)
4177  );
4178 
4179  _status = msg.serializeFrom(args);
4180  FW_ASSERT (
4181  _status == Fw::FW_SERIALIZE_OK,
4182  static_cast<FwAssertArgType>(_status)
4183  );
4184 
4185  // Send message
4187  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4188 
4189  FW_ASSERT(
4190  qStatus == Os::Queue::OP_OK,
4191  static_cast<FwAssertArgType>(qStatus)
4192  );
4193  }
4194 
4197  FwOpcodeType opCode,
4198  U32 cmdSeq,
4199  Fw::CmdArgBuffer& args
4200  )
4201  {
4202  // Call pre-message hook
4203  this->BREAK_preMsgHook(opCode,cmdSeq);
4204 
4205  // Defer deserializing arguments to the message dispatcher
4206  // to avoid deserializing and reserializing just for IPC
4207  ComponentIpcSerializableBuffer msg;
4209 
4210  // Serialize for IPC
4211  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_BREAK));
4212  FW_ASSERT (
4213  _status == Fw::FW_SERIALIZE_OK,
4214  static_cast<FwAssertArgType>(_status)
4215  );
4216 
4217  // Fake port number to make message dequeue work
4218  FwIndexType port = 0;
4219 
4220  _status = msg.serializeFrom(port);
4221  FW_ASSERT (
4222  _status == Fw::FW_SERIALIZE_OK,
4223  static_cast<FwAssertArgType>(_status)
4224  );
4225 
4226  _status = msg.serializeFrom(opCode);
4227  FW_ASSERT (
4228  _status == Fw::FW_SERIALIZE_OK,
4229  static_cast<FwAssertArgType>(_status)
4230  );
4231 
4232  _status = msg.serializeFrom(cmdSeq);
4233  FW_ASSERT (
4234  _status == Fw::FW_SERIALIZE_OK,
4235  static_cast<FwAssertArgType>(_status)
4236  );
4237 
4238  _status = msg.serializeFrom(args);
4239  FW_ASSERT (
4240  _status == Fw::FW_SERIALIZE_OK,
4241  static_cast<FwAssertArgType>(_status)
4242  );
4243 
4244  // Send message
4246  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4247 
4248  FW_ASSERT(
4249  qStatus == Os::Queue::OP_OK,
4250  static_cast<FwAssertArgType>(qStatus)
4251  );
4252  }
4253 
4256  FwOpcodeType opCode,
4257  U32 cmdSeq,
4258  Fw::CmdArgBuffer& args
4259  )
4260  {
4261  // Call pre-message hook
4262  this->CONTINUE_preMsgHook(opCode,cmdSeq);
4263 
4264  // Defer deserializing arguments to the message dispatcher
4265  // to avoid deserializing and reserializing just for IPC
4266  ComponentIpcSerializableBuffer msg;
4268 
4269  // Serialize for IPC
4270  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_CONTINUE));
4271  FW_ASSERT (
4272  _status == Fw::FW_SERIALIZE_OK,
4273  static_cast<FwAssertArgType>(_status)
4274  );
4275 
4276  // Fake port number to make message dequeue work
4277  FwIndexType port = 0;
4278 
4279  _status = msg.serializeFrom(port);
4280  FW_ASSERT (
4281  _status == Fw::FW_SERIALIZE_OK,
4282  static_cast<FwAssertArgType>(_status)
4283  );
4284 
4285  _status = msg.serializeFrom(opCode);
4286  FW_ASSERT (
4287  _status == Fw::FW_SERIALIZE_OK,
4288  static_cast<FwAssertArgType>(_status)
4289  );
4290 
4291  _status = msg.serializeFrom(cmdSeq);
4292  FW_ASSERT (
4293  _status == Fw::FW_SERIALIZE_OK,
4294  static_cast<FwAssertArgType>(_status)
4295  );
4296 
4297  _status = msg.serializeFrom(args);
4298  FW_ASSERT (
4299  _status == Fw::FW_SERIALIZE_OK,
4300  static_cast<FwAssertArgType>(_status)
4301  );
4302 
4303  // Send message
4305  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4306 
4307  FW_ASSERT(
4308  qStatus == Os::Queue::OP_OK,
4309  static_cast<FwAssertArgType>(qStatus)
4310  );
4311  }
4312 
4315  FwOpcodeType opCode,
4316  U32 cmdSeq,
4317  Fw::CmdArgBuffer& args
4318  )
4319  {
4320  // Call pre-message hook
4321  this->CLEAR_BREAKPOINT_preMsgHook(opCode,cmdSeq);
4322 
4323  // Defer deserializing arguments to the message dispatcher
4324  // to avoid deserializing and reserializing just for IPC
4325  ComponentIpcSerializableBuffer msg;
4327 
4328  // Serialize for IPC
4329  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_CLEAR_BREAKPOINT));
4330  FW_ASSERT (
4331  _status == Fw::FW_SERIALIZE_OK,
4332  static_cast<FwAssertArgType>(_status)
4333  );
4334 
4335  // Fake port number to make message dequeue work
4336  FwIndexType port = 0;
4337 
4338  _status = msg.serializeFrom(port);
4339  FW_ASSERT (
4340  _status == Fw::FW_SERIALIZE_OK,
4341  static_cast<FwAssertArgType>(_status)
4342  );
4343 
4344  _status = msg.serializeFrom(opCode);
4345  FW_ASSERT (
4346  _status == Fw::FW_SERIALIZE_OK,
4347  static_cast<FwAssertArgType>(_status)
4348  );
4349 
4350  _status = msg.serializeFrom(cmdSeq);
4351  FW_ASSERT (
4352  _status == Fw::FW_SERIALIZE_OK,
4353  static_cast<FwAssertArgType>(_status)
4354  );
4355 
4356  _status = msg.serializeFrom(args);
4357  FW_ASSERT (
4358  _status == Fw::FW_SERIALIZE_OK,
4359  static_cast<FwAssertArgType>(_status)
4360  );
4361 
4362  // Send message
4364  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4365 
4366  FW_ASSERT(
4367  qStatus == Os::Queue::OP_OK,
4368  static_cast<FwAssertArgType>(qStatus)
4369  );
4370  }
4371 
4374  FwOpcodeType opCode,
4375  U32 cmdSeq,
4376  Fw::CmdArgBuffer& args
4377  )
4378  {
4379  // Call pre-message hook
4380  this->STEP_preMsgHook(opCode,cmdSeq);
4381 
4382  // Defer deserializing arguments to the message dispatcher
4383  // to avoid deserializing and reserializing just for IPC
4384  ComponentIpcSerializableBuffer msg;
4386 
4387  // Serialize for IPC
4388  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_STEP));
4389  FW_ASSERT (
4390  _status == Fw::FW_SERIALIZE_OK,
4391  static_cast<FwAssertArgType>(_status)
4392  );
4393 
4394  // Fake port number to make message dequeue work
4395  FwIndexType port = 0;
4396 
4397  _status = msg.serializeFrom(port);
4398  FW_ASSERT (
4399  _status == Fw::FW_SERIALIZE_OK,
4400  static_cast<FwAssertArgType>(_status)
4401  );
4402 
4403  _status = msg.serializeFrom(opCode);
4404  FW_ASSERT (
4405  _status == Fw::FW_SERIALIZE_OK,
4406  static_cast<FwAssertArgType>(_status)
4407  );
4408 
4409  _status = msg.serializeFrom(cmdSeq);
4410  FW_ASSERT (
4411  _status == Fw::FW_SERIALIZE_OK,
4412  static_cast<FwAssertArgType>(_status)
4413  );
4414 
4415  _status = msg.serializeFrom(args);
4416  FW_ASSERT (
4417  _status == Fw::FW_SERIALIZE_OK,
4418  static_cast<FwAssertArgType>(_status)
4419  );
4420 
4421  // Send message
4423  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4424 
4425  FW_ASSERT(
4426  qStatus == Os::Queue::OP_OK,
4427  static_cast<FwAssertArgType>(qStatus)
4428  );
4429  }
4430 
4433  FwOpcodeType opCode,
4434  U32 cmdSeq,
4435  Fw::CmdArgBuffer& args
4436  )
4437  {
4438  // Call pre-message hook
4439  this->DUMP_STACK_TO_FILE_preMsgHook(opCode,cmdSeq);
4440 
4441  // Defer deserializing arguments to the message dispatcher
4442  // to avoid deserializing and reserializing just for IPC
4443  ComponentIpcSerializableBuffer msg;
4445 
4446  // Serialize for IPC
4447  _status = msg.serializeFrom(static_cast<FwEnumStoreType>(CMD_DUMP_STACK_TO_FILE));
4448  FW_ASSERT (
4449  _status == Fw::FW_SERIALIZE_OK,
4450  static_cast<FwAssertArgType>(_status)
4451  );
4452 
4453  // Fake port number to make message dequeue work
4454  FwIndexType port = 0;
4455 
4456  _status = msg.serializeFrom(port);
4457  FW_ASSERT (
4458  _status == Fw::FW_SERIALIZE_OK,
4459  static_cast<FwAssertArgType>(_status)
4460  );
4461 
4462  _status = msg.serializeFrom(opCode);
4463  FW_ASSERT (
4464  _status == Fw::FW_SERIALIZE_OK,
4465  static_cast<FwAssertArgType>(_status)
4466  );
4467 
4468  _status = msg.serializeFrom(cmdSeq);
4469  FW_ASSERT (
4470  _status == Fw::FW_SERIALIZE_OK,
4471  static_cast<FwAssertArgType>(_status)
4472  );
4473 
4474  _status = msg.serializeFrom(args);
4475  FW_ASSERT (
4476  _status == Fw::FW_SERIALIZE_OK,
4477  static_cast<FwAssertArgType>(_status)
4478  );
4479 
4480  // Send message
4482  Os::Queue::Status qStatus = this->m_queue.send(msg, 7, _block);
4483 
4484  FW_ASSERT(
4485  qStatus == Os::Queue::OP_OK,
4486  static_cast<FwAssertArgType>(qStatus)
4487  );
4488  }
4489 
4490  // ----------------------------------------------------------------------
4491  // Pre-message hooks for async commands
4492  //
4493  // Each of these functions is invoked just before processing the
4494  // corresponding command. By default they do nothing. You can
4495  // override them to provide specific pre-command behavior.
4496  // ----------------------------------------------------------------------
4497 
4500  FwOpcodeType opCode,
4501  U32 cmdSeq
4502  )
4503  {
4504  // Defaults to no-op; can be overridden
4505  (void) opCode;
4506  (void) cmdSeq;
4507  }
4508 
4511  FwOpcodeType opCode,
4512  U32 cmdSeq
4513  )
4514  {
4515  // Defaults to no-op; can be overridden
4516  (void) opCode;
4517  (void) cmdSeq;
4518  }
4519 
4522  FwOpcodeType opCode,
4523  U32 cmdSeq
4524  )
4525  {
4526  // Defaults to no-op; can be overridden
4527  (void) opCode;
4528  (void) cmdSeq;
4529  }
4530 
4533  FwOpcodeType opCode,
4534  U32 cmdSeq
4535  )
4536  {
4537  // Defaults to no-op; can be overridden
4538  (void) opCode;
4539  (void) cmdSeq;
4540  }
4541 
4544  FwOpcodeType opCode,
4545  U32 cmdSeq
4546  )
4547  {
4548  // Defaults to no-op; can be overridden
4549  (void) opCode;
4550  (void) cmdSeq;
4551  }
4552 
4555  FwOpcodeType opCode,
4556  U32 cmdSeq
4557  )
4558  {
4559  // Defaults to no-op; can be overridden
4560  (void) opCode;
4561  (void) cmdSeq;
4562  }
4563 
4566  FwOpcodeType opCode,
4567  U32 cmdSeq
4568  )
4569  {
4570  // Defaults to no-op; can be overridden
4571  (void) opCode;
4572  (void) cmdSeq;
4573  }
4574 
4577  FwOpcodeType opCode,
4578  U32 cmdSeq
4579  )
4580  {
4581  // Defaults to no-op; can be overridden
4582  (void) opCode;
4583  (void) cmdSeq;
4584  }
4585 
4588  FwOpcodeType opCode,
4589  U32 cmdSeq
4590  )
4591  {
4592  // Defaults to no-op; can be overridden
4593  (void) opCode;
4594  (void) cmdSeq;
4595  }
4596 
4599  FwOpcodeType opCode,
4600  U32 cmdSeq
4601  )
4602  {
4603  // Defaults to no-op; can be overridden
4604  (void) opCode;
4605  (void) cmdSeq;
4606  }
4607 
4610  FwOpcodeType opCode,
4611  U32 cmdSeq
4612  )
4613  {
4614  // Defaults to no-op; can be overridden
4615  (void) opCode;
4616  (void) cmdSeq;
4617  }
4618 
4621  FwOpcodeType opCode,
4622  U32 cmdSeq
4623  )
4624  {
4625  // Defaults to no-op; can be overridden
4626  (void) opCode;
4627  (void) cmdSeq;
4628  }
4629 
4630  // ----------------------------------------------------------------------
4631  // Event logging functions
4632  // ----------------------------------------------------------------------
4633 
4636  {
4637  // Get the time
4638  Fw::Time _logTime;
4639  if (this->isConnected_timeCaller_OutputPort(0)) {
4640  this->timeCaller_out(0, _logTime);
4641  }
4642 
4643  const FwEventIdType _id = this->getIdBase() + EVENTID_INVALIDCOMMAND;
4644 
4645  // Emit the event on the log port
4646  if (this->isConnected_logOut_OutputPort(0)) {
4647  Fw::LogBuffer _logBuff;
4649 
4650 #if FW_AMPCS_COMPATIBLE
4651  // Serialize the number of arguments
4652  _status = _logBuff.serializeFrom(static_cast<U8>(1));
4653  FW_ASSERT(
4654  _status == Fw::FW_SERIALIZE_OK,
4655  static_cast<FwAssertArgType>(_status)
4656  );
4657 #endif
4658 
4659 #if FW_AMPCS_COMPATIBLE
4660  // Serialize the argument size
4661  _status = _logBuff.serializeFrom(
4662  static_cast<U8>(sizeof(I32))
4663  );
4664  FW_ASSERT(
4665  _status == Fw::FW_SERIALIZE_OK,
4666  static_cast<FwAssertArgType>(_status)
4667  );
4668 #endif
4669  _status = _logBuff.serializeFrom(state);
4670  FW_ASSERT(
4671  _status == Fw::FW_SERIALIZE_OK,
4672  static_cast<FwAssertArgType>(_status)
4673  );
4674 
4675  this->logOut_out(
4676  0,
4677  _id,
4678  _logTime,
4680  _logBuff
4681  );
4682  }
4683 
4684  // Emit the event on the text log port
4685 #if FW_ENABLE_TEXT_LOGGING
4686  if (this->isConnected_logTextOut_OutputPort(0)) {
4687 #if FW_OBJECT_NAMES == 1
4688  const char* _formatString =
4689  "(%s) %s: Cannot execute command in state %" PRIi32 "";
4690 #else
4691  const char* _formatString =
4692  "%s: Cannot execute command in state %" PRIi32 "";
4693 #endif
4694 
4695  Fw::TextLogString _logString;
4696  _logString.format(
4697  _formatString,
4698 #if FW_OBJECT_NAMES == 1
4699  this->m_objName.toChar(),
4700 #endif
4701  "InvalidCommand ",
4702  state
4703  );
4704 
4705  this->logTextOut_out(
4706  0,
4707  _id,
4708  _logTime,
4710  _logString
4711  );
4712  }
4713 #endif
4714  }
4715 
4718  {
4719  // Get the time
4720  Fw::Time _logTime;
4721  if (this->isConnected_timeCaller_OutputPort(0)) {
4722  this->timeCaller_out(0, _logTime);
4723  }
4724 
4725  const FwEventIdType _id = this->getIdBase() + EVENTID_INVALIDSEQRUNCALL;
4726 
4727  // Emit the event on the log port
4728  if (this->isConnected_logOut_OutputPort(0)) {
4729  Fw::LogBuffer _logBuff;
4731 
4732 #if FW_AMPCS_COMPATIBLE
4733  // Serialize the number of arguments
4734  _status = _logBuff.serializeFrom(static_cast<U8>(1));
4735  FW_ASSERT(
4736  _status == Fw::FW_SERIALIZE_OK,
4737  static_cast<FwAssertArgType>(_status)
4738  );
4739 #endif
4740 
4741 #if FW_AMPCS_COMPATIBLE
4742  // Serialize the argument size
4743  _status = _logBuff.serializeFrom(
4744  static_cast<U8>(sizeof(I32))
4745  );
4746  FW_ASSERT(
4747  _status == Fw::FW_SERIALIZE_OK,
4748  static_cast<FwAssertArgType>(_status)
4749  );
4750 #endif
4751  _status = _logBuff.serializeFrom(state);
4752  FW_ASSERT(
4753  _status == Fw::FW_SERIALIZE_OK,
4754  static_cast<FwAssertArgType>(_status)
4755  );
4756 
4757  this->logOut_out(
4758  0,
4759  _id,
4760  _logTime,
4762  _logBuff
4763  );
4764  }
4765 
4766  // Emit the event on the text log port
4767 #if FW_ENABLE_TEXT_LOGGING
4768  if (this->isConnected_logTextOut_OutputPort(0)) {
4769 #if FW_OBJECT_NAMES == 1
4770  const char* _formatString =
4771  "(%s) %s: Cannot run sequence from a port in state %" PRIi32 "";
4772 #else
4773  const char* _formatString =
4774  "%s: Cannot run sequence from a port in state %" PRIi32 "";
4775 #endif
4776 
4777  Fw::TextLogString _logString;
4778  _logString.format(
4779  _formatString,
4780 #if FW_OBJECT_NAMES == 1
4781  this->m_objName.toChar(),
4782 #endif
4783  "InvalidSeqRunCall ",
4784  state
4785  );
4786 
4787  this->logTextOut_out(
4788  0,
4789  _id,
4790  _logTime,
4792  _logString
4793  );
4794  }
4795 #endif
4796  }
4797 
4800  {
4801  // Get the time
4802  Fw::Time _logTime;
4803  if (this->isConnected_timeCaller_OutputPort(0)) {
4804  this->timeCaller_out(0, _logTime);
4805  }
4806 
4808 
4809  // Emit the event on the log port
4810  if (this->isConnected_logOut_OutputPort(0)) {
4811  Fw::LogBuffer _logBuff;
4813 
4814 #if FW_AMPCS_COMPATIBLE
4815  // Serialize the number of arguments
4816  _status = _logBuff.serializeFrom(static_cast<U8>(1));
4817  FW_ASSERT(
4818  _status == Fw::FW_SERIALIZE_OK,
4819  static_cast<FwAssertArgType>(_status)
4820  );
4821 #endif
4822 
4823 #if FW_AMPCS_COMPATIBLE
4824  // Serialize the argument size
4825  _status = _logBuff.serializeFrom(
4826  static_cast<U8>(sizeof(I32))
4827  );
4828  FW_ASSERT(
4829  _status == Fw::FW_SERIALIZE_OK,
4830  static_cast<FwAssertArgType>(_status)
4831  );
4832 #endif
4833  _status = _logBuff.serializeFrom(state);
4834  FW_ASSERT(
4835  _status == Fw::FW_SERIALIZE_OK,
4836  static_cast<FwAssertArgType>(_status)
4837  );
4838 
4839  this->logOut_out(
4840  0,
4841  _id,
4842  _logTime,
4844  _logBuff
4845  );
4846  }
4847 
4848  // Emit the event on the text log port
4849 #if FW_ENABLE_TEXT_LOGGING
4850  if (this->isConnected_logTextOut_OutputPort(0)) {
4851 #if FW_OBJECT_NAMES == 1
4852  const char* _formatString =
4853  "(%s) %s: Cannot cancel sequence from a port in state %" PRIi32 "";
4854 #else
4855  const char* _formatString =
4856  "%s: Cannot cancel sequence from a port in state %" PRIi32 "";
4857 #endif
4858 
4859  Fw::TextLogString _logString;
4860  _logString.format(
4861  _formatString,
4862 #if FW_OBJECT_NAMES == 1
4863  this->m_objName.toChar(),
4864 #endif
4865  "InvalidSeqCancelCall ",
4866  state
4867  );
4868 
4869  this->logTextOut_out(
4870  0,
4871  _id,
4872  _logTime,
4874  _logString
4875  );
4876  }
4877 #endif
4878  }
4879 
4882  const Fw::StringBase& filePath,
4883  I32 errorCode
4884  ) const
4885  {
4886  // Get the time
4887  Fw::Time _logTime;
4888  if (this->isConnected_timeCaller_OutputPort(0)) {
4889  this->timeCaller_out(0, _logTime);
4890  }
4891 
4892  const FwEventIdType _id = this->getIdBase() + EVENTID_FILEOPENERROR;
4893 
4894  // Emit the event on the log port
4895  if (this->isConnected_logOut_OutputPort(0)) {
4896  Fw::LogBuffer _logBuff;
4898 
4899 #if FW_AMPCS_COMPATIBLE
4900  // Serialize the number of arguments
4901  _status = _logBuff.serializeFrom(static_cast<U8>(2));
4902  FW_ASSERT(
4903  _status == Fw::FW_SERIALIZE_OK,
4904  static_cast<FwAssertArgType>(_status)
4905  );
4906 #endif
4907 
4908  _status = filePath.serializeTo(
4909  _logBuff,
4910  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
4911  );
4912  FW_ASSERT(
4913  _status == Fw::FW_SERIALIZE_OK,
4914  static_cast<FwAssertArgType>(_status)
4915  );
4916 
4917 #if FW_AMPCS_COMPATIBLE
4918  // Serialize the argument size
4919  _status = _logBuff.serializeFrom(
4920  static_cast<U8>(sizeof(I32))
4921  );
4922  FW_ASSERT(
4923  _status == Fw::FW_SERIALIZE_OK,
4924  static_cast<FwAssertArgType>(_status)
4925  );
4926 #endif
4927  _status = _logBuff.serializeFrom(errorCode);
4928  FW_ASSERT(
4929  _status == Fw::FW_SERIALIZE_OK,
4930  static_cast<FwAssertArgType>(_status)
4931  );
4932 
4933  this->logOut_out(
4934  0,
4935  _id,
4936  _logTime,
4938  _logBuff
4939  );
4940  }
4941 
4942  // Emit the event on the text log port
4943 #if FW_ENABLE_TEXT_LOGGING
4944  if (this->isConnected_logTextOut_OutputPort(0)) {
4945 #if FW_OBJECT_NAMES == 1
4946  const char* _formatString =
4947  "(%s) %s: File open error encountered while opening %s: %" PRIi32 "";
4948 #else
4949  const char* _formatString =
4950  "%s: File open error encountered while opening %s: %" PRIi32 "";
4951 #endif
4952 
4953  Fw::TextLogString _logString;
4954  _logString.format(
4955  _formatString,
4956 #if FW_OBJECT_NAMES == 1
4957  this->m_objName.toChar(),
4958 #endif
4959  "FileOpenError ",
4960  filePath.toChar(),
4961  errorCode
4962  );
4963 
4964  this->logTextOut_out(
4965  0,
4966  _id,
4967  _logTime,
4969  _logString
4970  );
4971  }
4972 #endif
4973  }
4974 
4977  FwSizeType writeSize,
4978  const Fw::StringBase& filePath,
4979  I32 errorCode
4980  ) const
4981  {
4982  // Get the time
4983  Fw::Time _logTime;
4984  if (this->isConnected_timeCaller_OutputPort(0)) {
4985  this->timeCaller_out(0, _logTime);
4986  }
4987 
4988  const FwEventIdType _id = this->getIdBase() + EVENTID_FILEWRITEERROR;
4989 
4990  // Emit the event on the log port
4991  if (this->isConnected_logOut_OutputPort(0)) {
4992  Fw::LogBuffer _logBuff;
4994 
4995 #if FW_AMPCS_COMPATIBLE
4996  // Serialize the number of arguments
4997  _status = _logBuff.serializeFrom(static_cast<U8>(3));
4998  FW_ASSERT(
4999  _status == Fw::FW_SERIALIZE_OK,
5000  static_cast<FwAssertArgType>(_status)
5001  );
5002 #endif
5003 
5004 #if FW_AMPCS_COMPATIBLE
5005  // Serialize the argument size
5006  _status = _logBuff.serializeFrom(
5007  static_cast<U8>(sizeof(FwSizeType))
5008  );
5009  FW_ASSERT(
5010  _status == Fw::FW_SERIALIZE_OK,
5011  static_cast<FwAssertArgType>(_status)
5012  );
5013 #endif
5014  _status = _logBuff.serializeFrom(writeSize);
5015  FW_ASSERT(
5016  _status == Fw::FW_SERIALIZE_OK,
5017  static_cast<FwAssertArgType>(_status)
5018  );
5019 
5020  _status = filePath.serializeTo(
5021  _logBuff,
5022  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
5023  );
5024  FW_ASSERT(
5025  _status == Fw::FW_SERIALIZE_OK,
5026  static_cast<FwAssertArgType>(_status)
5027  );
5028 
5029 #if FW_AMPCS_COMPATIBLE
5030  // Serialize the argument size
5031  _status = _logBuff.serializeFrom(
5032  static_cast<U8>(sizeof(I32))
5033  );
5034  FW_ASSERT(
5035  _status == Fw::FW_SERIALIZE_OK,
5036  static_cast<FwAssertArgType>(_status)
5037  );
5038 #endif
5039  _status = _logBuff.serializeFrom(errorCode);
5040  FW_ASSERT(
5041  _status == Fw::FW_SERIALIZE_OK,
5042  static_cast<FwAssertArgType>(_status)
5043  );
5044 
5045  this->logOut_out(
5046  0,
5047  _id,
5048  _logTime,
5050  _logBuff
5051  );
5052  }
5053 
5054  // Emit the event on the text log port
5055 #if FW_ENABLE_TEXT_LOGGING
5056  if (this->isConnected_logTextOut_OutputPort(0)) {
5057 #if FW_OBJECT_NAMES == 1
5058  const char* _formatString =
5059  "(%s) %s: File write error encountered while writing %" PRIu64 " bytes to %s: %" PRIi32 "";
5060 #else
5061  const char* _formatString =
5062  "%s: File write error encountered while writing %" PRIu64 " bytes to %s: %" PRIi32 "";
5063 #endif
5064 
5065  Fw::TextLogString _logString;
5066  _logString.format(
5067  _formatString,
5068 #if FW_OBJECT_NAMES == 1
5069  this->m_objName.toChar(),
5070 #endif
5071  "FileWriteError ",
5072  writeSize,
5073  filePath.toChar(),
5074  errorCode
5075  );
5076 
5077  this->logTextOut_out(
5078  0,
5079  _id,
5080  _logTime,
5082  _logString
5083  );
5084  }
5085 #endif
5086  }
5087 
5091  const Fw::StringBase& filePath,
5092  I32 errorCode
5093  ) const
5094  {
5095  // Get the time
5096  Fw::Time _logTime;
5097  if (this->isConnected_timeCaller_OutputPort(0)) {
5098  this->timeCaller_out(0, _logTime);
5099  }
5100 
5101  const FwEventIdType _id = this->getIdBase() + EVENTID_FILEREADERROR;
5102 
5103  // Emit the event on the log port
5104  if (this->isConnected_logOut_OutputPort(0)) {
5105  Fw::LogBuffer _logBuff;
5107 
5108 #if FW_AMPCS_COMPATIBLE
5109  // Serialize the number of arguments
5110  _status = _logBuff.serializeFrom(static_cast<U8>(3));
5111  FW_ASSERT(
5112  _status == Fw::FW_SERIALIZE_OK,
5113  static_cast<FwAssertArgType>(_status)
5114  );
5115 #endif
5116 
5117 #if FW_AMPCS_COMPATIBLE
5118  // Serialize the argument size
5119  _status = _logBuff.serializeFrom(
5121  );
5122  FW_ASSERT(
5123  _status == Fw::FW_SERIALIZE_OK,
5124  static_cast<FwAssertArgType>(_status)
5125  );
5126 #endif
5127  _status = _logBuff.serializeFrom(readStage);
5128  FW_ASSERT(
5129  _status == Fw::FW_SERIALIZE_OK,
5130  static_cast<FwAssertArgType>(_status)
5131  );
5132 
5133  _status = filePath.serializeTo(
5134  _logBuff,
5135  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
5136  );
5137  FW_ASSERT(
5138  _status == Fw::FW_SERIALIZE_OK,
5139  static_cast<FwAssertArgType>(_status)
5140  );
5141 
5142 #if FW_AMPCS_COMPATIBLE
5143  // Serialize the argument size
5144  _status = _logBuff.serializeFrom(
5145  static_cast<U8>(sizeof(I32))
5146  );
5147  FW_ASSERT(
5148  _status == Fw::FW_SERIALIZE_OK,
5149  static_cast<FwAssertArgType>(_status)
5150  );
5151 #endif
5152  _status = _logBuff.serializeFrom(errorCode);
5153  FW_ASSERT(
5154  _status == Fw::FW_SERIALIZE_OK,
5155  static_cast<FwAssertArgType>(_status)
5156  );
5157 
5158  this->logOut_out(
5159  0,
5160  _id,
5161  _logTime,
5163  _logBuff
5164  );
5165  }
5166 
5167  // Emit the event on the text log port
5168 #if FW_ENABLE_TEXT_LOGGING
5169  if (this->isConnected_logTextOut_OutputPort(0)) {
5170 #if FW_OBJECT_NAMES == 1
5171  const char* _formatString =
5172  "(%s) %s: File read error encountered while reading %s of file %s: %" PRIi32 "";
5173 #else
5174  const char* _formatString =
5175  "%s: File read error encountered while reading %s of file %s: %" PRIi32 "";
5176 #endif
5177 
5178  Fw::String readStageStr;
5179  readStage.toString(readStageStr);
5180 
5181  Fw::TextLogString _logString;
5182  _logString.format(
5183  _formatString,
5184 #if FW_OBJECT_NAMES == 1
5185  this->m_objName.toChar(),
5186 #endif
5187  "FileReadError ",
5188  readStageStr.toChar(),
5189  filePath.toChar(),
5190  errorCode
5191  );
5192 
5193  this->logTextOut_out(
5194  0,
5195  _id,
5196  _logTime,
5198  _logString
5199  );
5200  }
5201 #endif
5202  }
5203 
5207  const Fw::StringBase& filePath
5208  ) const
5209  {
5210  // Get the time
5211  Fw::Time _logTime;
5212  if (this->isConnected_timeCaller_OutputPort(0)) {
5213  this->timeCaller_out(0, _logTime);
5214  }
5215 
5216  const FwEventIdType _id = this->getIdBase() + EVENTID_ENDOFFILEERROR;
5217 
5218  // Emit the event on the log port
5219  if (this->isConnected_logOut_OutputPort(0)) {
5220  Fw::LogBuffer _logBuff;
5222 
5223 #if FW_AMPCS_COMPATIBLE
5224  // Serialize the number of arguments
5225  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5226  FW_ASSERT(
5227  _status == Fw::FW_SERIALIZE_OK,
5228  static_cast<FwAssertArgType>(_status)
5229  );
5230 #endif
5231 
5232 #if FW_AMPCS_COMPATIBLE
5233  // Serialize the argument size
5234  _status = _logBuff.serializeFrom(
5236  );
5237  FW_ASSERT(
5238  _status == Fw::FW_SERIALIZE_OK,
5239  static_cast<FwAssertArgType>(_status)
5240  );
5241 #endif
5242  _status = _logBuff.serializeFrom(readStage);
5243  FW_ASSERT(
5244  _status == Fw::FW_SERIALIZE_OK,
5245  static_cast<FwAssertArgType>(_status)
5246  );
5247 
5248  _status = filePath.serializeTo(
5249  _logBuff,
5250  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
5251  );
5252  FW_ASSERT(
5253  _status == Fw::FW_SERIALIZE_OK,
5254  static_cast<FwAssertArgType>(_status)
5255  );
5256 
5257  this->logOut_out(
5258  0,
5259  _id,
5260  _logTime,
5262  _logBuff
5263  );
5264  }
5265 
5266  // Emit the event on the text log port
5267 #if FW_ENABLE_TEXT_LOGGING
5268  if (this->isConnected_logTextOut_OutputPort(0)) {
5269 #if FW_OBJECT_NAMES == 1
5270  const char* _formatString =
5271  "(%s) %s: End of file encountered unexpectedly while reading %s of file %s";
5272 #else
5273  const char* _formatString =
5274  "%s: End of file encountered unexpectedly while reading %s of file %s";
5275 #endif
5276 
5277  Fw::String readStageStr;
5278  readStage.toString(readStageStr);
5279 
5280  Fw::TextLogString _logString;
5281  _logString.format(
5282  _formatString,
5283 #if FW_OBJECT_NAMES == 1
5284  this->m_objName.toChar(),
5285 #endif
5286  "EndOfFileError ",
5287  readStageStr.toChar(),
5288  filePath.toChar()
5289  );
5290 
5291  this->logTextOut_out(
5292  0,
5293  _id,
5294  _logTime,
5296  _logString
5297  );
5298  }
5299 #endif
5300  }
5301 
5305  const Fw::StringBase& filePath,
5306  I32 errorCode,
5307  U64 buffLeft,
5308  U64 buffLength
5309  ) const
5310  {
5311  // Get the time
5312  Fw::Time _logTime;
5313  if (this->isConnected_timeCaller_OutputPort(0)) {
5314  this->timeCaller_out(0, _logTime);
5315  }
5316 
5318 
5319  // Emit the event on the log port
5320  if (this->isConnected_logOut_OutputPort(0)) {
5321  Fw::LogBuffer _logBuff;
5323 
5324 #if FW_AMPCS_COMPATIBLE
5325  // Serialize the number of arguments
5326  _status = _logBuff.serializeFrom(static_cast<U8>(5));
5327  FW_ASSERT(
5328  _status == Fw::FW_SERIALIZE_OK,
5329  static_cast<FwAssertArgType>(_status)
5330  );
5331 #endif
5332 
5333 #if FW_AMPCS_COMPATIBLE
5334  // Serialize the argument size
5335  _status = _logBuff.serializeFrom(
5337  );
5338  FW_ASSERT(
5339  _status == Fw::FW_SERIALIZE_OK,
5340  static_cast<FwAssertArgType>(_status)
5341  );
5342 #endif
5343  _status = _logBuff.serializeFrom(readStage);
5344  FW_ASSERT(
5345  _status == Fw::FW_SERIALIZE_OK,
5346  static_cast<FwAssertArgType>(_status)
5347  );
5348 
5349  _status = filePath.serializeTo(
5350  _logBuff,
5351  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
5352  );
5353  FW_ASSERT(
5354  _status == Fw::FW_SERIALIZE_OK,
5355  static_cast<FwAssertArgType>(_status)
5356  );
5357 
5358 #if FW_AMPCS_COMPATIBLE
5359  // Serialize the argument size
5360  _status = _logBuff.serializeFrom(
5361  static_cast<U8>(sizeof(I32))
5362  );
5363  FW_ASSERT(
5364  _status == Fw::FW_SERIALIZE_OK,
5365  static_cast<FwAssertArgType>(_status)
5366  );
5367 #endif
5368  _status = _logBuff.serializeFrom(errorCode);
5369  FW_ASSERT(
5370  _status == Fw::FW_SERIALIZE_OK,
5371  static_cast<FwAssertArgType>(_status)
5372  );
5373 
5374 #if FW_AMPCS_COMPATIBLE
5375  // Serialize the argument size
5376  _status = _logBuff.serializeFrom(
5377  static_cast<U8>(sizeof(U64))
5378  );
5379  FW_ASSERT(
5380  _status == Fw::FW_SERIALIZE_OK,
5381  static_cast<FwAssertArgType>(_status)
5382  );
5383 #endif
5384  _status = _logBuff.serializeFrom(buffLeft);
5385  FW_ASSERT(
5386  _status == Fw::FW_SERIALIZE_OK,
5387  static_cast<FwAssertArgType>(_status)
5388  );
5389 
5390 #if FW_AMPCS_COMPATIBLE
5391  // Serialize the argument size
5392  _status = _logBuff.serializeFrom(
5393  static_cast<U8>(sizeof(U64))
5394  );
5395  FW_ASSERT(
5396  _status == Fw::FW_SERIALIZE_OK,
5397  static_cast<FwAssertArgType>(_status)
5398  );
5399 #endif
5400  _status = _logBuff.serializeFrom(buffLength);
5401  FW_ASSERT(
5402  _status == Fw::FW_SERIALIZE_OK,
5403  static_cast<FwAssertArgType>(_status)
5404  );
5405 
5406  this->logOut_out(
5407  0,
5408  _id,
5409  _logTime,
5411  _logBuff
5412  );
5413  }
5414 
5415  // Emit the event on the text log port
5416 #if FW_ENABLE_TEXT_LOGGING
5417  if (this->isConnected_logTextOut_OutputPort(0)) {
5418 #if FW_OBJECT_NAMES == 1
5419  const char* _formatString =
5420  "(%s) %s: Deserialize error encountered while reading %s of file %s: %" PRIi32 " (%" PRIu64 " bytes left out of %" PRIu64 ")";
5421 #else
5422  const char* _formatString =
5423  "%s: Deserialize error encountered while reading %s of file %s: %" PRIi32 " (%" PRIu64 " bytes left out of %" PRIu64 ")";
5424 #endif
5425 
5426  Fw::String readStageStr;
5427  readStage.toString(readStageStr);
5428 
5429  Fw::TextLogString _logString;
5430  _logString.format(
5431  _formatString,
5432 #if FW_OBJECT_NAMES == 1
5433  this->m_objName.toChar(),
5434 #endif
5435  "FileReadDeserializeError ",
5436  readStageStr.toChar(),
5437  filePath.toChar(),
5438  errorCode,
5439  buffLeft,
5440  buffLength
5441  );
5442 
5443  this->logTextOut_out(
5444  0,
5445  _id,
5446  _logTime,
5448  _logString
5449  );
5450  }
5451 #endif
5452  }
5453 
5456  U8 expected,
5457  U8 actual
5458  ) const
5459  {
5460  // Get the time
5461  Fw::Time _logTime;
5462  if (this->isConnected_timeCaller_OutputPort(0)) {
5463  this->timeCaller_out(0, _logTime);
5464  }
5465 
5466  const FwEventIdType _id = this->getIdBase() + EVENTID_WRONGSCHEMAVERSION;
5467 
5468  // Emit the event on the log port
5469  if (this->isConnected_logOut_OutputPort(0)) {
5470  Fw::LogBuffer _logBuff;
5472 
5473 #if FW_AMPCS_COMPATIBLE
5474  // Serialize the number of arguments
5475  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5476  FW_ASSERT(
5477  _status == Fw::FW_SERIALIZE_OK,
5478  static_cast<FwAssertArgType>(_status)
5479  );
5480 #endif
5481 
5482 #if FW_AMPCS_COMPATIBLE
5483  // Serialize the argument size
5484  _status = _logBuff.serializeFrom(
5485  static_cast<U8>(sizeof(U8))
5486  );
5487  FW_ASSERT(
5488  _status == Fw::FW_SERIALIZE_OK,
5489  static_cast<FwAssertArgType>(_status)
5490  );
5491 #endif
5492  _status = _logBuff.serializeFrom(expected);
5493  FW_ASSERT(
5494  _status == Fw::FW_SERIALIZE_OK,
5495  static_cast<FwAssertArgType>(_status)
5496  );
5497 
5498 #if FW_AMPCS_COMPATIBLE
5499  // Serialize the argument size
5500  _status = _logBuff.serializeFrom(
5501  static_cast<U8>(sizeof(U8))
5502  );
5503  FW_ASSERT(
5504  _status == Fw::FW_SERIALIZE_OK,
5505  static_cast<FwAssertArgType>(_status)
5506  );
5507 #endif
5508  _status = _logBuff.serializeFrom(actual);
5509  FW_ASSERT(
5510  _status == Fw::FW_SERIALIZE_OK,
5511  static_cast<FwAssertArgType>(_status)
5512  );
5513 
5514  this->logOut_out(
5515  0,
5516  _id,
5517  _logTime,
5519  _logBuff
5520  );
5521  }
5522 
5523  // Emit the event on the text log port
5524 #if FW_ENABLE_TEXT_LOGGING
5525  if (this->isConnected_logTextOut_OutputPort(0)) {
5526 #if FW_OBJECT_NAMES == 1
5527  const char* _formatString =
5528  "(%s) %s: Expected schema version %" PRIu8 ", found %" PRIu8 "";
5529 #else
5530  const char* _formatString =
5531  "%s: Expected schema version %" PRIu8 ", found %" PRIu8 "";
5532 #endif
5533 
5534  Fw::TextLogString _logString;
5535  _logString.format(
5536  _formatString,
5537 #if FW_OBJECT_NAMES == 1
5538  this->m_objName.toChar(),
5539 #endif
5540  "WrongSchemaVersion ",
5541  expected,
5542  actual
5543  );
5544 
5545  this->logTextOut_out(
5546  0,
5547  _id,
5548  _logTime,
5550  _logString
5551  );
5552  }
5553 #endif
5554  }
5555 
5558  U32 expected,
5559  U32 actual
5560  ) const
5561  {
5562  // Get the time
5563  Fw::Time _logTime;
5564  if (this->isConnected_timeCaller_OutputPort(0)) {
5565  this->timeCaller_out(0, _logTime);
5566  }
5567 
5568  const FwEventIdType _id = this->getIdBase() + EVENTID_WRONGCRC;
5569 
5570  // Emit the event on the log port
5571  if (this->isConnected_logOut_OutputPort(0)) {
5572  Fw::LogBuffer _logBuff;
5574 
5575 #if FW_AMPCS_COMPATIBLE
5576  // Serialize the number of arguments
5577  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5578  FW_ASSERT(
5579  _status == Fw::FW_SERIALIZE_OK,
5580  static_cast<FwAssertArgType>(_status)
5581  );
5582 #endif
5583 
5584 #if FW_AMPCS_COMPATIBLE
5585  // Serialize the argument size
5586  _status = _logBuff.serializeFrom(
5587  static_cast<U8>(sizeof(U32))
5588  );
5589  FW_ASSERT(
5590  _status == Fw::FW_SERIALIZE_OK,
5591  static_cast<FwAssertArgType>(_status)
5592  );
5593 #endif
5594  _status = _logBuff.serializeFrom(expected);
5595  FW_ASSERT(
5596  _status == Fw::FW_SERIALIZE_OK,
5597  static_cast<FwAssertArgType>(_status)
5598  );
5599 
5600 #if FW_AMPCS_COMPATIBLE
5601  // Serialize the argument size
5602  _status = _logBuff.serializeFrom(
5603  static_cast<U8>(sizeof(U32))
5604  );
5605  FW_ASSERT(
5606  _status == Fw::FW_SERIALIZE_OK,
5607  static_cast<FwAssertArgType>(_status)
5608  );
5609 #endif
5610  _status = _logBuff.serializeFrom(actual);
5611  FW_ASSERT(
5612  _status == Fw::FW_SERIALIZE_OK,
5613  static_cast<FwAssertArgType>(_status)
5614  );
5615 
5616  this->logOut_out(
5617  0,
5618  _id,
5619  _logTime,
5621  _logBuff
5622  );
5623  }
5624 
5625  // Emit the event on the text log port
5626 #if FW_ENABLE_TEXT_LOGGING
5627  if (this->isConnected_logTextOut_OutputPort(0)) {
5628 #if FW_OBJECT_NAMES == 1
5629  const char* _formatString =
5630  "(%s) %s: Expected CRC %" PRIu32 ", actual was %" PRIu32 "";
5631 #else
5632  const char* _formatString =
5633  "%s: Expected CRC %" PRIu32 ", actual was %" PRIu32 "";
5634 #endif
5635 
5636  Fw::TextLogString _logString;
5637  _logString.format(
5638  _formatString,
5639 #if FW_OBJECT_NAMES == 1
5640  this->m_objName.toChar(),
5641 #endif
5642  "WrongCRC ",
5643  expected,
5644  actual
5645  );
5646 
5647  this->logTextOut_out(
5648  0,
5649  _id,
5650  _logTime,
5652  _logString
5653  );
5654  }
5655 #endif
5656  }
5657 
5660  {
5661  // Get the time
5662  Fw::Time _logTime;
5663  if (this->isConnected_timeCaller_OutputPort(0)) {
5664  this->timeCaller_out(0, _logTime);
5665  }
5666 
5668 
5669  // Emit the event on the log port
5670  if (this->isConnected_logOut_OutputPort(0)) {
5671  Fw::LogBuffer _logBuff;
5673 
5674 #if FW_AMPCS_COMPATIBLE
5675  // Serialize the number of arguments
5676  _status = _logBuff.serializeFrom(static_cast<U8>(1));
5677  FW_ASSERT(
5678  _status == Fw::FW_SERIALIZE_OK,
5679  static_cast<FwAssertArgType>(_status)
5680  );
5681 #endif
5682 
5683 #if FW_AMPCS_COMPATIBLE
5684  // Serialize the argument size
5685  _status = _logBuff.serializeFrom(
5686  static_cast<U8>(sizeof(FwSizeType))
5687  );
5688  FW_ASSERT(
5689  _status == Fw::FW_SERIALIZE_OK,
5690  static_cast<FwAssertArgType>(_status)
5691  );
5692 #endif
5693  _status = _logBuff.serializeFrom(remaining);
5694  FW_ASSERT(
5695  _status == Fw::FW_SERIALIZE_OK,
5696  static_cast<FwAssertArgType>(_status)
5697  );
5698 
5699  this->logOut_out(
5700  0,
5701  _id,
5702  _logTime,
5704  _logBuff
5705  );
5706  }
5707 
5708  // Emit the event on the text log port
5709 #if FW_ENABLE_TEXT_LOGGING
5710  if (this->isConnected_logTextOut_OutputPort(0)) {
5711 #if FW_OBJECT_NAMES == 1
5712  const char* _formatString =
5713  "(%s) %s: File had %" PRIu64 " extra bytes at the end";
5714 #else
5715  const char* _formatString =
5716  "%s: File had %" PRIu64 " extra bytes at the end";
5717 #endif
5718 
5719  Fw::TextLogString _logString;
5720  _logString.format(
5721  _formatString,
5722 #if FW_OBJECT_NAMES == 1
5723  this->m_objName.toChar(),
5724 #endif
5725  "ExtraBytesInSequence ",
5726  remaining
5727  );
5728 
5729  this->logTextOut_out(
5730  0,
5731  _id,
5732  _logTime,
5734  _logString
5735  );
5736  }
5737 #endif
5738  }
5739 
5742  U64 bufferSize,
5743  const Fw::StringBase& filePath
5744  ) const
5745  {
5746  // Get the time
5747  Fw::Time _logTime;
5748  if (this->isConnected_timeCaller_OutputPort(0)) {
5749  this->timeCaller_out(0, _logTime);
5750  }
5751 
5753 
5754  // Emit the event on the log port
5755  if (this->isConnected_logOut_OutputPort(0)) {
5756  Fw::LogBuffer _logBuff;
5758 
5759 #if FW_AMPCS_COMPATIBLE
5760  // Serialize the number of arguments
5761  _status = _logBuff.serializeFrom(static_cast<U8>(2));
5762  FW_ASSERT(
5763  _status == Fw::FW_SERIALIZE_OK,
5764  static_cast<FwAssertArgType>(_status)
5765  );
5766 #endif
5767 
5768 #if FW_AMPCS_COMPATIBLE
5769  // Serialize the argument size
5770  _status = _logBuff.serializeFrom(
5771  static_cast<U8>(sizeof(U64))
5772  );
5773  FW_ASSERT(
5774  _status == Fw::FW_SERIALIZE_OK,
5775  static_cast<FwAssertArgType>(_status)
5776  );
5777 #endif
5778  _status = _logBuff.serializeFrom(bufferSize);
5779  FW_ASSERT(
5780  _status == Fw::FW_SERIALIZE_OK,
5781  static_cast<FwAssertArgType>(_status)
5782  );
5783 
5784  _status = filePath.serializeTo(
5785  _logBuff,
5786  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
5787  );
5788  FW_ASSERT(
5789  _status == Fw::FW_SERIALIZE_OK,
5790  static_cast<FwAssertArgType>(_status)
5791  );
5792 
5793  this->logOut_out(
5794  0,
5795  _id,
5796  _logTime,
5798  _logBuff
5799  );
5800  }
5801 
5802  // Emit the event on the text log port
5803 #if FW_ENABLE_TEXT_LOGGING
5804  if (this->isConnected_logTextOut_OutputPort(0)) {
5805 #if FW_OBJECT_NAMES == 1
5806  const char* _formatString =
5807  "(%s) %s: Buffer capacity of %" PRIu64 " was not big enough for sequence %s";
5808 #else
5809  const char* _formatString =
5810  "%s: Buffer capacity of %" PRIu64 " was not big enough for sequence %s";
5811 #endif
5812 
5813  Fw::TextLogString _logString;
5814  _logString.format(
5815  _formatString,
5816 #if FW_OBJECT_NAMES == 1
5817  this->m_objName.toChar(),
5818 #endif
5819  "InsufficientBufferSpace ",
5820  bufferSize,
5821  filePath.toChar()
5822  );
5823 
5824  this->logTextOut_out(
5825  0,
5826  _id,
5827  _logTime,
5829  _logString
5830  );
5831  }
5832 #endif
5833  }
5834 
5837  FwOpcodeType opCode,
5838  U32 stmtIdx,
5839  const Fw::StringBase& filePath,
5840  Fw::CmdResponse response
5841  ) const
5842  {
5843  // Get the time
5844  Fw::Time _logTime;
5845  if (this->isConnected_timeCaller_OutputPort(0)) {
5846  this->timeCaller_out(0, _logTime);
5847  }
5848 
5849  const FwEventIdType _id = this->getIdBase() + EVENTID_COMMANDFAILED;
5850 
5851  // Emit the event on the log port
5852  if (this->isConnected_logOut_OutputPort(0)) {
5853  Fw::LogBuffer _logBuff;
5855 
5856 #if FW_AMPCS_COMPATIBLE
5857  // Serialize the number of arguments
5858  _status = _logBuff.serializeFrom(static_cast<U8>(4));
5859  FW_ASSERT(
5860  _status == Fw::FW_SERIALIZE_OK,
5861  static_cast<FwAssertArgType>(_status)
5862  );
5863 #endif
5864 
5865 #if FW_AMPCS_COMPATIBLE
5866  // Serialize the argument size
5867  _status = _logBuff.serializeFrom(
5868  static_cast<U8>(sizeof(FwOpcodeType))
5869  );
5870  FW_ASSERT(
5871  _status == Fw::FW_SERIALIZE_OK,
5872  static_cast<FwAssertArgType>(_status)
5873  );
5874 #endif
5875  _status = _logBuff.serializeFrom(opCode);
5876  FW_ASSERT(
5877  _status == Fw::FW_SERIALIZE_OK,
5878  static_cast<FwAssertArgType>(_status)
5879  );
5880 
5881 #if FW_AMPCS_COMPATIBLE
5882  // Serialize the argument size
5883  _status = _logBuff.serializeFrom(
5884  static_cast<U8>(sizeof(U32))
5885  );
5886  FW_ASSERT(
5887  _status == Fw::FW_SERIALIZE_OK,
5888  static_cast<FwAssertArgType>(_status)
5889  );
5890 #endif
5891  _status = _logBuff.serializeFrom(stmtIdx);
5892  FW_ASSERT(
5893  _status == Fw::FW_SERIALIZE_OK,
5894  static_cast<FwAssertArgType>(_status)
5895  );
5896 
5897  _status = filePath.serializeTo(
5898  _logBuff,
5899  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
5900  );
5901  FW_ASSERT(
5902  _status == Fw::FW_SERIALIZE_OK,
5903  static_cast<FwAssertArgType>(_status)
5904  );
5905 
5906 #if FW_AMPCS_COMPATIBLE
5907  // Serialize the argument size
5908  _status = _logBuff.serializeFrom(
5909  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
5910  );
5911  FW_ASSERT(
5912  _status == Fw::FW_SERIALIZE_OK,
5913  static_cast<FwAssertArgType>(_status)
5914  );
5915 #endif
5916  _status = _logBuff.serializeFrom(response);
5917  FW_ASSERT(
5918  _status == Fw::FW_SERIALIZE_OK,
5919  static_cast<FwAssertArgType>(_status)
5920  );
5921 
5922  this->logOut_out(
5923  0,
5924  _id,
5925  _logTime,
5927  _logBuff
5928  );
5929  }
5930 
5931  // Emit the event on the text log port
5932 #if FW_ENABLE_TEXT_LOGGING
5933  if (this->isConnected_logTextOut_OutputPort(0)) {
5934 #if FW_OBJECT_NAMES == 1
5935  const char* _formatString =
5936  "(%s) %s: Failed to execute command opcode %" PRIu32 " index %" PRIu32 " in sequence file %s: response was %s";
5937 #else
5938  const char* _formatString =
5939  "%s: Failed to execute command opcode %" PRIu32 " index %" PRIu32 " in sequence file %s: response was %s";
5940 #endif
5941 
5942  Fw::String responseStr;
5943  response.toString(responseStr);
5944 
5945  Fw::TextLogString _logString;
5946  _logString.format(
5947  _formatString,
5948 #if FW_OBJECT_NAMES == 1
5949  this->m_objName.toChar(),
5950 #endif
5951  "CommandFailed ",
5952  opCode,
5953  stmtIdx,
5954  filePath.toChar(),
5955  responseStr.toChar()
5956  );
5957 
5958  this->logTextOut_out(
5959  0,
5960  _id,
5961  _logTime,
5963  _logString
5964  );
5965  }
5966 #endif
5967  }
5968 
5971  {
5972  // Get the time
5973  Fw::Time _logTime;
5974  if (this->isConnected_timeCaller_OutputPort(0)) {
5975  this->timeCaller_out(0, _logTime);
5976  }
5977 
5978  const FwEventIdType _id = this->getIdBase() + EVENTID_SEQUENCEDONE;
5979 
5980  // Emit the event on the log port
5981  if (this->isConnected_logOut_OutputPort(0)) {
5982  Fw::LogBuffer _logBuff;
5984 
5985 #if FW_AMPCS_COMPATIBLE
5986  // Serialize the number of arguments
5987  _status = _logBuff.serializeFrom(static_cast<U8>(1));
5988  FW_ASSERT(
5989  _status == Fw::FW_SERIALIZE_OK,
5990  static_cast<FwAssertArgType>(_status)
5991  );
5992 #endif
5993 
5994  _status = filePath.serializeTo(
5995  _logBuff,
5996  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
5997  );
5998  FW_ASSERT(
5999  _status == Fw::FW_SERIALIZE_OK,
6000  static_cast<FwAssertArgType>(_status)
6001  );
6002 
6003  this->logOut_out(
6004  0,
6005  _id,
6006  _logTime,
6008  _logBuff
6009  );
6010  }
6011 
6012  // Emit the event on the text log port
6013 #if FW_ENABLE_TEXT_LOGGING
6014  if (this->isConnected_logTextOut_OutputPort(0)) {
6015 #if FW_OBJECT_NAMES == 1
6016  const char* _formatString =
6017  "(%s) %s: Completed sequence file %s";
6018 #else
6019  const char* _formatString =
6020  "%s: Completed sequence file %s";
6021 #endif
6022 
6023  Fw::TextLogString _logString;
6024  _logString.format(
6025  _formatString,
6026 #if FW_OBJECT_NAMES == 1
6027  this->m_objName.toChar(),
6028 #endif
6029  "SequenceDone ",
6030  filePath.toChar()
6031  );
6032 
6033  this->logTextOut_out(
6034  0,
6035  _id,
6036  _logTime,
6038  _logString
6039  );
6040  }
6041 #endif
6042  }
6043 
6046  {
6047  // Get the time
6048  Fw::Time _logTime;
6049  if (this->isConnected_timeCaller_OutputPort(0)) {
6050  this->timeCaller_out(0, _logTime);
6051  }
6052 
6053  const FwEventIdType _id = this->getIdBase() + EVENTID_SEQUENCECANCELLED;
6054 
6055  // Emit the event on the log port
6056  if (this->isConnected_logOut_OutputPort(0)) {
6057  Fw::LogBuffer _logBuff;
6059 
6060 #if FW_AMPCS_COMPATIBLE
6061  // Serialize the number of arguments
6062  _status = _logBuff.serializeFrom(static_cast<U8>(1));
6063  FW_ASSERT(
6064  _status == Fw::FW_SERIALIZE_OK,
6065  static_cast<FwAssertArgType>(_status)
6066  );
6067 #endif
6068 
6069  _status = filePath.serializeTo(
6070  _logBuff,
6071  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
6072  );
6073  FW_ASSERT(
6074  _status == Fw::FW_SERIALIZE_OK,
6075  static_cast<FwAssertArgType>(_status)
6076  );
6077 
6078  this->logOut_out(
6079  0,
6080  _id,
6081  _logTime,
6083  _logBuff
6084  );
6085  }
6086 
6087  // Emit the event on the text log port
6088 #if FW_ENABLE_TEXT_LOGGING
6089  if (this->isConnected_logTextOut_OutputPort(0)) {
6090 #if FW_OBJECT_NAMES == 1
6091  const char* _formatString =
6092  "(%s) %s: Cancelled sequence file %s";
6093 #else
6094  const char* _formatString =
6095  "%s: Cancelled sequence file %s";
6096 #endif
6097 
6098  Fw::TextLogString _logString;
6099  _logString.format(
6100  _formatString,
6101 #if FW_OBJECT_NAMES == 1
6102  this->m_objName.toChar(),
6103 #endif
6104  "SequenceCancelled ",
6105  filePath.toChar()
6106  );
6107 
6108  this->logTextOut_out(
6109  0,
6110  _id,
6111  _logTime,
6113  _logString
6114  );
6115  }
6116 #endif
6117  }
6118 
6121  const Fw::StringBase& filePath,
6122  U8 errorCode
6123  ) const
6124  {
6125  // Get the time
6126  Fw::Time _logTime;
6127  if (this->isConnected_timeCaller_OutputPort(0)) {
6128  this->timeCaller_out(0, _logTime);
6129  }
6130 
6132 
6133  // Emit the event on the log port
6134  if (this->isConnected_logOut_OutputPort(0)) {
6135  Fw::LogBuffer _logBuff;
6137 
6138 #if FW_AMPCS_COMPATIBLE
6139  // Serialize the number of arguments
6140  _status = _logBuff.serializeFrom(static_cast<U8>(2));
6141  FW_ASSERT(
6142  _status == Fw::FW_SERIALIZE_OK,
6143  static_cast<FwAssertArgType>(_status)
6144  );
6145 #endif
6146 
6147  _status = filePath.serializeTo(
6148  _logBuff,
6149  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
6150  );
6151  FW_ASSERT(
6152  _status == Fw::FW_SERIALIZE_OK,
6153  static_cast<FwAssertArgType>(_status)
6154  );
6155 
6156 #if FW_AMPCS_COMPATIBLE
6157  // Serialize the argument size
6158  _status = _logBuff.serializeFrom(
6159  static_cast<U8>(sizeof(U8))
6160  );
6161  FW_ASSERT(
6162  _status == Fw::FW_SERIALIZE_OK,
6163  static_cast<FwAssertArgType>(_status)
6164  );
6165 #endif
6166  _status = _logBuff.serializeFrom(errorCode);
6167  FW_ASSERT(
6168  _status == Fw::FW_SERIALIZE_OK,
6169  static_cast<FwAssertArgType>(_status)
6170  );
6171 
6172  this->logOut_out(
6173  0,
6174  _id,
6175  _logTime,
6177  _logBuff
6178  );
6179  }
6180 
6181  // Emit the event on the text log port
6182 #if FW_ENABLE_TEXT_LOGGING
6183  if (this->isConnected_logTextOut_OutputPort(0)) {
6184 #if FW_OBJECT_NAMES == 1
6185  const char* _formatString =
6186  "(%s) %s: Sequence %s exited with error code %" PRIu8 "";
6187 #else
6188  const char* _formatString =
6189  "%s: Sequence %s exited with error code %" PRIu8 "";
6190 #endif
6191 
6192  Fw::TextLogString _logString;
6193  _logString.format(
6194  _formatString,
6195 #if FW_OBJECT_NAMES == 1
6196  this->m_objName.toChar(),
6197 #endif
6198  "SequenceExitedWithError ",
6199  filePath.toChar(),
6200  errorCode
6201  );
6202 
6203  this->logTextOut_out(
6204  0,
6205  _id,
6206  _logTime,
6208  _logString
6209  );
6210  }
6211 #endif
6212  }
6213 
6216  U8 opcode,
6217  U32 stmtIdx,
6218  const Fw::StringBase& filePath
6219  ) const
6220  {
6221  // Get the time
6222  Fw::Time _logTime;
6223  if (this->isConnected_timeCaller_OutputPort(0)) {
6224  this->timeCaller_out(0, _logTime);
6225  }
6226 
6228 
6229  // Emit the event on the log port
6230  if (this->isConnected_logOut_OutputPort(0)) {
6231  Fw::LogBuffer _logBuff;
6233 
6234 #if FW_AMPCS_COMPATIBLE
6235  // Serialize the number of arguments
6236  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6237  FW_ASSERT(
6238  _status == Fw::FW_SERIALIZE_OK,
6239  static_cast<FwAssertArgType>(_status)
6240  );
6241 #endif
6242 
6243 #if FW_AMPCS_COMPATIBLE
6244  // Serialize the argument size
6245  _status = _logBuff.serializeFrom(
6246  static_cast<U8>(sizeof(U8))
6247  );
6248  FW_ASSERT(
6249  _status == Fw::FW_SERIALIZE_OK,
6250  static_cast<FwAssertArgType>(_status)
6251  );
6252 #endif
6253  _status = _logBuff.serializeFrom(opcode);
6254  FW_ASSERT(
6255  _status == Fw::FW_SERIALIZE_OK,
6256  static_cast<FwAssertArgType>(_status)
6257  );
6258 
6259 #if FW_AMPCS_COMPATIBLE
6260  // Serialize the argument size
6261  _status = _logBuff.serializeFrom(
6262  static_cast<U8>(sizeof(U32))
6263  );
6264  FW_ASSERT(
6265  _status == Fw::FW_SERIALIZE_OK,
6266  static_cast<FwAssertArgType>(_status)
6267  );
6268 #endif
6269  _status = _logBuff.serializeFrom(stmtIdx);
6270  FW_ASSERT(
6271  _status == Fw::FW_SERIALIZE_OK,
6272  static_cast<FwAssertArgType>(_status)
6273  );
6274 
6275  _status = filePath.serializeTo(
6276  _logBuff,
6277  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
6278  );
6279  FW_ASSERT(
6280  _status == Fw::FW_SERIALIZE_OK,
6281  static_cast<FwAssertArgType>(_status)
6282  );
6283 
6284  this->logOut_out(
6285  0,
6286  _id,
6287  _logTime,
6289  _logBuff
6290  );
6291  }
6292 
6293  // Emit the event on the text log port
6294 #if FW_ENABLE_TEXT_LOGGING
6295  if (this->isConnected_logTextOut_OutputPort(0)) {
6296 #if FW_OBJECT_NAMES == 1
6297  const char* _formatString =
6298  "(%s) %s: Unknown sequencer directive id %" PRIu8 " at index %" PRIu32 " in file %s";
6299 #else
6300  const char* _formatString =
6301  "%s: Unknown sequencer directive id %" PRIu8 " at index %" PRIu32 " in file %s";
6302 #endif
6303 
6304  Fw::TextLogString _logString;
6305  _logString.format(
6306  _formatString,
6307 #if FW_OBJECT_NAMES == 1
6308  this->m_objName.toChar(),
6309 #endif
6310  "UnknownSequencerDirective ",
6311  opcode,
6312  stmtIdx,
6313  filePath.toChar()
6314  );
6315 
6316  this->logTextOut_out(
6317  0,
6318  _id,
6319  _logTime,
6321  _logString
6322  );
6323  }
6324 #endif
6325  }
6326 
6329  I32 state,
6330  FwOpcodeType opcode,
6331  Fw::CmdResponse response
6332  ) const
6333  {
6334  // Get the time
6335  Fw::Time _logTime;
6336  if (this->isConnected_timeCaller_OutputPort(0)) {
6337  this->timeCaller_out(0, _logTime);
6338  }
6339 
6341 
6342  // Emit the event on the log port
6343  if (this->isConnected_logOut_OutputPort(0)) {
6344  Fw::LogBuffer _logBuff;
6346 
6347 #if FW_AMPCS_COMPATIBLE
6348  // Serialize the number of arguments
6349  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6350  FW_ASSERT(
6351  _status == Fw::FW_SERIALIZE_OK,
6352  static_cast<FwAssertArgType>(_status)
6353  );
6354 #endif
6355 
6356 #if FW_AMPCS_COMPATIBLE
6357  // Serialize the argument size
6358  _status = _logBuff.serializeFrom(
6359  static_cast<U8>(sizeof(I32))
6360  );
6361  FW_ASSERT(
6362  _status == Fw::FW_SERIALIZE_OK,
6363  static_cast<FwAssertArgType>(_status)
6364  );
6365 #endif
6366  _status = _logBuff.serializeFrom(state);
6367  FW_ASSERT(
6368  _status == Fw::FW_SERIALIZE_OK,
6369  static_cast<FwAssertArgType>(_status)
6370  );
6371 
6372 #if FW_AMPCS_COMPATIBLE
6373  // Serialize the argument size
6374  _status = _logBuff.serializeFrom(
6375  static_cast<U8>(sizeof(FwOpcodeType))
6376  );
6377  FW_ASSERT(
6378  _status == Fw::FW_SERIALIZE_OK,
6379  static_cast<FwAssertArgType>(_status)
6380  );
6381 #endif
6382  _status = _logBuff.serializeFrom(opcode);
6383  FW_ASSERT(
6384  _status == Fw::FW_SERIALIZE_OK,
6385  static_cast<FwAssertArgType>(_status)
6386  );
6387 
6388 #if FW_AMPCS_COMPATIBLE
6389  // Serialize the argument size
6390  _status = _logBuff.serializeFrom(
6391  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6392  );
6393  FW_ASSERT(
6394  _status == Fw::FW_SERIALIZE_OK,
6395  static_cast<FwAssertArgType>(_status)
6396  );
6397 #endif
6398  _status = _logBuff.serializeFrom(response);
6399  FW_ASSERT(
6400  _status == Fw::FW_SERIALIZE_OK,
6401  static_cast<FwAssertArgType>(_status)
6402  );
6403 
6404  this->logOut_out(
6405  0,
6406  _id,
6407  _logTime,
6409  _logBuff
6410  );
6411  }
6412 
6413  // Emit the event on the text log port
6414 #if FW_ENABLE_TEXT_LOGGING
6415  if (this->isConnected_logTextOut_OutputPort(0)) {
6416 #if FW_OBJECT_NAMES == 1
6417  const char* _formatString =
6418  "(%s) %s: Received a command response while not running a sequence (was in state %" PRIi32 " opcode was %" PRIu32 " response code %s)";
6419 #else
6420  const char* _formatString =
6421  "%s: Received a command response while not running a sequence (was in state %" PRIi32 " opcode was %" PRIu32 " response code %s)";
6422 #endif
6423 
6424  Fw::String responseStr;
6425  response.toString(responseStr);
6426 
6427  Fw::TextLogString _logString;
6428  _logString.format(
6429  _formatString,
6430 #if FW_OBJECT_NAMES == 1
6431  this->m_objName.toChar(),
6432 #endif
6433  "CmdResponseWhileNotRunningSequence ",
6434  state,
6435  opcode,
6436  responseStr.toChar()
6437  );
6438 
6439  this->logTextOut_out(
6440  0,
6441  _id,
6442  _logTime,
6444  _logString
6445  );
6446  }
6447 #endif
6448  }
6449 
6452  FwOpcodeType opcode,
6453  Fw::CmdResponse response,
6454  U16 oldSequenceIdx,
6455  U16 currentSequenceIdx
6456  ) const
6457  {
6458  // Get the time
6459  Fw::Time _logTime;
6460  if (this->isConnected_timeCaller_OutputPort(0)) {
6461  this->timeCaller_out(0, _logTime);
6462  }
6463 
6465 
6466  // Emit the event on the log port
6467  if (this->isConnected_logOut_OutputPort(0)) {
6468  Fw::LogBuffer _logBuff;
6470 
6471 #if FW_AMPCS_COMPATIBLE
6472  // Serialize the number of arguments
6473  _status = _logBuff.serializeFrom(static_cast<U8>(4));
6474  FW_ASSERT(
6475  _status == Fw::FW_SERIALIZE_OK,
6476  static_cast<FwAssertArgType>(_status)
6477  );
6478 #endif
6479 
6480 #if FW_AMPCS_COMPATIBLE
6481  // Serialize the argument size
6482  _status = _logBuff.serializeFrom(
6483  static_cast<U8>(sizeof(FwOpcodeType))
6484  );
6485  FW_ASSERT(
6486  _status == Fw::FW_SERIALIZE_OK,
6487  static_cast<FwAssertArgType>(_status)
6488  );
6489 #endif
6490  _status = _logBuff.serializeFrom(opcode);
6491  FW_ASSERT(
6492  _status == Fw::FW_SERIALIZE_OK,
6493  static_cast<FwAssertArgType>(_status)
6494  );
6495 
6496 #if FW_AMPCS_COMPATIBLE
6497  // Serialize the argument size
6498  _status = _logBuff.serializeFrom(
6499  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6500  );
6501  FW_ASSERT(
6502  _status == Fw::FW_SERIALIZE_OK,
6503  static_cast<FwAssertArgType>(_status)
6504  );
6505 #endif
6506  _status = _logBuff.serializeFrom(response);
6507  FW_ASSERT(
6508  _status == Fw::FW_SERIALIZE_OK,
6509  static_cast<FwAssertArgType>(_status)
6510  );
6511 
6512 #if FW_AMPCS_COMPATIBLE
6513  // Serialize the argument size
6514  _status = _logBuff.serializeFrom(
6515  static_cast<U8>(sizeof(U16))
6516  );
6517  FW_ASSERT(
6518  _status == Fw::FW_SERIALIZE_OK,
6519  static_cast<FwAssertArgType>(_status)
6520  );
6521 #endif
6522  _status = _logBuff.serializeFrom(oldSequenceIdx);
6523  FW_ASSERT(
6524  _status == Fw::FW_SERIALIZE_OK,
6525  static_cast<FwAssertArgType>(_status)
6526  );
6527 
6528 #if FW_AMPCS_COMPATIBLE
6529  // Serialize the argument size
6530  _status = _logBuff.serializeFrom(
6531  static_cast<U8>(sizeof(U16))
6532  );
6533  FW_ASSERT(
6534  _status == Fw::FW_SERIALIZE_OK,
6535  static_cast<FwAssertArgType>(_status)
6536  );
6537 #endif
6538  _status = _logBuff.serializeFrom(currentSequenceIdx);
6539  FW_ASSERT(
6540  _status == Fw::FW_SERIALIZE_OK,
6541  static_cast<FwAssertArgType>(_status)
6542  );
6543 
6544  this->logOut_out(
6545  0,
6546  _id,
6547  _logTime,
6549  _logBuff
6550  );
6551  }
6552 
6553  // Emit the event on the text log port
6554 #if FW_ENABLE_TEXT_LOGGING
6555  if (this->isConnected_logTextOut_OutputPort(0)) {
6556 #if FW_OBJECT_NAMES == 1
6557  const char* _formatString =
6558  "(%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 ")";
6559 #else
6560  const char* _formatString =
6561  "%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 ")";
6562 #endif
6563 
6564  Fw::String responseStr;
6565  response.toString(responseStr);
6566 
6567  Fw::TextLogString _logString;
6568  _logString.format(
6569  _formatString,
6570 #if FW_OBJECT_NAMES == 1
6571  this->m_objName.toChar(),
6572 #endif
6573  "CmdResponseFromOldSequence ",
6574  opcode,
6575  responseStr.toChar(),
6576  oldSequenceIdx,
6577  currentSequenceIdx
6578  );
6579 
6580  this->logTextOut_out(
6581  0,
6582  _id,
6583  _logTime,
6585  _logString
6586  );
6587  }
6588 #endif
6589  }
6590 
6593  FwOpcodeType opcode,
6594  Fw::CmdResponse response
6595  ) const
6596  {
6597  // Get the time
6598  Fw::Time _logTime;
6599  if (this->isConnected_timeCaller_OutputPort(0)) {
6600  this->timeCaller_out(0, _logTime);
6601  }
6602 
6604 
6605  // Emit the event on the log port
6606  if (this->isConnected_logOut_OutputPort(0)) {
6607  Fw::LogBuffer _logBuff;
6609 
6610 #if FW_AMPCS_COMPATIBLE
6611  // Serialize the number of arguments
6612  _status = _logBuff.serializeFrom(static_cast<U8>(2));
6613  FW_ASSERT(
6614  _status == Fw::FW_SERIALIZE_OK,
6615  static_cast<FwAssertArgType>(_status)
6616  );
6617 #endif
6618 
6619 #if FW_AMPCS_COMPATIBLE
6620  // Serialize the argument size
6621  _status = _logBuff.serializeFrom(
6622  static_cast<U8>(sizeof(FwOpcodeType))
6623  );
6624  FW_ASSERT(
6625  _status == Fw::FW_SERIALIZE_OK,
6626  static_cast<FwAssertArgType>(_status)
6627  );
6628 #endif
6629  _status = _logBuff.serializeFrom(opcode);
6630  FW_ASSERT(
6631  _status == Fw::FW_SERIALIZE_OK,
6632  static_cast<FwAssertArgType>(_status)
6633  );
6634 
6635 #if FW_AMPCS_COMPATIBLE
6636  // Serialize the argument size
6637  _status = _logBuff.serializeFrom(
6638  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6639  );
6640  FW_ASSERT(
6641  _status == Fw::FW_SERIALIZE_OK,
6642  static_cast<FwAssertArgType>(_status)
6643  );
6644 #endif
6645  _status = _logBuff.serializeFrom(response);
6646  FW_ASSERT(
6647  _status == Fw::FW_SERIALIZE_OK,
6648  static_cast<FwAssertArgType>(_status)
6649  );
6650 
6651  this->logOut_out(
6652  0,
6653  _id,
6654  _logTime,
6656  _logBuff
6657  );
6658  }
6659 
6660  // Emit the event on the text log port
6661 #if FW_ENABLE_TEXT_LOGGING
6662  if (this->isConnected_logTextOut_OutputPort(0)) {
6663 #if FW_OBJECT_NAMES == 1
6664  const char* _formatString =
6665  "(%s) %s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was not awaiting a response";
6666 #else
6667  const char* _formatString =
6668  "%s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was not awaiting a response";
6669 #endif
6670 
6671  Fw::String responseStr;
6672  response.toString(responseStr);
6673 
6674  Fw::TextLogString _logString;
6675  _logString.format(
6676  _formatString,
6677 #if FW_OBJECT_NAMES == 1
6678  this->m_objName.toChar(),
6679 #endif
6680  "CmdResponseWhileNotAwaiting ",
6681  opcode,
6682  responseStr.toChar()
6683  );
6684 
6685  this->logTextOut_out(
6686  0,
6687  _id,
6688  _logTime,
6690  _logString
6691  );
6692  }
6693 #endif
6694  }
6695 
6698  FwOpcodeType opcode,
6699  Fw::CmdResponse response,
6700  U8 expectedDirectiveOpcode
6701  ) const
6702  {
6703  // Get the time
6704  Fw::Time _logTime;
6705  if (this->isConnected_timeCaller_OutputPort(0)) {
6706  this->timeCaller_out(0, _logTime);
6707  }
6708 
6710 
6711  // Emit the event on the log port
6712  if (this->isConnected_logOut_OutputPort(0)) {
6713  Fw::LogBuffer _logBuff;
6715 
6716 #if FW_AMPCS_COMPATIBLE
6717  // Serialize the number of arguments
6718  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6719  FW_ASSERT(
6720  _status == Fw::FW_SERIALIZE_OK,
6721  static_cast<FwAssertArgType>(_status)
6722  );
6723 #endif
6724 
6725 #if FW_AMPCS_COMPATIBLE
6726  // Serialize the argument size
6727  _status = _logBuff.serializeFrom(
6728  static_cast<U8>(sizeof(FwOpcodeType))
6729  );
6730  FW_ASSERT(
6731  _status == Fw::FW_SERIALIZE_OK,
6732  static_cast<FwAssertArgType>(_status)
6733  );
6734 #endif
6735  _status = _logBuff.serializeFrom(opcode);
6736  FW_ASSERT(
6737  _status == Fw::FW_SERIALIZE_OK,
6738  static_cast<FwAssertArgType>(_status)
6739  );
6740 
6741 #if FW_AMPCS_COMPATIBLE
6742  // Serialize the argument size
6743  _status = _logBuff.serializeFrom(
6744  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6745  );
6746  FW_ASSERT(
6747  _status == Fw::FW_SERIALIZE_OK,
6748  static_cast<FwAssertArgType>(_status)
6749  );
6750 #endif
6751  _status = _logBuff.serializeFrom(response);
6752  FW_ASSERT(
6753  _status == Fw::FW_SERIALIZE_OK,
6754  static_cast<FwAssertArgType>(_status)
6755  );
6756 
6757 #if FW_AMPCS_COMPATIBLE
6758  // Serialize the argument size
6759  _status = _logBuff.serializeFrom(
6760  static_cast<U8>(sizeof(U8))
6761  );
6762  FW_ASSERT(
6763  _status == Fw::FW_SERIALIZE_OK,
6764  static_cast<FwAssertArgType>(_status)
6765  );
6766 #endif
6767  _status = _logBuff.serializeFrom(expectedDirectiveOpcode);
6768  FW_ASSERT(
6769  _status == Fw::FW_SERIALIZE_OK,
6770  static_cast<FwAssertArgType>(_status)
6771  );
6772 
6773  this->logOut_out(
6774  0,
6775  _id,
6776  _logTime,
6778  _logBuff
6779  );
6780  }
6781 
6782  // Emit the event on the text log port
6783 #if FW_ENABLE_TEXT_LOGGING
6784  if (this->isConnected_logTextOut_OutputPort(0)) {
6785 #if FW_OBJECT_NAMES == 1
6786  const char* _formatString =
6787  "(%s) %s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was awaiting directive opcode %" PRIu8 "";
6788 #else
6789  const char* _formatString =
6790  "%s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was awaiting directive opcode %" PRIu8 "";
6791 #endif
6792 
6793  Fw::String responseStr;
6794  response.toString(responseStr);
6795 
6796  Fw::TextLogString _logString;
6797  _logString.format(
6798  _formatString,
6799 #if FW_OBJECT_NAMES == 1
6800  this->m_objName.toChar(),
6801 #endif
6802  "CmdResponseWhileAwaitingDirective ",
6803  opcode,
6804  responseStr.toChar(),
6805  expectedDirectiveOpcode
6806  );
6807 
6808  this->logTextOut_out(
6809  0,
6810  _id,
6811  _logTime,
6813  _logString
6814  );
6815  }
6816 #endif
6817  }
6818 
6821  FwOpcodeType opcode,
6822  Fw::CmdResponse response,
6823  FwOpcodeType expectedOpcode
6824  ) const
6825  {
6826  // Get the time
6827  Fw::Time _logTime;
6828  if (this->isConnected_timeCaller_OutputPort(0)) {
6829  this->timeCaller_out(0, _logTime);
6830  }
6831 
6833 
6834  // Emit the event on the log port
6835  if (this->isConnected_logOut_OutputPort(0)) {
6836  Fw::LogBuffer _logBuff;
6838 
6839 #if FW_AMPCS_COMPATIBLE
6840  // Serialize the number of arguments
6841  _status = _logBuff.serializeFrom(static_cast<U8>(3));
6842  FW_ASSERT(
6843  _status == Fw::FW_SERIALIZE_OK,
6844  static_cast<FwAssertArgType>(_status)
6845  );
6846 #endif
6847 
6848 #if FW_AMPCS_COMPATIBLE
6849  // Serialize the argument size
6850  _status = _logBuff.serializeFrom(
6851  static_cast<U8>(sizeof(FwOpcodeType))
6852  );
6853  FW_ASSERT(
6854  _status == Fw::FW_SERIALIZE_OK,
6855  static_cast<FwAssertArgType>(_status)
6856  );
6857 #endif
6858  _status = _logBuff.serializeFrom(opcode);
6859  FW_ASSERT(
6860  _status == Fw::FW_SERIALIZE_OK,
6861  static_cast<FwAssertArgType>(_status)
6862  );
6863 
6864 #if FW_AMPCS_COMPATIBLE
6865  // Serialize the argument size
6866  _status = _logBuff.serializeFrom(
6867  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6868  );
6869  FW_ASSERT(
6870  _status == Fw::FW_SERIALIZE_OK,
6871  static_cast<FwAssertArgType>(_status)
6872  );
6873 #endif
6874  _status = _logBuff.serializeFrom(response);
6875  FW_ASSERT(
6876  _status == Fw::FW_SERIALIZE_OK,
6877  static_cast<FwAssertArgType>(_status)
6878  );
6879 
6880 #if FW_AMPCS_COMPATIBLE
6881  // Serialize the argument size
6882  _status = _logBuff.serializeFrom(
6883  static_cast<U8>(sizeof(FwOpcodeType))
6884  );
6885  FW_ASSERT(
6886  _status == Fw::FW_SERIALIZE_OK,
6887  static_cast<FwAssertArgType>(_status)
6888  );
6889 #endif
6890  _status = _logBuff.serializeFrom(expectedOpcode);
6891  FW_ASSERT(
6892  _status == Fw::FW_SERIALIZE_OK,
6893  static_cast<FwAssertArgType>(_status)
6894  );
6895 
6896  this->logOut_out(
6897  0,
6898  _id,
6899  _logTime,
6901  _logBuff
6902  );
6903  }
6904 
6905  // Emit the event on the text log port
6906 #if FW_ENABLE_TEXT_LOGGING
6907  if (this->isConnected_logTextOut_OutputPort(0)) {
6908 #if FW_OBJECT_NAMES == 1
6909  const char* _formatString =
6910  "(%s) %s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was expecting a response from command opcode %" PRIu32 "";
6911 #else
6912  const char* _formatString =
6913  "%s: Received a response from cmd opcode %" PRIu32 " (response %s) from this sequence, but was expecting a response from command opcode %" PRIu32 "";
6914 #endif
6915 
6916  Fw::String responseStr;
6917  response.toString(responseStr);
6918 
6919  Fw::TextLogString _logString;
6920  _logString.format(
6921  _formatString,
6922 #if FW_OBJECT_NAMES == 1
6923  this->m_objName.toChar(),
6924 #endif
6925  "WrongCmdResponseOpcode ",
6926  opcode,
6927  responseStr.toChar(),
6928  expectedOpcode
6929  );
6930 
6931  this->logTextOut_out(
6932  0,
6933  _id,
6934  _logTime,
6936  _logString
6937  );
6938  }
6939 #endif
6940  }
6941 
6944  FwOpcodeType opcode,
6945  Fw::CmdResponse response,
6946  U16 actualCmdIdx,
6947  U16 expectedCmdIdx
6948  ) const
6949  {
6950  // Get the time
6951  Fw::Time _logTime;
6952  if (this->isConnected_timeCaller_OutputPort(0)) {
6953  this->timeCaller_out(0, _logTime);
6954  }
6955 
6957 
6958  // Emit the event on the log port
6959  if (this->isConnected_logOut_OutputPort(0)) {
6960  Fw::LogBuffer _logBuff;
6962 
6963 #if FW_AMPCS_COMPATIBLE
6964  // Serialize the number of arguments
6965  _status = _logBuff.serializeFrom(static_cast<U8>(4));
6966  FW_ASSERT(
6967  _status == Fw::FW_SERIALIZE_OK,
6968  static_cast<FwAssertArgType>(_status)
6969  );
6970 #endif
6971 
6972 #if FW_AMPCS_COMPATIBLE
6973  // Serialize the argument size
6974  _status = _logBuff.serializeFrom(
6975  static_cast<U8>(sizeof(FwOpcodeType))
6976  );
6977  FW_ASSERT(
6978  _status == Fw::FW_SERIALIZE_OK,
6979  static_cast<FwAssertArgType>(_status)
6980  );
6981 #endif
6982  _status = _logBuff.serializeFrom(opcode);
6983  FW_ASSERT(
6984  _status == Fw::FW_SERIALIZE_OK,
6985  static_cast<FwAssertArgType>(_status)
6986  );
6987 
6988 #if FW_AMPCS_COMPATIBLE
6989  // Serialize the argument size
6990  _status = _logBuff.serializeFrom(
6991  static_cast<U8>(Fw::CmdResponse::SERIALIZED_SIZE)
6992  );
6993  FW_ASSERT(
6994  _status == Fw::FW_SERIALIZE_OK,
6995  static_cast<FwAssertArgType>(_status)
6996  );
6997 #endif
6998  _status = _logBuff.serializeFrom(response);
6999  FW_ASSERT(
7000  _status == Fw::FW_SERIALIZE_OK,
7001  static_cast<FwAssertArgType>(_status)
7002  );
7003 
7004 #if FW_AMPCS_COMPATIBLE
7005  // Serialize the argument size
7006  _status = _logBuff.serializeFrom(
7007  static_cast<U8>(sizeof(U16))
7008  );
7009  FW_ASSERT(
7010  _status == Fw::FW_SERIALIZE_OK,
7011  static_cast<FwAssertArgType>(_status)
7012  );
7013 #endif
7014  _status = _logBuff.serializeFrom(actualCmdIdx);
7015  FW_ASSERT(
7016  _status == Fw::FW_SERIALIZE_OK,
7017  static_cast<FwAssertArgType>(_status)
7018  );
7019 
7020 #if FW_AMPCS_COMPATIBLE
7021  // Serialize the argument size
7022  _status = _logBuff.serializeFrom(
7023  static_cast<U8>(sizeof(U16))
7024  );
7025  FW_ASSERT(
7026  _status == Fw::FW_SERIALIZE_OK,
7027  static_cast<FwAssertArgType>(_status)
7028  );
7029 #endif
7030  _status = _logBuff.serializeFrom(expectedCmdIdx);
7031  FW_ASSERT(
7032  _status == Fw::FW_SERIALIZE_OK,
7033  static_cast<FwAssertArgType>(_status)
7034  );
7035 
7036  this->logOut_out(
7037  0,
7038  _id,
7039  _logTime,
7041  _logBuff
7042  );
7043  }
7044 
7045  // Emit the event on the text log port
7046 #if FW_ENABLE_TEXT_LOGGING
7047  if (this->isConnected_logTextOut_OutputPort(0)) {
7048 #if FW_OBJECT_NAMES == 1
7049  const char* _formatString =
7050  "(%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 ")";
7051 #else
7052  const char* _formatString =
7053  "%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 ")";
7054 #endif
7055 
7056  Fw::String responseStr;
7057  response.toString(responseStr);
7058 
7059  Fw::TextLogString _logString;
7060  _logString.format(
7061  _formatString,
7062 #if FW_OBJECT_NAMES == 1
7063  this->m_objName.toChar(),
7064 #endif
7065  "WrongCmdResponseIndex ",
7066  opcode,
7067  responseStr.toChar(),
7068  actualCmdIdx,
7069  expectedCmdIdx
7070  );
7071 
7072  this->logTextOut_out(
7073  0,
7074  _id,
7075  _logTime,
7077  _logString
7078  );
7079  }
7080 #endif
7081  }
7082 
7085  U8 opcode,
7086  U32 stmtIdx,
7087  I32 errorCode,
7088  U64 buffLeft,
7089  U64 buffLength
7090  ) const
7091  {
7092  // Get the time
7093  Fw::Time _logTime;
7094  if (this->isConnected_timeCaller_OutputPort(0)) {
7095  this->timeCaller_out(0, _logTime);
7096  }
7097 
7099 
7100  // Emit the event on the log port
7101  if (this->isConnected_logOut_OutputPort(0)) {
7102  Fw::LogBuffer _logBuff;
7104 
7105 #if FW_AMPCS_COMPATIBLE
7106  // Serialize the number of arguments
7107  _status = _logBuff.serializeFrom(static_cast<U8>(5));
7108  FW_ASSERT(
7109  _status == Fw::FW_SERIALIZE_OK,
7110  static_cast<FwAssertArgType>(_status)
7111  );
7112 #endif
7113 
7114 #if FW_AMPCS_COMPATIBLE
7115  // Serialize the argument size
7116  _status = _logBuff.serializeFrom(
7117  static_cast<U8>(sizeof(U8))
7118  );
7119  FW_ASSERT(
7120  _status == Fw::FW_SERIALIZE_OK,
7121  static_cast<FwAssertArgType>(_status)
7122  );
7123 #endif
7124  _status = _logBuff.serializeFrom(opcode);
7125  FW_ASSERT(
7126  _status == Fw::FW_SERIALIZE_OK,
7127  static_cast<FwAssertArgType>(_status)
7128  );
7129 
7130 #if FW_AMPCS_COMPATIBLE
7131  // Serialize the argument size
7132  _status = _logBuff.serializeFrom(
7133  static_cast<U8>(sizeof(U32))
7134  );
7135  FW_ASSERT(
7136  _status == Fw::FW_SERIALIZE_OK,
7137  static_cast<FwAssertArgType>(_status)
7138  );
7139 #endif
7140  _status = _logBuff.serializeFrom(stmtIdx);
7141  FW_ASSERT(
7142  _status == Fw::FW_SERIALIZE_OK,
7143  static_cast<FwAssertArgType>(_status)
7144  );
7145 
7146 #if FW_AMPCS_COMPATIBLE
7147  // Serialize the argument size
7148  _status = _logBuff.serializeFrom(
7149  static_cast<U8>(sizeof(I32))
7150  );
7151  FW_ASSERT(
7152  _status == Fw::FW_SERIALIZE_OK,
7153  static_cast<FwAssertArgType>(_status)
7154  );
7155 #endif
7156  _status = _logBuff.serializeFrom(errorCode);
7157  FW_ASSERT(
7158  _status == Fw::FW_SERIALIZE_OK,
7159  static_cast<FwAssertArgType>(_status)
7160  );
7161 
7162 #if FW_AMPCS_COMPATIBLE
7163  // Serialize the argument size
7164  _status = _logBuff.serializeFrom(
7165  static_cast<U8>(sizeof(U64))
7166  );
7167  FW_ASSERT(
7168  _status == Fw::FW_SERIALIZE_OK,
7169  static_cast<FwAssertArgType>(_status)
7170  );
7171 #endif
7172  _status = _logBuff.serializeFrom(buffLeft);
7173  FW_ASSERT(
7174  _status == Fw::FW_SERIALIZE_OK,
7175  static_cast<FwAssertArgType>(_status)
7176  );
7177 
7178 #if FW_AMPCS_COMPATIBLE
7179  // Serialize the argument size
7180  _status = _logBuff.serializeFrom(
7181  static_cast<U8>(sizeof(U64))
7182  );
7183  FW_ASSERT(
7184  _status == Fw::FW_SERIALIZE_OK,
7185  static_cast<FwAssertArgType>(_status)
7186  );
7187 #endif
7188  _status = _logBuff.serializeFrom(buffLength);
7189  FW_ASSERT(
7190  _status == Fw::FW_SERIALIZE_OK,
7191  static_cast<FwAssertArgType>(_status)
7192  );
7193 
7194  this->logOut_out(
7195  0,
7196  _id,
7197  _logTime,
7199  _logBuff
7200  );
7201  }
7202 
7203  // Emit the event on the text log port
7204 #if FW_ENABLE_TEXT_LOGGING
7205  if (this->isConnected_logTextOut_OutputPort(0)) {
7206 #if FW_OBJECT_NAMES == 1
7207  const char* _formatString =
7208  "(%s) %s: Deserialize error encountered while reading directive opcode %" PRIu8 " at index %" PRIu32 ": %" PRIi32 " (%" PRIu64 " bytes left out of %" PRIu64 ")";
7209 #else
7210  const char* _formatString =
7211  "%s: Deserialize error encountered while reading directive opcode %" PRIu8 " at index %" PRIu32 ": %" PRIi32 " (%" PRIu64 " bytes left out of %" PRIu64 ")";
7212 #endif
7213 
7214  Fw::TextLogString _logString;
7215  _logString.format(
7216  _formatString,
7217 #if FW_OBJECT_NAMES == 1
7218  this->m_objName.toChar(),
7219 #endif
7220  "DirectiveDeserializeError ",
7221  opcode,
7222  stmtIdx,
7223  errorCode,
7224  buffLeft,
7225  buffLength
7226  );
7227 
7228  this->logTextOut_out(
7229  0,
7230  _id,
7231  _logTime,
7233  _logString
7234  );
7235  }
7236 #endif
7237  }
7238 
7241  I32 internalTimeBase,
7242  I32 otherTimeBase
7243  ) const
7244  {
7245  // Get the time
7246  Fw::Time _logTime;
7247  if (this->isConnected_timeCaller_OutputPort(0)) {
7248  this->timeCaller_out(0, _logTime);
7249  }
7250 
7251  const FwEventIdType _id = this->getIdBase() + EVENTID_MISMATCHEDTIMEBASE;
7252 
7253  // Emit the event on the log port
7254  if (this->isConnected_logOut_OutputPort(0)) {
7255  Fw::LogBuffer _logBuff;
7257 
7258 #if FW_AMPCS_COMPATIBLE
7259  // Serialize the number of arguments
7260  _status = _logBuff.serializeFrom(static_cast<U8>(2));
7261  FW_ASSERT(
7262  _status == Fw::FW_SERIALIZE_OK,
7263  static_cast<FwAssertArgType>(_status)
7264  );
7265 #endif
7266 
7267 #if FW_AMPCS_COMPATIBLE
7268  // Serialize the argument size
7269  _status = _logBuff.serializeFrom(
7270  static_cast<U8>(sizeof(I32))
7271  );
7272  FW_ASSERT(
7273  _status == Fw::FW_SERIALIZE_OK,
7274  static_cast<FwAssertArgType>(_status)
7275  );
7276 #endif
7277  _status = _logBuff.serializeFrom(internalTimeBase);
7278  FW_ASSERT(
7279  _status == Fw::FW_SERIALIZE_OK,
7280  static_cast<FwAssertArgType>(_status)
7281  );
7282 
7283 #if FW_AMPCS_COMPATIBLE
7284  // Serialize the argument size
7285  _status = _logBuff.serializeFrom(
7286  static_cast<U8>(sizeof(I32))
7287  );
7288  FW_ASSERT(
7289  _status == Fw::FW_SERIALIZE_OK,
7290  static_cast<FwAssertArgType>(_status)
7291  );
7292 #endif
7293  _status = _logBuff.serializeFrom(otherTimeBase);
7294  FW_ASSERT(
7295  _status == Fw::FW_SERIALIZE_OK,
7296  static_cast<FwAssertArgType>(_status)
7297  );
7298 
7299  this->logOut_out(
7300  0,
7301  _id,
7302  _logTime,
7304  _logBuff
7305  );
7306  }
7307 
7308  // Emit the event on the text log port
7309 #if FW_ENABLE_TEXT_LOGGING
7310  if (this->isConnected_logTextOut_OutputPort(0)) {
7311 #if FW_OBJECT_NAMES == 1
7312  const char* _formatString =
7313  "(%s) %s: getTime() time base was %" PRIi32 ", but tried to operate on it with time base %" PRIi32 "";
7314 #else
7315  const char* _formatString =
7316  "%s: getTime() time base was %" PRIi32 ", but tried to operate on it with time base %" PRIi32 "";
7317 #endif
7318 
7319  Fw::TextLogString _logString;
7320  _logString.format(
7321  _formatString,
7322 #if FW_OBJECT_NAMES == 1
7323  this->m_objName.toChar(),
7324 #endif
7325  "MismatchedTimeBase ",
7326  internalTimeBase,
7327  otherTimeBase
7328  );
7329 
7330  this->logTextOut_out(
7331  0,
7332  _id,
7333  _logTime,
7335  _logString
7336  );
7337  }
7338 #endif
7339  }
7340 
7343  I32 internalTimeContext,
7344  I32 otherTimeContext
7345  ) const
7346  {
7347  // Get the time
7348  Fw::Time _logTime;
7349  if (this->isConnected_timeCaller_OutputPort(0)) {
7350  this->timeCaller_out(0, _logTime);
7351  }
7352 
7354 
7355  // Emit the event on the log port
7356  if (this->isConnected_logOut_OutputPort(0)) {
7357  Fw::LogBuffer _logBuff;
7359 
7360 #if FW_AMPCS_COMPATIBLE
7361  // Serialize the number of arguments
7362  _status = _logBuff.serializeFrom(static_cast<U8>(2));
7363  FW_ASSERT(
7364  _status == Fw::FW_SERIALIZE_OK,
7365  static_cast<FwAssertArgType>(_status)
7366  );
7367 #endif
7368 
7369 #if FW_AMPCS_COMPATIBLE
7370  // Serialize the argument size
7371  _status = _logBuff.serializeFrom(
7372  static_cast<U8>(sizeof(I32))
7373  );
7374  FW_ASSERT(
7375  _status == Fw::FW_SERIALIZE_OK,
7376  static_cast<FwAssertArgType>(_status)
7377  );
7378 #endif
7379  _status = _logBuff.serializeFrom(internalTimeContext);
7380  FW_ASSERT(
7381  _status == Fw::FW_SERIALIZE_OK,
7382  static_cast<FwAssertArgType>(_status)
7383  );
7384 
7385 #if FW_AMPCS_COMPATIBLE
7386  // Serialize the argument size
7387  _status = _logBuff.serializeFrom(
7388  static_cast<U8>(sizeof(I32))
7389  );
7390  FW_ASSERT(
7391  _status == Fw::FW_SERIALIZE_OK,
7392  static_cast<FwAssertArgType>(_status)
7393  );
7394 #endif
7395  _status = _logBuff.serializeFrom(otherTimeContext);
7396  FW_ASSERT(
7397  _status == Fw::FW_SERIALIZE_OK,
7398  static_cast<FwAssertArgType>(_status)
7399  );
7400 
7401  this->logOut_out(
7402  0,
7403  _id,
7404  _logTime,
7406  _logBuff
7407  );
7408  }
7409 
7410  // Emit the event on the text log port
7411 #if FW_ENABLE_TEXT_LOGGING
7412  if (this->isConnected_logTextOut_OutputPort(0)) {
7413 #if FW_OBJECT_NAMES == 1
7414  const char* _formatString =
7415  "(%s) %s: getTime() time context was %" PRIi32 ", but tried to operate on it with time context %" PRIi32 "";
7416 #else
7417  const char* _formatString =
7418  "%s: getTime() time context was %" PRIi32 ", but tried to operate on it with time context %" PRIi32 "";
7419 #endif
7420 
7421  Fw::TextLogString _logString;
7422  _logString.format(
7423  _formatString,
7424 #if FW_OBJECT_NAMES == 1
7425  this->m_objName.toChar(),
7426 #endif
7427  "MismatchedTimeContext ",
7428  internalTimeContext,
7429  otherTimeContext
7430  );
7431 
7432  this->logTextOut_out(
7433  0,
7434  _id,
7435  _logTime,
7437  _logString
7438  );
7439  }
7440 #endif
7441  }
7442 
7445  FwOpcodeType opCode,
7446  U32 stmtIdx,
7447  const Fw::StringBase& filePath
7448  ) const
7449  {
7450  // Get the time
7451  Fw::Time _logTime;
7452  if (this->isConnected_timeCaller_OutputPort(0)) {
7453  this->timeCaller_out(0, _logTime);
7454  }
7455 
7456  const FwEventIdType _id = this->getIdBase() + EVENTID_COMMANDTIMEDOUT;
7457 
7458  // Emit the event on the log port
7459  if (this->isConnected_logOut_OutputPort(0)) {
7460  Fw::LogBuffer _logBuff;
7462 
7463 #if FW_AMPCS_COMPATIBLE
7464  // Serialize the number of arguments
7465  _status = _logBuff.serializeFrom(static_cast<U8>(3));
7466  FW_ASSERT(
7467  _status == Fw::FW_SERIALIZE_OK,
7468  static_cast<FwAssertArgType>(_status)
7469  );
7470 #endif
7471 
7472 #if FW_AMPCS_COMPATIBLE
7473  // Serialize the argument size
7474  _status = _logBuff.serializeFrom(
7475  static_cast<U8>(sizeof(FwOpcodeType))
7476  );
7477  FW_ASSERT(
7478  _status == Fw::FW_SERIALIZE_OK,
7479  static_cast<FwAssertArgType>(_status)
7480  );
7481 #endif
7482  _status = _logBuff.serializeFrom(opCode);
7483  FW_ASSERT(
7484  _status == Fw::FW_SERIALIZE_OK,
7485  static_cast<FwAssertArgType>(_status)
7486  );
7487 
7488 #if FW_AMPCS_COMPATIBLE
7489  // Serialize the argument size
7490  _status = _logBuff.serializeFrom(
7491  static_cast<U8>(sizeof(U32))
7492  );
7493  FW_ASSERT(
7494  _status == Fw::FW_SERIALIZE_OK,
7495  static_cast<FwAssertArgType>(_status)
7496  );
7497 #endif
7498  _status = _logBuff.serializeFrom(stmtIdx);
7499  FW_ASSERT(
7500  _status == Fw::FW_SERIALIZE_OK,
7501  static_cast<FwAssertArgType>(_status)
7502  );
7503 
7504  _status = filePath.serializeTo(
7505  _logBuff,
7506  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
7507  );
7508  FW_ASSERT(
7509  _status == Fw::FW_SERIALIZE_OK,
7510  static_cast<FwAssertArgType>(_status)
7511  );
7512 
7513  this->logOut_out(
7514  0,
7515  _id,
7516  _logTime,
7518  _logBuff
7519  );
7520  }
7521 
7522  // Emit the event on the text log port
7523 #if FW_ENABLE_TEXT_LOGGING
7524  if (this->isConnected_logTextOut_OutputPort(0)) {
7525 #if FW_OBJECT_NAMES == 1
7526  const char* _formatString =
7527  "(%s) %s: A command opcode %" PRIu32 " at index %" PRIu32 " timed out in sequence %s, causing the sequence to fail";
7528 #else
7529  const char* _formatString =
7530  "%s: A command opcode %" PRIu32 " at index %" PRIu32 " timed out in sequence %s, causing the sequence to fail";
7531 #endif
7532 
7533  Fw::TextLogString _logString;
7534  _logString.format(
7535  _formatString,
7536 #if FW_OBJECT_NAMES == 1
7537  this->m_objName.toChar(),
7538 #endif
7539  "CommandTimedOut ",
7540  opCode,
7541  stmtIdx,
7542  filePath.toChar()
7543  );
7544 
7545  this->logTextOut_out(
7546  0,
7547  _id,
7548  _logTime,
7550  _logString
7551  );
7552  }
7553 #endif
7554  }
7555 
7558  U8 opCode,
7559  U32 stmtIdx,
7560  const Fw::StringBase& filePath
7561  ) const
7562  {
7563  // Get the time
7564  Fw::Time _logTime;
7565  if (this->isConnected_timeCaller_OutputPort(0)) {
7566  this->timeCaller_out(0, _logTime);
7567  }
7568 
7569  const FwEventIdType _id = this->getIdBase() + EVENTID_DIRECTIVETIMEDOUT;
7570 
7571  // Emit the event on the log port
7572  if (this->isConnected_logOut_OutputPort(0)) {
7573  Fw::LogBuffer _logBuff;
7575 
7576 #if FW_AMPCS_COMPATIBLE
7577  // Serialize the number of arguments
7578  _status = _logBuff.serializeFrom(static_cast<U8>(3));
7579  FW_ASSERT(
7580  _status == Fw::FW_SERIALIZE_OK,
7581  static_cast<FwAssertArgType>(_status)
7582  );
7583 #endif
7584 
7585 #if FW_AMPCS_COMPATIBLE
7586  // Serialize the argument size
7587  _status = _logBuff.serializeFrom(
7588  static_cast<U8>(sizeof(U8))
7589  );
7590  FW_ASSERT(
7591  _status == Fw::FW_SERIALIZE_OK,
7592  static_cast<FwAssertArgType>(_status)
7593  );
7594 #endif
7595  _status = _logBuff.serializeFrom(opCode);
7596  FW_ASSERT(
7597  _status == Fw::FW_SERIALIZE_OK,
7598  static_cast<FwAssertArgType>(_status)
7599  );
7600 
7601 #if FW_AMPCS_COMPATIBLE
7602  // Serialize the argument size
7603  _status = _logBuff.serializeFrom(
7604  static_cast<U8>(sizeof(U32))
7605  );
7606  FW_ASSERT(
7607  _status == Fw::FW_SERIALIZE_OK,
7608  static_cast<FwAssertArgType>(_status)
7609  );
7610 #endif
7611  _status = _logBuff.serializeFrom(stmtIdx);
7612  FW_ASSERT(
7613  _status == Fw::FW_SERIALIZE_OK,
7614  static_cast<FwAssertArgType>(_status)
7615  );
7616 
7617  _status = filePath.serializeTo(
7618  _logBuff,
7619  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
7620  );
7621  FW_ASSERT(
7622  _status == Fw::FW_SERIALIZE_OK,
7623  static_cast<FwAssertArgType>(_status)
7624  );
7625 
7626  this->logOut_out(
7627  0,
7628  _id,
7629  _logTime,
7631  _logBuff
7632  );
7633  }
7634 
7635  // Emit the event on the text log port
7636 #if FW_ENABLE_TEXT_LOGGING
7637  if (this->isConnected_logTextOut_OutputPort(0)) {
7638 #if FW_OBJECT_NAMES == 1
7639  const char* _formatString =
7640  "(%s) %s: A directive opcode %" PRIu8 " at index %" PRIu32 " timed out in sequence %s, causing the sequence to fail";
7641 #else
7642  const char* _formatString =
7643  "%s: A directive opcode %" PRIu8 " at index %" PRIu32 " timed out in sequence %s, causing the sequence to fail";
7644 #endif
7645 
7646  Fw::TextLogString _logString;
7647  _logString.format(
7648  _formatString,
7649 #if FW_OBJECT_NAMES == 1
7650  this->m_objName.toChar(),
7651 #endif
7652  "DirectiveTimedOut ",
7653  opCode,
7654  stmtIdx,
7655  filePath.toChar()
7656  );
7657 
7658  this->logTextOut_out(
7659  0,
7660  _id,
7661  _logTime,
7663  _logString
7664  );
7665  }
7666 #endif
7667  }
7668 
7671  U8 count,
7672  U8 max
7673  ) const
7674  {
7675  // Get the time
7676  Fw::Time _logTime;
7677  if (this->isConnected_timeCaller_OutputPort(0)) {
7678  this->timeCaller_out(0, _logTime);
7679  }
7680 
7681  const FwEventIdType _id = this->getIdBase() + EVENTID_TOOMANYSEQUENCEARGS;
7682 
7683  // Emit the event on the log port
7684  if (this->isConnected_logOut_OutputPort(0)) {
7685  Fw::LogBuffer _logBuff;
7687 
7688 #if FW_AMPCS_COMPATIBLE
7689  // Serialize the number of arguments
7690  _status = _logBuff.serializeFrom(static_cast<U8>(2));
7691  FW_ASSERT(
7692  _status == Fw::FW_SERIALIZE_OK,
7693  static_cast<FwAssertArgType>(_status)
7694  );
7695 #endif
7696 
7697 #if FW_AMPCS_COMPATIBLE
7698  // Serialize the argument size
7699  _status = _logBuff.serializeFrom(
7700  static_cast<U8>(sizeof(U8))
7701  );
7702  FW_ASSERT(
7703  _status == Fw::FW_SERIALIZE_OK,
7704  static_cast<FwAssertArgType>(_status)
7705  );
7706 #endif
7707  _status = _logBuff.serializeFrom(count);
7708  FW_ASSERT(
7709  _status == Fw::FW_SERIALIZE_OK,
7710  static_cast<FwAssertArgType>(_status)
7711  );
7712 
7713 #if FW_AMPCS_COMPATIBLE
7714  // Serialize the argument size
7715  _status = _logBuff.serializeFrom(
7716  static_cast<U8>(sizeof(U8))
7717  );
7718  FW_ASSERT(
7719  _status == Fw::FW_SERIALIZE_OK,
7720  static_cast<FwAssertArgType>(_status)
7721  );
7722 #endif
7723  _status = _logBuff.serializeFrom(max);
7724  FW_ASSERT(
7725  _status == Fw::FW_SERIALIZE_OK,
7726  static_cast<FwAssertArgType>(_status)
7727  );
7728 
7729  this->logOut_out(
7730  0,
7731  _id,
7732  _logTime,
7734  _logBuff
7735  );
7736  }
7737 
7738  // Emit the event on the text log port
7739 #if FW_ENABLE_TEXT_LOGGING
7740  if (this->isConnected_logTextOut_OutputPort(0)) {
7741 #if FW_OBJECT_NAMES == 1
7742  const char* _formatString =
7743  "(%s) %s: A sequence specified it had %" PRIu8 " args but the max was %" PRIu8 "";
7744 #else
7745  const char* _formatString =
7746  "%s: A sequence specified it had %" PRIu8 " args but the max was %" PRIu8 "";
7747 #endif
7748 
7749  Fw::TextLogString _logString;
7750  _logString.format(
7751  _formatString,
7752 #if FW_OBJECT_NAMES == 1
7753  this->m_objName.toChar(),
7754 #endif
7755  "TooManySequenceArgs ",
7756  count,
7757  max
7758  );
7759 
7760  this->logTextOut_out(
7761  0,
7762  _id,
7763  _logTime,
7765  _logString
7766  );
7767  }
7768 #endif
7769  }
7770 
7773  U16 count,
7774  U16 max
7775  ) const
7776  {
7777  // Get the time
7778  Fw::Time _logTime;
7779  if (this->isConnected_timeCaller_OutputPort(0)) {
7780  this->timeCaller_out(0, _logTime);
7781  }
7782 
7784 
7785  // Emit the event on the log port
7786  if (this->isConnected_logOut_OutputPort(0)) {
7787  Fw::LogBuffer _logBuff;
7789 
7790 #if FW_AMPCS_COMPATIBLE
7791  // Serialize the number of arguments
7792  _status = _logBuff.serializeFrom(static_cast<U8>(2));
7793  FW_ASSERT(
7794  _status == Fw::FW_SERIALIZE_OK,
7795  static_cast<FwAssertArgType>(_status)
7796  );
7797 #endif
7798 
7799 #if FW_AMPCS_COMPATIBLE
7800  // Serialize the argument size
7801  _status = _logBuff.serializeFrom(
7802  static_cast<U8>(sizeof(U16))
7803  );
7804  FW_ASSERT(
7805  _status == Fw::FW_SERIALIZE_OK,
7806  static_cast<FwAssertArgType>(_status)
7807  );
7808 #endif
7809  _status = _logBuff.serializeFrom(count);
7810  FW_ASSERT(
7811  _status == Fw::FW_SERIALIZE_OK,
7812  static_cast<FwAssertArgType>(_status)
7813  );
7814 
7815 #if FW_AMPCS_COMPATIBLE
7816  // Serialize the argument size
7817  _status = _logBuff.serializeFrom(
7818  static_cast<U8>(sizeof(U16))
7819  );
7820  FW_ASSERT(
7821  _status == Fw::FW_SERIALIZE_OK,
7822  static_cast<FwAssertArgType>(_status)
7823  );
7824 #endif
7825  _status = _logBuff.serializeFrom(max);
7826  FW_ASSERT(
7827  _status == Fw::FW_SERIALIZE_OK,
7828  static_cast<FwAssertArgType>(_status)
7829  );
7830 
7831  this->logOut_out(
7832  0,
7833  _id,
7834  _logTime,
7836  _logBuff
7837  );
7838  }
7839 
7840  // Emit the event on the text log port
7841 #if FW_ENABLE_TEXT_LOGGING
7842  if (this->isConnected_logTextOut_OutputPort(0)) {
7843 #if FW_OBJECT_NAMES == 1
7844  const char* _formatString =
7845  "(%s) %s: A sequence specified it had %" PRIu16 " directives but the max was %" PRIu16 "";
7846 #else
7847  const char* _formatString =
7848  "%s: A sequence specified it had %" PRIu16 " directives but the max was %" PRIu16 "";
7849 #endif
7850 
7851  Fw::TextLogString _logString;
7852  _logString.format(
7853  _formatString,
7854 #if FW_OBJECT_NAMES == 1
7855  this->m_objName.toChar(),
7856 #endif
7857  "TooManySequenceDirectives ",
7858  count,
7859  max
7860  );
7861 
7862  this->logTextOut_out(
7863  0,
7864  _id,
7865  _logTime,
7867  _logString
7868  );
7869  }
7870 #endif
7871  }
7872 
7875  Svc::Fpy::StackSizeType expected,
7876  FwSizeType actual,
7877  const Fw::StringBase& filePath
7878  ) const
7879  {
7880  // Get the time
7881  Fw::Time _logTime;
7882  if (this->isConnected_timeCaller_OutputPort(0)) {
7883  this->timeCaller_out(0, _logTime);
7884  }
7885 
7886  const FwEventIdType _id = this->getIdBase() + EVENTID_ARGSIZEMISMATCH;
7887 
7888  // Emit the event on the log port
7889  if (this->isConnected_logOut_OutputPort(0)) {
7890  Fw::LogBuffer _logBuff;
7892 
7893 #if FW_AMPCS_COMPATIBLE
7894  // Serialize the number of arguments
7895  _status = _logBuff.serializeFrom(static_cast<U8>(3));
7896  FW_ASSERT(
7897  _status == Fw::FW_SERIALIZE_OK,
7898  static_cast<FwAssertArgType>(_status)
7899  );
7900 #endif
7901 
7902 #if FW_AMPCS_COMPATIBLE
7903  // Serialize the argument size
7904  _status = _logBuff.serializeFrom(
7905  static_cast<U8>(sizeof(Svc::Fpy::StackSizeType))
7906  );
7907  FW_ASSERT(
7908  _status == Fw::FW_SERIALIZE_OK,
7909  static_cast<FwAssertArgType>(_status)
7910  );
7911 #endif
7912  _status = _logBuff.serializeFrom(expected);
7913  FW_ASSERT(
7914  _status == Fw::FW_SERIALIZE_OK,
7915  static_cast<FwAssertArgType>(_status)
7916  );
7917 
7918 #if FW_AMPCS_COMPATIBLE
7919  // Serialize the argument size
7920  _status = _logBuff.serializeFrom(
7921  static_cast<U8>(sizeof(FwSizeType))
7922  );
7923  FW_ASSERT(
7924  _status == Fw::FW_SERIALIZE_OK,
7925  static_cast<FwAssertArgType>(_status)
7926  );
7927 #endif
7928  _status = _logBuff.serializeFrom(actual);
7929  FW_ASSERT(
7930  _status == Fw::FW_SERIALIZE_OK,
7931  static_cast<FwAssertArgType>(_status)
7932  );
7933 
7934  _status = filePath.serializeTo(
7935  _logBuff,
7936  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
7937  );
7938  FW_ASSERT(
7939  _status == Fw::FW_SERIALIZE_OK,
7940  static_cast<FwAssertArgType>(_status)
7941  );
7942 
7943  this->logOut_out(
7944  0,
7945  _id,
7946  _logTime,
7948  _logBuff
7949  );
7950  }
7951 
7952  // Emit the event on the text log port
7953 #if FW_ENABLE_TEXT_LOGGING
7954  if (this->isConnected_logTextOut_OutputPort(0)) {
7955 #if FW_OBJECT_NAMES == 1
7956  const char* _formatString =
7957  "(%s) %s: Expected %" PRIu32 " bytes of arguments, but received %" PRIu64 " in sequence file %s";
7958 #else
7959  const char* _formatString =
7960  "%s: Expected %" PRIu32 " bytes of arguments, but received %" PRIu64 " in sequence file %s";
7961 #endif
7962 
7963  Fw::TextLogString _logString;
7964  _logString.format(
7965  _formatString,
7966 #if FW_OBJECT_NAMES == 1
7967  this->m_objName.toChar(),
7968 #endif
7969  "ArgSizeMismatch ",
7970  expected,
7971  actual,
7972  filePath.toChar()
7973  );
7974 
7975  this->logTextOut_out(
7976  0,
7977  _id,
7978  _logTime,
7980  _logString
7981  );
7982  }
7983 #endif
7984  }
7985 
7988  {
7989  // Get the time
7990  Fw::Time _logTime;
7991  if (this->isConnected_timeCaller_OutputPort(0)) {
7992  this->timeCaller_out(0, _logTime);
7993  }
7994 
7996 
7997  // Emit the event on the log port
7998  if (this->isConnected_logOut_OutputPort(0)) {
7999  Fw::LogBuffer _logBuff;
8001 
8002 #if FW_AMPCS_COMPATIBLE
8003  // Serialize the number of arguments
8004  _status = _logBuff.serializeFrom(static_cast<U8>(1));
8005  FW_ASSERT(
8006  _status == Fw::FW_SERIALIZE_OK,
8007  static_cast<FwAssertArgType>(_status)
8008  );
8009 #endif
8010 
8011 #if FW_AMPCS_COMPATIBLE
8012  // Serialize the argument size
8013  _status = _logBuff.serializeFrom(
8014  static_cast<U8>(sizeof(Svc::Fpy::StackSizeType))
8015  );
8016  FW_ASSERT(
8017  _status == Fw::FW_SERIALIZE_OK,
8018  static_cast<FwAssertArgType>(_status)
8019  );
8020 #endif
8021  _status = _logBuff.serializeFrom(argSize);
8022  FW_ASSERT(
8023  _status == Fw::FW_SERIALIZE_OK,
8024  static_cast<FwAssertArgType>(_status)
8025  );
8026 
8027  this->logOut_out(
8028  0,
8029  _id,
8030  _logTime,
8032  _logBuff
8033  );
8034  }
8035 
8036  // Emit the event on the text log port
8037 #if FW_ENABLE_TEXT_LOGGING
8038  if (this->isConnected_logTextOut_OutputPort(0)) {
8039 #if FW_OBJECT_NAMES == 1
8040  const char* _formatString =
8041  "(%s) %s: Arguments of size %" PRIu32 " would exceed max stack size.";
8042 #else
8043  const char* _formatString =
8044  "%s: Arguments of size %" PRIu32 " would exceed max stack size.";
8045 #endif
8046 
8047  Fw::TextLogString _logString;
8048  _logString.format(
8049  _formatString,
8050 #if FW_OBJECT_NAMES == 1
8051  this->m_objName.toChar(),
8052 #endif
8053  "ArgTotalSizeExceedsStackLimit ",
8054  argSize
8055  );
8056 
8057  this->logTextOut_out(
8058  0,
8059  _id,
8060  _logTime,
8062  _logString
8063  );
8064  }
8065 #endif
8066  }
8067 
8070  {
8071  // Get the time
8072  Fw::Time _logTime;
8073  if (this->isConnected_timeCaller_OutputPort(0)) {
8074  this->timeCaller_out(0, _logTime);
8075  }
8076 
8077  const FwEventIdType _id = this->getIdBase() + EVENTID_SEQUENCEPAUSED;
8078 
8079  // Emit the event on the log port
8080  if (this->isConnected_logOut_OutputPort(0)) {
8081  Fw::LogBuffer _logBuff;
8083 
8084 #if FW_AMPCS_COMPATIBLE
8085  // Serialize the number of arguments
8086  _status = _logBuff.serializeFrom(static_cast<U8>(1));
8087  FW_ASSERT(
8088  _status == Fw::FW_SERIALIZE_OK,
8089  static_cast<FwAssertArgType>(_status)
8090  );
8091 #endif
8092 
8093 #if FW_AMPCS_COMPATIBLE
8094  // Serialize the argument size
8095  _status = _logBuff.serializeFrom(
8096  static_cast<U8>(sizeof(U32))
8097  );
8098  FW_ASSERT(
8099  _status == Fw::FW_SERIALIZE_OK,
8100  static_cast<FwAssertArgType>(_status)
8101  );
8102 #endif
8103  _status = _logBuff.serializeFrom(stmtIdx);
8104  FW_ASSERT(
8105  _status == Fw::FW_SERIALIZE_OK,
8106  static_cast<FwAssertArgType>(_status)
8107  );
8108 
8109  this->logOut_out(
8110  0,
8111  _id,
8112  _logTime,
8114  _logBuff
8115  );
8116  }
8117 
8118  // Emit the event on the text log port
8119 #if FW_ENABLE_TEXT_LOGGING
8120  if (this->isConnected_logTextOut_OutputPort(0)) {
8121 #if FW_OBJECT_NAMES == 1
8122  const char* _formatString =
8123  "(%s) %s: Sequence paused before dispatching directive index %" PRIu32 "";
8124 #else
8125  const char* _formatString =
8126  "%s: Sequence paused before dispatching directive index %" PRIu32 "";
8127 #endif
8128 
8129  Fw::TextLogString _logString;
8130  _logString.format(
8131  _formatString,
8132 #if FW_OBJECT_NAMES == 1
8133  this->m_objName.toChar(),
8134 #endif
8135  "SequencePaused ",
8136  stmtIdx
8137  );
8138 
8139  this->logTextOut_out(
8140  0,
8141  _id,
8142  _logTime,
8144  _logString
8145  );
8146  }
8147 #endif
8148  }
8149 
8152  U32 breakpointIdx,
8153  bool breakOnce
8154  ) const
8155  {
8156  // Get the time
8157  Fw::Time _logTime;
8158  if (this->isConnected_timeCaller_OutputPort(0)) {
8159  this->timeCaller_out(0, _logTime);
8160  }
8161 
8162  const FwEventIdType _id = this->getIdBase() + EVENTID_BREAKPOINTSET;
8163 
8164  // Emit the event on the log port
8165  if (this->isConnected_logOut_OutputPort(0)) {
8166  Fw::LogBuffer _logBuff;
8168 
8169 #if FW_AMPCS_COMPATIBLE
8170  // Serialize the number of arguments
8171  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8172  FW_ASSERT(
8173  _status == Fw::FW_SERIALIZE_OK,
8174  static_cast<FwAssertArgType>(_status)
8175  );
8176 #endif
8177 
8178 #if FW_AMPCS_COMPATIBLE
8179  // Serialize the argument size
8180  _status = _logBuff.serializeFrom(
8181  static_cast<U8>(sizeof(U32))
8182  );
8183  FW_ASSERT(
8184  _status == Fw::FW_SERIALIZE_OK,
8185  static_cast<FwAssertArgType>(_status)
8186  );
8187 #endif
8188  _status = _logBuff.serializeFrom(breakpointIdx);
8189  FW_ASSERT(
8190  _status == Fw::FW_SERIALIZE_OK,
8191  static_cast<FwAssertArgType>(_status)
8192  );
8193 
8194 #if FW_AMPCS_COMPATIBLE
8195  // Serialize the argument size
8196  _status = _logBuff.serializeFrom(
8197  static_cast<U8>(sizeof(U8))
8198  );
8199  FW_ASSERT(
8200  _status == Fw::FW_SERIALIZE_OK,
8201  static_cast<FwAssertArgType>(_status)
8202  );
8203 #endif
8204  _status = _logBuff.serializeFrom(breakOnce);
8205  FW_ASSERT(
8206  _status == Fw::FW_SERIALIZE_OK,
8207  static_cast<FwAssertArgType>(_status)
8208  );
8209 
8210  this->logOut_out(
8211  0,
8212  _id,
8213  _logTime,
8215  _logBuff
8216  );
8217  }
8218 
8219  // Emit the event on the text log port
8220 #if FW_ENABLE_TEXT_LOGGING
8221  if (this->isConnected_logTextOut_OutputPort(0)) {
8222 #if FW_OBJECT_NAMES == 1
8223  const char* _formatString =
8224  "(%s) %s: Breakpoint set before directive index %" PRIu32 ". Will break once: %d";
8225 #else
8226  const char* _formatString =
8227  "%s: Breakpoint set before directive index %" PRIu32 ". Will break once: %d";
8228 #endif
8229 
8230  Fw::TextLogString _logString;
8231  _logString.format(
8232  _formatString,
8233 #if FW_OBJECT_NAMES == 1
8234  this->m_objName.toChar(),
8235 #endif
8236  "BreakpointSet ",
8237  breakpointIdx,
8238  breakOnce
8239  );
8240 
8241  this->logTextOut_out(
8242  0,
8243  _id,
8244  _logTime,
8246  _logString
8247  );
8248  }
8249 #endif
8250  }
8251 
8254  {
8255  // Get the time
8256  Fw::Time _logTime;
8257  if (this->isConnected_timeCaller_OutputPort(0)) {
8258  this->timeCaller_out(0, _logTime);
8259  }
8260 
8261  const FwEventIdType _id = this->getIdBase() + EVENTID_BREAKPOINTCLEARED;
8262 
8263  // Emit the event on the log port
8264  if (this->isConnected_logOut_OutputPort(0)) {
8265  Fw::LogBuffer _logBuff;
8266 
8267 #if FW_AMPCS_COMPATIBLE
8269  // Serialize the number of arguments
8270  _status = _logBuff.serializeFrom(static_cast<U8>(0));
8271  FW_ASSERT(
8272  _status == Fw::FW_SERIALIZE_OK,
8273  static_cast<FwAssertArgType>(_status)
8274  );
8275 #endif
8276 
8277  this->logOut_out(
8278  0,
8279  _id,
8280  _logTime,
8282  _logBuff
8283  );
8284  }
8285 
8286  // Emit the event on the text log port
8287 #if FW_ENABLE_TEXT_LOGGING
8288  if (this->isConnected_logTextOut_OutputPort(0)) {
8289 #if FW_OBJECT_NAMES == 1
8290  const char* _formatString =
8291  "(%s) %s: Breakpoint cleared";
8292 #else
8293  const char* _formatString =
8294  "%s: Breakpoint cleared";
8295 #endif
8296 
8297  Fw::TextLogString _logString;
8298  _logString.format(
8299  _formatString,
8300 #if FW_OBJECT_NAMES == 1
8301  this->m_objName.toChar(),
8302 #endif
8303  "BreakpointCleared "
8304  );
8305 
8306  this->logTextOut_out(
8307  0,
8308  _id,
8309  _logTime,
8311  _logString
8312  );
8313  }
8314 #endif
8315  }
8316 
8319  const Fw::StringBase& filePath,
8320  const Fw::StringBase& message
8321  ) const
8322  {
8323  // Get the time
8324  Fw::Time _logTime;
8325  if (this->isConnected_timeCaller_OutputPort(0)) {
8326  this->timeCaller_out(0, _logTime);
8327  }
8328 
8329  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGFATAL;
8330 
8331  // Emit the event on the log port
8332  if (this->isConnected_logOut_OutputPort(0)) {
8333  Fw::LogBuffer _logBuff;
8335 
8336 #if FW_AMPCS_COMPATIBLE
8337  // Serialize the number of arguments
8338  _status = _logBuff.serializeFrom(static_cast<U8>(2 + 1));
8339  FW_ASSERT(
8340  _status == Fw::FW_SERIALIZE_OK,
8341  static_cast<FwAssertArgType>(_status)
8342  );
8343 
8344  // For FATAL, add stack size of 4 and a dummy entry. No support for stacks yet.
8345  _status = _logBuff.serializeFrom(static_cast<U8>(4));
8346  FW_ASSERT(
8347  _status == Fw::FW_SERIALIZE_OK,
8348  static_cast<FwAssertArgType>(_status)
8349  );
8350 
8351  _status = _logBuff.serializeFrom(static_cast<U32>(0));
8352  FW_ASSERT(
8353  _status == Fw::FW_SERIALIZE_OK,
8354  static_cast<FwAssertArgType>(_status)
8355  );
8356 #endif
8357 
8358  _status = filePath.serializeTo(
8359  _logBuff,
8360  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8361  );
8362  FW_ASSERT(
8363  _status == Fw::FW_SERIALIZE_OK,
8364  static_cast<FwAssertArgType>(_status)
8365  );
8366 
8367  _status = message.serializeTo(
8368  _logBuff,
8369  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8370  );
8371  FW_ASSERT(
8372  _status == Fw::FW_SERIALIZE_OK,
8373  static_cast<FwAssertArgType>(_status)
8374  );
8375 
8376  this->logOut_out(
8377  0,
8378  _id,
8379  _logTime,
8381  _logBuff
8382  );
8383  }
8384 
8385  // Emit the event on the text log port
8386 #if FW_ENABLE_TEXT_LOGGING
8387  if (this->isConnected_logTextOut_OutputPort(0)) {
8388 #if FW_OBJECT_NAMES == 1
8389  const char* _formatString =
8390  "(%s) %s: Sequence %s: %s";
8391 #else
8392  const char* _formatString =
8393  "%s: Sequence %s: %s";
8394 #endif
8395 
8396  Fw::TextLogString _logString;
8397  _logString.format(
8398  _formatString,
8399 #if FW_OBJECT_NAMES == 1
8400  this->m_objName.toChar(),
8401 #endif
8402  "LogFatal ",
8403  filePath.toChar(),
8404  message.toChar()
8405  );
8406 
8407  this->logTextOut_out(
8408  0,
8409  _id,
8410  _logTime,
8412  _logString
8413  );
8414  }
8415 #endif
8416  }
8417 
8420  const Fw::StringBase& filePath,
8421  const Fw::StringBase& message
8422  ) const
8423  {
8424  // Get the time
8425  Fw::Time _logTime;
8426  if (this->isConnected_timeCaller_OutputPort(0)) {
8427  this->timeCaller_out(0, _logTime);
8428  }
8429 
8430  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGWARNINGHI;
8431 
8432  // Emit the event on the log port
8433  if (this->isConnected_logOut_OutputPort(0)) {
8434  Fw::LogBuffer _logBuff;
8436 
8437 #if FW_AMPCS_COMPATIBLE
8438  // Serialize the number of arguments
8439  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8440  FW_ASSERT(
8441  _status == Fw::FW_SERIALIZE_OK,
8442  static_cast<FwAssertArgType>(_status)
8443  );
8444 #endif
8445 
8446  _status = filePath.serializeTo(
8447  _logBuff,
8448  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8449  );
8450  FW_ASSERT(
8451  _status == Fw::FW_SERIALIZE_OK,
8452  static_cast<FwAssertArgType>(_status)
8453  );
8454 
8455  _status = message.serializeTo(
8456  _logBuff,
8457  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8458  );
8459  FW_ASSERT(
8460  _status == Fw::FW_SERIALIZE_OK,
8461  static_cast<FwAssertArgType>(_status)
8462  );
8463 
8464  this->logOut_out(
8465  0,
8466  _id,
8467  _logTime,
8469  _logBuff
8470  );
8471  }
8472 
8473  // Emit the event on the text log port
8474 #if FW_ENABLE_TEXT_LOGGING
8475  if (this->isConnected_logTextOut_OutputPort(0)) {
8476 #if FW_OBJECT_NAMES == 1
8477  const char* _formatString =
8478  "(%s) %s: Sequence %s: %s";
8479 #else
8480  const char* _formatString =
8481  "%s: Sequence %s: %s";
8482 #endif
8483 
8484  Fw::TextLogString _logString;
8485  _logString.format(
8486  _formatString,
8487 #if FW_OBJECT_NAMES == 1
8488  this->m_objName.toChar(),
8489 #endif
8490  "LogWarningHi ",
8491  filePath.toChar(),
8492  message.toChar()
8493  );
8494 
8495  this->logTextOut_out(
8496  0,
8497  _id,
8498  _logTime,
8500  _logString
8501  );
8502  }
8503 #endif
8504  }
8505 
8508  const Fw::StringBase& filePath,
8509  const Fw::StringBase& message
8510  ) const
8511  {
8512  // Get the time
8513  Fw::Time _logTime;
8514  if (this->isConnected_timeCaller_OutputPort(0)) {
8515  this->timeCaller_out(0, _logTime);
8516  }
8517 
8518  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGWARNINGLO;
8519 
8520  // Emit the event on the log port
8521  if (this->isConnected_logOut_OutputPort(0)) {
8522  Fw::LogBuffer _logBuff;
8524 
8525 #if FW_AMPCS_COMPATIBLE
8526  // Serialize the number of arguments
8527  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8528  FW_ASSERT(
8529  _status == Fw::FW_SERIALIZE_OK,
8530  static_cast<FwAssertArgType>(_status)
8531  );
8532 #endif
8533 
8534  _status = filePath.serializeTo(
8535  _logBuff,
8536  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8537  );
8538  FW_ASSERT(
8539  _status == Fw::FW_SERIALIZE_OK,
8540  static_cast<FwAssertArgType>(_status)
8541  );
8542 
8543  _status = message.serializeTo(
8544  _logBuff,
8545  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8546  );
8547  FW_ASSERT(
8548  _status == Fw::FW_SERIALIZE_OK,
8549  static_cast<FwAssertArgType>(_status)
8550  );
8551 
8552  this->logOut_out(
8553  0,
8554  _id,
8555  _logTime,
8557  _logBuff
8558  );
8559  }
8560 
8561  // Emit the event on the text log port
8562 #if FW_ENABLE_TEXT_LOGGING
8563  if (this->isConnected_logTextOut_OutputPort(0)) {
8564 #if FW_OBJECT_NAMES == 1
8565  const char* _formatString =
8566  "(%s) %s: Sequence %s: %s";
8567 #else
8568  const char* _formatString =
8569  "%s: Sequence %s: %s";
8570 #endif
8571 
8572  Fw::TextLogString _logString;
8573  _logString.format(
8574  _formatString,
8575 #if FW_OBJECT_NAMES == 1
8576  this->m_objName.toChar(),
8577 #endif
8578  "LogWarningLo ",
8579  filePath.toChar(),
8580  message.toChar()
8581  );
8582 
8583  this->logTextOut_out(
8584  0,
8585  _id,
8586  _logTime,
8588  _logString
8589  );
8590  }
8591 #endif
8592  }
8593 
8596  const Fw::StringBase& filePath,
8597  const Fw::StringBase& message
8598  ) const
8599  {
8600  // Get the time
8601  Fw::Time _logTime;
8602  if (this->isConnected_timeCaller_OutputPort(0)) {
8603  this->timeCaller_out(0, _logTime);
8604  }
8605 
8606  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGCOMMAND;
8607 
8608  // Emit the event on the log port
8609  if (this->isConnected_logOut_OutputPort(0)) {
8610  Fw::LogBuffer _logBuff;
8612 
8613 #if FW_AMPCS_COMPATIBLE
8614  // Serialize the number of arguments
8615  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8616  FW_ASSERT(
8617  _status == Fw::FW_SERIALIZE_OK,
8618  static_cast<FwAssertArgType>(_status)
8619  );
8620 #endif
8621 
8622  _status = filePath.serializeTo(
8623  _logBuff,
8624  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8625  );
8626  FW_ASSERT(
8627  _status == Fw::FW_SERIALIZE_OK,
8628  static_cast<FwAssertArgType>(_status)
8629  );
8630 
8631  _status = message.serializeTo(
8632  _logBuff,
8633  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8634  );
8635  FW_ASSERT(
8636  _status == Fw::FW_SERIALIZE_OK,
8637  static_cast<FwAssertArgType>(_status)
8638  );
8639 
8640  this->logOut_out(
8641  0,
8642  _id,
8643  _logTime,
8645  _logBuff
8646  );
8647  }
8648 
8649  // Emit the event on the text log port
8650 #if FW_ENABLE_TEXT_LOGGING
8651  if (this->isConnected_logTextOut_OutputPort(0)) {
8652 #if FW_OBJECT_NAMES == 1
8653  const char* _formatString =
8654  "(%s) %s: Sequence %s: %s";
8655 #else
8656  const char* _formatString =
8657  "%s: Sequence %s: %s";
8658 #endif
8659 
8660  Fw::TextLogString _logString;
8661  _logString.format(
8662  _formatString,
8663 #if FW_OBJECT_NAMES == 1
8664  this->m_objName.toChar(),
8665 #endif
8666  "LogCommand ",
8667  filePath.toChar(),
8668  message.toChar()
8669  );
8670 
8671  this->logTextOut_out(
8672  0,
8673  _id,
8674  _logTime,
8676  _logString
8677  );
8678  }
8679 #endif
8680  }
8681 
8684  const Fw::StringBase& filePath,
8685  const Fw::StringBase& message
8686  ) const
8687  {
8688  // Get the time
8689  Fw::Time _logTime;
8690  if (this->isConnected_timeCaller_OutputPort(0)) {
8691  this->timeCaller_out(0, _logTime);
8692  }
8693 
8694  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGACTIVITYHI;
8695 
8696  // Emit the event on the log port
8697  if (this->isConnected_logOut_OutputPort(0)) {
8698  Fw::LogBuffer _logBuff;
8700 
8701 #if FW_AMPCS_COMPATIBLE
8702  // Serialize the number of arguments
8703  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8704  FW_ASSERT(
8705  _status == Fw::FW_SERIALIZE_OK,
8706  static_cast<FwAssertArgType>(_status)
8707  );
8708 #endif
8709 
8710  _status = filePath.serializeTo(
8711  _logBuff,
8712  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8713  );
8714  FW_ASSERT(
8715  _status == Fw::FW_SERIALIZE_OK,
8716  static_cast<FwAssertArgType>(_status)
8717  );
8718 
8719  _status = message.serializeTo(
8720  _logBuff,
8721  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8722  );
8723  FW_ASSERT(
8724  _status == Fw::FW_SERIALIZE_OK,
8725  static_cast<FwAssertArgType>(_status)
8726  );
8727 
8728  this->logOut_out(
8729  0,
8730  _id,
8731  _logTime,
8733  _logBuff
8734  );
8735  }
8736 
8737  // Emit the event on the text log port
8738 #if FW_ENABLE_TEXT_LOGGING
8739  if (this->isConnected_logTextOut_OutputPort(0)) {
8740 #if FW_OBJECT_NAMES == 1
8741  const char* _formatString =
8742  "(%s) %s: Sequence %s: %s";
8743 #else
8744  const char* _formatString =
8745  "%s: Sequence %s: %s";
8746 #endif
8747 
8748  Fw::TextLogString _logString;
8749  _logString.format(
8750  _formatString,
8751 #if FW_OBJECT_NAMES == 1
8752  this->m_objName.toChar(),
8753 #endif
8754  "LogActivityHi ",
8755  filePath.toChar(),
8756  message.toChar()
8757  );
8758 
8759  this->logTextOut_out(
8760  0,
8761  _id,
8762  _logTime,
8764  _logString
8765  );
8766  }
8767 #endif
8768  }
8769 
8772  const Fw::StringBase& filePath,
8773  const Fw::StringBase& message
8774  ) const
8775  {
8776  // Get the time
8777  Fw::Time _logTime;
8778  if (this->isConnected_timeCaller_OutputPort(0)) {
8779  this->timeCaller_out(0, _logTime);
8780  }
8781 
8782  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGACTIVITYLO;
8783 
8784  // Emit the event on the log port
8785  if (this->isConnected_logOut_OutputPort(0)) {
8786  Fw::LogBuffer _logBuff;
8788 
8789 #if FW_AMPCS_COMPATIBLE
8790  // Serialize the number of arguments
8791  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8792  FW_ASSERT(
8793  _status == Fw::FW_SERIALIZE_OK,
8794  static_cast<FwAssertArgType>(_status)
8795  );
8796 #endif
8797 
8798  _status = filePath.serializeTo(
8799  _logBuff,
8800  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8801  );
8802  FW_ASSERT(
8803  _status == Fw::FW_SERIALIZE_OK,
8804  static_cast<FwAssertArgType>(_status)
8805  );
8806 
8807  _status = message.serializeTo(
8808  _logBuff,
8809  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8810  );
8811  FW_ASSERT(
8812  _status == Fw::FW_SERIALIZE_OK,
8813  static_cast<FwAssertArgType>(_status)
8814  );
8815 
8816  this->logOut_out(
8817  0,
8818  _id,
8819  _logTime,
8821  _logBuff
8822  );
8823  }
8824 
8825  // Emit the event on the text log port
8826 #if FW_ENABLE_TEXT_LOGGING
8827  if (this->isConnected_logTextOut_OutputPort(0)) {
8828 #if FW_OBJECT_NAMES == 1
8829  const char* _formatString =
8830  "(%s) %s: Sequence %s: %s";
8831 #else
8832  const char* _formatString =
8833  "%s: Sequence %s: %s";
8834 #endif
8835 
8836  Fw::TextLogString _logString;
8837  _logString.format(
8838  _formatString,
8839 #if FW_OBJECT_NAMES == 1
8840  this->m_objName.toChar(),
8841 #endif
8842  "LogActivityLo ",
8843  filePath.toChar(),
8844  message.toChar()
8845  );
8846 
8847  this->logTextOut_out(
8848  0,
8849  _id,
8850  _logTime,
8852  _logString
8853  );
8854  }
8855 #endif
8856  }
8857 
8860  const Fw::StringBase& filePath,
8861  const Fw::StringBase& message
8862  ) const
8863  {
8864  // Get the time
8865  Fw::Time _logTime;
8866  if (this->isConnected_timeCaller_OutputPort(0)) {
8867  this->timeCaller_out(0, _logTime);
8868  }
8869 
8870  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGDIAGNOSTIC;
8871 
8872  // Emit the event on the log port
8873  if (this->isConnected_logOut_OutputPort(0)) {
8874  Fw::LogBuffer _logBuff;
8876 
8877 #if FW_AMPCS_COMPATIBLE
8878  // Serialize the number of arguments
8879  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8880  FW_ASSERT(
8881  _status == Fw::FW_SERIALIZE_OK,
8882  static_cast<FwAssertArgType>(_status)
8883  );
8884 #endif
8885 
8886  _status = filePath.serializeTo(
8887  _logBuff,
8888  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8889  );
8890  FW_ASSERT(
8891  _status == Fw::FW_SERIALIZE_OK,
8892  static_cast<FwAssertArgType>(_status)
8893  );
8894 
8895  _status = message.serializeTo(
8896  _logBuff,
8897  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8898  );
8899  FW_ASSERT(
8900  _status == Fw::FW_SERIALIZE_OK,
8901  static_cast<FwAssertArgType>(_status)
8902  );
8903 
8904  this->logOut_out(
8905  0,
8906  _id,
8907  _logTime,
8909  _logBuff
8910  );
8911  }
8912 
8913  // Emit the event on the text log port
8914 #if FW_ENABLE_TEXT_LOGGING
8915  if (this->isConnected_logTextOut_OutputPort(0)) {
8916 #if FW_OBJECT_NAMES == 1
8917  const char* _formatString =
8918  "(%s) %s: Sequence %s: %s";
8919 #else
8920  const char* _formatString =
8921  "%s: Sequence %s: %s";
8922 #endif
8923 
8924  Fw::TextLogString _logString;
8925  _logString.format(
8926  _formatString,
8927 #if FW_OBJECT_NAMES == 1
8928  this->m_objName.toChar(),
8929 #endif
8930  "LogDiagnostic ",
8931  filePath.toChar(),
8932  message.toChar()
8933  );
8934 
8935  this->logTextOut_out(
8936  0,
8937  _id,
8938  _logTime,
8940  _logString
8941  );
8942  }
8943 #endif
8944  }
8945 
8946  // ----------------------------------------------------------------------
8947  // Telemetry serialized write
8948  // ----------------------------------------------------------------------
8949 
8952  FwChanIdType id,
8953  Fw::TlmBuffer& _tlmBuff,
8954  Fw::Time _tlmTime
8955  ) const
8956  {
8957  if (this->isConnected_tlmOut_OutputPort(0)) {
8958  if (
8960  (_tlmTime == Fw::ZERO_TIME)
8961  ) {
8962  this->timeCaller_out(0, _tlmTime);
8963  }
8964 
8965  FwChanIdType _id;
8966  _id = this->getIdBase() + id;
8967 
8968  this->tlmOut_out(
8969  0,
8970  _id,
8971  _tlmTime,
8972  _tlmBuff
8973  );
8974  }
8975  }
8976 
8977  // ----------------------------------------------------------------------
8978  // Telemetry write functions
8979  // ----------------------------------------------------------------------
8980 
8983  FwEnumStoreType arg,
8984  Fw::Time _tlmTime
8985  )
8986  {
8987  // Check to see if it is the first time
8988  if (not this->m_first_update_State) {
8989  // Check to see if value has changed. If not, don't write it.
8990  if (arg == this->m_last_State) {
8991  return;
8992  }
8993  else {
8994  this->m_last_State = arg;
8995  }
8996  }
8997  else {
8998  this->m_first_update_State = false;
8999  this->m_last_State = arg;
9000  }
9001 
9002  if (this->isConnected_tlmOut_OutputPort(0)) {
9003  Fw::TlmBuffer _tlmBuff;
9004  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9005  FW_ASSERT(
9006  _stat == Fw::FW_SERIALIZE_OK,
9007  static_cast<FwAssertArgType>(_stat)
9008  );
9009 
9010  this->tlmWrite(
9012  _tlmBuff,
9013  _tlmTime
9014  );
9015  }
9016  }
9017 
9020  U64 arg,
9021  Fw::Time _tlmTime
9022  )
9023  {
9024  // Check to see if it is the first time
9025  if (not this->m_first_update_SequencesSucceeded) {
9026  // Check to see if value has changed. If not, don't write it.
9027  if (arg == this->m_last_SequencesSucceeded) {
9028  return;
9029  }
9030  else {
9031  this->m_last_SequencesSucceeded = arg;
9032  }
9033  }
9034  else {
9035  this->m_first_update_SequencesSucceeded = false;
9036  this->m_last_SequencesSucceeded = arg;
9037  }
9038 
9039  if (this->isConnected_tlmOut_OutputPort(0)) {
9040  Fw::TlmBuffer _tlmBuff;
9041  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9042  FW_ASSERT(
9043  _stat == Fw::FW_SERIALIZE_OK,
9044  static_cast<FwAssertArgType>(_stat)
9045  );
9046 
9047  this->tlmWrite(
9049  _tlmBuff,
9050  _tlmTime
9051  );
9052  }
9053  }
9054 
9057  U64 arg,
9058  Fw::Time _tlmTime
9059  )
9060  {
9061  // Check to see if it is the first time
9062  if (not this->m_first_update_SequencesFailed) {
9063  // Check to see if value has changed. If not, don't write it.
9064  if (arg == this->m_last_SequencesFailed) {
9065  return;
9066  }
9067  else {
9068  this->m_last_SequencesFailed = arg;
9069  }
9070  }
9071  else {
9072  this->m_first_update_SequencesFailed = false;
9073  this->m_last_SequencesFailed = arg;
9074  }
9075 
9076  if (this->isConnected_tlmOut_OutputPort(0)) {
9077  Fw::TlmBuffer _tlmBuff;
9078  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9079  FW_ASSERT(
9080  _stat == Fw::FW_SERIALIZE_OK,
9081  static_cast<FwAssertArgType>(_stat)
9082  );
9083 
9084  this->tlmWrite(
9086  _tlmBuff,
9087  _tlmTime
9088  );
9089  }
9090  }
9091 
9094  U64 arg,
9095  Fw::Time _tlmTime
9096  )
9097  {
9098  // Check to see if it is the first time
9099  if (not this->m_first_update_SequencesCancelled) {
9100  // Check to see if value has changed. If not, don't write it.
9101  if (arg == this->m_last_SequencesCancelled) {
9102  return;
9103  }
9104  else {
9105  this->m_last_SequencesCancelled = arg;
9106  }
9107  }
9108  else {
9109  this->m_first_update_SequencesCancelled = false;
9110  this->m_last_SequencesCancelled = arg;
9111  }
9112 
9113  if (this->isConnected_tlmOut_OutputPort(0)) {
9114  Fw::TlmBuffer _tlmBuff;
9115  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9116  FW_ASSERT(
9117  _stat == Fw::FW_SERIALIZE_OK,
9118  static_cast<FwAssertArgType>(_stat)
9119  );
9120 
9121  this->tlmWrite(
9123  _tlmBuff,
9124  _tlmTime
9125  );
9126  }
9127  }
9128 
9131  U64 arg,
9132  Fw::Time _tlmTime
9133  )
9134  {
9135  // Check to see if it is the first time
9136  if (not this->m_first_update_StatementsDispatched) {
9137  // Check to see if value has changed. If not, don't write it.
9138  if (arg == this->m_last_StatementsDispatched) {
9139  return;
9140  }
9141  else {
9142  this->m_last_StatementsDispatched = arg;
9143  }
9144  }
9145  else {
9146  this->m_first_update_StatementsDispatched = false;
9147  this->m_last_StatementsDispatched = arg;
9148  }
9149 
9150  if (this->isConnected_tlmOut_OutputPort(0)) {
9151  Fw::TlmBuffer _tlmBuff;
9152  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9153  FW_ASSERT(
9154  _stat == Fw::FW_SERIALIZE_OK,
9155  static_cast<FwAssertArgType>(_stat)
9156  );
9157 
9158  this->tlmWrite(
9160  _tlmBuff,
9161  _tlmTime
9162  );
9163  }
9164  }
9165 
9168  U64 arg,
9169  Fw::Time _tlmTime
9170  )
9171  {
9172  // Check to see if it is the first time
9173  if (not this->m_first_update_StatementsFailed) {
9174  // Check to see if value has changed. If not, don't write it.
9175  if (arg == this->m_last_StatementsFailed) {
9176  return;
9177  }
9178  else {
9179  this->m_last_StatementsFailed = arg;
9180  }
9181  }
9182  else {
9183  this->m_first_update_StatementsFailed = false;
9184  this->m_last_StatementsFailed = arg;
9185  }
9186 
9187  if (this->isConnected_tlmOut_OutputPort(0)) {
9188  Fw::TlmBuffer _tlmBuff;
9189  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9190  FW_ASSERT(
9191  _stat == Fw::FW_SERIALIZE_OK,
9192  static_cast<FwAssertArgType>(_stat)
9193  );
9194 
9195  this->tlmWrite(
9197  _tlmBuff,
9198  _tlmTime
9199  );
9200  }
9201  }
9202 
9205  const Svc::Fpy::DirectiveErrorCode& arg,
9206  Fw::Time _tlmTime
9207  )
9208  {
9209  // Check to see if it is the first time
9210  if (not this->m_first_update_LastDirectiveError) {
9211  // Check to see if value has changed. If not, don't write it.
9212  if (arg == this->m_last_LastDirectiveError) {
9213  return;
9214  }
9215  else {
9216  this->m_last_LastDirectiveError = arg;
9217  }
9218  }
9219  else {
9220  this->m_first_update_LastDirectiveError = false;
9221  this->m_last_LastDirectiveError = arg;
9222  }
9223 
9224  if (this->isConnected_tlmOut_OutputPort(0)) {
9225  Fw::TlmBuffer _tlmBuff;
9226  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9227  FW_ASSERT(
9228  _stat == Fw::FW_SERIALIZE_OK,
9229  static_cast<FwAssertArgType>(_stat)
9230  );
9231 
9232  this->tlmWrite(
9234  _tlmBuff,
9235  _tlmTime
9236  );
9237  }
9238  }
9239 
9242  U64 arg,
9243  Fw::Time _tlmTime
9244  )
9245  {
9246  // Check to see if it is the first time
9247  if (not this->m_first_update_DirectiveErrorIndex) {
9248  // Check to see if value has changed. If not, don't write it.
9249  if (arg == this->m_last_DirectiveErrorIndex) {
9250  return;
9251  }
9252  else {
9253  this->m_last_DirectiveErrorIndex = arg;
9254  }
9255  }
9256  else {
9257  this->m_first_update_DirectiveErrorIndex = false;
9258  this->m_last_DirectiveErrorIndex = arg;
9259  }
9260 
9261  if (this->isConnected_tlmOut_OutputPort(0)) {
9262  Fw::TlmBuffer _tlmBuff;
9263  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9264  FW_ASSERT(
9265  _stat == Fw::FW_SERIALIZE_OK,
9266  static_cast<FwAssertArgType>(_stat)
9267  );
9268 
9269  this->tlmWrite(
9271  _tlmBuff,
9272  _tlmTime
9273  );
9274  }
9275  }
9276 
9279  const Svc::Fpy::DirectiveId& arg,
9280  Fw::Time _tlmTime
9281  )
9282  {
9283  // Check to see if it is the first time
9284  if (not this->m_first_update_DirectiveErrorId) {
9285  // Check to see if value has changed. If not, don't write it.
9286  if (arg == this->m_last_DirectiveErrorId) {
9287  return;
9288  }
9289  else {
9290  this->m_last_DirectiveErrorId = arg;
9291  }
9292  }
9293  else {
9294  this->m_first_update_DirectiveErrorId = false;
9295  this->m_last_DirectiveErrorId = arg;
9296  }
9297 
9298  if (this->isConnected_tlmOut_OutputPort(0)) {
9299  Fw::TlmBuffer _tlmBuff;
9300  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9301  FW_ASSERT(
9302  _stat == Fw::FW_SERIALIZE_OK,
9303  static_cast<FwAssertArgType>(_stat)
9304  );
9305 
9306  this->tlmWrite(
9308  _tlmBuff,
9309  _tlmTime
9310  );
9311  }
9312  }
9313 
9316  const Fw::StringBase& arg,
9317  Fw::Time _tlmTime
9318  )
9319  {
9320  // Check to see if it is the first time
9321  if (not this->m_first_update_SeqPath) {
9322  // Check to see if value has changed. If not, don't write it.
9323  if (arg == this->m_last_SeqPath) {
9324  return;
9325  }
9326  else {
9327  this->m_last_SeqPath = arg;
9328  }
9329  }
9330  else {
9331  this->m_first_update_SeqPath = false;
9332  this->m_last_SeqPath = arg;
9333  }
9334 
9335  if (this->isConnected_tlmOut_OutputPort(0)) {
9336  Fw::TlmBuffer _tlmBuff;
9337  Fw::SerializeStatus _stat = arg.serializeTo(
9338  _tlmBuff,
9339  FW_MIN(static_cast<FwSizeType>(FW_TLM_STRING_MAX_SIZE), 240)
9340  );
9341  FW_ASSERT(
9342  _stat == Fw::FW_SERIALIZE_OK,
9343  static_cast<FwAssertArgType>(_stat)
9344  );
9345 
9346  this->tlmWrite(
9348  _tlmBuff,
9349  _tlmTime
9350  );
9351  }
9352  }
9353 
9356  bool arg,
9357  Fw::Time _tlmTime
9358  )
9359  {
9360  // Check to see if it is the first time
9361  if (not this->m_first_update_Debug_ReachedEndOfFile) {
9362  // Check to see if value has changed. If not, don't write it.
9363  if (arg == this->m_last_Debug_ReachedEndOfFile) {
9364  return;
9365  }
9366  else {
9367  this->m_last_Debug_ReachedEndOfFile = arg;
9368  }
9369  }
9370  else {
9371  this->m_first_update_Debug_ReachedEndOfFile = false;
9372  this->m_last_Debug_ReachedEndOfFile = arg;
9373  }
9374 
9375  if (this->isConnected_tlmOut_OutputPort(0)) {
9376  Fw::TlmBuffer _tlmBuff;
9377  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9378  FW_ASSERT(
9379  _stat == Fw::FW_SERIALIZE_OK,
9380  static_cast<FwAssertArgType>(_stat)
9381  );
9382 
9383  this->tlmWrite(
9385  _tlmBuff,
9386  _tlmTime
9387  );
9388  }
9389  }
9390 
9393  bool arg,
9394  Fw::Time _tlmTime
9395  )
9396  {
9397  // Check to see if it is the first time
9398  if (not this->m_first_update_Debug_NextStatementReadSuccess) {
9399  // Check to see if value has changed. If not, don't write it.
9400  if (arg == this->m_last_Debug_NextStatementReadSuccess) {
9401  return;
9402  }
9403  else {
9404  this->m_last_Debug_NextStatementReadSuccess = arg;
9405  }
9406  }
9407  else {
9408  this->m_first_update_Debug_NextStatementReadSuccess = false;
9409  this->m_last_Debug_NextStatementReadSuccess = arg;
9410  }
9411 
9412  if (this->isConnected_tlmOut_OutputPort(0)) {
9413  Fw::TlmBuffer _tlmBuff;
9414  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9415  FW_ASSERT(
9416  _stat == Fw::FW_SERIALIZE_OK,
9417  static_cast<FwAssertArgType>(_stat)
9418  );
9419 
9420  this->tlmWrite(
9422  _tlmBuff,
9423  _tlmTime
9424  );
9425  }
9426  }
9427 
9430  U8 arg,
9431  Fw::Time _tlmTime
9432  )
9433  {
9434  // Check to see if it is the first time
9435  if (not this->m_first_update_Debug_NextStatementOpcode) {
9436  // Check to see if value has changed. If not, don't write it.
9437  if (arg == this->m_last_Debug_NextStatementOpcode) {
9438  return;
9439  }
9440  else {
9441  this->m_last_Debug_NextStatementOpcode = arg;
9442  }
9443  }
9444  else {
9445  this->m_first_update_Debug_NextStatementOpcode = false;
9446  this->m_last_Debug_NextStatementOpcode = arg;
9447  }
9448 
9449  if (this->isConnected_tlmOut_OutputPort(0)) {
9450  Fw::TlmBuffer _tlmBuff;
9451  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9452  FW_ASSERT(
9453  _stat == Fw::FW_SERIALIZE_OK,
9454  static_cast<FwAssertArgType>(_stat)
9455  );
9456 
9457  this->tlmWrite(
9459  _tlmBuff,
9460  _tlmTime
9461  );
9462  }
9463  }
9464 
9467  U32 arg,
9468  Fw::Time _tlmTime
9469  )
9470  {
9471  // Check to see if it is the first time
9472  if (not this->m_first_update_Debug_NextStatementIndex) {
9473  // Check to see if value has changed. If not, don't write it.
9474  if (arg == this->m_last_Debug_NextStatementIndex) {
9475  return;
9476  }
9477  else {
9478  this->m_last_Debug_NextStatementIndex = arg;
9479  }
9480  }
9481  else {
9482  this->m_first_update_Debug_NextStatementIndex = false;
9483  this->m_last_Debug_NextStatementIndex = arg;
9484  }
9485 
9486  if (this->isConnected_tlmOut_OutputPort(0)) {
9487  Fw::TlmBuffer _tlmBuff;
9488  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9489  FW_ASSERT(
9490  _stat == Fw::FW_SERIALIZE_OK,
9491  static_cast<FwAssertArgType>(_stat)
9492  );
9493 
9494  this->tlmWrite(
9496  _tlmBuff,
9497  _tlmTime
9498  );
9499  }
9500  }
9501 
9504  FwOpcodeType arg,
9505  Fw::Time _tlmTime
9506  )
9507  {
9508  // Check to see if it is the first time
9509  if (not this->m_first_update_Debug_NextCmdOpcode) {
9510  // Check to see if value has changed. If not, don't write it.
9511  if (arg == this->m_last_Debug_NextCmdOpcode) {
9512  return;
9513  }
9514  else {
9515  this->m_last_Debug_NextCmdOpcode = arg;
9516  }
9517  }
9518  else {
9519  this->m_first_update_Debug_NextCmdOpcode = false;
9520  this->m_last_Debug_NextCmdOpcode = arg;
9521  }
9522 
9523  if (this->isConnected_tlmOut_OutputPort(0)) {
9524  Fw::TlmBuffer _tlmBuff;
9525  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9526  FW_ASSERT(
9527  _stat == Fw::FW_SERIALIZE_OK,
9528  static_cast<FwAssertArgType>(_stat)
9529  );
9530 
9531  this->tlmWrite(
9533  _tlmBuff,
9534  _tlmTime
9535  );
9536  }
9537  }
9538 
9542  Fw::Time _tlmTime
9543  )
9544  {
9545  // Check to see if it is the first time
9546  if (not this->m_first_update_Debug_StackSize) {
9547  // Check to see if value has changed. If not, don't write it.
9548  if (arg == this->m_last_Debug_StackSize) {
9549  return;
9550  }
9551  else {
9552  this->m_last_Debug_StackSize = arg;
9553  }
9554  }
9555  else {
9556  this->m_first_update_Debug_StackSize = false;
9557  this->m_last_Debug_StackSize = arg;
9558  }
9559 
9560  if (this->isConnected_tlmOut_OutputPort(0)) {
9561  Fw::TlmBuffer _tlmBuff;
9562  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9563  FW_ASSERT(
9564  _stat == Fw::FW_SERIALIZE_OK,
9565  static_cast<FwAssertArgType>(_stat)
9566  );
9567 
9568  this->tlmWrite(
9570  _tlmBuff,
9571  _tlmTime
9572  );
9573  }
9574  }
9575 
9578  bool arg,
9579  Fw::Time _tlmTime
9580  )
9581  {
9582  // Check to see if it is the first time
9583  if (not this->m_first_update_BreakpointInUse) {
9584  // Check to see if value has changed. If not, don't write it.
9585  if (arg == this->m_last_BreakpointInUse) {
9586  return;
9587  }
9588  else {
9589  this->m_last_BreakpointInUse = arg;
9590  }
9591  }
9592  else {
9593  this->m_first_update_BreakpointInUse = false;
9594  this->m_last_BreakpointInUse = arg;
9595  }
9596 
9597  if (this->isConnected_tlmOut_OutputPort(0)) {
9598  Fw::TlmBuffer _tlmBuff;
9599  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9600  FW_ASSERT(
9601  _stat == Fw::FW_SERIALIZE_OK,
9602  static_cast<FwAssertArgType>(_stat)
9603  );
9604 
9605  this->tlmWrite(
9607  _tlmBuff,
9608  _tlmTime
9609  );
9610  }
9611  }
9612 
9615  U32 arg,
9616  Fw::Time _tlmTime
9617  )
9618  {
9619  // Check to see if it is the first time
9620  if (not this->m_first_update_BreakpointIndex) {
9621  // Check to see if value has changed. If not, don't write it.
9622  if (arg == this->m_last_BreakpointIndex) {
9623  return;
9624  }
9625  else {
9626  this->m_last_BreakpointIndex = arg;
9627  }
9628  }
9629  else {
9630  this->m_first_update_BreakpointIndex = false;
9631  this->m_last_BreakpointIndex = arg;
9632  }
9633 
9634  if (this->isConnected_tlmOut_OutputPort(0)) {
9635  Fw::TlmBuffer _tlmBuff;
9636  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9637  FW_ASSERT(
9638  _stat == Fw::FW_SERIALIZE_OK,
9639  static_cast<FwAssertArgType>(_stat)
9640  );
9641 
9642  this->tlmWrite(
9644  _tlmBuff,
9645  _tlmTime
9646  );
9647  }
9648  }
9649 
9652  bool arg,
9653  Fw::Time _tlmTime
9654  )
9655  {
9656  // Check to see if it is the first time
9657  if (not this->m_first_update_BreakOnlyOnceOnBreakpoint) {
9658  // Check to see if value has changed. If not, don't write it.
9659  if (arg == this->m_last_BreakOnlyOnceOnBreakpoint) {
9660  return;
9661  }
9662  else {
9663  this->m_last_BreakOnlyOnceOnBreakpoint = arg;
9664  }
9665  }
9666  else {
9667  this->m_first_update_BreakOnlyOnceOnBreakpoint = false;
9668  this->m_last_BreakOnlyOnceOnBreakpoint = arg;
9669  }
9670 
9671  if (this->isConnected_tlmOut_OutputPort(0)) {
9672  Fw::TlmBuffer _tlmBuff;
9673  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9674  FW_ASSERT(
9675  _stat == Fw::FW_SERIALIZE_OK,
9676  static_cast<FwAssertArgType>(_stat)
9677  );
9678 
9679  this->tlmWrite(
9681  _tlmBuff,
9682  _tlmTime
9683  );
9684  }
9685  }
9686 
9689  bool arg,
9690  Fw::Time _tlmTime
9691  )
9692  {
9693  // Check to see if it is the first time
9694  if (not this->m_first_update_BreakBeforeNextLine) {
9695  // Check to see if value has changed. If not, don't write it.
9696  if (arg == this->m_last_BreakBeforeNextLine) {
9697  return;
9698  }
9699  else {
9700  this->m_last_BreakBeforeNextLine = arg;
9701  }
9702  }
9703  else {
9704  this->m_first_update_BreakBeforeNextLine = false;
9705  this->m_last_BreakBeforeNextLine = arg;
9706  }
9707 
9708  if (this->isConnected_tlmOut_OutputPort(0)) {
9709  Fw::TlmBuffer _tlmBuff;
9710  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9711  FW_ASSERT(
9712  _stat == Fw::FW_SERIALIZE_OK,
9713  static_cast<FwAssertArgType>(_stat)
9714  );
9715 
9716  this->tlmWrite(
9718  _tlmBuff,
9719  _tlmTime
9720  );
9721  }
9722  }
9723 
9726  F32 arg,
9727  Fw::Time _tlmTime
9728  )
9729  {
9730  // Check to see if it is the first time
9731  if (not this->m_first_update_PRM_STATEMENT_TIMEOUT_SECS) {
9732  // Check to see if value has changed. If not, don't write it.
9733  if (arg == this->m_last_PRM_STATEMENT_TIMEOUT_SECS) {
9734  return;
9735  }
9736  else {
9737  this->m_last_PRM_STATEMENT_TIMEOUT_SECS = arg;
9738  }
9739  }
9740  else {
9741  this->m_first_update_PRM_STATEMENT_TIMEOUT_SECS = false;
9742  this->m_last_PRM_STATEMENT_TIMEOUT_SECS = arg;
9743  }
9744 
9745  if (this->isConnected_tlmOut_OutputPort(0)) {
9746  Fw::TlmBuffer _tlmBuff;
9747  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9748  FW_ASSERT(
9749  _stat == Fw::FW_SERIALIZE_OK,
9750  static_cast<FwAssertArgType>(_stat)
9751  );
9752 
9753  this->tlmWrite(
9755  _tlmBuff,
9756  _tlmTime
9757  );
9758  }
9759  }
9760 
9761  // ----------------------------------------------------------------------
9762  // Parameter hook functions
9763  // ----------------------------------------------------------------------
9764 
9767  {
9768  // Do nothing by default
9769  }
9770 
9773  {
9774  // Do nothing by default
9775  }
9776 
9777  // ----------------------------------------------------------------------
9778  // Parameter get functions
9779  // ----------------------------------------------------------------------
9780 
9783  {
9784  F32 _local{};
9785  this->m_paramLock.lock();
9786  valid = this->m_param_STATEMENT_TIMEOUT_SECS_valid;
9787  _local = this->m_STATEMENT_TIMEOUT_SECS;
9788  this->m_paramLock.unLock();
9789  return _local;
9790  }
9791 
9792  // ----------------------------------------------------------------------
9793  // Time
9794  // ----------------------------------------------------------------------
9795 
9797  getTime() const
9798  {
9799  if (this->isConnected_timeCaller_OutputPort(0)) {
9800  Fw::Time _time;
9801  this->timeCaller_out(0, _time);
9802  return _time;
9803  }
9804  else {
9805  return Fw::Time(TimeBase::TB_NONE, 0, 0);
9806  }
9807  }
9808 
9809  // ----------------------------------------------------------------------
9810  // Message dispatch functions
9811  // ----------------------------------------------------------------------
9812 
9813  Fw::QueuedComponentBase::MsgDispatchStatus FpySequencerComponentBase ::
9814  doDispatch()
9815  {
9816  ComponentIpcSerializableBuffer _msg;
9817  FwQueuePriorityType _priority = 0;
9818 
9819  Os::Queue::Status _msgStatus = this->m_queue.receive(
9820  _msg,
9822  _priority
9823  );
9824  FW_ASSERT(
9825  _msgStatus == Os::Queue::OP_OK,
9826  static_cast<FwAssertArgType>(_msgStatus)
9827  );
9828 
9829  // Reset to beginning of buffer
9830  _msg.resetDeser();
9831 
9832  FwEnumStoreType _desMsg = 0;
9833  Fw::SerializeStatus _deserStatus = _msg.deserializeTo(_desMsg);
9834  FW_ASSERT(
9835  _deserStatus == Fw::FW_SERIALIZE_OK,
9836  static_cast<FwAssertArgType>(_deserStatus)
9837  );
9838 
9839  MsgTypeEnum _msgType = static_cast<MsgTypeEnum>(_desMsg);
9840 
9841  if (_msgType == FPYSEQUENCER_COMPONENT_EXIT) {
9842  return MSG_DISPATCH_EXIT;
9843  }
9844 
9845  FwIndexType portNum = 0;
9846  _deserStatus = _msg.deserializeTo(portNum);
9847  FW_ASSERT(
9848  _deserStatus == Fw::FW_SERIALIZE_OK,
9849  static_cast<FwAssertArgType>(_deserStatus)
9850  );
9851 
9852  switch (_msgType) {
9853  // Handle async input port checkTimers
9854  case CHECKTIMERS_SCHED: {
9855  // Deserialize argument context
9856  U32 context;
9857  _deserStatus = _msg.deserializeTo(context);
9858  FW_ASSERT(
9859  _deserStatus == Fw::FW_SERIALIZE_OK,
9860  static_cast<FwAssertArgType>(_deserStatus)
9861  );
9862  // Call handler function
9863  this->checkTimers_handler(
9864  portNum,
9865  context
9866  );
9867 
9868  break;
9869  }
9870 
9871  // Handle async input port cmdResponseIn
9872  case CMDRESPONSEIN_CMDRESPONSE: {
9873  // Deserialize argument opCode
9874  FwOpcodeType opCode;
9875  _deserStatus = _msg.deserializeTo(opCode);
9876  FW_ASSERT(
9877  _deserStatus == Fw::FW_SERIALIZE_OK,
9878  static_cast<FwAssertArgType>(_deserStatus)
9879  );
9880 
9881  // Deserialize argument cmdSeq
9882  U32 cmdSeq;
9883  _deserStatus = _msg.deserializeTo(cmdSeq);
9884  FW_ASSERT(
9885  _deserStatus == Fw::FW_SERIALIZE_OK,
9886  static_cast<FwAssertArgType>(_deserStatus)
9887  );
9888 
9889  // Deserialize argument response
9890  Fw::CmdResponse response;
9891  _deserStatus = _msg.deserializeTo(response);
9892  FW_ASSERT(
9893  _deserStatus == Fw::FW_SERIALIZE_OK,
9894  static_cast<FwAssertArgType>(_deserStatus)
9895  );
9896  // Call handler function
9897  this->cmdResponseIn_handler(
9898  portNum,
9899  opCode,
9900  cmdSeq,
9901  response
9902  );
9903 
9904  break;
9905  }
9906 
9907  // Handle async input port pingIn
9908  case PINGIN_PING: {
9909  // Deserialize argument key
9910  U32 key;
9911  _deserStatus = _msg.deserializeTo(key);
9912  FW_ASSERT(
9913  _deserStatus == Fw::FW_SERIALIZE_OK,
9914  static_cast<FwAssertArgType>(_deserStatus)
9915  );
9916  // Call handler function
9917  this->pingIn_handler(
9918  portNum,
9919  key
9920  );
9921 
9922  break;
9923  }
9924 
9925  // Handle async input port seqCancelIn
9926  case SEQCANCELIN_CMDSEQCANCEL: {
9927  // Call handler function
9928  this->seqCancelIn_handler(portNum);
9929 
9930  break;
9931  }
9932 
9933  // Handle async input port seqRunIn
9934  case SEQRUNIN_CMDSEQIN: {
9935  // Deserialize argument filename
9936  char __fprime_ac_filename_buffer[Fw::StringBase::BUFFER_SIZE(240)];
9937  Fw::ExternalString filename(__fprime_ac_filename_buffer, sizeof __fprime_ac_filename_buffer);
9938  _deserStatus = _msg.deserializeTo(filename);
9939  FW_ASSERT(
9940  _deserStatus == Fw::FW_SERIALIZE_OK,
9941  static_cast<FwAssertArgType>(_deserStatus)
9942  );
9943 
9944  // Deserialize argument args
9945  Svc::SeqArgs args;
9946  _deserStatus = _msg.deserializeTo(args);
9947  FW_ASSERT(
9948  _deserStatus == Fw::FW_SERIALIZE_OK,
9949  static_cast<FwAssertArgType>(_deserStatus)
9950  );
9951  // Call handler function
9952  this->seqRunIn_handler(
9953  portNum,
9954  filename,
9955  args
9956  );
9957 
9958  break;
9959  }
9960 
9961  // Handle async input port tlmWrite
9962  case TLMWRITE_SCHED: {
9963  // Deserialize argument context
9964  U32 context;
9965  _deserStatus = _msg.deserializeTo(context);
9966  FW_ASSERT(
9967  _deserStatus == Fw::FW_SERIALIZE_OK,
9968  static_cast<FwAssertArgType>(_deserStatus)
9969  );
9970  // Call handler function
9971  this->tlmWrite_handler(
9972  portNum,
9973  context
9974  );
9975 
9976  break;
9977  }
9978 
9979  // Handle command RUN
9980  case CMD_RUN: {
9981  // Deserialize opcode
9982  FwOpcodeType _opCode = 0;
9983  _deserStatus = _msg.deserializeTo(_opCode);
9984  FW_ASSERT (
9985  _deserStatus == Fw::FW_SERIALIZE_OK,
9986  static_cast<FwAssertArgType>(_deserStatus)
9987  );
9988 
9989  // Deserialize command sequence
9990  U32 _cmdSeq = 0;
9991  _deserStatus = _msg.deserializeTo(_cmdSeq);
9992  FW_ASSERT (
9993  _deserStatus == Fw::FW_SERIALIZE_OK,
9994  static_cast<FwAssertArgType>(_deserStatus)
9995  );
9996 
9997  // Deserialize command argument buffer
9998  Fw::CmdArgBuffer args;
9999  _deserStatus = _msg.deserializeTo(args);
10000  FW_ASSERT (
10001  _deserStatus == Fw::FW_SERIALIZE_OK,
10002  static_cast<FwAssertArgType>(_deserStatus)
10003  );
10004 
10005  // Reset buffer
10006  args.resetDeser();
10007 
10008  // Deserialize argument fileName
10009  Fw::CmdStringArg fileName;
10010  _deserStatus = args.deserializeTo(fileName);
10011  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10013  this->cmdResponse_out(
10014  _opCode,
10015  _cmdSeq,
10017  );
10018  }
10019  // Don't crash the task if bad arguments were passed from the ground
10020  break;
10021  }
10022 
10023  // Deserialize argument block
10024  Svc::BlockState block;
10025  _deserStatus = args.deserializeTo(block);
10026  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10028  this->cmdResponse_out(
10029  _opCode,
10030  _cmdSeq,
10032  );
10033  }
10034  // Don't crash the task if bad arguments were passed from the ground
10035  break;
10036  }
10037 
10038  // Make sure there was no data left over.
10039  // That means the argument buffer size was incorrect.
10040 #if FW_CMD_CHECK_RESIDUAL
10041  if (args.getDeserializeSizeLeft() != 0) {
10043  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10044  }
10045  // Don't crash the task if bad arguments were passed from the ground
10046  break;
10047  }
10048 #endif
10049 
10050  // Call handler function
10051  this->RUN_cmdHandler(
10052  _opCode, _cmdSeq,
10053  fileName,
10054  block
10055  );
10056 
10057  break;
10058  }
10059 
10060  // Handle command RUN_ARGS
10061  case CMD_RUN_ARGS: {
10062  // Deserialize opcode
10063  FwOpcodeType _opCode = 0;
10064  _deserStatus = _msg.deserializeTo(_opCode);
10065  FW_ASSERT (
10066  _deserStatus == Fw::FW_SERIALIZE_OK,
10067  static_cast<FwAssertArgType>(_deserStatus)
10068  );
10069 
10070  // Deserialize command sequence
10071  U32 _cmdSeq = 0;
10072  _deserStatus = _msg.deserializeTo(_cmdSeq);
10073  FW_ASSERT (
10074  _deserStatus == Fw::FW_SERIALIZE_OK,
10075  static_cast<FwAssertArgType>(_deserStatus)
10076  );
10077 
10078  // Deserialize command argument buffer
10079  Fw::CmdArgBuffer args;
10080  _deserStatus = _msg.deserializeTo(args);
10081  FW_ASSERT (
10082  _deserStatus == Fw::FW_SERIALIZE_OK,
10083  static_cast<FwAssertArgType>(_deserStatus)
10084  );
10085 
10086  // Reset buffer
10087  args.resetDeser();
10088 
10089  // Deserialize argument fileName
10090  Fw::CmdStringArg fileName;
10091  _deserStatus = args.deserializeTo(fileName);
10092  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10094  this->cmdResponse_out(
10095  _opCode,
10096  _cmdSeq,
10098  );
10099  }
10100  // Don't crash the task if bad arguments were passed from the ground
10101  break;
10102  }
10103 
10104  // Deserialize argument block
10105  Svc::BlockState block;
10106  _deserStatus = args.deserializeTo(block);
10107  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10109  this->cmdResponse_out(
10110  _opCode,
10111  _cmdSeq,
10113  );
10114  }
10115  // Don't crash the task if bad arguments were passed from the ground
10116  break;
10117  }
10118 
10119  // Deserialize argument buffer
10120  Svc::SeqArgs buffer;
10121  _deserStatus = args.deserializeTo(buffer);
10122  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10124  this->cmdResponse_out(
10125  _opCode,
10126  _cmdSeq,
10128  );
10129  }
10130  // Don't crash the task if bad arguments were passed from the ground
10131  break;
10132  }
10133 
10134  // Make sure there was no data left over.
10135  // That means the argument buffer size was incorrect.
10136 #if FW_CMD_CHECK_RESIDUAL
10137  if (args.getDeserializeSizeLeft() != 0) {
10139  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10140  }
10141  // Don't crash the task if bad arguments were passed from the ground
10142  break;
10143  }
10144 #endif
10145 
10146  // Call handler function
10147  this->RUN_ARGS_cmdHandler(
10148  _opCode, _cmdSeq,
10149  fileName,
10150  block,
10151  buffer
10152  );
10153 
10154  break;
10155  }
10156 
10157  // Handle command VALIDATE
10158  case CMD_VALIDATE: {
10159  // Deserialize opcode
10160  FwOpcodeType _opCode = 0;
10161  _deserStatus = _msg.deserializeTo(_opCode);
10162  FW_ASSERT (
10163  _deserStatus == Fw::FW_SERIALIZE_OK,
10164  static_cast<FwAssertArgType>(_deserStatus)
10165  );
10166 
10167  // Deserialize command sequence
10168  U32 _cmdSeq = 0;
10169  _deserStatus = _msg.deserializeTo(_cmdSeq);
10170  FW_ASSERT (
10171  _deserStatus == Fw::FW_SERIALIZE_OK,
10172  static_cast<FwAssertArgType>(_deserStatus)
10173  );
10174 
10175  // Deserialize command argument buffer
10176  Fw::CmdArgBuffer args;
10177  _deserStatus = _msg.deserializeTo(args);
10178  FW_ASSERT (
10179  _deserStatus == Fw::FW_SERIALIZE_OK,
10180  static_cast<FwAssertArgType>(_deserStatus)
10181  );
10182 
10183  // Reset buffer
10184  args.resetDeser();
10185 
10186  // Deserialize argument fileName
10187  Fw::CmdStringArg fileName;
10188  _deserStatus = args.deserializeTo(fileName);
10189  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10191  this->cmdResponse_out(
10192  _opCode,
10193  _cmdSeq,
10195  );
10196  }
10197  // Don't crash the task if bad arguments were passed from the ground
10198  break;
10199  }
10200 
10201  // Make sure there was no data left over.
10202  // That means the argument buffer size was incorrect.
10203 #if FW_CMD_CHECK_RESIDUAL
10204  if (args.getDeserializeSizeLeft() != 0) {
10206  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10207  }
10208  // Don't crash the task if bad arguments were passed from the ground
10209  break;
10210  }
10211 #endif
10212 
10213  // Call handler function
10214  this->VALIDATE_cmdHandler(
10215  _opCode, _cmdSeq,
10216  fileName
10217  );
10218 
10219  break;
10220  }
10221 
10222  // Handle command VALIDATE_ARGS
10223  case CMD_VALIDATE_ARGS: {
10224  // Deserialize opcode
10225  FwOpcodeType _opCode = 0;
10226  _deserStatus = _msg.deserializeTo(_opCode);
10227  FW_ASSERT (
10228  _deserStatus == Fw::FW_SERIALIZE_OK,
10229  static_cast<FwAssertArgType>(_deserStatus)
10230  );
10231 
10232  // Deserialize command sequence
10233  U32 _cmdSeq = 0;
10234  _deserStatus = _msg.deserializeTo(_cmdSeq);
10235  FW_ASSERT (
10236  _deserStatus == Fw::FW_SERIALIZE_OK,
10237  static_cast<FwAssertArgType>(_deserStatus)
10238  );
10239 
10240  // Deserialize command argument buffer
10241  Fw::CmdArgBuffer args;
10242  _deserStatus = _msg.deserializeTo(args);
10243  FW_ASSERT (
10244  _deserStatus == Fw::FW_SERIALIZE_OK,
10245  static_cast<FwAssertArgType>(_deserStatus)
10246  );
10247 
10248  // Reset buffer
10249  args.resetDeser();
10250 
10251  // Deserialize argument fileName
10252  Fw::CmdStringArg fileName;
10253  _deserStatus = args.deserializeTo(fileName);
10254  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10256  this->cmdResponse_out(
10257  _opCode,
10258  _cmdSeq,
10260  );
10261  }
10262  // Don't crash the task if bad arguments were passed from the ground
10263  break;
10264  }
10265 
10266  // Deserialize argument buffer
10267  Svc::SeqArgs buffer;
10268  _deserStatus = args.deserializeTo(buffer);
10269  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10271  this->cmdResponse_out(
10272  _opCode,
10273  _cmdSeq,
10275  );
10276  }
10277  // Don't crash the task if bad arguments were passed from the ground
10278  break;
10279  }
10280 
10281  // Make sure there was no data left over.
10282  // That means the argument buffer size was incorrect.
10283 #if FW_CMD_CHECK_RESIDUAL
10284  if (args.getDeserializeSizeLeft() != 0) {
10286  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10287  }
10288  // Don't crash the task if bad arguments were passed from the ground
10289  break;
10290  }
10291 #endif
10292 
10293  // Call handler function
10295  _opCode, _cmdSeq,
10296  fileName,
10297  buffer
10298  );
10299 
10300  break;
10301  }
10302 
10303  // Handle command RUN_VALIDATED
10304  case CMD_RUN_VALIDATED: {
10305  // Deserialize opcode
10306  FwOpcodeType _opCode = 0;
10307  _deserStatus = _msg.deserializeTo(_opCode);
10308  FW_ASSERT (
10309  _deserStatus == Fw::FW_SERIALIZE_OK,
10310  static_cast<FwAssertArgType>(_deserStatus)
10311  );
10312 
10313  // Deserialize command sequence
10314  U32 _cmdSeq = 0;
10315  _deserStatus = _msg.deserializeTo(_cmdSeq);
10316  FW_ASSERT (
10317  _deserStatus == Fw::FW_SERIALIZE_OK,
10318  static_cast<FwAssertArgType>(_deserStatus)
10319  );
10320 
10321  // Deserialize command argument buffer
10322  Fw::CmdArgBuffer args;
10323  _deserStatus = _msg.deserializeTo(args);
10324  FW_ASSERT (
10325  _deserStatus == Fw::FW_SERIALIZE_OK,
10326  static_cast<FwAssertArgType>(_deserStatus)
10327  );
10328 
10329  // Reset buffer
10330  args.resetDeser();
10331 
10332  // Deserialize argument block
10333  Svc::BlockState block;
10334  _deserStatus = args.deserializeTo(block);
10335  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10337  this->cmdResponse_out(
10338  _opCode,
10339  _cmdSeq,
10341  );
10342  }
10343  // Don't crash the task if bad arguments were passed from the ground
10344  break;
10345  }
10346 
10347  // Make sure there was no data left over.
10348  // That means the argument buffer size was incorrect.
10349 #if FW_CMD_CHECK_RESIDUAL
10350  if (args.getDeserializeSizeLeft() != 0) {
10352  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10353  }
10354  // Don't crash the task if bad arguments were passed from the ground
10355  break;
10356  }
10357 #endif
10358 
10359  // Call handler function
10361  _opCode, _cmdSeq,
10362  block
10363  );
10364 
10365  break;
10366  }
10367 
10368  // Handle command CANCEL
10369  case CMD_CANCEL: {
10370  // Deserialize opcode
10371  FwOpcodeType _opCode = 0;
10372  _deserStatus = _msg.deserializeTo(_opCode);
10373  FW_ASSERT (
10374  _deserStatus == Fw::FW_SERIALIZE_OK,
10375  static_cast<FwAssertArgType>(_deserStatus)
10376  );
10377 
10378  // Deserialize command sequence
10379  U32 _cmdSeq = 0;
10380  _deserStatus = _msg.deserializeTo(_cmdSeq);
10381  FW_ASSERT (
10382  _deserStatus == Fw::FW_SERIALIZE_OK,
10383  static_cast<FwAssertArgType>(_deserStatus)
10384  );
10385 
10386  // Deserialize command argument buffer
10387  Fw::CmdArgBuffer args;
10388  _deserStatus = _msg.deserializeTo(args);
10389  FW_ASSERT (
10390  _deserStatus == Fw::FW_SERIALIZE_OK,
10391  static_cast<FwAssertArgType>(_deserStatus)
10392  );
10393 
10394  // Reset buffer
10395  args.resetDeser();
10396 
10397  // Make sure there was no data left over.
10398  // That means the argument buffer size was incorrect.
10399 #if FW_CMD_CHECK_RESIDUAL
10400  if (args.getDeserializeSizeLeft() != 0) {
10402  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10403  }
10404  // Don't crash the task if bad arguments were passed from the ground
10405  break;
10406  }
10407 #endif
10408 
10409  // Call handler function
10410  this->CANCEL_cmdHandler(_opCode, _cmdSeq);
10411 
10412  break;
10413  }
10414 
10415  // Handle command SET_BREAKPOINT
10416  case CMD_SET_BREAKPOINT: {
10417  // Deserialize opcode
10418  FwOpcodeType _opCode = 0;
10419  _deserStatus = _msg.deserializeTo(_opCode);
10420  FW_ASSERT (
10421  _deserStatus == Fw::FW_SERIALIZE_OK,
10422  static_cast<FwAssertArgType>(_deserStatus)
10423  );
10424 
10425  // Deserialize command sequence
10426  U32 _cmdSeq = 0;
10427  _deserStatus = _msg.deserializeTo(_cmdSeq);
10428  FW_ASSERT (
10429  _deserStatus == Fw::FW_SERIALIZE_OK,
10430  static_cast<FwAssertArgType>(_deserStatus)
10431  );
10432 
10433  // Deserialize command argument buffer
10434  Fw::CmdArgBuffer args;
10435  _deserStatus = _msg.deserializeTo(args);
10436  FW_ASSERT (
10437  _deserStatus == Fw::FW_SERIALIZE_OK,
10438  static_cast<FwAssertArgType>(_deserStatus)
10439  );
10440 
10441  // Reset buffer
10442  args.resetDeser();
10443 
10444  // Deserialize argument stmtIdx
10445  U32 stmtIdx;
10446  _deserStatus = args.deserializeTo(stmtIdx);
10447  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10449  this->cmdResponse_out(
10450  _opCode,
10451  _cmdSeq,
10453  );
10454  }
10455  // Don't crash the task if bad arguments were passed from the ground
10456  break;
10457  }
10458 
10459  // Deserialize argument breakOnce
10460  bool breakOnce;
10461  _deserStatus = args.deserializeTo(breakOnce);
10462  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10464  this->cmdResponse_out(
10465  _opCode,
10466  _cmdSeq,
10468  );
10469  }
10470  // Don't crash the task if bad arguments were passed from the ground
10471  break;
10472  }
10473 
10474  // Make sure there was no data left over.
10475  // That means the argument buffer size was incorrect.
10476 #if FW_CMD_CHECK_RESIDUAL
10477  if (args.getDeserializeSizeLeft() != 0) {
10479  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10480  }
10481  // Don't crash the task if bad arguments were passed from the ground
10482  break;
10483  }
10484 #endif
10485 
10486  // Call handler function
10488  _opCode, _cmdSeq,
10489  stmtIdx,
10490  breakOnce
10491  );
10492 
10493  break;
10494  }
10495 
10496  // Handle command BREAK
10497  case CMD_BREAK: {
10498  // Deserialize opcode
10499  FwOpcodeType _opCode = 0;
10500  _deserStatus = _msg.deserializeTo(_opCode);
10501  FW_ASSERT (
10502  _deserStatus == Fw::FW_SERIALIZE_OK,
10503  static_cast<FwAssertArgType>(_deserStatus)
10504  );
10505 
10506  // Deserialize command sequence
10507  U32 _cmdSeq = 0;
10508  _deserStatus = _msg.deserializeTo(_cmdSeq);
10509  FW_ASSERT (
10510  _deserStatus == Fw::FW_SERIALIZE_OK,
10511  static_cast<FwAssertArgType>(_deserStatus)
10512  );
10513 
10514  // Deserialize command argument buffer
10515  Fw::CmdArgBuffer args;
10516  _deserStatus = _msg.deserializeTo(args);
10517  FW_ASSERT (
10518  _deserStatus == Fw::FW_SERIALIZE_OK,
10519  static_cast<FwAssertArgType>(_deserStatus)
10520  );
10521 
10522  // Reset buffer
10523  args.resetDeser();
10524 
10525  // Make sure there was no data left over.
10526  // That means the argument buffer size was incorrect.
10527 #if FW_CMD_CHECK_RESIDUAL
10528  if (args.getDeserializeSizeLeft() != 0) {
10530  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10531  }
10532  // Don't crash the task if bad arguments were passed from the ground
10533  break;
10534  }
10535 #endif
10536 
10537  // Call handler function
10538  this->BREAK_cmdHandler(_opCode, _cmdSeq);
10539 
10540  break;
10541  }
10542 
10543  // Handle command CONTINUE
10544  case CMD_CONTINUE: {
10545  // Deserialize opcode
10546  FwOpcodeType _opCode = 0;
10547  _deserStatus = _msg.deserializeTo(_opCode);
10548  FW_ASSERT (
10549  _deserStatus == Fw::FW_SERIALIZE_OK,
10550  static_cast<FwAssertArgType>(_deserStatus)
10551  );
10552 
10553  // Deserialize command sequence
10554  U32 _cmdSeq = 0;
10555  _deserStatus = _msg.deserializeTo(_cmdSeq);
10556  FW_ASSERT (
10557  _deserStatus == Fw::FW_SERIALIZE_OK,
10558  static_cast<FwAssertArgType>(_deserStatus)
10559  );
10560 
10561  // Deserialize command argument buffer
10562  Fw::CmdArgBuffer args;
10563  _deserStatus = _msg.deserializeTo(args);
10564  FW_ASSERT (
10565  _deserStatus == Fw::FW_SERIALIZE_OK,
10566  static_cast<FwAssertArgType>(_deserStatus)
10567  );
10568 
10569  // Reset buffer
10570  args.resetDeser();
10571 
10572  // Make sure there was no data left over.
10573  // That means the argument buffer size was incorrect.
10574 #if FW_CMD_CHECK_RESIDUAL
10575  if (args.getDeserializeSizeLeft() != 0) {
10577  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10578  }
10579  // Don't crash the task if bad arguments were passed from the ground
10580  break;
10581  }
10582 #endif
10583 
10584  // Call handler function
10585  this->CONTINUE_cmdHandler(_opCode, _cmdSeq);
10586 
10587  break;
10588  }
10589 
10590  // Handle command CLEAR_BREAKPOINT
10591  case CMD_CLEAR_BREAKPOINT: {
10592  // Deserialize opcode
10593  FwOpcodeType _opCode = 0;
10594  _deserStatus = _msg.deserializeTo(_opCode);
10595  FW_ASSERT (
10596  _deserStatus == Fw::FW_SERIALIZE_OK,
10597  static_cast<FwAssertArgType>(_deserStatus)
10598  );
10599 
10600  // Deserialize command sequence
10601  U32 _cmdSeq = 0;
10602  _deserStatus = _msg.deserializeTo(_cmdSeq);
10603  FW_ASSERT (
10604  _deserStatus == Fw::FW_SERIALIZE_OK,
10605  static_cast<FwAssertArgType>(_deserStatus)
10606  );
10607 
10608  // Deserialize command argument buffer
10609  Fw::CmdArgBuffer args;
10610  _deserStatus = _msg.deserializeTo(args);
10611  FW_ASSERT (
10612  _deserStatus == Fw::FW_SERIALIZE_OK,
10613  static_cast<FwAssertArgType>(_deserStatus)
10614  );
10615 
10616  // Reset buffer
10617  args.resetDeser();
10618 
10619  // Make sure there was no data left over.
10620  // That means the argument buffer size was incorrect.
10621 #if FW_CMD_CHECK_RESIDUAL
10622  if (args.getDeserializeSizeLeft() != 0) {
10624  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10625  }
10626  // Don't crash the task if bad arguments were passed from the ground
10627  break;
10628  }
10629 #endif
10630 
10631  // Call handler function
10632  this->CLEAR_BREAKPOINT_cmdHandler(_opCode, _cmdSeq);
10633 
10634  break;
10635  }
10636 
10637  // Handle command STEP
10638  case CMD_STEP: {
10639  // Deserialize opcode
10640  FwOpcodeType _opCode = 0;
10641  _deserStatus = _msg.deserializeTo(_opCode);
10642  FW_ASSERT (
10643  _deserStatus == Fw::FW_SERIALIZE_OK,
10644  static_cast<FwAssertArgType>(_deserStatus)
10645  );
10646 
10647  // Deserialize command sequence
10648  U32 _cmdSeq = 0;
10649  _deserStatus = _msg.deserializeTo(_cmdSeq);
10650  FW_ASSERT (
10651  _deserStatus == Fw::FW_SERIALIZE_OK,
10652  static_cast<FwAssertArgType>(_deserStatus)
10653  );
10654 
10655  // Deserialize command argument buffer
10656  Fw::CmdArgBuffer args;
10657  _deserStatus = _msg.deserializeTo(args);
10658  FW_ASSERT (
10659  _deserStatus == Fw::FW_SERIALIZE_OK,
10660  static_cast<FwAssertArgType>(_deserStatus)
10661  );
10662 
10663  // Reset buffer
10664  args.resetDeser();
10665 
10666  // Make sure there was no data left over.
10667  // That means the argument buffer size was incorrect.
10668 #if FW_CMD_CHECK_RESIDUAL
10669  if (args.getDeserializeSizeLeft() != 0) {
10671  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10672  }
10673  // Don't crash the task if bad arguments were passed from the ground
10674  break;
10675  }
10676 #endif
10677 
10678  // Call handler function
10679  this->STEP_cmdHandler(_opCode, _cmdSeq);
10680 
10681  break;
10682  }
10683 
10684  // Handle command DUMP_STACK_TO_FILE
10685  case CMD_DUMP_STACK_TO_FILE: {
10686  // Deserialize opcode
10687  FwOpcodeType _opCode = 0;
10688  _deserStatus = _msg.deserializeTo(_opCode);
10689  FW_ASSERT (
10690  _deserStatus == Fw::FW_SERIALIZE_OK,
10691  static_cast<FwAssertArgType>(_deserStatus)
10692  );
10693 
10694  // Deserialize command sequence
10695  U32 _cmdSeq = 0;
10696  _deserStatus = _msg.deserializeTo(_cmdSeq);
10697  FW_ASSERT (
10698  _deserStatus == Fw::FW_SERIALIZE_OK,
10699  static_cast<FwAssertArgType>(_deserStatus)
10700  );
10701 
10702  // Deserialize command argument buffer
10703  Fw::CmdArgBuffer args;
10704  _deserStatus = _msg.deserializeTo(args);
10705  FW_ASSERT (
10706  _deserStatus == Fw::FW_SERIALIZE_OK,
10707  static_cast<FwAssertArgType>(_deserStatus)
10708  );
10709 
10710  // Reset buffer
10711  args.resetDeser();
10712 
10713  // Deserialize argument fileName
10714  Fw::CmdStringArg fileName;
10715  _deserStatus = args.deserializeTo(fileName);
10716  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10718  this->cmdResponse_out(
10719  _opCode,
10720  _cmdSeq,
10722  );
10723  }
10724  // Don't crash the task if bad arguments were passed from the ground
10725  break;
10726  }
10727 
10728  // Make sure there was no data left over.
10729  // That means the argument buffer size was incorrect.
10730 #if FW_CMD_CHECK_RESIDUAL
10731  if (args.getDeserializeSizeLeft() != 0) {
10733  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10734  }
10735  // Don't crash the task if bad arguments were passed from the ground
10736  break;
10737  }
10738 #endif
10739 
10740  // Call handler function
10742  _opCode, _cmdSeq,
10743  fileName
10744  );
10745 
10746  break;
10747  }
10748 
10749  // Handle internal interface directive_allocate
10750  case INT_IF_DIRECTIVE_ALLOCATE: {
10752  _deserStatus = _msg.deserializeTo(directive);
10753 
10754  // Internal interface should always deserialize
10755  FW_ASSERT(
10756  Fw::FW_SERIALIZE_OK == _deserStatus,
10757  static_cast<FwAssertArgType>(_deserStatus)
10758  );
10759 
10760  // Make sure there was no data left over.
10761  // That means the buffer size was incorrect.
10762  FW_ASSERT(
10763  _msg.getDeserializeSizeLeft() == 0,
10764  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10765  );
10766 
10767  // Call handler function
10769  directive
10770  );
10771 
10772  break;
10773  }
10774 
10775  // Handle internal interface directive_call
10776  case INT_IF_DIRECTIVE_CALL: {
10778  _deserStatus = _msg.deserializeTo(directive);
10779 
10780  // Internal interface should always deserialize
10781  FW_ASSERT(
10782  Fw::FW_SERIALIZE_OK == _deserStatus,
10783  static_cast<FwAssertArgType>(_deserStatus)
10784  );
10785 
10786  // Make sure there was no data left over.
10787  // That means the buffer size was incorrect.
10788  FW_ASSERT(
10789  _msg.getDeserializeSizeLeft() == 0,
10790  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10791  );
10792 
10793  // Call handler function
10795  directive
10796  );
10797 
10798  break;
10799  }
10800 
10801  // Handle internal interface directive_constCmd
10802  case INT_IF_DIRECTIVE_CONSTCMD: {
10804  _deserStatus = _msg.deserializeTo(directive);
10805 
10806  // Internal interface should always deserialize
10807  FW_ASSERT(
10808  Fw::FW_SERIALIZE_OK == _deserStatus,
10809  static_cast<FwAssertArgType>(_deserStatus)
10810  );
10811 
10812  // Make sure there was no data left over.
10813  // That means the buffer size was incorrect.
10814  FW_ASSERT(
10815  _msg.getDeserializeSizeLeft() == 0,
10816  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10817  );
10818 
10819  // Call handler function
10821  directive
10822  );
10823 
10824  break;
10825  }
10826 
10827  // Handle internal interface directive_discard
10828  case INT_IF_DIRECTIVE_DISCARD: {
10830  _deserStatus = _msg.deserializeTo(directive);
10831 
10832  // Internal interface should always deserialize
10833  FW_ASSERT(
10834  Fw::FW_SERIALIZE_OK == _deserStatus,
10835  static_cast<FwAssertArgType>(_deserStatus)
10836  );
10837 
10838  // Make sure there was no data left over.
10839  // That means the buffer size was incorrect.
10840  FW_ASSERT(
10841  _msg.getDeserializeSizeLeft() == 0,
10842  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10843  );
10844 
10845  // Call handler function
10847  directive
10848  );
10849 
10850  break;
10851  }
10852 
10853  // Handle internal interface directive_exit
10854  case INT_IF_DIRECTIVE_EXIT: {
10856  _deserStatus = _msg.deserializeTo(directive);
10857 
10858  // Internal interface should always deserialize
10859  FW_ASSERT(
10860  Fw::FW_SERIALIZE_OK == _deserStatus,
10861  static_cast<FwAssertArgType>(_deserStatus)
10862  );
10863 
10864  // Make sure there was no data left over.
10865  // That means the buffer size was incorrect.
10866  FW_ASSERT(
10867  _msg.getDeserializeSizeLeft() == 0,
10868  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10869  );
10870 
10871  // Call handler function
10873  directive
10874  );
10875 
10876  break;
10877  }
10878 
10879  // Handle internal interface directive_getField
10880  case INT_IF_DIRECTIVE_GETFIELD: {
10882  _deserStatus = _msg.deserializeTo(directive);
10883 
10884  // Internal interface should always deserialize
10885  FW_ASSERT(
10886  Fw::FW_SERIALIZE_OK == _deserStatus,
10887  static_cast<FwAssertArgType>(_deserStatus)
10888  );
10889 
10890  // Make sure there was no data left over.
10891  // That means the buffer size was incorrect.
10892  FW_ASSERT(
10893  _msg.getDeserializeSizeLeft() == 0,
10894  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10895  );
10896 
10897  // Call handler function
10899  directive
10900  );
10901 
10902  break;
10903  }
10904 
10905  // Handle internal interface directive_goto
10906  case INT_IF_DIRECTIVE_GOTO: {
10908  _deserStatus = _msg.deserializeTo(directive);
10909 
10910  // Internal interface should always deserialize
10911  FW_ASSERT(
10912  Fw::FW_SERIALIZE_OK == _deserStatus,
10913  static_cast<FwAssertArgType>(_deserStatus)
10914  );
10915 
10916  // Make sure there was no data left over.
10917  // That means the buffer size was incorrect.
10918  FW_ASSERT(
10919  _msg.getDeserializeSizeLeft() == 0,
10920  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10921  );
10922 
10923  // Call handler function
10925  directive
10926  );
10927 
10928  break;
10929  }
10930 
10931  // Handle internal interface directive_if
10932  case INT_IF_DIRECTIVE_IF: {
10934  _deserStatus = _msg.deserializeTo(directive);
10935 
10936  // Internal interface should always deserialize
10937  FW_ASSERT(
10938  Fw::FW_SERIALIZE_OK == _deserStatus,
10939  static_cast<FwAssertArgType>(_deserStatus)
10940  );
10941 
10942  // Make sure there was no data left over.
10943  // That means the buffer size was incorrect.
10944  FW_ASSERT(
10945  _msg.getDeserializeSizeLeft() == 0,
10946  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10947  );
10948 
10949  // Call handler function
10951  directive
10952  );
10953 
10954  break;
10955  }
10956 
10957  // Handle internal interface directive_loadAbs
10958  case INT_IF_DIRECTIVE_LOADABS: {
10960  _deserStatus = _msg.deserializeTo(directive);
10961 
10962  // Internal interface should always deserialize
10963  FW_ASSERT(
10964  Fw::FW_SERIALIZE_OK == _deserStatus,
10965  static_cast<FwAssertArgType>(_deserStatus)
10966  );
10967 
10968  // Make sure there was no data left over.
10969  // That means the buffer size was incorrect.
10970  FW_ASSERT(
10971  _msg.getDeserializeSizeLeft() == 0,
10972  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10973  );
10974 
10975  // Call handler function
10977  directive
10978  );
10979 
10980  break;
10981  }
10982 
10983  // Handle internal interface directive_loadRel
10984  case INT_IF_DIRECTIVE_LOADREL: {
10986  _deserStatus = _msg.deserializeTo(directive);
10987 
10988  // Internal interface should always deserialize
10989  FW_ASSERT(
10990  Fw::FW_SERIALIZE_OK == _deserStatus,
10991  static_cast<FwAssertArgType>(_deserStatus)
10992  );
10993 
10994  // Make sure there was no data left over.
10995  // That means the buffer size was incorrect.
10996  FW_ASSERT(
10997  _msg.getDeserializeSizeLeft() == 0,
10998  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10999  );
11000 
11001  // Call handler function
11003  directive
11004  );
11005 
11006  break;
11007  }
11008 
11009  // Handle internal interface directive_memCmp
11010  case INT_IF_DIRECTIVE_MEMCMP: {
11012  _deserStatus = _msg.deserializeTo(directive);
11013 
11014  // Internal interface should always deserialize
11015  FW_ASSERT(
11016  Fw::FW_SERIALIZE_OK == _deserStatus,
11017  static_cast<FwAssertArgType>(_deserStatus)
11018  );
11019 
11020  // Make sure there was no data left over.
11021  // That means the buffer size was incorrect.
11022  FW_ASSERT(
11023  _msg.getDeserializeSizeLeft() == 0,
11024  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11025  );
11026 
11027  // Call handler function
11029  directive
11030  );
11031 
11032  break;
11033  }
11034 
11035  // Handle internal interface directive_noOp
11036  case INT_IF_DIRECTIVE_NOOP: {
11038  _deserStatus = _msg.deserializeTo(directive);
11039 
11040  // Internal interface should always deserialize
11041  FW_ASSERT(
11042  Fw::FW_SERIALIZE_OK == _deserStatus,
11043  static_cast<FwAssertArgType>(_deserStatus)
11044  );
11045 
11046  // Make sure there was no data left over.
11047  // That means the buffer size was incorrect.
11048  FW_ASSERT(
11049  _msg.getDeserializeSizeLeft() == 0,
11050  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11051  );
11052 
11053  // Call handler function
11055  directive
11056  );
11057 
11058  break;
11059  }
11060 
11061  // Handle internal interface directive_peek
11062  case INT_IF_DIRECTIVE_PEEK: {
11064  _deserStatus = _msg.deserializeTo(directive);
11065 
11066  // Internal interface should always deserialize
11067  FW_ASSERT(
11068  Fw::FW_SERIALIZE_OK == _deserStatus,
11069  static_cast<FwAssertArgType>(_deserStatus)
11070  );
11071 
11072  // Make sure there was no data left over.
11073  // That means the buffer size was incorrect.
11074  FW_ASSERT(
11075  _msg.getDeserializeSizeLeft() == 0,
11076  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11077  );
11078 
11079  // Call handler function
11081  directive
11082  );
11083 
11084  break;
11085  }
11086 
11087  // Handle internal interface directive_popEvent
11088  case INT_IF_DIRECTIVE_POPEVENT: {
11090  _deserStatus = _msg.deserializeTo(directive);
11091 
11092  // Internal interface should always deserialize
11093  FW_ASSERT(
11094  Fw::FW_SERIALIZE_OK == _deserStatus,
11095  static_cast<FwAssertArgType>(_deserStatus)
11096  );
11097 
11098  // Make sure there was no data left over.
11099  // That means the buffer size was incorrect.
11100  FW_ASSERT(
11101  _msg.getDeserializeSizeLeft() == 0,
11102  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11103  );
11104 
11105  // Call handler function
11107  directive
11108  );
11109 
11110  break;
11111  }
11112 
11113  // Handle internal interface directive_pushPrm
11114  case INT_IF_DIRECTIVE_PUSHPRM: {
11116  _deserStatus = _msg.deserializeTo(directive);
11117 
11118  // Internal interface should always deserialize
11119  FW_ASSERT(
11120  Fw::FW_SERIALIZE_OK == _deserStatus,
11121  static_cast<FwAssertArgType>(_deserStatus)
11122  );
11123 
11124  // Make sure there was no data left over.
11125  // That means the buffer size was incorrect.
11126  FW_ASSERT(
11127  _msg.getDeserializeSizeLeft() == 0,
11128  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11129  );
11130 
11131  // Call handler function
11133  directive
11134  );
11135 
11136  break;
11137  }
11138 
11139  // Handle internal interface directive_pushTime
11140  case INT_IF_DIRECTIVE_PUSHTIME: {
11142  _deserStatus = _msg.deserializeTo(directive);
11143 
11144  // Internal interface should always deserialize
11145  FW_ASSERT(
11146  Fw::FW_SERIALIZE_OK == _deserStatus,
11147  static_cast<FwAssertArgType>(_deserStatus)
11148  );
11149 
11150  // Make sure there was no data left over.
11151  // That means the buffer size was incorrect.
11152  FW_ASSERT(
11153  _msg.getDeserializeSizeLeft() == 0,
11154  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11155  );
11156 
11157  // Call handler function
11159  directive
11160  );
11161 
11162  break;
11163  }
11164 
11165  // Handle internal interface directive_pushTlmVal
11166  case INT_IF_DIRECTIVE_PUSHTLMVAL: {
11168  _deserStatus = _msg.deserializeTo(directive);
11169 
11170  // Internal interface should always deserialize
11171  FW_ASSERT(
11172  Fw::FW_SERIALIZE_OK == _deserStatus,
11173  static_cast<FwAssertArgType>(_deserStatus)
11174  );
11175 
11176  // Make sure there was no data left over.
11177  // That means the buffer size was incorrect.
11178  FW_ASSERT(
11179  _msg.getDeserializeSizeLeft() == 0,
11180  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11181  );
11182 
11183  // Call handler function
11185  directive
11186  );
11187 
11188  break;
11189  }
11190 
11191  // Handle internal interface directive_pushTlmValAndTime
11192  case INT_IF_DIRECTIVE_PUSHTLMVALANDTIME: {
11194  _deserStatus = _msg.deserializeTo(directive);
11195 
11196  // Internal interface should always deserialize
11197  FW_ASSERT(
11198  Fw::FW_SERIALIZE_OK == _deserStatus,
11199  static_cast<FwAssertArgType>(_deserStatus)
11200  );
11201 
11202  // Make sure there was no data left over.
11203  // That means the buffer size was incorrect.
11204  FW_ASSERT(
11205  _msg.getDeserializeSizeLeft() == 0,
11206  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11207  );
11208 
11209  // Call handler function
11211  directive
11212  );
11213 
11214  break;
11215  }
11216 
11217  // Handle internal interface directive_pushVal
11218  case INT_IF_DIRECTIVE_PUSHVAL: {
11220  _deserStatus = _msg.deserializeTo(directive);
11221 
11222  // Internal interface should always deserialize
11223  FW_ASSERT(
11224  Fw::FW_SERIALIZE_OK == _deserStatus,
11225  static_cast<FwAssertArgType>(_deserStatus)
11226  );
11227 
11228  // Make sure there was no data left over.
11229  // That means the buffer size was incorrect.
11230  FW_ASSERT(
11231  _msg.getDeserializeSizeLeft() == 0,
11232  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11233  );
11234 
11235  // Call handler function
11237  directive
11238  );
11239 
11240  break;
11241  }
11242 
11243  // Handle internal interface directive_return
11244  case INT_IF_DIRECTIVE_RETURN: {
11246  _deserStatus = _msg.deserializeTo(directive);
11247 
11248  // Internal interface should always deserialize
11249  FW_ASSERT(
11250  Fw::FW_SERIALIZE_OK == _deserStatus,
11251  static_cast<FwAssertArgType>(_deserStatus)
11252  );
11253 
11254  // Make sure there was no data left over.
11255  // That means the buffer size was incorrect.
11256  FW_ASSERT(
11257  _msg.getDeserializeSizeLeft() == 0,
11258  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11259  );
11260 
11261  // Call handler function
11263  directive
11264  );
11265 
11266  break;
11267  }
11268 
11269  // Handle internal interface directive_stackCmd
11270  case INT_IF_DIRECTIVE_STACKCMD: {
11272  _deserStatus = _msg.deserializeTo(directive);
11273 
11274  // Internal interface should always deserialize
11275  FW_ASSERT(
11276  Fw::FW_SERIALIZE_OK == _deserStatus,
11277  static_cast<FwAssertArgType>(_deserStatus)
11278  );
11279 
11280  // Make sure there was no data left over.
11281  // That means the buffer size was incorrect.
11282  FW_ASSERT(
11283  _msg.getDeserializeSizeLeft() == 0,
11284  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11285  );
11286 
11287  // Call handler function
11289  directive
11290  );
11291 
11292  break;
11293  }
11294 
11295  // Handle internal interface directive_stackOp
11296  case INT_IF_DIRECTIVE_STACKOP: {
11298  _deserStatus = _msg.deserializeTo(directive);
11299 
11300  // Internal interface should always deserialize
11301  FW_ASSERT(
11302  Fw::FW_SERIALIZE_OK == _deserStatus,
11303  static_cast<FwAssertArgType>(_deserStatus)
11304  );
11305 
11306  // Make sure there was no data left over.
11307  // That means the buffer size was incorrect.
11308  FW_ASSERT(
11309  _msg.getDeserializeSizeLeft() == 0,
11310  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11311  );
11312 
11313  // Call handler function
11315  directive
11316  );
11317 
11318  break;
11319  }
11320 
11321  // Handle internal interface directive_storeAbs
11322  case INT_IF_DIRECTIVE_STOREABS: {
11324  _deserStatus = _msg.deserializeTo(directive);
11325 
11326  // Internal interface should always deserialize
11327  FW_ASSERT(
11328  Fw::FW_SERIALIZE_OK == _deserStatus,
11329  static_cast<FwAssertArgType>(_deserStatus)
11330  );
11331 
11332  // Make sure there was no data left over.
11333  // That means the buffer size was incorrect.
11334  FW_ASSERT(
11335  _msg.getDeserializeSizeLeft() == 0,
11336  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11337  );
11338 
11339  // Call handler function
11341  directive
11342  );
11343 
11344  break;
11345  }
11346 
11347  // Handle internal interface directive_storeAbsConstOffset
11348  case INT_IF_DIRECTIVE_STOREABSCONSTOFFSET: {
11350  _deserStatus = _msg.deserializeTo(directive);
11351 
11352  // Internal interface should always deserialize
11353  FW_ASSERT(
11354  Fw::FW_SERIALIZE_OK == _deserStatus,
11355  static_cast<FwAssertArgType>(_deserStatus)
11356  );
11357 
11358  // Make sure there was no data left over.
11359  // That means the buffer size was incorrect.
11360  FW_ASSERT(
11361  _msg.getDeserializeSizeLeft() == 0,
11362  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11363  );
11364 
11365  // Call handler function
11367  directive
11368  );
11369 
11370  break;
11371  }
11372 
11373  // Handle internal interface directive_storeRel
11374  case INT_IF_DIRECTIVE_STOREREL: {
11376  _deserStatus = _msg.deserializeTo(directive);
11377 
11378  // Internal interface should always deserialize
11379  FW_ASSERT(
11380  Fw::FW_SERIALIZE_OK == _deserStatus,
11381  static_cast<FwAssertArgType>(_deserStatus)
11382  );
11383 
11384  // Make sure there was no data left over.
11385  // That means the buffer size was incorrect.
11386  FW_ASSERT(
11387  _msg.getDeserializeSizeLeft() == 0,
11388  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11389  );
11390 
11391  // Call handler function
11393  directive
11394  );
11395 
11396  break;
11397  }
11398 
11399  // Handle internal interface directive_storeRelConstOffset
11400  case INT_IF_DIRECTIVE_STORERELCONSTOFFSET: {
11402  _deserStatus = _msg.deserializeTo(directive);
11403 
11404  // Internal interface should always deserialize
11405  FW_ASSERT(
11406  Fw::FW_SERIALIZE_OK == _deserStatus,
11407  static_cast<FwAssertArgType>(_deserStatus)
11408  );
11409 
11410  // Make sure there was no data left over.
11411  // That means the buffer size was incorrect.
11412  FW_ASSERT(
11413  _msg.getDeserializeSizeLeft() == 0,
11414  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11415  );
11416 
11417  // Call handler function
11419  directive
11420  );
11421 
11422  break;
11423  }
11424 
11425  // Handle internal interface directive_waitAbs
11426  case INT_IF_DIRECTIVE_WAITABS: {
11428  _deserStatus = _msg.deserializeTo(directive);
11429 
11430  // Internal interface should always deserialize
11431  FW_ASSERT(
11432  Fw::FW_SERIALIZE_OK == _deserStatus,
11433  static_cast<FwAssertArgType>(_deserStatus)
11434  );
11435 
11436  // Make sure there was no data left over.
11437  // That means the buffer size was incorrect.
11438  FW_ASSERT(
11439  _msg.getDeserializeSizeLeft() == 0,
11440  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11441  );
11442 
11443  // Call handler function
11445  directive
11446  );
11447 
11448  break;
11449  }
11450 
11451  // Handle internal interface directive_waitRel
11452  case INT_IF_DIRECTIVE_WAITREL: {
11454  _deserStatus = _msg.deserializeTo(directive);
11455 
11456  // Internal interface should always deserialize
11457  FW_ASSERT(
11458  Fw::FW_SERIALIZE_OK == _deserStatus,
11459  static_cast<FwAssertArgType>(_deserStatus)
11460  );
11461 
11462  // Make sure there was no data left over.
11463  // That means the buffer size was incorrect.
11464  FW_ASSERT(
11465  _msg.getDeserializeSizeLeft() == 0,
11466  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11467  );
11468 
11469  // Call handler function
11471  directive
11472  );
11473 
11474  break;
11475  }
11476 
11477 
11478  // Handle signals to internal state machines
11479  case INTERNAL_STATE_MACHINE_SIGNAL:
11480  this->smDispatch(_msg);
11481  break;
11482 
11483  default:
11484  return MSG_DISPATCH_ERROR;
11485  }
11486 
11487  return MSG_DISPATCH_OK;
11488  }
11489 
11490  // ----------------------------------------------------------------------
11491  // Calls for messages received on special input ports
11492  // ----------------------------------------------------------------------
11493 
11494  void FpySequencerComponentBase ::
11495  m_p_cmdIn_in(
11496  Fw::PassiveComponentBase* callComp,
11497  FwIndexType portNum,
11498  FwOpcodeType opCode,
11499  U32 cmdSeq,
11500  Fw::CmdArgBuffer& args
11501  )
11502  {
11503  FW_ASSERT(callComp);
11504  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11505  compPtr->cmdIn_handlerBase(
11506  portNum,
11507  opCode,
11508  cmdSeq,
11509  args
11510  );
11511  }
11512 
11513  // ----------------------------------------------------------------------
11514  // Calls for messages received on typed input ports
11515  // ----------------------------------------------------------------------
11516 
11517  void FpySequencerComponentBase ::
11518  m_p_checkTimers_in(
11519  Fw::PassiveComponentBase* callComp,
11520  FwIndexType portNum,
11521  U32 context
11522  )
11523  {
11524  FW_ASSERT(callComp);
11525  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11526  compPtr->checkTimers_handlerBase(
11527  portNum,
11528  context
11529  );
11530  }
11531 
11532  void FpySequencerComponentBase ::
11533  m_p_cmdResponseIn_in(
11534  Fw::PassiveComponentBase* callComp,
11535  FwIndexType portNum,
11536  FwOpcodeType opCode,
11537  U32 cmdSeq,
11538  const Fw::CmdResponse& response
11539  )
11540  {
11541  FW_ASSERT(callComp);
11542  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11543  compPtr->cmdResponseIn_handlerBase(
11544  portNum,
11545  opCode,
11546  cmdSeq,
11547  response
11548  );
11549  }
11550 
11551  void FpySequencerComponentBase ::
11552  m_p_pingIn_in(
11553  Fw::PassiveComponentBase* callComp,
11554  FwIndexType portNum,
11555  U32 key
11556  )
11557  {
11558  FW_ASSERT(callComp);
11559  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11560  compPtr->pingIn_handlerBase(
11561  portNum,
11562  key
11563  );
11564  }
11565 
11566  void FpySequencerComponentBase ::
11567  m_p_seqCancelIn_in(
11568  Fw::PassiveComponentBase* callComp,
11569  FwIndexType portNum
11570  )
11571  {
11572  FW_ASSERT(callComp);
11573  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11574  compPtr->seqCancelIn_handlerBase(portNum);
11575  }
11576 
11577  void FpySequencerComponentBase ::
11578  m_p_seqRunIn_in(
11579  Fw::PassiveComponentBase* callComp,
11580  FwIndexType portNum,
11581  const Fw::StringBase& filename,
11582  const Svc::SeqArgs& args
11583  )
11584  {
11585  FW_ASSERT(callComp);
11586  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11587  compPtr->seqRunIn_handlerBase(
11588  portNum,
11589  filename,
11590  args
11591  );
11592  }
11593 
11594  void FpySequencerComponentBase ::
11595  m_p_tlmWrite_in(
11596  Fw::PassiveComponentBase* callComp,
11597  FwIndexType portNum,
11598  U32 context
11599  )
11600  {
11601  FW_ASSERT(callComp);
11602  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11603  compPtr->tlmWrite_handlerBase(
11604  portNum,
11605  context
11606  );
11607  }
11608 
11609 #if !FW_DIRECT_PORT_CALLS
11610 
11611  // ----------------------------------------------------------------------
11612  // Invocation functions for special output ports
11613  // ----------------------------------------------------------------------
11614 
11615  void FpySequencerComponentBase ::
11616  cmdRegOut_out(
11617  FwIndexType portNum,
11618  FwOpcodeType opCode
11619  ) const
11620  {
11621  FW_ASSERT(
11622  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
11623  static_cast<FwAssertArgType>(portNum)
11624  );
11625 
11626  FW_ASSERT(
11627  this->m_cmdRegOut_OutputPort[portNum].isConnected(),
11628  static_cast<FwAssertArgType>(portNum)
11629  );
11630  this->m_cmdRegOut_OutputPort[portNum].invoke(
11631  opCode
11632  );
11633  }
11634 
11635  void FpySequencerComponentBase ::
11636  cmdResponseOut_out(
11637  FwIndexType portNum,
11638  FwOpcodeType opCode,
11639  U32 cmdSeq,
11640  const Fw::CmdResponse& response
11641  ) const
11642  {
11643  FW_ASSERT(
11644  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
11645  static_cast<FwAssertArgType>(portNum)
11646  );
11647 
11648  FW_ASSERT(
11649  this->m_cmdResponseOut_OutputPort[portNum].isConnected(),
11650  static_cast<FwAssertArgType>(portNum)
11651  );
11652  this->m_cmdResponseOut_OutputPort[portNum].invoke(
11653  opCode,
11654  cmdSeq,
11655  response
11656  );
11657  }
11658 
11659  void FpySequencerComponentBase ::
11660  logOut_out(
11661  FwIndexType portNum,
11662  FwEventIdType id,
11663  Fw::Time& timeTag,
11664  const Fw::LogSeverity& severity,
11665  Fw::LogBuffer& args
11666  ) const
11667  {
11668  FW_ASSERT(
11669  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
11670  static_cast<FwAssertArgType>(portNum)
11671  );
11672 
11673  FW_ASSERT(
11674  this->m_logOut_OutputPort[portNum].isConnected(),
11675  static_cast<FwAssertArgType>(portNum)
11676  );
11677  this->m_logOut_OutputPort[portNum].invoke(
11678  id,
11679  timeTag,
11680  severity,
11681  args
11682  );
11683  }
11684 
11685 #if FW_ENABLE_TEXT_LOGGING
11686 
11687  void FpySequencerComponentBase ::
11688  logTextOut_out(
11689  FwIndexType portNum,
11690  FwEventIdType id,
11691  Fw::Time& timeTag,
11692  const Fw::LogSeverity& severity,
11693  Fw::TextLogString& text
11694  ) const
11695  {
11696  FW_ASSERT(
11697  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
11698  static_cast<FwAssertArgType>(portNum)
11699  );
11700 
11701  FW_ASSERT(
11702  this->m_logTextOut_OutputPort[portNum].isConnected(),
11703  static_cast<FwAssertArgType>(portNum)
11704  );
11705  this->m_logTextOut_OutputPort[portNum].invoke(
11706  id,
11707  timeTag,
11708  severity,
11709  text
11710  );
11711  }
11712 
11713 #endif
11714 
11715  Fw::ParamValid FpySequencerComponentBase ::
11716  prmGet_out(
11717  FwIndexType portNum,
11718  FwPrmIdType id,
11719  Fw::ParamBuffer& val
11720  ) const
11721  {
11722  FW_ASSERT(
11723  (0 <= portNum) && (portNum < this->getNum_prmGet_OutputPorts()),
11724  static_cast<FwAssertArgType>(portNum)
11725  );
11726 
11727  FW_ASSERT(
11728  this->m_prmGet_OutputPort[portNum].isConnected(),
11729  static_cast<FwAssertArgType>(portNum)
11730  );
11731  return this->m_prmGet_OutputPort[portNum].invoke(
11732  id,
11733  val
11734  );
11735  }
11736 
11737  void FpySequencerComponentBase ::
11738  prmSet_out(
11739  FwIndexType portNum,
11740  FwPrmIdType id,
11741  Fw::ParamBuffer& val
11742  ) const
11743  {
11744  FW_ASSERT(
11745  (0 <= portNum) && (portNum < this->getNum_prmSet_OutputPorts()),
11746  static_cast<FwAssertArgType>(portNum)
11747  );
11748 
11749  FW_ASSERT(
11750  this->m_prmSet_OutputPort[portNum].isConnected(),
11751  static_cast<FwAssertArgType>(portNum)
11752  );
11753  this->m_prmSet_OutputPort[portNum].invoke(
11754  id,
11755  val
11756  );
11757  }
11758 
11759  void FpySequencerComponentBase ::
11760  timeCaller_out(
11761  FwIndexType portNum,
11762  Fw::Time& time
11763  ) const
11764  {
11765  FW_ASSERT(
11766  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
11767  static_cast<FwAssertArgType>(portNum)
11768  );
11769 
11770  FW_ASSERT(
11771  this->m_timeCaller_OutputPort[portNum].isConnected(),
11772  static_cast<FwAssertArgType>(portNum)
11773  );
11774  this->m_timeCaller_OutputPort[portNum].invoke(
11775  time
11776  );
11777  }
11778 
11779  void FpySequencerComponentBase ::
11780  tlmOut_out(
11781  FwIndexType portNum,
11782  FwChanIdType id,
11783  Fw::Time& timeTag,
11784  Fw::TlmBuffer& val
11785  ) const
11786  {
11787  FW_ASSERT(
11788  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
11789  static_cast<FwAssertArgType>(portNum)
11790  );
11791 
11792  FW_ASSERT(
11793  this->m_tlmOut_OutputPort[portNum].isConnected(),
11794  static_cast<FwAssertArgType>(portNum)
11795  );
11796  this->m_tlmOut_OutputPort[portNum].invoke(
11797  id,
11798  timeTag,
11799  val
11800  );
11801  }
11802 
11803 #endif
11804 
11805  // ----------------------------------------------------------------------
11806  // Send signal helper functions
11807  // ----------------------------------------------------------------------
11808 
11809  void FpySequencerComponentBase ::
11810  sendSignalStart(
11811  SmId smId,
11812  FwEnumStoreType signal,
11813  Fw::SerialBufferBase& buffer
11814  )
11815  {
11817 
11818  // Serialize the message type
11819  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(INTERNAL_STATE_MACHINE_SIGNAL));
11820  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11821 
11822  // Serialize the port number
11823  status = buffer.serializeFrom(static_cast<FwIndexType>(0));
11824  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11825 
11826  // Serialize the state machine ID
11827  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(smId));
11828  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11829 
11830  // Serialize the signal
11831  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(signal));
11832  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11833  }
11834 
11835  void FpySequencerComponentBase ::
11836  sequencer_sendSignalFinish(Fw::LinearBufferBase& buffer)
11837  {
11838  // Send message
11840  Os::Queue::Status qStatus = this->m_queue.send(buffer, 9, _block);
11841 
11842  FW_ASSERT(
11843  qStatus == Os::Queue::OP_OK,
11844  static_cast<FwAssertArgType>(qStatus)
11845  );
11846  }
11847 
11848  // ----------------------------------------------------------------------
11849  // Helper functions for state machine dispatch
11850  // ----------------------------------------------------------------------
11851 
11852  void FpySequencerComponentBase ::
11853  smDispatch(Fw::SerialBufferBase& buffer)
11854  {
11855  // Deserialize the state machine ID and signal
11856  FwEnumStoreType storedSmId;
11857  FwEnumStoreType storedSignal;
11858  FpySequencerComponentBase::deserializeSmIdAndSignal(buffer, storedSmId, storedSignal);
11859 
11860  // Select the target state machine instance
11861  const SmId smId = static_cast<SmId>(storedSmId);
11862  switch (smId) {
11863  case SmId::sequencer: {
11865  this->Svc_FpySequencer_SequencerStateMachine_smDispatch(buffer, this->m_stateMachine_sequencer, signal);
11866  break;
11867  }
11868  default:
11869  FW_ASSERT(0, static_cast<FwAssertArgType>(smId));
11870  break;
11871  }
11872  }
11873 
11874  void FpySequencerComponentBase ::
11875  deserializeSmIdAndSignal(
11876  Fw::SerialBufferBase& buffer,
11877  FwEnumStoreType& smId,
11878  FwEnumStoreType& signal
11879  )
11880  {
11881  // Move deserialization beyond the message type and port number
11882  Fw::SerializeStatus status =
11883  buffer.moveDeserToOffset(ComponentIpcSerializableBuffer::DATA_OFFSET);
11884  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11885 
11886  // Deserialize the state machine ID
11887  status = buffer.deserializeTo(smId);
11888  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11889 
11890  // Deserialize the signal
11891  status = buffer.deserializeTo(signal);
11892  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11893  }
11894 
11895  void FpySequencerComponentBase ::
11896  Svc_FpySequencer_SequencerStateMachine_smDispatch(
11897  Fw::SerialBufferBase& buffer,
11898  Svc_FpySequencer_SequencerStateMachine& sm,
11900  )
11901  {
11902  switch (signal) {
11904  // Deserialize the data
11906  const Fw::SerializeStatus status = buffer.deserializeTo(value);
11907  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11908  // Assert no data left in buffer
11909  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11910  // Call the sendSignal function for sm and cmd_VALIDATE
11911  sm.sendSignal_cmd_VALIDATE(value);
11912  break;
11913  }
11915  // Deserialize the data
11917  const Fw::SerializeStatus status = buffer.deserializeTo(value);
11918  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11919  // Assert no data left in buffer
11920  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11921  // Call the sendSignal function for sm and cmd_RUN
11922  sm.sendSignal_cmd_RUN(value);
11923  break;
11924  }
11926  // Deserialize the data
11928  const Fw::SerializeStatus status = buffer.deserializeTo(value);
11929  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11930  // Assert no data left in buffer
11931  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11932  // Call the sendSignal function for sm and cmd_RUN_VALIDATED
11933  sm.sendSignal_cmd_RUN_VALIDATED(value);
11934  break;
11935  }
11937  // Assert no data left in buffer
11938  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11939  // Call the sendSignal function for sm and cmd_CANCEL
11940  sm.sendSignal_cmd_CANCEL();
11941  break;
11942  }
11944  // Deserialize the data
11946  const Fw::SerializeStatus status = buffer.deserializeTo(value);
11947  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11948  // Assert no data left in buffer
11949  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11950  // Call the sendSignal function for sm and cmd_SET_BREAKPOINT
11951  sm.sendSignal_cmd_SET_BREAKPOINT(value);
11952  break;
11953  }
11955  // Assert no data left in buffer
11956  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11957  // Call the sendSignal function for sm and cmd_CLEAR_BREAKPOINT
11958  sm.sendSignal_cmd_CLEAR_BREAKPOINT();
11959  break;
11960  }
11962  // Assert no data left in buffer
11963  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11964  // Call the sendSignal function for sm and result_failure
11965  sm.sendSignal_result_failure();
11966  break;
11967  }
11969  // Assert no data left in buffer
11970  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11971  // Call the sendSignal function for sm and result_success
11972  sm.sendSignal_result_success();
11973  break;
11974  }
11976  // Assert no data left in buffer
11977  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11978  // Call the sendSignal function for sm and entered
11979  sm.sendSignal_entered();
11980  break;
11981  }
11983  // Assert no data left in buffer
11984  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11985  // Call the sendSignal function for sm and result_dispatchStatement_success
11986  sm.sendSignal_result_dispatchStatement_success();
11987  break;
11988  }
11990  // Assert no data left in buffer
11991  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11992  // Call the sendSignal function for sm and result_dispatchStatement_failure
11993  sm.sendSignal_result_dispatchStatement_failure();
11994  break;
11995  }
11997  // Assert no data left in buffer
11998  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11999  // Call the sendSignal function for sm and result_dispatchStatement_noMoreStatements
12000  sm.sendSignal_result_dispatchStatement_noMoreStatements();
12001  break;
12002  }
12004  // Assert no data left in buffer
12005  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12006  // Call the sendSignal function for sm and checkTimersIn
12007  sm.sendSignal_checkTimersIn();
12008  break;
12009  }
12011  // Assert no data left in buffer
12012  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12013  // Call the sendSignal function for sm and result_checkShouldWake_wakeup
12014  sm.sendSignal_result_checkShouldWake_wakeup();
12015  break;
12016  }
12018  // Assert no data left in buffer
12019  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12020  // Call the sendSignal function for sm and result_checkShouldWake_keepSleeping
12021  sm.sendSignal_result_checkShouldWake_keepSleeping();
12022  break;
12023  }
12025  // Assert no data left in buffer
12026  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12027  // Call the sendSignal function for sm and result_timeOpFailed
12028  sm.sendSignal_result_timeOpFailed();
12029  break;
12030  }
12032  // Assert no data left in buffer
12033  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12034  // Call the sendSignal function for sm and stmtResponse_beginSleep
12035  sm.sendSignal_stmtResponse_beginSleep();
12036  break;
12037  }
12039  // Assert no data left in buffer
12040  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12041  // Call the sendSignal function for sm and stmtResponse_success
12042  sm.sendSignal_stmtResponse_success();
12043  break;
12044  }
12046  // Assert no data left in buffer
12047  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12048  // Call the sendSignal function for sm and stmtResponse_failure
12049  sm.sendSignal_stmtResponse_failure();
12050  break;
12051  }
12053  // Assert no data left in buffer
12054  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12055  // Call the sendSignal function for sm and stmtResponse_unexpected
12056  sm.sendSignal_stmtResponse_unexpected();
12057  break;
12058  }
12060  // Assert no data left in buffer
12061  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12062  // Call the sendSignal function for sm and stmtResponse_keepWaiting
12063  sm.sendSignal_stmtResponse_keepWaiting();
12064  break;
12065  }
12067  // Assert no data left in buffer
12068  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12069  // Call the sendSignal function for sm and result_checkStatementTimeout_statementTimeout
12070  sm.sendSignal_result_checkStatementTimeout_statementTimeout();
12071  break;
12072  }
12074  // Assert no data left in buffer
12075  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12076  // Call the sendSignal function for sm and result_checkStatementTimeout_noTimeout
12077  sm.sendSignal_result_checkStatementTimeout_noTimeout();
12078  break;
12079  }
12081  // Assert no data left in buffer
12082  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12083  // Call the sendSignal function for sm and cmd_CONTINUE
12084  sm.sendSignal_cmd_CONTINUE();
12085  break;
12086  }
12088  // Assert no data left in buffer
12089  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12090  // Call the sendSignal function for sm and cmd_BREAK
12091  sm.sendSignal_cmd_BREAK();
12092  break;
12093  }
12095  // Assert no data left in buffer
12096  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
12097  // Call the sendSignal function for sm and cmd_STEP
12098  sm.sendSignal_cmd_STEP();
12099  break;
12100  }
12101  default:
12102  FW_ASSERT(0, static_cast<FwAssertArgType>(signal));
12103  break;
12104  }
12105  }
12106 
12107  // ----------------------------------------------------------------------
12108  // Parameter set functions
12109  // ----------------------------------------------------------------------
12110 
12111  Fw::CmdResponse FpySequencerComponentBase ::
12112  paramSet_STATEMENT_TIMEOUT_SECS(Fw::SerialBufferBase& val)
12113  {
12114  F32 _localVal{};
12115  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
12116  if (_stat != Fw::FW_SERIALIZE_OK) {
12118  }
12119 
12120  // Assign value only if successfully deserialized
12121  this->m_paramLock.lock();
12122  this->m_STATEMENT_TIMEOUT_SECS = _localVal;
12123  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::VALID;
12124  this->m_paramLock.unLock();
12125 
12126  // Call notifier
12128  return Fw::CmdResponse::OK;
12129  }
12130 
12131  // ----------------------------------------------------------------------
12132  // Parameter save functions
12133  // ----------------------------------------------------------------------
12134 
12135  Fw::CmdResponse FpySequencerComponentBase ::
12136  paramSave_STATEMENT_TIMEOUT_SECS()
12137  {
12138  Fw::ParamBuffer _saveBuff;
12139  FwPrmIdType _id;
12140  Fw::SerializeStatus _stat;
12141  if (this->isConnected_prmSet_OutputPort(0)) {
12142  this->m_paramLock.lock();
12143 
12144  _stat = _saveBuff.serializeFrom(m_STATEMENT_TIMEOUT_SECS);
12145 
12146  this->m_paramLock.unLock();
12147  if (_stat != Fw::FW_SERIALIZE_OK) {
12149  }
12150 
12151  _id = static_cast<FwPrmIdType>(this->getIdBase() + PARAMID_STATEMENT_TIMEOUT_SECS);
12152 
12153  // Save the parameter
12154  this->prmSet_out(
12155  0,
12156  _id,
12157  _saveBuff
12158  );
12159 
12160  return Fw::CmdResponse::OK;
12161  }
12162 
12164  }
12165 
12166 }
void cmdOut_out(FwIndexType portNum, Fw::ComBuffer &data, U32 context) const
Invoke output port cmdOut.
Serialization/Deserialization operation was successful.
void pingOut_out(FwIndexType portNum, U32 key) const
Invoke output port pingOut.
virtual void seqCancelIn_handler(FwIndexType portNum)=0
Handler for input port seqCancelIn.
void sequencer_sendSignal_result_dispatchStatement_noMoreStatements()
Send signal result_dispatchStatement_noMoreStatements to state machine sequencer. ...
sets the index of the next directive to execute
void sequencer_sendSignal_result_checkShouldWake_keepSleeping()
Send signal result_checkShouldWake_keepSleeping to state machine sequencer.
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:157
void invoke(Fw::ComBuffer &data, U32 context) const
Invoke a port connection.
Definition: ComPortAc.cpp:181
bool isConnected_getTlmChan_OutputPort(FwIndexType portNum) const
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:162
static constexpr FwSizeType CAPACITY
Definition: CmdPortAc.hpp:36
virtual void directive_peek_internalInterfaceHandler(const Svc::FpySequencer_PeekDirective &directive)=0
Internal interface handler for directive_peek.
void invoke(const Fw::StringBase &filename, const Svc::SeqArgs &args) const
Invoke a port connection.
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)
virtual void seqCancelIn_preMsgHook(FwIndexType portNum)
Pre-message hook for async input port seqCancelIn.
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.
virtual void seqRunIn_handler(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)=0
Handler for input port seqRunIn.
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.
static constexpr FwSizeType CAPACITY
bool isConnected_cmdRegOut_OutputPort(FwIndexType portNum) const
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()
bool isConnected_getParam_OutputPort(FwIndexType portNum) const
PlatformSizeType FwSizeType
void directive_popEvent_internalInterfaceInvoke(const Svc::FpySequencer_PopEventDirective &directive)
Internal interface base-class function for directive_popEvent.
stores a value to an absolute address in the stack (for global variables), offset from stack ...
Status receive(U8 *destination, FwSizeType capacity, BlockingType blockType, FwSizeType &actualSize, FwQueuePriorityType &priority) override
receive a message from the queue through delegate
Definition: Queue.cpp:71
I32 FwEnumStoreType
Loads and validates a sequence with arguments.
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.
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
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:73
virtual void tlmWrite_preMsgHook(FwIndexType portNum, U32 context)
Pre-message hook for async input port tlmWrite.
const char * toChar() const
Convert to a C-style char*.
Definition: String.hpp:50
virtual void CLEAR_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CLEAR_BREAKPOINT.
static constexpr FwIndexType getNum_cmdIn_InputPorts()
Must be called after VALIDATE. Runs the sequence that was validated.
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:89
void RUN_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void set_seqDoneOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to seqDoneOut[portNum].
FwIdType FwPrmIdType
The type of a parameter identifier.
void set_tlmOut_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
void unLock()
unlock the mutex and assert success
Definition: Mutex.cpp:41
Loads, validates and runs a sequence.
stores a value to a local variable at a compile-time-known offset relative to the current stack frame...
void addCallPort(InputPrmSetPort *callPort)
Register an input port.
virtual void VALIDATE_ARGS_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::SeqArgs buffer)=0
virtual void CANCEL_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
Fw::ParamValid getParam_out(FwIndexType portNum, FwPrmIdType id, Fw::ParamBuffer &val) const
Invoke output port getParam.
void invoke(U32 key) const
Invoke a port connection.
Definition: PingPortAc.cpp:170
void STEP_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
static constexpr FwIndexType getNum_pingIn_InputPorts()
bool isConnected_prmGet_OutputPort(FwIndexType portNum) const
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.
bool isConnected_prmSet_OutputPort(FwIndexType portNum) const
const Time ZERO_TIME
Definition: Time.cpp:5
virtual void RUN_ARGS_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN_ARGS.
virtual void directive_storeRel_internalInterfaceHandler(const Svc::FpySequencer_StoreRelDirective &directive)=0
Internal interface handler for directive_storeRel.
void sequencer_sendSignal_result_success()
Send signal result_success to state machine sequencer.
void cmdResponseIn_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Handler base-class function for input port cmdResponseIn.
void sequencer_sendSignal_stmtResponse_success()
Send signal stmtResponse_success to state machine sequencer.
virtual void VALIDATE_ARGS_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command VALIDATE_ARGS.
virtual ~FpySequencerComponentBase()
Destroy FpySequencerComponentBase object.
void log_WARNING_LO_CmdResponseWhileNotRunningSequence(I32 state, FwOpcodeType opcode, Fw::CmdResponse response) const
Log event CmdResponseWhileNotRunningSequence.
void tlmWrite_Debug_StackSize(Svc::Fpy::StackSizeType arg, Fw::Time _tlmTime=Fw::Time())
virtual void SET_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, U32 stmtIdx, bool breakOnce)=0
virtual void directive_stackOp_internalInterfaceHandler(const Svc::FpySequencer_StackOpDirective &directive)=0
Internal interface handler for directive_stackOp.
void sequencer_sendSignal_cmd_VALIDATE(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_VALIDATE to state machine sequencer.
void directive_noOp_internalInterfaceInvoke(const Svc::FpySequencer_NoOpDirective &directive)
Internal interface base-class function for directive_noOp.
void init()
Initialization function.
Definition: TlmPortAc.cpp:171
static constexpr FwIndexType getNum_tlmWrite_InputPorts()
Enum representing a command response.
virtual void RUN_VALIDATED_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN_VALIDATED.
void log_WARNING_HI_FileReadError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileReadError.
No time base has been established (Required)
void set_logOut_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to logOut[portNum].
virtual void DUMP_STACK_TO_FILE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)=0
void tlmWrite_State(FwEnumStoreType arg, Fw::Time _tlmTime=Fw::Time())
void addCallPort(InputCmdRegPort *callPort)
Register an input port.
void tlmWrite_SequencesSucceeded(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_ExtraBytesInSequence(FwSizeType remaining) const
Log event ExtraBytesInSequence.
virtual SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG)=0
Serialize an 8-bit unsigned integer value.
void directive_allocate_internalInterfaceInvoke(const Svc::FpySequencer_AllocateDirective &directive)
Internal interface base-class function for directive_allocate.
pops bytes off the top of the stack and does nothing with them
void directive_storeRelConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive)
Internal interface base-class function for directive_storeRelConstOffset.
static constexpr FwIndexType getNum_timeCaller_OutputPorts()
virtual void seqRunIn_preMsgHook(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)
Pre-message hook for async input port seqRunIn.
void log_DIAGNOSTIC_LogDiagnostic(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogDiagnostic.
void log_COMMAND_LogCommand(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogCommand.
virtual void 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::BlockState block)=0
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 cmdIn_handlerBase(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Handler base-class function for input port cmdIn.
void log_WARNING_HI_TooManySequenceDirectives(U16 count, U16 max) const
Log event TooManySequenceDirectives.
void sequencer_sendSignal_stmtResponse_unexpected()
Send signal stmtResponse_unexpected to state machine sequencer.
void sequencer_sendSignal_cmd_BREAK()
Send signal cmd_BREAK to state machine sequencer.
Software diagnostic events.
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:177
virtual void STEP_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command STEP.
void addCallPort(InputPrmGetPort *callPort)
Register an input port.
void RUN_VALIDATED_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void tlmWrite_PRM_STATEMENT_TIMEOUT_SECS(F32 arg, Fw::Time _tlmTime=Fw::Time())
void init()
Object initializer.
Definition: ObjBase.cpp:24
void set_pingOut_OutputPort(FwIndexType portNum, Svc::InputPingPort *port)
Connect port to pingOut[portNum].
static constexpr FwIndexType getNum_tlmOut_OutputPorts()
void log_ACTIVITY_LO_LogActivityLo(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogActivityLo.
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:95
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
static constexpr FwIndexType getNum_getParam_OutputPorts()
static constexpr FwIndexType getNum_cmdRegOut_OutputPorts()
void log_WARNING_HI_WrongCmdResponseOpcode(FwOpcodeType opcode, Fw::CmdResponse response, FwOpcodeType expectedOpcode) const
Log event WrongCmdResponseOpcode.
void tlmWrite_StatementsFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
FwIdType FwEventIdType
The type of an event identifier.
loads a value from a local variable at a compile-time-known offset relative to the current stack fram...
void seqCancelIn_handlerBase(FwIndexType portNum)
Handler base-class function for input port seqCancelIn.
void log_ACTIVITY_HI_LogActivityHi(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogActivityHi.
void regCommands()
Register commands with the Command Dispatcher.
void invoke(FwOpcodeType opCode) const
Invoke a port connection.
void directive_loadAbs_internalInterfaceInvoke(const Svc::FpySequencer_LoadAbsDirective &directive)
Internal interface base-class function for directive_loadAbs.
static constexpr FwSizeType CAPACITY
Definition: PingPortAc.hpp:34
called in dispatchStatement method when a statement was successfully dispatched
F32 paramGet_STATEMENT_TIMEOUT_SECS(Fw::ParamValid &valid)
Svc::InputCmdSeqCancelPort * get_seqCancelIn_InputPort(FwIndexType portNum)
Fw::TlmValid invoke(FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
#define FW_OBJECT_NAMES
Indicates whether or not object names are stored (more memory, can be used for tracking objects) ...
Definition: FpConfig.h:40
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:151
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.
Less important informational events.
pops a severity and message from the stack and emits an F Prime event
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.
void RUN_ARGS_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
Base-class handler function for command RUN_ARGS.
void init()
Initialization function.
An activity related to commanding.
#define FW_MIN(a, b)
MIN macro (deprecated in C++, use std::min)
Definition: BasicTypes.h:94
A less serious but recoverable event.
Fw::ParamValid invoke(FwPrmIdType id, Fw::ParamBuffer &val) const
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:151
Fw::InputCmdPort * get_cmdIn_InputPort(FwIndexType portNum)
bool isConnected_cmdResponseOut_OutputPort(FwIndexType portNum) const
void invoke(Fw::Time &time) const
Invoke a port connection.
Definition: TimePortAc.cpp:170
void pingIn_handlerBase(FwIndexType portNum, U32 key)
Handler base-class function for input port pingIn.
stores a value to an absolute address in the stack (for global variables), const offset ...
message to exit active component task
void set_timeCaller_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
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 connection.
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
The size of the serial representation.
Svc_FpySequencer_SequencerStateMachine(FpySequencerComponentBase &component)
Constructor.
FwIdType FwChanIdType
The type of a telemetry channel identifier.
FwSizeType SizeType
void log_WARNING_HI_EndOfFileError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath) const
Log event EndOfFileError.
void set_cmdResponseOut_OutputPort(FwIndexType portNum, Fw::InputCmdResponsePort *port)
Connect port to cmdResponseOut[portNum].
void addCallPort(InputPingPort *callPort)
Register an input port.
Definition: PingPortAc.cpp:157
void log_WARNING_LO_CmdResponseFromOldSequence(FwOpcodeType opcode, Fw::CmdResponse response, U16 oldSequenceIdx, U16 currentSequenceIdx) const
Log event CmdResponseFromOldSequence.
Status send(const U8 *buffer, FwSizeType size, FwQueuePriorityType priority, BlockingType blockType) override
send a message into the queue through delegate
Definition: Queue.cpp:54
Sequencer blocking state.
FpySequencerComponentBase(const char *compName="")
Construct FpySequencerComponentBase object.
virtual void directive_call_internalInterfaceHandler(const Svc::FpySequencer_CallDirective &directive)=0
Internal interface handler for directive_call.
void init()
Initialization function.
virtual void CONTINUE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void sequencer_sendSignal_checkTimersIn()
Send signal checkTimersIn to state machine sequencer.
void tlmWrite_StatementsDispatched(U64 arg, Fw::Time _tlmTime=Fw::Time())
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void tlmWrite_LastDirectiveError(const Svc::Fpy::DirectiveErrorCode &arg, Fw::Time _tlmTime=Fw::Time())
void VALIDATE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_discard_internalInterfaceHandler(const Svc::FpySequencer_DiscardDirective &directive)=0
Internal interface handler for directive_discard.
void resetDeser() override
Reset deserialization pointer to beginning of buffer.
void VALIDATE_ARGS_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
static constexpr FwIndexType getNum_prmSet_OutputPorts()
void log_WARNING_HI_LogWarningHi(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogWarningHi.
peeks at N bytes from the stack, starting from an offset relative to the top of the stack ...
void sequencer_sendSignal_stmtResponse_failure()
Send signal stmtResponse_failure to state machine sequencer.
A string backed by an external buffer.
A serious but recoverable event.
void CANCEL_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void directive_waitAbs_internalInterfaceInvoke(const Svc::FpySequencer_WaitAbsDirective &directive)
Internal interface base-class function for directive_waitAbs.
void directive_peek_internalInterfaceInvoke(const Svc::FpySequencer_PeekDirective &directive)
Internal interface base-class function for directive_peek.
void set_cmdRegOut_OutputPort(FwIndexType portNum, Fw::InputCmdRegPort *port)
Connect port to cmdRegOut[portNum].
void tlmWrite_Debug_NextStatementIndex(U32 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_CommandFailed(FwOpcodeType opCode, U32 stmtIdx, const Fw::StringBase &filePath, Fw::CmdResponse response) const
Log event CommandFailed.
void sequencer_sendSignal_stmtResponse_beginSleep()
Send signal stmtResponse_beginSleep to state machine sequencer.
void invoke(FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke a port connection.
Definition: TlmPortAc.cpp:190
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.
Enum representing event severity.
static constexpr FwIndexType getNum_seqRunIn_InputPorts()
virtual void tlmWrite_handler(FwIndexType portNum, U32 context)=0
Handler for input port tlmWrite.
Svc::InputCmdSeqInPort * get_seqRunIn_InputPort(FwIndexType portNum)
virtual void directive_memCmp_internalInterfaceHandler(const Svc::FpySequencer_MemCmpDirective &directive)=0
Internal interface handler for directive_memCmp.
void loadParameters()
Load the parameters from a parameter source.
void log_WARNING_HI_InvalidSeqRunCall(I32 state) const
Log event InvalidSeqRunCall.
virtual void directive_if_internalInterfaceHandler(const Svc::FpySequencer_IfDirective &directive)=0
Internal interface handler for directive_if.
#define PRI_FwIndexType
void directive_getField_internalInterfaceInvoke(const Svc::FpySequencer_GetFieldDirective &directive)
Internal interface base-class function for directive_getField.
static constexpr FwIndexType getNum_cmdOut_OutputPorts()
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
Definition: StringBase.cpp:39
void init()
Initialization function.
Definition: LogPortAc.cpp:180
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)
virtual void RUN_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::BlockState block)=0
void seqDoneOut_out(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response) const
Invoke output port seqDoneOut.
virtual void directive_storeRelConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreRelConstOffsetDirective &directive)=0
Internal interface handler for directive_storeRelConstOffset.
void directive_discard_internalInterfaceInvoke(const Svc::FpySequencer_DiscardDirective &directive)
Internal interface base-class function for directive_discard.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:53
virtual void directive_noOp_internalInterfaceHandler(const Svc::FpySequencer_NoOpDirective &directive)=0
Internal interface handler for directive_noOp.
static constexpr FwSizeType CAPACITY
BlockingType
message type
Definition: Queue.hpp:46
void log_ACTIVITY_HI_BreakpointSet(U32 breakpointIdx, bool breakOnce) const
Log event BreakpointSet.
void directive_pushPrm_internalInterfaceInvoke(const Svc::FpySequencer_PushPrmDirective &directive)
Internal interface base-class function for directive_pushPrm.
void sequencer_sendSignal_result_timeOpFailed()
Send signal result_timeOpFailed to state machine sequencer.
void BREAK_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void 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.
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()
virtual void RUN_ARGS_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::BlockState block, Svc::SeqArgs buffer)=0
Handler for command RUN_ARGS.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: SchedPortAc.cpp:79
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 connection.
Definition: LogPortAc.cpp:199
bool isConnected_tlmOut_OutputPort(FwIndexType portNum) const
void init()
Initialization function.
void log_WARNING_HI_InvalidCommand(I32 state) const
Log event InvalidCommand.
void tlmWrite_BreakBeforeNextLine(bool arg, Fw::Time _tlmTime=Fw::Time())
virtual void directive_storeAbs_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsDirective &directive)=0
Internal interface handler for directive_storeAbs.
bool isConnected_logOut_OutputPort(FwIndexType portNum) const
void log_ACTIVITY_HI_SequenceCancelled(const Fw::StringBase &filePath) const
Log event SequenceCancelled.
virtual void RUN_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command RUN.
void log_ACTIVITY_HI_BreakpointCleared() const
Log event BreakpointCleared.
void log_WARNING_HI_ArgTotalSizeExceedsStackLimit(Svc::Fpy::StackSizeType argSize) const
Log event ArgTotalSizeExceedsStackLimit.
static constexpr FwIndexType getNum_getTlmChan_OutputPorts()
void init()
Initialization function.
virtual void directive_getField_internalInterfaceHandler(const Svc::FpySequencer_GetFieldDirective &directive)=0
Internal interface handler for directive_getField.
virtual void directive_loadRel_internalInterfaceHandler(const Svc::FpySequencer_LoadRelDirective &directive)=0
Internal interface handler for directive_loadRel.
A message was sent requesting an exit of the loop.
bool isConnected_timeCaller_OutputPort(FwIndexType portNum) const
called when the statement unsuccessfully executed. only raised in the RUNNING.AWAITING_CMD_RESPONSE s...
called in CONTINUE cmd. only raised in RUNNING.PAUSED state
FpySequencer_SequencerStateMachineStateMachineBase::State getState() const
Get the state.
void tlmWrite_SequencesFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_FileReadDeserializeError(Svc::FpySequencer_FileReadStage readStage, const Fw::StringBase &filePath, I32 errorCode, U64 buffLeft, U64 buffLength) const
Log event FileReadDeserializeError.
loads a value from an absolute address in the stack (for global variables)
void tlmWrite_SeqPath(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time())
virtual void SET_BREAKPOINT_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command SET_BREAKPOINT.
PlatformIndexType FwIndexType
void directive_constCmd_internalInterfaceInvoke(const Svc::FpySequencer_ConstCmdDirective &directive)
Internal interface base-class function for directive_constCmd.
virtual void VALIDATE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command VALIDATE.
static constexpr FwIndexType getNum_checkTimers_InputPorts()
bool isConnected_pingOut_OutputPort(FwIndexType portNum) const
A fatal non-recoverable event.
void log_WARNING_HI_MismatchedTimeContext(I32 internalTimeContext, I32 otherTimeContext) const
Log event MismatchedTimeContext.
void directive_return_internalInterfaceInvoke(const Svc::FpySequencer_ReturnDirective &directive)
Internal interface base-class function for directive_return.
bool isConnected_cmdOut_OutputPort(FwIndexType portNum) const
Svc::InputSchedPort * get_tlmWrite_InputPort(FwIndexType portNum)
void seqRunIn_handlerBase(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args)
Handler base-class function for input port seqRunIn.
void log_WARNING_HI_WrongSchemaVersion(U8 expected, U8 actual) const
Log event WrongSchemaVersion.
void addCallPort(InputLogPort *callPort)
Register an input port.
Definition: LogPortAc.cpp:186
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_LO_LogWarningLo(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogWarningLo.
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 log_WARNING_HI_InvalidSeqCancelCall(I32 state) const
Log event InvalidSeqCancelCall.
stores a value to a local variable at a runtime-determined offset relative to the current stack frame...
void init()
Initialization function.
Definition: PingPortAc.cpp:73
virtual void directive_return_internalInterfaceHandler(const Svc::FpySequencer_ReturnDirective &directive)=0
Internal interface handler for directive_return.
virtual void BREAK_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command BREAK.
void tlmWrite_DirectiveErrorIndex(U64 arg, Fw::Time _tlmTime=Fw::Time())
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Command failed validation.
RateGroupDivider component implementation.
void log_WARNING_HI_CmdResponseWhileNotAwaiting(FwOpcodeType opcode, Fw::CmdResponse response) const
Log event CmdResponseWhileNotAwaiting.
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.
Enum representing parameter validity.
virtual void directive_popEvent_internalInterfaceHandler(const Svc::FpySequencer_PopEventDirective &directive)=0
Internal interface handler for directive_popEvent.
U8 BYTE
byte type
Definition: BasicTypes.h:56
void log_FATAL_LogFatal(const Fw::StringBase &filePath, const Fw::StringBase &message) const
Log event LogFatal.
void log_WARNING_HI_TooManySequenceArgs(U8 count, U8 max) const
Log event TooManySequenceArgs.
void sequencer_sendSignal_cmd_CONTINUE()
Send signal cmd_CONTINUE to state machine sequencer.
void directive_storeAbs_internalInterfaceInvoke(const Svc::FpySequencer_StoreAbsDirective &directive)
Internal interface base-class function for directive_storeAbs.
void DUMP_STACK_TO_FILE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void log_WARNING_HI_MismatchedTimeBase(I32 internalTimeBase, I32 otherTimeBase) const
Log event MismatchedTimeBase.
void invoke(FwPrmIdType id, Fw::ParamBuffer &val) const
Invoke a port connection.
void sequencer_sendSignal_result_failure()
Send signal result_failure to state machine sequencer.
bool isConnected_seqStartOut_OutputPort(FwIndexType portNum) const
virtual void CONTINUE_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CONTINUE.
void log_WARNING_HI_ArgSizeMismatch(Svc::Fpy::StackSizeType expected, FwSizeType actual, const Fw::StringBase &filePath) const
Log event ArgSizeMismatch.
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:168
void seqStartOut_out(FwIndexType portNum, const Fw::StringBase &filename, const Svc::SeqArgs &args) const
Invoke output port seqStartOut.
void sequencer_sendSignal_entered()
Send signal entered to state machine sequencer.
void directive_call_internalInterfaceInvoke(const Svc::FpySequencer_CallDirective &directive)
Internal interface base-class function for directive_call.
void directive_exit_internalInterfaceInvoke(const Svc::FpySequencer_ExitDirective &directive)
Internal interface base-class function for directive_exit.
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
Definition: PingPortAc.cpp:79
void directive_storeAbsConstOffset_internalInterfaceInvoke(const Svc::FpySequencer_StoreAbsConstOffsetDirective &directive)
Internal interface base-class function for directive_storeAbsConstOffset.
FpySequencerComponentBase::SmId getId() const
Get the state machine id.
pushes the current Fw.Time struct to the stack
void log_ACTIVITY_HI_SequenceDone(const Fw::StringBase &filePath) const
Log event SequenceDone.
void directive_goto_internalInterfaceInvoke(const Svc::FpySequencer_GotoDirective &directive)
Internal interface base-class function for directive_goto.
static constexpr FwIndexType getNum_seqDoneOut_OutputPorts()
void directive_waitRel_internalInterfaceInvoke(const Svc::FpySequencer_WaitRelDirective &directive)
Internal interface base-class function for directive_waitRel.
virtual void directive_pushTlmValAndTime_internalInterfaceHandler(const Svc::FpySequencer_PushTlmValAndTimeDirective &directive)=0
Internal interface handler for directive_pushTlmValAndTime.
void directive_storeRel_internalInterfaceInvoke(const Svc::FpySequencer_StoreRelDirective &directive)
Internal interface base-class function for directive_storeRel.
Message will return with status when space is unavailable.
Definition: Queue.hpp:48
virtual void directive_pushTlmVal_internalInterfaceHandler(const Svc::FpySequencer_PushTlmValDirective &directive)=0
Internal interface handler for directive_pushTlmVal.
Implementation of malloc based allocator.
void SET_BREAKPOINT_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void directive_loadRel_internalInterfaceInvoke(const Svc::FpySequencer_LoadRelDirective &directive)
Internal interface base-class function for directive_loadRel.
Auto-generated base for FpySequencer component.
static constexpr FwIndexType getNum_logOut_OutputPorts()
void sequencer_sendSignal_cmd_RUN(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_RUN to state machine sequencer.
void log_WARNING_HI_FileWriteError(FwSizeType writeSize, const Fw::StringBase &filePath, I32 errorCode) const
Log event FileWriteError.
virtual void directive_storeAbsConstOffset_internalInterfaceHandler(const Svc::FpySequencer_StoreAbsConstOffsetDirective &directive)=0
Internal interface handler for directive_storeAbsConstOffset.
static constexpr SizeType BUFFER_SIZE(SizeType maxLength)
Get the size of a null-terminated string buffer.
void init()
Initialization function.
void checkTimers_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port checkTimers.
void init()
Initialization function.
static constexpr FwIndexType getNum_prmGet_OutputPorts()
static constexpr FwIndexType getNum_seqCancelIn_InputPorts()
virtual void CANCEL_preMsgHook(FwOpcodeType opCode, U32 cmdSeq)
Pre-message hook for command CANCEL.
void tlmWrite_BreakOnlyOnceOnBreakpoint(bool arg, Fw::Time _tlmTime=Fw::Time())
virtual 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.
FpySequencer_SequencerStateMachineStateMachineBase::Signal Signal
Fw::TlmValid getTlmChan_out(FwIndexType portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val) const
Invoke output port getTlmChan.
void tlmWrite_SequencesCancelled(U64 arg, Fw::Time _tlmTime=Fw::Time())
virtual void directive_loadAbs_internalInterfaceHandler(const Svc::FpySequencer_LoadAbsDirective &directive)=0
Internal interface handler for directive_loadAbs.
#define FW_ASSERT(...)
Definition: Assert.hpp:14
void tlmWrite_BreakpointInUse(bool arg, Fw::Time _tlmTime=Fw::Time())
static constexpr FwSizeType CAPACITY
Definition: SchedPortAc.hpp:34
bool isConnected_seqDoneOut_OutputPort(FwIndexType portNum) const
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
void tlmWrite(FwChanIdType id, Fw::TlmBuffer &_tlmBuff, Fw::Time _tlmTime=Fw::Time()) const
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())