currently getting invalid use of incomplete type in Svc/CmdSequencer

This commit is contained in:
Josh Weadick 2021-06-16 12:55:24 -07:00
parent cd4a191940
commit d5611b3cf2
15 changed files with 847 additions and 56 deletions

View File

@ -13,6 +13,8 @@ set(SOURCE_FILES
"${CMAKE_CURRENT_LIST_DIR}/FPrimeSequence.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Sequence.cpp"
"${CMAKE_CURRENT_LIST_DIR}/formats/AMPCSSequence.cpp"
"${CMAKE_CURRENT_LIST_DIR}/CmdSequencer_FileReadStageEnumAi.xml"
"${CMAKE_CURRENT_LIST_DIR}/CmdSequencer_SeqModeEnumAi.xml"
)
register_fprime_module()

View File

@ -0,0 +1,44 @@
module Svc {
active component CmdSequencer {
@ FPP from XML: original path was Svc/CmdSequencer/Commands.xml
include "Commands.fppi"
@ FPP from XML: original path was Svc/CmdSequencer/Telemetry.xml
include "Telemetry.fppi"
@ FPP from XML: original path was Svc/CmdSequencer/Events.xml
include "Events.fppi"
command reg port cmdRegOut
text event port LogText
async input port pingIn: [1] Svc.Ping
telemetry port tlmOut
command resp port cmdResponseOut
time get port timeCaller
output port comCmdOut: [1] Fw.Com
output port pingOut: [1] Svc.Ping
async input port cmdResponseIn: [1] Fw.CmdResponse
command recv port cmdIn
async input port schedIn: [1] Svc.Sched
async input port seqRunIn: [1] Svc.CmdSeqIn
event port logOut
output port seqDone: [1] Fw.CmdResponse
}
}

View File

