upm  0.6.2
Sensor/Actuator repository for libmraa (v0.10.1)
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
bme280.h
1 #include <mraa/i2c.hpp>
2 #include "upm/iPressureSensor.h"
3 #include "upm/iTemperatureSensor.h"
4 #include "upm/iHumiditySensor.h"
5 #ifndef __BME280_H__
6 #define __BME280_H__
7 
8 
9 //#define BME280_MDELAY_DATA_TYPE uint32_t
10 
11 /****************************************************/
13 /***************************************************/
14 #define BME280_I2C_ADDRESS1 (0x76)
15 #define BME280_I2C_ADDRESS2 (0x77)
16 #define BME280_ONE_U8X (1)
17 
18 namespace upm {
19 
20 
21 
22 class BME280 : public ITemperatureSensor, public IHumiditySensor, public IPressureSensor {
23  public:
24 
25 
26 
34  BME280 (int bus, int devAddr = BME280_I2C_ADDRESS1);
35 
39  ~BME280 ();
40 
44  uint16_t getTemperatureRaw ();
45 
49  int getTemperatureCelcius ();
50 
54  uint16_t getHumidityRaw ();
55 
59  int getHumidityRelative ();
60 
64  const char* getModuleName() { return "BME280"; }
65 
69  uint32_t getPressureRaw();
70 
74  int getPressurePa();
75 
76 
80  int32_t getTemperatureInternal(void);
81 
85  int32_t getPressureInternal(void);
86 
90  int32_t getHumidityInternal(void);
91 
95  int32_t getTemperatureRawInternal(void);
96 
100  int32_t getPressureRawInternal(void);
101 
105  int32_t getHumidityRawInternal(void);
106 
110  bool isAvailable();
111 
112 
113  private:
114  /**************************************************************/
116  /**************************************************************/
121  static mraa::I2c* m_i2c;
122  static int m_bus;
123 
124  static int32_t i2c_write_string(uint8_t dev_addr,uint8_t* ptr, uint8_t cnt);
125  static int32_t i2c_write_read_string(uint8_t dev_addr,uint8_t reg_addr , uint8_t * ptr, uint8_t cnt);
126  static int8_t I2C_routine();
127  static int8_t BME280_I2C_bus_write(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt);
128  static void BME280_delay_msek(uint16_t msek);
129  static int8_t BME280_I2C_bus_read(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt);
130 
131 };
132 
133 
134 
135 
136 
137 
138 
139 }
140 
141 #endif
const char * getModuleName()
Definition: bme280.h:64
bool isAvailable()
BME280(int bus, int devAddr=BME280_I2C_ADDRESS1)
Definition: bme280.cxx:59
Interface for Temperature Sensors.
Definition: iTemperatureSensor.h:34
int32_t getPressureRawInternal(void)
Definition: bme280.cxx:218
int getHumidityRelative()
Definition: bme280.cxx:470
int32_t getTemperatureInternal(void)
Definition: bme280.cxx:88
int getTemperatureCelcius()
Definition: bme280.cxx:461
Definition: bme280.h:22
uint32_t getPressureRaw()
Definition: bme280.cxx:475
int32_t getHumidityInternal(void)
Definition: bme280.cxx:137
int getPressurePa()
Definition: bme280.cxx:480
uint16_t getTemperatureRaw()
Definition: bme280.cxx:456
uint16_t getHumidityRaw()
Definition: bme280.cxx:465
int32_t getTemperatureRawInternal(void)
Definition: bme280.cxx:163
~BME280()
Definition: bme280.cxx:79
int32_t getHumidityRawInternal(void)
Definition: bme280.cxx:280
Interface for Pressue Sensors.
Definition: iPressureSensor.h:38
Interface for Humidity Sensors.
Definition: iHumiditySensor.h:34
int32_t getPressureInternal(void)
Definition: bme280.cxx:111