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