10 #ifndef GMMFAMDATA_HPP_
11 #define GMMFAMDATA_HPP_
13 #include <geotypes.hpp>
19 #include <GmError.hpp>
31 #define GM_MFAM_SPI_PACKET01 (GM_DATA_DOMAIN_MAGNETOMETER | 0x01)
32 #define GM_MFAM_INDEXED_SPI01 (GM_DATA_DOMAIN_MAGNETOMETER | 0x02)
33 #define GM_MFAM_INDEXED_SPI_W_A2DQUAD01 (GM_DATA_DOMAIN_MAGNETOMETER | 0x03)
39 #define GM_MFAM_INDEXED_SPI_W_HEADER (GM_DATA_DOMAIN_MAGNETOMETER | 0x04)
41 #define GM_MFAM_ARRAY_INDEXED_SPI (GM_DATA_DOMAIN_MAGNETOMETER | 0x05)
42 #define GM_MFAM_SIMPLE_TEXT_01 (GM_DATA_DOMAIN_MAGNETOMETER | 0x06)
43 #define GM_MFAM_864_LEGACY_TEXT_ONE_SENSOR (GM_DATA_DOMAIN_MAGNETOMETER | 0x07)
44 #define GM_MFAM_LONG_TEXT_01 (GM_DATA_DOMAIN_MAGNETOMETER | 0x08)
51 #define GM_860_BINARY_01 (GM_DATA_DOMAIN_MAGNETOMETER | 0x0A)
52 #define GM_MFAM_ARRAY_01 (GM_DATA_DOMAIN_MAGNETOMETER | 0x0B)
53 #define GM_MAG_860_TIMESTAMPED (GM_DATA_DOMAIN_MAGNETOMETER | 0x0C)
61 #define GM_MFAM_FILTERED_INDEXED (GM_DATA_DOMAIN_MAGNETOMETER | 0x0D)
62 #define GM_MFAM_FILTERED_INDEXED_W_HEADER (GM_DATA_DOMAIN_MAGNETOMETER | 0x0E)
63 #define GM_MFAM_FILTERED_ARRAY_INDEXED_SPI (GM_DATA_DOMAIN_MAGNETOMETER | 0x0F)
64 #define GM_MFAM_FILTERED_ARRAY (GM_DATA_DOMAIN_MAGNETOMETER | 0x10)
65 #define GM_MFAM_FILTERED_PACKET (GM_DATA_DOMAIN_MAGNETOMETER | 0x11)
69 #define GM_MFAM_QUAD_16_ANALOGS (GM_DATA_DOMAIN_ANALOG | 01)
72 typedef unsigned long DWORD;
76 #define MFAM_NANOTESLAS_PER_LSB 5.0E-5
77 #define MAG_DATA_AS_FLOAT(x) (1.0*(x)*MFAM_NANOTESLAS_PER_LSB)
81 extern uint64_t g_uiGlobalMasterSampleCounter;
86 unsigned int iFault:1;
87 unsigned int iRunMode:4;
88 unsigned int iReserved:2;
89 unsigned int iCompromised:1;
90 unsigned int iFaultId:5;
91 unsigned int i10MHz:1;
92 unsigned int iPpsAvailable:1;
93 unsigned int iPpsLocked:1;
150 uint16_t mTemperature,
160 } MfamFilteredPacket;
202 uint32_t uRecordSize;
203 uint64_t m_uiStartIndex;
214 uint64_t uiPacketIndex;
221 MfamSpiPacket spMFAMSpiPacket;
222 } IndexedMfamSpiPacket;
227 typedef struct PACKED_SPEC s_IndexedMfamFilteredPacket {
229 MfamFloatPacket mMfamFilteredPacket;
234 } IndexedMfamFilteredPacket;
238 struct IndexedMfamSpiPacketWithHeader;
244 MfamFloatPacket mMfamFilteredPacket;
256 typedef struct PACKED_SPEC s_IndexedMfamSpiPacketWithHeader
260 uint32_t uRecordSize;
261 IndexedMfamSpiPacket imspData;
262 } IndexedMfamSpiPacketWithHeader;
270 uint32_t uRecordSize;
271 IndexedMfamSpiPacket imspData;
280 uint32_t uRecordSize;
282 } IndexedMfamFilteredPacketWithHeader;
285 #define GM_SIZEOF_INDEXED_SPI_W_HEADER (sizeof(IndexedMfamSpiPacketWithHeader))
286 #define GM_SIZEOF_INDEXED_MFAM_FILTERED_W_HEADER (sizeof(IndexedMfamFilteredPacketWithHeader))
294 DWORD m_dwRecordType;
297 uint32_t m_uint32RecordSize;
298 uint32_t m_uint32RecordCount;
302 #define MFAM_STREAMER_CACHE_SIZE 40
348 IndexedMfamSpiPacket ispMagData;
355 #define FID_COUNT_MASK 0x7FF
356 #define AUX_DATA_MASK 0x3800
357 #define MAG_1_VALID 0x4000
358 #define MAG_2_VALID 0x8000
359 #define COMPASS_MASK 0x800
360 #define SERIAL_MASK 0x3800
361 #define GYRO_MASK 0x1000
362 #define ACCEL_MASK 0x2000
363 #define SERIAL_V_MASK 0x3800
365 #define VALID_MFAM_FID_TEMPLATE(INDEX) MAG_2_VALID | MAG_1_VALID | INDEX
367 #define IS_MAG1_VALID(x) ((x) & MAG_1_VALID)
368 #define IS_MAG2_VALID(x) ((x) & MAG_2_VALID)
370 #define GET_FID_COUNT(x) ((x) & FID_COUNT_MASK)
372 #define IS_COMPASS(x) ((((x) & COMPASS_MASK)==COMPASS_MASK)
373 #define IS_GYRO(x) ((((x) & GYRO_MASK)==GYRO_MASK)
374 #define IS_ACCEL(x) (((x) & ACCEL_MASK)==ACCEL_MASK)
375 #define IS_SERIAL(x) (((x) & SERIAL_V_MASK)==SERIAL_V_MASK)
378 #define LOCK_MASK 0x4000
379 #define PPS_MASK 0x8000
380 #define FAILURE_MASK 0x1
382 #define IS_PPS_RECEIVED(x) ((x) & PPS_MASK)
383 #define IS_PPS_LOCKED(x) ((x) & LOCK_MASK)
384 #define IS_MAG_FAILED(x) ((x) & FAILURE_MASK)
387 #define DEAD_ZONE_MASK 0x0001
389 #define IS_DEAD_ZONE(x) ((x) & DEAD_ZONE_MASK)
391 #define GET_MAG(x) (double(x) * MAG_TO_NT)
396 #define MAIN_STATE_MASK 0x3C00
397 #define SUB_STATE_MASK 0x0380
398 #define COMPASS_FAILURE_MASK 0x0380
399 #define STARTUP_FAIL_MASK 0x0001
400 #define MAIN_MODE_MASK 0x0007
401 #define MFAM_IN_STARTUP 0x0002
402 #define MFAM_IN_MAG_MODE 0x0004
404 #define MAG_IS_STARTING(x) ((x)&MFAM_IN_STARTUP)
405 #define MAG_IS_RUNNING(x) ((x)&MFAM_IN_MAG_MODE)
410 #define STATE_MASK_HEATING 1 << 10
411 #define STATE_MASK_MAG1_LASER_HEATER_RAMPING 2 << 10
412 #define STATE_MASK_MAG1_PROBE_LASER_LOCKING 3 << 10
413 #define STATE_MASK_MAG1_PUMP_LASER_HEATER_RAMPING 4 << 10
414 #define STATE_MASK_MAG1_PUMP_LASER_LOCKING 5 << 10
415 #define STATE_MASK_MAG1_MOVING_LASERS_TO_OPERATING_POINT 6 << 10
416 #define STATE_MASK_MAG2_LASER_HEATER_RAMPING 7 << 10
417 #define STATE_MASK_MAG2_PROBE_LASER_LOCKING 8 << 10
418 #define STATE_MASK_MAG2_PUMP_LASER_HEATER_RAMPING 9 << 10
419 #define STATE_MASK_MAG2_PUMP_LASER_LOCKING 10 << 10
420 #define STATE_MASK_MAG2_MOVING_LASERS_TO_OPERATING_POINT 11 << 10
423 #define STATE_MASK_HEATING_FULL 1 << 7
424 #define STATE_MASK_HEATING_MAG1_OK 2 << 7
425 #define STATE_MASK_HEATING_MAG2_OK 3 << 7
426 #define STATE_MASK_HEATING_SERVOS_ENABLED 4 << 7
432 #define STATE_HEATING_FULL 21
433 #define STATE_HEATING_MAG1_OK 22
434 #define STATE_HEATING_MAG2_OK 23
435 #define STATE_HEATING_SERVOS_ENABLED 24
436 #define STATE_HEATING_MASK 31
437 #define STATE_MAG1_LASER_HEATER_RAMPING 32
438 #define STATE_MAG1_PROBE_LASER_LOCKING 33
439 #define STATE_MAG1_PUMP_LASER_HEATER_RAMPING 34
440 #define STATE_MAG1_PUMP_LASER_LOCKING 35
441 #define STATE_MAG1_MOVING_LASERS_TO_OPERATING_POINT 36
442 #define STATE_MAG2_LASER_HEATER_RAMPING 37
443 #define STATE_MAG2_PROBE_LASER_LOCKING 38
444 #define STATE_MAG2_PUMP_LASER_HEATER_RAMPING 39
445 #define STATE_MAG2_PUMP_LASER_LOCKING 40
446 #define STATE_MAG2_MOVING_LASERS_TO_OPERATING_POINT 41
451 extern "C" uint16_t ParseMfamSystemStatus (
const uint16_t uiSystemStatus);
Definition: GmMfamData.hpp:305
Definition: GmMfamData.hpp:312
GmApp/GmLoggingApp.hpp>
Definition: Analogs.hpp:47
Definition: GmMfamData.hpp:242
Definition: GmMfamData.hpp:339
Definition: GmMfamData.hpp:324
Definition: GmMfamData.hpp:332
Definition: GmMfamData.hpp:219
Definition: GmMfamData.hpp:132
Definition: GmMfamData.hpp:162
Definition: GmMfamData.hpp:105
Definition: GmMfamData.hpp:213
Definition: GmMfamData.hpp:347
Definition: GmMfamData.hpp:292
Definition: GmMfamData.hpp:84