Treehopper C++ API
Bmp280Registers.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 Pressure {
11 
12  enum class Oversamplings
13  {
14  Skipped = 0,
15  Oversampling_x1 = 1,
16  Oversampling_x2 = 2,
17  Oversampling_x4 = 3,
18  Oversampling_x8 = 4,
20  };
21 
22  enum class Modes
23  {
24  Sleep = 0,
25  Forced = 1,
26  Normal = 3
27  };
28 
30  {
31  Skipped = 0,
32  Oversampling_x1 = 1,
33  Oversampling_x2 = 2,
34  Oversampling_x4 = 3,
35  Oversampling_x8 = 4,
37  };
38 
40  {
41  Skipped = 0,
42  Oversampling_x1 = 1,
43  Oversampling_x2 = 2,
44  Oversampling_x4 = 3,
45  Oversampling_x8 = 4,
47  };
48 
49  enum class Filters
50  {
51  FilterOff = 0,
52  Filter2 = 1,
53  Filter4 = 2,
54  Filter8 = 3,
55  Filter16 = 4
56  };
57 
58  enum class TStandbies
59  {
60  Ms_0_5 = 0,
61  Ms_62_5 = 1,
62  Ms_125 = 2,
63  Ms_250 = 3,
64  Ms_500 = 4,
65  Ms_1000 = 5,
66  Ms_10 = 6,
67  Ms_20 = 7
68  };
69 
70 
71  class Bmp280Registers : public RegisterManager
72  {
73  public:
74  class T1Register : public Register
75  {
76  public:
77  T1Register(RegisterManager& regManager) : Register(regManager,0x88, 2, false) { }
78  int value;
79 
80  long getValue() { return ((value & 0xFFFF) << 0); }
81  void setValue(long val)
82  {
83  value = (int)((val >> 0) & 0xFFFF);
84  }
85  };
86 
87  class T2Register : public Register
88  {
89  public:
90  T2Register(RegisterManager& regManager) : Register(regManager,0x8a, 2, false) { }
91  int value;
92 
93  long getValue() { return ((value & 0xFFFF) << 0); }
94  void setValue(long val)
95  {
96  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
97  }
98  };
99 
100  class T3Register : public Register
101  {
102  public:
103  T3Register(RegisterManager& regManager) : Register(regManager,0x8c, 2, false) { }
104  int value;
105 
106  long getValue() { return ((value & 0xFFFF) << 0); }
107  void setValue(long val)
108  {
109  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
110  }
111  };
112 
113  class P1Register : public Register
114  {
115  public:
116  P1Register(RegisterManager& regManager) : Register(regManager,0x8e, 2, false) { }
117  int value;
118 
119  long getValue() { return ((value & 0xFFFF) << 0); }
120  void setValue(long val)
121  {
122  value = (int)((val >> 0) & 0xFFFF);
123  }
124  };
125 
126  class P2Register : public Register
127  {
128  public:
129  P2Register(RegisterManager& regManager) : Register(regManager,0x90, 2, false) { }
130  int value;
131 
132  long getValue() { return ((value & 0xFFFF) << 0); }
133  void setValue(long val)
134  {
135  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
136  }
137  };
138 
139  class P3Register : public Register
140  {
141  public:
142  P3Register(RegisterManager& regManager) : Register(regManager,0x92, 2, false) { }
143  int value;
144 
145  long getValue() { return ((value & 0xFFFF) << 0); }
146  void setValue(long val)
147  {
148  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
149  }
150  };
151 
152  class P4Register : public Register
153  {
154  public:
155  P4Register(RegisterManager& regManager) : Register(regManager,0x94, 2, false) { }
156  int value;
157 
158  long getValue() { return ((value & 0xFFFF) << 0); }
159  void setValue(long val)
160  {
161  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
162  }
163  };
164 
165  class P5Register : public Register
166  {
167  public:
168  P5Register(RegisterManager& regManager) : Register(regManager,0x96, 2, false) { }
169  int value;
170 
171  long getValue() { return ((value & 0xFFFF) << 0); }
172  void setValue(long val)
173  {
174  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
175  }
176  };
177 
178  class P6Register : public Register
179  {
180  public:
181  P6Register(RegisterManager& regManager) : Register(regManager,0x98, 2, false) { }
182  int value;
183 
184  long getValue() { return ((value & 0xFFFF) << 0); }
185  void setValue(long val)
186  {
187  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
188  }
189  };
190 
191  class P7Register : public Register
192  {
193  public:
194  P7Register(RegisterManager& regManager) : Register(regManager,0x9a, 2, false) { }
195  int value;
196 
197  long getValue() { return ((value & 0xFFFF) << 0); }
198  void setValue(long val)
199  {
200  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
201  }
202  };
203 
204  class P8Register : public Register
205  {
206  public:
207  P8Register(RegisterManager& regManager) : Register(regManager,0x9c, 2, false) { }
208  int value;
209 
210  long getValue() { return ((value & 0xFFFF) << 0); }
211  void setValue(long val)
212  {
213  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
214  }
215  };
216 
217  class P9Register : public Register
218  {
219  public:
220  P9Register(RegisterManager& regManager) : Register(regManager,0x9e, 2, false) { }
221  int value;
222 
223  long getValue() { return ((value & 0xFFFF) << 0); }
224  void setValue(long val)
225  {
226  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
227  }
228  };
229 
230  class H1Register : public Register
231  {
232  public:
233  H1Register(RegisterManager& regManager) : Register(regManager,0xa1, 1, false) { }
234  int value;
235 
236  long getValue() { return ((value & 0xFF) << 0); }
237  void setValue(long val)
238  {
239  value = (int)((val >> 0) & 0xFF);
240  }
241  };
242 
243  class IdRegister : public Register
244  {
245  public:
246  IdRegister(RegisterManager& regManager) : Register(regManager,0xd0, 1, false) { }
247  int value;
248 
249  long getValue() { return ((value & 0xFF) << 0); }
250  void setValue(long val)
251  {
252  value = (int)((val >> 0) & 0xFF);
253  }
254  };
255 
256  class ResetRegister : public Register
257  {
258  public:
259  ResetRegister(RegisterManager& regManager) : Register(regManager,0xe0, 1, false) { }
260  int value;
261 
262  long getValue() { return ((value & 0xFF) << 0); }
263  void setValue(long val)
264  {
265  value = (int)((val >> 0) & 0xFF);
266  }
267  };
268 
269  class H2Register : public Register
270  {
271  public:
272  H2Register(RegisterManager& regManager) : Register(regManager,0xe1, 2, false) { }
273  int value;
274 
275  long getValue() { return ((value & 0xFFFF) << 0); }
276  void setValue(long val)
277  {
278  value = (int)(((val >> 0) & 0xFFFF) << (32 - 16)) >> (32 - 16);
279  }
280  };
281 
282  class H3Register : public Register
283  {
284  public:
285  H3Register(RegisterManager& regManager) : Register(regManager,0xe3, 1, false) { }
286  int value;
287 
288  long getValue() { return ((value & 0xFF) << 0); }
289  void setValue(long val)
290  {
291  value = (int)((val >> 0) & 0xFF);
292  }
293  };
294 
295  class H4Register : public Register
296  {
297  public:
298  H4Register(RegisterManager& regManager) : Register(regManager,0xe4, 1, false) { }
299  int value;
300 
301  long getValue() { return ((value & 0xFF) << 0); }
302  void setValue(long val)
303  {
304  value = (int)((val >> 0) & 0xFF);
305  }
306  };
307 
308  class H4h5Register : public Register
309  {
310  public:
311  H4h5Register(RegisterManager& regManager) : Register(regManager,0xe5, 1, false) { }
312  int h4Low;
313  int h5Low;
314 
315  long getValue() { return ((h4Low & 0xF) << 0) | ((h5Low & 0xF) << 4); }
316  void setValue(long val)
317  {
318  h4Low = (int)((val >> 0) & 0xF);
319  h5Low = (int)((val >> 4) & 0xF);
320  }
321  };
322 
323  class H5Register : public Register
324  {
325  public:
326  H5Register(RegisterManager& regManager) : Register(regManager,0xe6, 1, false) { }
327  int value;
328 
329  long getValue() { return ((value & 0xFF) << 0); }
330  void setValue(long val)
331  {
332  value = (int)((val >> 0) & 0xFF);
333  }
334  };
335 
336  class H6Register : public Register
337  {
338  public:
339  H6Register(RegisterManager& regManager) : Register(regManager,0xe7, 1, false) { }
340  int value;
341 
342  long getValue() { return ((value & 0xFF) << 0); }
343  void setValue(long val)
344  {
345  value = (int)(((val >> 0) & 0xFF) << (32 - 8)) >> (32 - 8);
346  }
347  };
348 
349  class CtrlHumidityRegister : public Register
350  {
351  public:
352  CtrlHumidityRegister(RegisterManager& regManager) : Register(regManager,0xf2, 1, false) { }
353  int oversampling;
354  Oversamplings getOversampling() { return (Oversamplings)oversampling; }
355  void setOversampling(Oversamplings enumVal) { oversampling = (int)enumVal; }
356 
357  long getValue() { return ((oversampling & 0x7) << 0); }
358  void setValue(long val)
359  {
360  oversampling = (int)((val >> 0) & 0x7);
361  }
362  };
363 
364  class StatusRegister : public Register
365  {
366  public:
367  StatusRegister(RegisterManager& regManager) : Register(regManager,0xf3, 1, false) { }
368  int imUpdate;
369  int measuring;
370 
371  long getValue() { return ((imUpdate & 0x1) << 0) | ((measuring & 0x1) << 3); }
372  void setValue(long val)
373  {
374  imUpdate = (int)((val >> 0) & 0x1);
375  measuring = (int)((val >> 3) & 0x1);
376  }
377  };
378 
379  class CtrlMeasureRegister : public Register
380  {
381  public:
382  CtrlMeasureRegister(RegisterManager& regManager) : Register(regManager,0xf4, 1, false) { }
383  int mode;
384  int oversamplingPressure;
385  int oversamplingTemperature;
386  Modes getMode() { return (Modes)mode; }
387  void setMode(Modes enumVal) { mode = (int)enumVal; }
388  OversamplingPressures getOversamplingPressure() { return (OversamplingPressures)oversamplingPressure; }
389  void setOversamplingPressure(OversamplingPressures enumVal) { oversamplingPressure = (int)enumVal; }
390  OversamplingTemperatures getOversamplingTemperature() { return (OversamplingTemperatures)oversamplingTemperature; }
391  void setOversamplingTemperature(OversamplingTemperatures enumVal) { oversamplingTemperature = (int)enumVal; }
392 
393  long getValue() { return ((mode & 0x3) << 0) | ((oversamplingPressure & 0x7) << 2) | ((oversamplingTemperature & 0x7) << 5); }
394  void setValue(long val)
395  {
396  mode = (int)((val >> 0) & 0x3);
397  oversamplingPressure = (int)((val >> 2) & 0x7);
398  oversamplingTemperature = (int)((val >> 5) & 0x7);
399  }
400  };
401 
402  class ConfigRegister : public Register
403  {
404  public:
405  ConfigRegister(RegisterManager& regManager) : Register(regManager,0xf5, 1, false) { }
406  int enable3Wire;
407  int filter;
408  int tStandby;
409  Filters getFilter() { return (Filters)filter; }
410  void setFilter(Filters enumVal) { filter = (int)enumVal; }
411  TStandbies getTStandby() { return (TStandbies)tStandby; }
412  void setTStandby(TStandbies enumVal) { tStandby = (int)enumVal; }
413 
414  long getValue() { return ((enable3Wire & 0x1) << 0) | ((filter & 0x7) << 1) | ((tStandby & 0x7) << 4); }
415  void setValue(long val)
416  {
417  enable3Wire = (int)((val >> 0) & 0x1);
418  filter = (int)((val >> 1) & 0x7);
419  tStandby = (int)((val >> 4) & 0x7);
420  }
421  };
422 
423  class PressureRegister : public Register
424  {
425  public:
426  PressureRegister(RegisterManager& regManager) : Register(regManager,0xf7, 3, true) { }
427  int value;
428 
429  long getValue() { return ((value & 0xFFFFF) << 4); }
430  void setValue(long val)
431  {
432  value = (int)((val >> 4) & 0xFFFFF);
433  }
434  };
435 
436  class TemperatureRegister : public Register
437  {
438  public:
439  TemperatureRegister(RegisterManager& regManager) : Register(regManager,0xfa, 3, true) { }
440  int value;
441 
442  long getValue() { return ((value & 0xFFFFF) << 4); }
443  void setValue(long val)
444  {
445  value = (int)((val >> 4) & 0xFFFFF);
446  }
447  };
448 
449  class HumidityRegister : public Register
450  {
451  public:
452  HumidityRegister(RegisterManager& regManager) : Register(regManager,0xfd, 2, true) { }
453  int value;
454 
455  long getValue() { return ((value & 0xFFFF) << 0); }
456  void setValue(long val)
457  {
458  value = (int)((val >> 0) & 0xFFFF);
459  }
460  };
461 
462  T1Register t1;
463  T2Register t2;
464  T3Register t3;
465  P1Register p1;
466  P2Register p2;
467  P3Register p3;
468  P4Register p4;
469  P5Register p5;
470  P6Register p6;
471  P7Register p7;
472  P8Register p8;
473  P9Register p9;
474  H1Register h1;
475  IdRegister id;
476  ResetRegister reset;
477  H2Register h2;
478  H3Register h3;
479  H4Register h4;
480  H4h5Register h4h5;
481  H5Register h5;
482  H6Register h6;
483  CtrlHumidityRegister ctrlHumidity;
484  StatusRegister status;
485  CtrlMeasureRegister ctrlMeasure;
486  ConfigRegister config;
487  PressureRegister pressure;
488  TemperatureRegister temperature;
489  HumidityRegister humidity;
490 
491  Bmp280Registers(SMBusDevice& device) : RegisterManager(device, true), t1(*this), t2(*this), t3(*this), p1(*this), p2(*this), p3(*this), p4(*this), p5(*this), p6(*this), p7(*this), p8(*this), p9(*this), h1(*this), id(*this), reset(*this), h2(*this), h3(*this), h4(*this), h4h5(*this), h5(*this), h6(*this), ctrlHumidity(*this), status(*this), ctrlMeasure(*this), config(*this), pressure(*this), temperature(*this), humidity(*this)
492  {
493  registers.push_back(&t1);
494  registers.push_back(&t2);
495  registers.push_back(&t3);
496  registers.push_back(&p1);
497  registers.push_back(&p2);
498  registers.push_back(&p3);
499  registers.push_back(&p4);
500  registers.push_back(&p5);
501  registers.push_back(&p6);
502  registers.push_back(&p7);
503  registers.push_back(&p8);
504  registers.push_back(&p9);
505  registers.push_back(&h1);
506  registers.push_back(&id);
507  registers.push_back(&reset);
508  registers.push_back(&h2);
509  registers.push_back(&h3);
510  registers.push_back(&h4);
511  registers.push_back(&h4h5);
512  registers.push_back(&h5);
513  registers.push_back(&h6);
514  registers.push_back(&ctrlHumidity);
515  registers.push_back(&status);
516  registers.push_back(&ctrlMeasure);
517  registers.push_back(&config);
518  registers.push_back(&pressure);
519  registers.push_back(&temperature);
520  registers.push_back(&humidity);
521  }
522  };
523  } } } }
Definition: Dm632.h:9
Definition: Register.h:11
Definition: RegisterManager.h:10
OversamplingPressures
Definition: Bmp280Registers.h:29
TStandbies
Definition: Bmp280Registers.h:58
Modes
Definition: Bmp280Registers.h:22
Filters
Definition: Bmp280Registers.h:49
OversamplingTemperatures
Definition: Bmp280Registers.h:39
Oversamplings
Definition: Bmp280Registers.h:12
Definition: AdcPin.h:3