Treehopper C++ API
Tsl2591Registers.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 Optical {
11 
12  enum class AlsTimes
13  {
14  Time_100ms = 0,
15  Time_200ms = 1,
16  Time_300ms = 2,
17  Time_400ms = 3,
18  Time_500ms = 4,
19  Time_600ms = 5
20  };
21 
22  enum class AlsGains
23  {
24  Low = 0,
25  Medium = 1,
26  High = 2,
27  Max = 3
28  };
29 
31  {
32  EveryAlsCycle = 0,
34  Consecutive_2 = 2,
35  Consecutive_3 = 3,
36  Consecutive_5 = 4,
37  Consecutive_10 = 5,
38  Consecutive_15 = 6,
39  Consecutive_20 = 7,
40  Consecutive_25 = 8,
41  Consecutive_30 = 9,
42  Consecutive_35 = 10,
43  Consecutive_40 = 11,
44  Consecutive_45 = 12,
45  Consecutive_50 = 13,
46  Consecutive_55 = 14,
47  Consecutive_60 = 15
48  };
49 
50 
51  class Tsl2591Registers : public RegisterManager
52  {
53  public:
54  class EnableRegister : public Register
55  {
56  public:
57  EnableRegister(RegisterManager& regManager) : Register(regManager,0xA0, 1, false) { }
58  int powerOn;
59  int alsEnable;
60  int alsInterruptEnable;
61  int sleepAfterInterrupt;
62  int noPersistInterruptEnable;
63 
64  long getValue() { return ((powerOn & 0x1) << 0) | ((alsEnable & 0x1) << 1) | ((alsInterruptEnable & 0x1) << 4) | ((sleepAfterInterrupt & 0x1) << 6) | ((noPersistInterruptEnable & 0x1) << 7); }
65  void setValue(long val)
66  {
67  powerOn = (int)((val >> 0) & 0x1);
68  alsEnable = (int)((val >> 1) & 0x1);
69  alsInterruptEnable = (int)((val >> 4) & 0x1);
70  sleepAfterInterrupt = (int)((val >> 6) & 0x1);
71  noPersistInterruptEnable = (int)((val >> 7) & 0x1);
72  }
73  };
74 
75  class ConfigRegister : public Register
76  {
77  public:
78  ConfigRegister(RegisterManager& regManager) : Register(regManager,0xA1, 1, false) { }
79  int alsTime;
80  int alsGain;
81  int systemReset;
82  AlsTimes getAlsTime() { return (AlsTimes)alsTime; }
83  void setAlsTime(AlsTimes enumVal) { alsTime = (int)enumVal; }
84  AlsGains getAlsGain() { return (AlsGains)alsGain; }
85  void setAlsGain(AlsGains enumVal) { alsGain = (int)enumVal; }
86 
87  long getValue() { return ((alsTime & 0x7) << 0) | ((alsGain & 0x3) << 3) | ((systemReset & 0x1) << 7); }
88  void setValue(long val)
89  {
90  alsTime = (int)((val >> 0) & 0x7);
91  alsGain = (int)((val >> 3) & 0x3);
92  systemReset = (int)((val >> 7) & 0x1);
93  }
94  };
95 
96  class InterruptLowThresholdRegister : public Register
97  {
98  public:
99  InterruptLowThresholdRegister(RegisterManager& regManager) : Register(regManager,0xA4, 2, false) { }
100  int value;
101 
102  long getValue() { return ((value & 0xFFFF) << 0); }
103  void setValue(long val)
104  {
105  value = (int)((val >> 0) & 0xFFFF);
106  }
107  };
108 
109  class InterruptHighThresholdRegister : public Register
110  {
111  public:
112  InterruptHighThresholdRegister(RegisterManager& regManager) : Register(regManager,0xA6, 2, false) { }
113  int value;
114 
115  long getValue() { return ((value & 0xFFFF) << 0); }
116  void setValue(long val)
117  {
118  value = (int)((val >> 0) & 0xFFFF);
119  }
120  };
121 
122  class NoPersistLowThresholdRegister : public Register
123  {
124  public:
125  NoPersistLowThresholdRegister(RegisterManager& regManager) : Register(regManager,0xA8, 2, false) { }
126  int value;
127 
128  long getValue() { return ((value & 0xFFFF) << 0); }
129  void setValue(long val)
130  {
131  value = (int)((val >> 0) & 0xFFFF);
132  }
133  };
134 
135  class NoPersistHighThresholdRegister : public Register
136  {
137  public:
138  NoPersistHighThresholdRegister(RegisterManager& regManager) : Register(regManager,0xAa, 2, false) { }
139  int value;
140 
141  long getValue() { return ((value & 0xFFFF) << 0); }
142  void setValue(long val)
143  {
144  value = (int)((val >> 0) & 0xFFFF);
145  }
146  };
147 
148  class PersistRegister : public Register
149  {
150  public:
151  PersistRegister(RegisterManager& regManager) : Register(regManager,0xAc, 1, false) { }
152  int interruptPersistanceFilter;
153  InterruptPersistanceFilters getInterruptPersistanceFilter() { return (InterruptPersistanceFilters)interruptPersistanceFilter; }
154  void setInterruptPersistanceFilter(InterruptPersistanceFilters enumVal) { interruptPersistanceFilter = (int)enumVal; }
155 
156  long getValue() { return ((interruptPersistanceFilter & 0xF) << 0); }
157  void setValue(long val)
158  {
159  interruptPersistanceFilter = (int)((val >> 0) & 0xF);
160  }
161  };
162 
163  class PackageIdRegister : public Register
164  {
165  public:
166  PackageIdRegister(RegisterManager& regManager) : Register(regManager,0xB1, 1, false) { }
167  int value;
168 
169  long getValue() { return ((value & 0xFF) << 0); }
170  void setValue(long val)
171  {
172  value = (int)((val >> 0) & 0xFF);
173  }
174  };
175 
176  class DeviceIdRegister : public Register
177  {
178  public:
179  DeviceIdRegister(RegisterManager& regManager) : Register(regManager,0xB2, 1, false) { }
180  int value;
181 
182  long getValue() { return ((value & 0xFF) << 0); }
183  void setValue(long val)
184  {
185  value = (int)((val >> 0) & 0xFF);
186  }
187  };
188 
189  class StatusRegister : public Register
190  {
191  public:
192  StatusRegister(RegisterManager& regManager) : Register(regManager,0xB3, 1, false) { }
193  int alsValud;
194  int alsInterrupt;
195  int noPersistInterrupt;
196 
197  long getValue() { return ((alsValud & 0x1) << 0) | ((alsInterrupt & 0x1) << 4) | ((noPersistInterrupt & 0x1) << 5); }
198  void setValue(long val)
199  {
200  alsValud = (int)((val >> 0) & 0x1);
201  alsInterrupt = (int)((val >> 4) & 0x1);
202  noPersistInterrupt = (int)((val >> 5) & 0x1);
203  }
204  };
205 
206  class Ch0Register : public Register
207  {
208  public:
209  Ch0Register(RegisterManager& regManager) : Register(regManager,0xB4, 2, false) { }
210  int value;
211 
212  long getValue() { return ((value & 0xFFFF) << 0); }
213  void setValue(long val)
214  {
215  value = (int)((val >> 0) & 0xFFFF);
216  }
217  };
218 
219  class Ch1Register : public Register
220  {
221  public:
222  Ch1Register(RegisterManager& regManager) : Register(regManager,0xB6, 2, false) { }
223  int value;
224 
225  long getValue() { return ((value & 0xFFFF) << 0); }
226  void setValue(long val)
227  {
228  value = (int)((val >> 0) & 0xFFFF);
229  }
230  };
231 
232  EnableRegister enable;
233  ConfigRegister config;
234  InterruptLowThresholdRegister interruptLowThreshold;
235  InterruptHighThresholdRegister interruptHighThreshold;
236  NoPersistLowThresholdRegister noPersistLowThreshold;
237  NoPersistHighThresholdRegister noPersistHighThreshold;
238  PersistRegister persist;
239  PackageIdRegister packageId;
240  DeviceIdRegister deviceId;
241  StatusRegister status;
242  Ch0Register ch0;
243  Ch1Register ch1;
244 
245  Tsl2591Registers(SMBusDevice& device) : RegisterManager(device, true), enable(*this), config(*this), interruptLowThreshold(*this), interruptHighThreshold(*this), noPersistLowThreshold(*this), noPersistHighThreshold(*this), persist(*this), packageId(*this), deviceId(*this), status(*this), ch0(*this), ch1(*this)
246  {
247  registers.push_back(&enable);
248  registers.push_back(&config);
249  registers.push_back(&interruptLowThreshold);
250  registers.push_back(&interruptHighThreshold);
251  registers.push_back(&noPersistLowThreshold);
252  registers.push_back(&noPersistHighThreshold);
253  registers.push_back(&persist);
254  registers.push_back(&packageId);
255  registers.push_back(&deviceId);
256  registers.push_back(&status);
257  registers.push_back(&ch0);
258  registers.push_back(&ch1);
259  }
260  };
261  } } } }
Definition: Dm632.h:9
Definition: Register.h:11
Definition: RegisterManager.h:10
AlsGains
Definition: Tsl2591Registers.h:22
InterruptPersistanceFilters
Definition: Tsl2591Registers.h:30
Definition: AdcPin.h:3
AlsTimes
Definition: Tsl2591Registers.h:12