19 m_sequenceFilePath(
"<invalid_seq>"),
22 m_sequenceBlockState(),
26 m_sequencesStarted(0),
27 m_statementsDispatched(0),
51 this->m_savedOpCode = opCode;
52 this->m_savedCmdSeq = cmdSeq;
66 void FpySequencer::VALIDATE_cmdHandler(
FwOpcodeType opCode,
79 this->m_savedOpCode = opCode;
80 this->m_savedCmdSeq = cmdSeq;
89 void FpySequencer::RUN_VALIDATED_cmdHandler(
92 FpySequencer_BlockState block
103 this->m_savedOpCode = opCode;
104 this->m_savedCmdSeq = cmdSeq;
118 void FpySequencer::CANCEL_cmdHandler(
FwOpcodeType opCode,
140 void FpySequencer::DEBUG_SET_BREAKPOINT_cmdHandler(
156 void FpySequencer::DEBUG_BREAK_cmdHandler(
FwOpcodeType opCode,
167 FpySequencer_DebugBreakpointArgs(
true, breakOnce, this->m_runtime.nextStatementIndex));
176 void FpySequencer::DEBUG_CONTINUE_cmdHandler(
FwOpcodeType opCode,
194 void FpySequencer::DEBUG_CLEAR_BREAKPOINT_cmdHandler(
FwOpcodeType opCode,
245 U16 sequenceIndex =
static_cast<U16
>((cmdUid & 0xFFFF0000) >> 16);
246 U16 currentSequenceIndex =
static_cast<U16
>(this->m_sequencesStarted & 0xFFFF);
249 if (sequenceIndex != currentSequenceIndex) {
265 if (opCode != this->m_runtime.currentStatementOpcode ||
280 U16 cmdIndex =
static_cast<U16
>(cmdUid & 0xFFFF);
282 FW_ASSERT(this->m_statementsDispatched > 0);
283 U16 currentCmdIndex =
static_cast<U16
>((this->m_statementsDispatched - 1) & 0xFFFF);
285 if (cmdIndex != currentCmdIndex) {
302 this->m_runtime.nextStatementIndex - 1, this->m_sequenceFilePath,
340 if (this->m_runtime.nextStatementIndex >= this->m_sequenceObj.getheader().getstatementCount()) {
344 const Fpy::Statement& nextStmt = this->m_sequenceObj.
getstatements()[this->m_runtime.nextStatementIndex];
345 return FpySequencer_DebugTelemetry(
false, nextStmt.getopCode(), nextStmt.gettype());
367 FW_ASSERT(0, static_cast<FwAssertArgType>(
id));
372 bool FpySequencer::isRunningState(
State state) {
FwIdType FwOpcodeType
The type of a command opcode.
void pingIn_handler(FwIndexType portNum, U32 key) override
Handler for input port pingIn.
void sequencer_sendSignal_cmd_DEBUG_SET_BREAKPOINT(const Svc::FpySequencer_DebugBreakpointArgs &value)
Send signal cmd_DEBUG_SET_BREAKPOINT to state machine sequencer.
FwIdType FwPrmIdType
The type of a parameter identifier.
void tlmWrite_State(I32 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_StatementFailed(Svc::Fpy::StatementType stmtType, FwOpcodeType stmtOpcode, U32 stmtIdx, const Fw::StringBase &filePath, Fw::CmdResponse response) const
Log event StatementFailed.
void sequencer_sendSignal_stmtResponse_success()
Send signal stmtResponse_success to state machine sequencer.
void log_WARNING_LO_CmdResponseWhileNotRunningSequence(I32 state, FwOpcodeType opcode, Fw::CmdResponse response) const
Log event CmdResponseWhileNotRunningSequence.
void sequencer_sendSignal_cmd_VALIDATE(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_VALIDATE to state machine sequencer.
Enum representing a command response.
void tlmWrite_SequencesSucceeded(U64 arg, Fw::Time _tlmTime=Fw::Time())
void sequencer_sendSignal_stmtResponse_unexpected()
Send signal stmtResponse_unexpected to state machine sequencer.
void seqRunIn_handler(FwIndexType portNum, const Fw::StringBase &filename) override
Handler for input port seqRunIn.
Svc_FpySequencer_SequencerStateMachine::State sequencer_getState() const
Get the state of state machine instance sequencer.
void log_WARNING_HI_WrongCmdResponseOpcode(FwOpcodeType opcode, Fw::CmdResponse response, FwOpcodeType expectedOpcode) const
Log event WrongCmdResponseOpcode.
void tlmWrite_StatementsFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
void parametersLoaded() override
Called whenever parameters are loaded.
F32 paramGet_STATEMENT_TIMEOUT_SECS(Fw::ParamValid &valid)
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
void tlmWrite_handler(FwIndexType portNum, U32 context) override
Handler for input port tlmWrite.
void tlmWrite_DebugBreakpointIdx(U32 arg, Fw::Time _tlmTime=Fw::Time())
void sequencer_sendSignal_cmd_DEBUG_CLEAR_BREAKPOINT()
Send signal cmd_DEBUG_CLEAR_BREAKPOINT to state machine sequencer.
void sequencer_sendSignal_cmd_RUN_VALIDATED(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_RUN_VALIDATED to state machine sequencer.
void log_WARNING_LO_CmdResponseFromOldSequence(FwOpcodeType opcode, Fw::CmdResponse response, U16 oldSequenceIdx, U16 currentSequenceIdx) const
Log event CmdResponseFromOldSequence.
void sequencer_sendSignal_checkTimersIn()
Send signal checkTimersIn to state machine sequencer.
void tlmWrite_StatementsDispatched(U64 arg, Fw::Time _tlmTime=Fw::Time())
void log_ACTIVITY_HI_DebugBreakpointCleared() const
Log event DebugBreakpointCleared.
sequencer is not taking any action, waiting for a time in the future to continue
void parameterUpdated(FwPrmIdType id) override
Called whenever a parameter is updated.
sequencer is ready to load, validate and run a sequence
void sequencer_sendSignal_stmtResponse_failure()
Send signal stmtResponse_failure to state machine sequencer.
void log_WARNING_HI_InvalidSeqRunCall(I32 state) const
Log event InvalidSeqRunCall.
Command successfully executed.
Type_of_statements & getstatements()
Get member statements.
void tlmWrite_STATEMENT_TIMEOUT_SECS(F32 arg, Fw::Time _tlmTime=Fw::Time())
Command had execution error.
void sequencer_sendSignal_cmd_CANCEL()
Send signal cmd_CANCEL to state machine sequencer.
void log_WARNING_HI_InvalidCommand(I32 state) const
Log event InvalidCommand.
void cmdResponseIn_handler(FwIndexType portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response) override
Handler for input port cmdResponseIn.
void pingOut_out(FwIndexType portNum, U32 key)
Invoke output port pingOut.
void tlmWrite_SequencesFailed(U64 arg, Fw::Time _tlmTime=Fw::Time())
void checkTimers_handler(FwIndexType portNum, U32 context) override
Handler for input port checkTimers.
void sequencer_sendSignal_cmd_DEBUG_BREAK(const Svc::FpySequencer_DebugBreakpointArgs &value)
Send signal cmd_DEBUG_BREAK to state machine sequencer.
void tlmWrite_SeqPath(const Fw::StringBase &arg, Fw::Time _tlmTime=Fw::Time())
PlatformIndexType FwIndexType
sequencer is stepping into a single statement and dispatching it
void tlmWrite_Debug(const Svc::FpySequencer_DebugTelemetry &arg, Fw::Time _tlmTime=Fw::Time())
RateGroupDivider component implementation.
void log_WARNING_HI_CmdResponseWhileNotAwaiting(FwOpcodeType opcode, Fw::CmdResponse response) const
Log event CmdResponseWhileNotAwaiting.
Enum representing parameter validity.
Auto-generated base for FpySequencer component.
void sequencer_sendSignal_cmd_RUN(const Svc::FpySequencer_SequenceExecutionArgs &value)
Send signal cmd_RUN to state machine sequencer.
sequencer has validated the sequence and is waiting for a command to run it
void log_WARNING_HI_WrongCmdResponseIndex(FwOpcodeType opcode, Fw::CmdResponse response, U16 actualCmdIdx, U16 expectedCmdIdx) const
Log event WrongCmdResponseIndex.
void sequencer_sendSignal_cmd_DEBUG_CONTINUE()
Send signal cmd_DEBUG_CONTINUE to state machine sequencer.
void tlmWrite_SequencesCancelled(U64 arg, Fw::Time _tlmTime=Fw::Time())
FpySequencer(const char *const compName)