20 FwIndexType SeqDispatcher::getNextAvailableSequencerIdx() {
30 void SeqDispatcher::runSequence(
FwIndexType sequencerIdx,
38 FW_ASSERT(this->m_entryTable[sequencerIdx].state ==
40 this->m_entryTable[sequencerIdx].state);
43 this->m_entryTable[sequencerIdx].state =
46 this->m_entryTable[sequencerIdx].state =
50 this->m_sequencersAvailable--;
52 this->m_entryTable[sequencerIdx].sequenceRunning = fileName;
54 this->m_dispatchedCount++;
57 this->m_entryTable[sequencerIdx].sequenceRunning);
65 if (this->m_entryTable[portNum].state ==
67 this->m_entryTable[portNum].state ==
70 if (this->m_entryTable[portNum].sequenceRunning != fileName) {
75 this->m_entryTable[portNum].sequenceRunning = fileName;
85 this->m_entryTable[portNum].state =
87 this->m_entryTable[portNum].sequenceRunning = fileName;
88 this->m_sequencersAvailable--;
100 if (this->m_entryTable[portNum].state !=
102 this->m_entryTable[portNum].state !=
115 if (this->m_entryTable[portNum].state ==
120 this->m_entryTable[portNum].cmdSeq, response);
124 this->m_errorCount++;
133 this->m_entryTable[portNum].sequenceRunning =
"<no seq>";
134 this->m_sequencersAvailable++;
141 FwIndexType idx = this->getNextAvailableSequencerIdx();
154 void SeqDispatcher ::RUN_cmdHandler(
const FwOpcodeType opCode,
158 FwIndexType idx = this->getNextAvailableSequencerIdx();
166 this->runSequence(idx, fileName, block);
174 this->m_entryTable[idx].opCode = opCode;
175 this->m_entryTable[idx].cmdSeq = cmdSeq;
179 void SeqDispatcher::LOG_STATUS_cmdHandler(
PlatformIntType NATIVE_INT_TYPE
PlatformIndexType FwIndexType
@ SeqDispatcherSequencerPorts
Enum representing a command response.
@ EXECUTION_ERROR
Command had execution error.
@ OK
Command successfully executed.
Wait or don't wait for something.
@ RUNNING_SEQUENCE_NO_BLOCK
Auto-generated base for SeqDispatcher component.
void log_WARNING_LO_UnexpectedSequenceStarted(U16 idx, const Fw::StringBase &newSequence)
Log event UnexpectedSequenceStarted.
void tlmWrite_errorCount(U32 arg, Fw::Time _tlmTime=Fw::Time())
void cmdResponse_out(FwOpcodeType opCode, U32 cmdSeq, Fw::CmdResponse response)
Emit command response.
void log_WARNING_HI_ConflictingSequenceStarted(U16 idx, const Fw::StringBase &newSequence, const Fw::StringBase &sequenceInInternalState)
Log event ConflictingSequenceStarted.
void tlmWrite_dispatchedCount(U32 arg, Fw::Time _tlmTime=Fw::Time())
void log_WARNING_HI_NoAvailableSequencers()
Log event NoAvailableSequencers.
void log_ACTIVITY_LO_LogSequencerStatus(U16 idx, Svc::SeqDispatcher_CmdSequencerState state, const Fw::StringBase &filename)
Log event LogSequencerStatus.
bool isConnected_seqRunOut_OutputPort(FwIndexType portNum)
void seqRunOut_out(FwIndexType portNum, const Fw::StringBase &filename)
Invoke output port seqRunOut.
void log_WARNING_LO_UnknownSequenceFinished(U16 idx)
Log event UnknownSequenceFinished.
void tlmWrite_sequencersAvailable(U32 arg, Fw::Time _tlmTime=Fw::Time())
void seqDoneIn_handler(NATIVE_INT_TYPE portNum, FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdResponse &response)
Handler for input port seqDoneIn.
void seqStartIn_handler(NATIVE_INT_TYPE portNum, const Fw::StringBase &fileName)
Handler for input port seqStartIn.
void seqRunIn_handler(NATIVE_INT_TYPE portNum, const Fw::StringBase &fileName)
Handler for input port seqRunIn.
SeqDispatcher(const char *const compName)