Treehopper C++ API
Itg3205Registers.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 
13  class Itg3205Registers : public RegisterManager
14  {
15  public:
16  class WhoAmIRegister : public Register
17  {
18  public:
19  WhoAmIRegister(RegisterManager& regManager) : Register(regManager,0x00, 1, false) { }
20  int value;
21 
22  long getValue() { return ((value & 0xFF) << 0); }
23  void setValue(long val)
24  {
25  value = (int)((val >> 0) & 0xFF);
26  }
27  };
28 
29  class SmplrtDivRegister : public Register
30  {
31  public:
32  SmplrtDivRegister(RegisterManager& regManager) : Register(regManager,0x15, 1, false) { }
33  int value;
34 
35  long getValue() { return ((value & 0xFF) << 0); }
36  void setValue(long val)
37  {
38  value = (int)((val >> 0) & 0xFF);
39  }
40  };
41 
42  class DlpfFsRegister : public Register
43  {
44  public:
45  DlpfFsRegister(RegisterManager& regManager) : Register(regManager,0x16, 1, false) { }
46  int dlpfCfg;
47  int fsSel;
48 
49  long getValue() { return ((dlpfCfg & 0x7) << 0) | ((fsSel & 0x3) << 3); }
50  void setValue(long val)
51  {
52  dlpfCfg = (int)((val >> 0) & 0x7);
53  fsSel = (int)((val >> 3) & 0x3);
54  }
55  };
56 
57  class IntCfgRegister : public Register
58  {
59  public:
60  IntCfgRegister(RegisterManager& regManager) : Register(regManager,0x17, 1, false) { }
61  int rawRdyEn;
62  int itgRdyEn;
63  int intAnyrd2Clear;
64  int latchIntEn;
65  int open;
66  int actl;
67 
68  long getValue() { return ((rawRdyEn & 0x1) << 0) | ((itgRdyEn & 0x1) << 2) | ((intAnyrd2Clear & 0x1) << 4) | ((latchIntEn & 0x1) << 5) | ((open & 0x1) << 6) | ((actl & 0x1) << 7); }
69  void setValue(long val)
70  {
71  rawRdyEn = (int)((val >> 0) & 0x1);
72  itgRdyEn = (int)((val >> 2) & 0x1);
73  intAnyrd2Clear = (int)((val >> 4) & 0x1);
74  latchIntEn = (int)((val >> 5) & 0x1);
75  open = (int)((val >> 6) & 0x1);
76  actl = (int)((val >> 7) & 0x1);
77  }
78  };
79 
80  class IntStatusRegister : public Register
81  {
82  public:
83  IntStatusRegister(RegisterManager& regManager) : Register(regManager,0x1a, 1, false) { }
84  int rawDataReady;
85  int itgReady;
86 
87  long getValue() { return ((rawDataReady & 0x1) << 0) | ((itgReady & 0x1) << 2); }
88  void setValue(long val)
89  {
90  rawDataReady = (int)((val >> 0) & 0x1);
91  itgReady = (int)((val >> 2) & 0x1);
92  }
93  };
94 
95  class TempRegister : public Register
96  {
97  public:
98  TempRegister(RegisterManager& regManager) : Register(regManager,0x1b, 2, true) { }
99  int value;
100 
101  long getValue() { return ((value & 0xFFFF) << 0); }
102  void setValue(long val)
103  {
104  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
105  }
106  };
107 
108  class GyroXRegister : public Register
109  {
110  public:
111  GyroXRegister(RegisterManager& regManager) : Register(regManager,0x1d, 2, true) { }
112  int value;
113 
114  long getValue() { return ((value & 0xFFFF) << 0); }
115  void setValue(long val)
116  {
117  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
118  }
119  };
120 
121  class GyroYRegister : public Register
122  {
123  public:
124  GyroYRegister(RegisterManager& regManager) : Register(regManager,0x1f, 2, true) { }
125  int value;
126 
127  long getValue() { return ((value & 0xFFFF) << 0); }
128  void setValue(long val)
129  {
130  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
131  }
132  };
133 
134  class GyroZRegister : public Register
135  {
136  public:
137  GyroZRegister(RegisterManager& regManager) : Register(regManager,0x21, 2, true) { }
138  int value;
139 
140  long getValue() { return ((value & 0xFFFF) << 0); }
141  void setValue(long val)
142  {
143  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
144  }
145  };
146 
147  class PwrMgmRegister : public Register
148  {
149  public:
150  PwrMgmRegister(RegisterManager& regManager) : Register(regManager,0x3e, 1, false) { }
151  int clkSel;
152  int stbyZg;
153  int stbyYg;
154  int stbyXg;
155  int sleep;
156  int hReset;
157 
158  long getValue() { return ((clkSel & 0x7) << 0) | ((stbyZg & 0x1) << 3) | ((stbyYg & 0x1) << 4) | ((stbyXg & 0x1) << 5) | ((sleep & 0x1) << 6) | ((hReset & 0x1) << 7); }
159  void setValue(long val)
160  {
161  clkSel = (int)((val >> 0) & 0x7);
162  stbyZg = (int)((val >> 3) & 0x1);
163  stbyYg = (int)((val >> 4) & 0x1);
164  stbyXg = (int)((val >> 5) & 0x1);
165  sleep = (int)((val >> 6) & 0x1);
166  hReset = (int)((val >> 7) & 0x1);
167  }
168  };
169 
170  WhoAmIRegister whoAmI;
171  SmplrtDivRegister smplrtDiv;
172  DlpfFsRegister dlpfFs;
173  IntCfgRegister intCfg;
174  IntStatusRegister intStatus;
175  TempRegister temp;
176  GyroXRegister gyroX;
177  GyroYRegister gyroY;
178  GyroZRegister gyroZ;
179  PwrMgmRegister pwrMgm;
180 
181  Itg3205Registers(SMBusDevice& device) : RegisterManager(device, true), whoAmI(*this), smplrtDiv(*this), dlpfFs(*this), intCfg(*this), intStatus(*this), temp(*this), gyroX(*this), gyroY(*this), gyroZ(*this), pwrMgm(*this)
182  {
183  registers.push_back(&whoAmI);
184  registers.push_back(&smplrtDiv);
185  registers.push_back(&dlpfFs);
186  registers.push_back(&intCfg);
187  registers.push_back(&intStatus);
188  registers.push_back(&temp);
189  registers.push_back(&gyroX);
190  registers.push_back(&gyroY);
191  registers.push_back(&gyroZ);
192  registers.push_back(&pwrMgm);
193  }
194  };
195  } } } }
Definition: Dm632.h:9
Definition: Register.h:11
Definition: RegisterManager.h:10
Definition: AdcPin.h:3