@ -1,65 +1,485 @@
<?xml version="1.0" encoding="UTF-8"?>
<component name="CmdSequencer" kind="active" namespace="Svc" modeler="true">
<!-- =====================================================================
CmdSequencerComponentAi.xml
Generated by fpp-to-xml
====================================================================== -->
<component namespace="Svc" name="CmdSequencer" kind="active">
<import_port_type>Fw/Cmd/CmdRegPortAi.xml</import_port_type>
<import_port_type>Fw/Log/LogTextPortAi.xml</import_port_type>
<import_port_type>Svc/Ping/PingPortAi.xml</import_port_type>
<import_port_type>Fw/Tlm/TlmPortAi.xml</import_port_type>
<import_port_type>Fw/Cmd/CmdResponsePortAi.xml</import_port_type>
<import_port_type>Fw/Time/TimePortAi.xml</import_port_type>
<import_port_type>Fw/Com/ComPortAi.xml</import_port_type>
<import_port_type>Fw/Cmd/CmdPortAi.xml</import_port_type>
<import_port_type>Svc/Sched/SchedPortAi.xml</import_port_type>
<import_port_type>Svc/Seq/CmdSeqInPortAi.xml</import_port_type>
<import_port_type>Fw/Log/LogPortAi.xml</import_port_type>
<import_dictionary>Svc/CmdSequencer/Commands.xml</import_dictionary>
<import_dictionary>Svc/CmdSequencer/Telemetry.xml</import_dictionary>
<import_dictionary>Svc/CmdSequencer/Events.xml</import_dictionary>
<ports>
<import_enum_type>Svc/CmdSequencer/CmdSequencer_FileReadStageEnumAi.xml</import_enum_type>
<import_enum_type>Svc/CmdSequencer/CmdSequencer_SeqModeEnumAi.xml</import_enum_type>
<import_port_type>Fw/Cmd/CmdPortAi.xml</import_port_type>
<import_port_type>Fw/Cmd/CmdRegPortAi.xml</import_port_type>
<import_port_type>Fw/Cmd/CmdResponsePortAi.xml</import_port_type>
<import_port_type>Fw/Com/ComPortAi.xml</import_port_type>
<import_port_type>Fw/Log/LogPortAi.xml</import_port_type>
<import_port_type>Fw/Log/LogTextPortAi.xml</import_port_type>
<import_port_type>Fw/Time/TimePortAi.xml</import_port_type>
<import_port_type>Fw/Tlm/TlmPortAi.xml</import_port_type>
<import_port_type>Svc/Ping/PingPortAi.xml</import_port_type>
<import_port_type>Svc/Sched/SchedPortAi.xml</import_port_type>
<import_port_type>Svc/Seq/CmdSeqInPortAi.xml</import_port_type>
<port name="cmdRegOut" data_type="Fw::CmdReg" kind="output" role="CmdRegistration" max_number="1">
</port>
<ports>
<port name="LogText" data_type="Fw::LogText" kind="output" role="LogTextEvent" max_number="1"/>
<port name="cmdIn" data_type="Fw::Cmd" kind="input" role="Cmd" max_number="1"/>
<port name="cmdRegOut" data_type="Fw::CmdReg" kind="output" role="CmdRegistration" max_number="1"/>
<port name="cmdResponseIn" data_type="Fw::CmdResponse" kind="async_input" max_number="1" full="assert"/>
<port name="cmdResponseOut" data_type="Fw::CmdResponse" kind="output" role="CmdResponse" max_number="1"/>
<port name="comCmdOut" data_type="Fw::Com" kind="output" max_number="1"/>
<port name="logOut" data_type="Fw::Log" kind="output" role="LogEvent" max_number="1"/>
<port name="pingIn" data_type="Svc::Ping" kind="async_input" max_number="1" full="assert"/>
<port name="pingOut" data_type="Svc::Ping" kind="output" max_number="1"/>
<port name="schedIn" data_type="Svc::Sched" kind="async_input" max_number="1" full="assert"/>
<port name="seqDone" data_type="Fw::CmdResponse" kind="output" max_number="1"/>
<port name="seqRunIn" data_type="Svc::CmdSeqIn" kind="async_input" max_number="1" full="assert"/>
<port name="timeCaller" data_type="Fw::Time" kind="output" role="TimeGet" max_number="1"/>
<port name="tlmOut" data_type="Fw::Tlm" kind="output" role="Telemetry" max_number="1"/>
</ports>
<port name="LogText" data_type="Fw::LogText" kind="output" role="LogTextEvent" max_number="1">
</port>
<commands>
<command kind="async" opcode="0x0" mnemonic="CS_RUN" full="assert">
<comment>
Run a command sequence file
</comment>
<args>
<arg name="fileName" type="string" size="240">
<comment>
The name of the sequence file
</comment>
</arg>
</args>
</command>
<command kind="async" opcode="0x1" mnemonic="CS_VALIDATE" full="assert">
<comment>
Validate a command sequence file
</comment>
<args>
<arg name="fileName" type="string" size="240">
<comment>
The name of the sequence file
</comment>
</arg>
</args>
</command>
<command kind="async" opcode="0x2" mnemonic="CS_CANCEL" full="assert">
<comment>
Cancel a command sequence
</comment>
</command>
<command kind="async" opcode="0x3" mnemonic="CS_START" full="assert">
<comment>
Start running a command sequence
</comment>
</command>
<command kind="async" opcode="0x4" mnemonic="CS_STEP" full="assert">
<comment>
Perform one step in a command sequence. Valid only if CmdSequencer is in MANUAL run mode.
</comment>
</command>
<command kind="async" opcode="0x5" mnemonic="CS_AUTO" full="assert">
<comment>
Set the run mode to AUTO.
</comment>
</command>
<command kind="async" opcode="0x6" mnemonic="CS_MANUAL" full="assert">
<comment>
Set the run mode to MANUAL.
</comment>
</command>
</commands>
<port name="pingIn" data_type="Svc::Ping" kind="async_input" max_number="1">
</port>
<events>
<event id="0x0" name="CS_SequenceLoaded" severity="ACTIVITY_LO" format_string="Loaded sequence %s">
<comment>
Sequence file was successfully loaded.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
</args>
</event>
<event id="0x1" name="CS_SequenceCanceled" severity="ACTIVITY_HI" format_string="Sequence file %s canceled">
<comment>
A command sequence was successfully canceled.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
</args>
</event>
<event id="0x2" name="CS_FileReadError" severity="WARNING_HI" format_string="Error reading sequence file %s">
<comment>
The Sequence File Loader could not read the sequence file.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
</args>
</event>
<event id="0x3" name="CS_FileInvalid" severity="WARNING_HI" format_string="Sequence file %s invalid. Stage: %s Error: %d">
<comment>
The sequence file format was invalid.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
<arg name="stage" type="Svc::CmdSequencer_FileReadStage">
<comment>
The read stage
</comment>
</arg>
<arg name="error" type="I32">
<comment>
The error code
</comment>
</arg>
</args>
</event>
<event id="0x4" name="CS_RecordInvalid" severity="WARNING_HI" format_string="Sequence file %s: Record %u invalid. Err: %d">
<comment>
The format of a command record was invalid.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
<arg name="recordNumber" type="U32">
<comment>
The record number
</comment>
</arg>
<arg name="error" type="I32">
<comment>
The error code
</comment>
</arg>
</args>
</event>
<event id="0x5" name="CS_FileSizeError" severity="WARNING_HI" format_string="Sequence file %s too large. Size: %u">
<comment>
The sequence file was too large.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
<arg name="size" type="U32">
<comment>
Invalid size
</comment>
</arg>
</args>
</event>
<event id="0x6" name="CS_FileNotFound" severity="WARNING_HI" format_string="Sequence file %s not found.">
<comment>
The sequence file was not found
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The sequence file
</comment>
</arg>
</args>
</event>
<event id="0x7" name="CS_FileCrcFailure" severity="WARNING_HI" format_string="Sequence file %s had invalid CRC. Stored %u, Computed %u.">
<comment>
The sequence file validation failed
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The sequence file
</comment>
</arg>
<arg name="storedCRC" type="U32">
<comment>
The CRC stored in the file
</comment>
</arg>
<arg name="computedCRC" type="U32">
<comment>
The CRC computed over the file
</comment>
</arg>
</args>
</event>
<event id="0x8" name="CS_CommandComplete" severity="ACTIVITY_LO" format_string="Sequence file %s: Command %u (opcode %u) complete">
<comment>
The Command Sequencer issued a command and received a success status in return.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
<arg name="recordNumber" type="U32">
<comment>
The record number of the command
</comment>
</arg>
<arg name="opCode" type="U32">
<comment>
The command opcode
</comment>
</arg>
</args>
</event>
<event id="0x9" name="CS_SequenceComplete" severity="ACTIVITY_HI" format_string="Sequence file %s complete">
<comment>
A command sequence successfully completed.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
</args>
</event>
<event id="0xA" name="CS_CommandError" severity="WARNING_HI" format_string="Sequence file %s: Command %u (opcode %u) completed with error %u">
<comment>
The Command Sequencer issued a command and received an error status in return.
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
<arg name="recordNumber" type="U32">
<comment>
The record number
</comment>
</arg>
<arg name="opCode" type="U32">
<comment>
The opcode
</comment>
</arg>
<arg name="errorStatus" type="U32">
<comment>
The error status
</comment>
</arg>
</args>
</event>
<event id="0xB" name="CS_InvalidMode" severity="WARNING_HI" format_string="Invalid mode">
<comment>
The Command Sequencer received a command that was invalid for its current mode.
</comment>
</event>
<event id="0xC" name="CS_RecordMismatch" severity="WARNING_HI" format_string="Sequence file %s header records mismatch: %u in header, found %u extra bytes.">
<comment>
Number of records in header doesn't match number in file
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
<arg name="header_records" type="U32">
<comment>
The number of records in the header
</comment>
</arg>
<arg name="extra_bytes" type="U32">
<comment>
The number of bytes beyond last record
</comment>
</arg>
</args>
</event>
<event id="0xD" name="CS_TimeBaseMismatch" severity="WARNING_HI" format_string="Sequence file %s: Current time base doesn't match sequence time: base: %u seq: %u">
<comment>
The running time base doesn't match the time base in the sequence files
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
<arg name="time_base" type="U16">
<comment>
The current time
</comment>
</arg>
<arg name="seq_time_base" type="U16">
<comment>
The sequence time base
</comment>
</arg>
</args>
</event>
<event id="0xE" name="CS_TimeContextMismatch" severity="WARNING_HI" format_string="Sequence file %s: Current time context doesn't match sequence context: base: %u seq: %u">
<comment>
The running time base doesn't match the time base in the sequence files
</comment>
<args>
<arg name="fileName" type="string" size="60">
<comment>
The name of the sequence file
</comment>
</arg>
<arg name="currTimeBase" type="U8">
<comment>
The current time base
</comment>
</arg>
<arg name="seqTimeBase" type="U8">
<comment>
The sequence time base
</comment>
</arg>
</args>
</event>
<event id="0xF" name="CS_PortSequenceStarted" severity="ACTIVITY_HI" format_string="Local request for sequence %s started.">
<comment>
A local port request to run a sequence was started
</comment>
<args>
<arg name="filename" type="string" size="60">
<comment>
The sequence file
</comment>
</arg>
</args>
</event>
<event id="0x10" name="CS_UnexpectedCompletion" severity="WARNING_HI" format_string="Command complete status received while no sequences active. Opcode: %u">
<comment>
A command status came back when no sequence was running
</comment>
<args>
<arg name="opcode" type="U32">
<comment>
The reported opcode
</comment>
</arg>
</args>
</event>
<event id="0x11" name="CS_ModeSwitched" severity="ACTIVITY_HI" format_string="Sequencer switched to %s step mode">
<comment>
Switched step mode
</comment>
<args>
<arg name="mode" type="Svc::CmdSequencer_SeqMode">
<comment>
The new mode
</comment>
</arg>
</args>
</event>
<event id="0x12" name="CS_NoSequenceActive" severity="WARNING_LO" format_string="No sequence active.">
<comment>
A sequence related command came with no active sequence
</comment>
</event>
<event id="0x13" name="CS_SequenceValid" severity="ACTIVITY_HI" format_string="Sequence %s is valid.">
<comment>
A sequence passed validation
</comment>
<args>
<arg name="filename" type="string" size="60">
<comment>
The sequence file
</comment>
</arg>
</args>
</event>
<event id="0x14" name="CS_SequenceTimeout" severity="WARNING_HI" format_string="Sequence %s timed out on command %u">
<comment>
A sequence passed validation
</comment>
<args>
<arg name="filename" type="string" size="60">
<comment>
The sequence file
</comment>
</arg>
<arg name="command" type="U32">
<comment>
The command that timed out
</comment>
</arg>
</args>
</event>
<event id="0x15" name="CS_CmdStepped" severity="ACTIVITY_HI" format_string="Sequence %s command %u stepped">
<comment>
A command in a sequence was stepped through
</comment>
<args>
<arg name="filename" type="string" size="60">
<comment>
The sequence file
</comment>
</arg>
<arg name="command" type="U32">
<comment>
The command that was stepped
</comment>
</arg>
</args>
</event>
<event id="0x16" name="CS_CmdStarted" severity="ACTIVITY_HI" format_string="Sequence %s started">
<comment>
A manual sequence was started
</comment>
<args>
<arg name="filename" type="string" size="60">
<comment>
The sequence file
</comment>
</arg>
</args>
</event>
</events>
<port name="tlmOut" data_type="Fw::Tlm" kind="output" role="Telemetry" max_number="1">
</port>
<port name="cmdResponseOut" data_type="Fw::CmdResponse" kind="output" role="CmdResponse" max_number="1">
</port>
<port name="timeCaller" data_type="Fw::Time" kind="output" role="TimeGet" max_number="1">
</port>
<port name="comCmdOut" data_type="Fw::Com" kind="output" max_number="1">
</port>
<port name="pingOut" data_type="Svc::Ping" kind="output" max_number="1">
</port>
<port name="cmdResponseIn" data_type="Fw::CmdResponse" kind="async_input" max_number="1">
</port>
<port name="cmdIn" data_type="Fw::Cmd" kind="input" role="Cmd" max_number="1">
</port>
<port name="schedIn" data_type="Svc::Sched" kind="async_input" max_number="1">
</port>
<port name="seqRunIn" data_type="Svc::CmdSeqIn" kind="async_input" max_number="1">
</port>
<port name="logOut" data_type="Fw::Log" kind="output" role="LogEvent" max_number="1">
</port>
<port name="seqDone" data_type="Fw::CmdResponse" kind="output" max_number="1">
</port>
</ports>
<telemetry>
<channel id="0x0" name="CS_LoadCommands" data_type="U32" update="always">
<comment>
The number of Load commands executed
</comment>
</channel>
<channel id="0x1" name="CS_CancelCommands" data_type="U32" update="always">
<comment>
The number of Cancel commands executed
</comment>
</channel>
<channel id="0x2" name="CS_Errors" data_type="U32" update="always">
<comment>
The number of errors that have occurred
</comment>
</channel>
<channel id="0x3" name="CS_CommandsExecuted" data_type="U32" update="always">
<comment>
The number of commands executed across all sequences.
</comment>
</channel>
<channel id="0x4" name="CS_SequencesCompleted" data_type="U32" update="always">
<comment>
The number of sequences completed.
</comment>
</channel>
</telemetry>
</component>

