AJA NTV2 SDK  17.1.1.1245
NTV2 SDK 17.1.1.1245
ntv2mcsfile.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef NTV2MCSFILE_H
9 #define NTV2MCSFILE_H
10 
11 #include <string>
12 #include <vector>
13 #include <fstream>
14 #include "ntv2utils.h"
15 #ifdef AJALinux
16  #include <stdint.h>
17  #include <stdlib.h>
18 #endif
19 
20 typedef enum
21 {
23  IRT_DR, // Data Record
24  IRT_EOFR, // End Of File Record
25  IRT_ESAR, // Extended Segment Address Record
26  IRT_ELAR // Extended Linear Address Record
28 
29 
31 {
33  : byteCount (0)
34  , linearAddress (0)
35  , segmentAddress (0)
37  , checkSum (0) {}
38 
39  uint8_t byteCount;
40  uint16_t linearAddress;
41  uint32_t segmentAddress;
43  uint8_t * dataBuffer[16];
44  uint8_t checkSum;
45 };
46 
47 
52 {
53 public:
57  CNTV2MCSfile();
58 
62  virtual ~CNTV2MCSfile();
63 
69  virtual bool Open (const std::string & inMCSFilePath);
70 
74  virtual void Close (void);
75  virtual bool InsertBitFile (const std::string & inBitFileName, const std::string & inMCSFileName, const std::string & inUserMessage);
76  virtual void IRecordOutput (const char *pIRecord);
77 
78  virtual uint32_t GetFileByteStream (uint32_t numberOfLines = 0);
79  virtual bool isReady (void) const;
80  virtual bool FindExtendedLinearAddressRecord (uint16_t address = 0x0000);
81  virtual bool GetCurrentParsedRecord (IntelRecordInfo &recordInfo);
82  virtual uint32_t GetPartition (UByteSequence & patitionBuffer, uint16_t baseELARaddress, uint16_t & partitionOffset, bool nextPartition = false);
83  virtual const std::string & GetBitfileDateString (void) const {return mBitfileDate;}
84  virtual const std::string & GetBitfileDesignString (void) const {return mBitfileDesignName;}
85  virtual const std::string & GetBitfilePartNameString (void) const {return mBitfilePartName;}
86  virtual const std::string & GetBitfileTimeString (void) const {return mBitfileTime;}
87  virtual std::string GetMCSPackageVersionString (void) const;
88  virtual std::string GetMCSPackageDateString (void) const;
89  virtual bool GetMCSHeaderInfo (const std::string & inMCSFileName);
90  virtual inline const std::string & GetLastError (void) const {return mLastError;}
91 
92 protected: // Protected Methods
93  virtual void SetLastError (const std::string & inStr, const bool inAppend = false);
94 
95 private:
96  virtual bool ParseCurrentRecord (IntelRecordInfo &recordInfo);
97  virtual void GetMCSInfo ();
98 
99  std::ifstream mMCSFileStream;
100  std::string mCurrentRecord;
101  uint32_t mFileSize;
102  NTV2StringList mFileLines;
103  NTV2StringListIter mBaseELARLocation;
104  NTV2StringListIter mCurrentLocation;
105  std::string mCommentString;
106  std::string mMCSInfoString;
107 
108  //bitfile information contained in the MCS file
109  std::string mBitfileDate;
110  std::string mBitfileTime;
111  std::string mBitfileDesignName;
112  std::string mBitfilePartName;
113  std::string mLastError; // Last error message
114 
115 }; // CNTV2MCSfile
116 
117 #endif // NTV2MCSFILE_H
IntelRecordInfo::dataBuffer
uint8_t * dataBuffer[16]
Definition: ntv2mcsfile.h:43
CNTV2MCSfile::GetBitfileTimeString
virtual const std::string & GetBitfileTimeString(void) const
Definition: ntv2mcsfile.h:86
IRT_UNKNOWN
@ IRT_UNKNOWN
Definition: ntv2mcsfile.h:22
IntelRecordInfo::segmentAddress
uint32_t segmentAddress
Definition: ntv2mcsfile.h:41
IntelRecordInfo::checkSum
uint8_t checkSum
Definition: ntv2mcsfile.h:44
CNTV2MCSfile::GetBitfileDesignString
virtual const std::string & GetBitfileDesignString(void) const
Definition: ntv2mcsfile.h:84
IRT_ESAR
@ IRT_ESAR
Definition: ntv2mcsfile.h:25
UByteSequence
std::vector< uint8_t > UByteSequence
An ordered sequence of UByte (uint8_t) values.
Definition: ntv2publicinterface.h:38
NTV2StringListIter
NTV2StringList::iterator NTV2StringListIter
Definition: ntv2utils.h:1135
IntelRecordInfo::IntelRecordInfo
IntelRecordInfo()
Definition: ntv2mcsfile.h:32
IntelRecordInfo::byteCount
uint8_t byteCount
Definition: ntv2mcsfile.h:39
IntelRecordType
IntelRecordType
Definition: ntv2mcsfile.h:20
IntelRecordInfo::linearAddress
uint16_t linearAddress
Definition: ntv2mcsfile.h:40
IRT_DR
@ IRT_DR
Definition: ntv2mcsfile.h:23
CNTV2MCSfile
Instances of me can parse an MCS file.
Definition: ntv2mcsfile.h:51
ntv2utils.h
Declares numerous NTV2 utility functions.
IntelRecordInfo::recordType
IntelRecordType recordType
Definition: ntv2mcsfile.h:42
NTV2StringList
std::vector< std::string > NTV2StringList
Definition: ntv2utils.h:1134
IRT_ELAR
@ IRT_ELAR
Definition: ntv2mcsfile.h:26
AJAExport
#define AJAExport
Definition: export.h:33
IRT_EOFR
@ IRT_EOFR
Definition: ntv2mcsfile.h:24
IntelRecordInfo
Definition: ntv2mcsfile.h:30
CNTV2MCSfile::GetBitfilePartNameString
virtual const std::string & GetBitfilePartNameString(void) const
Definition: ntv2mcsfile.h:85
CNTV2MCSfile::GetBitfileDateString
virtual const std::string & GetBitfileDateString(void) const
Definition: ntv2mcsfile.h:83