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