@@ -104,7 +104,7 @@ class FpySequencer : public FpySequencerComponentBase {
104104 // pushes a byte array to the top of the stack from the source array
105105 // leaves the source array unmodified
106106 // does not convert endianness
107- void push (U8* src, Fpy::StackSizeType size);
107+ void push (const U8* src, Fpy::StackSizeType size);
108108
109109 // pushes zero bytes to the stack
110110 void pushZeroes (Fpy::StackSizeType byteCount);
@@ -146,6 +146,14 @@ class FpySequencer : public FpySequencerComponentBase {
146146 FpySequencer_BlockState block // !< Return command status when complete or not
147147 ) override ;
148148
149+ // ! Handler implementation for command RUN_ARGS
150+ void RUN_ARGS_cmdHandler (FwOpcodeType opCode, // !< The opcode
151+ U32 cmdSeq, // !< The command sequence number
152+ const Fw::CmdStringArg& fileName, // !< The name of the sequence file
153+ Svc::FpySequencer_BlockState block, // !< Return command status when complete or not
154+ Svc::SeqArgs args // !< Arguments to pass to the sequencer
155+ ) override ;
156+
149157 // ! Handler for command VALIDATE
150158 // !
151159 // ! Loads and validates a sequence
@@ -154,12 +162,21 @@ class FpySequencer : public FpySequencerComponentBase {
154162 const Fw::CmdStringArg& fileName // !< The name of the sequence file
155163 ) override ;
156164
157- // ! Handler for command RUN_VALIDATED
165+ // ! Handler implementation for command VALIDATE_ARGS
166+ // !
167+ // ! Loads and validates a sequence with arguments
168+ void VALIDATE_ARGS_cmdHandler (FwOpcodeType opCode, // !< The opcode
169+ U32 cmdSeq, // !< The command sequence number
170+ const Fw::CmdStringArg& fileName, // !< The name of the sequence file
171+ Svc::SeqArgs buffer // !< Arguments to pass to the sequencer
172+ ) override ;
173+
174+ // ! Handler implementation for command RUN_VALIDATED
158175 // !
159- // ! Runs a previously validated sequence
160- void RUN_VALIDATED_cmdHandler (FwOpcodeType opCode, // !< The opcode
161- U32 cmdSeq, // !< The command sequence number
162- FpySequencer_BlockState block // !< Return command status when complete or not
176+ // ! Must be called after VALIDATE. Runs the sequence that was validated.
177+ void RUN_VALIDATED_cmdHandler (FwOpcodeType opCode, // !< The opcode
178+ U32 cmdSeq, // !< The command sequence number
179+ Svc:: FpySequencer_BlockState block // !< Return command status when complete or not
163180 ) override ;
164181
165182 // ! Handler for command CANCEL
@@ -253,6 +270,15 @@ class FpySequencer : public FpySequencerComponentBase {
253270 const Svc::FpySequencer_SequenceExecutionArgs& value // !< The value
254271 ) override ;
255272
273+ // ! Implementation for action setSequenceArguments of state machine Svc_FpySequencer_SequencerStateMachine
274+ // !
275+ // ! sets the arguments to pass to the sequence
276+ void Svc_FpySequencer_SequencerStateMachine_action_setSequenceArguments (
277+ SmId smId, // !< The state machine id
278+ Svc_FpySequencer_SequencerStateMachine::Signal signal, // !< The signal
279+ const Svc::FpySequencer_SequenceExecutionArgs& value // !< The value
280+ ) override ;
281+
256282 // ! Implementation for action validate of state machine Svc_FpySequencer_SequencerStateMachine
257283 // !
258284 // ! performs all steps necessary for sequence validation, and raises a signal result_success or result_failure
@@ -334,6 +360,14 @@ class FpySequencer : public FpySequencerComponentBase {
334360 Svc_FpySequencer_SequencerStateMachine::Signal signal // !< The signal
335361 ) override ;
336362
363+ // ! Implementation for action clearSequenceArguments of state machine Svc_FpySequencer_SequencerStateMachine
364+ // !
365+ // ! clears arguments
366+ void Svc_FpySequencer_SequencerStateMachine_action_clearSequenceArguments (
367+ SmId smId, // !< The state machine id
368+ Svc_FpySequencer_SequencerStateMachine::Signal signal // !< The signal
369+ ) override ;
370+
337371 // ! Implementation for action checkShouldWake of state machine Svc_FpySequencer_SequencerStateMachine
338372 // !
339373 // ! checks if sequencer should wake from sleep
@@ -366,6 +400,14 @@ class FpySequencer : public FpySequencerComponentBase {
366400 Svc_FpySequencer_SequencerStateMachine::Signal signal // !< The signal
367401 ) override ;
368402
403+ // ! Implementation for action pushArgsToStack of state machine Svc_FpySequencer_SequencerStateMachine
404+ // !
405+ // ! pushes sequence arguments to the stack
406+ void Svc_FpySequencer_SequencerStateMachine_action_pushArgsToStack (
407+ SmId smId, // !< The state machine id
408+ Svc_FpySequencer_SequencerStateMachine::Signal signal // !< The signal
409+ ) override ;
410+
369411 // ! Implementation for action clearBreakpoint of state machine Svc_FpySequencer_SequencerStateMachine
370412 // !
371413 // ! clears the breakpoint, allowing execution of the sequence to continue
@@ -470,7 +512,7 @@ class FpySequencer : public FpySequencerComponentBase {
470512 ) override ;
471513
472514 // ! Handler for input port seqRunIn
473- void seqRunIn_handler (FwIndexType portNum, const Fw::StringBase& filename) override ;
515+ void seqRunIn_handler (FwIndexType portNum, const Fw::StringBase& filename, const Svc::SeqArgs& args ) override ;
474516
475517 // ! Handler for input port pingIn
476518 void pingIn_handler (FwIndexType portNum, // !< The port number
@@ -600,6 +642,9 @@ class FpySequencer : public FpySequencerComponentBase {
600642 FwOpcodeType m_savedOpCode;
601643 U32 m_savedCmdSeq;
602644
645+ // sequence arguments to push to stack when entering RUNNING state
646+ Svc::SeqArgs m_sequenceArgs{};
647+
603648 // the goal state is the state that we're trying to reach in the sequencer
604649 // if it's RUNNING, then we should promptly go to RUNNING once we validate the
605650 // sequence. if it's VALID, we should wait after VALIDATING
0 commit comments