Treehopper C++ API
Mpu6050Registers.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 ExtSyncSets
13  {
14  Disabled = 0,
15  TempOutL = 1,
16  GyroXoutL = 2,
17  GyroYoutL = 3,
18  GyroZoutL = 4,
19  AccelXoutL = 5,
20  AccelYoutL = 6,
21  AccelZoutL = 7
22  };
23 
24  enum class GyroScales
25  {
26  Dps_250 = 0,
27  Dps_500 = 1,
28  Dps_1000 = 2,
29  Dps_2000 = 3
30  };
31 
32  enum class AccelScales
33  {
34  Fs_2g = 0,
35  Fs_4g = 1,
36  Fs_8g = 2,
37  Fs_16g = 3
38  };
39 
40  enum class ClockSels
41  {
43  AutoSelect = 1,
44  Reset = 7
45  };
46 
47 
48  class Mpu6050Registers : public RegisterManager
49  {
50  public:
51  class Self_test_x_gyroRegister : public Register
52  {
53  public:
54  Self_test_x_gyroRegister(RegisterManager& regManager) : Register(regManager,0x00, 1, false) { }
55  int value;
56 
57  long getValue() { return ((value & 0xFF) << 0); }
58  void setValue(long val)
59  {
60  value = (int)((val >> 0) & 0xFF);
61  }
62  };
63 
64  class Self_test_y_gyroRegister : public Register
65  {
66  public:
67  Self_test_y_gyroRegister(RegisterManager& regManager) : Register(regManager,0x01, 1, false) { }
68  int value;
69 
70  long getValue() { return ((value & 0xFF) << 0); }
71  void setValue(long val)
72  {
73  value = (int)((val >> 0) & 0xFF);
74  }
75  };
76 
77  class Self_test_z_gyroRegister : public Register
78  {
79  public:
80  Self_test_z_gyroRegister(RegisterManager& regManager) : Register(regManager,0x02, 1, false) { }
81  int value;
82 
83  long getValue() { return ((value & 0xFF) << 0); }
84  void setValue(long val)
85  {
86  value = (int)((val >> 0) & 0xFF);
87  }
88  };
89 
90  class Self_test_x_accelRegister : public Register
91  {
92  public:
93  Self_test_x_accelRegister(RegisterManager& regManager) : Register(regManager,0x0d, 1, false) { }
94  int value;
95 
96  long getValue() { return ((value & 0xFF) << 0); }
97  void setValue(long val)
98  {
99  value = (int)((val >> 0) & 0xFF);
100  }
101  };
102 
103  class Self_test_y_accelRegister : public Register
104  {
105  public:
106  Self_test_y_accelRegister(RegisterManager& regManager) : Register(regManager,0x0e, 1, false) { }
107  int value;
108 
109  long getValue() { return ((value & 0xFF) << 0); }
110  void setValue(long val)
111  {
112  value = (int)((val >> 0) & 0xFF);
113  }
114  };
115 
116  class Self_test_z_accelRegister : public Register
117  {
118  public:
119  Self_test_z_accelRegister(RegisterManager& regManager) : Register(regManager,0x0f, 1, false) { }
120  int value;
121 
122  long getValue() { return ((value & 0xFF) << 0); }
123  void setValue(long val)
124  {
125  value = (int)((val >> 0) & 0xFF);
126  }
127  };
128 
129  class XGyroOffsUsrRegister : public Register
130  {
131  public:
132  XGyroOffsUsrRegister(RegisterManager& regManager) : Register(regManager,0x13, 2, false) { }
133  int value;
134 
135  long getValue() { return ((value & 0xFFFF) << 0); }
136  void setValue(long val)
137  {
138  value = (int)((val >> 0) & 0xFFFF);
139  }
140  };
141 
142  class YGyroOffsUsrRegister : public Register
143  {
144  public:
145  YGyroOffsUsrRegister(RegisterManager& regManager) : Register(regManager,0x15, 2, false) { }
146  int value;
147 
148  long getValue() { return ((value & 0xFFFF) << 0); }
149  void setValue(long val)
150  {
151  value = (int)((val >> 0) & 0xFFFF);
152  }
153  };
154 
155  class ZGyroOffsUsrRegister : public Register
156  {
157  public:
158  ZGyroOffsUsrRegister(RegisterManager& regManager) : Register(regManager,0x17, 2, false) { }
159  int value;
160 
161  long getValue() { return ((value & 0xFFFF) << 0); }
162  void setValue(long val)
163  {
164  value = (int)((val >> 0) & 0xFFFF);
165  }
166  };
167 
168  class SampleRateDividerRegister : public Register
169  {
170  public:
171  SampleRateDividerRegister(RegisterManager& regManager) : Register(regManager,0x19, 1, false) { }
172  int value;
173 
174  long getValue() { return ((value & 0xFF) << 0); }
175  void setValue(long val)
176  {
177  value = (int)((val >> 0) & 0xFF);
178  }
179  };
180 
181  class ConfigurationRegister : public Register
182  {
183  public:
184  ConfigurationRegister(RegisterManager& regManager) : Register(regManager,0x1a, 1, false) { }
185  int dlpf;
186  int extSyncSet;
187  int fifoMode;
188  ExtSyncSets getExtSyncSet() { return (ExtSyncSets)extSyncSet; }
189  void setExtSyncSet(ExtSyncSets enumVal) { extSyncSet = (int)enumVal; }
190 
191  long getValue() { return ((dlpf & 0x7) << 0) | ((extSyncSet & 0x7) << 3) | ((fifoMode & 0x1) << 6); }
192  void setValue(long val)
193  {
194  dlpf = (int)((val >> 0) & 0x7);
195  extSyncSet = (int)((val >> 3) & 0x7);
196  fifoMode = (int)((val >> 6) & 0x1);
197  }
198  };
199 
200  class GyroConfigRegister : public Register
201  {
202  public:
203  GyroConfigRegister(RegisterManager& regManager) : Register(regManager,0x1b, 1, false) { }
204  int fChoiceBypass;
205  int gyroScale;
206  int zGyroCten;
207  int yGyroCten;
208  GyroScales getGyroScale() { return (GyroScales)gyroScale; }
209  void setGyroScale(GyroScales enumVal) { gyroScale = (int)enumVal; }
210 
211  long getValue() { return ((fChoiceBypass & 0x3) << 0) | ((gyroScale & 0x3) << 3) | ((zGyroCten & 0x1) << 5) | ((yGyroCten & 0x1) << 6); }
212  void setValue(long val)
213  {
214  fChoiceBypass = (int)((val >> 0) & 0x3);
215  gyroScale = (int)((val >> 3) & 0x3);
216  zGyroCten = (int)((val >> 5) & 0x1);
217  yGyroCten = (int)((val >> 6) & 0x1);
218  }
219  };
220 
221  class AccelConfigRegister : public Register
222  {
223  public:
224  AccelConfigRegister(RegisterManager& regManager) : Register(regManager,0x1c, 1, false) { }
225  int accelScale;
226  int accelZselfTest;
227  int accelYselfTest;
228  int accelXselfTest;
229  AccelScales getAccelScale() { return (AccelScales)accelScale; }
230  void setAccelScale(AccelScales enumVal) { accelScale = (int)enumVal; }
231 
232  long getValue() { return ((accelScale & 0x3) << 3) | ((accelZselfTest & 0x1) << 5) | ((accelYselfTest & 0x1) << 6) | ((accelXselfTest & 0x1) << 7); }
233  void setValue(long val)
234  {
235  accelScale = (int)((val >> 3) & 0x3);
236  accelZselfTest = (int)((val >> 5) & 0x1);
237  accelYselfTest = (int)((val >> 6) & 0x1);
238  accelXselfTest = (int)((val >> 7) & 0x1);
239  }
240  };
241 
242  class AccelConfig2Register : public Register
243  {
244  public:
245  AccelConfig2Register(RegisterManager& regManager) : Register(regManager,0x1d, 1, false) { }
246  int dlpfCfg;
247  int accelFchoice;
248 
249  long getValue() { return ((dlpfCfg & 0x7) << 0) | ((accelFchoice & 0x1) << 3); }
250  void setValue(long val)
251  {
252  dlpfCfg = (int)((val >> 0) & 0x7);
253  accelFchoice = (int)((val >> 3) & 0x1);
254  }
255  };
256 
257  class LowPowerAccelerometerOdrControlRegister : public Register
258  {
259  public:
260  LowPowerAccelerometerOdrControlRegister(RegisterManager& regManager) : Register(regManager,0x1e, 1, false) { }
261  int value;
262 
263  long getValue() { return ((value & 0xF) << 0); }
264  void setValue(long val)
265  {
266  value = (int)((val >> 0) & 0xF);
267  }
268  };
269 
270  class WomThresholdRegister : public Register
271  {
272  public:
273  WomThresholdRegister(RegisterManager& regManager) : Register(regManager,0x1f, 1, false) { }
274  int value;
275 
276  long getValue() { return ((value & 0xFF) << 0); }
277  void setValue(long val)
278  {
279  value = (int)((val >> 0) & 0xFF);
280  }
281  };
282 
283  class FifoEnableRegister : public Register
284  {
285  public:
286  FifoEnableRegister(RegisterManager& regManager) : Register(regManager,0x23, 1, false) { }
287  int slv0;
288  int slv1;
289  int slv2;
290  int accel;
291  int gyroZout;
292  int gyroYout;
293  int gyroXout;
294  int tempOut;
295 
296  long getValue() { return ((slv0 & 0x1) << 0) | ((slv1 & 0x1) << 1) | ((slv2 & 0x1) << 2) | ((accel & 0x1) << 3) | ((gyroZout & 0x1) << 4) | ((gyroYout & 0x1) << 5) | ((gyroXout & 0x1) << 6) | ((tempOut & 0x1) << 7); }
297  void setValue(long val)
298  {
299  slv0 = (int)((val >> 0) & 0x1);
300  slv1 = (int)((val >> 1) & 0x1);
301  slv2 = (int)((val >> 2) & 0x1);
302  accel = (int)((val >> 3) & 0x1);
303  gyroZout = (int)((val >> 4) & 0x1);
304  gyroYout = (int)((val >> 5) & 0x1);
305  gyroXout = (int)((val >> 6) & 0x1);
306  tempOut = (int)((val >> 7) & 0x1);
307  }
308  };
309 
310  class I2cMasterControlRegister : public Register
311  {
312  public:
313  I2cMasterControlRegister(RegisterManager& regManager) : Register(regManager,0x24, 1, false) { }
314  int i2cMasterClock;
315  int i2cMstPnsr;
316  int slv3FifoEn;
317  int waitForEs;
318  int multMstEn;
319 
320  long getValue() { return ((i2cMasterClock & 0xF) << 0) | ((i2cMstPnsr & 0x1) << 4) | ((slv3FifoEn & 0x1) << 5) | ((waitForEs & 0x1) << 6) | ((multMstEn & 0x1) << 7); }
321  void setValue(long val)
322  {
323  i2cMasterClock = (int)((val >> 0) & 0xF);
324  i2cMstPnsr = (int)((val >> 4) & 0x1);
325  slv3FifoEn = (int)((val >> 5) & 0x1);
326  waitForEs = (int)((val >> 6) & 0x1);
327  multMstEn = (int)((val >> 7) & 0x1);
328  }
329  };
330 
331  class I2cSlv0AddrRegister : public Register
332  {
333  public:
334  I2cSlv0AddrRegister(RegisterManager& regManager) : Register(regManager,0x25, 1, false) { }
335  int id;
336  int rnw;
337 
338  long getValue() { return ((id & 0x7F) << 0) | ((rnw & 0x1) << 7); }
339  void setValue(long val)
340  {
341  id = (int)((val >> 0) & 0x7F);
342  rnw = (int)((val >> 7) & 0x1);
343  }
344  };
345 
346  class I2cSlv0RegRegister : public Register
347  {
348  public:
349  I2cSlv0RegRegister(RegisterManager& regManager) : Register(regManager,0x26, 1, false) { }
350  int value;
351 
352  long getValue() { return ((value & 0xFF) << 0); }
353  void setValue(long val)
354  {
355  value = (int)((val >> 0) & 0xFF);
356  }
357  };
358 
359  class I2cSlv0CtrlRegister : public Register
360  {
361  public:
362  I2cSlv0CtrlRegister(RegisterManager& regManager) : Register(regManager,0x27, 1, false) { }
363  int value;
364 
365  long getValue() { return ((value & 0xFF) << 0); }
366  void setValue(long val)
367  {
368  value = (int)((val >> 0) & 0xFF);
369  }
370  };
371 
372  class I2cSlv1AddrRegister : public Register
373  {
374  public:
375  I2cSlv1AddrRegister(RegisterManager& regManager) : Register(regManager,0x28, 1, false) { }
376  int id;
377  int rnw;
378 
379  long getValue() { return ((id & 0x7F) << 0) | ((rnw & 0x1) << 7); }
380  void setValue(long val)
381  {
382  id = (int)((val >> 0) & 0x7F);
383  rnw = (int)((val >> 7) & 0x1);
384  }
385  };
386 
387  class I2cSlv1RegRegister : public Register
388  {
389  public:
390  I2cSlv1RegRegister(RegisterManager& regManager) : Register(regManager,0x29, 1, false) { }
391  int value;
392 
393  long getValue() { return ((value & 0xFF) << 0); }
394  void setValue(long val)
395  {
396  value = (int)((val >> 0) & 0xFF);
397  }
398  };
399 
400  class I2cSlv1CtrlRegister : public Register
401  {
402  public:
403  I2cSlv1CtrlRegister(RegisterManager& regManager) : Register(regManager,0x2a, 1, false) { }
404  int value;
405 
406  long getValue() { return ((value & 0xFF) << 0); }
407  void setValue(long val)
408  {
409  value = (int)((val >> 0) & 0xFF);
410  }
411  };
412 
413  class I2cSlv2AddrRegister : public Register
414  {
415  public:
416  I2cSlv2AddrRegister(RegisterManager& regManager) : Register(regManager,0x2b, 1, false) { }
417  int id;
418  int rnw;
419 
420  long getValue() { return ((id & 0x7F) << 0) | ((rnw & 0x1) << 7); }
421  void setValue(long val)
422  {
423  id = (int)((val >> 0) & 0x7F);
424  rnw = (int)((val >> 7) & 0x1);
425  }
426  };
427 
428  class I2cSlv2RegRegister : public Register
429  {
430  public:
431  I2cSlv2RegRegister(RegisterManager& regManager) : Register(regManager,0x2c, 1, false) { }
432  int value;
433 
434  long getValue() { return ((value & 0xFF) << 0); }
435  void setValue(long val)
436  {
437  value = (int)((val >> 0) & 0xFF);
438  }
439  };
440 
441  class I2cSlv2CtrlRegister : public Register
442  {
443  public:
444  I2cSlv2CtrlRegister(RegisterManager& regManager) : Register(regManager,0x2d, 1, false) { }
445  int value;
446 
447  long getValue() { return ((value & 0xFF) << 0); }
448  void setValue(long val)
449  {
450  value = (int)((val >> 0) & 0xFF);
451  }
452  };
453 
454  class I2cSlv3AddrRegister : public Register
455  {
456  public:
457  I2cSlv3AddrRegister(RegisterManager& regManager) : Register(regManager,0x2e, 1, false) { }
458  int id;
459  int rnw;
460 
461  long getValue() { return ((id & 0x7F) << 0) | ((rnw & 0x1) << 7); }
462  void setValue(long val)
463  {
464  id = (int)((val >> 0) & 0x7F);
465  rnw = (int)((val >> 7) & 0x1);
466  }
467  };
468 
469  class I2cSlv3RegRegister : public Register
470  {
471  public:
472  I2cSlv3RegRegister(RegisterManager& regManager) : Register(regManager,0x2f, 1, false) { }
473  int value;
474 
475  long getValue() { return ((value & 0xFF) << 0); }
476  void setValue(long val)
477  {
478  value = (int)((val >> 0) & 0xFF);
479  }
480  };
481 
482  class I2cSlv3CtrlRegister : public Register
483  {
484  public:
485  I2cSlv3CtrlRegister(RegisterManager& regManager) : Register(regManager,0x30, 1, false) { }
486  int value;
487 
488  long getValue() { return ((value & 0xFF) << 0); }
489  void setValue(long val)
490  {
491  value = (int)((val >> 0) & 0xFF);
492  }
493  };
494 
495  class I2cSlv4AddrRegister : public Register
496  {
497  public:
498  I2cSlv4AddrRegister(RegisterManager& regManager) : Register(regManager,0x31, 1, false) { }
499  int id;
500  int rnw;
501 
502  long getValue() { return ((id & 0x7F) << 0) | ((rnw & 0x1) << 7); }
503  void setValue(long val)
504  {
505  id = (int)((val >> 0) & 0x7F);
506  rnw = (int)((val >> 7) & 0x1);
507  }
508  };
509 
510  class I2cSlv4RegRegister : public Register
511  {
512  public:
513  I2cSlv4RegRegister(RegisterManager& regManager) : Register(regManager,0x32, 1, false) { }
514  int value;
515 
516  long getValue() { return ((value & 0xFF) << 0); }
517  void setValue(long val)
518  {
519  value = (int)((val >> 0) & 0xFF);
520  }
521  };
522 
523  class I2cSlv4DoRegister : public Register
524  {
525  public:
526  I2cSlv4DoRegister(RegisterManager& regManager) : Register(regManager,0x33, 1, false) { }
527  int value;
528 
529  long getValue() { return ((value & 0xFF) << 0); }
530  void setValue(long val)
531  {
532  value = (int)((val >> 0) & 0xFF);
533  }
534  };
535 
536  class I2cSlv4CtrlRegister : public Register
537  {
538  public:
539  I2cSlv4CtrlRegister(RegisterManager& regManager) : Register(regManager,0x34, 1, false) { }
540  int value;
541 
542  long getValue() { return ((value & 0xFF) << 0); }
543  void setValue(long val)
544  {
545  value = (int)((val >> 0) & 0xFF);
546  }
547  };
548 
549  class I2cSlv4DiRegister : public Register
550  {
551  public:
552  I2cSlv4DiRegister(RegisterManager& regManager) : Register(regManager,0x35, 1, false) { }
553  int value;
554 
555  long getValue() { return ((value & 0xFF) << 0); }
556  void setValue(long val)
557  {
558  value = (int)((val >> 0) & 0xFF);
559  }
560  };
561 
562  class I2cMstStatusRegister : public Register
563  {
564  public:
565  I2cMstStatusRegister(RegisterManager& regManager) : Register(regManager,0x36, 1, false) { }
566  int slv0Nack;
567  int slv1Nack;
568  int slv2Nack;
569  int slv3Nack;
570  int slv4Nack;
571  int lostArb;
572  int slv4Done;
573  int passThrough;
574 
575  long getValue() { return ((slv0Nack & 0x1) << 0) | ((slv1Nack & 0x1) << 1) | ((slv2Nack & 0x1) << 2) | ((slv3Nack & 0x1) << 3) | ((slv4Nack & 0x1) << 4) | ((lostArb & 0x1) << 5) | ((slv4Done & 0x1) << 6) | ((passThrough & 0x1) << 7); }
576  void setValue(long val)
577  {
578  slv0Nack = (int)((val >> 0) & 0x1);
579  slv1Nack = (int)((val >> 1) & 0x1);
580  slv2Nack = (int)((val >> 2) & 0x1);
581  slv3Nack = (int)((val >> 3) & 0x1);
582  slv4Nack = (int)((val >> 4) & 0x1);
583  lostArb = (int)((val >> 5) & 0x1);
584  slv4Done = (int)((val >> 6) & 0x1);
585  passThrough = (int)((val >> 7) & 0x1);
586  }
587  };
588 
589  class IntPinCfgRegister : public Register
590  {
591  public:
592  IntPinCfgRegister(RegisterManager& regManager) : Register(regManager,0x37, 1, false) { }
593  int bypassEn;
594  int fsyncIntModeEnable;
595  int actlFsync;
596  int intAnyRd2Clear;
597  int latchIntEn;
598  int open;
599  int actl;
600 
601  long getValue() { return ((bypassEn & 0x1) << 1) | ((fsyncIntModeEnable & 0x1) << 2) | ((actlFsync & 0x1) << 3) | ((intAnyRd2Clear & 0x1) << 4) | ((latchIntEn & 0x1) << 5) | ((open & 0x1) << 6) | ((actl & 0x1) << 7); }
602  void setValue(long val)
603  {
604  bypassEn = (int)((val >> 1) & 0x1);
605  fsyncIntModeEnable = (int)((val >> 2) & 0x1);
606  actlFsync = (int)((val >> 3) & 0x1);
607  intAnyRd2Clear = (int)((val >> 4) & 0x1);
608  latchIntEn = (int)((val >> 5) & 0x1);
609  open = (int)((val >> 6) & 0x1);
610  actl = (int)((val >> 7) & 0x1);
611  }
612  };
613 
614  class IntEnableRegister : public Register
615  {
616  public:
617  IntEnableRegister(RegisterManager& regManager) : Register(regManager,0x38, 1, false) { }
618  int RawReadyEnable;
619  int fsyncIntEnable;
620  int fifoIntEnable;
621  int fifoOverflowEnable;
622  int womEnable;
623 
624  long getValue() { return ((RawReadyEnable & 0x1) << 0) | ((fsyncIntEnable & 0x1) << 2) | ((fifoIntEnable & 0x1) << 3) | ((fifoOverflowEnable & 0x1) << 4) | ((womEnable & 0x1) << 1); }
625  void setValue(long val)
626  {
627  RawReadyEnable = (int)((val >> 0) & 0x1);
628  fsyncIntEnable = (int)((val >> 2) & 0x1);
629  fifoIntEnable = (int)((val >> 3) & 0x1);
630  fifoOverflowEnable = (int)((val >> 4) & 0x1);
631  womEnable = (int)((val >> 1) & 0x1);
632  }
633  };
634 
635  class IntStatusRegister : public Register
636  {
637  public:
638  IntStatusRegister(RegisterManager& regManager) : Register(regManager,0x3a, 1, false) { }
639  int rawDataReadyInt;
640  int fsyncInt;
641  int fifoOverflowInt;
642  int womInt;
643 
644  long getValue() { return ((rawDataReadyInt & 0x1) << 0) | ((fsyncInt & 0x1) << 2) | ((fifoOverflowInt & 0x1) << 3) | ((womInt & 0x1) << 1); }
645  void setValue(long val)
646  {
647  rawDataReadyInt = (int)((val >> 0) & 0x1);
648  fsyncInt = (int)((val >> 2) & 0x1);
649  fifoOverflowInt = (int)((val >> 3) & 0x1);
650  womInt = (int)((val >> 1) & 0x1);
651  }
652  };
653 
654  class Accel_xRegister : public Register
655  {
656  public:
657  Accel_xRegister(RegisterManager& regManager) : Register(regManager,0x3b, 2, true) { }
658  int value;
659 
660  long getValue() { return ((value & 0xFFFF) << 0); }
661  void setValue(long val)
662  {
663  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
664  }
665  };
666 
667  class Accel_yRegister : public Register
668  {
669  public:
670  Accel_yRegister(RegisterManager& regManager) : Register(regManager,0x3d, 2, true) { }
671  int value;
672 
673  long getValue() { return ((value & 0xFFFF) << 0); }
674  void setValue(long val)
675  {
676  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
677  }
678  };
679 
680  class Accel_zRegister : public Register
681  {
682  public:
683  Accel_zRegister(RegisterManager& regManager) : Register(regManager,0x3f, 2, true) { }
684  int value;
685 
686  long getValue() { return ((value & 0xFFFF) << 0); }
687  void setValue(long val)
688  {
689  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
690  }
691  };
692 
693  class TempRegister : public Register
694  {
695  public:
696  TempRegister(RegisterManager& regManager) : Register(regManager,0x41, 2, true) { }
697  int value;
698 
699  long getValue() { return ((value & 0xFFFF) << 0); }
700  void setValue(long val)
701  {
702  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
703  }
704  };
705 
706  class Gyro_xRegister : public Register
707  {
708  public:
709  Gyro_xRegister(RegisterManager& regManager) : Register(regManager,0x43, 2, true) { }
710  int value;
711 
712  long getValue() { return ((value & 0xFFFF) << 0); }
713  void setValue(long val)
714  {
715  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
716  }
717  };
718 
719  class Gyro_yRegister : public Register
720  {
721  public:
722  Gyro_yRegister(RegisterManager& regManager) : Register(regManager,0x45, 2, true) { }
723  int value;
724 
725  long getValue() { return ((value & 0xFFFF) << 0); }
726  void setValue(long val)
727  {
728  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
729  }
730  };
731 
732  class Gyro_zRegister : public Register
733  {
734  public:
735  Gyro_zRegister(RegisterManager& regManager) : Register(regManager,0x47, 2, true) { }
736  int value;
737 
738  long getValue() { return ((value & 0xFFFF) << 0); }
739  void setValue(long val)
740  {
741  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
742  }
743  };
744 
745  class ExtSensDataRegister : public Register
746  {
747  public:
748  ExtSensDataRegister(RegisterManager& regManager) : Register(regManager,0x49, 24, false) { }
749  int value;
750 
751  long getValue() { return ((value & 0x0) << 0); }
752  void setValue(long val)
753  {
754  value = (int)((val >> 0) & 0x0);
755  }
756  };
757 
758  class I2cSlv0doRegister : public Register
759  {
760  public:
761  I2cSlv0doRegister(RegisterManager& regManager) : Register(regManager,0x63, 1, false) { }
762  int value;
763 
764  long getValue() { return ((value & 0xFF) << 0); }
765  void setValue(long val)
766  {
767  value = (int)((val >> 0) & 0xFF);
768  }
769  };
770 
771  class I2cSlv1doRegister : public Register
772  {
773  public:
774  I2cSlv1doRegister(RegisterManager& regManager) : Register(regManager,0x64, 1, false) { }
775  int value;
776 
777  long getValue() { return ((value & 0xFF) << 0); }
778  void setValue(long val)
779  {
780  value = (int)((val >> 0) & 0xFF);
781  }
782  };
783 
784  class I2cSlv2doRegister : public Register
785  {
786  public:
787  I2cSlv2doRegister(RegisterManager& regManager) : Register(regManager,0x65, 1, false) { }
788  int value;
789 
790  long getValue() { return ((value & 0xFF) << 0); }
791  void setValue(long val)
792  {
793  value = (int)((val >> 0) & 0xFF);
794  }
795  };
796 
797  class I2cSlv3doRegister : public Register
798  {
799  public:
800  I2cSlv3doRegister(RegisterManager& regManager) : Register(regManager,0x66, 1, false) { }
801  int value;
802 
803  long getValue() { return ((value & 0xFF) << 0); }
804  void setValue(long val)
805  {
806  value = (int)((val >> 0) & 0xFF);
807  }
808  };
809 
810  class I2cMstDelayCtrlRegister : public Register
811  {
812  public:
813  I2cMstDelayCtrlRegister(RegisterManager& regManager) : Register(regManager,0x67, 1, false) { }
814  int slv0DelayEn;
815  int slv1DelayEn;
816  int slv2DelayEn;
817  int slv3DelayEn;
818  int slv4DelayEn;
819  int delayEsShadow;
820 
821  long getValue() { return ((slv0DelayEn & 0x1) << 0) | ((slv1DelayEn & 0x1) << 1) | ((slv2DelayEn & 0x1) << 2) | ((slv3DelayEn & 0x1) << 3) | ((slv4DelayEn & 0x1) << 4) | ((delayEsShadow & 0x1) << 2); }
822  void setValue(long val)
823  {
824  slv0DelayEn = (int)((val >> 0) & 0x1);
825  slv1DelayEn = (int)((val >> 1) & 0x1);
826  slv2DelayEn = (int)((val >> 2) & 0x1);
827  slv3DelayEn = (int)((val >> 3) & 0x1);
828  slv4DelayEn = (int)((val >> 4) & 0x1);
829  delayEsShadow = (int)((val >> 2) & 0x1);
830  }
831  };
832 
833  class SignalPathResetRegister : public Register
834  {
835  public:
836  SignalPathResetRegister(RegisterManager& regManager) : Register(regManager,0x68, 1, false) { }
837  int tempReset;
838  int accelReset;
839  int gyroReset;
840 
841  long getValue() { return ((tempReset & 0x1) << 0) | ((accelReset & 0x1) << 1) | ((gyroReset & 0x1) << 2); }
842  void setValue(long val)
843  {
844  tempReset = (int)((val >> 0) & 0x1);
845  accelReset = (int)((val >> 1) & 0x1);
846  gyroReset = (int)((val >> 2) & 0x1);
847  }
848  };
849 
850  class AccelIntCtrlRegister : public Register
851  {
852  public:
853  AccelIntCtrlRegister(RegisterManager& regManager) : Register(regManager,0x69, 1, false) { }
854  int accelIntelMode;
855  int accelIntelEnable;
856 
857  long getValue() { return ((accelIntelMode & 0x1) << 6) | ((accelIntelEnable & 0x1) << 7); }
858  void setValue(long val)
859  {
860  accelIntelMode = (int)((val >> 6) & 0x1);
861  accelIntelEnable = (int)((val >> 7) & 0x1);
862  }
863  };
864 
865  class UserCtrlRegister : public Register
866  {
867  public:
868  UserCtrlRegister(RegisterManager& regManager) : Register(regManager,0x6a, 1, false) { }
869  int sigConditionReset;
870  int i2cMasterReset;
871  int fifoReset;
872  int i2cIfDisable;
873  int i2cMasterEnable;
874  int fifoEnable;
875 
876  long getValue() { return ((sigConditionReset & 0x1) << 0) | ((i2cMasterReset & 0x1) << 1) | ((fifoReset & 0x1) << 2) | ((i2cIfDisable & 0x1) << 1) | ((i2cMasterEnable & 0x1) << 2) | ((fifoEnable & 0x1) << 3); }
877  void setValue(long val)
878  {
879  sigConditionReset = (int)((val >> 0) & 0x1);
880  i2cMasterReset = (int)((val >> 1) & 0x1);
881  fifoReset = (int)((val >> 2) & 0x1);
882  i2cIfDisable = (int)((val >> 1) & 0x1);
883  i2cMasterEnable = (int)((val >> 2) & 0x1);
884  fifoEnable = (int)((val >> 3) & 0x1);
885  }
886  };
887 
888  class PowerMgmt1Register : public Register
889  {
890  public:
891  PowerMgmt1Register(RegisterManager& regManager) : Register(regManager,0x6b, 1, false) { }
892  int clockSel;
893  int powerDownPtat;
894  int gyroStandby;
895  int cycle;
896  int sleep;
897  int reset;
898  ClockSels getClockSel() { return (ClockSels)clockSel; }
899  void setClockSel(ClockSels enumVal) { clockSel = (int)enumVal; }
900 
901  long getValue() { return ((clockSel & 0x7) << 0) | ((powerDownPtat & 0x1) << 3) | ((gyroStandby & 0x1) << 4) | ((cycle & 0x1) << 5) | ((sleep & 0x1) << 6) | ((reset & 0x1) << 7); }
902  void setValue(long val)
903  {
904  clockSel = (int)((val >> 0) & 0x7);
905  powerDownPtat = (int)((val >> 3) & 0x1);
906  gyroStandby = (int)((val >> 4) & 0x1);
907  cycle = (int)((val >> 5) & 0x1);
908  sleep = (int)((val >> 6) & 0x1);
909  reset = (int)((val >> 7) & 0x1);
910  }
911  };
912 
913  class PowerMgmt2Register : public Register
914  {
915  public:
916  PowerMgmt2Register(RegisterManager& regManager) : Register(regManager,0x6c, 1, false) { }
917  int disableZG;
918  int disableYG;
919  int disableXG;
920  int disableZA;
921  int disableYA;
922  int disableXA;
923 
924  long getValue() { return ((disableZG & 0x1) << 0) | ((disableYG & 0x1) << 1) | ((disableXG & 0x1) << 2) | ((disableZA & 0x1) << 3) | ((disableYA & 0x1) << 4) | ((disableXA & 0x1) << 5); }
925  void setValue(long val)
926  {
927  disableZG = (int)((val >> 0) & 0x1);
928  disableYG = (int)((val >> 1) & 0x1);
929  disableXG = (int)((val >> 2) & 0x1);
930  disableZA = (int)((val >> 3) & 0x1);
931  disableYA = (int)((val >> 4) & 0x1);
932  disableXA = (int)((val >> 5) & 0x1);
933  }
934  };
935 
936  class FifoCountRegister : public Register
937  {
938  public:
939  FifoCountRegister(RegisterManager& regManager) : Register(regManager,0x72, 2, false) { }
940  int value;
941 
942  long getValue() { return ((value & 0x1FFF) << 0); }
943  void setValue(long val)
944  {
945  value = (int)((val >> 0) & 0x1FFF);
946  }
947  };
948 
949  class FifoRWRegister : public Register
950  {
951  public:
952  FifoRWRegister(RegisterManager& regManager) : Register(regManager,0x74, 1, false) { }
953  int value;
954 
955  long getValue() { return ((value & 0xFF) << 0); }
956  void setValue(long val)
957  {
958  value = (int)((val >> 0) & 0xFF);
959  }
960  };
961 
962  class WhoAmIRegister : public Register
963  {
964  public:
965  WhoAmIRegister(RegisterManager& regManager) : Register(regManager,0x75, 1, false) { }
966  int value;
967 
968  long getValue() { return ((value & 0xFF) << 0); }
969  void setValue(long val)
970  {
971  value = (int)((val >> 0) & 0xFF);
972  }
973  };
974 
975  class XAccelOffsetRegister : public Register
976  {
977  public:
978  XAccelOffsetRegister(RegisterManager& regManager) : Register(regManager,0x77, 2, false) { }
979  int value;
980 
981  long getValue() { return ((value & 0x7FFF) << 1); }
982  void setValue(long val)
983  {
984  value = (int)((val >> 1) & 0x7FFF);
985  }
986  };
987 
988  class YAccelOffsetRegister : public Register
989  {
990  public:
991  YAccelOffsetRegister(RegisterManager& regManager) : Register(regManager,0x7a, 2, false) { }
992  int value;
993 
994  long getValue() { return ((value & 0x7FFF) << 1); }
995  void setValue(long val)
996  {
997  value = (int)((val >> 1) & 0x7FFF);
998  }
999  };
1000 
1001  class ZAccelOffsetRegister : public Register
1002  {
1003  public:
1004  ZAccelOffsetRegister(RegisterManager& regManager) : Register(regManager,0x7d, 2, false) { }
1005  int value;
1006 
1007  long getValue() { return ((value & 0x7FFF) << 1); }
1008  void setValue(long val)
1009  {
1010  value = (int)((val >> 1) & 0x7FFF);
1011  }
1012  };
1013 
1014  Self_test_x_gyroRegister self_test_x_gyro;
1015  Self_test_y_gyroRegister self_test_y_gyro;
1016  Self_test_z_gyroRegister self_test_z_gyro;
1017  Self_test_x_accelRegister self_test_x_accel;
1018  Self_test_y_accelRegister self_test_y_accel;
1019  Self_test_z_accelRegister self_test_z_accel;
1020  XGyroOffsUsrRegister xGyroOffsUsr;
1021  YGyroOffsUsrRegister yGyroOffsUsr;
1022  ZGyroOffsUsrRegister zGyroOffsUsr;
1023  SampleRateDividerRegister sampleRateDivider;
1024  ConfigurationRegister configuration;
1025  GyroConfigRegister gyroConfig;
1026  AccelConfigRegister accelConfig;
1027  AccelConfig2Register accelConfig2;
1028  LowPowerAccelerometerOdrControlRegister lowPowerAccelerometerOdrControl;
1029  WomThresholdRegister womThreshold;
1030  FifoEnableRegister fifoEnable;
1031  I2cMasterControlRegister i2cMasterControl;
1032  I2cSlv0AddrRegister i2cSlv0Addr;
1033  I2cSlv0RegRegister i2cSlv0Reg;
1034  I2cSlv0CtrlRegister i2cSlv0Ctrl;
1035  I2cSlv1AddrRegister i2cSlv1Addr;
1036  I2cSlv1RegRegister i2cSlv1Reg;
1037  I2cSlv1CtrlRegister i2cSlv1Ctrl;
1038  I2cSlv2AddrRegister i2cSlv2Addr;
1039  I2cSlv2RegRegister i2cSlv2Reg;
1040  I2cSlv2CtrlRegister i2cSlv2Ctrl;
1041  I2cSlv3AddrRegister i2cSlv3Addr;
1042  I2cSlv3RegRegister i2cSlv3Reg;
1043  I2cSlv3CtrlRegister i2cSlv3Ctrl;
1044  I2cSlv4AddrRegister i2cSlv4Addr;
1045  I2cSlv4RegRegister i2cSlv4Reg;
1046  I2cSlv4DoRegister i2cSlv4Do;
1047  I2cSlv4CtrlRegister i2cSlv4Ctrl;
1048  I2cSlv4DiRegister i2cSlv4Di;
1049  I2cMstStatusRegister i2cMstStatus;
1050  IntPinCfgRegister intPinCfg;
1051  IntEnableRegister intEnable;
1052  IntStatusRegister intStatus;
1053  Accel_xRegister accel_x;
1054  Accel_yRegister accel_y;
1055  Accel_zRegister accel_z;
1056  TempRegister temp;
1057  Gyro_xRegister gyro_x;
1058  Gyro_yRegister gyro_y;
1059  Gyro_zRegister gyro_z;
1060  ExtSensDataRegister extSensData;
1061  I2cSlv0doRegister i2cSlv0do;
1062  I2cSlv1doRegister i2cSlv1do;
1063  I2cSlv2doRegister i2cSlv2do;
1064  I2cSlv3doRegister i2cSlv3do;
1065  I2cMstDelayCtrlRegister i2cMstDelayCtrl;
1066  SignalPathResetRegister signalPathReset;
1067  AccelIntCtrlRegister accelIntCtrl;
1068  UserCtrlRegister userCtrl;
1069  PowerMgmt1Register powerMgmt1;
1070  PowerMgmt2Register powerMgmt2;
1071  FifoCountRegister fifoCount;
1072  FifoRWRegister fifoRW;
1073  WhoAmIRegister whoAmI;
1074  XAccelOffsetRegister xAccelOffset;
1075  YAccelOffsetRegister yAccelOffset;
1076  ZAccelOffsetRegister zAccelOffset;
1077 
1078  Mpu6050Registers(SMBusDevice& device) : RegisterManager(device, true), self_test_x_gyro(*this), self_test_y_gyro(*this), self_test_z_gyro(*this), self_test_x_accel(*this), self_test_y_accel(*this), self_test_z_accel(*this), xGyroOffsUsr(*this), yGyroOffsUsr(*this), zGyroOffsUsr(*this), sampleRateDivider(*this), configuration(*this), gyroConfig(*this), accelConfig(*this), accelConfig2(*this), lowPowerAccelerometerOdrControl(*this), womThreshold(*this), fifoEnable(*this), i2cMasterControl(*this), i2cSlv0Addr(*this), i2cSlv0Reg(*this), i2cSlv0Ctrl(*this), i2cSlv1Addr(*this), i2cSlv1Reg(*this), i2cSlv1Ctrl(*this), i2cSlv2Addr(*this), i2cSlv2Reg(*this), i2cSlv2Ctrl(*this), i2cSlv3Addr(*this), i2cSlv3Reg(*this), i2cSlv3Ctrl(*this), i2cSlv4Addr(*this), i2cSlv4Reg(*this), i2cSlv4Do(*this), i2cSlv4Ctrl(*this), i2cSlv4Di(*this), i2cMstStatus(*this), intPinCfg(*this), intEnable(*this), intStatus(*this), accel_x(*this), accel_y(*this), accel_z(*this), temp(*this), gyro_x(*this), gyro_y(*this), gyro_z(*this), extSensData(*this), i2cSlv0do(*this), i2cSlv1do(*this), i2cSlv2do(*this), i2cSlv3do(*this), i2cMstDelayCtrl(*this), signalPathReset(*this), accelIntCtrl(*this), userCtrl(*this), powerMgmt1(*this), powerMgmt2(*this), fifoCount(*this), fifoRW(*this), whoAmI(*this), xAccelOffset(*this), yAccelOffset(*this), zAccelOffset(*this)
1079  {
1080  registers.push_back(&self_test_x_gyro);
1081  registers.push_back(&self_test_y_gyro);
1082  registers.push_back(&self_test_z_gyro);
1083  registers.push_back(&self_test_x_accel);
1084  registers.push_back(&self_test_y_accel);
1085  registers.push_back(&self_test_z_accel);
1086  registers.push_back(&xGyroOffsUsr);
1087  registers.push_back(&yGyroOffsUsr);
1088  registers.push_back(&zGyroOffsUsr);
1089  registers.push_back(&sampleRateDivider);
1090  registers.push_back(&configuration);
1091  registers.push_back(&gyroConfig);
1092  registers.push_back(&accelConfig);
1093  registers.push_back(&accelConfig2);
1094  registers.push_back(&lowPowerAccelerometerOdrControl);
1095  registers.push_back(&womThreshold);
1096  registers.push_back(&fifoEnable);
1097  registers.push_back(&i2cMasterControl);
1098  registers.push_back(&i2cSlv0Addr);
1099  registers.push_back(&i2cSlv0Reg);
1100  registers.push_back(&i2cSlv0Ctrl);
1101  registers.push_back(&i2cSlv1Addr);
1102  registers.push_back(&i2cSlv1Reg);
1103  registers.push_back(&i2cSlv1Ctrl);
1104  registers.push_back(&i2cSlv2Addr);
1105  registers.push_back(&i2cSlv2Reg);
1106  registers.push_back(&i2cSlv2Ctrl);
1107  registers.push_back(&i2cSlv3Addr);
1108  registers.push_back(&i2cSlv3Reg);
1109  registers.push_back(&i2cSlv3Ctrl);
1110  registers.push_back(&i2cSlv4Addr);
1111  registers.push_back(&i2cSlv4Reg);
1112  registers.push_back(&i2cSlv4Do);
1113  registers.push_back(&i2cSlv4Ctrl);
1114  registers.push_back(&i2cSlv4Di);
1115  registers.push_back(&i2cMstStatus);
1116  registers.push_back(&intPinCfg);
1117  registers.push_back(&intEnable);
1118  registers.push_back(&intStatus);
1119  registers.push_back(&accel_x);
1120  registers.push_back(&accel_y);
1121  registers.push_back(&accel_z);
1122  registers.push_back(&temp);
1123  registers.push_back(&gyro_x);
1124  registers.push_back(&gyro_y);
1125  registers.push_back(&gyro_z);
1126  registers.push_back(&extSensData);
1127  registers.push_back(&i2cSlv0do);
1128  registers.push_back(&i2cSlv1do);
1129  registers.push_back(&i2cSlv2do);
1130  registers.push_back(&i2cSlv3do);
1131  registers.push_back(&i2cMstDelayCtrl);
1132  registers.push_back(&signalPathReset);
1133  registers.push_back(&accelIntCtrl);
1134  registers.push_back(&userCtrl);
1135  registers.push_back(&powerMgmt1);
1136  registers.push_back(&powerMgmt2);
1137  registers.push_back(&fifoCount);
1138  registers.push_back(&fifoRW);
1139  registers.push_back(&whoAmI);
1140  registers.push_back(&xAccelOffset);
1141  registers.push_back(&yAccelOffset);
1142  registers.push_back(&zAccelOffset);
1143  }
1144  };
1145  } } } }
Definition: Dm632.h:9
Definition: Register.h:11
Definition: RegisterManager.h:10
ClockSels
Definition: Mpu6050Registers.h:40
GyroScales
Definition: Mpu6050Registers.h:24
ExtSyncSets
Definition: Mpu6050Registers.h:12
Definition: AdcPin.h:3
AccelScales
Definition: Mpu6050Registers.h:32