11 #ifndef Svc_CmdSequencerImpl_HPP 12 #define Svc_CmdSequencerImpl_HPP 23 namespace ImmediateBase{
class CmdSequencerTester; }
24 namespace Immediate{
class CmdSequencerTester; }
25 namespace ImmediateEOS{
class CmdSequencerTester; }
26 namespace Mixed{
class CmdSequencerTester; }
27 namespace MixedRelativeBase{
class CmdSequencerTester; }
28 namespace Relative{
class CmdSequencerTester; }
29 namespace JoinWait{
class CmdSequencerTester; }
111 const U32 recordNumber,
117 const U32 numRecords,
286 virtual void reset() = 0;
290 virtual void clear() = 0;
329 INITIAL_COMPUTED_VALUE = 0xFFFFFFFFU
412 bool deserializeHeader();
416 bool readRecordsAndCRC();
459 bool validateRecords();
482 friend class Svc::ImmediateBase::CmdSequencerTester;
483 friend class Svc::Immediate::CmdSequencerTester;
484 friend class Svc::ImmediateEOS::CmdSequencerTester;
485 friend class Svc::Mixed::CmdSequencerTester;
486 friend class Svc::MixedRelativeBase::CmdSequencerTester;
487 friend class Svc::Relative::CmdSequencerTester;
488 friend class Svc::JoinWait::CmdSequencerTester;
512 this->expirationTime = time;
517 this->m_state = CLEAR;
525 if (this->m_state == CLEAR) {
602 void cmdResponseIn_handler(
610 void schedIn_handler(
616 void seqRunIn_handler(
629 void seqCancelIn_handler(
641 void CS_AUTO_cmdHandler(
648 void CS_CANCEL_cmdHandler(
655 void CS_MANUAL_cmdHandler(
661 void CS_RUN_cmdHandler(
670 void CS_START_cmdHandler(
678 void CS_STEP_cmdHandler(
685 void CS_VALIDATE_cmdHandler(
695 void CS_JOIN_WAIT_cmdHandler(
713 void performCmd_Cancel();
716 void performCmd_Step();
719 void performCmd_Step_RELATIVE(
724 void performCmd_Step_ABSOLUTE(
729 void commandComplete(
734 void sequenceComplete();
764 FPrimeSequence m_FPrimeSequence;
767 Sequence *m_sequence;
773 U32 m_cancelCmdCount;
785 Sequence::Record m_record;
794 U32 m_totalExecutedCount;
797 U32 m_sequencesCompletedCount;
803 Timer m_cmdTimeoutTimer;
friend class CmdSequencerTester
friend class Svc::Mixed::CmdSequencerTester
void recordMismatch(const U32 numRecords, const U32 extraBytes)
Record mismatch.
Header m_header
The sequence header.
void setSequenceFormat(Sequence &sequence)
FwIdType FwOpcodeType
The type of a command opcode.
bool hasMoreRecords() const
PlatformSizeType FwSizeType
Events(Sequence &sequence)
Construct an Events object.
CmdSequencerComponentImpl(const char *compName)
Construct a CmdSequencer.
friend class Svc::ImmediateBase::CmdSequencerTester
bool loadFile(const Fw::StringBase &fileName)
Fw::Time m_timeTag
The time tag. NOTE: timeBase and context not filled in.
void fileReadError()
File read error.
Enum representing a command response.
friend class Svc::JoinWait::CmdSequencerTester
U8 FwTimeContextStoreType
The type used to serialize a time context value.
void recordInvalid(const U32 recordNumber, const I32 error)
Record invalid.
void allocateBuffer(FwEnumStoreType identifier, Fw::MemAllocator &allocator, FwSizeType bytes)
Give the sequence representation a memory buffer.
void setFileName(const Fw::StringBase &fileName)
Set the file name. Also sets the log file name.
SerializeStatus
forward declaration for string
void timeContextMismatch(const FwTimeContextStoreType currTimeContext, const FwTimeContextStoreType seqTimeContext)
Time context mismatch.
virtual bool hasMoreRecords() const =0
friend class Svc::Immediate::CmdSequencerTester
Fw::ExternalSerializeBuffer m_buffer
Serialize buffer to hold the binary sequence data.
~CmdSequencerComponentImpl()
Destroy a CmdDispatcherComponentBase.
Fw::ComBuffer m_command
The command.
Fw::CmdStringArg m_fileName
The sequence file name.
Container for computed and stored CRC values.
Fw::LogStringArg m_logFileName
Copy of file name for events.
FwEnumStoreType m_allocatorId
The allocator ID.
void allocateBuffer(const FwEnumStoreType identifier, Fw::MemAllocator &allocator, const FwSizeType bytes)
A sequence with unspecified binary format.
void timeBaseMismatch(const TimeBase currTimeBase, const TimeBase seqTimeBase)
Time base mismatch.
void deallocateBuffer(Fw::MemAllocator &allocator)
Deallocate the buffer.
void update(const BYTE *buffer, FwSizeType bufferSize)
Update computed CRC.
void fileInvalid(const CmdSequencer_FileReadStage::t stage, const I32 error)
File invalid.
External serialize buffer with no copy semantics.
FpySequencer_SequencerStateMachineStateMachineBase::State State
U32 m_computed
Computed CRC.
void nextRecord(Record &record)
friend class Svc::ImmediateEOS::CmdSequencerTester
FPrimeSequence(CmdSequencerComponentImpl &component)
Construct an FPrimeSequence.
void setTimeout(const U32 seconds)
Sequence event reporting.
void fileSizeError(const U32 size)
File size error.
Sequence(CmdSequencerComponentImpl &component)
Construct a Sequence object.
friend class Svc::MixedRelativeBase::CmdSequencerTester
Events m_events
Event reporting.
void deallocateBuffer(Fw::MemAllocator &allocator)
Return allocated buffer. Call during shutdown.
Record()
Construct a Record object.
void init()
Initialize computed CRC.
A sequence that uses the F Prime binary format.
virtual bool loadFile(const Fw::StringBase &fileName)=0
virtual ~Sequence()
Destroy a Sequence object.
Fw::LogStringArg & getLogFileName()
Defines a file class to validate files or generate a file validator file.
void fileCRCFailure(const U32 storedCRC, const U32 computedCRC)
File CRC failure.
PlatformIndexType FwIndexType
CmdSequencerComponentImpl & m_component
The enclosing component.
Auto-generated base for CmdSequencer component.
static Comparison compare(const Time &time1, const Time &time2)
Descriptor m_descriptor
The descriptor.
Fw::CmdStringArg & getFileName()
RateGroupDivider component implementation.
virtual void nextRecord(Record &record)=0
friend class Svc::Relative::CmdSequencerTester
void fileNotFound()
File not found.
Defines a base class for a memory allocator for classes.
void loadSequence(const Fw::StringBase &fileName)
U16 FwTimeBaseStoreType
The type used to serialize a time base value.
Sequencer blocking state.
void finalize()
Finalize computed CRC.
Fw::String m_stringFileName
Copy of file name for ports.
Fw::String & getStringFileName()
const Header & getHeader() const
Get the sequence header.