F´ Flight Software - C/C++ Documentation  NASA-v1.5.0
A framework for building embedded system applications to NASA flight quality standards.
CmdSequencerImpl.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title CmdSequencerImpl.hpp
3 // \author Bocchino/Canham
4 // \brief hpp file for CmdSequencer component implementation class
5 //
6 // \copyright
7 // Copyright (C) 2009-2018 California Institute of Technology.
8 // ALL RIGHTS RESERVED. United States Government Sponsorship
9 // acknowledged.
10 //
11 // ======================================================================
12 
13 #ifndef Svc_CmdSequencerImpl_HPP
14 #define Svc_CmdSequencerImpl_HPP
15 
16 #include "Fw/Com/ComBuffer.hpp"
18 #include "Os/File.hpp"
19 #include "Os/ValidateFile.hpp"
21 
22 namespace Svc {
23 
26  {
27 
28  PRIVATE:
29 
30  // ----------------------------------------------------------------------
31  // Private enumerations
32  // ----------------------------------------------------------------------
33 
35  enum RunMode {
36  STOPPED, RUNNING
37  };
38 
40  enum StepMode {
41  AUTO, MANUAL
42  };
43 
44  public:
45 
46  // ----------------------------------------------------------------------
47  // Public classes
48  // ----------------------------------------------------------------------
49 
52  class Sequence {
53 
54  public:
55 
58  class Events {
59 
60  public:
61 
63  struct FileReadStage {
64 
65  typedef enum {
75  } t;
76 
80  const t fileReadStage
81  );
82 
83  };
84 
85  public:
86 
88  Events(
89  Sequence& sequence
90  );
91 
92  public:
93 
95  void fileCRCFailure(
96  const U32 storedCRC,
97  const U32 computedCRC
98  );
99 
101  void fileInvalid(
102  const FileReadStage::t stage,
103  const I32 error
104  );
105 
107  void fileNotFound(void);
108 
110  void fileReadError(void);
111 
113  void fileSizeError(
114  const U32 size
115  );
116 
118  void recordInvalid(
119  const U32 recordNumber,
120  const I32 error
121  );
122 
124  void recordMismatch(
125  const U32 numRecords,
126  const U32 extraBytes
127  );
128 
130  void timeBaseMismatch(
131  const FwTimeBaseStoreType currTimeBase,
132  const FwTimeBaseStoreType seqTimeBase
133  );
134 
136  void timeContextMismatch(
137  const FwTimeContextStoreType currTimeContext,
138  const FwTimeContextStoreType seqTimeContext
139  );
140 
142 
145 
146  };
147 
148  public:
149 
151  Sequence(
152  CmdSequencerComponentImpl& component
153  );
154 
156  virtual ~Sequence(void);
157 
158  public:
159 
162  class Header {
163 
164  public:
165 
166  enum Constants {
169  sizeof(U32) +
170  sizeof(U32) +
171  sizeof(FwTimeBaseStoreType) +
172  sizeof(FwTimeContextStoreType)
173  };
174 
175  public:
176 
178  Header(void);
179 
180  public:
181 
184  bool validateTime(
185  CmdSequencerComponentImpl& component
186  );
187 
188  public:
189 
192 
195 
198 
201 
202  };
203 
204  public:
205 
208  class Record {
209 
210  public:
211 
212  enum Descriptor {
216  };
217 
218  public:
219 
221  Record(void) :
223  {
224 
225  }
226 
227  public:
228 
231 
234 
237 
238  };
239 
240  public:
241 
243  void allocateBuffer(
244  const NATIVE_INT_TYPE identifier,
245  Fw::MemAllocator& allocator,
246  const NATIVE_UINT_TYPE bytes
247  );
248 
250  void deallocateBuffer(
251  Fw::MemAllocator& allocator
252  );
253 
256 
260 
264 
266  const Header& getHeader(void) const;
267 
270  virtual bool loadFile(
271  const Fw::CmdStringArg& fileName
272  ) = 0;
273 
276  virtual bool hasMoreRecords(void) const = 0;
277 
280  virtual void nextRecord(
281  Record& record
282  ) = 0;
283 
287  virtual void reset(void) = 0;
288 
291  virtual void clear(void) = 0;
292 
294 
296  CmdSequencerComponentImpl& m_component;
297 
300 
303 
306 
309 
312 
315 
316  };
317 
321  public Sequence
322  {
323 
324  PRIVATE:
325 
326  enum Constants {
327  INITIAL_COMPUTED_VALUE = 0xFFFFFFFFU
328  };
329 
330  public:
331 
334  struct CRC {
335 
337  CRC(void);
338 
340  void init(void);
341 
343  void update(
344  const BYTE* buffer,
345  NATIVE_UINT_TYPE bufferSize
346  );
347 
349  void finalize(void);
350 
353 
355  U32 m_stored;
356 
357  };
358 
359  public:
360 
363  CmdSequencerComponentImpl& component
364  );
365 
366  public:
367 
370  bool loadFile(
371  const Fw::CmdStringArg& fileName
372  );
373 
376  bool hasMoreRecords(void) const;
377 
380  void nextRecord(
381  Record& record
382  );
383 
387  void reset(void);
388 
391  void clear(void);
392 
394 
397  bool readFile(void);
398 
401  bool readOpenFile(void);
402 
406  bool readHeader(void);
407 
410  bool deserializeHeader(void);
411 
414  bool readRecordsAndCRC(void);
415 
418  bool extractCRC(void);
419 
422  bool validateCRC(void);
423 
427  Record& record
428  );
429 
433  Record::Descriptor& descriptor
434  );
435 
439  Fw::Time& timeTag
440  );
441 
445  U32& recordSize
446  );
447 
451  Fw::ComBuffer& comBuffer,
452  const U32 recordSize
453  );
454 
457  bool validateRecords(void);
458 
460 
462  CRC m_crc;
463 
466 
467  };
468 
470 
471  // ----------------------------------------------------------------------
472  // Private classes
473  // ----------------------------------------------------------------------
474 
477  class Timer {
478 
479  PRIVATE:
480 
482  typedef enum {
483  SET, CLEAR
484  } State;
485 
486  public:
487 
489  Timer(void) :
490  m_state(CLEAR)
491  {
492 
493  }
494 
496  void set(
497  Fw::Time time
498  ) {
499  this->m_state = SET;
500  this->expirationTime = time;
501  }
502 
504  void clear(void) {
505  this->m_state = CLEAR;
506  }
507 
511  Fw::Time time
512  ) {
513  if (this->m_state == CLEAR) {
514  return false;
515  } else if (
517  ) {
518  return false;
519  }
520  return true;
521  }
522 
524 
526  State m_state;
527 
530 
531  };
532 
533 
534  public:
535 
536  // ----------------------------------------------------------------------
537  // Construction, initialization, and destruction
538  // ----------------------------------------------------------------------
539 
542  const char* compName
543  );
544 
546  void init(
547  const NATIVE_INT_TYPE queueDepth,
548  const NATIVE_INT_TYPE instance
549  );
550 
554  void setTimeout(
555  NATIVE_UINT_TYPE seconds
556  );
557 
562  void setSequenceFormat(
563  Sequence& sequence
564  );
565 
569  void allocateBuffer(
570  const NATIVE_INT_TYPE identifier,
571  Fw::MemAllocator& allocator,
572  const NATIVE_UINT_TYPE bytes
573  );
574 
577  void loadSequence(
579  );
580 
582  void deallocateBuffer(
583  Fw::MemAllocator& allocator
584  );
585 
588 
590 
591  // ----------------------------------------------------------------------
592  // Handler implementations for input ports
593  // ----------------------------------------------------------------------
594 
599  U32 cmdSeq,
601  );
602 
604  void schedIn_handler(
606  NATIVE_UINT_TYPE order
607  );
608 
610  void seqRunIn_handler(
612  Fw::EightyCharString &filename
613  );
614 
616  void pingIn_handler(
618  U32 key
619  );
620 
622 
623  // ----------------------------------------------------------------------
624  // Command handler implementations
625  // ----------------------------------------------------------------------
626 
629  void CS_AUTO_cmdHandler(
631  U32 cmdSeq
632  );
633 
637  FwOpcodeType opCode,
638  U32 cmdSeq
639  );
640 
645  U32 cmdSeq
646  );
647 
649  void CS_RUN_cmdHandler(
650  FwOpcodeType opCode,
651  U32 cmdSeq,
652  const Fw::CmdStringArg& fileName
653  );
654 
657  void CS_START_cmdHandler(
659  U32 cmdSeq
660  );
661 
665  void CS_STEP_cmdHandler(
667  U32 cmdSeq
668  );
669 
673  FwOpcodeType opCode,
674  U32 cmdSeq,
675  const Fw::CmdStringArg& fileName
676  );
677 
679 
680  // ----------------------------------------------------------------------
681  // Private helper methods
682  // ----------------------------------------------------------------------
683 
686  bool loadFile(
687  const Fw::CmdStringArg& fileName
688  );
689 
691  void performCmd_Cancel(void);
692 
694  void performCmd_Step(void);
695 
698  Fw::Time& currentTime
699  );
700 
703  Fw::Time& currentTime
704  );
705 
707  void commandComplete(
708  const U32 opCode
709  );
710 
712  void sequenceComplete(void);
713 
715  void error(void);
716 
718  void commandError(
719  const U32 number,
720  const U32 opCode,
721  const U32 error
722  );
723 
726  bool requireRunMode(
727  RunMode mode
728  );
729 
731  void setCmdTimeout(
732  const Fw::Time &currentTime
733  );
734 
736 
737  // ----------------------------------------------------------------------
738  // Private member variables
739  // ----------------------------------------------------------------------
740 
742  FPrimeSequence m_FPrimeSequence;
743 
746 
749 
752 
755 
757  RunMode m_runMode;
758 
760  StepMode m_stepMode;
761 
764 
767 
770 
773 
776 
779 
782 
783  };
784 
785 };
786 
787 #endif
Svc::CmdSequencerComponentImpl::CmdSequencerComponentImpl
CmdSequencerComponentImpl(const char *compName)
Construct a CmdSequencer.
Definition: CmdSequencerImpl.cpp:29
Svc::CmdSequencerComponentImpl::m_timeout
NATIVE_UINT_TYPE m_timeout
timeout value
Definition: CmdSequencerImpl.hpp:778
Svc::CmdSequencerComponentImpl::FPrimeSequence::deserializeRecord
Fw::SerializeStatus deserializeRecord(Record &record)
Definition: FPrimeSequence.cpp:329
Svc::CmdSequencerComponentImpl::m_sequencesCompletedCount
U32 m_sequencesCompletedCount
The total number of sequences completed.
Definition: CmdSequencerImpl.hpp:775
Svc::CmdSequencerComponentImpl::opcode
PRIVATE FwOpcodeType opcode
The command opcode.
Definition: CmdSequencerImpl.hpp:598
Svc::CmdSequencerComponentImpl::FPrimeSequence::reset
void reset(void)
Definition: FPrimeSequence.cpp:103
Svc::CmdSequencerComponentImpl::Sequence::Sequence
Sequence(CmdSequencerComponentImpl &component)
Construct a Sequence object.
Definition: Sequence.cpp:19
Svc::CmdSequencerComponentImpl::Sequence::m_allocatorId
NATIVE_INT_TYPE m_allocatorId
The allocator ID.
Definition: CmdSequencerImpl.hpp:311
Svc::CmdSequencerComponentImpl::Sequence::deallocateBuffer
void deallocateBuffer(Fw::MemAllocator &allocator)
Deallocate the buffer.
Definition: Sequence.cpp:100
Svc::CmdSequencerComponentImpl::set
void set(Fw::Time time)
Set the expiration time.
Definition: CmdSequencerImpl.hpp:496
Svc::CmdSequencerComponentBase
Auto-generated base for CmdSequencer component.
Definition: CmdSequencerComponentAc.hpp:52
Svc::CmdSequencerComponentImpl::FPrimeSequence::deserializeTimeTag
Fw::SerializeStatus deserializeTimeTag(Fw::Time &timeTag)
Definition: FPrimeSequence.cpp:377
Svc::CmdSequencerComponentImpl::Sequence::Header::validateTime
bool validateTime(CmdSequencerComponentImpl &component)
Definition: Sequence.cpp:44
Svc::CmdSequencerComponentImpl::Sequence::Record::Record
Record(void)
Construct a Record object.
Definition: CmdSequencerImpl.hpp:221
Svc::CmdSequencerComponentImpl::Sequence::Header::SERIALIZED_SIZE
@ SERIALIZED_SIZE
Serialized size of header.
Definition: CmdSequencerImpl.hpp:168
Svc::CmdSequencerComponentImpl::FPrimeSequence::readOpenFile
bool readOpenFile(void)
Definition: FPrimeSequence.cpp:141
Svc::CmdSequencerComponentImpl::clear
void clear(void)
Clear the timer.
Definition: CmdSequencerImpl.hpp:504
PRIVATE
#define PRIVATE
overridable private for unit testing
Definition: BasicTypes.hpp:118
Svc::CmdSequencerComponentImpl::Sequence::Record::m_descriptor
Descriptor m_descriptor
The descriptor.
Definition: CmdSequencerImpl.hpp:230
Svc::CmdSequencerComponentBase::FileReadStage
PROTECTED FileReadStage_MAX FileReadStage
Definition: CmdSequencerComponentAc.hpp:901
Fw::Time
Definition: Time.hpp:10
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::DESER_NUM_RECORDS
@ DESER_NUM_RECORDS
Definition: CmdSequencerImpl.hpp:69
Svc::CmdSequencerComponentImpl::Sequence::m_header
Header m_header
The sequence header.
Definition: CmdSequencerImpl.hpp:314
Svc::CmdSequencerComponentImpl::CS_RUN_cmdHandler
void CS_RUN_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)
Handler for command CS_RUN.
Definition: CmdSequencerImpl.cpp:94
Svc::CmdSequencerComponentImpl::setTimeout
void setTimeout(NATIVE_UINT_TYPE seconds)
Definition: CmdSequencerImpl.cpp:51
Svc::CmdSequencerComponentImpl::pingIn_handler
void pingIn_handler(NATIVE_INT_TYPE portNum, U32 key)
Handler for ping port.
Definition: CmdSequencerImpl.cpp:452
Fw::SerializeStatus
SerializeStatus
forward declaration for string
Definition: Serializable.hpp:14
Svc::CmdSequencerComponentImpl::FPrimeSequence::CRC::m_computed
U32 m_computed
Computed CRC.
Definition: CmdSequencerImpl.hpp:352
Fw::CommandResponse
CommandResponse
Definition: CmdResponsePortAc.hpp:24
Svc::CmdSequencerComponentImpl::CS_CANCEL_cmdHandler
void CS_CANCEL_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)
Definition: CmdSequencerImpl.cpp:187
Svc::CmdSequencerComponentImpl::expirationTime
Fw::Time expirationTime
The expiration time.
Definition: CmdSequencerImpl.hpp:529
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::DESER_TIME_CONTEXT
@ DESER_TIME_CONTEXT
Definition: CmdSequencerImpl.hpp:71
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::READ_HEADER_SIZE
@ READ_HEADER_SIZE
Definition: CmdSequencerImpl.hpp:67
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::READ_SEQ_DATA_SIZE
@ READ_SEQ_DATA_SIZE
Definition: CmdSequencerImpl.hpp:74
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::READ_SEQ_CRC
@ READ_SEQ_CRC
Definition: CmdSequencerImpl.hpp:72
Svc::CmdSequencerComponentImpl::m_runMode
RunMode m_runMode
The run mode.
Definition: CmdSequencerImpl.hpp:757
Fw::LogStringArg
Definition: LogString.hpp:11
Svc::CmdSequencerComponentImpl::Sequence::clear
virtual void clear(void)=0
MemAllocator.hpp
Defines a base class for a memory allocator for classes.
Svc::CmdSequencerComponentImpl::Sequence::Record::END_OF_SEQUENCE
@ END_OF_SEQUENCE
end of sequence
Definition: CmdSequencerImpl.hpp:215
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::READ_SEQ_DATA
@ READ_SEQ_DATA
Definition: CmdSequencerImpl.hpp:73
Svc::CmdSequencerComponentImpl::Sequence::m_fileName
Fw::CmdStringArg m_fileName
The sequence file name.
Definition: CmdSequencerImpl.hpp:302
Svc::CmdSequencerComponentImpl::Sequence::Events::Events
Events(Sequence &sequence)
Construct an Events object.
Definition: Events.cpp:62
Fw::EightyCharString
Definition: EightyCharString.hpp:10
Svc::CmdSequencerComponentImpl::response
PRIVATE FwOpcodeType U32 Fw::CommandResponse response
< The command response
Definition: CmdSequencerImpl.hpp:601
Svc::CmdSequencerComponentImpl::performCmd_Step
void performCmd_Step(void)
Perform a Step command.
Definition: CmdSequencerImpl.cpp:384
Svc::CmdSequencerComponentImpl::FPrimeSequence::validateRecords
bool validateRecords(void)
Definition: FPrimeSequence.cpp:423
Svc::CmdSequencerComponentImpl::Sequence::Record::Descriptor
Descriptor
Definition: CmdSequencerImpl.hpp:212
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::DESER_SIZE
@ DESER_SIZE
Definition: CmdSequencerImpl.hpp:68
Svc::CmdSequencerComponentImpl::Sequence::Events::fileInvalid
void fileInvalid(const FileReadStage::t stage, const I32 error)
File invalid.
Definition: Events.cpp:82
Svc::CmdSequencerComponentImpl::Sequence::~Sequence
virtual ~Sequence(void)
Destroy a Sequence object.
Definition: Sequence.cpp:28
Svc::CmdSequencerComponentImpl::Sequence::Events::fileCRCFailure
void fileCRCFailure(const U32 storedCRC, const U32 computedCRC)
File CRC failure.
Definition: Events.cpp:69
Svc::CmdSequencerComponentBase::PROTECTED
PROTECTED PROTECTED
Definition: CmdSequencerComponentAc.hpp:657
ValidateFile.hpp
Defines a file class to validate files or generate a file validator file.
ComBuffer.hpp
Svc::CmdSequencerComponentImpl::Sequence::Events::fileSizeError
void fileSizeError(const U32 size)
File size error.
Definition: Events.cpp:113
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::t
t
Definition: CmdSequencerImpl.hpp:65
Svc::CmdSequencerComponentImpl::Sequence::loadFile
virtual bool loadFile(const Fw::CmdStringArg &fileName)=0
Svc::CmdSequencerComponentImpl::requireRunMode
bool requireRunMode(RunMode mode)
Definition: CmdSequencerImpl.cpp:359
Svc::CmdSequencerComponentBase::portNum
PRIVATE NATIVE_INT_TYPE portNum
Definition: CmdSequencerComponentAc.hpp:1267
TimeBase
TimeBase
Definition: FpConfig.hpp:323
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::toComponentEnum
static CmdSequencerComponentImpl::FileReadStage toComponentEnum(const t fileReadStage)
Convert FileReadStage::t to CmdSequencerComponentImpl::FileReadStage.
Definition: Events.cpp:20
Fw::CmdStringArg
Definition: CmdString.hpp:11
Svc::CmdSequencerComponentImpl::FPrimeSequence::validateCRC
bool validateCRC(void)
Definition: FPrimeSequence.cpp:58
Svc::CmdSequencerComponentImpl::Sequence::Header::m_numRecords
U32 m_numRecords
The number of records in the sequence.
Definition: CmdSequencerImpl.hpp:194
Svc::CmdSequencerComponentImpl::m_totalExecutedCount
U32 m_totalExecutedCount
The total number of commands executed across all sequences.
Definition: CmdSequencerImpl.hpp:772
Svc::CmdSequencerComponentImpl::Sequence::Events::fileReadError
void fileReadError(void)
File read error.
Definition: Events.cpp:104
FwTimeContextStoreType
#define FwTimeContextStoreType
Storage conversion for time context in scripts/ground interface.
Definition: FpConfig.hpp:336
Svc::CmdSequencerComponentImpl::Sequence::Record::ABSOLUTE
@ ABSOLUTE
Absolute time.
Definition: CmdSequencerImpl.hpp:213
Svc::CmdSequencerComponentBase::cmdResponseIn_handler
virtual void cmdResponseIn_handler(NATIVE_INT_TYPE portNum, FwOpcodeType opCode, U32 cmdSeq, Fw::CommandResponse response)=0
Handler for input port cmdResponseIn.
Svc::CmdSequencerComponentImpl::Sequence::m_logFileName
Fw::LogStringArg m_logFileName
Copy of file name for events.
Definition: CmdSequencerImpl.hpp:305
Svc::CmdSequencerComponentImpl::CS_START_cmdHandler
void CS_START_cmdHandler(FwOpcodeType opcode, U32 cmdSeq)
Definition: CmdSequencerImpl.cpp:295
Svc::CmdSequencerComponentImpl::FPrimeSequence::loadFile
bool loadFile(const Fw::CmdStringArg &fileName)
Definition: FPrimeSequence.cpp:72
Svc::CmdSequencerComponentImpl::Sequence::Header::m_timeContext
FwTimeContextStoreType m_timeContext
The context of the sequence.
Definition: CmdSequencerImpl.hpp:200
Svc::CmdSequencerComponentImpl::Sequence::Events::fileNotFound
void fileNotFound(void)
File not found.
Definition: Events.cpp:95
Svc::CmdSequencerComponentImpl::FPrimeSequence::hasMoreRecords
bool hasMoreRecords(void) const
Definition: FPrimeSequence.cpp:90
Svc::CmdSequencerComponentImpl::allocateBuffer
void allocateBuffer(const NATIVE_INT_TYPE identifier, Fw::MemAllocator &allocator, const NATIVE_UINT_TYPE bytes)
Definition: CmdSequencerImpl.cpp:62
Svc::CmdSequencerComponentImpl::Sequence::reset
virtual void reset(void)=0
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage
File read stage for error reporting.
Definition: CmdSequencerImpl.hpp:63
Svc::CmdSequencerComponentImpl::FPrimeSequence::CRC
Container for computed and stored CRC values.
Definition: CmdSequencerImpl.hpp:334
Fw::ObjBase::init
void init(void)
Object initializer.
Definition: ObjBase.cpp:26
Svc::CmdSequencerComponentImpl::CS_MANUAL_cmdHandler
void CS_MANUAL_cmdHandler(FwOpcodeType opcode, U32 cmdSeq)
Definition: CmdSequencerImpl.cpp:344
Svc::CmdSequencerComponentImpl::FPrimeSequence
A sequence that uses the F Prime binary format.
Definition: CmdSequencerImpl.hpp:322
BYTE
U8 BYTE
byte type
Definition: BasicTypes.hpp:77
Svc::CmdSequencerComponentImpl::FPrimeSequence::deserializeRecordSize
Fw::SerializeStatus deserializeRecordSize(U32 &recordSize)
Definition: FPrimeSequence.cpp:392
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::READ_HEADER
@ READ_HEADER
Definition: CmdSequencerImpl.hpp:66
Svc::CmdSequencerComponentImpl::Sequence::Header::m_fileSize
U32 m_fileSize
The file size.
Definition: CmdSequencerImpl.hpp:191
Svc::CmdSequencerComponentImpl::Sequence::Events::FileReadStage::DESER_TIME_BASE
@ DESER_TIME_BASE
Definition: CmdSequencerImpl.hpp:70
Svc::CmdSequencerComponentImpl::FPrimeSequence::readRecordsAndCRC
bool readRecordsAndCRC(void)
Definition: FPrimeSequence.cpp:262
Svc::CmdSequencerComponentImpl::sequenceComplete
void sequenceComplete(void)
Record a sequence complete event.
Definition: CmdSequencerImpl.cpp:409
Svc::CmdSequencerComponentImpl::FPrimeSequence::deserializeDescriptor
Fw::SerializeStatus deserializeDescriptor(Record::Descriptor &descriptor)
Definition: FPrimeSequence.cpp:357
Svc::CmdSequencerComponentImpl::Sequence::Record::RELATIVE
@ RELATIVE
Relative time.
Definition: CmdSequencerImpl.hpp:214
Svc::CmdSequencerComponentImpl::Sequence::Record::m_command
Fw::ComBuffer m_command
The command.
Definition: CmdSequencerImpl.hpp:236
Svc::CmdSequencerComponentImpl::cmdSeq
PRIVATE FwOpcodeType U32 cmdSeq
The command sequence number.
Definition: CmdSequencerImpl.hpp:599
Svc::CmdSequencerComponentImpl::Sequence::Events::timeContextMismatch
void timeContextMismatch(const FwTimeContextStoreType currTimeContext, const FwTimeContextStoreType seqTimeContext)
Time context mismatch.
Definition: Events.cpp:164
Svc::CmdSequencerComponentImpl::Sequence::getFileName
Fw::CmdStringArg & getFileName(void)
Definition: Sequence.cpp:124
Svc::CmdSequencerComponentImpl::Sequence::Events::recordMismatch
void recordMismatch(const U32 numRecords, const U32 extraBytes)
Record mismatch.
Definition: Events.cpp:138
Svc::CmdSequencerComponentImpl::Sequence::allocateBuffer
void allocateBuffer(const NATIVE_INT_TYPE identifier, Fw::MemAllocator &allocator, const NATIVE_UINT_TYPE bytes)
Give the sequence representation a memory buffer.
Definition: Sequence.cpp:79
Svc::CmdSequencerComponentBase::CS_AUTO_cmdHandler
virtual void CS_AUTO_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)=0
Handler for command CS_AUTO.
FwOpcodeType
#define FwOpcodeType
Type representation for a command opcode.
Definition: FpConfig.hpp:62
Svc::CmdSequencerComponentImpl::commandError
void commandError(const U32 number, const U32 opCode, const U32 error)
Record an error in executing a sequence command.
Definition: CmdSequencerImpl.cpp:369
Svc::CmdSequencerComponentImpl::m_executedCount
U32 m_executedCount
The number of commands executed in this sequence.
Definition: CmdSequencerImpl.hpp:769
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
Svc::CmdSequencerComponentImpl::FPrimeSequence::readHeader
bool readHeader(void)
Definition: FPrimeSequence.cpp:161
Fw::Time::GT
@ GT
Definition: Time.hpp:49
Svc::CmdSequencerComponentImpl::FPrimeSequence::nextRecord
void nextRecord(Record &record)
Definition: FPrimeSequence.cpp:96
Svc::CmdSequencerComponentImpl::deallocateBuffer
void deallocateBuffer(Fw::MemAllocator &allocator)
Return allocated buffer. Call during shutdown.
Definition: CmdSequencerImpl.cpp:81
Svc::CmdSequencerComponentImpl::State
PRIVATE CLEAR State
Definition: CmdSequencerImpl.hpp:484
Svc::CmdSequencerComponentImpl::FPrimeSequence::CRC::CRC
CRC(void)
Construct a CRC.
Definition: FPrimeSequence.cpp:22
Svc::CmdSequencerComponentImpl::Sequence::Events::timeBaseMismatch
void timeBaseMismatch(const FwTimeBaseStoreType currTimeBase, const FwTimeBaseStoreType seqTimeBase)
Time base mismatch.
Definition: Events.cpp:151
Svc::CmdSequencerComponentImpl::m_cmdTimeoutTimer
Timer m_cmdTimeoutTimer
timeout timer
Definition: CmdSequencerImpl.hpp:781
Fw::Time::compare
static Comparison compare(const Time &time1, const Time &time2)
Definition: Time.cpp:158
Svc::CmdSequencerComponentImpl::performCmd_Step_ABSOLUTE
void performCmd_Step_ABSOLUTE(Fw::Time &currentTime)
Perform a Step command with an absolute time.
Definition: CmdSequencerImpl.cpp:441
Svc::CmdSequencerComponentImpl::Sequence::Events
Sequence event reporting.
Definition: CmdSequencerImpl.hpp:58
Svc::CmdSequencerComponentImpl::Sequence::setFileName
void setFileName(const Fw::CmdStringArg &fileName)
Set the file name. Also sets the log file name.
Definition: Sequence.cpp:117
Svc::CmdSequencerComponentImpl::Sequence::getHeader
const Header & getHeader(void) const
Get the sequence header.
Definition: Sequence.cpp:111
Svc::CmdSequencerComponentImpl::FPrimeSequence::FPrimeSequence
FPrimeSequence(CmdSequencerComponentImpl &component)
Construct an FPrimeSequence.
Definition: FPrimeSequence.cpp:51
Svc::CmdSequencerComponentImpl::isExpiredAt
bool isExpiredAt(Fw::Time time)
Definition: CmdSequencerImpl.hpp:510
File.hpp
Fw::MemAllocator
Definition: MemAllocator.hpp:44
Fw::ExternalSerializeBuffer
Definition: Serializable.hpp:156
Svc::CmdSequencerComponentImpl::FPrimeSequence::CRC::m_stored
U32 m_stored
Stored CRC.
Definition: CmdSequencerImpl.hpp:355
Svc::CmdSequencerComponentImpl::Sequence::Header
A sequence header.
Definition: CmdSequencerImpl.hpp:162
Svc::CmdSequencerComponentImpl::m_stepMode
StepMode m_stepMode
The step mode.
Definition: CmdSequencerImpl.hpp:760
Svc::CmdSequencerComponentImpl::error
void error(void)
Record an error.
Definition: CmdSequencerImpl.cpp:217
Svc::CmdSequencerComponentImpl::performCmd_Step_RELATIVE
void performCmd_Step_RELATIVE(Fw::Time &currentTime)
Perform a Step command with a relative time.
Definition: CmdSequencerImpl.cpp:434
Svc::CmdSequencerComponentImpl::Sequence::Header::Header
Header(void)
Construct a Header object.
Definition: Sequence.cpp:34
Svc::CmdSequencerComponentImpl::FPrimeSequence::copyCommand
Fw::SerializeStatus copyCommand(Fw::ComBuffer &comBuffer, const U32 recordSize)
Definition: FPrimeSequence.cpp:411
Svc::CmdSequencerComponentBase::fileName
PROTECTED U32 const Fw::CmdStringArg & fileName
Definition: CmdSequencerComponentAc.hpp:671
Svc::CmdSequencerComponentImpl::FPrimeSequence::deserializeHeader
bool deserializeHeader(void)
Definition: FPrimeSequence.cpp:211
Svc::CmdSequencerComponentImpl::performCmd_Cancel
void performCmd_Cancel(void)
Perform a Cancel command.
Definition: CmdSequencerImpl.cpp:222
FwTimeBaseStoreType
#define FwTimeBaseStoreType
Storage conversion for time base in scripts/ground interface.
Definition: FpConfig.hpp:332
Svc::CmdSequencerComponentImpl::CS_VALIDATE_cmdHandler
void CS_VALIDATE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq, const Fw::CmdStringArg &fileName)
Definition: CmdSequencerImpl.cpp:121
Svc::CmdSequencerComponentImpl::Sequence::m_events
Events m_events
Event reporting.
Definition: CmdSequencerImpl.hpp:299
Svc::CmdSequencerComponentImpl::CS_STEP_cmdHandler
void CS_STEP_cmdHandler(FwOpcodeType opcode, U32 cmdSeq)
Definition: CmdSequencerImpl.cpp:314
Svc::CmdSequencerComponentImpl::~CmdSequencerComponentImpl
~CmdSequencerComponentImpl(void)
Destroy a CmdDispatcherComponentBase.
Definition: CmdSequencerImpl.cpp:86
Svc::CmdSequencerComponentImpl::m_errorCount
U32 m_errorCount
The number of errors.
Definition: CmdSequencerImpl.hpp:754
Svc::CmdSequencerComponentImpl::m_cancelCmdCount
U32 m_cancelCmdCount
The number of Cancel commands executed.
Definition: CmdSequencerImpl.hpp:751
Svc::CmdSequencerComponentImpl::m_loadCmdCount
U32 m_loadCmdCount
The number of Load commands executed.
Definition: CmdSequencerImpl.hpp:748
CmdSequencerComponentAc.hpp
Svc
Definition: ActiveLoggerComponentAc.cpp:22
Svc::CmdSequencerComponentImpl::FPrimeSequence::CRC::init
void init(void)
Initialize computed CRC.
Definition: FPrimeSequence.cpp:30
Svc::CmdSequencerComponentImpl::FPrimeSequence::CRC::finalize
void finalize(void)
Finalize computed CRC.
Definition: FPrimeSequence.cpp:45
Svc::CmdSequencerComponentImpl::m_sequence
Sequence * m_sequence
The abstract sequence.
Definition: CmdSequencerImpl.hpp:745
Svc::CmdSequencerComponentImpl::m_cmdTimer
Timer m_cmdTimer
The command time timer.
Definition: CmdSequencerImpl.hpp:766
Svc::CmdSequencerComponentImpl::Sequence::getLogFileName
Fw::LogStringArg & getLogFileName(void)
Definition: Sequence.cpp:130
Svc::CmdSequencerComponentImpl
Definition: CmdSequencerImpl.hpp:26
Svc::CmdSequencerComponentImpl::m_record
Sequence::Record m_record
The sequence record currently being processed.
Definition: CmdSequencerImpl.hpp:763
Svc::CmdSequencerComponentImpl::Sequence::Header::m_timeBase
TimeBase m_timeBase
The time base of the sequence.
Definition: CmdSequencerImpl.hpp:197
Svc::CmdSequencerComponentImpl::Sequence::nextRecord
virtual void nextRecord(Record &record)=0
Svc::CmdSequencerComponentImpl::Sequence::Events::recordInvalid
void recordInvalid(const U32 recordNumber, const I32 error)
Record invalid.
Definition: Events.cpp:125
Svc::CmdSequencerComponentImpl::Sequence::Record
A sequence record.
Definition: CmdSequencerImpl.hpp:208
Svc::CmdSequencerComponentImpl::Sequence::Header::Constants
Constants
Definition: CmdSequencerImpl.hpp:166
Svc::CmdSequencerComponentImpl::Sequence::m_buffer
Fw::ExternalSerializeBuffer m_buffer
Serialize buffer to hold the binary sequence data.
Definition: CmdSequencerImpl.hpp:308
Svc::CmdSequencerComponentImpl::Sequence
A sequence with unspecified binary format.
Definition: CmdSequencerImpl.hpp:52
Svc::CmdSequencerComponentImpl::setCmdTimeout
void setCmdTimeout(const Fw::Time &currentTime)
Set command timeout timer.
Definition: CmdSequencerImpl.cpp:462
Svc::CmdSequencerComponentImpl::Sequence::Record::m_timeTag
Fw::Time m_timeTag
The time tag. NOTE: timeBase and context not filled in.
Definition: CmdSequencerImpl.hpp:233
NATIVE_INT_TYPE
int NATIVE_INT_TYPE
native integer type declaration
Definition: BasicTypes.hpp:29
Fw::ComBuffer
Definition: ComBuffer.hpp:21
Svc::CmdSequencerComponentImpl::Sequence::hasMoreRecords
virtual bool hasMoreRecords(void) const =0
Svc::CmdSequencerComponentImpl::commandComplete
void commandComplete(const U32 opCode)
Record a completed command.
Definition: CmdSequencerImpl.cpp:422
Svc::CmdSequencerComponentImpl::FPrimeSequence::extractCRC
bool extractCRC(void)
Definition: FPrimeSequence.cpp:297
Svc::CmdSequencerComponentImpl::schedIn_handler
void schedIn_handler(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE order)
Handler for input port schedIn.
Definition: CmdSequencerImpl.cpp:274
Svc::CmdSequencerComponentImpl::FPrimeSequence::CRC::update
void update(const BYTE *buffer, NATIVE_UINT_TYPE bufferSize)
Update computed CRC.
Definition: FPrimeSequence.cpp:36
Svc::CmdSequencerComponentBase::key
PROTECTED U32 key
Definition: CmdSequencerComponentAc.hpp:306
Svc::CmdSequencerComponentImpl::Timer
Timer(void)
Construct a Timer object.
Definition: CmdSequencerImpl.hpp:489
Svc::CmdSequencerComponentImpl::setSequenceFormat
void setSequenceFormat(Sequence &sequence)
Definition: CmdSequencerImpl.cpp:56
Svc::CmdSequencerComponentImpl::FPrimeSequence::clear
void clear(void)
Definition: FPrimeSequence.cpp:109
Os::File
Definition: File.hpp:11
Svc::CmdSequencerComponentImpl::FPrimeSequence::m_sequenceFile
Os::File m_sequenceFile
The sequence file.
Definition: CmdSequencerImpl.hpp:465
Svc::CmdSequencerComponentImpl::seqRunIn_handler
void seqRunIn_handler(NATIVE_INT_TYPE portNum, Fw::EightyCharString &filename)
Handler for input port seqRunIn.
Definition: CmdSequencerImpl.cpp:148
Svc::CmdSequencerComponentImpl::loadSequence
void loadSequence(const Fw::EightyCharString &fileName)
Definition: CmdSequencerImpl.cpp:72