Change to comply with mbed os 5.1, as the attach function as used has been deprecated

Dependents:   Barometer-Example LoRaWAN-demo-72-bootcamp

Fork of BMP085 by silabs-abakurs

BMP085 library supporting mbed os low power

Committer:
abouillot
Date:
Tue Jan 24 10:33:24 2017 +0000
Revision:
2:dcd90bee9ac2
Parent:
0:fb197da45ba8
Child:
3:4622b90b4657
Change to support mbed os 5.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
asmellby 0:fb197da45ba8 1 /**
asmellby 0:fb197da45ba8 2 * Bosch BMP085 Barometer driver
asmellby 0:fb197da45ba8 3 */
asmellby 0:fb197da45ba8 4
asmellby 0:fb197da45ba8 5 #ifndef BMP085_H
asmellby 0:fb197da45ba8 6 #define BMP085_H
asmellby 0:fb197da45ba8 7
asmellby 0:fb197da45ba8 8 #include <stdint.h>
asmellby 0:fb197da45ba8 9 #include "mbed.h"
asmellby 0:fb197da45ba8 10
asmellby 0:fb197da45ba8 11 #define BMP085_ADDR (0x77<<1)
asmellby 0:fb197da45ba8 12
asmellby 0:fb197da45ba8 13 typedef enum {
asmellby 0:fb197da45ba8 14 BMP085_CAL_AC1 = 0xAA,
asmellby 0:fb197da45ba8 15 BMP085_CAL_AC2 = 0xAC,
asmellby 0:fb197da45ba8 16 BMP085_CAL_AC3 = 0xAE,
asmellby 0:fb197da45ba8 17 BMP085_CAL_AC4 = 0xB0,
asmellby 0:fb197da45ba8 18 BMP085_CAL_AC5 = 0xB2,
asmellby 0:fb197da45ba8 19 BMP085_CAL_AC6 = 0xB4,
asmellby 0:fb197da45ba8 20 BMP085_CAL_B1 = 0xB6,
asmellby 0:fb197da45ba8 21 BMP085_CAL_B2 = 0xB8,
asmellby 0:fb197da45ba8 22 BMP085_CAL_MB = 0xBA,
asmellby 0:fb197da45ba8 23 BMP085_CAL_MC = 0xBC,
asmellby 0:fb197da45ba8 24 BMP085_CAL_MD = 0xBE,
asmellby 0:fb197da45ba8 25 BMP085_CHIPID = 0xD0,
asmellby 0:fb197da45ba8 26 BMP085_VERSION = 0xD1,
asmellby 0:fb197da45ba8 27 BMP085_SOFTRESET = 0xE0,
asmellby 0:fb197da45ba8 28 BMP085_CTRL = 0xF4,
asmellby 0:fb197da45ba8 29 BMP085_DATA_TEMP = 0xF6,
asmellby 0:fb197da45ba8 30 BMP085_DATA_PRESSURE = 0xF6,
asmellby 0:fb197da45ba8 31 BMP085_CMD_READ_TEMP = 0x2E,
asmellby 0:fb197da45ba8 32 BMP085_CMD_READ_PRESSURE = 0x34
asmellby 0:fb197da45ba8 33 } BMP085_Register;
asmellby 0:fb197da45ba8 34
asmellby 0:fb197da45ba8 35 typedef enum {
asmellby 0:fb197da45ba8 36 BMP085_MODE_ULTRA_LOW_POWER = 0,
asmellby 0:fb197da45ba8 37 BMP085_MODE_STANDARD = 1,
asmellby 0:fb197da45ba8 38 BMP085_MODE_HIGH_RESOLUTION = 2,
asmellby 0:fb197da45ba8 39 BMP085_MODE_ULTRA_HIGH_RESOLUTION = 3
asmellby 0:fb197da45ba8 40 } BMP085_Mode;
asmellby 0:fb197da45ba8 41
asmellby 0:fb197da45ba8 42 typedef enum {
asmellby 0:fb197da45ba8 43 BMP085_IDLE,
asmellby 0:fb197da45ba8 44 BMP085_BUSY
asmellby 0:fb197da45ba8 45 } BMP085_State;
asmellby 0:fb197da45ba8 46
asmellby 0:fb197da45ba8 47 typedef struct {
asmellby 0:fb197da45ba8 48 int16_t ac1;
asmellby 0:fb197da45ba8 49 int16_t ac2;
asmellby 0:fb197da45ba8 50 int16_t ac3;
asmellby 0:fb197da45ba8 51 uint16_t ac4;
asmellby 0:fb197da45ba8 52 uint16_t ac5;
asmellby 0:fb197da45ba8 53 uint16_t ac6;
asmellby 0:fb197da45ba8 54 int16_t b1;
asmellby 0:fb197da45ba8 55 int16_t b2;
asmellby 0:fb197da45ba8 56 int16_t mb;
asmellby 0:fb197da45ba8 57 int16_t mc;
asmellby 0:fb197da45ba8 58 int16_t md;
asmellby 0:fb197da45ba8 59 } BMP085_Calibration_Data;
asmellby 0:fb197da45ba8 60
asmellby 0:fb197da45ba8 61 class BMP085 {
asmellby 0:fb197da45ba8 62 public:
asmellby 0:fb197da45ba8 63 BMP085(PinName sda, PinName scl, BMP085_Mode mode = BMP085_MODE_STANDARD) : _i2c(sda, scl), _mode(mode), _state(BMP085_IDLE) { init(); };
asmellby 0:fb197da45ba8 64 BMP085(I2C & i2c, BMP085_Mode mode = BMP085_MODE_STANDARD) : _i2c(i2c), _mode(mode), _state(BMP085_IDLE) { init(); };
asmellby 0:fb197da45ba8 65
asmellby 0:fb197da45ba8 66 float get_temperature(void) { return _temperature; };
asmellby 0:fb197da45ba8 67 float get_pressure(void) { return _pressure; };
asmellby 0:fb197da45ba8 68 void measure();
abouillot 2:dcd90bee9ac2 69 void _callback_handler_timeout();
asmellby 0:fb197da45ba8 70 protected:
asmellby 0:fb197da45ba8 71 void init(void);
asmellby 0:fb197da45ba8 72 uint16_t read_cal_register(BMP085_Register reg);
asmellby 0:fb197da45ba8 73 uint16_t read_uc_temperature(void);
asmellby 0:fb197da45ba8 74 uint32_t read_uc_pressure(void);
asmellby 0:fb197da45ba8 75 I2C _i2c;
asmellby 0:fb197da45ba8 76 BMP085_Mode _mode;
asmellby 0:fb197da45ba8 77 BMP085_State _state;
asmellby 0:fb197da45ba8 78 float _temperature;
asmellby 0:fb197da45ba8 79 float _pressure;
asmellby 0:fb197da45ba8 80 BMP085_Calibration_Data _cal_data;
asmellby 0:fb197da45ba8 81 private:
asmellby 0:fb197da45ba8 82 event_callback_t _callback;
asmellby 0:fb197da45ba8 83 void _callback_handler(int event);
asmellby 0:fb197da45ba8 84 uint8_t _tx_buf[2];
asmellby 0:fb197da45ba8 85 uint8_t _rx_buf[3];
asmellby 0:fb197da45ba8 86 };
asmellby 0:fb197da45ba8 87
asmellby 0:fb197da45ba8 88 #endif /* BMP085_H */