* Add sequence dispatcher component * Add seq start port to cmd sequencer * Update author names and some include paths * Get fully compiling, move consts/enums to correct places, check for connections on init * Add spelling exceptions * Get unit tests almost compiling... * Fix string type in port, call component init in test * Fix unit test compilation errors and assertions * Switch back to using StringBase * Switch to FwIndexType, remove textLogIn * UpperCamel events, add warning for unexpected seq start * remove init method, add check for connected to getNextAvailableIdx * Update sdd, change event from low to high, static cast a portnum * Add state diagram, add more warnings, fix wrong header types, use assert instead of warning for runSeq --------- Co-authored-by: Zimri Leisher <zimri.leisher@fireflyspace.com>
2.4 KiB
components::SeqDispatcher
Dispatches command sequences to available command sequencers, allowing the spacecraft controllers to run multiple sequences at once without having to manually manage which CmdSequencers those sequences run on.
Usage
- Call the
RUNcommand just like you would call it on aCmdSequencer - If any connected
CmdSequenceris available, it will route the sequence to the first one it finds RUNcan be made blocking or non-blocking, just likeCmdSequencer'sRUN
State diagram
Port Descriptions
|Type| Name | Description | |async input|seqRunIn|Equivalent to the RUN cmd, dispatches a sequence to the first available sequencer| |output|seqRunOut|This is used by the SeqDispatcher to send sequence run calls to sequencers| |async input|seqDoneIn|Called by a command sequencer whenever it has finished any sequence| |async input|seqStartIn|Called by a command sequencer whenever it starts any sequence|
Commands
| Name | Description | |RUN|Dispatches a sequence to the first available sequencer| |LOG_STATUS|Logs via Events the state of each connected command sequencer|
Events
| Name | Description | |InvalidSequencer|The given sequencer index is invalid for an unspecified reason| |NoAvailableSequencers|There are no available sequencers to dispatch a sequence to| |UnknownSequenceFinished|We received a call to seqDoneIn that didn't have a corresponding seqStartIn call| |UnexpectedSequenceStarted|We received a call to seqStartIn but we didn't receive a call to seqDoneIn before that| |LogSequencerStatus|Shows the current state and sequence filename for a particular sequencer. Produced by the LOG_STATUS command|
Telemetry
| Name | Description | |dispatchedCount|Number of sequences dispatched| |errorCount|Number of sequences dispatched that returned an error. Note: if a sequence was run in non-blocking mode, even if the sequence errors out, this error count will never increase| |sequencersAvailable|Number of sequencers ready to run a sequence|
Unit Tests
Add unit test descriptions in the chart below
| Name | Description |
|testDispatch|Tests the basic dispatch functionality of the SeqDispatcher|
|testLogStatus|Tests the LOG_STATUS command|
Requirements
Add requirements in the chart below
| Name | Description | Validation |
|---|---|---|
| --- | --- | --- |
