Treehopper C++ API
Adxl345Registers.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 Adxl345Registers : public RegisterManager
14  {
15  public:
16  class PowerCtlRegister : public Register
17  {
18  public:
19  PowerCtlRegister(RegisterManager& regManager) : Register(regManager,0x2D, 1, false) { }
20  int sleep;
21  int measure;
22 
23  long getValue() { return ((sleep & 0x1) << 2) | ((measure & 0x1) << 3); }
24  void setValue(long val)
25  {
26  sleep = (int)((val >> 2) & 0x1);
27  measure = (int)((val >> 3) & 0x1);
28  }
29  };
30 
31  class DataFormatRegister : public Register
32  {
33  public:
34  DataFormatRegister(RegisterManager& regManager) : Register(regManager,0x31, 1, false) { }
35  int range;
36  int justify;
37  int fullRes;
38 
39  long getValue() { return ((range & 0x3) << 0) | ((justify & 0x1) << 2) | ((fullRes & 0x1) << 3); }
40  void setValue(long val)
41  {
42  range = (int)((val >> 0) & 0x3);
43  justify = (int)((val >> 2) & 0x1);
44  fullRes = (int)((val >> 3) & 0x1);
45  }
46  };
47 
48  class DataXRegister : public Register
49  {
50  public:
51  DataXRegister(RegisterManager& regManager) : Register(regManager,0x32, 2, false) { }
52  int value;
53 
54  long getValue() { return ((value & 0x1FFF) << 0); }
55  void setValue(long val)
56  {
57  value = (int)(((val >> 0) & 0x1FFF) << (32 - 13)) >> (32 - 13);
58  }
59  };
60 
61  class DataYRegister : public Register
62  {
63  public:
64  DataYRegister(RegisterManager& regManager) : Register(regManager,0x34, 2, false) { }
65  int value;
66 
67  long getValue() { return ((value & 0x1FFF) << 0); }
68  void setValue(long val)
69  {
70  value = (int)(((val >> 0) & 0x1FFF) << (32 - 13)) >> (32 - 13);
71  }
72  };
73 
74  class DataZRegister : public Register
75  {
76  public:
77  DataZRegister(RegisterManager& regManager) : Register(regManager,0x36, 2, false) { }
78  int value;
79 
80  long getValue() { return ((value & 0x1FFF) << 0); }
81  void setValue(long val)
82  {
83  value = (int)(((val >> 0) & 0x1FFF) << (32 - 13)) >> (32 - 13);
84  }
85  };
86 
87  PowerCtlRegister powerCtl;
88  DataFormatRegister dataFormat;
89  DataXRegister dataX;
90  DataYRegister dataY;
91  DataZRegister dataZ;
92 
93  Adxl345Registers(SMBusDevice& device) : RegisterManager(device, true), powerCtl(*this), dataFormat(*this), dataX(*this), dataY(*this), dataZ(*this)
94  {
95  registers.push_back(&powerCtl);
96  registers.push_back(&dataFormat);
97  registers.push_back(&dataX);
98  registers.push_back(&dataY);
99  registers.push_back(&dataZ);
100  }
101  };
102  } } } }
Definition: Dm632.h:9
Definition: Register.h:11
Definition: RegisterManager.h:10
Definition: AdcPin.h:3