2 * Author: Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com>
3 * Copyright (c) 2014 Intel Corporation.
6 * Based on Adafruit BMP085 library.
8 * Permission is hereby granted, free of charge, to any person obtaining
9 * a copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
16 * The above copyright notice and this permission notice shall be
17 * included in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
23 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
25 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 #define ADDR 0x77 // device address
36 #define BMP085_ULTRALOWPOWER 0
37 #define BMP085_STANDARD 1
38 #define BMP085_HIGHRES 2
39 #define BMP085_ULTRAHIGHRES 3
40 #define BMP085_CAL_AC1 0xAA // R Calibration data (16 bits)
41 #define BMP085_CAL_AC2 0xAC // R Calibration data (16 bits)
42 #define BMP085_CAL_AC3 0xAE // R Calibration data (16 bits)
43 #define BMP085_CAL_AC4 0xB0 // R Calibration data (16 bits)
44 #define BMP085_CAL_AC5 0xB2 // R Calibration data (16 bits)
45 #define BMP085_CAL_AC6 0xB4 // R Calibration data (16 bits)
46 #define BMP085_CAL_B1 0xB6 // R Calibration data (16 bits)
47 #define BMP085_CAL_B2 0xB8 // R Calibration data (16 bits)
48 #define BMP085_CAL_MB 0xBA // R Calibration data (16 bits)
49 #define BMP085_CAL_MC 0xBC // R Calibration data (16 bits)
50 #define BMP085_CAL_MD 0xBE // R Calibration data (16 bits)
52 #define BMP085_CONTROL 0xF4
53 #define BMP085_TEMPDATA 0xF6
54 #define BMP085_PRESSUREDATA 0xF6
55 #define BMP085_READTEMPCMD 0x2E
56 #define BMP085_READPRESSURECMD 0x34
64 * @brief C++ API for GY65 chip (Atmospheric Pressure Sensor)
66 * This file defines the gy65 C++ interface for libgy65
68 * @snippet gy65.cxx Interesting
73 * Instanciates a GY65 object
75 * @param bus number of used bus
76 * @param devAddr addres of used i2c device
78 GY65 (int bus, int devAddr, uint8_t mode = BMP085_ULTRAHIGHRES);
81 * GY65 object destructor, basicaly it close i2c connection.
86 * Return calculated pressure
88 int32_t getPressure ();
92 * Get raw pressure data
94 int32_t getPressureRaw ();
97 * Get raw temperature data from chip
99 int16_t getTemperatureRaw ();
102 * Return calculated temperature
104 float getTemperature ();
107 * With given absolute altitude sea level can be calculated
109 * @param altitudeMeters altitude
111 int32_t getSealevelPressure(float altitudeMeters = 0);
114 * With given sea level altitude in meters can be calculated
116 * @param sealevelPressure Sea level
118 float getAltitude (float sealevelPressure = 101325);
121 * Calculation of B5 (check spec for more information)
125 int32_t computeB5 (int32_t UT);
128 * Read two bytes register
130 * @param reg address of a register
132 uint16_t i2cReadReg_16 (int reg);
135 * Write to one byte register
137 * @param reg address of a register
138 * @param value byte to be written
140 maa_result_t i2cWriteReg (uint8_t reg, uint8_t value);
143 * Read one byte register
145 * @param reg address of a register
147 uint8_t i2cReadReg_8 (int reg);
154 maa_i2c_context m_i2ControlCtx;
156 uint8_t oversampling;
157 int16_t ac1, ac2, ac3, b1, b2, mb, mc, md;
158 uint16_t ac4, ac5, ac6;