C++ Instrument Catalog
CPT2026PeripheralROM.h
Go to the documentation of this file.
1 
6 #pragma once
7 
8 // Standard includes
9 #include <assert.h>
10 #include <unordered_map>
11 
12 // Personal includes
13 #include "PT2026Types.h"
14 #include "OSDefines.h"
15 
16 using namespace MTL::Instrument;
17 using namespace MTL::Instrument::PT2026Types;
18 
19 namespace MTL {
20 
22  {
23  //----------------------------------------------------------------------//
24  // Public Type Definitions //
25  //----------------------------------------------------------------------//
26  public:
27  enum eHeaderType { kUnknown, kStandalone, kEmbedded };
28 
29  //==================================================================================================//
30  // Common //
31  //==================================================================================================//
32  enum eDeviceType {
33  kUndefined = 0,
34  kSingleContinuous = 1,
35  kSinglePulsed = 2,
36  kMultiplexer = 3,
37  kSwitchedContinuous = 4,
38  kSwitchedPulsed = 5,
39  kCameraPulsed = 6
40  };
42  {
45  U16 Model;
46  U32 SN; // Effective size is 3 bytes long
48 
49  static const size_t SN_LEN = 3;
50  static const size_t IDENTIFICATION_LEN = sizeof(U16) + sizeof(U8) + sizeof(U16) + SN_LEN + sizeof(U32);
51  };
53  std::string ManufacturingDate;
54  std::string Designation;
55  };
57  {
58  static const U16 VERSION = 0x0001;
59  static const size_t DATE_LEN = 10;
60  static const size_t HEADER_LEN = sizeof(U16) + sizeof(U16) + sizeof(U16) + DATE_LEN + sIdentification::IDENTIFICATION_LEN + sizeof(U8);
61 
62  U16 ROMVersion; // Version of this structure in BCD format xx.yy
63  U16 ROMCapacity; // Memory capacity in number of bytes
64  U16 ROMSize; // Usage of the above capacity in number of bytes
65  char ROMProgrammingDate[DATE_LEN]; // Format: ISO-8601 extended calendar date "YYYY-MM-DD"
66  sIdentification Identification; // Identification of the device hosting the ROM
67  U8 HeaderCRC; // CRC of the header
68  };
70  {
71  static const U16 VERSION = 0x0002;
72  static const size_t DATE_LEN = 10;
73  static const size_t HEADER_LEN = sizeof(U16) + sizeof(U16) + sizeof(U16) + DATE_LEN + sizeof(U8);
74 
75  U16 ROMVersion; // Version of this structure in BCD format xx.yy
76  U16 ROMCapacity; // Memory capacity in number of bytes
77  U16 ROMSize; // Usage of the above capacity in number of bytes
78  char ROMProgrammingDate[DATE_LEN]; // Format: ISO-8601 extended calendar date "YYYY-MM-DD"
79  U8 HeaderCRC; // CRC of the header
80  };
81  class CParmInfoMap : public std::unordered_map<U8, U16> // Composed of ParmNumber (U8) and its Address (U16)
82  {
83  public:
84  static const size_t PARM_INFO_LEN = sizeof(U8) + sizeof(U16);
85  };
86 
87  //==================================================================================================//
88  // Pulsed Wave //
89  //==================================================================================================//
91  {
92  F64 MinFreq; // Minimum probe frequency [Hz]
93  F64 MaxFreq; // Maximum probe frequency [Hz]
94  F64 MinIF; // Minimum IF frequency [Hz]
95  F64 MaxIF; // Maximum IF frequency [Hz]
96  F64 FreqMultiplier; // Frequency multiplication factor [-]
97  F64 GyroRatio; // Gyromagnetic ratio [Hz/T]
98  F64 PulsePeriod; // Usually spin relaxing time T1 [s]
99  F64 T2; // Spin relaxing time T2 [s]
100  F64 SampleLength; // Sample length [s]
101  U8 DeadTime; // Dead time [us]
102  std::vector<U16> NoiseLevelCurve; // Noise level array [mV]
103  std::vector<U16> TuningCurve; // Tuning array [mV]
104  std::vector<U16> MatchingCurve; // Matching array [mV]
105  std::vector<U16> PulseWidthCurve; // Pulse width array [us]
106  std::vector<U16> FreqStepCurve; // Frequency steps array [Hz]
107 
108  static const U32 MAX_CURVE_SIZE = 128;
109  static const U16 HANDLED_PWP_PHYSICAL_INFORMATION_VERSION = 0x0001;
110  };
111 
113  {
114  private:
115  std::vector<sPwPhysicalInformation*> pPhysInfoList;
116 
117  public:
118  typedef std::vector<sPwPhysicalInformation*>::size_type size_type;
119 
121  {
122  for (std::vector<sPwPhysicalInformation*>::iterator it = pPhysInfoList.begin(); it != pPhysInfoList.end(); it++)
123  (*it)->~sPwPhysicalInformation();
124  }
125  void Attach(sPwPhysicalInformation* pPwPhysInfo)
126  {
127  pPhysInfoList.push_back(pPwPhysInfo);
128  }
129  size_type size(void) const
130  {
131  return pPhysInfoList.size();
132  }
133  sPwPhysicalInformation& operator[] (const size_type Index)
134  {
135  assert(Index < pPhysInfoList.size());
136  return *(pPhysInfoList[Index]);
137  }
138  sPwPhysicalInformation& operator[] (const size_type Index) const
139  {
140  assert(Index < pPhysInfoList.size());
141  return *(pPhysInfoList[Index]);
142  }
143  };
144 
146  {
150  : NMRTransTime_us(0), ExtNMRTransTime_us(0)
151  {}
152  sTransmissionTimes(U32 Short_us, U32 Extended_us)
153  : NMRTransTime_us(Short_us), ExtNMRTransTime_us(Extended_us)
154  {}
155  };
156  typedef std::vector<sTransmissionTimes> tTransmissionTimeList;
157 
159  {
160  F64 MinFreq; // Minimum probe frequency [Hz]
161  F64 MaxFreq; // Maximum probe frequency [Hz]
162  F64 MinIF; // Minimum IF frequency [Hz]
163  F64 MaxIF; // Maximum IF frequency [Hz]
164  F64 FreqMultiplier; // Frequency multiplication factor [-]
165  U16 VoltageNoise; // Noise level across the bandpass [mV]
166 
168  : MinFreq(0), MaxFreq(0), MinIF(0), MaxIF(0), FreqMultiplier(1), VoltageNoise(0)
169  {}
170 
171  static const U16 HANDLED_PW_FCA_PHYSICAL_INFORMATION_VERSION = 0x0001;
172  };
173 
174  //==================================================================================================//
175  // Multi Head //
176  //==================================================================================================//
177  struct sHeadInfo
178  {
179  static const U16 SIZE = 3;
180 
181  U8 MUXcode; // Multiplexing code
182  U8 Info; // Information bitfield (7-1: NA, 0 : IsEM8126)
183  U8 PhysInfoSetIndex; // Index of the physical information for this head
184  };
186  {
187  static const U16 STRUCT_VERSION = 0x0002;
188 
190  U16 OffsetDAC; // DAC value for offset compensation
191  std::vector<sHeadInfo> MultiHeadInfo;
192  };
193 
194  typedef std::vector<U8> tHeadList;
195 
197  {
198  U8 HeadNumber; // Head number among the multiple heads
199  U8 PhysInfoSetIndex; // Index of the physical information for this head
200 
201  sHeadDefinition(U8 HeadNum, U8 PhysInfInd)
202  : HeadNumber(HeadNum), PhysInfoSetIndex(PhysInfInd)
203  {}
204  };
205  #define HEAD_DEF_SIZE 2
206  typedef std::vector<sHeadDefinition> tHeadDefList;
207 
208  //==================================================================================================//
209  // Camera //
210  //==================================================================================================//
211  typedef std::vector<F32> tNormalizationTable; // [Hz]
212 
214  U16 Version;
215  F64 LowFreq; // [Hz]
216  F64 NominalFreq; // [Hz]
217  F64 HighFreq; // [Hz]
218  F64 GyroRatio; // [Hz/T]
219  std::string NormalizationDate; // YYYY-MM-DD
221 
222  static const U16 HANDLED_PW_CAM_PHYSICAL_INFORMATION_VERSION = 0x0002;
223  };
224 
225  //==================================================================================================//
226  // Hall //
227  //==================================================================================================//
229  static const U16 STRUCT_VERSION = 0x0002;
230  // State definition is as follows:
231  // bits 7-2 : NA
232  // bit 1 : Activated (Whether the hall sensor has to be used or not, for any reason)
233  // bit 0 : Calibrated (Whether Calibration struct contains valid calibration data or not)
234  U8 State; // State of the hall sensor
235  U16 Range_mT; // Hall sensor range in [mT]
236  U8 Tolerance; // Calibration tolerance [%]
237  struct sCalibration {
238  // Coefficients correspond to a field B expressed in [T]
239  U16 B0X, B0Y, B0Z; // [bADC] B field offset correction factor for each axis
240  F32 G0X, G0Y, G0Z; // [T/bADC] B field gain correction factor for each axis
241  U16 T0; // [bADC] Temperature offset correction factor, common to all axis
242  F32 CT0X, CT0Y, CT0Z; // [T/bADC] Offset Temperature correction factor for each axis
243  F32 CTGX, CTGY, CTGZ; // [T/bADC] Gain Temperature correction factor for each axis
244 
246  : B0X(32768), B0Y(32768), B0Z(32768), G0X(1), G0Y(1), G0Z(1), T0(0), CT0X(0), CT0Y(0), CT0Z(0), CTGX(0), CTGY(0), CTGZ(0)
247  {}
248 
249  static F32 RawBtoB(const U16 & rRawB, const U16 & rRawT, const U16 & rB0, const F32 & rG0, const U16 & rT0, const F32 & rCT0, const F32 & rCTG)
250  {
251  I32 l_BOffsetless = (I32)rRawB - (I32)rB0;
252  I32 l_TOffsetless = (I32)rRawT - (I32)rT0;
253  F32 l_TOffsetCorrected = l_TOffsetless * rCT0;
254  F32 l_TGainCorrected = l_TOffsetless * rCTG;
255  F32 l_Gain = rG0 + l_TGainCorrected;
256  F32 l_BCorrected_T = (l_BOffsetless - l_TOffsetCorrected) * l_Gain;
257  return l_BCorrected_T;
258  }
259 
260  static F32 Norm(const F32 & rBx, const F32 & rBy, const F32 & rBz)
261  {
262  return sqrt(rBx*rBx + rBy * rBy + rBz * rBz);
263  }
264 
265  void Calibrate(const U16 & rRawBx, const U16 & rRawBy, const U16 & rRawBz, const U16 & rRawT,
266  F32 & rBx_T, F32 & rBy_T, F32 & rBz_T, F32 & rNorm_T)
267  {
268  F32 Bx_T = RawBtoB(rRawBx, rRawT, B0X, G0X, T0, CT0X, CTGX);
269  F32 By_T = RawBtoB(rRawBy, rRawT, B0Y, G0Y, T0, CT0Y, CTGY);
270  F32 Bz_T = RawBtoB(rRawBz, rRawT, B0Z, G0Z, T0, CT0Z, CTGZ);
271  rNorm_T = Norm(Bx_T, By_T, Bz_T);
272  rBx_T = Bx_T;
273  rBy_T = By_T;
274  rBz_T = Bz_T;
275  }
276  } Calibration;
277 
278  bool IsCalibrated(void)
279  {
280  return State & 0x01;
281  }
282  bool IsActivated(void)
283  {
284  return State & 0x02;
285  }
286  };
287 
288  //==================================================================================================//
289  // Devices //
290  //==================================================================================================//
291  enum class e1226ROMParm {
292  kManufactureInformation = 0,
293  kPwPhysicalInformation = 1,
294  kHallInformation = 2
295  };
296  enum class e9046ROMParm {
297  kManufactureInformation = 0,
298  kMultiHeadInformation = 1,
299  kSearchHeads = 2,
300  kMeasHeads = 3,
301  kPwCamPhysicalInformation = 4,
302  kPwPhysicalInformationSet = 5
303  };
304 
305 
306 
307  //----------------------------------------------------------------------//
308  // Parser Class //
309  //----------------------------------------------------------------------//
310  class Parser
311  {
312  //----------------------------------------------------------------------//
313  // Private Attributes //
314  //----------------------------------------------------------------------//
315  private:
316  const std::vector<U8>::const_iterator m_beg, m_end;
317  CParmInfoMap m_ParmInfoMap;
318  eHeaderType m_HeaderType = kUnknown;
319  sStandaloneStaticHeader m_StdandaloneHeader;
320  sEmbeddedStaticHeader m_EmbeddedHeader;
321 
322  //----------------------------------------------------------------------//
323  // Private Methods //
324  //----------------------------------------------------------------------//
325  private:
326  bool l_ParseIdentification(sIdentification & rId, std::vector<U8>::const_iterator Id_beg, std::vector<U8>::const_iterator Id_end);
327  bool l_HeaderVersion(U16 & rVersion);
328  bool l_ParseStaticHeader(sStandaloneStaticHeader & rHeader);
329  bool l_ParseStaticHeader(sEmbeddedStaticHeader & rHeader);
330  bool l_ParseParmInfo(size_t HeaderLen, CParmInfoMap & rParmInfoMap);
331 
332  //----------------------------------------------------------------------//
333  // Public Methods //
334  //----------------------------------------------------------------------//
335  public:
336  Parser(std::vector<U8>::const_iterator beg, std::vector<U8>::const_iterator end)
337  : m_beg(beg), m_end(end)
338  {}
339 
340  bool Parse();
341 
342  bool HasIdentification(sIdentification & rID);
343  bool ParmAddress(U8 ParmNo, U16 & rParmAddress);
344  eHeaderType HeaderType();
345  sStandaloneStaticHeader Header(const sStandaloneStaticHeader & rHeader);
346  sEmbeddedStaticHeader Header(const sEmbeddedStaticHeader & rHeader);
347  bool ParseManufactureInformation(size_t ParmAddress, sManufactureInformation & rManuInfo);
348  bool ParseMultiHeadInfo(size_t ParmAddress, sMultiHeadInfo & rMultiHeadInfo);
349  bool ParseHeadList(size_t ParmAddress, tHeadList & rHeadList);
350  bool ParsePwCamPhysInfo(size_t ParmAddress, sPwCamPhysicalInfo & rPhysInfo);
351  bool ParsePwPhysicalInfo(size_t ParmAddress, sPwPhysicalInformation & rPhysInfo, std::vector<U8>::const_iterator & rpBuffer);
352  bool ParsePwPhysInfoSet(size_t ParmAddress, sPwPhysicalInformationSet & rPwPhysInfoSet);
353  bool ParsePwFcaPhysInfo(size_t ParmAddress, sPwFCAPhysInfo & rPhysInfo);
354  bool ParseHallInfo(size_t ParmAddress, sHallInformation & rHallInfo);
355  };
356 
357  //----------------------------------------------------------------------//
358  // Builder Class //
359  //----------------------------------------------------------------------//
360  class Builder
361  {
362  public:
364  {
366  const std::vector<U8> & rParmData;
367  };
368  typedef std::vector<sParmContent> tParmContentInfo;
369 
370  private:
371  static CParmInfoMap l_BuildParmInfo(const tParmContentInfo & rParmContent, U16 BaseAddress, size_t & rParmDataSize);
372  static CParmInfoMap l_BuildParmInfo(const tParmContentInfo & rParmContent, U16 BaseAddress, std::vector<U8> & rGeneratedParmData);
373 
374  static std::vector<U8> l_Raw(const CPT2026PeripheralROM::sIdentification & rId);
375  static std::vector<U8> l_Raw(const sStandaloneStaticHeader & rHeader);
376  static std::vector<U8> l_Raw(const sEmbeddedStaticHeader & rHeader);
377  static std::vector<U8> l_Raw(const CParmInfoMap & rParmInfo);
378 
379  template <typename HeaderType>
380  static std::vector<U8> l_BuildROM(HeaderType Header, const tParmContentInfo & rParmContent);
381 
382  public:
383  static std::vector<U8> Raw(const CPT2026PeripheralROM::sHallInformation & rHallInfo);
384  static std::vector<U8> Raw(const CPT2026PeripheralROM::sManufactureInformation & rManInfo);
385  static std::vector<U8> Raw(const CPT2026PeripheralROM::sMultiHeadInfo & rMultHeadInfo);
386  static std::vector<U8> Raw(const CPT2026PeripheralROM::tHeadList & rHeadList);
387  static std::vector<U8> Raw(const CPT2026PeripheralROM::sPwCamPhysicalInfo & rPwCamPhysInfo);
388  static std::vector<U8> Raw(const CPT2026PeripheralROM::sPwFCAPhysInfo & rPwFCAPhysInfo);
389  static std::vector<U8> Raw(const CPT2026PeripheralROM::sPwPhysicalInformation & rPwPhysInfo);
390  static std::vector<U8> Raw(const CPT2026PeripheralROM::sPwPhysicalInformationSet & rPwPhysInfoSet);
391 
392  static std::vector<U8> BuildROM(sStandaloneStaticHeader Header, const tParmContentInfo & rParmContent);
393  static std::vector<U8> BuildROM(sEmbeddedStaticHeader Header, const tParmContentInfo & rParmContent);
394 
395  static void Build1226ROM( std::vector<U8> & rOutputROM,
398  const CPT2026PeripheralROM::sHallInformation & rHallInfo);
399  static void Build9046ROM( std::vector<U8> & rOutputROM,
400  const CPT2026PeripheralROM::sIdentification & rIdentification,
402  const CPT2026PeripheralROM::sMultiHeadInfo & rMultiHeadInfo,
403  const CPT2026PeripheralROM::tHeadList & rSearchHeadList,
404  const CPT2026PeripheralROM::tHeadList & rMeasHeadList,
405  const CPT2026PeripheralROM::sPwCamPhysicalInfo & rPwCamPhysInfo,
406  const CPT2026PeripheralROM::sPwPhysicalInformationSet & rPwPhysInfoSet);
407  };
408  };
409 
410 } // namespace MTL
MTL::CPT2026PeripheralROM::Builder::sParmContent::ParmNumber
U8 ParmNumber
Definition: CPT2026PeripheralROM.h:365
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration
Definition: CPT2026PeripheralROM.h:237
MTL::CPT2026PeripheralROM::sMultiHeadInfo::MultiHeadInfo
std::vector< sHeadInfo > MultiHeadInfo
Definition: CPT2026PeripheralROM.h:191
MTL::CPT2026PeripheralROM::sPwCamPhysicalInfo::NormalizationTable
tNormalizationTable NormalizationTable
Definition: CPT2026PeripheralROM.h:220
MTL::CPT2026PeripheralROM
Definition: CPT2026PeripheralROM.h:21
MTL::CPT2026PeripheralROM::sIdentification::SN
U32 SN
Definition: CPT2026PeripheralROM.h:46
MTL::CPT2026PeripheralROM::sIdentification::ProtocolVersion
U16 ProtocolVersion
Definition: CPT2026PeripheralROM.h:43
MTL::CPT2026PeripheralROM::sStandaloneStaticHeader
Definition: CPT2026PeripheralROM.h:56
MTL::CPT2026PeripheralROM::sMultiHeadInfo::OffsetDAC
U16 OffsetDAC
Definition: CPT2026PeripheralROM.h:190
MTL::CPT2026PeripheralROM::sHeadDefinition::sHeadDefinition
sHeadDefinition(U8 HeadNum, U8 PhysInfInd)
Definition: CPT2026PeripheralROM.h:201
MTL::CPT2026PeripheralROM::sTransmissionTimes::sTransmissionTimes
sTransmissionTimes()
Definition: CPT2026PeripheralROM.h:149
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::NoiseLevelCurve
std::vector< U16 > NoiseLevelCurve
Definition: CPT2026PeripheralROM.h:102
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::G0Z
F32 G0Z
Definition: CPT2026PeripheralROM.h:240
MTL::CPT2026PeripheralROM::sHallInformation::IsCalibrated
bool IsCalibrated(void)
Definition: CPT2026PeripheralROM.h:278
MTL::CPT2026PeripheralROM::sPwFCAPhysInfo::MinIF
F64 MinIF
Definition: CPT2026PeripheralROM.h:162
MTL::CPT2026PeripheralROM::sTransmissionTimes
Definition: CPT2026PeripheralROM.h:145
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::TuningCurve
std::vector< U16 > TuningCurve
Definition: CPT2026PeripheralROM.h:103
MTL::CPT2026PeripheralROM::sPwFCAPhysInfo::FreqMultiplier
F64 FreqMultiplier
Definition: CPT2026PeripheralROM.h:164
MTL::CPT2026PeripheralROM::sPwCamPhysicalInfo::Version
U16 Version
Definition: CPT2026PeripheralROM.h:214
MTL::CPT2026PeripheralROM::sPwPhysicalInformationSet
Definition: CPT2026PeripheralROM.h:112
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::B0Z
U16 B0Z
Definition: CPT2026PeripheralROM.h:239
MTL::Instrument::PT2026Types
Definition: PT2026TypeConversions.h:13
MTL::CPT2026PeripheralROM::kUnknown
@ kUnknown
Definition: CPT2026PeripheralROM.h:27
MTL::CPT2026PeripheralROM::sHeadInfo
Definition: CPT2026PeripheralROM.h:177
MTL::CPT2026PeripheralROM::sPwPhysicalInformation
Definition: CPT2026PeripheralROM.h:90
MTL::CPT2026PeripheralROM::eDeviceType
eDeviceType
Definition: CPT2026PeripheralROM.h:32
MTL::CPT2026PeripheralROM::sPwCamPhysicalInfo::GyroRatio
F64 GyroRatio
Definition: CPT2026PeripheralROM.h:218
MTL::CPT2026PeripheralROM::CParmInfoMap
Definition: CPT2026PeripheralROM.h:81
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::DeadTime
U8 DeadTime
Definition: CPT2026PeripheralROM.h:101
MTL::CPT2026PeripheralROM::sHeadInfo::Info
U8 Info
Definition: CPT2026PeripheralROM.h:182
MTL::CPT2026PeripheralROM::sPwCamPhysicalInfo
Definition: CPT2026PeripheralROM.h:213
MTL::CPT2026PeripheralROM::eHeaderType
eHeaderType
Definition: CPT2026PeripheralROM.h:27
MTL::CPT2026PeripheralROM::sIdentification::Capabilities
U32 Capabilities
Definition: CPT2026PeripheralROM.h:47
MTL::CPT2026PeripheralROM::sManufactureInformation::Designation
std::string Designation
Definition: CPT2026PeripheralROM.h:54
MTL::CPT2026PeripheralROM::sHeadInfo::PhysInfoSetIndex
U8 PhysInfoSetIndex
Definition: CPT2026PeripheralROM.h:183
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::FreqMultiplier
F64 FreqMultiplier
Definition: CPT2026PeripheralROM.h:96
MTL::CPT2026PeripheralROM::sManufactureInformation
Definition: CPT2026PeripheralROM.h:52
MTL::CPT2026PeripheralROM::sStandaloneStaticHeader::Identification
sIdentification Identification
Definition: CPT2026PeripheralROM.h:66
MTL::CPT2026PeripheralROM::Builder::sParmContent::rParmData
const std::vector< U8 > & rParmData
Definition: CPT2026PeripheralROM.h:366
MTL::CPT2026PeripheralROM::sIdentification::Model
U16 Model
Definition: CPT2026PeripheralROM.h:45
MTL::CPT2026PeripheralROM::sPwFCAPhysInfo::VoltageNoise
U16 VoltageNoise
Definition: CPT2026PeripheralROM.h:165
MTL::CPT2026PeripheralROM::sStandaloneStaticHeader::ROMVersion
U16 ROMVersion
Definition: CPT2026PeripheralROM.h:62
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::FreqStepCurve
std::vector< U16 > FreqStepCurve
Definition: CPT2026PeripheralROM.h:106
MTL::CPT2026PeripheralROM::sIdentification::DeviceType
eDeviceType DeviceType
Definition: CPT2026PeripheralROM.h:44
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::SampleLength
F64 SampleLength
Definition: CPT2026PeripheralROM.h:100
MTL::CPT2026PeripheralROM::sPwFCAPhysInfo
Definition: CPT2026PeripheralROM.h:158
MTL::CPT2026PeripheralROM::sStandaloneStaticHeader::HeaderCRC
U8 HeaderCRC
Definition: CPT2026PeripheralROM.h:67
MTL::CPT2026PeripheralROM::sPwCamPhysicalInfo::NominalFreq
F64 NominalFreq
Definition: CPT2026PeripheralROM.h:216
MTL::CPT2026PeripheralROM::sIdentification
Definition: CPT2026PeripheralROM.h:41
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::MinIF
F64 MinIF
Definition: CPT2026PeripheralROM.h:94
MTL::CPT2026PeripheralROM::Builder::sParmContent
Definition: CPT2026PeripheralROM.h:363
MTL::CPT2026PeripheralROM::Parser
Definition: CPT2026PeripheralROM.h:310
MTL::CPT2026PeripheralROM::sPwCamPhysicalInfo::NormalizationDate
std::string NormalizationDate
Definition: CPT2026PeripheralROM.h:219
MTL::CPT2026PeripheralROM::sMultiHeadInfo::StructVersion
U16 StructVersion
Definition: CPT2026PeripheralROM.h:189
MTL::CPT2026PeripheralROM::sHallInformation::Range_mT
U16 Range_mT
Definition: CPT2026PeripheralROM.h:235
MTL::CPT2026PeripheralROM::sHeadInfo::MUXcode
U8 MUXcode
Definition: CPT2026PeripheralROM.h:181
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::T0
U16 T0
Definition: CPT2026PeripheralROM.h:241
MTL::CPT2026PeripheralROM::sStandaloneStaticHeader::ROMCapacity
U16 ROMCapacity
Definition: CPT2026PeripheralROM.h:63
MTL::CPT2026PeripheralROM::sPwPhysicalInformationSet::Attach
void Attach(sPwPhysicalInformation *pPwPhysInfo)
Definition: CPT2026PeripheralROM.h:125
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::PulseWidthCurve
std::vector< U16 > PulseWidthCurve
Definition: CPT2026PeripheralROM.h:105
MTL
Definition: CPT2026PeripheralROM.h:19
MTL::CPT2026PeripheralROM::sTransmissionTimes::ExtNMRTransTime_us
U32 ExtNMRTransTime_us
Definition: CPT2026PeripheralROM.h:148
MTL::CPT2026PeripheralROM::tHeadDefList
std::vector< sHeadDefinition > tHeadDefList
Definition: CPT2026PeripheralROM.h:206
MTL::Instrument
Definition: MFC3045.h:25
MTL::CPT2026PeripheralROM::sStandaloneStaticHeader::ROMSize
U16 ROMSize
Definition: CPT2026PeripheralROM.h:64
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::GyroRatio
F64 GyroRatio
Definition: CPT2026PeripheralROM.h:97
MTL::CPT2026PeripheralROM::sPwPhysicalInformationSet::size
size_type size(void) const
Definition: CPT2026PeripheralROM.h:129
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::T2
F64 T2
Definition: CPT2026PeripheralROM.h:99
MTL::CPT2026PeripheralROM::sTransmissionTimes::NMRTransTime_us
U32 NMRTransTime_us
Definition: CPT2026PeripheralROM.h:147
MTL::CPT2026PeripheralROM::sEmbeddedStaticHeader
Definition: CPT2026PeripheralROM.h:69
MTL::CPT2026PeripheralROM::tHeadList
std::vector< U8 > tHeadList
Definition: CPT2026PeripheralROM.h:194
MTL::CPT2026PeripheralROM::sHallInformation
Definition: CPT2026PeripheralROM.h:228
MTL::CPT2026PeripheralROM::sHeadDefinition::PhysInfoSetIndex
U8 PhysInfoSetIndex
Definition: CPT2026PeripheralROM.h:199
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::CTGZ
F32 CTGZ
Definition: CPT2026PeripheralROM.h:243
MTL::CPT2026PeripheralROM::sPwPhysicalInformationSet::size_type
std::vector< sPwPhysicalInformation * >::size_type size_type
Definition: CPT2026PeripheralROM.h:118
MTL::CPT2026PeripheralROM::sHeadDefinition
Definition: CPT2026PeripheralROM.h:196
MTL::CPT2026PeripheralROM::sPwFCAPhysInfo::sPwFCAPhysInfo
sPwFCAPhysInfo(void)
Definition: CPT2026PeripheralROM.h:167
PT2026Types.h
MTL::CPT2026PeripheralROM::tTransmissionTimeList
std::vector< sTransmissionTimes > tTransmissionTimeList
Definition: CPT2026PeripheralROM.h:156
MTL::CPT2026PeripheralROM::sPwFCAPhysInfo::MaxIF
F64 MaxIF
Definition: CPT2026PeripheralROM.h:163
MTL::CPT2026PeripheralROM::e9046ROMParm
e9046ROMParm
Definition: CPT2026PeripheralROM.h:296
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::Norm
static F32 Norm(const F32 &rBx, const F32 &rBy, const F32 &rBz)
Definition: CPT2026PeripheralROM.h:260
MTL::CPT2026PeripheralROM::sHallInformation::State
U8 State
Definition: CPT2026PeripheralROM.h:234
MTL::CPT2026PeripheralROM::sEmbeddedStaticHeader::HeaderCRC
U8 HeaderCRC
Definition: CPT2026PeripheralROM.h:79
MTL::CPT2026PeripheralROM::tNormalizationTable
std::vector< F32 > tNormalizationTable
Definition: CPT2026PeripheralROM.h:211
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::MaxFreq
F64 MaxFreq
Definition: CPT2026PeripheralROM.h:93
MTL::CPT2026PeripheralROM::Parser::Parser
Parser(std::vector< U8 >::const_iterator beg, std::vector< U8 >::const_iterator end)
Definition: CPT2026PeripheralROM.h:336
MTL::CPT2026PeripheralROM::sHallInformation::Tolerance
U8 Tolerance
Definition: CPT2026PeripheralROM.h:236
MTL::CPT2026PeripheralROM::sHallInformation::IsActivated
bool IsActivated(void)
Definition: CPT2026PeripheralROM.h:282
MTL::CPT2026PeripheralROM::sPwFCAPhysInfo::MinFreq
F64 MinFreq
Definition: CPT2026PeripheralROM.h:160
MTL::CPT2026PeripheralROM::sEmbeddedStaticHeader::ROMCapacity
U16 ROMCapacity
Definition: CPT2026PeripheralROM.h:76
MTL::CPT2026PeripheralROM::sEmbeddedStaticHeader::ROMSize
U16 ROMSize
Definition: CPT2026PeripheralROM.h:77
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::CT0Z
F32 CT0Z
Definition: CPT2026PeripheralROM.h:242
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::Calibrate
void Calibrate(const U16 &rRawBx, const U16 &rRawBy, const U16 &rRawBz, const U16 &rRawT, F32 &rBx_T, F32 &rBy_T, F32 &rBz_T, F32 &rNorm_T)
Definition: CPT2026PeripheralROM.h:265
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::MaxIF
F64 MaxIF
Definition: CPT2026PeripheralROM.h:95
MTL::CPT2026PeripheralROM::sTransmissionTimes::sTransmissionTimes
sTransmissionTimes(U32 Short_us, U32 Extended_us)
Definition: CPT2026PeripheralROM.h:152
MTL::CPT2026PeripheralROM::Builder::tParmContentInfo
std::vector< sParmContent > tParmContentInfo
Definition: CPT2026PeripheralROM.h:368
MTL::CPT2026PeripheralROM::sHeadDefinition::HeadNumber
U8 HeadNumber
Definition: CPT2026PeripheralROM.h:198
MTL::CPT2026PeripheralROM::sEmbeddedStaticHeader::ROMVersion
U16 ROMVersion
Definition: CPT2026PeripheralROM.h:75
OSDefines.h
Platform Dependent Definitions.
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::MinFreq
F64 MinFreq
Definition: CPT2026PeripheralROM.h:92
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::RawBtoB
static F32 RawBtoB(const U16 &rRawB, const U16 &rRawT, const U16 &rB0, const F32 &rG0, const U16 &rT0, const F32 &rCT0, const F32 &rCTG)
Definition: CPT2026PeripheralROM.h:249
MTL::CPT2026PeripheralROM::sPwFCAPhysInfo::MaxFreq
F64 MaxFreq
Definition: CPT2026PeripheralROM.h:161
MTL::CPT2026PeripheralROM::sManufactureInformation::ManufacturingDate
std::string ManufacturingDate
Definition: CPT2026PeripheralROM.h:53
MTL::CPT2026PeripheralROM::sPwCamPhysicalInfo::HighFreq
F64 HighFreq
Definition: CPT2026PeripheralROM.h:217
MTL::CPT2026PeripheralROM::sMultiHeadInfo
Definition: CPT2026PeripheralROM.h:185
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::MatchingCurve
std::vector< U16 > MatchingCurve
Definition: CPT2026PeripheralROM.h:104
MTL::CPT2026PeripheralROM::Builder
Definition: CPT2026PeripheralROM.h:360
MTL::CPT2026PeripheralROM::sPwPhysicalInformationSet::~sPwPhysicalInformationSet
virtual ~sPwPhysicalInformationSet(void)
Definition: CPT2026PeripheralROM.h:120
MTL::CPT2026PeripheralROM::e1226ROMParm
e1226ROMParm
Definition: CPT2026PeripheralROM.h:291
MTL::CPT2026PeripheralROM::sHallInformation::sCalibration::sCalibration
sCalibration()
Definition: CPT2026PeripheralROM.h:245
MTL::CPT2026PeripheralROM::sPwPhysicalInformation::PulsePeriod
F64 PulsePeriod
Definition: CPT2026PeripheralROM.h:98
MTL::CPT2026PeripheralROM::sPwCamPhysicalInfo::LowFreq
F64 LowFreq
Definition: CPT2026PeripheralROM.h:215