Class module for MPL3115A2 I2C Barometric Sensor
Dependents: mDotEVBM2X MTDOT-EVBDemo-DRH MTDOT-BOX-EVB-Factory-Firmware-LIB-108 MTDOT-UDKDemo_Senet ... more
MPL3115A2.h@5:8be678fd9e55, 2018-01-31 (annotated)
- Committer:
- Evan Hosseini
- Date:
- Wed Jan 31 10:09:42 2018 -0600
- Revision:
- 5:8be678fd9e55
- Parent:
- 0:3f52908a334d
Make driver thread safe by making i2c read transactions atomic
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
falingtrea | 0:3f52908a334d | 1 | /** |
falingtrea | 0:3f52908a334d | 2 | * @file MPL3115A2.h |
falingtrea | 0:3f52908a334d | 3 | * @brief Device driver - MPL3115A2 barometric pressure sensor IC w/RTOS support |
falingtrea | 0:3f52908a334d | 4 | * @author Tim Barr |
falingtrea | 0:3f52908a334d | 5 | * @version 1.0 |
falingtrea | 0:3f52908a334d | 6 | * @see http://cache.freescale.com/files/sensors/doc/data_sheet/MPL3115A2.pdf |
falingtrea | 0:3f52908a334d | 7 | * |
falingtrea | 0:3f52908a334d | 8 | * Copyright (c) 2015 |
falingtrea | 0:3f52908a334d | 9 | * |
falingtrea | 0:3f52908a334d | 10 | * Licensed under the Apache License, Version 2.0 (the "License"); |
falingtrea | 0:3f52908a334d | 11 | * you may not use this file except in compliance with the License. |
falingtrea | 0:3f52908a334d | 12 | * You may obtain a copy of the License at |
falingtrea | 0:3f52908a334d | 13 | * |
falingtrea | 0:3f52908a334d | 14 | * http://www.apache.org/licenses/LICENSE-2.0 |
falingtrea | 0:3f52908a334d | 15 | * |
falingtrea | 0:3f52908a334d | 16 | * Unless required by applicable law or agreed to in writing, software |
falingtrea | 0:3f52908a334d | 17 | * distributed under the License is distributed on an "AS IS" BASIS, |
falingtrea | 0:3f52908a334d | 18 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
falingtrea | 0:3f52908a334d | 19 | * See the License for the specific language governing permissions and |
falingtrea | 0:3f52908a334d | 20 | * limitations under the License. |
falingtrea | 0:3f52908a334d | 21 | */ |
falingtrea | 0:3f52908a334d | 22 | |
falingtrea | 0:3f52908a334d | 23 | #ifndef MPL3115A2_H |
falingtrea | 0:3f52908a334d | 24 | #define MPL3115A2_H |
falingtrea | 0:3f52908a334d | 25 | |
falingtrea | 0:3f52908a334d | 26 | #include "mbed.h" |
falingtrea | 0:3f52908a334d | 27 | |
falingtrea | 0:3f52908a334d | 28 | /** Using the MultiTech Systems MTDOT-EVB |
falingtrea | 0:3f52908a334d | 29 | * |
falingtrea | 0:3f52908a334d | 30 | * Example: |
falingtrea | 0:3f52908a334d | 31 | * @code |
falingtrea | 0:3f52908a334d | 32 | * #include "mbed.h" |
falingtrea | 0:3f52908a334d | 33 | * #include "MPL3115A2.h" |
falingtrea | 0:3f52908a334d | 34 | * |
falingtrea | 0:3f52908a334d | 35 | |
falingtrea | 0:3f52908a334d | 36 | * |
falingtrea | 0:3f52908a334d | 37 | * int main() |
falingtrea | 0:3f52908a334d | 38 | * { |
falingtrea | 0:3f52908a334d | 39 | |
falingtrea | 0:3f52908a334d | 40 | * } |
falingtrea | 0:3f52908a334d | 41 | * @endcode |
falingtrea | 0:3f52908a334d | 42 | */ |
falingtrea | 0:3f52908a334d | 43 | |
falingtrea | 0:3f52908a334d | 44 | |
falingtrea | 0:3f52908a334d | 45 | /** |
falingtrea | 0:3f52908a334d | 46 | * @class MPL3115A2_DATA |
falingtrea | 0:3f52908a334d | 47 | * @brief API abstraction for the MPL3115A2 barometric pressure IC data |
falingtrea | 0:3f52908a334d | 48 | */ |
falingtrea | 0:3f52908a334d | 49 | class MPL3115A2_DATA |
falingtrea | 0:3f52908a334d | 50 | { |
falingtrea | 0:3f52908a334d | 51 | public: |
falingtrea | 0:3f52908a334d | 52 | /*!< volatile data variables */ |
falingtrea | 0:3f52908a334d | 53 | volatile int32_t _baro; |
falingtrea | 0:3f52908a334d | 54 | volatile int16_t _temp; |
falingtrea | 0:3f52908a334d | 55 | volatile int32_t _minbaro; |
falingtrea | 0:3f52908a334d | 56 | volatile int32_t _maxbaro; |
falingtrea | 0:3f52908a334d | 57 | volatile int16_t _mintemp; |
falingtrea | 0:3f52908a334d | 58 | volatile int16_t _maxtemp; |
falingtrea | 0:3f52908a334d | 59 | |
falingtrea | 0:3f52908a334d | 60 | /** Create the MPL3115A2_DATA object initialized to the parameter (or 0 if none) |
falingtrea | 0:3f52908a334d | 61 | * @param baro - the init value of _baro |
falingtrea | 0:3f52908a334d | 62 | * @param temp - the init value of _temperature |
falingtrea | 0:3f52908a334d | 63 | * @param minbaro - the init value of _minbaro |
falingtrea | 0:3f52908a334d | 64 | * @param maxbaro - the init value of _maxbaro |
falingtrea | 0:3f52908a334d | 65 | * @param mintemp - the init value of _mintemp |
falingtrea | 0:3f52908a334d | 66 | * @param maxtemp - the init value of _maxtemp |
falingtrea | 0:3f52908a334d | 67 | */ |
falingtrea | 0:3f52908a334d | 68 | MPL3115A2_DATA(int32_t baro = 0, int16_t temp = 0, int32_t minbaro = 0, int32_t maxbaro = 0, |
falingtrea | 0:3f52908a334d | 69 | int16_t mintemp = 0, int16_t maxtemp = 0) : _baro(baro), _temp(temp), _minbaro(minbaro), |
falingtrea | 0:3f52908a334d | 70 | _maxbaro(maxbaro), _mintemp(mintemp), _maxtemp(maxtemp){} |
falingtrea | 0:3f52908a334d | 71 | |
falingtrea | 0:3f52908a334d | 72 | /** Overloaded '=' operator to allow shorthand coding, assigning objects to one another |
falingtrea | 0:3f52908a334d | 73 | * @param rhs - an object of the same type to assign ourself the same values of |
falingtrea | 0:3f52908a334d | 74 | * @return this |
falingtrea | 0:3f52908a334d | 75 | */ |
falingtrea | 0:3f52908a334d | 76 | MPL3115A2_DATA &operator= (MPL3115A2_DATA const &rhs) |
falingtrea | 0:3f52908a334d | 77 | { |
falingtrea | 0:3f52908a334d | 78 | _baro = rhs._baro; |
falingtrea | 0:3f52908a334d | 79 | _temp = rhs._temp; |
falingtrea | 0:3f52908a334d | 80 | _minbaro = rhs._minbaro; |
falingtrea | 0:3f52908a334d | 81 | _maxbaro = rhs._maxbaro; |
falingtrea | 0:3f52908a334d | 82 | _mintemp = rhs._mintemp; |
falingtrea | 0:3f52908a334d | 83 | _maxtemp = rhs._maxtemp; |
falingtrea | 0:3f52908a334d | 84 | |
falingtrea | 0:3f52908a334d | 85 | return *this; |
falingtrea | 0:3f52908a334d | 86 | } |
falingtrea | 0:3f52908a334d | 87 | |
falingtrea | 0:3f52908a334d | 88 | /** Overloaded '=' operator to allow shorthand coding, assigning objects to one another |
falingtrea | 0:3f52908a334d | 89 | * @param val - Assign each data member (_pressure, _temperature) this value |
falingtrea | 0:3f52908a334d | 90 | * @return this |
falingtrea | 0:3f52908a334d | 91 | |
falingtrea | 0:3f52908a334d | 92 | MPL3115A2_DATA &operator= (uint16_t val) |
falingtrea | 0:3f52908a334d | 93 | { |
falingtrea | 0:3f52908a334d | 94 | _baro = _temp = val; |
falingtrea | 0:3f52908a334d | 95 | |
falingtrea | 0:3f52908a334d | 96 | return *this; |
falingtrea | 0:3f52908a334d | 97 | } |
falingtrea | 0:3f52908a334d | 98 | */ |
falingtrea | 0:3f52908a334d | 99 | |
falingtrea | 0:3f52908a334d | 100 | /** Overloaded '==' operator to allow shorthand coding, test objects to one another |
falingtrea | 0:3f52908a334d | 101 | * @param rhs - the object to compare against |
falingtrea | 0:3f52908a334d | 102 | * @return 1 if the data members are the same and 0 otherwise |
falingtrea | 0:3f52908a334d | 103 | */ |
falingtrea | 0:3f52908a334d | 104 | bool operator== (MPL3115A2_DATA &rhs) |
falingtrea | 0:3f52908a334d | 105 | { |
falingtrea | 0:3f52908a334d | 106 | return ((_baro == rhs._baro)&&(_temp == rhs._temp)&& |
falingtrea | 0:3f52908a334d | 107 | (_minbaro == rhs._minbaro) && (_maxbaro == rhs._maxbaro)&& |
falingtrea | 0:3f52908a334d | 108 | (_mintemp == rhs._mintemp) && (_maxtemp == rhs._maxtemp)) ? 1 : 0; |
falingtrea | 0:3f52908a334d | 109 | } |
falingtrea | 0:3f52908a334d | 110 | }; |
falingtrea | 0:3f52908a334d | 111 | |
falingtrea | 0:3f52908a334d | 112 | /** |
falingtrea | 0:3f52908a334d | 113 | * @class MPL3115A2 |
falingtrea | 0:3f52908a334d | 114 | * @brief API abstraction for the MPL3115A2 3-axis barometric sensor IC |
falingtrea | 0:3f52908a334d | 115 | * initial version will be polling only. Interrupt service and rtos support will |
falingtrea | 0:3f52908a334d | 116 | * be added at a later point |
falingtrea | 0:3f52908a334d | 117 | */ |
falingtrea | 0:3f52908a334d | 118 | class MPL3115A2 |
falingtrea | 0:3f52908a334d | 119 | { |
falingtrea | 0:3f52908a334d | 120 | public: |
falingtrea | 0:3f52908a334d | 121 | |
falingtrea | 0:3f52908a334d | 122 | /** |
falingtrea | 0:3f52908a334d | 123 | * @enum WHO_AM_I_VAL |
falingtrea | 0:3f52908a334d | 124 | * @brief Device ID's that this class is compatible with |
falingtrea | 0:3f52908a334d | 125 | */ |
falingtrea | 0:3f52908a334d | 126 | enum WHO_AM_I_VAL |
falingtrea | 0:3f52908a334d | 127 | { |
falingtrea | 0:3f52908a334d | 128 | I_AM_MPL3115A2 = 0xc4, /*!< MPL3115A2 WHO_AM_I register content */ |
falingtrea | 0:3f52908a334d | 129 | }; |
falingtrea | 0:3f52908a334d | 130 | |
falingtrea | 0:3f52908a334d | 131 | /** |
falingtrea | 0:3f52908a334d | 132 | * @enum SYS_MODE |
falingtrea | 0:3f52908a334d | 133 | * @brief operating mode of MPL3115A2 |
falingtrea | 0:3f52908a334d | 134 | */ |
falingtrea | 0:3f52908a334d | 135 | enum SYS_MODE |
falingtrea | 0:3f52908a334d | 136 | { |
falingtrea | 0:3f52908a334d | 137 | STANDBY = 0, |
falingtrea | 0:3f52908a334d | 138 | ACTIVE |
falingtrea | 0:3f52908a334d | 139 | }; |
falingtrea | 0:3f52908a334d | 140 | |
falingtrea | 0:3f52908a334d | 141 | /** |
falingtrea | 0:3f52908a334d | 142 | * @enum DR_STATUS_VALS |
falingtrea | 0:3f52908a334d | 143 | * @brief flags for data overwrite and data ready |
falingtrea | 0:3f52908a334d | 144 | */ |
falingtrea | 0:3f52908a334d | 145 | enum DR_STATUS_VALS |
falingtrea | 0:3f52908a334d | 146 | { |
falingtrea | 0:3f52908a334d | 147 | TDR = 0x02, |
falingtrea | 0:3f52908a334d | 148 | PDR = 0x04, |
falingtrea | 0:3f52908a334d | 149 | PTDR = 0x08, |
falingtrea | 0:3f52908a334d | 150 | TOW = 0x20, |
falingtrea | 0:3f52908a334d | 151 | POW = 0x40, |
falingtrea | 0:3f52908a334d | 152 | PTOW = 0x80 |
falingtrea | 0:3f52908a334d | 153 | }; |
falingtrea | 0:3f52908a334d | 154 | |
falingtrea | 0:3f52908a334d | 155 | /** |
falingtrea | 0:3f52908a334d | 156 | * @enum OUTPUT_MODE |
falingtrea | 0:3f52908a334d | 157 | * @brief Select whether data is raw or post-processed |
falingtrea | 0:3f52908a334d | 158 | */ |
falingtrea | 0:3f52908a334d | 159 | enum OUTPUT_MODE |
falingtrea | 0:3f52908a334d | 160 | { |
falingtrea | 0:3f52908a334d | 161 | DATA_NORMAL = 0x00, |
falingtrea | 0:3f52908a334d | 162 | DATA_RAW = 0x40 |
falingtrea | 0:3f52908a334d | 163 | }; |
falingtrea | 0:3f52908a334d | 164 | |
falingtrea | 0:3f52908a334d | 165 | /** |
falingtrea | 0:3f52908a334d | 166 | * @enum DATA_MODE |
falingtrea | 0:3f52908a334d | 167 | * @brief Sets the pressure measurement post- processing mode for the sensor |
falingtrea | 0:3f52908a334d | 168 | */ |
falingtrea | 0:3f52908a334d | 169 | enum DATA_MODE |
falingtrea | 0:3f52908a334d | 170 | { |
falingtrea | 0:3f52908a334d | 171 | DM_BAROMETER = 0x00, |
falingtrea | 0:3f52908a334d | 172 | DM_ALTIMETER = 0x80 |
falingtrea | 0:3f52908a334d | 173 | }; |
falingtrea | 0:3f52908a334d | 174 | |
falingtrea | 0:3f52908a334d | 175 | /** |
falingtrea | 0:3f52908a334d | 176 | * @enum OVERSAMPLE_RATIO |
falingtrea | 0:3f52908a334d | 177 | * @brief values for oversample ratio |
falingtrea | 0:3f52908a334d | 178 | * Note: sample time is 2.5 msec * ratio# i.e. OR_8 -> 2.5 * 8 = 20 msec |
falingtrea | 0:3f52908a334d | 179 | */ |
falingtrea | 0:3f52908a334d | 180 | enum OVERSAMPLE_RATIO |
falingtrea | 0:3f52908a334d | 181 | { |
falingtrea | 0:3f52908a334d | 182 | OR_1 = 0x00, |
falingtrea | 0:3f52908a334d | 183 | OR_2 = 0x08, |
falingtrea | 0:3f52908a334d | 184 | OR_4 = 0x10, |
falingtrea | 0:3f52908a334d | 185 | OR_8 = 0x18, |
falingtrea | 0:3f52908a334d | 186 | OR_16 = 0x20, |
falingtrea | 0:3f52908a334d | 187 | OR_32 = 0x28, |
falingtrea | 0:3f52908a334d | 188 | OR_64 = 0x30, |
falingtrea | 0:3f52908a334d | 189 | OR_128 = 0x38 |
falingtrea | 0:3f52908a334d | 190 | }; |
falingtrea | 0:3f52908a334d | 191 | |
falingtrea | 0:3f52908a334d | 192 | /** |
falingtrea | 0:3f52908a334d | 193 | * @enum ACQUISITION_TIMER |
falingtrea | 0:3f52908a334d | 194 | * @brief in active mode this sets time between samples in seconds |
falingtrea | 0:3f52908a334d | 195 | */ |
falingtrea | 0:3f52908a334d | 196 | enum ACQUISITION_TIMER |
falingtrea | 0:3f52908a334d | 197 | { |
falingtrea | 0:3f52908a334d | 198 | AT_1 = 0x00, |
falingtrea | 0:3f52908a334d | 199 | AT_2, AT_4, AT_8, AT_16, AT_32, AT_64, AT_128, AT_256, |
falingtrea | 0:3f52908a334d | 200 | AT_512, AT_1024, AT_2048, AT_4096, AT_8192, AT_16384, AT_32768 |
falingtrea | 0:3f52908a334d | 201 | }; |
falingtrea | 0:3f52908a334d | 202 | |
falingtrea | 0:3f52908a334d | 203 | /** |
falingtrea | 0:3f52908a334d | 204 | * @enum REGISTER |
falingtrea | 0:3f52908a334d | 205 | * @brief The device register map |
falingtrea | 0:3f52908a334d | 206 | */ |
falingtrea | 0:3f52908a334d | 207 | enum REGISTER |
falingtrea | 0:3f52908a334d | 208 | { |
falingtrea | 0:3f52908a334d | 209 | STATUS = 0x0, |
falingtrea | 0:3f52908a334d | 210 | OUT_P_MSB, OUT_P_CSB, OUT_P_LSB, OUT_T_MSB, OUT_T_LSB, DR_STATUS, |
falingtrea | 0:3f52908a334d | 211 | OUT_P_DELTA_MSB, OUT_P_DELTA_CSB, OUT_P_DELTA_LSB, OUT_T_DELTA_MSB, OUT_T_DELTA_LSB, |
falingtrea | 0:3f52908a334d | 212 | WHO_AM_I, F_STATUS, F_DATA, F_SETUP, TIME_DLY, SYSMOD, INT_SOURCE, |
falingtrea | 0:3f52908a334d | 213 | PT_DATA_CFG, BAR_IN_MSB, BAR_IN_LSB, P_ARM_MSB, P_ARM_LSB, T_ARM, |
falingtrea | 0:3f52908a334d | 214 | P_ARM_WND_MSB, P_ARM_WND_LSB, T_ARM_WND, |
falingtrea | 0:3f52908a334d | 215 | P_MIN_MSB, P_MIN_CSB, P_MIN_LSB, T_MIN_MSB, T_MIN_LSB, |
falingtrea | 0:3f52908a334d | 216 | P_MAX_MSB, P_MAX_CSB, P_MAX_LSB, T_MAX_MSB, T_MAX_LSB, |
falingtrea | 0:3f52908a334d | 217 | CTRL_REG1, CTRL_REG2, CTRL_REG3, CTRL_REG4, CTRL_REG5, |
falingtrea | 0:3f52908a334d | 218 | OFF_P, OFF_T, OFF_H |
falingtrea | 0:3f52908a334d | 219 | }; |
falingtrea | 0:3f52908a334d | 220 | |
falingtrea | 0:3f52908a334d | 221 | /** Create the MPL3115A2 object |
falingtrea | 0:3f52908a334d | 222 | * @param i2c - A defined I2C object |
falingtrea | 0:3f52908a334d | 223 | * @param int1 - A defined InterruptIn object pointer. Default NULL for polling mode |
falingtrea | 0:3f52908a334d | 224 | * @param int2 - A defined InterruptIn object pointer. Default NULL for polling mode |
falingtrea | 0:3f52908a334d | 225 | * TODO - Need to add interrupt support |
falingtrea | 0:3f52908a334d | 226 | */ |
falingtrea | 0:3f52908a334d | 227 | MPL3115A2(I2C &i2c, InterruptIn* int1 = NULL, InterruptIn* int2 = NULL); |
falingtrea | 0:3f52908a334d | 228 | |
falingtrea | 0:3f52908a334d | 229 | /** Test the Who am I register for valid ID |
falingtrea | 0:3f52908a334d | 230 | * @return Boolean true if valid device |
falingtrea | 0:3f52908a334d | 231 | */ |
falingtrea | 0:3f52908a334d | 232 | bool testWhoAmI(void) ; |
falingtrea | 0:3f52908a334d | 233 | |
falingtrea | 0:3f52908a334d | 234 | /** Setup the MPL3115A2 for standard barometric sensor read mode |
falingtrea | 0:3f52908a334d | 235 | * @out_mode - Turns Data post processing ON/OFF using the OUTPUT_MODE enum |
falingtrea | 0:3f52908a334d | 236 | * @data_mode - Sets Pressure or Altitude mode using the DATA_MODE enum |
falingtrea | 0:3f52908a334d | 237 | * @os_ratio - Sets the Oversample ration using the OVERSAMPLE_RATIO enum |
falingtrea | 0:3f52908a334d | 238 | * @measure_time - Sets the Aquisition time for Active mode using the ACQUISITION_TIMER enum |
falingtrea | 0:3f52908a334d | 239 | * @return status of command |
falingtrea | 0:3f52908a334d | 240 | * |
falingtrea | 0:3f52908a334d | 241 | * This sets the resolution, range, data rate, oversample |
falingtrea | 0:3f52908a334d | 242 | * mode, hi and lo pass filter. |
falingtrea | 0:3f52908a334d | 243 | */ |
falingtrea | 0:3f52908a334d | 244 | uint8_t setParameters(OUTPUT_MODE out_mode, DATA_MODE data_mode, OVERSAMPLE_RATIO os_ratio, |
falingtrea | 0:3f52908a334d | 245 | ACQUISITION_TIMER measure_time) ; |
falingtrea | 0:3f52908a334d | 246 | |
falingtrea | 0:3f52908a334d | 247 | uint8_t enableFIFO(void) ; |
falingtrea | 0:3f52908a334d | 248 | |
falingtrea | 0:3f52908a334d | 249 | /** Put the MPL3115A2 in the Standby mode |
falingtrea | 0:3f52908a334d | 250 | * @return status of command |
falingtrea | 0:3f52908a334d | 251 | * TODO - need to implement function |
falingtrea | 0:3f52908a334d | 252 | */ |
falingtrea | 0:3f52908a334d | 253 | uint8_t standbyMode(void) ; |
falingtrea | 0:3f52908a334d | 254 | |
falingtrea | 0:3f52908a334d | 255 | /** Put the MPL3115A2 in the active mode |
falingtrea | 0:3f52908a334d | 256 | * @return status of command |
falingtrea | 0:3f52908a334d | 257 | */ |
falingtrea | 0:3f52908a334d | 258 | uint8_t activeMode(void) ; |
falingtrea | 0:3f52908a334d | 259 | |
falingtrea | 0:3f52908a334d | 260 | /** Triggers the MPL3115A2 to take one measurement in Active or Standby mode |
falingtrea | 0:3f52908a334d | 261 | * @return status of command |
falingtrea | 0:3f52908a334d | 262 | */ |
falingtrea | 0:3f52908a334d | 263 | uint8_t triggerOneShot(void) ; |
falingtrea | 0:3f52908a334d | 264 | |
falingtrea | 0:3f52908a334d | 265 | /** Set the sea level equivalent pressure for Altitude mode |
falingtrea | 0:3f52908a334d | 266 | * @alti_calib - Value is Equivalent sea level pressure for measurement location (2 Pa resolution) |
falingtrea | 0:3f52908a334d | 267 | * @return status byte |
falingtrea | 0:3f52908a334d | 268 | */ |
falingtrea | 0:3f52908a334d | 269 | uint8_t setAltitudeCalib(int16_t alti_calib) ; |
falingtrea | 0:3f52908a334d | 270 | |
falingtrea | 0:3f52908a334d | 271 | /** Clears all minimum and maximum data registers |
falingtrea | 0:3f52908a334d | 272 | * @return status of command |
falingtrea | 0:3f52908a334d | 273 | */ |
falingtrea | 0:3f52908a334d | 274 | uint8_t clearMinMaxRegs(void) ; |
falingtrea | 0:3f52908a334d | 275 | |
falingtrea | 0:3f52908a334d | 276 | /** Check the MPL3115A2 status register |
falingtrea | 0:3f52908a334d | 277 | * @return status byte |
falingtrea | 0:3f52908a334d | 278 | */ |
falingtrea | 0:3f52908a334d | 279 | uint8_t getStatus(void) ; |
falingtrea | 0:3f52908a334d | 280 | |
falingtrea | 0:3f52908a334d | 281 | /** Get the Pressure or Altitude data |
falingtrea | 0:3f52908a334d | 282 | * @return The last valid pressure based reading from the barometric sensor |
falingtrea | 0:3f52908a334d | 283 | */ |
falingtrea | 0:3f52908a334d | 284 | int32_t getBaroData(void); |
falingtrea | 0:3f52908a334d | 285 | |
falingtrea | 0:3f52908a334d | 286 | /** Get the Temperature data |
falingtrea | 0:3f52908a334d | 287 | * @return The last valid temperature reading from the barometric sensor |
falingtrea | 0:3f52908a334d | 288 | */ |
falingtrea | 0:3f52908a334d | 289 | int16_t getTempData(void); |
falingtrea | 0:3f52908a334d | 290 | |
falingtrea | 0:3f52908a334d | 291 | /** Get the Minimum Pressure or Altitude data |
falingtrea | 0:3f52908a334d | 292 | * @param Boolean TRUE clears the register after reading |
falingtrea | 0:3f52908a334d | 293 | * @return The Minimum Pressure or Altitude read since last cleared |
falingtrea | 0:3f52908a334d | 294 | */ |
falingtrea | 0:3f52908a334d | 295 | int32_t getMinBaro(bool clear_data); |
falingtrea | 0:3f52908a334d | 296 | |
falingtrea | 0:3f52908a334d | 297 | /** Get the Maximum Pressure or Altitude data |
falingtrea | 0:3f52908a334d | 298 | * @param Boolean true clears the register after reading |
falingtrea | 0:3f52908a334d | 299 | * @return The Maximum Pressure or Altitude read since last cleared |
falingtrea | 0:3f52908a334d | 300 | */ |
falingtrea | 0:3f52908a334d | 301 | int32_t getMaxBaro(bool clear_data); |
falingtrea | 0:3f52908a334d | 302 | |
falingtrea | 0:3f52908a334d | 303 | /** Get the Minimum Temperature data |
falingtrea | 0:3f52908a334d | 304 | * @param Boolean true clears the register after reading |
falingtrea | 0:3f52908a334d | 305 | * @return The Minimum temperature read since last cleared |
falingtrea | 0:3f52908a334d | 306 | */ |
falingtrea | 0:3f52908a334d | 307 | int16_t getMinTemp(bool clear_data); |
falingtrea | 0:3f52908a334d | 308 | |
falingtrea | 0:3f52908a334d | 309 | /** Get the Maximum Temperature data |
falingtrea | 0:3f52908a334d | 310 | * @param Boolean true clears the register after reading |
falingtrea | 0:3f52908a334d | 311 | * @return The Maximum temperature read since last cleared |
falingtrea | 0:3f52908a334d | 312 | */ |
falingtrea | 0:3f52908a334d | 313 | int16_t getMaxTemp(bool clear_data); |
falingtrea | 0:3f52908a334d | 314 | |
falingtrea | 0:3f52908a334d | 315 | /** Get the MP3115A2 data structure |
falingtrea | 0:3f52908a334d | 316 | * @param Boolean true clears all MIN/MAX registers after reading |
falingtrea | 0:3f52908a334d | 317 | * @return MPL3115A2_DATA structure |
falingtrea | 0:3f52908a334d | 318 | */ |
falingtrea | 0:3f52908a334d | 319 | MPL3115A2_DATA getAllData(bool clear_data); |
falingtrea | 0:3f52908a334d | 320 | |
falingtrea | 0:3f52908a334d | 321 | /* |
falingtrea | 0:3f52908a334d | 322 | * Need to add interrupt support code here when I get the chance |
falingtrea | 0:3f52908a334d | 323 | */ |
falingtrea | 0:3f52908a334d | 324 | |
falingtrea | 0:3f52908a334d | 325 | |
falingtrea | 0:3f52908a334d | 326 | private: |
falingtrea | 0:3f52908a334d | 327 | |
falingtrea | 0:3f52908a334d | 328 | I2C *_i2c; |
falingtrea | 0:3f52908a334d | 329 | InterruptIn *_int1; |
falingtrea | 0:3f52908a334d | 330 | InterruptIn *_int2; |
falingtrea | 0:3f52908a334d | 331 | MPL3115A2_DATA _data; |
falingtrea | 0:3f52908a334d | 332 | bool _polling_mode; |
falingtrea | 0:3f52908a334d | 333 | uint8_t static const _i2c_addr = (0x60 <<1); |
falingtrea | 0:3f52908a334d | 334 | |
falingtrea | 0:3f52908a334d | 335 | uint8_t init(void); |
falingtrea | 0:3f52908a334d | 336 | |
falingtrea | 0:3f52908a334d | 337 | /** Write to a register |
falingtrea | 0:3f52908a334d | 338 | * Note: most writes are only valid in stop mode |
falingtrea | 0:3f52908a334d | 339 | * @param reg - The register to be written |
falingtrea | 0:3f52908a334d | 340 | * @param data - The data to be written |
falingtrea | 0:3f52908a334d | 341 | * @param count - number of bytes to send, assumes 1 byte if not specified |
falingtrea | 0:3f52908a334d | 342 | * @return - status of command |
falingtrea | 0:3f52908a334d | 343 | */ |
falingtrea | 0:3f52908a334d | 344 | uint8_t writeRegister(uint8_t reg, char* data, uint8_t count = 1); |
falingtrea | 0:3f52908a334d | 345 | |
falingtrea | 0:3f52908a334d | 346 | /** Read from a register |
falingtrea | 0:3f52908a334d | 347 | * @param reg - The register to read from |
falingtrea | 0:3f52908a334d | 348 | * @param data - buffer of data to be read |
falingtrea | 0:3f52908a334d | 349 | * @param count - number of bytes to send, assumes 1 byte if not specified |
falingtrea | 0:3f52908a334d | 350 | * @return - status of command |
falingtrea | 0:3f52908a334d | 351 | */ |
falingtrea | 0:3f52908a334d | 352 | uint8_t readRegister(uint8_t reg, char* data, uint8_t count = 1); |
falingtrea | 0:3f52908a334d | 353 | |
falingtrea | 0:3f52908a334d | 354 | }; |
falingtrea | 0:3f52908a334d | 355 | |
falingtrea | 0:3f52908a334d | 356 | #endif |