Treehopper C++ API
Bno055Registers.h
Go to the documentation of this file.
1 #pragma once
3 #include "SMBusDevice.h"
6 #include "Libraries/Register.h"
7 
8 using namespace Treehopper::Libraries;
9 
10 namespace Treehopper { namespace Libraries { namespace Sensors { namespace Inertial {
11 
12  enum class OperatingModes
13  {
14  ConfigMode = 0,
15  AccelOnly = 1,
16  MagOnly = 2,
17  GyroOnly = 3,
18  AccelMag = 4,
19  AccelGyro = 5,
20  MagGyro = 6,
21  AccelMagGyro = 7,
22  IMU = 8,
23  Compass = 9,
24  MagnetForGyroscope = 10,
25  NdofFmcOff = 11,
27  };
28 
29  enum class PowerModes
30  {
31  Normal = 0,
32  LowPower = 1,
33  Suspend = 2
34  };
35 
36 
37  class Bno055Registers : public RegisterManager
38  {
39  public:
40  class ChipIdRegister : public Register
41  {
42  public:
43  ChipIdRegister(RegisterManager& regManager) : Register(regManager,0x00, 1, false) { }
44  int value;
45 
46  long getValue() { return ((value & 0xFF) << 0); }
47  void setValue(long val)
48  {
49  value = (int)((val >> 0) & 0xFF);
50  }
51  };
52 
53  class AccelChipIdRegister : public Register
54  {
55  public:
56  AccelChipIdRegister(RegisterManager& regManager) : Register(regManager,0x01, 1, false) { }
57  int value;
58 
59  long getValue() { return ((value & 0xFF) << 0); }
60  void setValue(long val)
61  {
62  value = (int)((val >> 0) & 0xFF);
63  }
64  };
65 
66  class MagChipIdRegister : public Register
67  {
68  public:
69  MagChipIdRegister(RegisterManager& regManager) : Register(regManager,0x02, 1, false) { }
70  int value;
71 
72  long getValue() { return ((value & 0xFF) << 0); }
73  void setValue(long val)
74  {
75  value = (int)((val >> 0) & 0xFF);
76  }
77  };
78 
79  class GyroChipIdRegister : public Register
80  {
81  public:
82  GyroChipIdRegister(RegisterManager& regManager) : Register(regManager,0x03, 1, false) { }
83  int value;
84 
85  long getValue() { return ((value & 0xFF) << 0); }
86  void setValue(long val)
87  {
88  value = (int)((val >> 0) & 0xFF);
89  }
90  };
91 
92  class SwRevisionRegister : public Register
93  {
94  public:
95  SwRevisionRegister(RegisterManager& regManager) : Register(regManager,0x04, 2, false) { }
96  int value;
97 
98  long getValue() { return ((value & 0xFFFF) << 0); }
99  void setValue(long val)
100  {
101  value = (int)((val >> 0) & 0xFFFF);
102  }
103  };
104 
105  class BootloaderVersionRegister : public Register
106  {
107  public:
108  BootloaderVersionRegister(RegisterManager& regManager) : Register(regManager,0x06, 1, false) { }
109  int value;
110 
111  long getValue() { return ((value & 0xFF) << 0); }
112  void setValue(long val)
113  {
114  value = (int)((val >> 0) & 0xFF);
115  }
116  };
117 
118  class PageIdRegister : public Register
119  {
120  public:
121  PageIdRegister(RegisterManager& regManager) : Register(regManager,0x07, 1, false) { }
122  int value;
123 
124  long getValue() { return ((value & 0xFF) << 0); }
125  void setValue(long val)
126  {
127  value = (int)((val >> 0) & 0xFF);
128  }
129  };
130 
131  class AccelXRegister : public Register
132  {
133  public:
134  AccelXRegister(RegisterManager& regManager) : Register(regManager,0x08, 2, false) { }
135  int value;
136 
137  long getValue() { return ((value & 0xFFFF) << 0); }
138  void setValue(long val)
139  {
140  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
141  }
142  };
143 
144  class AccelYRegister : public Register
145  {
146  public:
147  AccelYRegister(RegisterManager& regManager) : Register(regManager,0x0A, 2, false) { }
148  int value;
149 
150  long getValue() { return ((value & 0xFFFF) << 0); }
151  void setValue(long val)
152  {
153  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
154  }
155  };
156 
157  class AccelZRegister : public Register
158  {
159  public:
160  AccelZRegister(RegisterManager& regManager) : Register(regManager,0x0C, 2, false) { }
161  int value;
162 
163  long getValue() { return ((value & 0xFFFF) << 0); }
164  void setValue(long val)
165  {
166  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
167  }
168  };
169 
170  class MagnetometerXRegister : public Register
171  {
172  public:
173  MagnetometerXRegister(RegisterManager& regManager) : Register(regManager,0x0E, 2, false) { }
174  int value;
175 
176  long getValue() { return ((value & 0xFFFF) << 0); }
177  void setValue(long val)
178  {
179  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
180  }
181  };
182 
183  class MagnetometerYRegister : public Register
184  {
185  public:
186  MagnetometerYRegister(RegisterManager& regManager) : Register(regManager,0x10, 2, false) { }
187  int value;
188 
189  long getValue() { return ((value & 0xFFFF) << 0); }
190  void setValue(long val)
191  {
192  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
193  }
194  };
195 
196  class MagnetometerZRegister : public Register
197  {
198  public:
199  MagnetometerZRegister(RegisterManager& regManager) : Register(regManager,0x12, 2, false) { }
200  int value;
201 
202  long getValue() { return ((value & 0xFFFF) << 0); }
203  void setValue(long val)
204  {
205  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
206  }
207  };
208 
209  class GyroXRegister : public Register
210  {
211  public:
212  GyroXRegister(RegisterManager& regManager) : Register(regManager,0x14, 2, false) { }
213  int value;
214 
215  long getValue() { return ((value & 0xFFFF) << 0); }
216  void setValue(long val)
217  {
218  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
219  }
220  };
221 
222  class GyroYRegister : public Register
223  {
224  public:
225  GyroYRegister(RegisterManager& regManager) : Register(regManager,0x16, 2, false) { }
226  int value;
227 
228  long getValue() { return ((value & 0xFFFF) << 0); }
229  void setValue(long val)
230  {
231  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
232  }
233  };
234 
235  class GyroZRegister : public Register
236  {
237  public:
238  GyroZRegister(RegisterManager& regManager) : Register(regManager,0x18, 2, false) { }
239  int value;
240 
241  long getValue() { return ((value & 0xFFFF) << 0); }
242  void setValue(long val)
243  {
244  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
245  }
246  };
247 
248  class EulHeadingRegister : public Register
249  {
250  public:
251  EulHeadingRegister(RegisterManager& regManager) : Register(regManager,0x1A, 2, false) { }
252  int value;
253 
254  long getValue() { return ((value & 0xFFFF) << 0); }
255  void setValue(long val)
256  {
257  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
258  }
259  };
260 
261  class EulRollRegister : public Register
262  {
263  public:
264  EulRollRegister(RegisterManager& regManager) : Register(regManager,0x1C, 2, false) { }
265  int value;
266 
267  long getValue() { return ((value & 0xFFFF) << 0); }
268  void setValue(long val)
269  {
270  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
271  }
272  };
273 
274  class EulPitchRegister : public Register
275  {
276  public:
277  EulPitchRegister(RegisterManager& regManager) : Register(regManager,0x1E, 2, false) { }
278  int value;
279 
280  long getValue() { return ((value & 0xFFFF) << 0); }
281  void setValue(long val)
282  {
283  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
284  }
285  };
286 
287  class QuaWRegister : public Register
288  {
289  public:
290  QuaWRegister(RegisterManager& regManager) : Register(regManager,0x20, 2, false) { }
291  int value;
292 
293  long getValue() { return ((value & 0xFFFF) << 0); }
294  void setValue(long val)
295  {
296  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
297  }
298  };
299 
300  class QuaXRegister : public Register
301  {
302  public:
303  QuaXRegister(RegisterManager& regManager) : Register(regManager,0x22, 2, false) { }
304  int value;
305 
306  long getValue() { return ((value & 0xFFFF) << 0); }
307  void setValue(long val)
308  {
309  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
310  }
311  };
312 
313  class QuaYRegister : public Register
314  {
315  public:
316  QuaYRegister(RegisterManager& regManager) : Register(regManager,0x24, 2, false) { }
317  int value;
318 
319  long getValue() { return ((value & 0xFFFF) << 0); }
320  void setValue(long val)
321  {
322  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
323  }
324  };
325 
326  class QuaZRegister : public Register
327  {
328  public:
329  QuaZRegister(RegisterManager& regManager) : Register(regManager,0x26, 2, false) { }
330  int value;
331 
332  long getValue() { return ((value & 0xFFFF) << 0); }
333  void setValue(long val)
334  {
335  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
336  }
337  };
338 
339  class LinXRegister : public Register
340  {
341  public:
342  LinXRegister(RegisterManager& regManager) : Register(regManager,0x28, 2, false) { }
343  int value;
344 
345  long getValue() { return ((value & 0xFFFF) << 0); }
346  void setValue(long val)
347  {
348  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
349  }
350  };
351 
352  class LinYRegister : public Register
353  {
354  public:
355  LinYRegister(RegisterManager& regManager) : Register(regManager,0x2A, 2, false) { }
356  int value;
357 
358  long getValue() { return ((value & 0xFFFF) << 0); }
359  void setValue(long val)
360  {
361  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
362  }
363  };
364 
365  class LinZRegister : public Register
366  {
367  public:
368  LinZRegister(RegisterManager& regManager) : Register(regManager,0x2C, 2, false) { }
369  int value;
370 
371  long getValue() { return ((value & 0xFFFF) << 0); }
372  void setValue(long val)
373  {
374  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
375  }
376  };
377 
378  class GravXRegister : public Register
379  {
380  public:
381  GravXRegister(RegisterManager& regManager) : Register(regManager,0x2E, 2, false) { }
382  int value;
383 
384  long getValue() { return ((value & 0xFFFF) << 0); }
385  void setValue(long val)
386  {
387  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
388  }
389  };
390 
391  class GravYRegister : public Register
392  {
393  public:
394  GravYRegister(RegisterManager& regManager) : Register(regManager,0x30, 2, false) { }
395  int value;
396 
397  long getValue() { return ((value & 0xFFFF) << 0); }
398  void setValue(long val)
399  {
400  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
401  }
402  };
403 
404  class GravZRegister : public Register
405  {
406  public:
407  GravZRegister(RegisterManager& regManager) : Register(regManager,0x32, 2, false) { }
408  int value;
409 
410  long getValue() { return ((value & 0xFFFF) << 0); }
411  void setValue(long val)
412  {
413  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
414  }
415  };
416 
417  class TempRegister : public Register
418  {
419  public:
420  TempRegister(RegisterManager& regManager) : Register(regManager,0x34, 1, false) { }
421  int value;
422 
423  long getValue() { return ((value & 0xFF) << 0); }
424  void setValue(long val)
425  {
426  value = (int)((val >> 0) & 0xFF);
427  }
428  };
429 
430  class CalibStatRegister : public Register
431  {
432  public:
433  CalibStatRegister(RegisterManager& regManager) : Register(regManager,0x35, 1, false) { }
434  int magCalibStatus;
435  int accelCalibStatus;
436  int gyroCalibStatus;
437  int sysCalibStatus;
438 
439  long getValue() { return ((magCalibStatus & 0x3) << 0) | ((accelCalibStatus & 0x3) << 2) | ((gyroCalibStatus & 0x3) << 4) | ((sysCalibStatus & 0x3) << 6); }
440  void setValue(long val)
441  {
442  magCalibStatus = (int)((val >> 0) & 0x3);
443  accelCalibStatus = (int)((val >> 2) & 0x3);
444  gyroCalibStatus = (int)((val >> 4) & 0x3);
445  sysCalibStatus = (int)((val >> 6) & 0x3);
446  }
447  };
448 
449  class SelfTestResultRegister : public Register
450  {
451  public:
452  SelfTestResultRegister(RegisterManager& regManager) : Register(regManager,0x36, 1, false) { }
453  int accel;
454  int mag;
455  int gyro;
456  int mcu;
457 
458  long getValue() { return ((accel & 0x1) << 0) | ((mag & 0x1) << 1) | ((gyro & 0x1) << 2) | ((mcu & 0x1) << 3); }
459  void setValue(long val)
460  {
461  accel = (int)((val >> 0) & 0x1);
462  mag = (int)((val >> 1) & 0x1);
463  gyro = (int)((val >> 2) & 0x1);
464  mcu = (int)((val >> 3) & 0x1);
465  }
466  };
467 
468  class InterruptStatusRegister : public Register
469  {
470  public:
471  InterruptStatusRegister(RegisterManager& regManager) : Register(regManager,0x37, 1, false) { }
472  int gyroAnyMotion;
473  int gyroHighRate;
474  int accelHighG;
475  int accelAnyMotion;
476  int accelNoMotion;
477 
478  long getValue() { return ((gyroAnyMotion & 0x1) << 2) | ((gyroHighRate & 0x1) << 3) | ((accelHighG & 0x1) << 5) | ((accelAnyMotion & 0x1) << 6) | ((accelNoMotion & 0x1) << 7); }
479  void setValue(long val)
480  {
481  gyroAnyMotion = (int)((val >> 2) & 0x1);
482  gyroHighRate = (int)((val >> 3) & 0x1);
483  accelHighG = (int)((val >> 5) & 0x1);
484  accelAnyMotion = (int)((val >> 6) & 0x1);
485  accelNoMotion = (int)((val >> 7) & 0x1);
486  }
487  };
488 
489  class SysClockStatusRegister : public Register
490  {
491  public:
492  SysClockStatusRegister(RegisterManager& regManager) : Register(regManager,0x38, 1, false) { }
493  int mainClock;
494 
495  long getValue() { return ((mainClock & 0x1) << 0); }
496  void setValue(long val)
497  {
498  mainClock = (int)((val >> 0) & 0x1);
499  }
500  };
501 
502  class SysStatusRegister : public Register
503  {
504  public:
505  SysStatusRegister(RegisterManager& regManager) : Register(regManager,0x39, 1, false) { }
506  int value;
507 
508  long getValue() { return ((value & 0xFF) << 0); }
509  void setValue(long val)
510  {
511  value = (int)((val >> 0) & 0xFF);
512  }
513  };
514 
515  class SysErrRegister : public Register
516  {
517  public:
518  SysErrRegister(RegisterManager& regManager) : Register(regManager,0x3a, 1, false) { }
519  int value;
520 
521  long getValue() { return ((value & 0xFF) << 0); }
522  void setValue(long val)
523  {
524  value = (int)((val >> 0) & 0xFF);
525  }
526  };
527 
528  class UnitSelRegister : public Register
529  {
530  public:
531  UnitSelRegister(RegisterManager& regManager) : Register(regManager,0x3b, 1, false) { }
532  int accel;
533  int gyro;
534  int eular;
535  int temp;
536  int orientationMode;
537 
538  long getValue() { return ((accel & 0x1) << 0) | ((gyro & 0x1) << 1) | ((eular & 0x1) << 2) | ((temp & 0x1) << 4) | ((orientationMode & 0x1) << 7); }
539  void setValue(long val)
540  {
541  accel = (int)((val >> 0) & 0x1);
542  gyro = (int)((val >> 1) & 0x1);
543  eular = (int)((val >> 2) & 0x1);
544  temp = (int)((val >> 4) & 0x1);
545  orientationMode = (int)((val >> 7) & 0x1);
546  }
547  };
548 
549  class OperatingModeRegister : public Register
550  {
551  public:
552  OperatingModeRegister(RegisterManager& regManager) : Register(regManager,0x3d, 1, false) { }
553  int operatingMode;
554  OperatingModes getOperatingMode() { return (OperatingModes)operatingMode; }
555  void setOperatingMode(OperatingModes enumVal) { operatingMode = (int)enumVal; }
556 
557  long getValue() { return ((operatingMode & 0xF) << 0); }
558  void setValue(long val)
559  {
560  operatingMode = (int)((val >> 0) & 0xF);
561  }
562  };
563 
564  class PowerModeRegister : public Register
565  {
566  public:
567  PowerModeRegister(RegisterManager& regManager) : Register(regManager,0x3e, 1, false) { }
568  int powerMode;
569  PowerModes getPowerMode() { return (PowerModes)powerMode; }
570  void setPowerMode(PowerModes enumVal) { powerMode = (int)enumVal; }
571 
572  long getValue() { return ((powerMode & 0x3) << 0); }
573  void setValue(long val)
574  {
575  powerMode = (int)((val >> 0) & 0x3);
576  }
577  };
578 
579  class SysTriggerRegister : public Register
580  {
581  public:
582  SysTriggerRegister(RegisterManager& regManager) : Register(regManager,0x3f, 1, false) { }
583  int selfTest;
584  int resetSys;
585  int resetInt;
586  int clockSel;
587 
588  long getValue() { return ((selfTest & 0x1) << 0) | ((resetSys & 0x1) << 5) | ((resetInt & 0x1) << 6) | ((clockSel & 0x1) << 7); }
589  void setValue(long val)
590  {
591  selfTest = (int)((val >> 0) & 0x1);
592  resetSys = (int)((val >> 5) & 0x1);
593  resetInt = (int)((val >> 6) & 0x1);
594  clockSel = (int)((val >> 7) & 0x1);
595  }
596  };
597 
598  class TempSourceRegister : public Register
599  {
600  public:
601  TempSourceRegister(RegisterManager& regManager) : Register(regManager,0x40, 1, false) { }
602  int source;
603 
604  long getValue() { return ((source & 0x3) << 0); }
605  void setValue(long val)
606  {
607  source = (int)((val >> 0) & 0x3);
608  }
609  };
610 
611  class AxisMapConfigRegister : public Register
612  {
613  public:
614  AxisMapConfigRegister(RegisterManager& regManager) : Register(regManager,0x41, 1, false) { }
615  int x;
616  int y;
617  int z;
618 
619  long getValue() { return ((x & 0x3) << 0) | ((y & 0x3) << 2) | ((z & 0x3) << 4); }
620  void setValue(long val)
621  {
622  x = (int)((val >> 0) & 0x3);
623  y = (int)((val >> 2) & 0x3);
624  z = (int)((val >> 4) & 0x3);
625  }
626  };
627 
628  class AxisMapSignRegister : public Register
629  {
630  public:
631  AxisMapSignRegister(RegisterManager& regManager) : Register(regManager,0x41, 1, false) { }
632  int x;
633  int y;
634  int z;
635 
636  long getValue() { return ((x & 0x1) << 0) | ((y & 0x1) << 1) | ((z & 0x1) << 2); }
637  void setValue(long val)
638  {
639  x = (int)((val >> 0) & 0x1);
640  y = (int)((val >> 1) & 0x1);
641  z = (int)((val >> 2) & 0x1);
642  }
643  };
644 
645  class AccelOffsetXRegister : public Register
646  {
647  public:
648  AccelOffsetXRegister(RegisterManager& regManager) : Register(regManager,0x55, 2, false) { }
649  int value;
650 
651  long getValue() { return ((value & 0xFFFF) << 0); }
652  void setValue(long val)
653  {
654  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
655  }
656  };
657 
658  class AccelOffsetYRegister : public Register
659  {
660  public:
661  AccelOffsetYRegister(RegisterManager& regManager) : Register(regManager,0x57, 2, false) { }
662  int value;
663 
664  long getValue() { return ((value & 0xFFFF) << 0); }
665  void setValue(long val)
666  {
667  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
668  }
669  };
670 
671  class AccelOffsetZRegister : public Register
672  {
673  public:
674  AccelOffsetZRegister(RegisterManager& regManager) : Register(regManager,0x59, 2, false) { }
675  int value;
676 
677  long getValue() { return ((value & 0xFFFF) << 0); }
678  void setValue(long val)
679  {
680  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
681  }
682  };
683 
684  class MagnetometerOffsetXRegister : public Register
685  {
686  public:
687  MagnetometerOffsetXRegister(RegisterManager& regManager) : Register(regManager,0x5B, 2, false) { }
688  int value;
689 
690  long getValue() { return ((value & 0xFFFF) << 0); }
691  void setValue(long val)
692  {
693  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
694  }
695  };
696 
697  class MagnetometerOffsetYRegister : public Register
698  {
699  public:
700  MagnetometerOffsetYRegister(RegisterManager& regManager) : Register(regManager,0x5D, 2, false) { }
701  int value;
702 
703  long getValue() { return ((value & 0xFFFF) << 0); }
704  void setValue(long val)
705  {
706  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
707  }
708  };
709 
710  class MagnetometerOffsetZRegister : public Register
711  {
712  public:
713  MagnetometerOffsetZRegister(RegisterManager& regManager) : Register(regManager,0x5F, 2, false) { }
714  int value;
715 
716  long getValue() { return ((value & 0xFFFF) << 0); }
717  void setValue(long val)
718  {
719  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
720  }
721  };
722 
723  class GyroOffsetXRegister : public Register
724  {
725  public:
726  GyroOffsetXRegister(RegisterManager& regManager) : Register(regManager,0x61, 2, false) { }
727  int value;
728 
729  long getValue() { return ((value & 0xFFFF) << 0); }
730  void setValue(long val)
731  {
732  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
733  }
734  };
735 
736  class GyroOffsetYRegister : public Register
737  {
738  public:
739  GyroOffsetYRegister(RegisterManager& regManager) : Register(regManager,0x63, 2, false) { }
740  int value;
741 
742  long getValue() { return ((value & 0xFFFF) << 0); }
743  void setValue(long val)
744  {
745  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
746  }
747  };
748 
749  class GyroOffsetZRegister : public Register
750  {
751  public:
752  GyroOffsetZRegister(RegisterManager& regManager) : Register(regManager,0x65, 2, false) { }
753  int value;
754 
755  long getValue() { return ((value & 0xFFFF) << 0); }
756  void setValue(long val)
757  {
758  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
759  }
760  };
761 
762  class AccelRadiusRegister : public Register
763  {
764  public:
765  AccelRadiusRegister(RegisterManager& regManager) : Register(regManager,0x67, 2, false) { }
766  int value;
767 
768  long getValue() { return ((value & 0xFFFF) << 0); }
769  void setValue(long val)
770  {
771  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
772  }
773  };
774 
775  class MagRadiusRegister : public Register
776  {
777  public:
778  MagRadiusRegister(RegisterManager& regManager) : Register(regManager,0x69, 2, false) { }
779  int value;
780 
781  long getValue() { return ((value & 0xFFFF) << 0); }
782  void setValue(long val)
783  {
784  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
785  }
786  };
787 
788  ChipIdRegister chipId;
789  AccelChipIdRegister accelChipId;
790  MagChipIdRegister magChipId;
791  GyroChipIdRegister gyroChipId;
792  SwRevisionRegister swRevision;
793  BootloaderVersionRegister bootloaderVersion;
794  PageIdRegister pageId;
795  AccelXRegister accelX;
796  AccelYRegister accelY;
797  AccelZRegister accelZ;
798  MagnetometerXRegister magnetometerX;
799  MagnetometerYRegister magnetometerY;
800  MagnetometerZRegister magnetometerZ;
801  GyroXRegister gyroX;
802  GyroYRegister gyroY;
803  GyroZRegister gyroZ;
804  EulHeadingRegister eulHeading;
805  EulRollRegister eulRoll;
806  EulPitchRegister eulPitch;
807  QuaWRegister quaW;
808  QuaXRegister quaX;
809  QuaYRegister quaY;
810  QuaZRegister quaZ;
811  LinXRegister linX;
812  LinYRegister linY;
813  LinZRegister linZ;
814  GravXRegister gravX;
815  GravYRegister gravY;
816  GravZRegister gravZ;
817  TempRegister temp;
818  CalibStatRegister calibStat;
819  SelfTestResultRegister selfTestResult;
820  InterruptStatusRegister interruptStatus;
821  SysClockStatusRegister sysClockStatus;
822  SysStatusRegister sysStatus;
823  SysErrRegister sysErr;
824  UnitSelRegister unitSel;
825  OperatingModeRegister operatingMode;
826  PowerModeRegister powerMode;
827  SysTriggerRegister sysTrigger;
828  TempSourceRegister tempSource;
829  AxisMapConfigRegister axisMapConfig;
830  AxisMapSignRegister axisMapSign;
831  AccelOffsetXRegister accelOffsetX;
832  AccelOffsetYRegister accelOffsetY;
833  AccelOffsetZRegister accelOffsetZ;
834  MagnetometerOffsetXRegister magnetometerOffsetX;
835  MagnetometerOffsetYRegister magnetometerOffsetY;
836  MagnetometerOffsetZRegister magnetometerOffsetZ;
837  GyroOffsetXRegister gyroOffsetX;
838  GyroOffsetYRegister gyroOffsetY;
839  GyroOffsetZRegister gyroOffsetZ;
840  AccelRadiusRegister accelRadius;
841  MagRadiusRegister magRadius;
842 
843  Bno055Registers(SMBusDevice& device) : RegisterManager(device, true), chipId(*this), accelChipId(*this), magChipId(*this), gyroChipId(*this), swRevision(*this), bootloaderVersion(*this), pageId(*this), accelX(*this), accelY(*this), accelZ(*this), magnetometerX(*this), magnetometerY(*this), magnetometerZ(*this), gyroX(*this), gyroY(*this), gyroZ(*this), eulHeading(*this), eulRoll(*this), eulPitch(*this), quaW(*this), quaX(*this), quaY(*this), quaZ(*this), linX(*this), linY(*this), linZ(*this), gravX(*this), gravY(*this), gravZ(*this), temp(*this), calibStat(*this), selfTestResult(*this), interruptStatus(*this), sysClockStatus(*this), sysStatus(*this), sysErr(*this), unitSel(*this), operatingMode(*this), powerMode(*this), sysTrigger(*this), tempSource(*this), axisMapConfig(*this), axisMapSign(*this), accelOffsetX(*this), accelOffsetY(*this), accelOffsetZ(*this), magnetometerOffsetX(*this), magnetometerOffsetY(*this), magnetometerOffsetZ(*this), gyroOffsetX(*this), gyroOffsetY(*this), gyroOffsetZ(*this), accelRadius(*this), magRadius(*this)
844  {
845  registers.push_back(&chipId);
846  registers.push_back(&accelChipId);
847  registers.push_back(&magChipId);
848  registers.push_back(&gyroChipId);
849  registers.push_back(&swRevision);
850  registers.push_back(&bootloaderVersion);
851  registers.push_back(&pageId);
852  registers.push_back(&accelX);
853  registers.push_back(&accelY);
854  registers.push_back(&accelZ);
855  registers.push_back(&magnetometerX);
856  registers.push_back(&magnetometerY);
857  registers.push_back(&magnetometerZ);
858  registers.push_back(&gyroX);
859  registers.push_back(&gyroY);
860  registers.push_back(&gyroZ);
861  registers.push_back(&eulHeading);
862  registers.push_back(&eulRoll);
863  registers.push_back(&eulPitch);
864  registers.push_back(&quaW);
865  registers.push_back(&quaX);
866  registers.push_back(&quaY);
867  registers.push_back(&quaZ);
868  registers.push_back(&linX);
869  registers.push_back(&linY);
870  registers.push_back(&linZ);
871  registers.push_back(&gravX);
872  registers.push_back(&gravY);
873  registers.push_back(&gravZ);
874  registers.push_back(&temp);
875  registers.push_back(&calibStat);
876  registers.push_back(&selfTestResult);
877  registers.push_back(&interruptStatus);
878  registers.push_back(&sysClockStatus);
879  registers.push_back(&sysStatus);
880  registers.push_back(&sysErr);
881  registers.push_back(&unitSel);
882  registers.push_back(&operatingMode);
883  registers.push_back(&powerMode);
884  registers.push_back(&sysTrigger);
885  registers.push_back(&tempSource);
886  registers.push_back(&axisMapConfig);
887  registers.push_back(&axisMapSign);
888  registers.push_back(&accelOffsetX);
889  registers.push_back(&accelOffsetY);
890  registers.push_back(&accelOffsetZ);
891  registers.push_back(&magnetometerOffsetX);
892  registers.push_back(&magnetometerOffsetY);
893  registers.push_back(&magnetometerOffsetZ);
894  registers.push_back(&gyroOffsetX);
895  registers.push_back(&gyroOffsetY);
896  registers.push_back(&gyroOffsetZ);
897  registers.push_back(&accelRadius);
898  registers.push_back(&magRadius);
899  }
900  };
901  } } } }
PowerModes
Definition: Bno055Registers.h:29
Definition: Dm632.h:9
Definition: Register.h:11
Definition: RegisterManager.h:10
OperatingModes
Definition: Bno055Registers.h:12
Definition: AdcPin.h:3