VectorNav C++ Library
types.h
1 #ifndef _VNPROTOCOL_UART_TYPES_H_
2 #define _VNPROTOCOL_UART_TYPES_H_
3 
4 #include "int.h"
5 
6 namespace vn {
7 namespace protocol {
8 namespace uart {
9 
10 enum ErrorDetectionMode
11 {
12  ERRORDETECTIONMODE_NONE,
13  ERRORDETECTIONMODE_CHECKSUM,
14  ERRORDETECTIONMODE_CRC
15 };
16 
18 enum AsciiAsync
19 {
20  VNOFF = 0,
21  VNYPR = 1,
22  VNQTN = 2,
23  #ifdef INTERNAL
24  VNQTM = 3,
25  VNQTA = 4,
26  VNQTR = 5,
27  VNQMA = 6,
28  VNQAR = 7,
29  #endif
30  VNQMR = 8,
31  #ifdef INTERNAL
32  VNDCM = 9,
33  #endif
34  VNMAG = 10,
35  VNACC = 11,
36  VNGYR = 12,
37  VNMAR = 13,
38  VNYMR = 14,
39  #ifdef INTERNAL
40  VNYCM = 15,
41  #endif
42  VNYBA = 16,
43  VNYIA = 17,
44  #ifdef INTERNAL
45  VNICM = 18,
46  #endif
47  VNIMU = 19,
48  VNGPS = 20,
49  VNGPE = 21,
50  VNINS = 22,
51  VNINE = 23,
52  VNISL = 28,
53  VNISE = 29,
54  VNDTV = 30,
55  #ifdef INTERNAL
56  VNRAW = 252,
57  VNCMV = 253,
58  VNSTV = 254,
59  VNCOV = 255,
60  #endif
61 };
62 
64 enum AsyncMode
65 {
66  ASYNCMODE_NONE = 0,
67  ASYNCMODE_PORT1 = 1,
68  ASYNCMODE_PORT2 = 2,
69  ASYNCMODE_BOTH = 3
70 };
71 
73 enum BinaryGroup
74 {
75  BINARYGROUP_COMMON = 0x01,
76  BINARYGROUP_TIME = 0x02,
77  BINARYGROUP_IMU = 0x04,
78  BINARYGROUP_GPS = 0x08,
79  BINARYGROUP_ATTITUDE = 0x10,
80  BINARYGROUP_INS = 0x20
81 };
82 
84 enum CommonGroup
85 {
86  COMMONGROUP_NONE = 0x0000,
87  COMMONGROUP_TIMESTARTUP = 0x0001,
88  COMMONGROUP_TIMEGPS = 0x0002,
89  COMMONGROUP_TIMESYNCIN = 0x0004,
90  COMMONGROUP_YAWPITCHROLL = 0x0008,
91  COMMONGROUP_QUATERNION = 0x0010,
92  COMMONGROUP_ANGULARRATE = 0x0020,
93  COMMONGROUP_POSITION = 0x0040,
94  COMMONGROUP_VELOCITY = 0x0080,
95  COMMONGROUP_ACCEL = 0x0100,
96  COMMONGROUP_IMU = 0x0200,
97  COMMONGROUP_MAGPRES = 0x0400,
98  COMMONGROUP_DELTATHETA = 0x0800,
99  COMMONGROUP_INSSTATUS = 0x1000,
100  COMMONGROUP_SYNCINCNT = 0x2000,
101  COMMONGROUP_TIMEGPSPPS = 0x4000
102 };
103 
105 enum TimeGroup
106 {
107  TIMEGROUP_NONE = 0x0000,
108  TIMEGROUP_TIMESTARTUP = 0x0001,
109  TIMEGROUP_TIMEGPS = 0x0002,
110  TIMEGROUP_GPSTOW = 0x0004,
111  TIMEGROUP_GPSWEEK = 0x0008,
112  TIMEGROUP_TIMESYNCIN = 0x0010,
113  TIMEGROUP_TIMEGPSPPS = 0x0020,
114  TIMEGROUP_TIMEUTC = 0x0040,
115  TIMEGROUP_SYNCINCNT = 0x0080
116 };
117 
119 enum ImuGroup
120 {
121  IMUGROUP_NONE = 0x0000,
122  IMUGROUP_IMUSTATUS = 0x0001,
123  IMUGROUP_UNCOMPMAG = 0x0002,
124  IMUGROUP_UNCOMPACCEL = 0x0004,
125  IMUGROUP_UNCOMPGYRO = 0x0008,
126  IMUGROUP_TEMP = 0x0010,
127  IMUGROUP_PRES = 0x0020,
128  IMUGROUP_DELTATHETA = 0x0040,
129  IMUGROUP_DELTAVEL = 0x0080,
130  IMUGROUP_MAG = 0x0100,
131  IMUGROUP_ACCEL = 0x0200,
132  IMUGROUP_ANGULARRATE = 0x0400,
133  IMUGROUP_SENSSAT = 0x0800,
134 };
135 
137 enum GpsGroup
138 {
139  GPSGROUP_NONE = 0x0000,
140  GPSGROUP_UTC = 0x0001,
141  GPSGROUP_TOW = 0x0002,
142  GPSGROUP_WEEK = 0x0004,
143  GPSGROUP_NUMSATS = 0x0008,
144  GPSGROUP_FIX = 0x0010,
145  GPSGROUP_POSLLA = 0x0020,
146  GPSGROUP_POSECEF = 0x0040,
147  GPSGROUP_VELNED = 0x0080,
148  GPSGROUP_VELECEF = 0x0100,
149  GPSGROUP_POSU = 0x0200,
150  GPSGROUP_VELU = 0x0400,
151  GPSGROUP_TIMEU = 0x0800,
152 };
153 
155 enum AttitudeGroup
156 {
157  ATTITUDEGROUP_NONE = 0x0000,
158  ATTITUDEGROUP_VPESTATUS = 0x0001,
159  ATTITUDEGROUP_YAWPITCHROLL = 0x0002,
160  ATTITUDEGROUP_QUATERNION = 0x0004,
161  ATTITUDEGROUP_DCM = 0x0008,
162  ATTITUDEGROUP_MAGNED = 0x0010,
163  ATTITUDEGROUP_ACCELNED = 0x0020,
164  ATTITUDEGROUP_LINEARACCELBODY = 0x0040,
165  ATTITUDEGROUP_LINEARACCELNED = 0x0080,
166  ATTITUDEGROUP_YPRU = 0x0100,
167 };
168 
170 enum InsGroup
171 {
172  INSGROUP_NONE = 0x0000,
173  INSGROUP_INSSTATUS = 0x0001,
174  INSGROUP_POSLLA = 0x0002,
175  INSGROUP_POSECEF = 0x0004,
176  INSGROUP_VELBODY = 0x0008,
177  INSGROUP_VELNED = 0x0010,
178  INSGROUP_VELECEF = 0x0020,
179  INSGROUP_MAGECEF = 0x0040,
180  INSGROUP_ACCELECEF = 0x0080,
181  INSGROUP_LINEARACCELECEF = 0x0100,
182  INSGROUP_POSU = 0x0200,
183  INSGROUP_VELU = 0x0400,
184 };
185 
187 enum SensorError
188 {
189  ERR_HARD_FAULT = 1,
190  ERR_SERIAL_BUFFER_OVERFLOW = 2,
191  ERR_INVALID_CHECKSUM = 3,
192  ERR_INVALID_COMMAND = 4,
193  ERR_NOT_ENOUGH_PARAMETERS = 5,
194  ERR_TOO_MANY_PARAMETERS = 6,
195  ERR_INVALID_PARAMETER = 7,
196  ERR_INVALID_REGISTER = 8,
197  ERR_UNAUTHORIZED_ACCESS = 9,
198  ERR_WATCHDOG_RESET = 10,
199  ERR_OUTPUT_BUFFER_OVERFLOW = 11,
200  ERR_INSUFFICIENT_BAUD_RATE = 12,
201  ERR_ERROR_BUFFER_OVERFLOW = 255
202 };
203 
205 enum SyncInMode
206 {
207  #ifdef INTERNAL
208  SYNCINMODE_COUNT2 = 0,
213  SYNCINMODE_ADC2 = 1,
216  SYNCINMODE_ASYNC2 = 2,
217  #endif
218  SYNCINMODE_COUNT = 3,
221  SYNCINMODE_IMU = 4,
223  SYNCINMODE_ASYNC = 5
224 };
225 
227 enum SyncInEdge
228 {
230  SYNCINEDGE_RISING = 0,
232  SYNCINEDGE_FALLING = 1
233 };
234 
236 enum SyncOutMode
237 {
239  SYNCOUTMODE_NONE = 0,
241  SYNCOUTMODE_ITEMSTART = 1,
243  SYNCOUTMODE_IMUREADY = 2,
245  SYNCOUTMODE_INS = 3,
247  SYNCOUTMODE_GPSPPS = 6
248 };
249 
251 enum SyncOutPolarity
252 {
254  SYNCOUTPOLARITY_NEGATIVE = 0,
256  SYNCOUTPOLARITY_POSITIVE = 1
257 };
258 
260 enum CountMode
261 {
263  COUNTMODE_NONE = 0,
265  COUNTMODE_SYNCINCOUNT = 1,
267  COUNTMODE_SYNCINTIME = 2,
269  COUNTMODE_SYNCOUTCOUNTER = 3,
271  COUNTMODE_GPSPPS = 4
272 };
273 
275 enum StatusMode
276 {
278  STATUSMODE_OFF = 0,
280  STATUSMODE_VPESTATUS = 1,
282  STATUSMODE_INSSTATUS = 2
283 };
284 
286 enum ChecksumMode
287 {
289  CHECKSUMMODE_OFF = 0,
291  CHECKSUMMODE_CHECKSUM = 1,
293  CHECKSUMMODE_CRC = 2
294 };
295 
297 enum ErrorMode
298 {
300  ERRORMODE_IGNORE = 0,
302  ERRORMODE_SEND = 1,
304  ERRORMODE_SENDANDOFF = 2
305 };
306 
308 enum FilterMode
309 {
311  FILTERMODE_NOFILTERING = 0,
313  FILTERMODE_ONLYRAW = 1,
315  FILTERMODE_ONLYCOMPENSATED = 2,
317  FILTERMODE_BOTH = 3
318 };
319 
321 enum IntegrationFrame
322 {
324  INTEGRATIONFRAME_BODY = 0,
326  INTEGRATIONFRAME_NED = 1
327 };
328 
330 enum CompensationMode
331 {
333  COMPENSATIONMODE_NONE = 0,
335  COMPENSATIONMODE_BIAS = 1
336 };
337 
339 enum GpsFix
340 {
342  GPSFIX_NOFIX = 0,
344  GPSFIX_TIMEONLY = 1,
346  GPSFIX_2D = 2,
348  GPSFIX_3D = 3
349 };
350 
352 enum GpsMode
353 {
355  GPSMODE_ONBOARDGPS = 0,
357  GPSMODE_EXTERNALGPS = 1,
359  GPSMODE_EXTERNALVN200GPS = 2
360 };
361 
363 enum PpsSource
364 {
366  PPSSOURCE_GPSPPSRISING = 0,
368  PPSSOURCE_GPSPPSFALLING = 1,
370  PPSSOURCE_SYNCINRISING = 2,
372  PPSSOURCE_SYNCINFALLING = 3
373 };
374 
376 enum VpeEnable
377 {
379  VPEENABLE_DISABLE = 0,
381  VPEENABLE_ENABLE = 1
382 };
383 
385 enum HeadingMode
386 {
388  HEADINGMODE_ABSOLUTE = 0,
390  HEADINGMODE_RELATIVE = 1,
392  HEADINGMODE_INDOOR = 2
393 };
394 
396 enum VpeMode
397 {
399  VPEMODE_OFF = 0,
401  VPEMODE_MODE1 = 1
402 };
403 
405 enum Scenario
406 {
408  SCENARIO_AHRS = 0,
410  SCENARIO_INSWITHPRESSURE = 1,
412  SCENARIO_INSWITHOUTPRESSURE = 2,
414  SCENARIO_GPSMOVINGBASELINEDYNAMIC = 3,
416  SCENARIO_GPSMOVINGBASELINESTATIC = 4
417 };
418 
420 enum HsiMode
421 {
423  HSIMODE_OFF = 0,
425  HSIMODE_RUN = 1,
427  HSIMODE_RESET = 2
428 };
429 
431 enum HsiOutput
432 {
434  HSIOUTPUT_NOONBOARD = 1,
436  HSIOUTPUT_USEONBOARD = 3
437 };
438 
440 enum VelocityCompensationMode
441 {
443  VELOCITYCOMPENSATIONMODE_DISABLED = 0,
445  VELOCITYCOMPENSATIONMODE_BODYMEASUREMENT = 1
446 };
447 
449 enum MagneticMode
450 {
452  MAGNETICMODE_2D = 0,
454  MAGNETICMODE_3D = 1
455 };
456 
458 enum ExternalSensorMode
459 {
461  EXTERNALSENSORMODE_INTERNAL = 0,
463  EXTERNALSENSORMODE_EXTERNAL200HZ = 1,
465  EXTERNALSENSORMODE_EXTERNALONUPDATE = 2
466 };
467 
469 enum FoamInit
470 {
472  FOAMINIT_NOFOAMINIT = 0,
474  FOAMINIT_FOAMINITPITCHROLL = 1,
476  FOAMINIT_FOAMINITHEADINGPITCHROLL = 2,
478  FOAMINIT_FOAMINITPITCHROLLCOVARIANCE = 3,
480  FOAMINIT_FOAMINITHEADINGPITCHROLLCOVARIANCE = 4
481 };
482 
484 enum SensSat
485 {
486  SENSSAT_MAGX = 0x0001,
487  SENSSAT_MAGY = 0x0002,
488  SENSSAT_MAGZ = 0x0004,
489  SENSSAT_ACCX = 0x0008,
490  SENSSAT_ACCY = 0x0010,
491  SENSSAT_ACCZ = 0x0020,
492  SENSSAT_GYROX = 0x0040,
493  SENSSAT_GYROY = 0x0080,
494  SENSSAT_GYROZ = 0x0100,
495  SENSSAT_PRES = 0x0200
496 };
497 
499 struct VpeStatus
500 {
503 
506 
509 
511  uint8_t magDisturbance;
512 
515 
517  uint8_t accDisturbance;
518 
521 
524 
527 
529  VpeStatus();
530 
533  explicit VpeStatus(uint16_t raw);
534 };
535 
537 enum InsStatus
538 {
539  INSSTATUS_NOT_TRACKING = 0x00,
540  INSSTATUS_SUFFICIENT_DYNAMIC_MOTION = 0x01,
541  INSSTATUS_TRACKING = 0x02,
542  INSSTATUS_GPS_FIX = 0x04,
543  INSSTATUS_TIME_ERROR = 0x08,
544  INSSTATUS_IMU_ERROR = 0x10,
545  INSSTATUS_MAG_PRES_ERROR = 0x20,
546  INSSTATUS_GPS_ERROR = 0x40
547 };
548 
550 struct TimeUtc
551 {
552  int8_t year;
553  uint8_t month;
554  uint8_t day;
555  uint8_t hour;
556  uint8_t min;
557  uint8_t sec;
558  uint8_t ms;
559 
561  //TimeUtc() { }
562 };
563 
569 CommonGroup operator|(CommonGroup lhs, CommonGroup rhs);
570 
576 TimeGroup operator|(TimeGroup lhs, TimeGroup rhs);
577 
583 ImuGroup operator|(ImuGroup lhs, ImuGroup rhs);
584 
590 GpsGroup operator|(GpsGroup lhs, GpsGroup rhs);
591 
597 AttitudeGroup operator|(AttitudeGroup lhs, AttitudeGroup rhs);
598 
604 InsGroup operator|(InsGroup lhs, InsGroup rhs);
605 
606 }
607 }
608 }
609 
610 #endif
uint8_t sec
Sec field.
Definition: types.h:557
uint8_t accDisturbance
AccDisturbance field.
Definition: types.h:517
bool accSaturation
AccSaturation field.
Definition: types.h:520
uint8_t magDisturbance
MagDistrubance field.
Definition: types.h:511
uint8_t hour
Hour field.
Definition: types.h:555
int8_t year
Year field.
Definition: types.h:552
bool magSaturation
MagSaturation field.
Definition: types.h:514
uint8_t ms
Ms field.
Definition: types.h:558
bool knownMagDisturbance
KnownMagDisturbance field.
Definition: types.h:523
uint8_t min
Min field.
Definition: types.h:556
bool knownAccelDisturbance
KnownAccelDisturbance field.
Definition: types.h:526
uint8_t attitudeQuality
AttitudeQuality field.
Definition: types.h:502
VpeStatus()
Default constructor.
uint8_t day
Day field.
Definition: types.h:554
Definition: attitude.h:8
UTC time as represented by the VectorNav sensor.
Definition: types.h:550
bool gyroSaturation
GyroSaturation field.
Definition: types.h:505
Status indicators for VPE.
Definition: types.h:499
uint8_t month
Month field.
Definition: types.h:553
bool gyroSaturationRecovery
GyroSaturationRecovery field.
Definition: types.h:508