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  {
7876  // Get the time
7877  Fw::Time _logTime;
7878  if (this->isConnected_timeCaller_OutputPort(0)) {
7879  this->timeCaller_out(0, _logTime);
7880  }
7881 
7882  const FwEventIdType _id = this->getIdBase() + EVENTID_SEQUENCEPAUSED;
7883 
7884  // Emit the event on the log port
7885  if (this->isConnected_logOut_OutputPort(0)) {
7886  Fw::LogBuffer _logBuff;
7888 
7889 #if FW_AMPCS_COMPATIBLE
7890  // Serialize the number of arguments
7891  _status = _logBuff.serializeFrom(static_cast<U8>(1));
7892  FW_ASSERT(
7893  _status == Fw::FW_SERIALIZE_OK,
7894  static_cast<FwAssertArgType>(_status)
7895  );
7896 #endif
7897 
7898 #if FW_AMPCS_COMPATIBLE
7899  // Serialize the argument size
7900  _status = _logBuff.serializeFrom(
7901  static_cast<U8>(sizeof(U32))
7902  );
7903  FW_ASSERT(
7904  _status == Fw::FW_SERIALIZE_OK,
7905  static_cast<FwAssertArgType>(_status)
7906  );
7907 #endif
7908  _status = _logBuff.serializeFrom(stmtIdx);
7909  FW_ASSERT(
7910  _status == Fw::FW_SERIALIZE_OK,
7911  static_cast<FwAssertArgType>(_status)
7912  );
7913 
7914  this->logOut_out(
7915  0,
7916  _id,
7917  _logTime,
7919  _logBuff
7920  );
7921  }
7922 
7923  // Emit the event on the text log port
7924 #if FW_ENABLE_TEXT_LOGGING
7925  if (this->isConnected_logTextOut_OutputPort(0)) {
7926 #if FW_OBJECT_NAMES == 1
7927  const char* _formatString =
7928  "(%s) %s: Sequence paused before dispatching directive index %" PRIu32 "";
7929 #else
7930  const char* _formatString =
7931  "%s: Sequence paused before dispatching directive index %" PRIu32 "";
7932 #endif
7933 
7934  Fw::TextLogString _logString;
7935  _logString.format(
7936  _formatString,
7937 #if FW_OBJECT_NAMES == 1
7938  this->m_objName.toChar(),
7939 #endif
7940  "SequencePaused ",
7941  stmtIdx
7942  );
7943 
7944  this->logTextOut_out(
7945  0,
7946  _id,
7947  _logTime,
7949  _logString
7950  );
7951  }
7952 #endif
7953  }
7954 
7957  U32 breakpointIdx,
7958  bool breakOnce
7959  ) const
7960  {
7961  // Get the time
7962  Fw::Time _logTime;
7963  if (this->isConnected_timeCaller_OutputPort(0)) {
7964  this->timeCaller_out(0, _logTime);
7965  }
7966 
7967  const FwEventIdType _id = this->getIdBase() + EVENTID_BREAKPOINTSET;
7968 
7969  // Emit the event on the log port
7970  if (this->isConnected_logOut_OutputPort(0)) {
7971  Fw::LogBuffer _logBuff;
7973 
7974 #if FW_AMPCS_COMPATIBLE
7975  // Serialize the number of arguments
7976  _status = _logBuff.serializeFrom(static_cast<U8>(2));
7977  FW_ASSERT(
7978  _status == Fw::FW_SERIALIZE_OK,
7979  static_cast<FwAssertArgType>(_status)
7980  );
7981 #endif
7982 
7983 #if FW_AMPCS_COMPATIBLE
7984  // Serialize the argument size
7985  _status = _logBuff.serializeFrom(
7986  static_cast<U8>(sizeof(U32))
7987  );
7988  FW_ASSERT(
7989  _status == Fw::FW_SERIALIZE_OK,
7990  static_cast<FwAssertArgType>(_status)
7991  );
7992 #endif
7993  _status = _logBuff.serializeFrom(breakpointIdx);
7994  FW_ASSERT(
7995  _status == Fw::FW_SERIALIZE_OK,
7996  static_cast<FwAssertArgType>(_status)
7997  );
7998 
7999 #if FW_AMPCS_COMPATIBLE
8000  // Serialize the argument size
8001  _status = _logBuff.serializeFrom(
8002  static_cast<U8>(sizeof(U8))
8003  );
8004  FW_ASSERT(
8005  _status == Fw::FW_SERIALIZE_OK,
8006  static_cast<FwAssertArgType>(_status)
8007  );
8008 #endif
8009  _status = _logBuff.serializeFrom(breakOnce);
8010  FW_ASSERT(
8011  _status == Fw::FW_SERIALIZE_OK,
8012  static_cast<FwAssertArgType>(_status)
8013  );
8014 
8015  this->logOut_out(
8016  0,
8017  _id,
8018  _logTime,
8020  _logBuff
8021  );
8022  }
8023 
8024  // Emit the event on the text log port
8025 #if FW_ENABLE_TEXT_LOGGING
8026  if (this->isConnected_logTextOut_OutputPort(0)) {
8027 #if FW_OBJECT_NAMES == 1
8028  const char* _formatString =
8029  "(%s) %s: Breakpoint set before directive index %" PRIu32 ". Will break once: %d";
8030 #else
8031  const char* _formatString =
8032  "%s: Breakpoint set before directive index %" PRIu32 ". Will break once: %d";
8033 #endif
8034 
8035  Fw::TextLogString _logString;
8036  _logString.format(
8037  _formatString,
8038 #if FW_OBJECT_NAMES == 1
8039  this->m_objName.toChar(),
8040 #endif
8041  "BreakpointSet ",
8042  breakpointIdx,
8043  breakOnce
8044  );
8045 
8046  this->logTextOut_out(
8047  0,
8048  _id,
8049  _logTime,
8051  _logString
8052  );
8053  }
8054 #endif
8055  }
8056 
8059  {
8060  // Get the time
8061  Fw::Time _logTime;
8062  if (this->isConnected_timeCaller_OutputPort(0)) {
8063  this->timeCaller_out(0, _logTime);
8064  }
8065 
8066  const FwEventIdType _id = this->getIdBase() + EVENTID_BREAKPOINTCLEARED;
8067 
8068  // Emit the event on the log port
8069  if (this->isConnected_logOut_OutputPort(0)) {
8070  Fw::LogBuffer _logBuff;
8071 
8072 #if FW_AMPCS_COMPATIBLE
8074  // Serialize the number of arguments
8075  _status = _logBuff.serializeFrom(static_cast<U8>(0));
8076  FW_ASSERT(
8077  _status == Fw::FW_SERIALIZE_OK,
8078  static_cast<FwAssertArgType>(_status)
8079  );
8080 #endif
8081 
8082  this->logOut_out(
8083  0,
8084  _id,
8085  _logTime,
8087  _logBuff
8088  );
8089  }
8090 
8091  // Emit the event on the text log port
8092 #if FW_ENABLE_TEXT_LOGGING
8093  if (this->isConnected_logTextOut_OutputPort(0)) {
8094 #if FW_OBJECT_NAMES == 1
8095  const char* _formatString =
8096  "(%s) %s: Breakpoint cleared";
8097 #else
8098  const char* _formatString =
8099  "%s: Breakpoint cleared";
8100 #endif
8101 
8102  Fw::TextLogString _logString;
8103  _logString.format(
8104  _formatString,
8105 #if FW_OBJECT_NAMES == 1
8106  this->m_objName.toChar(),
8107 #endif
8108  "BreakpointCleared "
8109  );
8110 
8111  this->logTextOut_out(
8112  0,
8113  _id,
8114  _logTime,
8116  _logString
8117  );
8118  }
8119 #endif
8120  }
8121 
8124  const Fw::StringBase& filePath,
8125  const Fw::StringBase& message
8126  ) const
8127  {
8128  // Get the time
8129  Fw::Time _logTime;
8130  if (this->isConnected_timeCaller_OutputPort(0)) {
8131  this->timeCaller_out(0, _logTime);
8132  }
8133 
8134  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGFATAL;
8135 
8136  // Emit the event on the log port
8137  if (this->isConnected_logOut_OutputPort(0)) {
8138  Fw::LogBuffer _logBuff;
8140 
8141 #if FW_AMPCS_COMPATIBLE
8142  // Serialize the number of arguments
8143  _status = _logBuff.serializeFrom(static_cast<U8>(2 + 1));
8144  FW_ASSERT(
8145  _status == Fw::FW_SERIALIZE_OK,
8146  static_cast<FwAssertArgType>(_status)
8147  );
8148 
8149  // For FATAL, add stack size of 4 and a dummy entry. No support for stacks yet.
8150  _status = _logBuff.serializeFrom(static_cast<U8>(4));
8151  FW_ASSERT(
8152  _status == Fw::FW_SERIALIZE_OK,
8153  static_cast<FwAssertArgType>(_status)
8154  );
8155 
8156  _status = _logBuff.serializeFrom(static_cast<U32>(0));
8157  FW_ASSERT(
8158  _status == Fw::FW_SERIALIZE_OK,
8159  static_cast<FwAssertArgType>(_status)
8160  );
8161 #endif
8162 
8163  _status = filePath.serializeTo(
8164  _logBuff,
8165  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8166  );
8167  FW_ASSERT(
8168  _status == Fw::FW_SERIALIZE_OK,
8169  static_cast<FwAssertArgType>(_status)
8170  );
8171 
8172  _status = message.serializeTo(
8173  _logBuff,
8174  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8175  );
8176  FW_ASSERT(
8177  _status == Fw::FW_SERIALIZE_OK,
8178  static_cast<FwAssertArgType>(_status)
8179  );
8180 
8181  this->logOut_out(
8182  0,
8183  _id,
8184  _logTime,
8186  _logBuff
8187  );
8188  }
8189 
8190  // Emit the event on the text log port
8191 #if FW_ENABLE_TEXT_LOGGING
8192  if (this->isConnected_logTextOut_OutputPort(0)) {
8193 #if FW_OBJECT_NAMES == 1
8194  const char* _formatString =
8195  "(%s) %s: Sequence %s: %s";
8196 #else
8197  const char* _formatString =
8198  "%s: Sequence %s: %s";
8199 #endif
8200 
8201  Fw::TextLogString _logString;
8202  _logString.format(
8203  _formatString,
8204 #if FW_OBJECT_NAMES == 1
8205  this->m_objName.toChar(),
8206 #endif
8207  "LogFatal ",
8208  filePath.toChar(),
8209  message.toChar()
8210  );
8211 
8212  this->logTextOut_out(
8213  0,
8214  _id,
8215  _logTime,
8217  _logString
8218  );
8219  }
8220 #endif
8221  }
8222 
8225  const Fw::StringBase& filePath,
8226  const Fw::StringBase& message
8227  ) const
8228  {
8229  // Get the time
8230  Fw::Time _logTime;
8231  if (this->isConnected_timeCaller_OutputPort(0)) {
8232  this->timeCaller_out(0, _logTime);
8233  }
8234 
8235  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGWARNINGHI;
8236 
8237  // Emit the event on the log port
8238  if (this->isConnected_logOut_OutputPort(0)) {
8239  Fw::LogBuffer _logBuff;
8241 
8242 #if FW_AMPCS_COMPATIBLE
8243  // Serialize the number of arguments
8244  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8245  FW_ASSERT(
8246  _status == Fw::FW_SERIALIZE_OK,
8247  static_cast<FwAssertArgType>(_status)
8248  );
8249 #endif
8250 
8251  _status = filePath.serializeTo(
8252  _logBuff,
8253  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8254  );
8255  FW_ASSERT(
8256  _status == Fw::FW_SERIALIZE_OK,
8257  static_cast<FwAssertArgType>(_status)
8258  );
8259 
8260  _status = message.serializeTo(
8261  _logBuff,
8262  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8263  );
8264  FW_ASSERT(
8265  _status == Fw::FW_SERIALIZE_OK,
8266  static_cast<FwAssertArgType>(_status)
8267  );
8268 
8269  this->logOut_out(
8270  0,
8271  _id,
8272  _logTime,
8274  _logBuff
8275  );
8276  }
8277 
8278  // Emit the event on the text log port
8279 #if FW_ENABLE_TEXT_LOGGING
8280  if (this->isConnected_logTextOut_OutputPort(0)) {
8281 #if FW_OBJECT_NAMES == 1
8282  const char* _formatString =
8283  "(%s) %s: Sequence %s: %s";
8284 #else
8285  const char* _formatString =
8286  "%s: Sequence %s: %s";
8287 #endif
8288 
8289  Fw::TextLogString _logString;
8290  _logString.format(
8291  _formatString,
8292 #if FW_OBJECT_NAMES == 1
8293  this->m_objName.toChar(),
8294 #endif
8295  "LogWarningHi ",
8296  filePath.toChar(),
8297  message.toChar()
8298  );
8299 
8300  this->logTextOut_out(
8301  0,
8302  _id,
8303  _logTime,
8305  _logString
8306  );
8307  }
8308 #endif
8309  }
8310 
8313  const Fw::StringBase& filePath,
8314  const Fw::StringBase& message
8315  ) const
8316  {
8317  // Get the time
8318  Fw::Time _logTime;
8319  if (this->isConnected_timeCaller_OutputPort(0)) {
8320  this->timeCaller_out(0, _logTime);
8321  }
8322 
8323  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGWARNINGLO;
8324 
8325  // Emit the event on the log port
8326  if (this->isConnected_logOut_OutputPort(0)) {
8327  Fw::LogBuffer _logBuff;
8329 
8330 #if FW_AMPCS_COMPATIBLE
8331  // Serialize the number of arguments
8332  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8333  FW_ASSERT(
8334  _status == Fw::FW_SERIALIZE_OK,
8335  static_cast<FwAssertArgType>(_status)
8336  );
8337 #endif
8338 
8339  _status = filePath.serializeTo(
8340  _logBuff,
8341  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8342  );
8343  FW_ASSERT(
8344  _status == Fw::FW_SERIALIZE_OK,
8345  static_cast<FwAssertArgType>(_status)
8346  );
8347 
8348  _status = message.serializeTo(
8349  _logBuff,
8350  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8351  );
8352  FW_ASSERT(
8353  _status == Fw::FW_SERIALIZE_OK,
8354  static_cast<FwAssertArgType>(_status)
8355  );
8356 
8357  this->logOut_out(
8358  0,
8359  _id,
8360  _logTime,
8362  _logBuff
8363  );
8364  }
8365 
8366  // Emit the event on the text log port
8367 #if FW_ENABLE_TEXT_LOGGING
8368  if (this->isConnected_logTextOut_OutputPort(0)) {
8369 #if FW_OBJECT_NAMES == 1
8370  const char* _formatString =
8371  "(%s) %s: Sequence %s: %s";
8372 #else
8373  const char* _formatString =
8374  "%s: Sequence %s: %s";
8375 #endif
8376 
8377  Fw::TextLogString _logString;
8378  _logString.format(
8379  _formatString,
8380 #if FW_OBJECT_NAMES == 1
8381  this->m_objName.toChar(),
8382 #endif
8383  "LogWarningLo ",
8384  filePath.toChar(),
8385  message.toChar()
8386  );
8387 
8388  this->logTextOut_out(
8389  0,
8390  _id,
8391  _logTime,
8393  _logString
8394  );
8395  }
8396 #endif
8397  }
8398 
8401  const Fw::StringBase& filePath,
8402  const Fw::StringBase& message
8403  ) const
8404  {
8405  // Get the time
8406  Fw::Time _logTime;
8407  if (this->isConnected_timeCaller_OutputPort(0)) {
8408  this->timeCaller_out(0, _logTime);
8409  }
8410 
8411  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGCOMMAND;
8412 
8413  // Emit the event on the log port
8414  if (this->isConnected_logOut_OutputPort(0)) {
8415  Fw::LogBuffer _logBuff;
8417 
8418 #if FW_AMPCS_COMPATIBLE
8419  // Serialize the number of arguments
8420  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8421  FW_ASSERT(
8422  _status == Fw::FW_SERIALIZE_OK,
8423  static_cast<FwAssertArgType>(_status)
8424  );
8425 #endif
8426 
8427  _status = filePath.serializeTo(
8428  _logBuff,
8429  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8430  );
8431  FW_ASSERT(
8432  _status == Fw::FW_SERIALIZE_OK,
8433  static_cast<FwAssertArgType>(_status)
8434  );
8435 
8436  _status = message.serializeTo(
8437  _logBuff,
8438  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8439  );
8440  FW_ASSERT(
8441  _status == Fw::FW_SERIALIZE_OK,
8442  static_cast<FwAssertArgType>(_status)
8443  );
8444 
8445  this->logOut_out(
8446  0,
8447  _id,
8448  _logTime,
8450  _logBuff
8451  );
8452  }
8453 
8454  // Emit the event on the text log port
8455 #if FW_ENABLE_TEXT_LOGGING
8456  if (this->isConnected_logTextOut_OutputPort(0)) {
8457 #if FW_OBJECT_NAMES == 1
8458  const char* _formatString =
8459  "(%s) %s: Sequence %s: %s";
8460 #else
8461  const char* _formatString =
8462  "%s: Sequence %s: %s";
8463 #endif
8464 
8465  Fw::TextLogString _logString;
8466  _logString.format(
8467  _formatString,
8468 #if FW_OBJECT_NAMES == 1
8469  this->m_objName.toChar(),
8470 #endif
8471  "LogCommand ",
8472  filePath.toChar(),
8473  message.toChar()
8474  );
8475 
8476  this->logTextOut_out(
8477  0,
8478  _id,
8479  _logTime,
8481  _logString
8482  );
8483  }
8484 #endif
8485  }
8486 
8489  const Fw::StringBase& filePath,
8490  const Fw::StringBase& message
8491  ) const
8492  {
8493  // Get the time
8494  Fw::Time _logTime;
8495  if (this->isConnected_timeCaller_OutputPort(0)) {
8496  this->timeCaller_out(0, _logTime);
8497  }
8498 
8499  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGACTIVITYHI;
8500 
8501  // Emit the event on the log port
8502  if (this->isConnected_logOut_OutputPort(0)) {
8503  Fw::LogBuffer _logBuff;
8505 
8506 #if FW_AMPCS_COMPATIBLE
8507  // Serialize the number of arguments
8508  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8509  FW_ASSERT(
8510  _status == Fw::FW_SERIALIZE_OK,
8511  static_cast<FwAssertArgType>(_status)
8512  );
8513 #endif
8514 
8515  _status = filePath.serializeTo(
8516  _logBuff,
8517  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8518  );
8519  FW_ASSERT(
8520  _status == Fw::FW_SERIALIZE_OK,
8521  static_cast<FwAssertArgType>(_status)
8522  );
8523 
8524  _status = message.serializeTo(
8525  _logBuff,
8526  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8527  );
8528  FW_ASSERT(
8529  _status == Fw::FW_SERIALIZE_OK,
8530  static_cast<FwAssertArgType>(_status)
8531  );
8532 
8533  this->logOut_out(
8534  0,
8535  _id,
8536  _logTime,
8538  _logBuff
8539  );
8540  }
8541 
8542  // Emit the event on the text log port
8543 #if FW_ENABLE_TEXT_LOGGING
8544  if (this->isConnected_logTextOut_OutputPort(0)) {
8545 #if FW_OBJECT_NAMES == 1
8546  const char* _formatString =
8547  "(%s) %s: Sequence %s: %s";
8548 #else
8549  const char* _formatString =
8550  "%s: Sequence %s: %s";
8551 #endif
8552 
8553  Fw::TextLogString _logString;
8554  _logString.format(
8555  _formatString,
8556 #if FW_OBJECT_NAMES == 1
8557  this->m_objName.toChar(),
8558 #endif
8559  "LogActivityHi ",
8560  filePath.toChar(),
8561  message.toChar()
8562  );
8563 
8564  this->logTextOut_out(
8565  0,
8566  _id,
8567  _logTime,
8569  _logString
8570  );
8571  }
8572 #endif
8573  }
8574 
8577  const Fw::StringBase& filePath,
8578  const Fw::StringBase& message
8579  ) const
8580  {
8581  // Get the time
8582  Fw::Time _logTime;
8583  if (this->isConnected_timeCaller_OutputPort(0)) {
8584  this->timeCaller_out(0, _logTime);
8585  }
8586 
8587  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGACTIVITYLO;
8588 
8589  // Emit the event on the log port
8590  if (this->isConnected_logOut_OutputPort(0)) {
8591  Fw::LogBuffer _logBuff;
8593 
8594 #if FW_AMPCS_COMPATIBLE
8595  // Serialize the number of arguments
8596  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8597  FW_ASSERT(
8598  _status == Fw::FW_SERIALIZE_OK,
8599  static_cast<FwAssertArgType>(_status)
8600  );
8601 #endif
8602 
8603  _status = filePath.serializeTo(
8604  _logBuff,
8605  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8606  );
8607  FW_ASSERT(
8608  _status == Fw::FW_SERIALIZE_OK,
8609  static_cast<FwAssertArgType>(_status)
8610  );
8611 
8612  _status = message.serializeTo(
8613  _logBuff,
8614  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8615  );
8616  FW_ASSERT(
8617  _status == Fw::FW_SERIALIZE_OK,
8618  static_cast<FwAssertArgType>(_status)
8619  );
8620 
8621  this->logOut_out(
8622  0,
8623  _id,
8624  _logTime,
8626  _logBuff
8627  );
8628  }
8629 
8630  // Emit the event on the text log port
8631 #if FW_ENABLE_TEXT_LOGGING
8632  if (this->isConnected_logTextOut_OutputPort(0)) {
8633 #if FW_OBJECT_NAMES == 1
8634  const char* _formatString =
8635  "(%s) %s: Sequence %s: %s";
8636 #else
8637  const char* _formatString =
8638  "%s: Sequence %s: %s";
8639 #endif
8640 
8641  Fw::TextLogString _logString;
8642  _logString.format(
8643  _formatString,
8644 #if FW_OBJECT_NAMES == 1
8645  this->m_objName.toChar(),
8646 #endif
8647  "LogActivityLo ",
8648  filePath.toChar(),
8649  message.toChar()
8650  );
8651 
8652  this->logTextOut_out(
8653  0,
8654  _id,
8655  _logTime,
8657  _logString
8658  );
8659  }
8660 #endif
8661  }
8662 
8665  const Fw::StringBase& filePath,
8666  const Fw::StringBase& message
8667  ) const
8668  {
8669  // Get the time
8670  Fw::Time _logTime;
8671  if (this->isConnected_timeCaller_OutputPort(0)) {
8672  this->timeCaller_out(0, _logTime);
8673  }
8674 
8675  const FwEventIdType _id = this->getIdBase() + EVENTID_LOGDIAGNOSTIC;
8676 
8677  // Emit the event on the log port
8678  if (this->isConnected_logOut_OutputPort(0)) {
8679  Fw::LogBuffer _logBuff;
8681 
8682 #if FW_AMPCS_COMPATIBLE
8683  // Serialize the number of arguments
8684  _status = _logBuff.serializeFrom(static_cast<U8>(2));
8685  FW_ASSERT(
8686  _status == Fw::FW_SERIALIZE_OK,
8687  static_cast<FwAssertArgType>(_status)
8688  );
8689 #endif
8690 
8691  _status = filePath.serializeTo(
8692  _logBuff,
8693  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8694  );
8695  FW_ASSERT(
8696  _status == Fw::FW_SERIALIZE_OK,
8697  static_cast<FwAssertArgType>(_status)
8698  );
8699 
8700  _status = message.serializeTo(
8701  _logBuff,
8702  FW_MIN(static_cast<FwSizeType>(FW_LOG_STRING_MAX_SIZE), static_cast<FwSizeType>(FW_FIXED_LENGTH_STRING_SIZE))
8703  );
8704  FW_ASSERT(
8705  _status == Fw::FW_SERIALIZE_OK,
8706  static_cast<FwAssertArgType>(_status)
8707  );
8708 
8709  this->logOut_out(
8710  0,
8711  _id,
8712  _logTime,
8714  _logBuff
8715  );
8716  }
8717 
8718  // Emit the event on the text log port
8719 #if FW_ENABLE_TEXT_LOGGING
8720  if (this->isConnected_logTextOut_OutputPort(0)) {
8721 #if FW_OBJECT_NAMES == 1
8722  const char* _formatString =
8723  "(%s) %s: Sequence %s: %s";
8724 #else
8725  const char* _formatString =
8726  "%s: Sequence %s: %s";
8727 #endif
8728 
8729  Fw::TextLogString _logString;
8730  _logString.format(
8731  _formatString,
8732 #if FW_OBJECT_NAMES == 1
8733  this->m_objName.toChar(),
8734 #endif
8735  "LogDiagnostic ",
8736  filePath.toChar(),
8737  message.toChar()
8738  );
8739 
8740  this->logTextOut_out(
8741  0,
8742  _id,
8743  _logTime,
8745  _logString
8746  );
8747  }
8748 #endif
8749  }
8750 
8751  // ----------------------------------------------------------------------
8752  // Telemetry serialized write
8753  // ----------------------------------------------------------------------
8754 
8757  FwChanIdType id,
8758  Fw::TlmBuffer& _tlmBuff,
8759  Fw::Time _tlmTime
8760  ) const
8761  {
8762  if (this->isConnected_tlmOut_OutputPort(0)) {
8763  if (
8765  (_tlmTime == Fw::ZERO_TIME)
8766  ) {
8767  this->timeCaller_out(0, _tlmTime);
8768  }
8769 
8770  FwChanIdType _id;
8771  _id = this->getIdBase() + id;
8772 
8773  this->tlmOut_out(
8774  0,
8775  _id,
8776  _tlmTime,
8777  _tlmBuff
8778  );
8779  }
8780  }
8781 
8782  // ----------------------------------------------------------------------
8783  // Telemetry write functions
8784  // ----------------------------------------------------------------------
8785 
8788  FwEnumStoreType arg,
8789  Fw::Time _tlmTime
8790  )
8791  {
8792  // Check to see if it is the first time
8793  if (not this->m_first_update_State) {
8794  // Check to see if value has changed. If not, don't write it.
8795  if (arg == this->m_last_State) {
8796  return;
8797  }
8798  else {
8799  this->m_last_State = arg;
8800  }
8801  }
8802  else {
8803  this->m_first_update_State = false;
8804  this->m_last_State = arg;
8805  }
8806 
8807  if (this->isConnected_tlmOut_OutputPort(0)) {
8808  Fw::TlmBuffer _tlmBuff;
8809  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8810  FW_ASSERT(
8811  _stat == Fw::FW_SERIALIZE_OK,
8812  static_cast<FwAssertArgType>(_stat)
8813  );
8814 
8815  this->tlmWrite(
8817  _tlmBuff,
8818  _tlmTime
8819  );
8820  }
8821  }
8822 
8825  U64 arg,
8826  Fw::Time _tlmTime
8827  )
8828  {
8829  // Check to see if it is the first time
8830  if (not this->m_first_update_SequencesSucceeded) {
8831  // Check to see if value has changed. If not, don't write it.
8832  if (arg == this->m_last_SequencesSucceeded) {
8833  return;
8834  }
8835  else {
8836  this->m_last_SequencesSucceeded = arg;
8837  }
8838  }
8839  else {
8840  this->m_first_update_SequencesSucceeded = false;
8841  this->m_last_SequencesSucceeded = arg;
8842  }
8843 
8844  if (this->isConnected_tlmOut_OutputPort(0)) {
8845  Fw::TlmBuffer _tlmBuff;
8846  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8847  FW_ASSERT(
8848  _stat == Fw::FW_SERIALIZE_OK,
8849  static_cast<FwAssertArgType>(_stat)
8850  );
8851 
8852  this->tlmWrite(
8854  _tlmBuff,
8855  _tlmTime
8856  );
8857  }
8858  }
8859 
8862  U64 arg,
8863  Fw::Time _tlmTime
8864  )
8865  {
8866  // Check to see if it is the first time
8867  if (not this->m_first_update_SequencesFailed) {
8868  // Check to see if value has changed. If not, don't write it.
8869  if (arg == this->m_last_SequencesFailed) {
8870  return;
8871  }
8872  else {
8873  this->m_last_SequencesFailed = arg;
8874  }
8875  }
8876  else {
8877  this->m_first_update_SequencesFailed = false;
8878  this->m_last_SequencesFailed = arg;
8879  }
8880 
8881  if (this->isConnected_tlmOut_OutputPort(0)) {
8882  Fw::TlmBuffer _tlmBuff;
8883  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8884  FW_ASSERT(
8885  _stat == Fw::FW_SERIALIZE_OK,
8886  static_cast<FwAssertArgType>(_stat)
8887  );
8888 
8889  this->tlmWrite(
8891  _tlmBuff,
8892  _tlmTime
8893  );
8894  }
8895  }
8896 
8899  U64 arg,
8900  Fw::Time _tlmTime
8901  )
8902  {
8903  // Check to see if it is the first time
8904  if (not this->m_first_update_SequencesCancelled) {
8905  // Check to see if value has changed. If not, don't write it.
8906  if (arg == this->m_last_SequencesCancelled) {
8907  return;
8908  }
8909  else {
8910  this->m_last_SequencesCancelled = arg;
8911  }
8912  }
8913  else {
8914  this->m_first_update_SequencesCancelled = false;
8915  this->m_last_SequencesCancelled = arg;
8916  }
8917 
8918  if (this->isConnected_tlmOut_OutputPort(0)) {
8919  Fw::TlmBuffer _tlmBuff;
8920  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8921  FW_ASSERT(
8922  _stat == Fw::FW_SERIALIZE_OK,
8923  static_cast<FwAssertArgType>(_stat)
8924  );
8925 
8926  this->tlmWrite(
8928  _tlmBuff,
8929  _tlmTime
8930  );
8931  }
8932  }
8933 
8936  U64 arg,
8937  Fw::Time _tlmTime
8938  )
8939  {
8940  // Check to see if it is the first time
8941  if (not this->m_first_update_StatementsDispatched) {
8942  // Check to see if value has changed. If not, don't write it.
8943  if (arg == this->m_last_StatementsDispatched) {
8944  return;
8945  }
8946  else {
8947  this->m_last_StatementsDispatched = arg;
8948  }
8949  }
8950  else {
8951  this->m_first_update_StatementsDispatched = false;
8952  this->m_last_StatementsDispatched = arg;
8953  }
8954 
8955  if (this->isConnected_tlmOut_OutputPort(0)) {
8956  Fw::TlmBuffer _tlmBuff;
8957  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8958  FW_ASSERT(
8959  _stat == Fw::FW_SERIALIZE_OK,
8960  static_cast<FwAssertArgType>(_stat)
8961  );
8962 
8963  this->tlmWrite(
8965  _tlmBuff,
8966  _tlmTime
8967  );
8968  }
8969  }
8970 
8973  U64 arg,
8974  Fw::Time _tlmTime
8975  )
8976  {
8977  // Check to see if it is the first time
8978  if (not this->m_first_update_StatementsFailed) {
8979  // Check to see if value has changed. If not, don't write it.
8980  if (arg == this->m_last_StatementsFailed) {
8981  return;
8982  }
8983  else {
8984  this->m_last_StatementsFailed = arg;
8985  }
8986  }
8987  else {
8988  this->m_first_update_StatementsFailed = false;
8989  this->m_last_StatementsFailed = arg;
8990  }
8991 
8992  if (this->isConnected_tlmOut_OutputPort(0)) {
8993  Fw::TlmBuffer _tlmBuff;
8994  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
8995  FW_ASSERT(
8996  _stat == Fw::FW_SERIALIZE_OK,
8997  static_cast<FwAssertArgType>(_stat)
8998  );
8999 
9000  this->tlmWrite(
9002  _tlmBuff,
9003  _tlmTime
9004  );
9005  }
9006  }
9007 
9010  const Svc::Fpy::DirectiveErrorCode& arg,
9011  Fw::Time _tlmTime
9012  )
9013  {
9014  // Check to see if it is the first time
9015  if (not this->m_first_update_LastDirectiveError) {
9016  // Check to see if value has changed. If not, don't write it.
9017  if (arg == this->m_last_LastDirectiveError) {
9018  return;
9019  }
9020  else {
9021  this->m_last_LastDirectiveError = arg;
9022  }
9023  }
9024  else {
9025  this->m_first_update_LastDirectiveError = false;
9026  this->m_last_LastDirectiveError = arg;
9027  }
9028 
9029  if (this->isConnected_tlmOut_OutputPort(0)) {
9030  Fw::TlmBuffer _tlmBuff;
9031  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9032  FW_ASSERT(
9033  _stat == Fw::FW_SERIALIZE_OK,
9034  static_cast<FwAssertArgType>(_stat)
9035  );
9036 
9037  this->tlmWrite(
9039  _tlmBuff,
9040  _tlmTime
9041  );
9042  }
9043  }
9044 
9047  U64 arg,
9048  Fw::Time _tlmTime
9049  )
9050  {
9051  // Check to see if it is the first time
9052  if (not this->m_first_update_DirectiveErrorIndex) {
9053  // Check to see if value has changed. If not, don't write it.
9054  if (arg == this->m_last_DirectiveErrorIndex) {
9055  return;
9056  }
9057  else {
9058  this->m_last_DirectiveErrorIndex = arg;
9059  }
9060  }
9061  else {
9062  this->m_first_update_DirectiveErrorIndex = false;
9063  this->m_last_DirectiveErrorIndex = arg;
9064  }
9065 
9066  if (this->isConnected_tlmOut_OutputPort(0)) {
9067  Fw::TlmBuffer _tlmBuff;
9068  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9069  FW_ASSERT(
9070  _stat == Fw::FW_SERIALIZE_OK,
9071  static_cast<FwAssertArgType>(_stat)
9072  );
9073 
9074  this->tlmWrite(
9076  _tlmBuff,
9077  _tlmTime
9078  );
9079  }
9080  }
9081 
9084  const Svc::Fpy::DirectiveId& arg,
9085  Fw::Time _tlmTime
9086  )
9087  {
9088  // Check to see if it is the first time
9089  if (not this->m_first_update_DirectiveErrorId) {
9090  // Check to see if value has changed. If not, don't write it.
9091  if (arg == this->m_last_DirectiveErrorId) {
9092  return;
9093  }
9094  else {
9095  this->m_last_DirectiveErrorId = arg;
9096  }
9097  }
9098  else {
9099  this->m_first_update_DirectiveErrorId = false;
9100  this->m_last_DirectiveErrorId = arg;
9101  }
9102 
9103  if (this->isConnected_tlmOut_OutputPort(0)) {
9104  Fw::TlmBuffer _tlmBuff;
9105  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9106  FW_ASSERT(
9107  _stat == Fw::FW_SERIALIZE_OK,
9108  static_cast<FwAssertArgType>(_stat)
9109  );
9110 
9111  this->tlmWrite(
9113  _tlmBuff,
9114  _tlmTime
9115  );
9116  }
9117  }
9118 
9121  const Fw::StringBase& arg,
9122  Fw::Time _tlmTime
9123  )
9124  {
9125  // Check to see if it is the first time
9126  if (not this->m_first_update_SeqPath) {
9127  // Check to see if value has changed. If not, don't write it.
9128  if (arg == this->m_last_SeqPath) {
9129  return;
9130  }
9131  else {
9132  this->m_last_SeqPath = arg;
9133  }
9134  }
9135  else {
9136  this->m_first_update_SeqPath = false;
9137  this->m_last_SeqPath = arg;
9138  }
9139 
9140  if (this->isConnected_tlmOut_OutputPort(0)) {
9141  Fw::TlmBuffer _tlmBuff;
9142  Fw::SerializeStatus _stat = arg.serializeTo(
9143  _tlmBuff,
9144  FW_MIN(static_cast<FwSizeType>(FW_TLM_STRING_MAX_SIZE), 240)
9145  );
9146  FW_ASSERT(
9147  _stat == Fw::FW_SERIALIZE_OK,
9148  static_cast<FwAssertArgType>(_stat)
9149  );
9150 
9151  this->tlmWrite(
9153  _tlmBuff,
9154  _tlmTime
9155  );
9156  }
9157  }
9158 
9161  bool arg,
9162  Fw::Time _tlmTime
9163  )
9164  {
9165  // Check to see if it is the first time
9166  if (not this->m_first_update_Debug_ReachedEndOfFile) {
9167  // Check to see if value has changed. If not, don't write it.
9168  if (arg == this->m_last_Debug_ReachedEndOfFile) {
9169  return;
9170  }
9171  else {
9172  this->m_last_Debug_ReachedEndOfFile = arg;
9173  }
9174  }
9175  else {
9176  this->m_first_update_Debug_ReachedEndOfFile = false;
9177  this->m_last_Debug_ReachedEndOfFile = arg;
9178  }
9179 
9180  if (this->isConnected_tlmOut_OutputPort(0)) {
9181  Fw::TlmBuffer _tlmBuff;
9182  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9183  FW_ASSERT(
9184  _stat == Fw::FW_SERIALIZE_OK,
9185  static_cast<FwAssertArgType>(_stat)
9186  );
9187 
9188  this->tlmWrite(
9190  _tlmBuff,
9191  _tlmTime
9192  );
9193  }
9194  }
9195 
9198  bool arg,
9199  Fw::Time _tlmTime
9200  )
9201  {
9202  // Check to see if it is the first time
9203  if (not this->m_first_update_Debug_NextStatementReadSuccess) {
9204  // Check to see if value has changed. If not, don't write it.
9205  if (arg == this->m_last_Debug_NextStatementReadSuccess) {
9206  return;
9207  }
9208  else {
9209  this->m_last_Debug_NextStatementReadSuccess = arg;
9210  }
9211  }
9212  else {
9213  this->m_first_update_Debug_NextStatementReadSuccess = false;
9214  this->m_last_Debug_NextStatementReadSuccess = arg;
9215  }
9216 
9217  if (this->isConnected_tlmOut_OutputPort(0)) {
9218  Fw::TlmBuffer _tlmBuff;
9219  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9220  FW_ASSERT(
9221  _stat == Fw::FW_SERIALIZE_OK,
9222  static_cast<FwAssertArgType>(_stat)
9223  );
9224 
9225  this->tlmWrite(
9227  _tlmBuff,
9228  _tlmTime
9229  );
9230  }
9231  }
9232 
9235  U8 arg,
9236  Fw::Time _tlmTime
9237  )
9238  {
9239  // Check to see if it is the first time
9240  if (not this->m_first_update_Debug_NextStatementOpcode) {
9241  // Check to see if value has changed. If not, don't write it.
9242  if (arg == this->m_last_Debug_NextStatementOpcode) {
9243  return;
9244  }
9245  else {
9246  this->m_last_Debug_NextStatementOpcode = arg;
9247  }
9248  }
9249  else {
9250  this->m_first_update_Debug_NextStatementOpcode = false;
9251  this->m_last_Debug_NextStatementOpcode = arg;
9252  }
9253 
9254  if (this->isConnected_tlmOut_OutputPort(0)) {
9255  Fw::TlmBuffer _tlmBuff;
9256  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9257  FW_ASSERT(
9258  _stat == Fw::FW_SERIALIZE_OK,
9259  static_cast<FwAssertArgType>(_stat)
9260  );
9261 
9262  this->tlmWrite(
9264  _tlmBuff,
9265  _tlmTime
9266  );
9267  }
9268  }
9269 
9272  U32 arg,
9273  Fw::Time _tlmTime
9274  )
9275  {
9276  // Check to see if it is the first time
9277  if (not this->m_first_update_Debug_NextStatementIndex) {
9278  // Check to see if value has changed. If not, don't write it.
9279  if (arg == this->m_last_Debug_NextStatementIndex) {
9280  return;
9281  }
9282  else {
9283  this->m_last_Debug_NextStatementIndex = arg;
9284  }
9285  }
9286  else {
9287  this->m_first_update_Debug_NextStatementIndex = false;
9288  this->m_last_Debug_NextStatementIndex = arg;
9289  }
9290 
9291  if (this->isConnected_tlmOut_OutputPort(0)) {
9292  Fw::TlmBuffer _tlmBuff;
9293  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9294  FW_ASSERT(
9295  _stat == Fw::FW_SERIALIZE_OK,
9296  static_cast<FwAssertArgType>(_stat)
9297  );
9298 
9299  this->tlmWrite(
9301  _tlmBuff,
9302  _tlmTime
9303  );
9304  }
9305  }
9306 
9309  FwOpcodeType arg,
9310  Fw::Time _tlmTime
9311  )
9312  {
9313  // Check to see if it is the first time
9314  if (not this->m_first_update_Debug_NextCmdOpcode) {
9315  // Check to see if value has changed. If not, don't write it.
9316  if (arg == this->m_last_Debug_NextCmdOpcode) {
9317  return;
9318  }
9319  else {
9320  this->m_last_Debug_NextCmdOpcode = arg;
9321  }
9322  }
9323  else {
9324  this->m_first_update_Debug_NextCmdOpcode = false;
9325  this->m_last_Debug_NextCmdOpcode = arg;
9326  }
9327 
9328  if (this->isConnected_tlmOut_OutputPort(0)) {
9329  Fw::TlmBuffer _tlmBuff;
9330  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9331  FW_ASSERT(
9332  _stat == Fw::FW_SERIALIZE_OK,
9333  static_cast<FwAssertArgType>(_stat)
9334  );
9335 
9336  this->tlmWrite(
9338  _tlmBuff,
9339  _tlmTime
9340  );
9341  }
9342  }
9343 
9347  Fw::Time _tlmTime
9348  )
9349  {
9350  // Check to see if it is the first time
9351  if (not this->m_first_update_Debug_StackSize) {
9352  // Check to see if value has changed. If not, don't write it.
9353  if (arg == this->m_last_Debug_StackSize) {
9354  return;
9355  }
9356  else {
9357  this->m_last_Debug_StackSize = arg;
9358  }
9359  }
9360  else {
9361  this->m_first_update_Debug_StackSize = false;
9362  this->m_last_Debug_StackSize = arg;
9363  }
9364 
9365  if (this->isConnected_tlmOut_OutputPort(0)) {
9366  Fw::TlmBuffer _tlmBuff;
9367  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9368  FW_ASSERT(
9369  _stat == Fw::FW_SERIALIZE_OK,
9370  static_cast<FwAssertArgType>(_stat)
9371  );
9372 
9373  this->tlmWrite(
9375  _tlmBuff,
9376  _tlmTime
9377  );
9378  }
9379  }
9380 
9383  bool arg,
9384  Fw::Time _tlmTime
9385  )
9386  {
9387  // Check to see if it is the first time
9388  if (not this->m_first_update_BreakpointInUse) {
9389  // Check to see if value has changed. If not, don't write it.
9390  if (arg == this->m_last_BreakpointInUse) {
9391  return;
9392  }
9393  else {
9394  this->m_last_BreakpointInUse = arg;
9395  }
9396  }
9397  else {
9398  this->m_first_update_BreakpointInUse = false;
9399  this->m_last_BreakpointInUse = arg;
9400  }
9401 
9402  if (this->isConnected_tlmOut_OutputPort(0)) {
9403  Fw::TlmBuffer _tlmBuff;
9404  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9405  FW_ASSERT(
9406  _stat == Fw::FW_SERIALIZE_OK,
9407  static_cast<FwAssertArgType>(_stat)
9408  );
9409 
9410  this->tlmWrite(
9412  _tlmBuff,
9413  _tlmTime
9414  );
9415  }
9416  }
9417 
9420  U32 arg,
9421  Fw::Time _tlmTime
9422  )
9423  {
9424  // Check to see if it is the first time
9425  if (not this->m_first_update_BreakpointIndex) {
9426  // Check to see if value has changed. If not, don't write it.
9427  if (arg == this->m_last_BreakpointIndex) {
9428  return;
9429  }
9430  else {
9431  this->m_last_BreakpointIndex = arg;
9432  }
9433  }
9434  else {
9435  this->m_first_update_BreakpointIndex = false;
9436  this->m_last_BreakpointIndex = arg;
9437  }
9438 
9439  if (this->isConnected_tlmOut_OutputPort(0)) {
9440  Fw::TlmBuffer _tlmBuff;
9441  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9442  FW_ASSERT(
9443  _stat == Fw::FW_SERIALIZE_OK,
9444  static_cast<FwAssertArgType>(_stat)
9445  );
9446 
9447  this->tlmWrite(
9449  _tlmBuff,
9450  _tlmTime
9451  );
9452  }
9453  }
9454 
9457  bool arg,
9458  Fw::Time _tlmTime
9459  )
9460  {
9461  // Check to see if it is the first time
9462  if (not this->m_first_update_BreakOnlyOnceOnBreakpoint) {
9463  // Check to see if value has changed. If not, don't write it.
9464  if (arg == this->m_last_BreakOnlyOnceOnBreakpoint) {
9465  return;
9466  }
9467  else {
9468  this->m_last_BreakOnlyOnceOnBreakpoint = arg;
9469  }
9470  }
9471  else {
9472  this->m_first_update_BreakOnlyOnceOnBreakpoint = false;
9473  this->m_last_BreakOnlyOnceOnBreakpoint = arg;
9474  }
9475 
9476  if (this->isConnected_tlmOut_OutputPort(0)) {
9477  Fw::TlmBuffer _tlmBuff;
9478  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9479  FW_ASSERT(
9480  _stat == Fw::FW_SERIALIZE_OK,
9481  static_cast<FwAssertArgType>(_stat)
9482  );
9483 
9484  this->tlmWrite(
9486  _tlmBuff,
9487  _tlmTime
9488  );
9489  }
9490  }
9491 
9494  bool arg,
9495  Fw::Time _tlmTime
9496  )
9497  {
9498  // Check to see if it is the first time
9499  if (not this->m_first_update_BreakBeforeNextLine) {
9500  // Check to see if value has changed. If not, don't write it.
9501  if (arg == this->m_last_BreakBeforeNextLine) {
9502  return;
9503  }
9504  else {
9505  this->m_last_BreakBeforeNextLine = arg;
9506  }
9507  }
9508  else {
9509  this->m_first_update_BreakBeforeNextLine = false;
9510  this->m_last_BreakBeforeNextLine = arg;
9511  }
9512 
9513  if (this->isConnected_tlmOut_OutputPort(0)) {
9514  Fw::TlmBuffer _tlmBuff;
9515  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9516  FW_ASSERT(
9517  _stat == Fw::FW_SERIALIZE_OK,
9518  static_cast<FwAssertArgType>(_stat)
9519  );
9520 
9521  this->tlmWrite(
9523  _tlmBuff,
9524  _tlmTime
9525  );
9526  }
9527  }
9528 
9531  F32 arg,
9532  Fw::Time _tlmTime
9533  )
9534  {
9535  // Check to see if it is the first time
9536  if (not this->m_first_update_PRM_STATEMENT_TIMEOUT_SECS) {
9537  // Check to see if value has changed. If not, don't write it.
9538  if (arg == this->m_last_PRM_STATEMENT_TIMEOUT_SECS) {
9539  return;
9540  }
9541  else {
9542  this->m_last_PRM_STATEMENT_TIMEOUT_SECS = arg;
9543  }
9544  }
9545  else {
9546  this->m_first_update_PRM_STATEMENT_TIMEOUT_SECS = false;
9547  this->m_last_PRM_STATEMENT_TIMEOUT_SECS = arg;
9548  }
9549 
9550  if (this->isConnected_tlmOut_OutputPort(0)) {
9551  Fw::TlmBuffer _tlmBuff;
9552  Fw::SerializeStatus _stat = _tlmBuff.serializeFrom(arg);
9553  FW_ASSERT(
9554  _stat == Fw::FW_SERIALIZE_OK,
9555  static_cast<FwAssertArgType>(_stat)
9556  );
9557 
9558  this->tlmWrite(
9560  _tlmBuff,
9561  _tlmTime
9562  );
9563  }
9564  }
9565 
9566  // ----------------------------------------------------------------------
9567  // Parameter hook functions
9568  // ----------------------------------------------------------------------
9569 
9572  {
9573  // Do nothing by default
9574  }
9575 
9578  {
9579  // Do nothing by default
9580  }
9581 
9582  // ----------------------------------------------------------------------
9583  // Parameter get functions
9584  // ----------------------------------------------------------------------
9585 
9588  {
9589  F32 _local{};
9590  this->m_paramLock.lock();
9591  valid = this->m_param_STATEMENT_TIMEOUT_SECS_valid;
9592  _local = this->m_STATEMENT_TIMEOUT_SECS;
9593  this->m_paramLock.unLock();
9594  return _local;
9595  }
9596 
9597  // ----------------------------------------------------------------------
9598  // Time
9599  // ----------------------------------------------------------------------
9600 
9602  getTime() const
9603  {
9604  if (this->isConnected_timeCaller_OutputPort(0)) {
9605  Fw::Time _time;
9606  this->timeCaller_out(0, _time);
9607  return _time;
9608  }
9609  else {
9610  return Fw::Time(TimeBase::TB_NONE, 0, 0);
9611  }
9612  }
9613 
9614  // ----------------------------------------------------------------------
9615  // Message dispatch functions
9616  // ----------------------------------------------------------------------
9617 
9618  Fw::QueuedComponentBase::MsgDispatchStatus FpySequencerComponentBase ::
9619  doDispatch()
9620  {
9621  ComponentIpcSerializableBuffer _msg;
9622  FwQueuePriorityType _priority = 0;
9623 
9624  Os::Queue::Status _msgStatus = this->m_queue.receive(
9625  _msg,
9627  _priority
9628  );
9629  FW_ASSERT(
9630  _msgStatus == Os::Queue::OP_OK,
9631  static_cast<FwAssertArgType>(_msgStatus)
9632  );
9633 
9634  // Reset to beginning of buffer
9635  _msg.resetDeser();
9636 
9637  FwEnumStoreType _desMsg = 0;
9638  Fw::SerializeStatus _deserStatus = _msg.deserializeTo(_desMsg);
9639  FW_ASSERT(
9640  _deserStatus == Fw::FW_SERIALIZE_OK,
9641  static_cast<FwAssertArgType>(_deserStatus)
9642  );
9643 
9644  MsgTypeEnum _msgType = static_cast<MsgTypeEnum>(_desMsg);
9645 
9646  if (_msgType == FPYSEQUENCER_COMPONENT_EXIT) {
9647  return MSG_DISPATCH_EXIT;
9648  }
9649 
9650  FwIndexType portNum = 0;
9651  _deserStatus = _msg.deserializeTo(portNum);
9652  FW_ASSERT(
9653  _deserStatus == Fw::FW_SERIALIZE_OK,
9654  static_cast<FwAssertArgType>(_deserStatus)
9655  );
9656 
9657  switch (_msgType) {
9658  // Handle async input port checkTimers
9659  case CHECKTIMERS_SCHED: {
9660  // Deserialize argument context
9661  U32 context;
9662  _deserStatus = _msg.deserializeTo(context);
9663  FW_ASSERT(
9664  _deserStatus == Fw::FW_SERIALIZE_OK,
9665  static_cast<FwAssertArgType>(_deserStatus)
9666  );
9667  // Call handler function
9668  this->checkTimers_handler(
9669  portNum,
9670  context
9671  );
9672 
9673  break;
9674  }
9675 
9676  // Handle async input port cmdResponseIn
9677  case CMDRESPONSEIN_CMDRESPONSE: {
9678  // Deserialize argument opCode
9679  FwOpcodeType opCode;
9680  _deserStatus = _msg.deserializeTo(opCode);
9681  FW_ASSERT(
9682  _deserStatus == Fw::FW_SERIALIZE_OK,
9683  static_cast<FwAssertArgType>(_deserStatus)
9684  );
9685 
9686  // Deserialize argument cmdSeq
9687  U32 cmdSeq;
9688  _deserStatus = _msg.deserializeTo(cmdSeq);
9689  FW_ASSERT(
9690  _deserStatus == Fw::FW_SERIALIZE_OK,
9691  static_cast<FwAssertArgType>(_deserStatus)
9692  );
9693 
9694  // Deserialize argument response
9695  Fw::CmdResponse response;
9696  _deserStatus = _msg.deserializeTo(response);
9697  FW_ASSERT(
9698  _deserStatus == Fw::FW_SERIALIZE_OK,
9699  static_cast<FwAssertArgType>(_deserStatus)
9700  );
9701  // Call handler function
9702  this->cmdResponseIn_handler(
9703  portNum,
9704  opCode,
9705  cmdSeq,
9706  response
9707  );
9708 
9709  break;
9710  }
9711 
9712  // Handle async input port pingIn
9713  case PINGIN_PING: {
9714  // Deserialize argument key
9715  U32 key;
9716  _deserStatus = _msg.deserializeTo(key);
9717  FW_ASSERT(
9718  _deserStatus == Fw::FW_SERIALIZE_OK,
9719  static_cast<FwAssertArgType>(_deserStatus)
9720  );
9721  // Call handler function
9722  this->pingIn_handler(
9723  portNum,
9724  key
9725  );
9726 
9727  break;
9728  }
9729 
9730  // Handle async input port seqCancelIn
9731  case SEQCANCELIN_CMDSEQCANCEL: {
9732  // Call handler function
9733  this->seqCancelIn_handler(portNum);
9734 
9735  break;
9736  }
9737 
9738  // Handle async input port seqRunIn
9739  case SEQRUNIN_CMDSEQIN: {
9740  // Deserialize argument filename
9741  char __fprime_ac_filename_buffer[Fw::StringBase::BUFFER_SIZE(240)];
9742  Fw::ExternalString filename(__fprime_ac_filename_buffer, sizeof __fprime_ac_filename_buffer);
9743  _deserStatus = _msg.deserializeTo(filename);
9744  FW_ASSERT(
9745  _deserStatus == Fw::FW_SERIALIZE_OK,
9746  static_cast<FwAssertArgType>(_deserStatus)
9747  );
9748 
9749  // Deserialize argument args
9750  Svc::SeqArgs args;
9751  _deserStatus = _msg.deserializeTo(args);
9752  FW_ASSERT(
9753  _deserStatus == Fw::FW_SERIALIZE_OK,
9754  static_cast<FwAssertArgType>(_deserStatus)
9755  );
9756  // Call handler function
9757  this->seqRunIn_handler(
9758  portNum,
9759  filename,
9760  args
9761  );
9762 
9763  break;
9764  }
9765 
9766  // Handle async input port tlmWrite
9767  case TLMWRITE_SCHED: {
9768  // Deserialize argument context
9769  U32 context;
9770  _deserStatus = _msg.deserializeTo(context);
9771  FW_ASSERT(
9772  _deserStatus == Fw::FW_SERIALIZE_OK,
9773  static_cast<FwAssertArgType>(_deserStatus)
9774  );
9775  // Call handler function
9776  this->tlmWrite_handler(
9777  portNum,
9778  context
9779  );
9780 
9781  break;
9782  }
9783 
9784  // Handle command RUN
9785  case CMD_RUN: {
9786  // Deserialize opcode
9787  FwOpcodeType _opCode = 0;
9788  _deserStatus = _msg.deserializeTo(_opCode);
9789  FW_ASSERT (
9790  _deserStatus == Fw::FW_SERIALIZE_OK,
9791  static_cast<FwAssertArgType>(_deserStatus)
9792  );
9793 
9794  // Deserialize command sequence
9795  U32 _cmdSeq = 0;
9796  _deserStatus = _msg.deserializeTo(_cmdSeq);
9797  FW_ASSERT (
9798  _deserStatus == Fw::FW_SERIALIZE_OK,
9799  static_cast<FwAssertArgType>(_deserStatus)
9800  );
9801 
9802  // Deserialize command argument buffer
9803  Fw::CmdArgBuffer args;
9804  _deserStatus = _msg.deserializeTo(args);
9805  FW_ASSERT (
9806  _deserStatus == Fw::FW_SERIALIZE_OK,
9807  static_cast<FwAssertArgType>(_deserStatus)
9808  );
9809 
9810  // Reset buffer
9811  args.resetDeser();
9812 
9813  // Deserialize argument fileName
9814  Fw::CmdStringArg fileName;
9815  _deserStatus = args.deserializeTo(fileName);
9816  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9818  this->cmdResponse_out(
9819  _opCode,
9820  _cmdSeq,
9822  );
9823  }
9824  // Don't crash the task if bad arguments were passed from the ground
9825  break;
9826  }
9827 
9828  // Deserialize argument block
9830  _deserStatus = args.deserializeTo(block);
9831  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9833  this->cmdResponse_out(
9834  _opCode,
9835  _cmdSeq,
9837  );
9838  }
9839  // Don't crash the task if bad arguments were passed from the ground
9840  break;
9841  }
9842 
9843  // Make sure there was no data left over.
9844  // That means the argument buffer size was incorrect.
9845 #if FW_CMD_CHECK_RESIDUAL
9846  if (args.getDeserializeSizeLeft() != 0) {
9848  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9849  }
9850  // Don't crash the task if bad arguments were passed from the ground
9851  break;
9852  }
9853 #endif
9854 
9855  // Call handler function
9856  this->RUN_cmdHandler(
9857  _opCode, _cmdSeq,
9858  fileName,
9859  block
9860  );
9861 
9862  break;
9863  }
9864 
9865  // Handle command RUN_ARGS
9866  case CMD_RUN_ARGS: {
9867  // Deserialize opcode
9868  FwOpcodeType _opCode = 0;
9869  _deserStatus = _msg.deserializeTo(_opCode);
9870  FW_ASSERT (
9871  _deserStatus == Fw::FW_SERIALIZE_OK,
9872  static_cast<FwAssertArgType>(_deserStatus)
9873  );
9874 
9875  // Deserialize command sequence
9876  U32 _cmdSeq = 0;
9877  _deserStatus = _msg.deserializeTo(_cmdSeq);
9878  FW_ASSERT (
9879  _deserStatus == Fw::FW_SERIALIZE_OK,
9880  static_cast<FwAssertArgType>(_deserStatus)
9881  );
9882 
9883  // Deserialize command argument buffer
9884  Fw::CmdArgBuffer args;
9885  _deserStatus = _msg.deserializeTo(args);
9886  FW_ASSERT (
9887  _deserStatus == Fw::FW_SERIALIZE_OK,
9888  static_cast<FwAssertArgType>(_deserStatus)
9889  );
9890 
9891  // Reset buffer
9892  args.resetDeser();
9893 
9894  // Deserialize argument fileName
9895  Fw::CmdStringArg fileName;
9896  _deserStatus = args.deserializeTo(fileName);
9897  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9899  this->cmdResponse_out(
9900  _opCode,
9901  _cmdSeq,
9903  );
9904  }
9905  // Don't crash the task if bad arguments were passed from the ground
9906  break;
9907  }
9908 
9909  // Deserialize argument block
9911  _deserStatus = args.deserializeTo(block);
9912  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9914  this->cmdResponse_out(
9915  _opCode,
9916  _cmdSeq,
9918  );
9919  }
9920  // Don't crash the task if bad arguments were passed from the ground
9921  break;
9922  }
9923 
9924  // Deserialize argument buffer
9925  Svc::SeqArgs buffer;
9926  _deserStatus = args.deserializeTo(buffer);
9927  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9929  this->cmdResponse_out(
9930  _opCode,
9931  _cmdSeq,
9933  );
9934  }
9935  // Don't crash the task if bad arguments were passed from the ground
9936  break;
9937  }
9938 
9939  // Make sure there was no data left over.
9940  // That means the argument buffer size was incorrect.
9941 #if FW_CMD_CHECK_RESIDUAL
9942  if (args.getDeserializeSizeLeft() != 0) {
9944  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
9945  }
9946  // Don't crash the task if bad arguments were passed from the ground
9947  break;
9948  }
9949 #endif
9950 
9951  // Call handler function
9952  this->RUN_ARGS_cmdHandler(
9953  _opCode, _cmdSeq,
9954  fileName,
9955  block,
9956  buffer
9957  );
9958 
9959  break;
9960  }
9961 
9962  // Handle command VALIDATE
9963  case CMD_VALIDATE: {
9964  // Deserialize opcode
9965  FwOpcodeType _opCode = 0;
9966  _deserStatus = _msg.deserializeTo(_opCode);
9967  FW_ASSERT (
9968  _deserStatus == Fw::FW_SERIALIZE_OK,
9969  static_cast<FwAssertArgType>(_deserStatus)
9970  );
9971 
9972  // Deserialize command sequence
9973  U32 _cmdSeq = 0;
9974  _deserStatus = _msg.deserializeTo(_cmdSeq);
9975  FW_ASSERT (
9976  _deserStatus == Fw::FW_SERIALIZE_OK,
9977  static_cast<FwAssertArgType>(_deserStatus)
9978  );
9979 
9980  // Deserialize command argument buffer
9981  Fw::CmdArgBuffer args;
9982  _deserStatus = _msg.deserializeTo(args);
9983  FW_ASSERT (
9984  _deserStatus == Fw::FW_SERIALIZE_OK,
9985  static_cast<FwAssertArgType>(_deserStatus)
9986  );
9987 
9988  // Reset buffer
9989  args.resetDeser();
9990 
9991  // Deserialize argument fileName
9992  Fw::CmdStringArg fileName;
9993  _deserStatus = args.deserializeTo(fileName);
9994  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
9996  this->cmdResponse_out(
9997  _opCode,
9998  _cmdSeq,
10000  );
10001  }
10002  // Don't crash the task if bad arguments were passed from the ground
10003  break;
10004  }
10005 
10006  // Make sure there was no data left over.
10007  // That means the argument buffer size was incorrect.
10008 #if FW_CMD_CHECK_RESIDUAL
10009  if (args.getDeserializeSizeLeft() != 0) {
10011  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10012  }
10013  // Don't crash the task if bad arguments were passed from the ground
10014  break;
10015  }
10016 #endif
10017 
10018  // Call handler function
10019  this->VALIDATE_cmdHandler(
10020  _opCode, _cmdSeq,
10021  fileName
10022  );
10023 
10024  break;
10025  }
10026 
10027  // Handle command VALIDATE_ARGS
10028  case CMD_VALIDATE_ARGS: {
10029  // Deserialize opcode
10030  FwOpcodeType _opCode = 0;
10031  _deserStatus = _msg.deserializeTo(_opCode);
10032  FW_ASSERT (
10033  _deserStatus == Fw::FW_SERIALIZE_OK,
10034  static_cast<FwAssertArgType>(_deserStatus)
10035  );
10036 
10037  // Deserialize command sequence
10038  U32 _cmdSeq = 0;
10039  _deserStatus = _msg.deserializeTo(_cmdSeq);
10040  FW_ASSERT (
10041  _deserStatus == Fw::FW_SERIALIZE_OK,
10042  static_cast<FwAssertArgType>(_deserStatus)
10043  );
10044 
10045  // Deserialize command argument buffer
10046  Fw::CmdArgBuffer args;
10047  _deserStatus = _msg.deserializeTo(args);
10048  FW_ASSERT (
10049  _deserStatus == Fw::FW_SERIALIZE_OK,
10050  static_cast<FwAssertArgType>(_deserStatus)
10051  );
10052 
10053  // Reset buffer
10054  args.resetDeser();
10055 
10056  // Deserialize argument fileName
10057  Fw::CmdStringArg fileName;
10058  _deserStatus = args.deserializeTo(fileName);
10059  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10061  this->cmdResponse_out(
10062  _opCode,
10063  _cmdSeq,
10065  );
10066  }
10067  // Don't crash the task if bad arguments were passed from the ground
10068  break;
10069  }
10070 
10071  // Deserialize argument buffer
10072  Svc::SeqArgs buffer;
10073  _deserStatus = args.deserializeTo(buffer);
10074  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10076  this->cmdResponse_out(
10077  _opCode,
10078  _cmdSeq,
10080  );
10081  }
10082  // Don't crash the task if bad arguments were passed from the ground
10083  break;
10084  }
10085 
10086  // Make sure there was no data left over.
10087  // That means the argument buffer size was incorrect.
10088 #if FW_CMD_CHECK_RESIDUAL
10089  if (args.getDeserializeSizeLeft() != 0) {
10091  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10092  }
10093  // Don't crash the task if bad arguments were passed from the ground
10094  break;
10095  }
10096 #endif
10097 
10098  // Call handler function
10100  _opCode, _cmdSeq,
10101  fileName,
10102  buffer
10103  );
10104 
10105  break;
10106  }
10107 
10108  // Handle command RUN_VALIDATED
10109  case CMD_RUN_VALIDATED: {
10110  // Deserialize opcode
10111  FwOpcodeType _opCode = 0;
10112  _deserStatus = _msg.deserializeTo(_opCode);
10113  FW_ASSERT (
10114  _deserStatus == Fw::FW_SERIALIZE_OK,
10115  static_cast<FwAssertArgType>(_deserStatus)
10116  );
10117 
10118  // Deserialize command sequence
10119  U32 _cmdSeq = 0;
10120  _deserStatus = _msg.deserializeTo(_cmdSeq);
10121  FW_ASSERT (
10122  _deserStatus == Fw::FW_SERIALIZE_OK,
10123  static_cast<FwAssertArgType>(_deserStatus)
10124  );
10125 
10126  // Deserialize command argument buffer
10127  Fw::CmdArgBuffer args;
10128  _deserStatus = _msg.deserializeTo(args);
10129  FW_ASSERT (
10130  _deserStatus == Fw::FW_SERIALIZE_OK,
10131  static_cast<FwAssertArgType>(_deserStatus)
10132  );
10133 
10134  // Reset buffer
10135  args.resetDeser();
10136 
10137  // Deserialize argument block
10139  _deserStatus = args.deserializeTo(block);
10140  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10142  this->cmdResponse_out(
10143  _opCode,
10144  _cmdSeq,
10146  );
10147  }
10148  // Don't crash the task if bad arguments were passed from the ground
10149  break;
10150  }
10151 
10152  // Make sure there was no data left over.
10153  // That means the argument buffer size was incorrect.
10154 #if FW_CMD_CHECK_RESIDUAL
10155  if (args.getDeserializeSizeLeft() != 0) {
10157  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10158  }
10159  // Don't crash the task if bad arguments were passed from the ground
10160  break;
10161  }
10162 #endif
10163 
10164  // Call handler function
10166  _opCode, _cmdSeq,
10167  block
10168  );
10169 
10170  break;
10171  }
10172 
10173  // Handle command CANCEL
10174  case CMD_CANCEL: {
10175  // Deserialize opcode
10176  FwOpcodeType _opCode = 0;
10177  _deserStatus = _msg.deserializeTo(_opCode);
10178  FW_ASSERT (
10179  _deserStatus == Fw::FW_SERIALIZE_OK,
10180  static_cast<FwAssertArgType>(_deserStatus)
10181  );
10182 
10183  // Deserialize command sequence
10184  U32 _cmdSeq = 0;
10185  _deserStatus = _msg.deserializeTo(_cmdSeq);
10186  FW_ASSERT (
10187  _deserStatus == Fw::FW_SERIALIZE_OK,
10188  static_cast<FwAssertArgType>(_deserStatus)
10189  );
10190 
10191  // Deserialize command argument buffer
10192  Fw::CmdArgBuffer args;
10193  _deserStatus = _msg.deserializeTo(args);
10194  FW_ASSERT (
10195  _deserStatus == Fw::FW_SERIALIZE_OK,
10196  static_cast<FwAssertArgType>(_deserStatus)
10197  );
10198 
10199  // Reset buffer
10200  args.resetDeser();
10201 
10202  // Make sure there was no data left over.
10203  // That means the argument buffer size was incorrect.
10204 #if FW_CMD_CHECK_RESIDUAL
10205  if (args.getDeserializeSizeLeft() != 0) {
10207  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10208  }
10209  // Don't crash the task if bad arguments were passed from the ground
10210  break;
10211  }
10212 #endif
10213 
10214  // Call handler function
10215  this->CANCEL_cmdHandler(_opCode, _cmdSeq);
10216 
10217  break;
10218  }
10219 
10220  // Handle command SET_BREAKPOINT
10221  case CMD_SET_BREAKPOINT: {
10222  // Deserialize opcode
10223  FwOpcodeType _opCode = 0;
10224  _deserStatus = _msg.deserializeTo(_opCode);
10225  FW_ASSERT (
10226  _deserStatus == Fw::FW_SERIALIZE_OK,
10227  static_cast<FwAssertArgType>(_deserStatus)
10228  );
10229 
10230  // Deserialize command sequence
10231  U32 _cmdSeq = 0;
10232  _deserStatus = _msg.deserializeTo(_cmdSeq);
10233  FW_ASSERT (
10234  _deserStatus == Fw::FW_SERIALIZE_OK,
10235  static_cast<FwAssertArgType>(_deserStatus)
10236  );
10237 
10238  // Deserialize command argument buffer
10239  Fw::CmdArgBuffer args;
10240  _deserStatus = _msg.deserializeTo(args);
10241  FW_ASSERT (
10242  _deserStatus == Fw::FW_SERIALIZE_OK,
10243  static_cast<FwAssertArgType>(_deserStatus)
10244  );
10245 
10246  // Reset buffer
10247  args.resetDeser();
10248 
10249  // Deserialize argument stmtIdx
10250  U32 stmtIdx;
10251  _deserStatus = args.deserializeTo(stmtIdx);
10252  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10254  this->cmdResponse_out(
10255  _opCode,
10256  _cmdSeq,
10258  );
10259  }
10260  // Don't crash the task if bad arguments were passed from the ground
10261  break;
10262  }
10263 
10264  // Deserialize argument breakOnce
10265  bool breakOnce;
10266  _deserStatus = args.deserializeTo(breakOnce);
10267  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10269  this->cmdResponse_out(
10270  _opCode,
10271  _cmdSeq,
10273  );
10274  }
10275  // Don't crash the task if bad arguments were passed from the ground
10276  break;
10277  }
10278 
10279  // Make sure there was no data left over.
10280  // That means the argument buffer size was incorrect.
10281 #if FW_CMD_CHECK_RESIDUAL
10282  if (args.getDeserializeSizeLeft() != 0) {
10284  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10285  }
10286  // Don't crash the task if bad arguments were passed from the ground
10287  break;
10288  }
10289 #endif
10290 
10291  // Call handler function
10293  _opCode, _cmdSeq,
10294  stmtIdx,
10295  breakOnce
10296  );
10297 
10298  break;
10299  }
10300 
10301  // Handle command BREAK
10302  case CMD_BREAK: {
10303  // Deserialize opcode
10304  FwOpcodeType _opCode = 0;
10305  _deserStatus = _msg.deserializeTo(_opCode);
10306  FW_ASSERT (
10307  _deserStatus == Fw::FW_SERIALIZE_OK,
10308  static_cast<FwAssertArgType>(_deserStatus)
10309  );
10310 
10311  // Deserialize command sequence
10312  U32 _cmdSeq = 0;
10313  _deserStatus = _msg.deserializeTo(_cmdSeq);
10314  FW_ASSERT (
10315  _deserStatus == Fw::FW_SERIALIZE_OK,
10316  static_cast<FwAssertArgType>(_deserStatus)
10317  );
10318 
10319  // Deserialize command argument buffer
10320  Fw::CmdArgBuffer args;
10321  _deserStatus = _msg.deserializeTo(args);
10322  FW_ASSERT (
10323  _deserStatus == Fw::FW_SERIALIZE_OK,
10324  static_cast<FwAssertArgType>(_deserStatus)
10325  );
10326 
10327  // Reset buffer
10328  args.resetDeser();
10329 
10330  // Make sure there was no data left over.
10331  // That means the argument buffer size was incorrect.
10332 #if FW_CMD_CHECK_RESIDUAL
10333  if (args.getDeserializeSizeLeft() != 0) {
10335  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10336  }
10337  // Don't crash the task if bad arguments were passed from the ground
10338  break;
10339  }
10340 #endif
10341 
10342  // Call handler function
10343  this->BREAK_cmdHandler(_opCode, _cmdSeq);
10344 
10345  break;
10346  }
10347 
10348  // Handle command CONTINUE
10349  case CMD_CONTINUE: {
10350  // Deserialize opcode
10351  FwOpcodeType _opCode = 0;
10352  _deserStatus = _msg.deserializeTo(_opCode);
10353  FW_ASSERT (
10354  _deserStatus == Fw::FW_SERIALIZE_OK,
10355  static_cast<FwAssertArgType>(_deserStatus)
10356  );
10357 
10358  // Deserialize command sequence
10359  U32 _cmdSeq = 0;
10360  _deserStatus = _msg.deserializeTo(_cmdSeq);
10361  FW_ASSERT (
10362  _deserStatus == Fw::FW_SERIALIZE_OK,
10363  static_cast<FwAssertArgType>(_deserStatus)
10364  );
10365 
10366  // Deserialize command argument buffer
10367  Fw::CmdArgBuffer args;
10368  _deserStatus = _msg.deserializeTo(args);
10369  FW_ASSERT (
10370  _deserStatus == Fw::FW_SERIALIZE_OK,
10371  static_cast<FwAssertArgType>(_deserStatus)
10372  );
10373 
10374  // Reset buffer
10375  args.resetDeser();
10376 
10377  // Make sure there was no data left over.
10378  // That means the argument buffer size was incorrect.
10379 #if FW_CMD_CHECK_RESIDUAL
10380  if (args.getDeserializeSizeLeft() != 0) {
10382  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10383  }
10384  // Don't crash the task if bad arguments were passed from the ground
10385  break;
10386  }
10387 #endif
10388 
10389  // Call handler function
10390  this->CONTINUE_cmdHandler(_opCode, _cmdSeq);
10391 
10392  break;
10393  }
10394 
10395  // Handle command CLEAR_BREAKPOINT
10396  case CMD_CLEAR_BREAKPOINT: {
10397  // Deserialize opcode
10398  FwOpcodeType _opCode = 0;
10399  _deserStatus = _msg.deserializeTo(_opCode);
10400  FW_ASSERT (
10401  _deserStatus == Fw::FW_SERIALIZE_OK,
10402  static_cast<FwAssertArgType>(_deserStatus)
10403  );
10404 
10405  // Deserialize command sequence
10406  U32 _cmdSeq = 0;
10407  _deserStatus = _msg.deserializeTo(_cmdSeq);
10408  FW_ASSERT (
10409  _deserStatus == Fw::FW_SERIALIZE_OK,
10410  static_cast<FwAssertArgType>(_deserStatus)
10411  );
10412 
10413  // Deserialize command argument buffer
10414  Fw::CmdArgBuffer args;
10415  _deserStatus = _msg.deserializeTo(args);
10416  FW_ASSERT (
10417  _deserStatus == Fw::FW_SERIALIZE_OK,
10418  static_cast<FwAssertArgType>(_deserStatus)
10419  );
10420 
10421  // Reset buffer
10422  args.resetDeser();
10423 
10424  // Make sure there was no data left over.
10425  // That means the argument buffer size was incorrect.
10426 #if FW_CMD_CHECK_RESIDUAL
10427  if (args.getDeserializeSizeLeft() != 0) {
10429  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10430  }
10431  // Don't crash the task if bad arguments were passed from the ground
10432  break;
10433  }
10434 #endif
10435 
10436  // Call handler function
10437  this->CLEAR_BREAKPOINT_cmdHandler(_opCode, _cmdSeq);
10438 
10439  break;
10440  }
10441 
10442  // Handle command STEP
10443  case CMD_STEP: {
10444  // Deserialize opcode
10445  FwOpcodeType _opCode = 0;
10446  _deserStatus = _msg.deserializeTo(_opCode);
10447  FW_ASSERT (
10448  _deserStatus == Fw::FW_SERIALIZE_OK,
10449  static_cast<FwAssertArgType>(_deserStatus)
10450  );
10451 
10452  // Deserialize command sequence
10453  U32 _cmdSeq = 0;
10454  _deserStatus = _msg.deserializeTo(_cmdSeq);
10455  FW_ASSERT (
10456  _deserStatus == Fw::FW_SERIALIZE_OK,
10457  static_cast<FwAssertArgType>(_deserStatus)
10458  );
10459 
10460  // Deserialize command argument buffer
10461  Fw::CmdArgBuffer args;
10462  _deserStatus = _msg.deserializeTo(args);
10463  FW_ASSERT (
10464  _deserStatus == Fw::FW_SERIALIZE_OK,
10465  static_cast<FwAssertArgType>(_deserStatus)
10466  );
10467 
10468  // Reset buffer
10469  args.resetDeser();
10470 
10471  // Make sure there was no data left over.
10472  // That means the argument buffer size was incorrect.
10473 #if FW_CMD_CHECK_RESIDUAL
10474  if (args.getDeserializeSizeLeft() != 0) {
10476  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10477  }
10478  // Don't crash the task if bad arguments were passed from the ground
10479  break;
10480  }
10481 #endif
10482 
10483  // Call handler function
10484  this->STEP_cmdHandler(_opCode, _cmdSeq);
10485 
10486  break;
10487  }
10488 
10489  // Handle command DUMP_STACK_TO_FILE
10490  case CMD_DUMP_STACK_TO_FILE: {
10491  // Deserialize opcode
10492  FwOpcodeType _opCode = 0;
10493  _deserStatus = _msg.deserializeTo(_opCode);
10494  FW_ASSERT (
10495  _deserStatus == Fw::FW_SERIALIZE_OK,
10496  static_cast<FwAssertArgType>(_deserStatus)
10497  );
10498 
10499  // Deserialize command sequence
10500  U32 _cmdSeq = 0;
10501  _deserStatus = _msg.deserializeTo(_cmdSeq);
10502  FW_ASSERT (
10503  _deserStatus == Fw::FW_SERIALIZE_OK,
10504  static_cast<FwAssertArgType>(_deserStatus)
10505  );
10506 
10507  // Deserialize command argument buffer
10508  Fw::CmdArgBuffer args;
10509  _deserStatus = _msg.deserializeTo(args);
10510  FW_ASSERT (
10511  _deserStatus == Fw::FW_SERIALIZE_OK,
10512  static_cast<FwAssertArgType>(_deserStatus)
10513  );
10514 
10515  // Reset buffer
10516  args.resetDeser();
10517 
10518  // Deserialize argument fileName
10519  Fw::CmdStringArg fileName;
10520  _deserStatus = args.deserializeTo(fileName);
10521  if (_deserStatus != Fw::FW_SERIALIZE_OK) {
10523  this->cmdResponse_out(
10524  _opCode,
10525  _cmdSeq,
10527  );
10528  }
10529  // Don't crash the task if bad arguments were passed from the ground
10530  break;
10531  }
10532 
10533  // Make sure there was no data left over.
10534  // That means the argument buffer size was incorrect.
10535 #if FW_CMD_CHECK_RESIDUAL
10536  if (args.getDeserializeSizeLeft() != 0) {
10538  this->cmdResponse_out(_opCode, _cmdSeq, Fw::CmdResponse::FORMAT_ERROR);
10539  }
10540  // Don't crash the task if bad arguments were passed from the ground
10541  break;
10542  }
10543 #endif
10544 
10545  // Call handler function
10547  _opCode, _cmdSeq,
10548  fileName
10549  );
10550 
10551  break;
10552  }
10553 
10554  // Handle internal interface directive_allocate
10555  case INT_IF_DIRECTIVE_ALLOCATE: {
10557  _deserStatus = _msg.deserializeTo(directive);
10558 
10559  // Internal interface should always deserialize
10560  FW_ASSERT(
10561  Fw::FW_SERIALIZE_OK == _deserStatus,
10562  static_cast<FwAssertArgType>(_deserStatus)
10563  );
10564 
10565  // Make sure there was no data left over.
10566  // That means the buffer size was incorrect.
10567  FW_ASSERT(
10568  _msg.getDeserializeSizeLeft() == 0,
10569  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10570  );
10571 
10572  // Call handler function
10574  directive
10575  );
10576 
10577  break;
10578  }
10579 
10580  // Handle internal interface directive_call
10581  case INT_IF_DIRECTIVE_CALL: {
10583  _deserStatus = _msg.deserializeTo(directive);
10584 
10585  // Internal interface should always deserialize
10586  FW_ASSERT(
10587  Fw::FW_SERIALIZE_OK == _deserStatus,
10588  static_cast<FwAssertArgType>(_deserStatus)
10589  );
10590 
10591  // Make sure there was no data left over.
10592  // That means the buffer size was incorrect.
10593  FW_ASSERT(
10594  _msg.getDeserializeSizeLeft() == 0,
10595  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10596  );
10597 
10598  // Call handler function
10600  directive
10601  );
10602 
10603  break;
10604  }
10605 
10606  // Handle internal interface directive_constCmd
10607  case INT_IF_DIRECTIVE_CONSTCMD: {
10609  _deserStatus = _msg.deserializeTo(directive);
10610 
10611  // Internal interface should always deserialize
10612  FW_ASSERT(
10613  Fw::FW_SERIALIZE_OK == _deserStatus,
10614  static_cast<FwAssertArgType>(_deserStatus)
10615  );
10616 
10617  // Make sure there was no data left over.
10618  // That means the buffer size was incorrect.
10619  FW_ASSERT(
10620  _msg.getDeserializeSizeLeft() == 0,
10621  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10622  );
10623 
10624  // Call handler function
10626  directive
10627  );
10628 
10629  break;
10630  }
10631 
10632  // Handle internal interface directive_discard
10633  case INT_IF_DIRECTIVE_DISCARD: {
10635  _deserStatus = _msg.deserializeTo(directive);
10636 
10637  // Internal interface should always deserialize
10638  FW_ASSERT(
10639  Fw::FW_SERIALIZE_OK == _deserStatus,
10640  static_cast<FwAssertArgType>(_deserStatus)
10641  );
10642 
10643  // Make sure there was no data left over.
10644  // That means the buffer size was incorrect.
10645  FW_ASSERT(
10646  _msg.getDeserializeSizeLeft() == 0,
10647  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10648  );
10649 
10650  // Call handler function
10652  directive
10653  );
10654 
10655  break;
10656  }
10657 
10658  // Handle internal interface directive_exit
10659  case INT_IF_DIRECTIVE_EXIT: {
10661  _deserStatus = _msg.deserializeTo(directive);
10662 
10663  // Internal interface should always deserialize
10664  FW_ASSERT(
10665  Fw::FW_SERIALIZE_OK == _deserStatus,
10666  static_cast<FwAssertArgType>(_deserStatus)
10667  );
10668 
10669  // Make sure there was no data left over.
10670  // That means the buffer size was incorrect.
10671  FW_ASSERT(
10672  _msg.getDeserializeSizeLeft() == 0,
10673  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10674  );
10675 
10676  // Call handler function
10678  directive
10679  );
10680 
10681  break;
10682  }
10683 
10684  // Handle internal interface directive_getField
10685  case INT_IF_DIRECTIVE_GETFIELD: {
10687  _deserStatus = _msg.deserializeTo(directive);
10688 
10689  // Internal interface should always deserialize
10690  FW_ASSERT(
10691  Fw::FW_SERIALIZE_OK == _deserStatus,
10692  static_cast<FwAssertArgType>(_deserStatus)
10693  );
10694 
10695  // Make sure there was no data left over.
10696  // That means the buffer size was incorrect.
10697  FW_ASSERT(
10698  _msg.getDeserializeSizeLeft() == 0,
10699  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10700  );
10701 
10702  // Call handler function
10704  directive
10705  );
10706 
10707  break;
10708  }
10709 
10710  // Handle internal interface directive_goto
10711  case INT_IF_DIRECTIVE_GOTO: {
10713  _deserStatus = _msg.deserializeTo(directive);
10714 
10715  // Internal interface should always deserialize
10716  FW_ASSERT(
10717  Fw::FW_SERIALIZE_OK == _deserStatus,
10718  static_cast<FwAssertArgType>(_deserStatus)
10719  );
10720 
10721  // Make sure there was no data left over.
10722  // That means the buffer size was incorrect.
10723  FW_ASSERT(
10724  _msg.getDeserializeSizeLeft() == 0,
10725  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10726  );
10727 
10728  // Call handler function
10730  directive
10731  );
10732 
10733  break;
10734  }
10735 
10736  // Handle internal interface directive_if
10737  case INT_IF_DIRECTIVE_IF: {
10739  _deserStatus = _msg.deserializeTo(directive);
10740 
10741  // Internal interface should always deserialize
10742  FW_ASSERT(
10743  Fw::FW_SERIALIZE_OK == _deserStatus,
10744  static_cast<FwAssertArgType>(_deserStatus)
10745  );
10746 
10747  // Make sure there was no data left over.
10748  // That means the buffer size was incorrect.
10749  FW_ASSERT(
10750  _msg.getDeserializeSizeLeft() == 0,
10751  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10752  );
10753 
10754  // Call handler function
10756  directive
10757  );
10758 
10759  break;
10760  }
10761 
10762  // Handle internal interface directive_loadAbs
10763  case INT_IF_DIRECTIVE_LOADABS: {
10765  _deserStatus = _msg.deserializeTo(directive);
10766 
10767  // Internal interface should always deserialize
10768  FW_ASSERT(
10769  Fw::FW_SERIALIZE_OK == _deserStatus,
10770  static_cast<FwAssertArgType>(_deserStatus)
10771  );
10772 
10773  // Make sure there was no data left over.
10774  // That means the buffer size was incorrect.
10775  FW_ASSERT(
10776  _msg.getDeserializeSizeLeft() == 0,
10777  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10778  );
10779 
10780  // Call handler function
10782  directive
10783  );
10784 
10785  break;
10786  }
10787 
10788  // Handle internal interface directive_loadRel
10789  case INT_IF_DIRECTIVE_LOADREL: {
10791  _deserStatus = _msg.deserializeTo(directive);
10792 
10793  // Internal interface should always deserialize
10794  FW_ASSERT(
10795  Fw::FW_SERIALIZE_OK == _deserStatus,
10796  static_cast<FwAssertArgType>(_deserStatus)
10797  );
10798 
10799  // Make sure there was no data left over.
10800  // That means the buffer size was incorrect.
10801  FW_ASSERT(
10802  _msg.getDeserializeSizeLeft() == 0,
10803  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10804  );
10805 
10806  // Call handler function
10808  directive
10809  );
10810 
10811  break;
10812  }
10813 
10814  // Handle internal interface directive_memCmp
10815  case INT_IF_DIRECTIVE_MEMCMP: {
10817  _deserStatus = _msg.deserializeTo(directive);
10818 
10819  // Internal interface should always deserialize
10820  FW_ASSERT(
10821  Fw::FW_SERIALIZE_OK == _deserStatus,
10822  static_cast<FwAssertArgType>(_deserStatus)
10823  );
10824 
10825  // Make sure there was no data left over.
10826  // That means the buffer size was incorrect.
10827  FW_ASSERT(
10828  _msg.getDeserializeSizeLeft() == 0,
10829  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10830  );
10831 
10832  // Call handler function
10834  directive
10835  );
10836 
10837  break;
10838  }
10839 
10840  // Handle internal interface directive_noOp
10841  case INT_IF_DIRECTIVE_NOOP: {
10843  _deserStatus = _msg.deserializeTo(directive);
10844 
10845  // Internal interface should always deserialize
10846  FW_ASSERT(
10847  Fw::FW_SERIALIZE_OK == _deserStatus,
10848  static_cast<FwAssertArgType>(_deserStatus)
10849  );
10850 
10851  // Make sure there was no data left over.
10852  // That means the buffer size was incorrect.
10853  FW_ASSERT(
10854  _msg.getDeserializeSizeLeft() == 0,
10855  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10856  );
10857 
10858  // Call handler function
10860  directive
10861  );
10862 
10863  break;
10864  }
10865 
10866  // Handle internal interface directive_peek
10867  case INT_IF_DIRECTIVE_PEEK: {
10869  _deserStatus = _msg.deserializeTo(directive);
10870 
10871  // Internal interface should always deserialize
10872  FW_ASSERT(
10873  Fw::FW_SERIALIZE_OK == _deserStatus,
10874  static_cast<FwAssertArgType>(_deserStatus)
10875  );
10876 
10877  // Make sure there was no data left over.
10878  // That means the buffer size was incorrect.
10879  FW_ASSERT(
10880  _msg.getDeserializeSizeLeft() == 0,
10881  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10882  );
10883 
10884  // Call handler function
10886  directive
10887  );
10888 
10889  break;
10890  }
10891 
10892  // Handle internal interface directive_popEvent
10893  case INT_IF_DIRECTIVE_POPEVENT: {
10895  _deserStatus = _msg.deserializeTo(directive);
10896 
10897  // Internal interface should always deserialize
10898  FW_ASSERT(
10899  Fw::FW_SERIALIZE_OK == _deserStatus,
10900  static_cast<FwAssertArgType>(_deserStatus)
10901  );
10902 
10903  // Make sure there was no data left over.
10904  // That means the buffer size was incorrect.
10905  FW_ASSERT(
10906  _msg.getDeserializeSizeLeft() == 0,
10907  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10908  );
10909 
10910  // Call handler function
10912  directive
10913  );
10914 
10915  break;
10916  }
10917 
10918  // Handle internal interface directive_pushPrm
10919  case INT_IF_DIRECTIVE_PUSHPRM: {
10921  _deserStatus = _msg.deserializeTo(directive);
10922 
10923  // Internal interface should always deserialize
10924  FW_ASSERT(
10925  Fw::FW_SERIALIZE_OK == _deserStatus,
10926  static_cast<FwAssertArgType>(_deserStatus)
10927  );
10928 
10929  // Make sure there was no data left over.
10930  // That means the buffer size was incorrect.
10931  FW_ASSERT(
10932  _msg.getDeserializeSizeLeft() == 0,
10933  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10934  );
10935 
10936  // Call handler function
10938  directive
10939  );
10940 
10941  break;
10942  }
10943 
10944  // Handle internal interface directive_pushTime
10945  case INT_IF_DIRECTIVE_PUSHTIME: {
10947  _deserStatus = _msg.deserializeTo(directive);
10948 
10949  // Internal interface should always deserialize
10950  FW_ASSERT(
10951  Fw::FW_SERIALIZE_OK == _deserStatus,
10952  static_cast<FwAssertArgType>(_deserStatus)
10953  );
10954 
10955  // Make sure there was no data left over.
10956  // That means the buffer size was incorrect.
10957  FW_ASSERT(
10958  _msg.getDeserializeSizeLeft() == 0,
10959  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10960  );
10961 
10962  // Call handler function
10964  directive
10965  );
10966 
10967  break;
10968  }
10969 
10970  // Handle internal interface directive_pushTlmVal
10971  case INT_IF_DIRECTIVE_PUSHTLMVAL: {
10973  _deserStatus = _msg.deserializeTo(directive);
10974 
10975  // Internal interface should always deserialize
10976  FW_ASSERT(
10977  Fw::FW_SERIALIZE_OK == _deserStatus,
10978  static_cast<FwAssertArgType>(_deserStatus)
10979  );
10980 
10981  // Make sure there was no data left over.
10982  // That means the buffer size was incorrect.
10983  FW_ASSERT(
10984  _msg.getDeserializeSizeLeft() == 0,
10985  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
10986  );
10987 
10988  // Call handler function
10990  directive
10991  );
10992 
10993  break;
10994  }
10995 
10996  // Handle internal interface directive_pushTlmValAndTime
10997  case INT_IF_DIRECTIVE_PUSHTLMVALANDTIME: {
10999  _deserStatus = _msg.deserializeTo(directive);
11000 
11001  // Internal interface should always deserialize
11002  FW_ASSERT(
11003  Fw::FW_SERIALIZE_OK == _deserStatus,
11004  static_cast<FwAssertArgType>(_deserStatus)
11005  );
11006 
11007  // Make sure there was no data left over.
11008  // That means the buffer size was incorrect.
11009  FW_ASSERT(
11010  _msg.getDeserializeSizeLeft() == 0,
11011  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11012  );
11013 
11014  // Call handler function
11016  directive
11017  );
11018 
11019  break;
11020  }
11021 
11022  // Handle internal interface directive_pushVal
11023  case INT_IF_DIRECTIVE_PUSHVAL: {
11025  _deserStatus = _msg.deserializeTo(directive);
11026 
11027  // Internal interface should always deserialize
11028  FW_ASSERT(
11029  Fw::FW_SERIALIZE_OK == _deserStatus,
11030  static_cast<FwAssertArgType>(_deserStatus)
11031  );
11032 
11033  // Make sure there was no data left over.
11034  // That means the buffer size was incorrect.
11035  FW_ASSERT(
11036  _msg.getDeserializeSizeLeft() == 0,
11037  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11038  );
11039 
11040  // Call handler function
11042  directive
11043  );
11044 
11045  break;
11046  }
11047 
11048  // Handle internal interface directive_return
11049  case INT_IF_DIRECTIVE_RETURN: {
11051  _deserStatus = _msg.deserializeTo(directive);
11052 
11053  // Internal interface should always deserialize
11054  FW_ASSERT(
11055  Fw::FW_SERIALIZE_OK == _deserStatus,
11056  static_cast<FwAssertArgType>(_deserStatus)
11057  );
11058 
11059  // Make sure there was no data left over.
11060  // That means the buffer size was incorrect.
11061  FW_ASSERT(
11062  _msg.getDeserializeSizeLeft() == 0,
11063  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11064  );
11065 
11066  // Call handler function
11068  directive
11069  );
11070 
11071  break;
11072  }
11073 
11074  // Handle internal interface directive_stackCmd
11075  case INT_IF_DIRECTIVE_STACKCMD: {
11077  _deserStatus = _msg.deserializeTo(directive);
11078 
11079  // Internal interface should always deserialize
11080  FW_ASSERT(
11081  Fw::FW_SERIALIZE_OK == _deserStatus,
11082  static_cast<FwAssertArgType>(_deserStatus)
11083  );
11084 
11085  // Make sure there was no data left over.
11086  // That means the buffer size was incorrect.
11087  FW_ASSERT(
11088  _msg.getDeserializeSizeLeft() == 0,
11089  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11090  );
11091 
11092  // Call handler function
11094  directive
11095  );
11096 
11097  break;
11098  }
11099 
11100  // Handle internal interface directive_stackOp
11101  case INT_IF_DIRECTIVE_STACKOP: {
11103  _deserStatus = _msg.deserializeTo(directive);
11104 
11105  // Internal interface should always deserialize
11106  FW_ASSERT(
11107  Fw::FW_SERIALIZE_OK == _deserStatus,
11108  static_cast<FwAssertArgType>(_deserStatus)
11109  );
11110 
11111  // Make sure there was no data left over.
11112  // That means the buffer size was incorrect.
11113  FW_ASSERT(
11114  _msg.getDeserializeSizeLeft() == 0,
11115  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11116  );
11117 
11118  // Call handler function
11120  directive
11121  );
11122 
11123  break;
11124  }
11125 
11126  // Handle internal interface directive_storeAbs
11127  case INT_IF_DIRECTIVE_STOREABS: {
11129  _deserStatus = _msg.deserializeTo(directive);
11130 
11131  // Internal interface should always deserialize
11132  FW_ASSERT(
11133  Fw::FW_SERIALIZE_OK == _deserStatus,
11134  static_cast<FwAssertArgType>(_deserStatus)
11135  );
11136 
11137  // Make sure there was no data left over.
11138  // That means the buffer size was incorrect.
11139  FW_ASSERT(
11140  _msg.getDeserializeSizeLeft() == 0,
11141  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11142  );
11143 
11144  // Call handler function
11146  directive
11147  );
11148 
11149  break;
11150  }
11151 
11152  // Handle internal interface directive_storeAbsConstOffset
11153  case INT_IF_DIRECTIVE_STOREABSCONSTOFFSET: {
11155  _deserStatus = _msg.deserializeTo(directive);
11156 
11157  // Internal interface should always deserialize
11158  FW_ASSERT(
11159  Fw::FW_SERIALIZE_OK == _deserStatus,
11160  static_cast<FwAssertArgType>(_deserStatus)
11161  );
11162 
11163  // Make sure there was no data left over.
11164  // That means the buffer size was incorrect.
11165  FW_ASSERT(
11166  _msg.getDeserializeSizeLeft() == 0,
11167  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11168  );
11169 
11170  // Call handler function
11172  directive
11173  );
11174 
11175  break;
11176  }
11177 
11178  // Handle internal interface directive_storeRel
11179  case INT_IF_DIRECTIVE_STOREREL: {
11181  _deserStatus = _msg.deserializeTo(directive);
11182 
11183  // Internal interface should always deserialize
11184  FW_ASSERT(
11185  Fw::FW_SERIALIZE_OK == _deserStatus,
11186  static_cast<FwAssertArgType>(_deserStatus)
11187  );
11188 
11189  // Make sure there was no data left over.
11190  // That means the buffer size was incorrect.
11191  FW_ASSERT(
11192  _msg.getDeserializeSizeLeft() == 0,
11193  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11194  );
11195 
11196  // Call handler function
11198  directive
11199  );
11200 
11201  break;
11202  }
11203 
11204  // Handle internal interface directive_storeRelConstOffset
11205  case INT_IF_DIRECTIVE_STORERELCONSTOFFSET: {
11207  _deserStatus = _msg.deserializeTo(directive);
11208 
11209  // Internal interface should always deserialize
11210  FW_ASSERT(
11211  Fw::FW_SERIALIZE_OK == _deserStatus,
11212  static_cast<FwAssertArgType>(_deserStatus)
11213  );
11214 
11215  // Make sure there was no data left over.
11216  // That means the buffer size was incorrect.
11217  FW_ASSERT(
11218  _msg.getDeserializeSizeLeft() == 0,
11219  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11220  );
11221 
11222  // Call handler function
11224  directive
11225  );
11226 
11227  break;
11228  }
11229 
11230  // Handle internal interface directive_waitAbs
11231  case INT_IF_DIRECTIVE_WAITABS: {
11233  _deserStatus = _msg.deserializeTo(directive);
11234 
11235  // Internal interface should always deserialize
11236  FW_ASSERT(
11237  Fw::FW_SERIALIZE_OK == _deserStatus,
11238  static_cast<FwAssertArgType>(_deserStatus)
11239  );
11240 
11241  // Make sure there was no data left over.
11242  // That means the buffer size was incorrect.
11243  FW_ASSERT(
11244  _msg.getDeserializeSizeLeft() == 0,
11245  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11246  );
11247 
11248  // Call handler function
11250  directive
11251  );
11252 
11253  break;
11254  }
11255 
11256  // Handle internal interface directive_waitRel
11257  case INT_IF_DIRECTIVE_WAITREL: {
11259  _deserStatus = _msg.deserializeTo(directive);
11260 
11261  // Internal interface should always deserialize
11262  FW_ASSERT(
11263  Fw::FW_SERIALIZE_OK == _deserStatus,
11264  static_cast<FwAssertArgType>(_deserStatus)
11265  );
11266 
11267  // Make sure there was no data left over.
11268  // That means the buffer size was incorrect.
11269  FW_ASSERT(
11270  _msg.getDeserializeSizeLeft() == 0,
11271  static_cast<FwAssertArgType>(_msg.getDeserializeSizeLeft())
11272  );
11273 
11274  // Call handler function
11276  directive
11277  );
11278 
11279  break;
11280  }
11281 
11282 
11283  // Handle signals to internal state machines
11284  case INTERNAL_STATE_MACHINE_SIGNAL:
11285  this->smDispatch(_msg);
11286  break;
11287 
11288  default:
11289  return MSG_DISPATCH_ERROR;
11290  }
11291 
11292  return MSG_DISPATCH_OK;
11293  }
11294 
11295  // ----------------------------------------------------------------------
11296  // Calls for messages received on special input ports
11297  // ----------------------------------------------------------------------
11298 
11299  void FpySequencerComponentBase ::
11300  m_p_cmdIn_in(
11301  Fw::PassiveComponentBase* callComp,
11302  FwIndexType portNum,
11303  FwOpcodeType opCode,
11304  U32 cmdSeq,
11305  Fw::CmdArgBuffer& args
11306  )
11307  {
11308  FW_ASSERT(callComp);
11309  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11310  compPtr->cmdIn_handlerBase(
11311  portNum,
11312  opCode,
11313  cmdSeq,
11314  args
11315  );
11316  }
11317 
11318  // ----------------------------------------------------------------------
11319  // Calls for messages received on typed input ports
11320  // ----------------------------------------------------------------------
11321 
11322  void FpySequencerComponentBase ::
11323  m_p_checkTimers_in(
11324  Fw::PassiveComponentBase* callComp,
11325  FwIndexType portNum,
11326  U32 context
11327  )
11328  {
11329  FW_ASSERT(callComp);
11330  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11331  compPtr->checkTimers_handlerBase(
11332  portNum,
11333  context
11334  );
11335  }
11336 
11337  void FpySequencerComponentBase ::
11338  m_p_cmdResponseIn_in(
11339  Fw::PassiveComponentBase* callComp,
11340  FwIndexType portNum,
11341  FwOpcodeType opCode,
11342  U32 cmdSeq,
11343  const Fw::CmdResponse& response
11344  )
11345  {
11346  FW_ASSERT(callComp);
11347  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11348  compPtr->cmdResponseIn_handlerBase(
11349  portNum,
11350  opCode,
11351  cmdSeq,
11352  response
11353  );
11354  }
11355 
11356  void FpySequencerComponentBase ::
11357  m_p_pingIn_in(
11358  Fw::PassiveComponentBase* callComp,
11359  FwIndexType portNum,
11360  U32 key
11361  )
11362  {
11363  FW_ASSERT(callComp);
11364  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11365  compPtr->pingIn_handlerBase(
11366  portNum,
11367  key
11368  );
11369  }
11370 
11371  void FpySequencerComponentBase ::
11372  m_p_seqCancelIn_in(
11373  Fw::PassiveComponentBase* callComp,
11374  FwIndexType portNum
11375  )
11376  {
11377  FW_ASSERT(callComp);
11378  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11379  compPtr->seqCancelIn_handlerBase(portNum);
11380  }
11381 
11382  void FpySequencerComponentBase ::
11383  m_p_seqRunIn_in(
11384  Fw::PassiveComponentBase* callComp,
11385  FwIndexType portNum,
11386  const Fw::StringBase& filename,
11387  const Svc::SeqArgs& args
11388  )
11389  {
11390  FW_ASSERT(callComp);
11391  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11392  compPtr->seqRunIn_handlerBase(
11393  portNum,
11394  filename,
11395  args
11396  );
11397  }
11398 
11399  void FpySequencerComponentBase ::
11400  m_p_tlmWrite_in(
11401  Fw::PassiveComponentBase* callComp,
11402  FwIndexType portNum,
11403  U32 context
11404  )
11405  {
11406  FW_ASSERT(callComp);
11407  FpySequencerComponentBase* compPtr = static_cast<FpySequencerComponentBase*>(callComp);
11408  compPtr->tlmWrite_handlerBase(
11409  portNum,
11410  context
11411  );
11412  }
11413 
11414 #if !FW_DIRECT_PORT_CALLS
11415 
11416  // ----------------------------------------------------------------------
11417  // Invocation functions for special output ports
11418  // ----------------------------------------------------------------------
11419 
11420  void FpySequencerComponentBase ::
11421  cmdRegOut_out(
11422  FwIndexType portNum,
11423  FwOpcodeType opCode
11424  ) const
11425  {
11426  FW_ASSERT(
11427  (0 <= portNum) && (portNum < this->getNum_cmdRegOut_OutputPorts()),
11428  static_cast<FwAssertArgType>(portNum)
11429  );
11430 
11431  FW_ASSERT(
11432  this->m_cmdRegOut_OutputPort[portNum].isConnected(),
11433  static_cast<FwAssertArgType>(portNum)
11434  );
11435  this->m_cmdRegOut_OutputPort[portNum].invoke(
11436  opCode
11437  );
11438  }
11439 
11440  void FpySequencerComponentBase ::
11441  cmdResponseOut_out(
11442  FwIndexType portNum,
11443  FwOpcodeType opCode,
11444  U32 cmdSeq,
11445  const Fw::CmdResponse& response
11446  ) const
11447  {
11448  FW_ASSERT(
11449  (0 <= portNum) && (portNum < this->getNum_cmdResponseOut_OutputPorts()),
11450  static_cast<FwAssertArgType>(portNum)
11451  );
11452 
11453  FW_ASSERT(
11454  this->m_cmdResponseOut_OutputPort[portNum].isConnected(),
11455  static_cast<FwAssertArgType>(portNum)
11456  );
11457  this->m_cmdResponseOut_OutputPort[portNum].invoke(
11458  opCode,
11459  cmdSeq,
11460  response
11461  );
11462  }
11463 
11464  void FpySequencerComponentBase ::
11465  logOut_out(
11466  FwIndexType portNum,
11467  FwEventIdType id,
11468  Fw::Time& timeTag,
11469  const Fw::LogSeverity& severity,
11470  Fw::LogBuffer& args
11471  ) const
11472  {
11473  FW_ASSERT(
11474  (0 <= portNum) && (portNum < this->getNum_logOut_OutputPorts()),
11475  static_cast<FwAssertArgType>(portNum)
11476  );
11477 
11478  FW_ASSERT(
11479  this->m_logOut_OutputPort[portNum].isConnected(),
11480  static_cast<FwAssertArgType>(portNum)
11481  );
11482  this->m_logOut_OutputPort[portNum].invoke(
11483  id,
11484  timeTag,
11485  severity,
11486  args
11487  );
11488  }
11489 
11490 #if FW_ENABLE_TEXT_LOGGING
11491 
11492  void FpySequencerComponentBase ::
11493  logTextOut_out(
11494  FwIndexType portNum,
11495  FwEventIdType id,
11496  Fw::Time& timeTag,
11497  const Fw::LogSeverity& severity,
11498  Fw::TextLogString& text
11499  ) const
11500  {
11501  FW_ASSERT(
11502  (0 <= portNum) && (portNum < this->getNum_logTextOut_OutputPorts()),
11503  static_cast<FwAssertArgType>(portNum)
11504  );
11505 
11506  FW_ASSERT(
11507  this->m_logTextOut_OutputPort[portNum].isConnected(),
11508  static_cast<FwAssertArgType>(portNum)
11509  );
11510  this->m_logTextOut_OutputPort[portNum].invoke(
11511  id,
11512  timeTag,
11513  severity,
11514  text
11515  );
11516  }
11517 
11518 #endif
11519 
11520  Fw::ParamValid FpySequencerComponentBase ::
11521  prmGet_out(
11522  FwIndexType portNum,
11523  FwPrmIdType id,
11524  Fw::ParamBuffer& val
11525  ) const
11526  {
11527  FW_ASSERT(
11528  (0 <= portNum) && (portNum < this->getNum_prmGet_OutputPorts()),
11529  static_cast<FwAssertArgType>(portNum)
11530  );
11531 
11532  FW_ASSERT(
11533  this->m_prmGet_OutputPort[portNum].isConnected(),
11534  static_cast<FwAssertArgType>(portNum)
11535  );
11536  return this->m_prmGet_OutputPort[portNum].invoke(
11537  id,
11538  val
11539  );
11540  }
11541 
11542  void FpySequencerComponentBase ::
11543  prmSet_out(
11544  FwIndexType portNum,
11545  FwPrmIdType id,
11546  Fw::ParamBuffer& val
11547  ) const
11548  {
11549  FW_ASSERT(
11550  (0 <= portNum) && (portNum < this->getNum_prmSet_OutputPorts()),
11551  static_cast<FwAssertArgType>(portNum)
11552  );
11553 
11554  FW_ASSERT(
11555  this->m_prmSet_OutputPort[portNum].isConnected(),
11556  static_cast<FwAssertArgType>(portNum)
11557  );
11558  this->m_prmSet_OutputPort[portNum].invoke(
11559  id,
11560  val
11561  );
11562  }
11563 
11564  void FpySequencerComponentBase ::
11565  timeCaller_out(
11566  FwIndexType portNum,
11567  Fw::Time& time
11568  ) const
11569  {
11570  FW_ASSERT(
11571  (0 <= portNum) && (portNum < this->getNum_timeCaller_OutputPorts()),
11572  static_cast<FwAssertArgType>(portNum)
11573  );
11574 
11575  FW_ASSERT(
11576  this->m_timeCaller_OutputPort[portNum].isConnected(),
11577  static_cast<FwAssertArgType>(portNum)
11578  );
11579  this->m_timeCaller_OutputPort[portNum].invoke(
11580  time
11581  );
11582  }
11583 
11584  void FpySequencerComponentBase ::
11585  tlmOut_out(
11586  FwIndexType portNum,
11587  FwChanIdType id,
11588  Fw::Time& timeTag,
11589  Fw::TlmBuffer& val
11590  ) const
11591  {
11592  FW_ASSERT(
11593  (0 <= portNum) && (portNum < this->getNum_tlmOut_OutputPorts()),
11594  static_cast<FwAssertArgType>(portNum)
11595  );
11596 
11597  FW_ASSERT(
11598  this->m_tlmOut_OutputPort[portNum].isConnected(),
11599  static_cast<FwAssertArgType>(portNum)
11600  );
11601  this->m_tlmOut_OutputPort[portNum].invoke(
11602  id,
11603  timeTag,
11604  val
11605  );
11606  }
11607 
11608 #endif
11609 
11610  // ----------------------------------------------------------------------
11611  // Send signal helper functions
11612  // ----------------------------------------------------------------------
11613 
11614  void FpySequencerComponentBase ::
11615  sendSignalStart(
11616  SmId smId,
11617  FwEnumStoreType signal,
11618  Fw::SerialBufferBase& buffer
11619  )
11620  {
11622 
11623  // Serialize the message type
11624  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(INTERNAL_STATE_MACHINE_SIGNAL));
11625  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11626 
11627  // Serialize the port number
11628  status = buffer.serializeFrom(static_cast<FwIndexType>(0));
11629  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11630 
11631  // Serialize the state machine ID
11632  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(smId));
11633  FW_ASSERT (status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11634 
11635  // Serialize the signal
11636  status = buffer.serializeFrom(static_cast<FwEnumStoreType>(signal));
11637  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11638  }
11639 
11640  void FpySequencerComponentBase ::
11641  sequencer_sendSignalFinish(Fw::LinearBufferBase& buffer)
11642  {
11643  // Send message
11645  Os::Queue::Status qStatus = this->m_queue.send(buffer, 9, _block);
11646 
11647  FW_ASSERT(
11648  qStatus == Os::Queue::OP_OK,
11649  static_cast<FwAssertArgType>(qStatus)
11650  );
11651  }
11652 
11653  // ----------------------------------------------------------------------
11654  // Helper functions for state machine dispatch
11655  // ----------------------------------------------------------------------
11656 
11657  void FpySequencerComponentBase ::
11658  smDispatch(Fw::SerialBufferBase& buffer)
11659  {
11660  // Deserialize the state machine ID and signal
11661  FwEnumStoreType storedSmId;
11662  FwEnumStoreType storedSignal;
11663  FpySequencerComponentBase::deserializeSmIdAndSignal(buffer, storedSmId, storedSignal);
11664 
11665  // Select the target state machine instance
11666  const SmId smId = static_cast<SmId>(storedSmId);
11667  switch (smId) {
11668  case SmId::sequencer: {
11670  this->Svc_FpySequencer_SequencerStateMachine_smDispatch(buffer, this->m_stateMachine_sequencer, signal);
11671  break;
11672  }
11673  default:
11674  FW_ASSERT(0, static_cast<FwAssertArgType>(smId));
11675  break;
11676  }
11677  }
11678 
11679  void FpySequencerComponentBase ::
11680  deserializeSmIdAndSignal(
11681  Fw::SerialBufferBase& buffer,
11682  FwEnumStoreType& smId,
11683  FwEnumStoreType& signal
11684  )
11685  {
11686  // Move deserialization beyond the message type and port number
11687  Fw::SerializeStatus status =
11688  buffer.moveDeserToOffset(ComponentIpcSerializableBuffer::DATA_OFFSET);
11689  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11690 
11691  // Deserialize the state machine ID
11692  status = buffer.deserializeTo(smId);
11693  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11694 
11695  // Deserialize the signal
11696  status = buffer.deserializeTo(signal);
11697  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11698  }
11699 
11700  void FpySequencerComponentBase ::
11701  Svc_FpySequencer_SequencerStateMachine_smDispatch(
11702  Fw::SerialBufferBase& buffer,
11703  Svc_FpySequencer_SequencerStateMachine& sm,
11705  )
11706  {
11707  switch (signal) {
11709  // Deserialize the data
11711  const Fw::SerializeStatus status = buffer.deserializeTo(value);
11712  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11713  // Assert no data left in buffer
11714  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11715  // Call the sendSignal function for sm and cmd_VALIDATE
11716  sm.sendSignal_cmd_VALIDATE(value);
11717  break;
11718  }
11720  // Deserialize the data
11722  const Fw::SerializeStatus status = buffer.deserializeTo(value);
11723  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11724  // Assert no data left in buffer
11725  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11726  // Call the sendSignal function for sm and cmd_RUN
11727  sm.sendSignal_cmd_RUN(value);
11728  break;
11729  }
11731  // Deserialize the data
11733  const Fw::SerializeStatus status = buffer.deserializeTo(value);
11734  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11735  // Assert no data left in buffer
11736  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11737  // Call the sendSignal function for sm and cmd_RUN_VALIDATED
11738  sm.sendSignal_cmd_RUN_VALIDATED(value);
11739  break;
11740  }
11742  // Assert no data left in buffer
11743  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11744  // Call the sendSignal function for sm and cmd_CANCEL
11745  sm.sendSignal_cmd_CANCEL();
11746  break;
11747  }
11749  // Deserialize the data
11751  const Fw::SerializeStatus status = buffer.deserializeTo(value);
11752  FW_ASSERT(status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(status));
11753  // Assert no data left in buffer
11754  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11755  // Call the sendSignal function for sm and cmd_SET_BREAKPOINT
11756  sm.sendSignal_cmd_SET_BREAKPOINT(value);
11757  break;
11758  }
11760  // Assert no data left in buffer
11761  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11762  // Call the sendSignal function for sm and cmd_CLEAR_BREAKPOINT
11763  sm.sendSignal_cmd_CLEAR_BREAKPOINT();
11764  break;
11765  }
11767  // Assert no data left in buffer
11768  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11769  // Call the sendSignal function for sm and result_failure
11770  sm.sendSignal_result_failure();
11771  break;
11772  }
11774  // Assert no data left in buffer
11775  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11776  // Call the sendSignal function for sm and result_success
11777  sm.sendSignal_result_success();
11778  break;
11779  }
11781  // Assert no data left in buffer
11782  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11783  // Call the sendSignal function for sm and entered
11784  sm.sendSignal_entered();
11785  break;
11786  }
11788  // Assert no data left in buffer
11789  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11790  // Call the sendSignal function for sm and result_dispatchStatement_success
11791  sm.sendSignal_result_dispatchStatement_success();
11792  break;
11793  }
11795  // Assert no data left in buffer
11796  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11797  // Call the sendSignal function for sm and result_dispatchStatement_failure
11798  sm.sendSignal_result_dispatchStatement_failure();
11799  break;
11800  }
11802  // Assert no data left in buffer
11803  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11804  // Call the sendSignal function for sm and result_dispatchStatement_noMoreStatements
11805  sm.sendSignal_result_dispatchStatement_noMoreStatements();
11806  break;
11807  }
11809  // Assert no data left in buffer
11810  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11811  // Call the sendSignal function for sm and checkTimersIn
11812  sm.sendSignal_checkTimersIn();
11813  break;
11814  }
11816  // Assert no data left in buffer
11817  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11818  // Call the sendSignal function for sm and result_checkShouldWake_wakeup
11819  sm.sendSignal_result_checkShouldWake_wakeup();
11820  break;
11821  }
11823  // Assert no data left in buffer
11824  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11825  // Call the sendSignal function for sm and result_checkShouldWake_keepSleeping
11826  sm.sendSignal_result_checkShouldWake_keepSleeping();
11827  break;
11828  }
11830  // Assert no data left in buffer
11831  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11832  // Call the sendSignal function for sm and result_timeOpFailed
11833  sm.sendSignal_result_timeOpFailed();
11834  break;
11835  }
11837  // Assert no data left in buffer
11838  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11839  // Call the sendSignal function for sm and stmtResponse_beginSleep
11840  sm.sendSignal_stmtResponse_beginSleep();
11841  break;
11842  }
11844  // Assert no data left in buffer
11845  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11846  // Call the sendSignal function for sm and stmtResponse_success
11847  sm.sendSignal_stmtResponse_success();
11848  break;
11849  }
11851  // Assert no data left in buffer
11852  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11853  // Call the sendSignal function for sm and stmtResponse_failure
11854  sm.sendSignal_stmtResponse_failure();
11855  break;
11856  }
11858  // Assert no data left in buffer
11859  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11860  // Call the sendSignal function for sm and stmtResponse_unexpected
11861  sm.sendSignal_stmtResponse_unexpected();
11862  break;
11863  }
11865  // Assert no data left in buffer
11866  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11867  // Call the sendSignal function for sm and stmtResponse_keepWaiting
11868  sm.sendSignal_stmtResponse_keepWaiting();
11869  break;
11870  }
11872  // Assert no data left in buffer
11873  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11874  // Call the sendSignal function for sm and result_checkStatementTimeout_statementTimeout
11875  sm.sendSignal_result_checkStatementTimeout_statementTimeout();
11876  break;
11877  }
11879  // Assert no data left in buffer
11880  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11881  // Call the sendSignal function for sm and result_checkStatementTimeout_noTimeout
11882  sm.sendSignal_result_checkStatementTimeout_noTimeout();
11883  break;
11884  }
11886  // Assert no data left in buffer
11887  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11888  // Call the sendSignal function for sm and cmd_CONTINUE
11889  sm.sendSignal_cmd_CONTINUE();
11890  break;
11891  }
11893  // Assert no data left in buffer
11894  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11895  // Call the sendSignal function for sm and cmd_BREAK
11896  sm.sendSignal_cmd_BREAK();
11897  break;
11898  }
11900  // Assert no data left in buffer
11901  FW_ASSERT(buffer.getDeserializeSizeLeft() == 0, static_cast<FwAssertArgType>(buffer.getDeserializeSizeLeft()));
11902  // Call the sendSignal function for sm and cmd_STEP
11903  sm.sendSignal_cmd_STEP();
11904  break;
11905  }
11906  default:
11907  FW_ASSERT(0, static_cast<FwAssertArgType>(signal));
11908  break;
11909  }
11910  }
11911 
11912  // ----------------------------------------------------------------------
11913  // Parameter set functions
11914  // ----------------------------------------------------------------------
11915 
11916  Fw::CmdResponse FpySequencerComponentBase ::
11917  paramSet_STATEMENT_TIMEOUT_SECS(Fw::SerialBufferBase& val)
11918  {
11919  F32 _localVal{};
11920  const Fw::SerializeStatus _stat = val.deserializeTo(_localVal);
11921  if (_stat != Fw::FW_SERIALIZE_OK) {
11923  }
11924 
11925  // Assign value only if successfully deserialized
11926  this->m_paramLock.lock();
11927  this->m_STATEMENT_TIMEOUT_SECS = _localVal;
11928  this->m_param_STATEMENT_TIMEOUT_SECS_valid = Fw::ParamValid::VALID;
11929  this->m_paramLock.unLock();
11930 
11931  // Call notifier
11933  return Fw::CmdResponse::OK;
11934  }
11935 
11936  // ----------------------------------------------------------------------
11937  // Parameter save functions
11938  // ----------------------------------------------------------------------
11939 
11940  Fw::CmdResponse FpySequencerComponentBase ::
11941  paramSave_STATEMENT_TIMEOUT_SECS()
11942  {
11943  Fw::ParamBuffer _saveBuff;
11944  FwPrmIdType _id;
11945  Fw::SerializeStatus _stat;
11946  if (this->isConnected_prmSet_OutputPort(0)) {
11947  this->m_paramLock.lock();
11948 
11949  _stat = _saveBuff.serializeFrom(m_STATEMENT_TIMEOUT_SECS);
11950 
11951  this->m_paramLock.unLock();
11952  if (_stat != Fw::FW_SERIALIZE_OK) {
11954  }
11955 
11956  _id = static_cast<FwPrmIdType>(this->getIdBase() + PARAMID_STATEMENT_TIMEOUT_SECS);
11957 
11958  // Save the parameter
11959  this->prmSet_out(
11960  0,
11961  _id,
11962  _saveBuff
11963  );
11964 
11965  return Fw::CmdResponse::OK;
11966  }
11967 
11969  }
11970 
11971 }
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
void CONTINUE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
void sequencer_sendSignal_cmd_STEP()
Send signal cmd_STEP to state machine sequencer.
virtual void cmdResponseIn_handler(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)=0
Handler for input port cmdResponseIn.
void sequencer_sendSignal_result_dispatchStatement_success()
Send signal result_dispatchStatement_success to state machine sequencer.
void directive_stackOp_internalInterfaceInvoke(const Svc::FpySequencer_StackOpDirective &directive)
Internal interface base-class function for directive_stackOp.
void log_WARNING_HI_WrongCRC(U32 expected, U32 actual) const
Log event WrongCRC.
void directive_pushTlmVal_internalInterfaceInvoke(const Svc::FpySequencer_PushTlmValDirective &directive)
Internal interface base-class function for directive_pushTlmVal.
Status
status returned from the queue send function
Definition: Queue.hpp:30
virtual void CLEAR_BREAKPOINT_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
virtual void parameterUpdated(FwPrmIdType id)
Called whenever a parameter is updated.
called when statement successfully executed. only raised in the RUNNING.AWAITING_CMD_RESPONSE state ...
called on VALIDATE cmd with the path of the sequence file to validate. only raised in IDLE state ...
virtual void directive_stackCmd_internalInterfaceHandler(const Svc::FpySequencer_StackCmdDirective &directive)=0
Internal interface handler for directive_stackCmd.
called on RUN cmd with the path of the sequence file to run. only raised in IDLE state ...
void sequencer_sendSignal_cmd_SET_BREAKPOINT(const Svc::FpySequencer_BreakpointArgs &value)
Send signal cmd_SET_BREAKPOINT to state machine sequencer.
called on RUN_VALIDATED cmd. only raised in AWAITING_CMD_RUN_VALIDATED state
void init()
Initialization function.
Definition: SchedPortAc.cpp: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()
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
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 RUN_ARGS_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::FpySequencer_BlockState block, Svc::SeqArgs buffer)=0
Handler for command RUN_ARGS.
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::FpySequencer_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.
virtual void RUN_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName, Svc::FpySequencer_BlockState block)=0
void sequencer_sendSignal_cmd_BREAK()
Send signal cmd_BREAK to state machine sequencer.
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.
Must be called after VALIDATE. Runs the sequence that was validated.
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)
The size of the serial representation.
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 ...
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
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.
Loads, validates and runs a sequence.
Status send(const U8 *buffer, FwSizeType size, FwQueuePriorityType priority, BlockingType blockType) override
send a message into the queue through delegate
Definition: Queue.cpp:54
FpySequencerComponentBase(const char *compName="")
Construct FpySequencerComponentBase object.
virtual void directive_call_internalInterfaceHandler(const Svc::FpySequencer_CallDirective &directive)=0
Internal interface handler for directive_call.
void init()
Initialization function.
virtual void CONTINUE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
void sequencer_sendSignal_checkTimersIn()
Send signal checkTimersIn to state machine sequencer.
void tlmWrite_StatementsDispatched(U64 arg, Fw::Time _tlmTime=Fw::Time())
void addCallComp(Fw::PassiveComponentBase *callComp, CompFuncPtr funcPtr)
Register a component.
void tlmWrite_LastDirectiveError(const Svc::Fpy::DirectiveErrorCode &arg, Fw::Time _tlmTime=Fw::Time())
void VALIDATE_cmdHandlerBase(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdArgBuffer &args)
virtual void directive_discard_internalInterfaceHandler(const Svc::FpySequencer_DiscardDirective &directive)=0
Internal interface handler for directive_discard.
void resetDeser() override
Reset deserialization pointer to beginning of buffer.
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)
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()
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.
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.
Loads and validates a sequence with arguments.
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.
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 ...
Writes the contents of the stack to a file. This command is only valid in the RUNNING.PAUSED state.
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
message to exit active component task
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())