View File

@ -21,6 +21,9 @@
namespace Svc {
typedef CmdSequencer_FileReadStage FileReadStage;
typedef CmdSequencer_SeqMode SeqMode;
class CmdSequencerComponentImpl :
public CmdSequencerComponentBase
{

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- =====================================================================
CmdSequencer_FileReadStageEnumAi.xml
Generated by fpp-to-xml
====================================================================== -->
<enum namespace="Svc" name="CmdSequencer_FileReadStage">
<item name="SEQ_READ_HEADER" value="0"/>
<item name="SEQ_READ_HEADER_SIZE" value="1"/>
<item name="SEQ_DESER_SIZE" value="2"/>
<item name="SEQ_DESER_NUM_RECORDS" value="3"/>
<item name="SEQ_DESER_TIME_BASE" value="4"/>
<item name="SEQ_DESER_TIME_CONTEXT" value="5"/>
<item name="SEQ_READ_SEQ_CRC" value="6"/>
<item name="SEQ_READ_SEQ_DATA" value="7"/>
<item name="SEQ_READ_SEQ_DATA_SIZE" value="8"/>
</enum>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- =====================================================================
CmdSequencer_SeqModeEnumAi.xml
Generated by fpp-to-xml
====================================================================== -->
<enum namespace="Svc" name="CmdSequencer_SeqMode">
<item name="SEQ_STEP_MODE" value="0"/>
<item name="SEQ_AUTO_MODE" value="1"/>
</enum>

View File

@ -0,0 +1,31 @@
@ Run a command sequence file
async command CS_RUN(
fileName: string size 240 @< The name of the sequence file
) \
opcode 0
@ Validate a command sequence file
async command CS_VALIDATE(
fileName: string size 240 @< The name of the sequence file
) \
opcode 1
@ Cancel a command sequence
async command CS_CANCEL \
opcode 2
@ Start running a command sequence
async command CS_START \
opcode 3
@ Perform one step in a command sequence. Valid only if CmdSequencer is in MANUAL run mode.
async command CS_STEP \
opcode 4
@ Set the run mode to AUTO.
async command CS_AUTO \
opcode 5
@ Set the run mode to MANUAL.
async command CS_MANUAL \
opcode 6

View File

@ -0,0 +1,217 @@
@ Sequence file was successfully loaded.
event CS_SequenceLoaded(
fileName: string size 60 @< The name of the sequence file
) \
severity activity low \
id 0 \
format "Loaded sequence {}"
@ A command sequence was successfully canceled.
event CS_SequenceCanceled(
fileName: string size 60 @< The name of the sequence file
) \
severity activity high \
id 1 \
format "Sequence file {} canceled"
@ The Sequence File Loader could not read the sequence file.
event CS_FileReadError(
fileName: string size 60 @< The name of the sequence file
) \
severity warning high \
id 2 \
format "Error reading sequence file {}"
enum FileReadStage {
SEQ_READ_HEADER = 0
SEQ_READ_HEADER_SIZE = 1
SEQ_DESER_SIZE = 2
SEQ_DESER_NUM_RECORDS = 3
SEQ_DESER_TIME_BASE = 4
SEQ_DESER_TIME_CONTEXT = 5
SEQ_READ_SEQ_CRC = 6
SEQ_READ_SEQ_DATA = 7
SEQ_READ_SEQ_DATA_SIZE = 8
}
@ The sequence file format was invalid.
event CS_FileInvalid(
fileName: string size 60 @< The name of the sequence file
stage: FileReadStage @< The read stage
error: I32 @< The error code
) \
severity warning high \
id 3 \
format "Sequence file {} invalid. Stage: {} Error: {}"
@ The format of a command record was invalid.
event CS_RecordInvalid(
fileName: string size 60 @< The name of the sequence file
recordNumber: U32 @< The record number
error: I32 @< The error code
) \
severity warning high \
id 4 \
format "Sequence file {}: Record {} invalid. Err: {}"
@ The sequence file was too large.
event CS_FileSizeError(
fileName: string size 60 @< The name of the sequence file
$size: U32 @< Invalid size
) \
severity warning high \
id 5 \
format "Sequence file {} too large. Size: {}"
@ The sequence file was not found
event CS_FileNotFound(
fileName: string size 60 @< The sequence file
) \
severity warning high \
id 6 \
format "Sequence file {} not found."
@ The sequence file validation failed
event CS_FileCrcFailure(
fileName: string size 60 @< The sequence file
storedCRC: U32 @< The CRC stored in the file
computedCRC: U32 @< The CRC computed over the file
) \
severity warning high \
id 7 \
format "Sequence file {} had invalid CRC. Stored {}, Computed {}."
@ The Command Sequencer issued a command and received a success status in return.
event CS_CommandComplete(
fileName: string size 60 @< The name of the sequence file
recordNumber: U32 @< The record number of the command
opCode: U32 @< The command opcode
) \
severity activity low \
id 8 \
format "Sequence file {}: Command {} (opcode {}) complete"
@ A command sequence successfully completed.
event CS_SequenceComplete(
fileName: string size 60 @< The name of the sequence file
) \
severity activity high \
id 9 \
format "Sequence file {} complete"
@ The Command Sequencer issued a command and received an error status in return.
event CS_CommandError(
fileName: string size 60 @< The name of the sequence file
recordNumber: U32 @< The record number
opCode: U32 @< The opcode
errorStatus: U32 @< The error status
) \
severity warning high \
id 10 \
format "Sequence file {}: Command {} (opcode {}) completed with error {}"
@ The Command Sequencer received a command that was invalid for its current mode.
event CS_InvalidMode \
severity warning high \
id 11 \
format "Invalid mode"
@ Number of records in header doesn't match number in file
event CS_RecordMismatch(
fileName: string size 60 @< The name of the sequence file
header_records: U32 @< The number of records in the header
extra_bytes: U32 @< The number of bytes beyond last record
) \
severity warning high \
id 12 \
format "Sequence file {} header records mismatch: {} in header, found {} extra bytes."
@ The running time base doesn't match the time base in the sequence files
event CS_TimeBaseMismatch(
fileName: string size 60 @< The name of the sequence file
time_base: U16 @< The current time
seq_time_base: U16 @< The sequence time base
) \
severity warning high \
id 13 \
format "Sequence file {}: Current time base doesn't match sequence time: base: {} seq: {}"
@ The running time base doesn't match the time base in the sequence files
event CS_TimeContextMismatch(
fileName: string size 60 @< The name of the sequence file
currTimeBase: U8 @< The current time base
seqTimeBase: U8 @< The sequence time base
) \
severity warning high \
id 14 \
format "Sequence file {}: Current time context doesn't match sequence context: base: {} seq: {}"
@ A local port request to run a sequence was started
event CS_PortSequenceStarted(
filename: string size 60 @< The sequence file
) \
severity activity high \
id 15 \
format "Local request for sequence {} started."
@ A command status came back when no sequence was running
event CS_UnexpectedCompletion(
$opcode: U32 @< The reported opcode
) \
severity warning high \
id 16 \
format "Command complete status received while no sequences active. Opcode: {}"
enum SeqMode {
SEQ_STEP_MODE = 0
SEQ_AUTO_MODE = 1
}
@ Switched step mode
event CS_ModeSwitched(
mode: SeqMode @< The new mode
) \
severity activity high \
id 17 \
format "Sequencer switched to {} step mode"
@ A sequence related command came with no active sequence
event CS_NoSequenceActive \
severity warning low \
id 18 \
format "No sequence active."
@ A sequence passed validation
event CS_SequenceValid(
filename: string size 60 @< The sequence file
) \
severity activity high \
id 19 \
format "Sequence {} is valid."
@ A sequence passed validation
event CS_SequenceTimeout(
filename: string size 60 @< The sequence file
$command: U32 @< The command that timed out
) \
severity warning high \
id 20 \
format "Sequence {} timed out on command {}"
@ A command in a sequence was stepped through
event CS_CmdStepped(
filename: string size 60 @< The sequence file
$command: U32 @< The command that was stepped
) \
severity activity high \
id 21 \
format "Sequence {} command {} stepped"
@ A manual sequence was started
event CS_CmdStarted(
filename: string size 60 @< The sequence file
) \
severity activity high \
id 22 \
format "Sequence {} started"

View File

@ -0,0 +1,14 @@
@ The number of Load commands executed
telemetry CS_LoadCommands: U32 id 0
@ The number of Cancel commands executed
telemetry CS_CancelCommands: U32 id 1
@ The number of errors that have occurred
telemetry CS_Errors: U32 id 2
@ The number of commands executed across all sequences.
telemetry CS_CommandsExecuted: U32 id 3
@ The number of sequences completed.
telemetry CS_SequencesCompleted: U32 id 4

6
Svc/CmdSequencer/all.do Normal file
View File

@ -0,0 +1,6 @@
#!/bin/sh -e
. ./defs.sh
redo-ifchange xml
update xml/*.xml

View File

@ -0,0 +1,5 @@
#!/bin/sh -e
. ./defs.sh
clean_do

6
Svc/CmdSequencer/defs.sh Normal file
View File

@ -0,0 +1,6 @@
#!/bin/sh -e
export FPRIME_ROOT=../..
export FPP_FILES=`basename $PWD`.fpp
. $FPRIME_ROOT/defs-root.sh

View File

@ -0,0 +1,5 @@
#!/bin/sh -e
. ./defs.sh
depend_do "$@"

View File

@ -0,0 +1,6 @@
#!/bin/sh -e
. ./defs.sh
redo-always
locate_uses_do "$@" 1>&2

5
Svc/CmdSequencer/xml.do Normal file
View File

@ -0,0 +1,5 @@
#!/bin/sh
. ./defs.sh
xml_do "$@"