Treehopper C++ API
Ak8975Registers.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 Magnetic {
11 
12 
13  class Ak8975Registers : public RegisterManager
14  {
15  public:
16  class WiaRegister : public Register
17  {
18  public:
19  WiaRegister(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 InfoRegister : public Register
30  {
31  public:
32  InfoRegister(RegisterManager& regManager) : Register(regManager,0x01, 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 Status1Register : public Register
43  {
44  public:
45  Status1Register(RegisterManager& regManager) : Register(regManager,0x02, 1, false) { }
46  int drdy;
47 
48  long getValue() { return ((drdy & 0x1) << 0); }
49  void setValue(long val)
50  {
51  drdy = (int)((val >> 0) & 0x1);
52  }
53  };
54 
55  class HxRegister : public Register
56  {
57  public:
58  HxRegister(RegisterManager& regManager) : Register(regManager,0x03, 2, false) { }
59  int value;
60 
61  long getValue() { return ((value & 0xFFFF) << 0); }
62  void setValue(long val)
63  {
64  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
65  }
66  };
67 
68  class HyRegister : public Register
69  {
70  public:
71  HyRegister(RegisterManager& regManager) : Register(regManager,0x05, 2, false) { }
72  int value;
73 
74  long getValue() { return ((value & 0xFFFF) << 0); }
75  void setValue(long val)
76  {
77  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
78  }
79  };
80 
81  class HzRegister : public Register
82  {
83  public:
84  HzRegister(RegisterManager& regManager) : Register(regManager,0x07, 2, false) { }
85  int value;
86 
87  long getValue() { return ((value & 0xFFFF) << 0); }
88  void setValue(long val)
89  {
90  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
91  }
92  };
93 
94  class Status2Register : public Register
95  {
96  public:
97  Status2Register(RegisterManager& regManager) : Register(regManager,0x09, 1, false) { }
98  int derr;
99  int hofl;
100 
101  long getValue() { return ((derr & 0x1) << 2) | ((hofl & 0x1) << 3); }
102  void setValue(long val)
103  {
104  derr = (int)((val >> 2) & 0x1);
105  hofl = (int)((val >> 3) & 0x1);
106  }
107  };
108 
109  class ControlRegister : public Register
110  {
111  public:
112  ControlRegister(RegisterManager& regManager) : Register(regManager,0x0a, 1, false) { }
113  int mode;
114 
115  long getValue() { return ((mode & 0xF) << 0); }
116  void setValue(long val)
117  {
118  mode = (int)((val >> 0) & 0xF);
119  }
120  };
121 
122  class SensitivityXRegister : public Register
123  {
124  public:
125  SensitivityXRegister(RegisterManager& regManager) : Register(regManager,0x10, 1, false) { }
126  int value;
127 
128  long getValue() { return ((value & 0xFF) << 0); }
129  void setValue(long val)
130  {
131  value = (int)((val >> 0) & 0xFF);
132  }
133  };
134 
135  class SensitivityYRegister : public Register
136  {
137  public:
138  SensitivityYRegister(RegisterManager& regManager) : Register(regManager,0x11, 1, false) { }
139  int value;
140 
141  long getValue() { return ((value & 0xFF) << 0); }
142  void setValue(long val)
143  {
144  value = (int)((val >> 0) & 0xFF);
145  }
146  };
147 
148  class SensitivityZRegister : public Register
149  {
150  public:
151  SensitivityZRegister(RegisterManager& regManager) : Register(regManager,0x12, 1, false) { }
152  int value;
153 
154  long getValue() { return ((value & 0xFF) << 0); }
155  void setValue(long val)
156  {
157  value = (int)((val >> 0) & 0xFF);
158  }
159  };
160 
161  WiaRegister wia;
162  InfoRegister info;
163  Status1Register status1;
164  HxRegister hx;
165  HyRegister hy;
166  HzRegister hz;
167  Status2Register status2;
168  ControlRegister control;
169  SensitivityXRegister sensitivityX;
170  SensitivityYRegister sensitivityY;
171  SensitivityZRegister sensitivityZ;
172 
173  Ak8975Registers(SMBusDevice& device) : RegisterManager(device, true), wia(*this), info(*this), status1(*this), hx(*this), hy(*this), hz(*this), status2(*this), control(*this), sensitivityX(*this), sensitivityY(*this), sensitivityZ(*this)
174  {
175  registers.push_back(&wia);
176  registers.push_back(&info);
177  registers.push_back(&status1);
178  registers.push_back(&hx);
179  registers.push_back(&hy);
180  registers.push_back(&hz);
181  registers.push_back(&status2);
182  registers.push_back(&control);
183  registers.push_back(&sensitivityX);
184  registers.push_back(&sensitivityY);
185  registers.push_back(&sensitivityZ);
186  }
187  };
188  } } } }
Definition: Dm632.h:9
Definition: Register.h:11
Definition: RegisterManager.h:10
Definition: AdcPin.h:3