Manuel Caballero / LPS25HB

Dependents:   GB9662

Committer:
mcm
Date:
Fri Jun 14 12:45:08 2019 +0000
Revision:
3:c35a7ddc6772
Parent:
2:93928d7d5c71
This driver was completed and tested ( NUCLEO-L152RE ) and it works as expected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcm 2:93928d7d5c71 1 /**
mcm 2:93928d7d5c71 2 * @brief LPS25HB.cpp
mcm 3:c35a7ddc6772 3 * @details MEMS pressure sensor: 260-1260 hPa absolute digital output barometer.
mcm 2:93928d7d5c71 4 * Function file.
mcm 2:93928d7d5c71 5 *
mcm 2:93928d7d5c71 6 *
mcm 2:93928d7d5c71 7 * @return N/A
mcm 2:93928d7d5c71 8 *
mcm 2:93928d7d5c71 9 * @author Manuel Caballero
mcm 2:93928d7d5c71 10 * @date 10/June/2019
mcm 2:93928d7d5c71 11 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 12 * @pre N/A.
mcm 2:93928d7d5c71 13 * @warning N/A
mcm 3:c35a7ddc6772 14 * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ).
mcm 2:93928d7d5c71 15 */
mcm 2:93928d7d5c71 16
mcm 2:93928d7d5c71 17 #include "LPS25HB.h"
mcm 2:93928d7d5c71 18
mcm 2:93928d7d5c71 19
mcm 2:93928d7d5c71 20 LPS25HB::LPS25HB ( PinName sda, PinName scl, uint32_t addr, uint32_t freq )
mcm 3:c35a7ddc6772 21 : _i2c ( sda, scl )
mcm 2:93928d7d5c71 22 , _LPS25HB_Addr ( addr )
mcm 2:93928d7d5c71 23 {
mcm 2:93928d7d5c71 24 _i2c.frequency( freq );
mcm 2:93928d7d5c71 25 }
mcm 2:93928d7d5c71 26
mcm 2:93928d7d5c71 27
mcm 2:93928d7d5c71 28 LPS25HB::~LPS25HB()
mcm 2:93928d7d5c71 29 {
mcm 2:93928d7d5c71 30 }
mcm 2:93928d7d5c71 31
mcm 2:93928d7d5c71 32
mcm 2:93928d7d5c71 33
mcm 2:93928d7d5c71 34 /**
mcm 2:93928d7d5c71 35 * @brief LPS25HB_GetReferencePressure ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 36 *
mcm 2:93928d7d5c71 37 * @details It gets raw reference pressure.
mcm 2:93928d7d5c71 38 *
mcm 2:93928d7d5c71 39 * @param[in] N/A.
mcm 2:93928d7d5c71 40 *
mcm 2:93928d7d5c71 41 * @param[out] myREFL: Raw reference pressure.
mcm 2:93928d7d5c71 42 *
mcm 2:93928d7d5c71 43 *
mcm 2:93928d7d5c71 44 * @return Status of LPS25HB_GetReferencePressure.
mcm 2:93928d7d5c71 45 *
mcm 2:93928d7d5c71 46 *
mcm 2:93928d7d5c71 47 * @author Manuel Caballero
mcm 2:93928d7d5c71 48 * @date 10/June/2019
mcm 2:93928d7d5c71 49 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 50 * @pre This function uses auto-increment to read more than one register in a raw.
mcm 2:93928d7d5c71 51 * @warning N/A.
mcm 2:93928d7d5c71 52 */
mcm 2:93928d7d5c71 53 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetReferencePressure ( LPS25HB_data_t* myREFL )
mcm 2:93928d7d5c71 54 {
mcm 2:93928d7d5c71 55 char cmd[3] = { 0U };
mcm 2:93928d7d5c71 56 uint32_t aux;
mcm 2:93928d7d5c71 57
mcm 2:93928d7d5c71 58 /* Read the register */
mcm 2:93928d7d5c71 59 cmd[0] = ( LPS25HB_REF_P_XL | 0x80 ); // Auto-increment enabled
mcm 2:93928d7d5c71 60 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 61 aux = _i2c.read ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:93928d7d5c71 62
mcm 2:93928d7d5c71 63 /* Mask it and update it with the new value */
mcm 2:93928d7d5c71 64 myREFL->rawReferencePressure = cmd[2];
mcm 2:93928d7d5c71 65 myREFL->rawReferencePressure <<= 8UL;
mcm 2:93928d7d5c71 66 myREFL->rawReferencePressure |= cmd[1];
mcm 2:93928d7d5c71 67 myREFL->rawReferencePressure <<= 8UL;
mcm 2:93928d7d5c71 68 myREFL->rawReferencePressure |= cmd[0];
mcm 2:93928d7d5c71 69
mcm 2:93928d7d5c71 70
mcm 2:93928d7d5c71 71
mcm 2:93928d7d5c71 72 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 73 {
mcm 2:93928d7d5c71 74 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 75 }
mcm 2:93928d7d5c71 76 else
mcm 2:93928d7d5c71 77 {
mcm 2:93928d7d5c71 78 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 79 }
mcm 2:93928d7d5c71 80 }
mcm 2:93928d7d5c71 81
mcm 2:93928d7d5c71 82
mcm 2:93928d7d5c71 83
mcm 2:93928d7d5c71 84 /**
mcm 2:93928d7d5c71 85 * @brief LPS25HB_SetReferencePressure ( LPS25HB_data_t )
mcm 2:93928d7d5c71 86 *
mcm 2:93928d7d5c71 87 * @details It sets raw reference pressure.
mcm 2:93928d7d5c71 88 *
mcm 2:93928d7d5c71 89 * @param[in] myREFL: Raw reference pressure.
mcm 2:93928d7d5c71 90 *
mcm 2:93928d7d5c71 91 * @param[out] N/A.
mcm 2:93928d7d5c71 92 *
mcm 2:93928d7d5c71 93 *
mcm 2:93928d7d5c71 94 * @return Status of LPS25HB_SetReferencePressure.
mcm 2:93928d7d5c71 95 *
mcm 2:93928d7d5c71 96 *
mcm 2:93928d7d5c71 97 * @author Manuel Caballero
mcm 2:93928d7d5c71 98 * @date 10/June/2019
mcm 2:93928d7d5c71 99 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 100 * @pre This function uses auto-increment to write more than one register in a raw.
mcm 2:93928d7d5c71 101 * @warning N/A.
mcm 2:93928d7d5c71 102 */
mcm 2:93928d7d5c71 103 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetReferencePressure ( LPS25HB_data_t myREFL )
mcm 2:93928d7d5c71 104 {
mcm 2:93928d7d5c71 105 char cmd[4] = { 0U };
mcm 2:93928d7d5c71 106 uint32_t aux;
mcm 2:93928d7d5c71 107
mcm 2:93928d7d5c71 108 /* Read the register */
mcm 2:93928d7d5c71 109 cmd[0] = ( LPS25HB_REF_P_XL | 0x80 ); // Auto-increment enabled
mcm 2:93928d7d5c71 110 cmd[1] = (char)( myREFL.rawReferencePressure ); // REF_P_XL
mcm 2:93928d7d5c71 111 cmd[2] = (char)( myREFL.rawReferencePressure >> 8UL ); // REF_P_L
mcm 2:93928d7d5c71 112 cmd[3] = (char)( myREFL.rawReferencePressure >> 16UL ); // REF_P_H
mcm 2:93928d7d5c71 113 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 114
mcm 2:93928d7d5c71 115
mcm 2:93928d7d5c71 116
mcm 2:93928d7d5c71 117
mcm 2:93928d7d5c71 118 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 119 {
mcm 2:93928d7d5c71 120 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 121 }
mcm 2:93928d7d5c71 122 else
mcm 2:93928d7d5c71 123 {
mcm 2:93928d7d5c71 124 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 125 }
mcm 2:93928d7d5c71 126 }
mcm 2:93928d7d5c71 127
mcm 2:93928d7d5c71 128
mcm 2:93928d7d5c71 129
mcm 2:93928d7d5c71 130 /**
mcm 2:93928d7d5c71 131 * @brief LPS25HB_GetDeviceID ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 132 *
mcm 2:93928d7d5c71 133 * @details It gets the device ID.
mcm 2:93928d7d5c71 134 *
mcm 2:93928d7d5c71 135 * @param[in] N/A.
mcm 2:93928d7d5c71 136 *
mcm 2:93928d7d5c71 137 * @param[out] myID: Device ID.
mcm 2:93928d7d5c71 138 *
mcm 2:93928d7d5c71 139 *
mcm 2:93928d7d5c71 140 * @return Status of LPS25HB_GetDeviceID.
mcm 2:93928d7d5c71 141 *
mcm 2:93928d7d5c71 142 *
mcm 2:93928d7d5c71 143 * @author Manuel Caballero
mcm 2:93928d7d5c71 144 * @date 10/June/2019
mcm 2:93928d7d5c71 145 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 146 * @pre N/A.
mcm 2:93928d7d5c71 147 * @warning N/A.
mcm 2:93928d7d5c71 148 */
mcm 2:93928d7d5c71 149 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetDeviceID ( LPS25HB_data_t* myID )
mcm 2:93928d7d5c71 150 {
mcm 2:93928d7d5c71 151 char cmd = 0U;
mcm 2:93928d7d5c71 152 uint32_t aux;
mcm 2:93928d7d5c71 153
mcm 2:93928d7d5c71 154 /* Write the register */
mcm 2:93928d7d5c71 155 cmd = LPS25HB_WHO_AM_I;
mcm 2:93928d7d5c71 156 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 157 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 158
mcm 2:93928d7d5c71 159 /* Parse data */
mcm 2:93928d7d5c71 160 myID->deviceID = cmd;
mcm 2:93928d7d5c71 161
mcm 2:93928d7d5c71 162
mcm 2:93928d7d5c71 163
mcm 2:93928d7d5c71 164 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 165 {
mcm 2:93928d7d5c71 166 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 167 }
mcm 2:93928d7d5c71 168 else
mcm 2:93928d7d5c71 169 {
mcm 2:93928d7d5c71 170 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 171 }
mcm 2:93928d7d5c71 172 }
mcm 2:93928d7d5c71 173
mcm 2:93928d7d5c71 174
mcm 2:93928d7d5c71 175
mcm 2:93928d7d5c71 176 /**
mcm 2:93928d7d5c71 177 * @brief LPS25HB_SetTemperatureResolution ( LPS25HB_data_t )
mcm 2:93928d7d5c71 178 *
mcm 2:93928d7d5c71 179 * @details It sets temperature resolution.
mcm 2:93928d7d5c71 180 *
mcm 2:93928d7d5c71 181 * @param[in] myAVGT: Temperature resolution.
mcm 2:93928d7d5c71 182 *
mcm 2:93928d7d5c71 183 * @param[out] N/A.
mcm 2:93928d7d5c71 184 *
mcm 2:93928d7d5c71 185 *
mcm 2:93928d7d5c71 186 * @return Status of LPS25HB_SetTemperatureResolution.
mcm 2:93928d7d5c71 187 *
mcm 2:93928d7d5c71 188 *
mcm 2:93928d7d5c71 189 * @author Manuel Caballero
mcm 2:93928d7d5c71 190 * @date 10/June/2019
mcm 2:93928d7d5c71 191 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 192 * @pre N/A.
mcm 2:93928d7d5c71 193 * @warning N/A.
mcm 2:93928d7d5c71 194 */
mcm 2:93928d7d5c71 195 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetTemperatureResolution ( LPS25HB_data_t myAVGT )
mcm 2:93928d7d5c71 196 {
mcm 2:93928d7d5c71 197 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 198 uint32_t aux;
mcm 2:93928d7d5c71 199
mcm 2:93928d7d5c71 200 /* Update the register */
mcm 2:93928d7d5c71 201 cmd[0] = LPS25HB_RES_CONF;
mcm 2:93928d7d5c71 202 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 203 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 204
mcm 2:93928d7d5c71 205 cmd[1] &= ~( RES_CONF_AVGT_MASK );
mcm 2:93928d7d5c71 206 cmd[1] |= myAVGT.avgt;
mcm 2:93928d7d5c71 207 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 208
mcm 2:93928d7d5c71 209
mcm 2:93928d7d5c71 210
mcm 2:93928d7d5c71 211 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 212 {
mcm 2:93928d7d5c71 213 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 214 }
mcm 2:93928d7d5c71 215 else
mcm 2:93928d7d5c71 216 {
mcm 2:93928d7d5c71 217 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 218 }
mcm 2:93928d7d5c71 219 }
mcm 2:93928d7d5c71 220
mcm 2:93928d7d5c71 221
mcm 2:93928d7d5c71 222
mcm 2:93928d7d5c71 223 /**
mcm 2:93928d7d5c71 224 * @brief LPS25HB_GetTemperatureResolution ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 225 *
mcm 2:93928d7d5c71 226 * @details It gets temperature resolution.
mcm 2:93928d7d5c71 227 *
mcm 2:93928d7d5c71 228 * @param[in] N/A.
mcm 2:93928d7d5c71 229 *
mcm 2:93928d7d5c71 230 * @param[out] myAVGT: Temperature resolution.
mcm 2:93928d7d5c71 231 *
mcm 2:93928d7d5c71 232 *
mcm 2:93928d7d5c71 233 * @return Status of LPS25HB_GetTemperatureResolution.
mcm 2:93928d7d5c71 234 *
mcm 2:93928d7d5c71 235 *
mcm 2:93928d7d5c71 236 * @author Manuel Caballero
mcm 2:93928d7d5c71 237 * @date 10/June/2019
mcm 2:93928d7d5c71 238 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 239 * @pre N/A.
mcm 2:93928d7d5c71 240 * @warning N/A.
mcm 2:93928d7d5c71 241 */
mcm 2:93928d7d5c71 242 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetTemperatureResolution ( LPS25HB_data_t* myAVGT )
mcm 2:93928d7d5c71 243 {
mcm 2:93928d7d5c71 244 char cmd = 0U;
mcm 2:93928d7d5c71 245 uint32_t aux;
mcm 2:93928d7d5c71 246
mcm 2:93928d7d5c71 247 /* Read the register */
mcm 2:93928d7d5c71 248 cmd = LPS25HB_RES_CONF;
mcm 2:93928d7d5c71 249 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 250 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 251
mcm 2:93928d7d5c71 252 /* Parse the data */
mcm 2:93928d7d5c71 253 myAVGT->avgt = (LPS25HB_res_conf_avgt_t)( cmd & RES_CONF_AVGT_MASK );
mcm 2:93928d7d5c71 254
mcm 2:93928d7d5c71 255
mcm 2:93928d7d5c71 256
mcm 2:93928d7d5c71 257 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 258 {
mcm 2:93928d7d5c71 259 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 260 }
mcm 2:93928d7d5c71 261 else
mcm 2:93928d7d5c71 262 {
mcm 2:93928d7d5c71 263 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 264 }
mcm 2:93928d7d5c71 265 }
mcm 2:93928d7d5c71 266
mcm 2:93928d7d5c71 267
mcm 2:93928d7d5c71 268
mcm 2:93928d7d5c71 269 /**
mcm 2:93928d7d5c71 270 * @brief LPS25HB_SetPressureResolution ( LPS25HB_data_t )
mcm 2:93928d7d5c71 271 *
mcm 2:93928d7d5c71 272 * @details It sets pressure resolution.
mcm 2:93928d7d5c71 273 *
mcm 2:93928d7d5c71 274 * @param[in] myAVGP: Pressure resolution.
mcm 2:93928d7d5c71 275 *
mcm 2:93928d7d5c71 276 * @param[out] N/A.
mcm 2:93928d7d5c71 277 *
mcm 2:93928d7d5c71 278 *
mcm 2:93928d7d5c71 279 * @return Status of LPS25HB_SetPressureResolution.
mcm 2:93928d7d5c71 280 *
mcm 2:93928d7d5c71 281 *
mcm 2:93928d7d5c71 282 * @author Manuel Caballero
mcm 2:93928d7d5c71 283 * @date 10/June/2019
mcm 2:93928d7d5c71 284 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 285 * @pre N/A.
mcm 2:93928d7d5c71 286 * @warning N/A.
mcm 2:93928d7d5c71 287 */
mcm 2:93928d7d5c71 288 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetPressureResolution ( LPS25HB_data_t myAVGP )
mcm 2:93928d7d5c71 289 {
mcm 2:93928d7d5c71 290 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 291 uint32_t aux;
mcm 2:93928d7d5c71 292
mcm 2:93928d7d5c71 293 /* Update the register */
mcm 2:93928d7d5c71 294 cmd[0] = LPS25HB_RES_CONF;
mcm 2:93928d7d5c71 295 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 296 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 297
mcm 2:93928d7d5c71 298 cmd[1] &= ~( RES_CONF_AVGP_MASK );
mcm 2:93928d7d5c71 299 cmd[1] |= myAVGP.avgp;
mcm 2:93928d7d5c71 300 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 301
mcm 2:93928d7d5c71 302
mcm 2:93928d7d5c71 303
mcm 2:93928d7d5c71 304 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 305 {
mcm 2:93928d7d5c71 306 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 307 }
mcm 2:93928d7d5c71 308 else
mcm 2:93928d7d5c71 309 {
mcm 2:93928d7d5c71 310 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 311 }
mcm 2:93928d7d5c71 312 }
mcm 2:93928d7d5c71 313
mcm 2:93928d7d5c71 314
mcm 2:93928d7d5c71 315
mcm 2:93928d7d5c71 316 /**
mcm 2:93928d7d5c71 317 * @brief LPS25HB_GetPressureResolution ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 318 *
mcm 2:93928d7d5c71 319 * @details It gets pressure resolution.
mcm 2:93928d7d5c71 320 *
mcm 2:93928d7d5c71 321 * @param[in] N/A.
mcm 2:93928d7d5c71 322 *
mcm 2:93928d7d5c71 323 * @param[out] myAVGP: Pressure resolution.
mcm 2:93928d7d5c71 324 *
mcm 2:93928d7d5c71 325 *
mcm 2:93928d7d5c71 326 * @return Status of LPS25HB_GetPressureResolution.
mcm 2:93928d7d5c71 327 *
mcm 2:93928d7d5c71 328 *
mcm 2:93928d7d5c71 329 * @author Manuel Caballero
mcm 2:93928d7d5c71 330 * @date 10/June/2019
mcm 2:93928d7d5c71 331 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 332 * @pre N/A.
mcm 2:93928d7d5c71 333 * @warning N/A.
mcm 2:93928d7d5c71 334 */
mcm 2:93928d7d5c71 335 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetPressureResolution ( LPS25HB_data_t* myAVGP )
mcm 2:93928d7d5c71 336 {
mcm 2:93928d7d5c71 337 char cmd = 0U;
mcm 2:93928d7d5c71 338 uint32_t aux;
mcm 2:93928d7d5c71 339
mcm 2:93928d7d5c71 340 /* Read the register */
mcm 2:93928d7d5c71 341 cmd = LPS25HB_RES_CONF;
mcm 2:93928d7d5c71 342 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 343 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 344
mcm 2:93928d7d5c71 345 /* Parse the data */
mcm 2:93928d7d5c71 346 myAVGP->avgp = (LPS25HB_res_conf_avgp_t)( cmd & RES_CONF_AVGP_MASK );
mcm 2:93928d7d5c71 347
mcm 2:93928d7d5c71 348
mcm 2:93928d7d5c71 349
mcm 2:93928d7d5c71 350 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 351 {
mcm 2:93928d7d5c71 352 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 353 }
mcm 2:93928d7d5c71 354 else
mcm 2:93928d7d5c71 355 {
mcm 2:93928d7d5c71 356 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 357 }
mcm 2:93928d7d5c71 358 }
mcm 2:93928d7d5c71 359
mcm 2:93928d7d5c71 360
mcm 2:93928d7d5c71 361
mcm 2:93928d7d5c71 362 /**
mcm 2:93928d7d5c71 363 * @brief LPS25HB_SetPowerMode ( LPS25HB_ctrl_reg1_pd_t )
mcm 2:93928d7d5c71 364 *
mcm 2:93928d7d5c71 365 * @details It sets power mode.
mcm 2:93928d7d5c71 366 *
mcm 2:93928d7d5c71 367 * @param[in] myPD: Power mode: Power-down/Active mode.
mcm 2:93928d7d5c71 368 *
mcm 2:93928d7d5c71 369 * @param[out] N/A.
mcm 2:93928d7d5c71 370 *
mcm 2:93928d7d5c71 371 *
mcm 2:93928d7d5c71 372 * @return Status of LPS25HB_SetPowerMode.
mcm 2:93928d7d5c71 373 *
mcm 2:93928d7d5c71 374 *
mcm 2:93928d7d5c71 375 * @author Manuel Caballero
mcm 2:93928d7d5c71 376 * @date 10/June/2019
mcm 2:93928d7d5c71 377 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 378 * @pre N/A.
mcm 2:93928d7d5c71 379 * @warning N/A.
mcm 2:93928d7d5c71 380 */
mcm 2:93928d7d5c71 381 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetPowerMode ( LPS25HB_ctrl_reg1_pd_t myPD )
mcm 2:93928d7d5c71 382 {
mcm 2:93928d7d5c71 383 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 384 uint32_t aux;
mcm 2:93928d7d5c71 385
mcm 2:93928d7d5c71 386 /* Update the register */
mcm 2:93928d7d5c71 387 cmd[0] = LPS25HB_CTRL_REG1;
mcm 2:93928d7d5c71 388 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 389 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 390
mcm 2:93928d7d5c71 391 cmd[1] &= ~( CTRL_REG1_PD_MASK );
mcm 2:93928d7d5c71 392 cmd[1] |= myPD;
mcm 2:93928d7d5c71 393 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 394
mcm 2:93928d7d5c71 395
mcm 2:93928d7d5c71 396
mcm 2:93928d7d5c71 397 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 398 {
mcm 2:93928d7d5c71 399 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 400 }
mcm 2:93928d7d5c71 401 else
mcm 2:93928d7d5c71 402 {
mcm 2:93928d7d5c71 403 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 404 }
mcm 2:93928d7d5c71 405 }
mcm 2:93928d7d5c71 406
mcm 2:93928d7d5c71 407
mcm 2:93928d7d5c71 408
mcm 2:93928d7d5c71 409 /**
mcm 2:93928d7d5c71 410 * @brief LPS25HB_SetOutputDataRate ( LPS25HB_data_t )
mcm 2:93928d7d5c71 411 *
mcm 2:93928d7d5c71 412 * @details It sets the output data rate.
mcm 2:93928d7d5c71 413 *
mcm 2:93928d7d5c71 414 * @param[in] myODR: Output data rate.
mcm 2:93928d7d5c71 415 *
mcm 2:93928d7d5c71 416 * @param[out] N/A.
mcm 2:93928d7d5c71 417 *
mcm 2:93928d7d5c71 418 *
mcm 2:93928d7d5c71 419 * @return Status of LPS25HB_SetOutputDataRate.
mcm 2:93928d7d5c71 420 *
mcm 2:93928d7d5c71 421 *
mcm 2:93928d7d5c71 422 * @author Manuel Caballero
mcm 2:93928d7d5c71 423 * @date 10/June/2019
mcm 2:93928d7d5c71 424 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 425 * @pre N/A.
mcm 2:93928d7d5c71 426 * @warning N/A.
mcm 2:93928d7d5c71 427 */
mcm 2:93928d7d5c71 428 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetOutputDataRate ( LPS25HB_data_t myODR )
mcm 2:93928d7d5c71 429 {
mcm 2:93928d7d5c71 430 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 431 uint32_t aux;
mcm 2:93928d7d5c71 432
mcm 2:93928d7d5c71 433 /* Update the register */
mcm 2:93928d7d5c71 434 cmd[0] = LPS25HB_CTRL_REG1;
mcm 2:93928d7d5c71 435 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 436 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 437
mcm 2:93928d7d5c71 438 cmd[1] &= ~( CTRL_REG1_ODR_MASK );
mcm 2:93928d7d5c71 439 cmd[1] |= myODR.odr;
mcm 2:93928d7d5c71 440 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 441
mcm 2:93928d7d5c71 442
mcm 2:93928d7d5c71 443
mcm 2:93928d7d5c71 444 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 445 {
mcm 2:93928d7d5c71 446 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 447 }
mcm 2:93928d7d5c71 448 else
mcm 2:93928d7d5c71 449 {
mcm 2:93928d7d5c71 450 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 451 }
mcm 2:93928d7d5c71 452 }
mcm 2:93928d7d5c71 453
mcm 2:93928d7d5c71 454
mcm 2:93928d7d5c71 455
mcm 2:93928d7d5c71 456 /**
mcm 2:93928d7d5c71 457 * @brief LPS25HB_GetOutputDataRate ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 458 *
mcm 2:93928d7d5c71 459 * @details It gets the output data rate.
mcm 2:93928d7d5c71 460 *
mcm 2:93928d7d5c71 461 * @param[in] N/A.
mcm 2:93928d7d5c71 462 *
mcm 2:93928d7d5c71 463 * @param[out] myODR: Output data rate.
mcm 2:93928d7d5c71 464 *
mcm 2:93928d7d5c71 465 *
mcm 2:93928d7d5c71 466 * @return Status of LPS25HB_GetOutputDataRate.
mcm 2:93928d7d5c71 467 *
mcm 2:93928d7d5c71 468 *
mcm 2:93928d7d5c71 469 * @author Manuel Caballero
mcm 2:93928d7d5c71 470 * @date 10/June/2019
mcm 2:93928d7d5c71 471 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 472 * @pre N/A.
mcm 2:93928d7d5c71 473 * @warning N/A.
mcm 2:93928d7d5c71 474 */
mcm 2:93928d7d5c71 475 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetOutputDataRate ( LPS25HB_data_t* myODR )
mcm 2:93928d7d5c71 476 {
mcm 2:93928d7d5c71 477 char cmd = 0U;
mcm 2:93928d7d5c71 478 uint32_t aux;
mcm 2:93928d7d5c71 479
mcm 2:93928d7d5c71 480 /* Read the register */
mcm 2:93928d7d5c71 481 cmd = LPS25HB_CTRL_REG1;
mcm 2:93928d7d5c71 482 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 483 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 484
mcm 2:93928d7d5c71 485 /* Parse the data */
mcm 2:93928d7d5c71 486 myODR->odr = (LPS25HB_ctrl_reg1_odr_t)( cmd & CTRL_REG1_ODR_MASK );
mcm 2:93928d7d5c71 487
mcm 2:93928d7d5c71 488
mcm 2:93928d7d5c71 489
mcm 2:93928d7d5c71 490 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 491 {
mcm 2:93928d7d5c71 492 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 493 }
mcm 2:93928d7d5c71 494 else
mcm 2:93928d7d5c71 495 {
mcm 2:93928d7d5c71 496 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 497 }
mcm 2:93928d7d5c71 498 }
mcm 2:93928d7d5c71 499
mcm 2:93928d7d5c71 500
mcm 2:93928d7d5c71 501
mcm 2:93928d7d5c71 502 /**
mcm 2:93928d7d5c71 503 * @brief LPS25HB_SetInterruptGeneration ( LPS25HB_ctrl_reg1_diff_en_t )
mcm 2:93928d7d5c71 504 *
mcm 2:93928d7d5c71 505 * @details It sets the interrupt generation enable.
mcm 2:93928d7d5c71 506 *
mcm 2:93928d7d5c71 507 * @param[in] myDIFF_EN: Interrupt generation enabled/disabled.
mcm 2:93928d7d5c71 508 *
mcm 2:93928d7d5c71 509 * @param[out] N/A.
mcm 2:93928d7d5c71 510 *
mcm 2:93928d7d5c71 511 *
mcm 2:93928d7d5c71 512 * @return Status of LPS25HB_SetInterruptGeneration.
mcm 2:93928d7d5c71 513 *
mcm 2:93928d7d5c71 514 *
mcm 2:93928d7d5c71 515 * @author Manuel Caballero
mcm 2:93928d7d5c71 516 * @date 10/June/2019
mcm 2:93928d7d5c71 517 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 518 * @pre N/A.
mcm 2:93928d7d5c71 519 * @warning N/A.
mcm 2:93928d7d5c71 520 */
mcm 2:93928d7d5c71 521 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetInterruptGeneration ( LPS25HB_ctrl_reg1_diff_en_t myDIFF_EN )
mcm 2:93928d7d5c71 522 {
mcm 2:93928d7d5c71 523 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 524 uint32_t aux;
mcm 2:93928d7d5c71 525
mcm 2:93928d7d5c71 526 /* Update the register */
mcm 2:93928d7d5c71 527 cmd[0] = LPS25HB_CTRL_REG1;
mcm 2:93928d7d5c71 528 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 529 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 530
mcm 2:93928d7d5c71 531 cmd[1] &= ~( CTRL_REG1_DIFF_EN_MASK );
mcm 2:93928d7d5c71 532 cmd[1] |= myDIFF_EN;
mcm 2:93928d7d5c71 533 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 534
mcm 2:93928d7d5c71 535
mcm 2:93928d7d5c71 536
mcm 2:93928d7d5c71 537 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 538 {
mcm 2:93928d7d5c71 539 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 540 }
mcm 2:93928d7d5c71 541 else
mcm 2:93928d7d5c71 542 {
mcm 2:93928d7d5c71 543 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 544 }
mcm 2:93928d7d5c71 545 }
mcm 2:93928d7d5c71 546
mcm 2:93928d7d5c71 547
mcm 2:93928d7d5c71 548
mcm 2:93928d7d5c71 549 /**
mcm 2:93928d7d5c71 550 * @brief LPS25HB_SetBlockDataUpdate ( LPS25HB_ctrl_reg1_bdu_t )
mcm 2:93928d7d5c71 551 *
mcm 2:93928d7d5c71 552 * @details It sets the block data update.
mcm 2:93928d7d5c71 553 *
mcm 2:93928d7d5c71 554 * @param[in] myBDU: Block data update.
mcm 2:93928d7d5c71 555 *
mcm 2:93928d7d5c71 556 * @param[out] N/A.
mcm 2:93928d7d5c71 557 *
mcm 2:93928d7d5c71 558 *
mcm 2:93928d7d5c71 559 * @return Status of LPS25HB_SetBlockDataUpdate.
mcm 2:93928d7d5c71 560 *
mcm 2:93928d7d5c71 561 *
mcm 2:93928d7d5c71 562 * @author Manuel Caballero
mcm 2:93928d7d5c71 563 * @date 10/June/2019
mcm 2:93928d7d5c71 564 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 565 * @pre N/A.
mcm 2:93928d7d5c71 566 * @warning N/A.
mcm 2:93928d7d5c71 567 */
mcm 2:93928d7d5c71 568 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetBlockDataUpdate ( LPS25HB_ctrl_reg1_bdu_t myBDU )
mcm 2:93928d7d5c71 569 {
mcm 2:93928d7d5c71 570 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 571 uint32_t aux;
mcm 2:93928d7d5c71 572
mcm 2:93928d7d5c71 573 /* Update the register */
mcm 2:93928d7d5c71 574 cmd[0] = LPS25HB_CTRL_REG1;
mcm 2:93928d7d5c71 575 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 576 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 577
mcm 2:93928d7d5c71 578 cmd[1] &= ~( CTRL_REG1_BDU_MASK );
mcm 2:93928d7d5c71 579 cmd[1] |= myBDU;
mcm 2:93928d7d5c71 580 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 581
mcm 2:93928d7d5c71 582
mcm 2:93928d7d5c71 583
mcm 2:93928d7d5c71 584 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 585 {
mcm 2:93928d7d5c71 586 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 587 }
mcm 2:93928d7d5c71 588 else
mcm 2:93928d7d5c71 589 {
mcm 2:93928d7d5c71 590 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 591 }
mcm 2:93928d7d5c71 592 }
mcm 2:93928d7d5c71 593
mcm 2:93928d7d5c71 594
mcm 2:93928d7d5c71 595
mcm 2:93928d7d5c71 596 /**
mcm 2:93928d7d5c71 597 * @brief LPS25HB_SetResetAutozero ( void )
mcm 2:93928d7d5c71 598 *
mcm 2:93928d7d5c71 599 * @details It sets the reset autozero function.
mcm 2:93928d7d5c71 600 *
mcm 2:93928d7d5c71 601 * @param[in] N/A.
mcm 2:93928d7d5c71 602 *
mcm 2:93928d7d5c71 603 * @param[out] N/A.
mcm 2:93928d7d5c71 604 *
mcm 2:93928d7d5c71 605 *
mcm 2:93928d7d5c71 606 * @return Status of LPS25HB_SetResetAutozero.
mcm 2:93928d7d5c71 607 *
mcm 2:93928d7d5c71 608 *
mcm 2:93928d7d5c71 609 * @author Manuel Caballero
mcm 2:93928d7d5c71 610 * @date 10/June/2019
mcm 2:93928d7d5c71 611 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 612 * @pre N/A.
mcm 2:93928d7d5c71 613 * @warning N/A.
mcm 2:93928d7d5c71 614 */
mcm 2:93928d7d5c71 615 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetResetAutozero ( void )
mcm 2:93928d7d5c71 616 {
mcm 2:93928d7d5c71 617 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 618 uint32_t aux;
mcm 2:93928d7d5c71 619
mcm 2:93928d7d5c71 620 /* Update the register */
mcm 2:93928d7d5c71 621 cmd[0] = LPS25HB_CTRL_REG1;
mcm 2:93928d7d5c71 622 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 623 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 624
mcm 2:93928d7d5c71 625 cmd[1] &= ~( CTRL_REG1_RESET_AZ_MASK );
mcm 2:93928d7d5c71 626 cmd[1] |= CTRL_REG1_RESET_AZ_RESET_AUTOZERO_FUNCTION;
mcm 2:93928d7d5c71 627 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 628
mcm 2:93928d7d5c71 629
mcm 2:93928d7d5c71 630
mcm 2:93928d7d5c71 631 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 632 {
mcm 2:93928d7d5c71 633 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 634 }
mcm 2:93928d7d5c71 635 else
mcm 2:93928d7d5c71 636 {
mcm 2:93928d7d5c71 637 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 638 }
mcm 2:93928d7d5c71 639 }
mcm 2:93928d7d5c71 640
mcm 2:93928d7d5c71 641
mcm 2:93928d7d5c71 642
mcm 2:93928d7d5c71 643 /**
mcm 2:93928d7d5c71 644 * @brief LPS25HB_GetResetAutozero ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 645 *
mcm 2:93928d7d5c71 646 * @details It gets the reset autozero function.
mcm 2:93928d7d5c71 647 *
mcm 2:93928d7d5c71 648 * @param[in] N/A.
mcm 2:93928d7d5c71 649 *
mcm 2:93928d7d5c71 650 * @param[out] myRESET_AZ: Reset autozero function value.
mcm 2:93928d7d5c71 651 *
mcm 2:93928d7d5c71 652 *
mcm 2:93928d7d5c71 653 * @return Status of LPS25HB_GetResetAutozero.
mcm 2:93928d7d5c71 654 *
mcm 2:93928d7d5c71 655 *
mcm 2:93928d7d5c71 656 * @author Manuel Caballero
mcm 2:93928d7d5c71 657 * @date 10/June/2019
mcm 2:93928d7d5c71 658 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 659 * @pre N/A.
mcm 2:93928d7d5c71 660 * @warning N/A.
mcm 2:93928d7d5c71 661 */
mcm 2:93928d7d5c71 662 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetResetAutozero ( LPS25HB_data_t* myRESET_AZ )
mcm 2:93928d7d5c71 663 {
mcm 2:93928d7d5c71 664 char cmd = 0U;
mcm 2:93928d7d5c71 665 uint32_t aux;
mcm 2:93928d7d5c71 666
mcm 2:93928d7d5c71 667 /* Read the register */
mcm 2:93928d7d5c71 668 cmd = LPS25HB_CTRL_REG1;
mcm 2:93928d7d5c71 669 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 670 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 671
mcm 2:93928d7d5c71 672 /* Parse the data */
mcm 2:93928d7d5c71 673 myRESET_AZ->reset_az = (LPS25HB_ctrl_reg1_reset_az_t)( CTRL_REG1_RESET_AZ_MASK & cmd );
mcm 2:93928d7d5c71 674
mcm 2:93928d7d5c71 675
mcm 2:93928d7d5c71 676
mcm 2:93928d7d5c71 677 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 678 {
mcm 2:93928d7d5c71 679 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 680 }
mcm 2:93928d7d5c71 681 else
mcm 2:93928d7d5c71 682 {
mcm 2:93928d7d5c71 683 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 684 }
mcm 2:93928d7d5c71 685 }
mcm 2:93928d7d5c71 686
mcm 2:93928d7d5c71 687
mcm 2:93928d7d5c71 688
mcm 2:93928d7d5c71 689 /**
mcm 2:93928d7d5c71 690 * @brief LPS25HB_SetRebootMemoryContent ( void )
mcm 2:93928d7d5c71 691 *
mcm 2:93928d7d5c71 692 * @details It sets the reboot memory content.
mcm 2:93928d7d5c71 693 *
mcm 2:93928d7d5c71 694 * @param[in] N/A.
mcm 2:93928d7d5c71 695 *
mcm 2:93928d7d5c71 696 * @param[out] N/A.
mcm 2:93928d7d5c71 697 *
mcm 2:93928d7d5c71 698 *
mcm 2:93928d7d5c71 699 * @return Status of LPS25HB_SetRebootMemoryContent.
mcm 2:93928d7d5c71 700 *
mcm 2:93928d7d5c71 701 *
mcm 2:93928d7d5c71 702 * @author Manuel Caballero
mcm 2:93928d7d5c71 703 * @date 10/June/2019
mcm 2:93928d7d5c71 704 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 705 * @pre N/A.
mcm 2:93928d7d5c71 706 * @warning N/A.
mcm 2:93928d7d5c71 707 */
mcm 2:93928d7d5c71 708 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetRebootMemoryContent ( void )
mcm 2:93928d7d5c71 709 {
mcm 2:93928d7d5c71 710 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 711 uint32_t aux;
mcm 2:93928d7d5c71 712
mcm 2:93928d7d5c71 713 /* Update the register */
mcm 2:93928d7d5c71 714 cmd[0] = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 715 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 716 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 717
mcm 2:93928d7d5c71 718 cmd[1] &= ~( CTRL_REG2_BOOT_MASK );
mcm 2:93928d7d5c71 719 cmd[1] |= CTRL_REG2_BOOT_REBOOT_MODE;
mcm 2:93928d7d5c71 720 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 721
mcm 2:93928d7d5c71 722
mcm 2:93928d7d5c71 723
mcm 2:93928d7d5c71 724 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 725 {
mcm 2:93928d7d5c71 726 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 727 }
mcm 2:93928d7d5c71 728 else
mcm 2:93928d7d5c71 729 {
mcm 2:93928d7d5c71 730 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 731 }
mcm 2:93928d7d5c71 732 }
mcm 2:93928d7d5c71 733
mcm 2:93928d7d5c71 734
mcm 2:93928d7d5c71 735
mcm 2:93928d7d5c71 736 /**
mcm 2:93928d7d5c71 737 * @brief LPS25HB_GetRebootMemoryContent ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 738 *
mcm 2:93928d7d5c71 739 * @details It gets the reboot memory content.
mcm 2:93928d7d5c71 740 *
mcm 2:93928d7d5c71 741 * @param[in] N/A.
mcm 2:93928d7d5c71 742 *
mcm 2:93928d7d5c71 743 * @param[out] myBOOT: Reboot memory content value.
mcm 2:93928d7d5c71 744 *
mcm 2:93928d7d5c71 745 *
mcm 2:93928d7d5c71 746 * @return Status of LPS25HB_GetRebootMemoryContent.
mcm 2:93928d7d5c71 747 *
mcm 2:93928d7d5c71 748 *
mcm 2:93928d7d5c71 749 * @author Manuel Caballero
mcm 2:93928d7d5c71 750 * @date 10/June/2019
mcm 2:93928d7d5c71 751 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 752 * @pre N/A.
mcm 2:93928d7d5c71 753 * @warning N/A.
mcm 2:93928d7d5c71 754 */
mcm 2:93928d7d5c71 755 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetRebootMemoryContent ( LPS25HB_data_t* myBOOT )
mcm 2:93928d7d5c71 756 {
mcm 2:93928d7d5c71 757 char cmd = 0U;
mcm 2:93928d7d5c71 758 uint32_t aux;
mcm 2:93928d7d5c71 759
mcm 2:93928d7d5c71 760 /* Read the register */
mcm 2:93928d7d5c71 761 cmd = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 762 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 763 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 764
mcm 2:93928d7d5c71 765 /* Parse the data */
mcm 2:93928d7d5c71 766 myBOOT->boot = (LPS25HB_ctrl_reg2_boot_t)( CTRL_REG2_BOOT_MASK & cmd );
mcm 2:93928d7d5c71 767
mcm 2:93928d7d5c71 768
mcm 2:93928d7d5c71 769
mcm 2:93928d7d5c71 770 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 771 {
mcm 2:93928d7d5c71 772 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 773 }
mcm 2:93928d7d5c71 774 else
mcm 2:93928d7d5c71 775 {
mcm 2:93928d7d5c71 776 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 777 }
mcm 2:93928d7d5c71 778 }
mcm 2:93928d7d5c71 779
mcm 2:93928d7d5c71 780
mcm 2:93928d7d5c71 781
mcm 2:93928d7d5c71 782 /**
mcm 2:93928d7d5c71 783 * @brief LPS25HB_SetFIFOEnable ( LPS25HB_data_t )
mcm 2:93928d7d5c71 784 *
mcm 2:93928d7d5c71 785 * @details It sets the FIFO enable/disable.
mcm 2:93928d7d5c71 786 *
mcm 2:93928d7d5c71 787 * @param[in] myFIFO_EN: FIFO enable/disable.
mcm 2:93928d7d5c71 788 *
mcm 2:93928d7d5c71 789 * @param[out] N/A.
mcm 2:93928d7d5c71 790 *
mcm 2:93928d7d5c71 791 *
mcm 2:93928d7d5c71 792 * @return Status of LPS25HB_SetFIFOEnable.
mcm 2:93928d7d5c71 793 *
mcm 2:93928d7d5c71 794 *
mcm 2:93928d7d5c71 795 * @author Manuel Caballero
mcm 2:93928d7d5c71 796 * @date 10/June/2019
mcm 2:93928d7d5c71 797 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 798 * @pre N/A.
mcm 2:93928d7d5c71 799 * @warning N/A.
mcm 2:93928d7d5c71 800 */
mcm 2:93928d7d5c71 801 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetFIFOEnable ( LPS25HB_data_t myFIFO_EN )
mcm 2:93928d7d5c71 802 {
mcm 2:93928d7d5c71 803 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 804 uint32_t aux;
mcm 2:93928d7d5c71 805
mcm 2:93928d7d5c71 806 /* Update the register */
mcm 2:93928d7d5c71 807 cmd[0] = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 808 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 809 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 810
mcm 2:93928d7d5c71 811 cmd[1] &= ~( CTRL_REG2_FIFO_EN_MASK );
mcm 2:93928d7d5c71 812 cmd[1] |= myFIFO_EN.fifo_en;
mcm 2:93928d7d5c71 813 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 814
mcm 2:93928d7d5c71 815
mcm 2:93928d7d5c71 816
mcm 2:93928d7d5c71 817 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 818 {
mcm 2:93928d7d5c71 819 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 820 }
mcm 2:93928d7d5c71 821 else
mcm 2:93928d7d5c71 822 {
mcm 2:93928d7d5c71 823 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 824 }
mcm 2:93928d7d5c71 825 }
mcm 2:93928d7d5c71 826
mcm 2:93928d7d5c71 827
mcm 2:93928d7d5c71 828
mcm 2:93928d7d5c71 829 /**
mcm 2:93928d7d5c71 830 * @brief LPS25HB_GetFIFOEnable ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 831 *
mcm 2:93928d7d5c71 832 * @details It gets the FIFO enable/disable.
mcm 2:93928d7d5c71 833 *
mcm 2:93928d7d5c71 834 * @param[in] N/A.
mcm 2:93928d7d5c71 835 *
mcm 2:93928d7d5c71 836 * @param[out] myFIFO_EN: FIFO enable/disable.
mcm 2:93928d7d5c71 837 *
mcm 2:93928d7d5c71 838 *
mcm 2:93928d7d5c71 839 * @return Status of LPS25HB_GetFIFOEnable.
mcm 2:93928d7d5c71 840 *
mcm 2:93928d7d5c71 841 *
mcm 2:93928d7d5c71 842 * @author Manuel Caballero
mcm 2:93928d7d5c71 843 * @date 10/June/2019
mcm 2:93928d7d5c71 844 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 845 * @pre N/A.
mcm 2:93928d7d5c71 846 * @warning N/A.
mcm 2:93928d7d5c71 847 */
mcm 2:93928d7d5c71 848 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetFIFOEnable ( LPS25HB_data_t* myFIFO_EN )
mcm 2:93928d7d5c71 849 {
mcm 2:93928d7d5c71 850 char cmd = 0U;
mcm 2:93928d7d5c71 851 uint32_t aux;
mcm 2:93928d7d5c71 852
mcm 2:93928d7d5c71 853 /* Read the register */
mcm 2:93928d7d5c71 854 cmd = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 855 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 856 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 857
mcm 2:93928d7d5c71 858 /* Parse the data */
mcm 2:93928d7d5c71 859 myFIFO_EN->fifo_en = (LPS25HB_ctrl_reg2_fifo_en_t)( CTRL_REG2_FIFO_EN_MASK & cmd );
mcm 2:93928d7d5c71 860
mcm 2:93928d7d5c71 861
mcm 2:93928d7d5c71 862
mcm 2:93928d7d5c71 863 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 864 {
mcm 2:93928d7d5c71 865 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 866 }
mcm 2:93928d7d5c71 867 else
mcm 2:93928d7d5c71 868 {
mcm 2:93928d7d5c71 869 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 870 }
mcm 2:93928d7d5c71 871 }
mcm 2:93928d7d5c71 872
mcm 2:93928d7d5c71 873
mcm 2:93928d7d5c71 874
mcm 2:93928d7d5c71 875 /**
mcm 2:93928d7d5c71 876 * @brief LPS25HB_SetFIFOMeanDec ( LPS25HB_ctrl_reg2_fifo_mean_dec_t )
mcm 2:93928d7d5c71 877 *
mcm 2:93928d7d5c71 878 * @details It enables/disables the decimate the output pressure to 1Hz with FIFO Mean mode.
mcm 2:93928d7d5c71 879 *
mcm 2:93928d7d5c71 880 * @param[in] myFIFO_MEAN_DEC: It enables/disables the decimate the output pressure to 1Hz with FIFO Mean mode.
mcm 2:93928d7d5c71 881 *
mcm 2:93928d7d5c71 882 * @param[out] N/A.
mcm 2:93928d7d5c71 883 *
mcm 2:93928d7d5c71 884 *
mcm 2:93928d7d5c71 885 * @return Status of LPS25HB_SetFIFOMeanDec.
mcm 2:93928d7d5c71 886 *
mcm 2:93928d7d5c71 887 *
mcm 2:93928d7d5c71 888 * @author Manuel Caballero
mcm 2:93928d7d5c71 889 * @date 10/June/2019
mcm 2:93928d7d5c71 890 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 891 * @pre N/A.
mcm 2:93928d7d5c71 892 * @warning N/A.
mcm 2:93928d7d5c71 893 */
mcm 2:93928d7d5c71 894 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetFIFOMeanDec ( LPS25HB_ctrl_reg2_fifo_mean_dec_t myFIFO_MEAN_DEC )
mcm 2:93928d7d5c71 895 {
mcm 2:93928d7d5c71 896 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 897 uint32_t aux;
mcm 2:93928d7d5c71 898
mcm 2:93928d7d5c71 899 /* Update the register */
mcm 2:93928d7d5c71 900 cmd[0] = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 901 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 902 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 903
mcm 2:93928d7d5c71 904 cmd[1] &= ~( CTRL_REG2_FIFO_MEAN_DEC_MASK );
mcm 2:93928d7d5c71 905 cmd[1] |= myFIFO_MEAN_DEC;
mcm 2:93928d7d5c71 906 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 907
mcm 2:93928d7d5c71 908
mcm 2:93928d7d5c71 909
mcm 2:93928d7d5c71 910 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 911 {
mcm 2:93928d7d5c71 912 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 913 }
mcm 2:93928d7d5c71 914 else
mcm 2:93928d7d5c71 915 {
mcm 2:93928d7d5c71 916 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 917 }
mcm 2:93928d7d5c71 918 }
mcm 2:93928d7d5c71 919
mcm 2:93928d7d5c71 920
mcm 2:93928d7d5c71 921
mcm 2:93928d7d5c71 922 /**
mcm 2:93928d7d5c71 923 * @brief LPS25HB_SetSoftwareReset ( void )
mcm 2:93928d7d5c71 924 *
mcm 2:93928d7d5c71 925 * @details It sets the software reset.
mcm 2:93928d7d5c71 926 *
mcm 2:93928d7d5c71 927 * @param[in] N/A.
mcm 2:93928d7d5c71 928 *
mcm 2:93928d7d5c71 929 * @param[out] N/A.
mcm 2:93928d7d5c71 930 *
mcm 2:93928d7d5c71 931 *
mcm 2:93928d7d5c71 932 * @return Status of LPS25HB_SetSoftwareReset.
mcm 2:93928d7d5c71 933 *
mcm 2:93928d7d5c71 934 *
mcm 2:93928d7d5c71 935 * @author Manuel Caballero
mcm 2:93928d7d5c71 936 * @date 10/June/2019
mcm 2:93928d7d5c71 937 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 938 * @pre N/A.
mcm 2:93928d7d5c71 939 * @warning N/A.
mcm 2:93928d7d5c71 940 */
mcm 2:93928d7d5c71 941 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetSoftwareReset ( void )
mcm 2:93928d7d5c71 942 {
mcm 2:93928d7d5c71 943 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 944 uint32_t aux;
mcm 2:93928d7d5c71 945
mcm 2:93928d7d5c71 946 /* Update the register */
mcm 2:93928d7d5c71 947 cmd[0] = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 948 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 949 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 950
mcm 2:93928d7d5c71 951 cmd[1] &= ~( CTRL_REG2_SWRESET_MASK );
mcm 2:93928d7d5c71 952 cmd[1] |= CTRL_REG2_SWRESET_SW_RESET;
mcm 2:93928d7d5c71 953 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 954
mcm 2:93928d7d5c71 955
mcm 2:93928d7d5c71 956
mcm 2:93928d7d5c71 957 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 958 {
mcm 2:93928d7d5c71 959 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 960 }
mcm 2:93928d7d5c71 961 else
mcm 2:93928d7d5c71 962 {
mcm 2:93928d7d5c71 963 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 964 }
mcm 2:93928d7d5c71 965 }
mcm 2:93928d7d5c71 966
mcm 2:93928d7d5c71 967
mcm 2:93928d7d5c71 968
mcm 2:93928d7d5c71 969 /**
mcm 2:93928d7d5c71 970 * @brief LPS25HB_GetSoftwareReset ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 971 *
mcm 2:93928d7d5c71 972 * @details It gets the software reset flag value.
mcm 2:93928d7d5c71 973 *
mcm 2:93928d7d5c71 974 * @param[in] N/A.
mcm 2:93928d7d5c71 975 *
mcm 2:93928d7d5c71 976 * @param[out] mySWRESET: Software reset flag value.
mcm 2:93928d7d5c71 977 *
mcm 2:93928d7d5c71 978 *
mcm 2:93928d7d5c71 979 * @return Status of LPS25HB_GetSoftwareReset.
mcm 2:93928d7d5c71 980 *
mcm 2:93928d7d5c71 981 *
mcm 2:93928d7d5c71 982 * @author Manuel Caballero
mcm 2:93928d7d5c71 983 * @date 10/June/2019
mcm 2:93928d7d5c71 984 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 985 * @pre N/A.
mcm 2:93928d7d5c71 986 * @warning N/A.
mcm 2:93928d7d5c71 987 */
mcm 2:93928d7d5c71 988 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetSoftwareReset ( LPS25HB_data_t* mySWRESET )
mcm 2:93928d7d5c71 989 {
mcm 2:93928d7d5c71 990 char cmd = 0U;
mcm 2:93928d7d5c71 991 uint32_t aux;
mcm 2:93928d7d5c71 992
mcm 2:93928d7d5c71 993 /* Read the register */
mcm 2:93928d7d5c71 994 cmd = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 995 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 996 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 997
mcm 2:93928d7d5c71 998 /* Parse the data */
mcm 2:93928d7d5c71 999 mySWRESET->swreset = (LPS25HB_ctrl_reg2_swreset_t)( CTRL_REG2_SWRESET_MASK & cmd );
mcm 2:93928d7d5c71 1000
mcm 2:93928d7d5c71 1001
mcm 2:93928d7d5c71 1002
mcm 2:93928d7d5c71 1003 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1004 {
mcm 2:93928d7d5c71 1005 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1006 }
mcm 2:93928d7d5c71 1007 else
mcm 2:93928d7d5c71 1008 {
mcm 2:93928d7d5c71 1009 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1010 }
mcm 2:93928d7d5c71 1011 }
mcm 2:93928d7d5c71 1012
mcm 2:93928d7d5c71 1013
mcm 2:93928d7d5c71 1014
mcm 2:93928d7d5c71 1015 /**
mcm 2:93928d7d5c71 1016 * @brief LPS25HB_SetAutozero ( LPS25HB_data_t )
mcm 2:93928d7d5c71 1017 *
mcm 2:93928d7d5c71 1018 * @details It sets the autozero enable.
mcm 2:93928d7d5c71 1019 *
mcm 2:93928d7d5c71 1020 * @param[in] myAUTOZERO: Enable/disable autozero.
mcm 2:93928d7d5c71 1021 *
mcm 2:93928d7d5c71 1022 * @param[out] N/A.
mcm 2:93928d7d5c71 1023 *
mcm 2:93928d7d5c71 1024 *
mcm 2:93928d7d5c71 1025 * @return Status of LPS25HB_SetAutozero.
mcm 2:93928d7d5c71 1026 *
mcm 2:93928d7d5c71 1027 *
mcm 2:93928d7d5c71 1028 * @author Manuel Caballero
mcm 2:93928d7d5c71 1029 * @date 10/June/2019
mcm 2:93928d7d5c71 1030 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1031 * @pre N/A.
mcm 2:93928d7d5c71 1032 * @warning N/A.
mcm 2:93928d7d5c71 1033 */
mcm 2:93928d7d5c71 1034 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetAutozero ( LPS25HB_data_t myAUTOZERO )
mcm 2:93928d7d5c71 1035 {
mcm 2:93928d7d5c71 1036 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1037 uint32_t aux;
mcm 2:93928d7d5c71 1038
mcm 2:93928d7d5c71 1039 /* Update the register */
mcm 2:93928d7d5c71 1040 cmd[0] = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 1041 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1042 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1043
mcm 2:93928d7d5c71 1044 cmd[1] &= ~( CTRL_REG2_AUTOZERO_MASK );
mcm 2:93928d7d5c71 1045 cmd[1] |= myAUTOZERO.autozero;
mcm 2:93928d7d5c71 1046 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1047
mcm 2:93928d7d5c71 1048
mcm 2:93928d7d5c71 1049
mcm 2:93928d7d5c71 1050 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1051 {
mcm 2:93928d7d5c71 1052 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1053 }
mcm 2:93928d7d5c71 1054 else
mcm 2:93928d7d5c71 1055 {
mcm 2:93928d7d5c71 1056 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1057 }
mcm 2:93928d7d5c71 1058 }
mcm 2:93928d7d5c71 1059
mcm 2:93928d7d5c71 1060
mcm 2:93928d7d5c71 1061
mcm 2:93928d7d5c71 1062 /**
mcm 2:93928d7d5c71 1063 * @brief LPS25HB_GetAutozero ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1064 *
mcm 2:93928d7d5c71 1065 * @details It gets the software reset flag value.
mcm 2:93928d7d5c71 1066 *
mcm 2:93928d7d5c71 1067 * @param[in] N/A.
mcm 2:93928d7d5c71 1068 *
mcm 2:93928d7d5c71 1069 * @param[out] myAUTOZERO: Autozero enable value.
mcm 2:93928d7d5c71 1070 *
mcm 2:93928d7d5c71 1071 *
mcm 2:93928d7d5c71 1072 * @return Status of LPS25HB_GetAutozero.
mcm 2:93928d7d5c71 1073 *
mcm 2:93928d7d5c71 1074 *
mcm 2:93928d7d5c71 1075 * @author Manuel Caballero
mcm 2:93928d7d5c71 1076 * @date 10/June/2019
mcm 2:93928d7d5c71 1077 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1078 * @pre N/A.
mcm 2:93928d7d5c71 1079 * @warning N/A.
mcm 2:93928d7d5c71 1080 */
mcm 2:93928d7d5c71 1081 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetAutozero ( LPS25HB_data_t* myAUTOZERO )
mcm 2:93928d7d5c71 1082 {
mcm 2:93928d7d5c71 1083 char cmd = 0U;
mcm 2:93928d7d5c71 1084 uint32_t aux;
mcm 2:93928d7d5c71 1085
mcm 2:93928d7d5c71 1086 /* Read the register */
mcm 2:93928d7d5c71 1087 cmd = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 1088 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1089 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1090
mcm 2:93928d7d5c71 1091 /* Parse the data */
mcm 2:93928d7d5c71 1092 myAUTOZERO->autozero = (LPS25HB_ctrl_reg2_autozero_t)( CTRL_REG2_AUTOZERO_MASK & cmd );
mcm 2:93928d7d5c71 1093
mcm 2:93928d7d5c71 1094
mcm 2:93928d7d5c71 1095
mcm 2:93928d7d5c71 1096 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1097 {
mcm 2:93928d7d5c71 1098 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1099 }
mcm 2:93928d7d5c71 1100 else
mcm 2:93928d7d5c71 1101 {
mcm 2:93928d7d5c71 1102 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1103 }
mcm 2:93928d7d5c71 1104 }
mcm 2:93928d7d5c71 1105
mcm 2:93928d7d5c71 1106
mcm 2:93928d7d5c71 1107
mcm 2:93928d7d5c71 1108 /**
mcm 2:93928d7d5c71 1109 * @brief LPS25HB_SetOneShot ( void )
mcm 2:93928d7d5c71 1110 *
mcm 2:93928d7d5c71 1111 * @details It sets the one-shot mode.
mcm 2:93928d7d5c71 1112 *
mcm 2:93928d7d5c71 1113 * @param[in] N/A.
mcm 2:93928d7d5c71 1114 *
mcm 2:93928d7d5c71 1115 * @param[out] N/A.
mcm 2:93928d7d5c71 1116 *
mcm 2:93928d7d5c71 1117 *
mcm 2:93928d7d5c71 1118 * @return Status of LPS25HB_SetOneShot.
mcm 2:93928d7d5c71 1119 *
mcm 2:93928d7d5c71 1120 *
mcm 2:93928d7d5c71 1121 * @author Manuel Caballero
mcm 2:93928d7d5c71 1122 * @date 10/June/2019
mcm 2:93928d7d5c71 1123 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1124 * @pre N/A.
mcm 2:93928d7d5c71 1125 * @warning N/A.
mcm 2:93928d7d5c71 1126 */
mcm 2:93928d7d5c71 1127 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetOneShot ( void )
mcm 2:93928d7d5c71 1128 {
mcm 2:93928d7d5c71 1129 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1130 uint32_t aux;
mcm 2:93928d7d5c71 1131
mcm 2:93928d7d5c71 1132 /* Update the register */
mcm 2:93928d7d5c71 1133 cmd[0] = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 1134 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1135 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1136
mcm 2:93928d7d5c71 1137 cmd[1] &= ~( CTRL_REG2_ONE_SHOT_MASK );
mcm 2:93928d7d5c71 1138 cmd[1] |= CTRL_REG2_ONE_SHOT_NEW_DATASET;
mcm 2:93928d7d5c71 1139 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1140
mcm 2:93928d7d5c71 1141
mcm 2:93928d7d5c71 1142
mcm 2:93928d7d5c71 1143 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1144 {
mcm 2:93928d7d5c71 1145 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1146 }
mcm 2:93928d7d5c71 1147 else
mcm 2:93928d7d5c71 1148 {
mcm 2:93928d7d5c71 1149 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1150 }
mcm 2:93928d7d5c71 1151 }
mcm 2:93928d7d5c71 1152
mcm 2:93928d7d5c71 1153
mcm 2:93928d7d5c71 1154
mcm 2:93928d7d5c71 1155 /**
mcm 2:93928d7d5c71 1156 * @brief LPS25HB_GetOneShot ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1157 *
mcm 2:93928d7d5c71 1158 * @details It gets the one-shot mode flag.
mcm 2:93928d7d5c71 1159 *
mcm 2:93928d7d5c71 1160 * @param[in] N/A.
mcm 2:93928d7d5c71 1161 *
mcm 2:93928d7d5c71 1162 * @param[out] myONE_SHOT: One-shot flag value.
mcm 2:93928d7d5c71 1163 *
mcm 2:93928d7d5c71 1164 *
mcm 2:93928d7d5c71 1165 * @return Status of LPS25HB_GetOneShot.
mcm 2:93928d7d5c71 1166 *
mcm 2:93928d7d5c71 1167 *
mcm 2:93928d7d5c71 1168 * @author Manuel Caballero
mcm 2:93928d7d5c71 1169 * @date 10/June/2019
mcm 2:93928d7d5c71 1170 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1171 * @pre N/A.
mcm 2:93928d7d5c71 1172 * @warning N/A.
mcm 2:93928d7d5c71 1173 */
mcm 2:93928d7d5c71 1174 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetOneShot ( LPS25HB_data_t* myONE_SHOT )
mcm 2:93928d7d5c71 1175 {
mcm 2:93928d7d5c71 1176 char cmd = 0U;
mcm 2:93928d7d5c71 1177 uint32_t aux;
mcm 2:93928d7d5c71 1178
mcm 2:93928d7d5c71 1179 /* Read the register */
mcm 2:93928d7d5c71 1180 cmd = LPS25HB_CTRL_REG2;
mcm 2:93928d7d5c71 1181 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1182 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1183
mcm 2:93928d7d5c71 1184 /* Parse the data */
mcm 2:93928d7d5c71 1185 myONE_SHOT->one_shot = (LPS25HB_ctrl_reg2_one_shot_t)( CTRL_REG2_ONE_SHOT_MASK & cmd );
mcm 2:93928d7d5c71 1186
mcm 2:93928d7d5c71 1187
mcm 2:93928d7d5c71 1188
mcm 2:93928d7d5c71 1189 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1190 {
mcm 2:93928d7d5c71 1191 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1192 }
mcm 2:93928d7d5c71 1193 else
mcm 2:93928d7d5c71 1194 {
mcm 2:93928d7d5c71 1195 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1196 }
mcm 2:93928d7d5c71 1197 }
mcm 2:93928d7d5c71 1198
mcm 2:93928d7d5c71 1199
mcm 2:93928d7d5c71 1200
mcm 2:93928d7d5c71 1201 /**
mcm 2:93928d7d5c71 1202 * @brief LPS25HB_SetInterruptActiveMode ( LPS25HB_ctrl_reg3_int_h_l_t )
mcm 2:93928d7d5c71 1203 *
mcm 2:93928d7d5c71 1204 * @details It sets the interrupt active mode.
mcm 2:93928d7d5c71 1205 *
mcm 2:93928d7d5c71 1206 * @param[in] myINT_H_L: Interrupt active high/low.
mcm 2:93928d7d5c71 1207 *
mcm 2:93928d7d5c71 1208 * @param[out] N/A.
mcm 2:93928d7d5c71 1209 *
mcm 2:93928d7d5c71 1210 *
mcm 2:93928d7d5c71 1211 * @return Status of LPS25HB_SetInterruptActiveMode.
mcm 2:93928d7d5c71 1212 *
mcm 2:93928d7d5c71 1213 *
mcm 2:93928d7d5c71 1214 * @author Manuel Caballero
mcm 2:93928d7d5c71 1215 * @date 10/June/2019
mcm 2:93928d7d5c71 1216 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1217 * @pre N/A.
mcm 2:93928d7d5c71 1218 * @warning N/A.
mcm 2:93928d7d5c71 1219 */
mcm 2:93928d7d5c71 1220 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetInterruptActiveMode ( LPS25HB_ctrl_reg3_int_h_l_t myINT_H_L )
mcm 2:93928d7d5c71 1221 {
mcm 2:93928d7d5c71 1222 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1223 uint32_t aux;
mcm 2:93928d7d5c71 1224
mcm 2:93928d7d5c71 1225 /* Update the register */
mcm 2:93928d7d5c71 1226 cmd[0] = LPS25HB_CTRL_REG3;
mcm 2:93928d7d5c71 1227 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1228 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1229
mcm 2:93928d7d5c71 1230 cmd[1] &= ~( CTRL_REG3_INT_H_L_MASK );
mcm 2:93928d7d5c71 1231 cmd[1] |= myINT_H_L;
mcm 2:93928d7d5c71 1232 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1233
mcm 2:93928d7d5c71 1234
mcm 2:93928d7d5c71 1235
mcm 2:93928d7d5c71 1236 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1237 {
mcm 2:93928d7d5c71 1238 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1239 }
mcm 2:93928d7d5c71 1240 else
mcm 2:93928d7d5c71 1241 {
mcm 2:93928d7d5c71 1242 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1243 }
mcm 2:93928d7d5c71 1244 }
mcm 2:93928d7d5c71 1245
mcm 2:93928d7d5c71 1246
mcm 2:93928d7d5c71 1247
mcm 2:93928d7d5c71 1248 /**
mcm 2:93928d7d5c71 1249 * @brief LPS25HB_SetDrainSelectionMode ( LPS25HB_ctrl_reg3_pp_od_t )
mcm 2:93928d7d5c71 1250 *
mcm 2:93928d7d5c71 1251 * @details It sets the Push-pull/open drain selection on interrupt pads.
mcm 2:93928d7d5c71 1252 *
mcm 2:93928d7d5c71 1253 * @param[in] myPP_OD: Push-pull/open drain
mcm 2:93928d7d5c71 1254 *
mcm 2:93928d7d5c71 1255 * @param[out] N/A.
mcm 2:93928d7d5c71 1256 *
mcm 2:93928d7d5c71 1257 *
mcm 2:93928d7d5c71 1258 * @return Status of LPS25HB_SetDrainSelectionMode.
mcm 2:93928d7d5c71 1259 *
mcm 2:93928d7d5c71 1260 *
mcm 2:93928d7d5c71 1261 * @author Manuel Caballero
mcm 2:93928d7d5c71 1262 * @date 10/June/2019
mcm 2:93928d7d5c71 1263 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1264 * @pre N/A.
mcm 2:93928d7d5c71 1265 * @warning N/A.
mcm 2:93928d7d5c71 1266 */
mcm 2:93928d7d5c71 1267 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetDrainSelectionMode ( LPS25HB_ctrl_reg3_pp_od_t myPP_OD )
mcm 2:93928d7d5c71 1268 {
mcm 2:93928d7d5c71 1269 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1270 uint32_t aux;
mcm 2:93928d7d5c71 1271
mcm 2:93928d7d5c71 1272 /* Update the register */
mcm 2:93928d7d5c71 1273 cmd[0] = LPS25HB_CTRL_REG3;
mcm 2:93928d7d5c71 1274 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1275 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1276
mcm 2:93928d7d5c71 1277 cmd[1] &= ~( CTRL_REG3_PP_OD_MASK );
mcm 2:93928d7d5c71 1278 cmd[1] |= myPP_OD;
mcm 2:93928d7d5c71 1279 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1280
mcm 2:93928d7d5c71 1281
mcm 2:93928d7d5c71 1282
mcm 2:93928d7d5c71 1283 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1284 {
mcm 2:93928d7d5c71 1285 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1286 }
mcm 2:93928d7d5c71 1287 else
mcm 2:93928d7d5c71 1288 {
mcm 2:93928d7d5c71 1289 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1290 }
mcm 2:93928d7d5c71 1291 }
mcm 2:93928d7d5c71 1292
mcm 2:93928d7d5c71 1293
mcm 2:93928d7d5c71 1294
mcm 2:93928d7d5c71 1295 /**
mcm 2:93928d7d5c71 1296 * @brief LPS25HB_SetDataSignalOnPin ( LPS25HB_ctrl_reg3_int_s2_t )
mcm 2:93928d7d5c71 1297 *
mcm 2:93928d7d5c71 1298 * @details It sets the Data signal on INT_DRDY pin control bits.
mcm 2:93928d7d5c71 1299 *
mcm 2:93928d7d5c71 1300 * @param[in] myINT_S: Data signal on INT_DRDY pin control bits
mcm 2:93928d7d5c71 1301 *
mcm 2:93928d7d5c71 1302 * @param[out] N/A.
mcm 2:93928d7d5c71 1303 *
mcm 2:93928d7d5c71 1304 *
mcm 2:93928d7d5c71 1305 * @return Status of LPS25HB_SetDataSignalOnPin.
mcm 2:93928d7d5c71 1306 *
mcm 2:93928d7d5c71 1307 *
mcm 2:93928d7d5c71 1308 * @author Manuel Caballero
mcm 2:93928d7d5c71 1309 * @date 10/June/2019
mcm 2:93928d7d5c71 1310 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1311 * @pre N/A.
mcm 2:93928d7d5c71 1312 * @warning N/A.
mcm 2:93928d7d5c71 1313 */
mcm 2:93928d7d5c71 1314 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetDataSignalOnPin ( LPS25HB_ctrl_reg3_int_s2_t myINT_S )
mcm 2:93928d7d5c71 1315 {
mcm 2:93928d7d5c71 1316 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1317 uint32_t aux;
mcm 2:93928d7d5c71 1318
mcm 2:93928d7d5c71 1319 /* Update the register */
mcm 2:93928d7d5c71 1320 cmd[0] = LPS25HB_CTRL_REG3;
mcm 2:93928d7d5c71 1321 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1322 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1323
mcm 2:93928d7d5c71 1324 cmd[1] &= ~( CTRL_REG3_INT_S2_MASK );
mcm 2:93928d7d5c71 1325 cmd[1] |= myINT_S;
mcm 2:93928d7d5c71 1326 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1327
mcm 2:93928d7d5c71 1328
mcm 2:93928d7d5c71 1329
mcm 2:93928d7d5c71 1330 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1331 {
mcm 2:93928d7d5c71 1332 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1333 }
mcm 2:93928d7d5c71 1334 else
mcm 2:93928d7d5c71 1335 {
mcm 2:93928d7d5c71 1336 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1337 }
mcm 2:93928d7d5c71 1338 }
mcm 2:93928d7d5c71 1339
mcm 2:93928d7d5c71 1340
mcm 2:93928d7d5c71 1341
mcm 2:93928d7d5c71 1342 /**
mcm 2:93928d7d5c71 1343 * @brief LPS25HB_SetINT_DRDY_Behaviour ( LPS25HB_data_t )
mcm 2:93928d7d5c71 1344 *
mcm 2:93928d7d5c71 1345 * @details It sets the INT_DRDY behaviour.
mcm 2:93928d7d5c71 1346 *
mcm 2:93928d7d5c71 1347 * @param[in] myIntConfig: Interrupt configuration parameters.
mcm 2:93928d7d5c71 1348 *
mcm 2:93928d7d5c71 1349 * @param[out] N/A.
mcm 2:93928d7d5c71 1350 *
mcm 2:93928d7d5c71 1351 *
mcm 2:93928d7d5c71 1352 * @return Status of LPS25HB_SetINT_DRDY_Behaviour.
mcm 2:93928d7d5c71 1353 *
mcm 2:93928d7d5c71 1354 *
mcm 2:93928d7d5c71 1355 * @author Manuel Caballero
mcm 2:93928d7d5c71 1356 * @date 10/June/2019
mcm 2:93928d7d5c71 1357 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1358 * @pre N/A.
mcm 2:93928d7d5c71 1359 * @warning N/A.
mcm 2:93928d7d5c71 1360 */
mcm 2:93928d7d5c71 1361 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetINT_DRDY_Behaviour ( LPS25HB_data_t myIntConfig )
mcm 2:93928d7d5c71 1362 {
mcm 2:93928d7d5c71 1363 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1364 uint32_t aux;
mcm 2:93928d7d5c71 1365
mcm 2:93928d7d5c71 1366 /* Update the register */
mcm 2:93928d7d5c71 1367 cmd[0] = LPS25HB_CTRL_REG4;
mcm 2:93928d7d5c71 1368 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1369 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1370
mcm 2:93928d7d5c71 1371 cmd[1] &= ~( CTRL_REG4_F_EMPTY_MASK | CTRL_REG4_F_FTH_MASK | CTRL_REG4_F_OVR_MASK | CTRL_REG4_DRDY_MASK );
mcm 2:93928d7d5c71 1372 cmd[1] |= ( myIntConfig.f_empty | myIntConfig.f_fth | myIntConfig.f_ovr | myIntConfig.drdy );
mcm 2:93928d7d5c71 1373 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1374
mcm 2:93928d7d5c71 1375
mcm 2:93928d7d5c71 1376
mcm 2:93928d7d5c71 1377 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1378 {
mcm 2:93928d7d5c71 1379 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1380 }
mcm 2:93928d7d5c71 1381 else
mcm 2:93928d7d5c71 1382 {
mcm 2:93928d7d5c71 1383 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1384 }
mcm 2:93928d7d5c71 1385 }
mcm 2:93928d7d5c71 1386
mcm 2:93928d7d5c71 1387
mcm 2:93928d7d5c71 1388
mcm 2:93928d7d5c71 1389 /**
mcm 2:93928d7d5c71 1390 * @brief LPS25HB_GetINT_DRDY_Behaviour ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1391 *
mcm 2:93928d7d5c71 1392 * @details It gets INT_DRDY behaviour.
mcm 2:93928d7d5c71 1393 *
mcm 2:93928d7d5c71 1394 * @param[in] N/A
mcm 2:93928d7d5c71 1395 *
mcm 2:93928d7d5c71 1396 * @param[out] myIntConfig: Interrupt configuration parameters.
mcm 2:93928d7d5c71 1397 *
mcm 2:93928d7d5c71 1398 *
mcm 2:93928d7d5c71 1399 * @return Status of LPS25HB_GetINT_DRDY_Behaviour.
mcm 2:93928d7d5c71 1400 *
mcm 2:93928d7d5c71 1401 *
mcm 2:93928d7d5c71 1402 * @author Manuel Caballero
mcm 2:93928d7d5c71 1403 * @date 10/June/2019
mcm 2:93928d7d5c71 1404 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1405 * @pre N/A.
mcm 2:93928d7d5c71 1406 * @warning N/A.
mcm 2:93928d7d5c71 1407 */
mcm 2:93928d7d5c71 1408 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetINT_DRDY_Behaviour ( LPS25HB_data_t* myIntConfig )
mcm 2:93928d7d5c71 1409 {
mcm 2:93928d7d5c71 1410 char cmd = 0U;
mcm 2:93928d7d5c71 1411 uint32_t aux;
mcm 2:93928d7d5c71 1412
mcm 2:93928d7d5c71 1413 /* Read the register */
mcm 2:93928d7d5c71 1414 cmd = LPS25HB_CTRL_REG4;
mcm 2:93928d7d5c71 1415 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1416 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1417
mcm 2:93928d7d5c71 1418 /* Parse the data */
mcm 2:93928d7d5c71 1419 myIntConfig->f_empty = (LPS25HB_ctrl_reg4_f_empty_t)( CTRL_REG4_F_EMPTY_MASK & cmd );
mcm 2:93928d7d5c71 1420 myIntConfig->f_fth = (LPS25HB_ctrl_reg4_f_fth_t)( CTRL_REG4_F_FTH_MASK & cmd );
mcm 2:93928d7d5c71 1421 myIntConfig->f_ovr = (LPS25HB_ctrl_reg4_f_ovr_t)( CTRL_REG4_F_OVR_MASK & cmd );
mcm 2:93928d7d5c71 1422 myIntConfig->drdy = (LPS25HB_ctrl_reg4_drdy_t)( CTRL_REG4_DRDY_MASK & cmd );
mcm 2:93928d7d5c71 1423
mcm 2:93928d7d5c71 1424
mcm 2:93928d7d5c71 1425
mcm 2:93928d7d5c71 1426 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1427 {
mcm 2:93928d7d5c71 1428 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1429 }
mcm 2:93928d7d5c71 1430 else
mcm 2:93928d7d5c71 1431 {
mcm 2:93928d7d5c71 1432 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1433 }
mcm 2:93928d7d5c71 1434 }
mcm 2:93928d7d5c71 1435
mcm 2:93928d7d5c71 1436
mcm 2:93928d7d5c71 1437
mcm 2:93928d7d5c71 1438 /**
mcm 2:93928d7d5c71 1439 * @brief LPS25HB_SetInterruptConfiguration ( LPS25HB_data_t )
mcm 2:93928d7d5c71 1440 *
mcm 2:93928d7d5c71 1441 * @details It sets the interrupt configuration parameters.
mcm 2:93928d7d5c71 1442 *
mcm 2:93928d7d5c71 1443 * @param[in] myIntConfig: Interrupt configuration parameters.
mcm 2:93928d7d5c71 1444 *
mcm 2:93928d7d5c71 1445 * @param[out] N/A.
mcm 2:93928d7d5c71 1446 *
mcm 2:93928d7d5c71 1447 *
mcm 2:93928d7d5c71 1448 * @return Status of LPS25HB_SetInterruptConfiguration.
mcm 2:93928d7d5c71 1449 *
mcm 2:93928d7d5c71 1450 *
mcm 2:93928d7d5c71 1451 * @author Manuel Caballero
mcm 2:93928d7d5c71 1452 * @date 10/June/2019
mcm 2:93928d7d5c71 1453 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1454 * @pre N/A.
mcm 2:93928d7d5c71 1455 * @warning N/A.
mcm 2:93928d7d5c71 1456 */
mcm 2:93928d7d5c71 1457 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetInterruptConfiguration ( LPS25HB_data_t myIntConfig )
mcm 2:93928d7d5c71 1458 {
mcm 2:93928d7d5c71 1459 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1460 uint32_t aux;
mcm 2:93928d7d5c71 1461
mcm 2:93928d7d5c71 1462 /* Update the register */
mcm 2:93928d7d5c71 1463 cmd[0] = LPS25HB_INTERRUPT_CFG;
mcm 2:93928d7d5c71 1464 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1465 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1466
mcm 2:93928d7d5c71 1467 cmd[1] &= ~( INTERRUPT_CFG_LIR_MASK | INTERRUPT_CFG_PL_E_MASK | INTERRUPT_CFG_PH_E_MASK );
mcm 2:93928d7d5c71 1468 cmd[1] |= ( myIntConfig.lir | myIntConfig.pl_e | myIntConfig.ph_e );
mcm 2:93928d7d5c71 1469 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1470
mcm 2:93928d7d5c71 1471
mcm 2:93928d7d5c71 1472
mcm 2:93928d7d5c71 1473 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1474 {
mcm 2:93928d7d5c71 1475 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1476 }
mcm 2:93928d7d5c71 1477 else
mcm 2:93928d7d5c71 1478 {
mcm 2:93928d7d5c71 1479 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1480 }
mcm 2:93928d7d5c71 1481 }
mcm 2:93928d7d5c71 1482
mcm 2:93928d7d5c71 1483
mcm 2:93928d7d5c71 1484
mcm 2:93928d7d5c71 1485 /**
mcm 2:93928d7d5c71 1486 * @brief LPS25HB_GetInterruptConfiguration ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1487 *
mcm 2:93928d7d5c71 1488 * @details It gets interrupt configuration parameters.
mcm 2:93928d7d5c71 1489 *
mcm 2:93928d7d5c71 1490 * @param[in] N/A
mcm 2:93928d7d5c71 1491 *
mcm 2:93928d7d5c71 1492 * @param[out] myIntConfig: Interrupt configuration parameters.
mcm 2:93928d7d5c71 1493 *
mcm 2:93928d7d5c71 1494 *
mcm 2:93928d7d5c71 1495 * @return Status of LPS25HB_GetInterruptConfiguration.
mcm 2:93928d7d5c71 1496 *
mcm 2:93928d7d5c71 1497 *
mcm 2:93928d7d5c71 1498 * @author Manuel Caballero
mcm 2:93928d7d5c71 1499 * @date 10/June/2019
mcm 2:93928d7d5c71 1500 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1501 * @pre N/A.
mcm 2:93928d7d5c71 1502 * @warning N/A.
mcm 2:93928d7d5c71 1503 */
mcm 2:93928d7d5c71 1504 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetInterruptConfiguration ( LPS25HB_data_t* myIntConfig )
mcm 2:93928d7d5c71 1505 {
mcm 2:93928d7d5c71 1506 char cmd = 0U;
mcm 2:93928d7d5c71 1507 uint32_t aux;
mcm 2:93928d7d5c71 1508
mcm 2:93928d7d5c71 1509 /* Read the register */
mcm 2:93928d7d5c71 1510 cmd = LPS25HB_INTERRUPT_CFG;
mcm 2:93928d7d5c71 1511 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1512 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1513
mcm 2:93928d7d5c71 1514 /* Parse the data */
mcm 2:93928d7d5c71 1515 myIntConfig->lir = (LPS25HB_interrupt_cfg_lir_t)( INTERRUPT_CFG_LIR_MASK & cmd );
mcm 2:93928d7d5c71 1516 myIntConfig->pl_e = (LPS25HB_interrupt_cfg_pl_e_t)( INTERRUPT_CFG_PL_E_MASK & cmd );
mcm 2:93928d7d5c71 1517 myIntConfig->ph_e = (LPS25HB_interrupt_cfg_ph_e_t)( INTERRUPT_CFG_PH_E_MASK & cmd );
mcm 2:93928d7d5c71 1518
mcm 2:93928d7d5c71 1519
mcm 2:93928d7d5c71 1520
mcm 2:93928d7d5c71 1521 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1522 {
mcm 2:93928d7d5c71 1523 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1524 }
mcm 2:93928d7d5c71 1525 else
mcm 2:93928d7d5c71 1526 {
mcm 2:93928d7d5c71 1527 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1528 }
mcm 2:93928d7d5c71 1529 }
mcm 2:93928d7d5c71 1530
mcm 2:93928d7d5c71 1531
mcm 2:93928d7d5c71 1532
mcm 2:93928d7d5c71 1533 /**
mcm 2:93928d7d5c71 1534 * @brief LPS25HB_GetInterruptSource ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1535 *
mcm 2:93928d7d5c71 1536 * @details It reads the interrupt source register.
mcm 2:93928d7d5c71 1537 *
mcm 2:93928d7d5c71 1538 * @param[in] N/A.
mcm 2:93928d7d5c71 1539 *
mcm 2:93928d7d5c71 1540 * @param[out] myIntSource: Interrupt source.
mcm 2:93928d7d5c71 1541 *
mcm 2:93928d7d5c71 1542 *
mcm 2:93928d7d5c71 1543 * @return Status of LPS25HB_GetInterruptSource.
mcm 2:93928d7d5c71 1544 *
mcm 2:93928d7d5c71 1545 *
mcm 2:93928d7d5c71 1546 * @author Manuel Caballero
mcm 2:93928d7d5c71 1547 * @date 10/June/2019
mcm 2:93928d7d5c71 1548 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1549 * @pre N/A.
mcm 2:93928d7d5c71 1550 * @warning N/A.
mcm 2:93928d7d5c71 1551 */
mcm 2:93928d7d5c71 1552 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetInterruptSource ( LPS25HB_data_t* myIntSource )
mcm 2:93928d7d5c71 1553 {
mcm 2:93928d7d5c71 1554 char cmd = 0U;
mcm 2:93928d7d5c71 1555 uint32_t aux;
mcm 2:93928d7d5c71 1556
mcm 2:93928d7d5c71 1557 /* Read the register */
mcm 2:93928d7d5c71 1558 cmd = LPS25HB_INT_SOURCE;
mcm 2:93928d7d5c71 1559 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1560 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1561
mcm 2:93928d7d5c71 1562 /* Parse the data */
mcm 2:93928d7d5c71 1563 myIntSource->int_source = (char)( 0b00000111 & cmd );
mcm 2:93928d7d5c71 1564
mcm 2:93928d7d5c71 1565
mcm 2:93928d7d5c71 1566
mcm 2:93928d7d5c71 1567 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1568 {
mcm 2:93928d7d5c71 1569 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1570 }
mcm 2:93928d7d5c71 1571 else
mcm 2:93928d7d5c71 1572 {
mcm 2:93928d7d5c71 1573 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1574 }
mcm 2:93928d7d5c71 1575 }
mcm 2:93928d7d5c71 1576
mcm 2:93928d7d5c71 1577
mcm 2:93928d7d5c71 1578
mcm 2:93928d7d5c71 1579 /**
mcm 2:93928d7d5c71 1580 * @brief LPS25HB_GetStatusRegister ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1581 *
mcm 2:93928d7d5c71 1582 * @details It reads the status register.
mcm 2:93928d7d5c71 1583 *
mcm 2:93928d7d5c71 1584 * @param[in] N/A.
mcm 2:93928d7d5c71 1585 *
mcm 2:93928d7d5c71 1586 * @param[out] myStatusRegister: Status register.
mcm 2:93928d7d5c71 1587 *
mcm 2:93928d7d5c71 1588 *
mcm 2:93928d7d5c71 1589 * @return Status of LPS25HB_GetStatusRegister.
mcm 2:93928d7d5c71 1590 *
mcm 2:93928d7d5c71 1591 *
mcm 2:93928d7d5c71 1592 * @author Manuel Caballero
mcm 2:93928d7d5c71 1593 * @date 10/June/2019
mcm 2:93928d7d5c71 1594 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1595 * @pre N/A.
mcm 2:93928d7d5c71 1596 * @warning N/A.
mcm 2:93928d7d5c71 1597 */
mcm 2:93928d7d5c71 1598 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetStatusRegister ( LPS25HB_data_t* myStatusRegister )
mcm 2:93928d7d5c71 1599 {
mcm 2:93928d7d5c71 1600 char cmd = 0U;
mcm 2:93928d7d5c71 1601 uint32_t aux;
mcm 2:93928d7d5c71 1602
mcm 2:93928d7d5c71 1603 /* Read the register */
mcm 2:93928d7d5c71 1604 cmd = LPS25HB_STATUS_REG;
mcm 2:93928d7d5c71 1605 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1606 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1607
mcm 2:93928d7d5c71 1608 /* Parse the data */
mcm 2:93928d7d5c71 1609 myStatusRegister->status_reg = (char)( 0b11110011 & cmd );
mcm 2:93928d7d5c71 1610
mcm 2:93928d7d5c71 1611
mcm 2:93928d7d5c71 1612
mcm 2:93928d7d5c71 1613 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1614 {
mcm 2:93928d7d5c71 1615 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1616 }
mcm 2:93928d7d5c71 1617 else
mcm 2:93928d7d5c71 1618 {
mcm 2:93928d7d5c71 1619 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1620 }
mcm 2:93928d7d5c71 1621 }
mcm 2:93928d7d5c71 1622
mcm 2:93928d7d5c71 1623
mcm 2:93928d7d5c71 1624
mcm 2:93928d7d5c71 1625 /**
mcm 2:93928d7d5c71 1626 * @brief LPS25HB_GetRawPressure ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1627 *
mcm 2:93928d7d5c71 1628 * @details It gets the raw pressure.
mcm 2:93928d7d5c71 1629 *
mcm 2:93928d7d5c71 1630 * @param[in] N/A.
mcm 2:93928d7d5c71 1631 *
mcm 2:93928d7d5c71 1632 * @param[out] myRawPressure: Raw pressure.
mcm 2:93928d7d5c71 1633 *
mcm 2:93928d7d5c71 1634 *
mcm 2:93928d7d5c71 1635 * @return Status of LPS25HB_GetRawPressure.
mcm 2:93928d7d5c71 1636 *
mcm 2:93928d7d5c71 1637 *
mcm 2:93928d7d5c71 1638 * @author Manuel Caballero
mcm 2:93928d7d5c71 1639 * @date 10/June/2019
mcm 2:93928d7d5c71 1640 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1641 * @pre This function uses auto-increment.
mcm 2:93928d7d5c71 1642 * @warning N/A.
mcm 2:93928d7d5c71 1643 */
mcm 2:93928d7d5c71 1644 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetRawPressure ( LPS25HB_data_t* myRawPressure )
mcm 2:93928d7d5c71 1645 {
mcm 2:93928d7d5c71 1646 char cmd[3] = { 0U };
mcm 2:93928d7d5c71 1647 uint32_t aux;
mcm 2:93928d7d5c71 1648
mcm 2:93928d7d5c71 1649 /* Read the register */
mcm 2:93928d7d5c71 1650 cmd[0] = ( LPS25HB_PRESS_OUT_XL | 0x80 ); // Force auto-increment
mcm 2:93928d7d5c71 1651 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1652 aux = _i2c.read ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:93928d7d5c71 1653
mcm 2:93928d7d5c71 1654 /* Parse the data */
mcm 2:93928d7d5c71 1655 myRawPressure->rawPressure = cmd[2];
mcm 2:93928d7d5c71 1656 myRawPressure->rawPressure <<= 8UL;
mcm 2:93928d7d5c71 1657 myRawPressure->rawPressure |= cmd[1];
mcm 2:93928d7d5c71 1658 myRawPressure->rawPressure <<= 8UL;
mcm 2:93928d7d5c71 1659 myRawPressure->rawPressure |= cmd[0];
mcm 2:93928d7d5c71 1660
mcm 2:93928d7d5c71 1661
mcm 2:93928d7d5c71 1662
mcm 2:93928d7d5c71 1663 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1664 {
mcm 2:93928d7d5c71 1665 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1666 }
mcm 2:93928d7d5c71 1667 else
mcm 2:93928d7d5c71 1668 {
mcm 2:93928d7d5c71 1669 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1670 }
mcm 2:93928d7d5c71 1671 }
mcm 2:93928d7d5c71 1672
mcm 2:93928d7d5c71 1673
mcm 2:93928d7d5c71 1674
mcm 2:93928d7d5c71 1675 /**
mcm 2:93928d7d5c71 1676 * @brief LPS25HB_GetRawTemperature ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1677 *
mcm 2:93928d7d5c71 1678 * @details It gets the raw temperature.
mcm 2:93928d7d5c71 1679 *
mcm 2:93928d7d5c71 1680 * @param[in] N/A.
mcm 2:93928d7d5c71 1681 *
mcm 2:93928d7d5c71 1682 * @param[out] myRawTemperature: Raw temperature.
mcm 2:93928d7d5c71 1683 *
mcm 2:93928d7d5c71 1684 *
mcm 2:93928d7d5c71 1685 * @return Status of LPS25HB_GetRawTemperature.
mcm 2:93928d7d5c71 1686 *
mcm 2:93928d7d5c71 1687 *
mcm 2:93928d7d5c71 1688 * @author Manuel Caballero
mcm 2:93928d7d5c71 1689 * @date 10/June/2019
mcm 2:93928d7d5c71 1690 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1691 * @pre This function uses auto-increment.
mcm 2:93928d7d5c71 1692 * @warning N/A.
mcm 2:93928d7d5c71 1693 */
mcm 2:93928d7d5c71 1694 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetRawTemperature ( LPS25HB_data_t* myRawTemperature )
mcm 2:93928d7d5c71 1695 {
mcm 2:93928d7d5c71 1696 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1697 uint32_t aux;
mcm 2:93928d7d5c71 1698
mcm 2:93928d7d5c71 1699 /* Read the register */
mcm 2:93928d7d5c71 1700 cmd[0] = ( LPS25HB_TEMP_OUT_L | 0x80 ); // Force auto-increment
mcm 2:93928d7d5c71 1701 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1702 aux = _i2c.read ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:93928d7d5c71 1703
mcm 2:93928d7d5c71 1704 /* Parse the data */
mcm 2:93928d7d5c71 1705 myRawTemperature->rawTemperature = cmd[1];
mcm 2:93928d7d5c71 1706 myRawTemperature->rawTemperature <<= 8UL;
mcm 2:93928d7d5c71 1707 myRawTemperature->rawTemperature |= cmd[0];
mcm 2:93928d7d5c71 1708
mcm 2:93928d7d5c71 1709
mcm 2:93928d7d5c71 1710
mcm 2:93928d7d5c71 1711 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1712 {
mcm 2:93928d7d5c71 1713 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1714 }
mcm 2:93928d7d5c71 1715 else
mcm 2:93928d7d5c71 1716 {
mcm 2:93928d7d5c71 1717 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1718 }
mcm 2:93928d7d5c71 1719 }
mcm 2:93928d7d5c71 1720
mcm 2:93928d7d5c71 1721
mcm 2:93928d7d5c71 1722
mcm 2:93928d7d5c71 1723 /**
mcm 2:93928d7d5c71 1724 * @brief LPS25HB_SetFIFO_Mode ( LPS25HB_data_t )
mcm 2:93928d7d5c71 1725 *
mcm 2:93928d7d5c71 1726 * @details It sets the FIFO mode selection.
mcm 2:93928d7d5c71 1727 *
mcm 2:93928d7d5c71 1728 * @param[in] myFIFOmode: FIFO mode selection.
mcm 2:93928d7d5c71 1729 *
mcm 2:93928d7d5c71 1730 * @param[out] N/A.
mcm 2:93928d7d5c71 1731 *
mcm 2:93928d7d5c71 1732 *
mcm 2:93928d7d5c71 1733 * @return Status of LPS25HB_SetFIFO_Mode.
mcm 2:93928d7d5c71 1734 *
mcm 2:93928d7d5c71 1735 *
mcm 2:93928d7d5c71 1736 * @author Manuel Caballero
mcm 2:93928d7d5c71 1737 * @date 10/June/2019
mcm 2:93928d7d5c71 1738 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1739 * @pre N/A.
mcm 2:93928d7d5c71 1740 * @warning N/A.
mcm 2:93928d7d5c71 1741 */
mcm 2:93928d7d5c71 1742 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetFIFO_Mode ( LPS25HB_data_t myFIFOmode )
mcm 2:93928d7d5c71 1743 {
mcm 2:93928d7d5c71 1744 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1745 uint32_t aux;
mcm 2:93928d7d5c71 1746
mcm 2:93928d7d5c71 1747 /* Update the register */
mcm 2:93928d7d5c71 1748 cmd[0] = LPS25HB_FIFO_CTRL;
mcm 2:93928d7d5c71 1749 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1750 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1751
mcm 2:93928d7d5c71 1752 cmd[1] &= ~( FIFO_CTRL_F_MODE_MASK );
mcm 2:93928d7d5c71 1753 cmd[1] |= myFIFOmode.f_mode;
mcm 2:93928d7d5c71 1754 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1755
mcm 2:93928d7d5c71 1756
mcm 2:93928d7d5c71 1757
mcm 2:93928d7d5c71 1758 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1759 {
mcm 2:93928d7d5c71 1760 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1761 }
mcm 2:93928d7d5c71 1762 else
mcm 2:93928d7d5c71 1763 {
mcm 2:93928d7d5c71 1764 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1765 }
mcm 2:93928d7d5c71 1766 }
mcm 2:93928d7d5c71 1767
mcm 2:93928d7d5c71 1768
mcm 2:93928d7d5c71 1769
mcm 2:93928d7d5c71 1770 /**
mcm 2:93928d7d5c71 1771 * @brief LPS25HB_GetFIFO_Mode ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1772 *
mcm 2:93928d7d5c71 1773 * @details It gets the FIFO mode selection.
mcm 2:93928d7d5c71 1774 *
mcm 2:93928d7d5c71 1775 * @param[in] N/A.
mcm 2:93928d7d5c71 1776 *
mcm 2:93928d7d5c71 1777 * @param[out] myFIFOmode: FIFO mode selection.
mcm 2:93928d7d5c71 1778 *
mcm 2:93928d7d5c71 1779 *
mcm 2:93928d7d5c71 1780 * @return Status of LPS25HB_GetFIFO_Mode.
mcm 2:93928d7d5c71 1781 *
mcm 2:93928d7d5c71 1782 *
mcm 2:93928d7d5c71 1783 * @author Manuel Caballero
mcm 2:93928d7d5c71 1784 * @date 10/June/2019
mcm 2:93928d7d5c71 1785 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1786 * @pre N/A.
mcm 2:93928d7d5c71 1787 * @warning N/A.
mcm 2:93928d7d5c71 1788 */
mcm 2:93928d7d5c71 1789 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetFIFO_Mode ( LPS25HB_data_t* myFIFOmode )
mcm 2:93928d7d5c71 1790 {
mcm 2:93928d7d5c71 1791 char cmd = 0U;
mcm 2:93928d7d5c71 1792 uint32_t aux;
mcm 2:93928d7d5c71 1793
mcm 2:93928d7d5c71 1794 /* Read the register */
mcm 2:93928d7d5c71 1795 cmd = LPS25HB_FIFO_CTRL;
mcm 2:93928d7d5c71 1796 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1797 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1798
mcm 2:93928d7d5c71 1799 /* Parse the data */
mcm 2:93928d7d5c71 1800 myFIFOmode->f_mode = (LPS25HB_fifo_ctrl_f_mode_t)( FIFO_CTRL_F_MODE_MASK & cmd );
mcm 2:93928d7d5c71 1801
mcm 2:93928d7d5c71 1802
mcm 2:93928d7d5c71 1803
mcm 2:93928d7d5c71 1804 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1805 {
mcm 2:93928d7d5c71 1806 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1807 }
mcm 2:93928d7d5c71 1808 else
mcm 2:93928d7d5c71 1809 {
mcm 2:93928d7d5c71 1810 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1811 }
mcm 2:93928d7d5c71 1812 }
mcm 2:93928d7d5c71 1813
mcm 2:93928d7d5c71 1814
mcm 2:93928d7d5c71 1815
mcm 2:93928d7d5c71 1816 /**
mcm 2:93928d7d5c71 1817 * @brief LPS25HB_SetFIFO_Threshold ( LPS25HB_data_t )
mcm 2:93928d7d5c71 1818 *
mcm 2:93928d7d5c71 1819 * @details It sets the FIFO threshold (watermark) level selection.
mcm 2:93928d7d5c71 1820 *
mcm 2:93928d7d5c71 1821 * @param[in] myFIFOthreshold: FIFO threshold (watermark) level selection.
mcm 2:93928d7d5c71 1822 *
mcm 2:93928d7d5c71 1823 * @param[out] N/A.
mcm 2:93928d7d5c71 1824 *
mcm 2:93928d7d5c71 1825 *
mcm 2:93928d7d5c71 1826 * @return Status of LPS25HB_SetFIFO_Threshold.
mcm 2:93928d7d5c71 1827 *
mcm 2:93928d7d5c71 1828 *
mcm 2:93928d7d5c71 1829 * @author Manuel Caballero
mcm 2:93928d7d5c71 1830 * @date 10/June/2019
mcm 2:93928d7d5c71 1831 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1832 * @pre N/A.
mcm 2:93928d7d5c71 1833 * @warning N/A.
mcm 2:93928d7d5c71 1834 */
mcm 2:93928d7d5c71 1835 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetFIFO_Threshold ( LPS25HB_data_t myFIFOthreshold )
mcm 2:93928d7d5c71 1836 {
mcm 2:93928d7d5c71 1837 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1838 uint32_t aux;
mcm 2:93928d7d5c71 1839
mcm 2:93928d7d5c71 1840 /* Update the register */
mcm 2:93928d7d5c71 1841 cmd[0] = LPS25HB_FIFO_CTRL;
mcm 2:93928d7d5c71 1842 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1843 aux = _i2c.read ( _LPS25HB_Addr, &cmd[1], 1U );
mcm 2:93928d7d5c71 1844
mcm 2:93928d7d5c71 1845 cmd[1] &= ~( FIFO_CTRL_WTM_POINT_MASK );
mcm 2:93928d7d5c71 1846 cmd[1] |= myFIFOthreshold.wtm_point;
mcm 2:93928d7d5c71 1847 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 1848
mcm 2:93928d7d5c71 1849
mcm 2:93928d7d5c71 1850
mcm 2:93928d7d5c71 1851 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1852 {
mcm 2:93928d7d5c71 1853 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1854 }
mcm 2:93928d7d5c71 1855 else
mcm 2:93928d7d5c71 1856 {
mcm 2:93928d7d5c71 1857 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1858 }
mcm 2:93928d7d5c71 1859 }
mcm 2:93928d7d5c71 1860
mcm 2:93928d7d5c71 1861
mcm 2:93928d7d5c71 1862
mcm 2:93928d7d5c71 1863 /**
mcm 2:93928d7d5c71 1864 * @brief LPS25HB_GetFIFO_Threshold ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1865 *
mcm 2:93928d7d5c71 1866 * @details It gets the FIFO threshold (watermark) level selection.
mcm 2:93928d7d5c71 1867 *
mcm 2:93928d7d5c71 1868 * @param[in] N/A.
mcm 2:93928d7d5c71 1869 *
mcm 2:93928d7d5c71 1870 * @param[out] myFIFOthreshold: FIFO threshold (watermark) level selection.
mcm 2:93928d7d5c71 1871 *
mcm 2:93928d7d5c71 1872 *
mcm 2:93928d7d5c71 1873 * @return Status of LPS25HB_GetFIFO_Threshold.
mcm 2:93928d7d5c71 1874 *
mcm 2:93928d7d5c71 1875 *
mcm 2:93928d7d5c71 1876 * @author Manuel Caballero
mcm 2:93928d7d5c71 1877 * @date 10/June/2019
mcm 2:93928d7d5c71 1878 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1879 * @pre N/A.
mcm 2:93928d7d5c71 1880 * @warning N/A.
mcm 2:93928d7d5c71 1881 */
mcm 2:93928d7d5c71 1882 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetFIFO_Threshold ( LPS25HB_data_t* myFIFOthreshold )
mcm 2:93928d7d5c71 1883 {
mcm 2:93928d7d5c71 1884 char cmd = 0U;
mcm 2:93928d7d5c71 1885 uint32_t aux;
mcm 2:93928d7d5c71 1886
mcm 2:93928d7d5c71 1887 /* Read the register */
mcm 2:93928d7d5c71 1888 cmd = LPS25HB_FIFO_CTRL;
mcm 2:93928d7d5c71 1889 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1890 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1891
mcm 2:93928d7d5c71 1892 /* Parse the data */
mcm 2:93928d7d5c71 1893 myFIFOthreshold->wtm_point = (LPS25HB_fifo_ctrl_wtm_point_t)( FIFO_CTRL_WTM_POINT_MASK & cmd );
mcm 2:93928d7d5c71 1894
mcm 2:93928d7d5c71 1895
mcm 2:93928d7d5c71 1896
mcm 2:93928d7d5c71 1897 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1898 {
mcm 2:93928d7d5c71 1899 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1900 }
mcm 2:93928d7d5c71 1901 else
mcm 2:93928d7d5c71 1902 {
mcm 2:93928d7d5c71 1903 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1904 }
mcm 2:93928d7d5c71 1905 }
mcm 2:93928d7d5c71 1906
mcm 2:93928d7d5c71 1907
mcm 2:93928d7d5c71 1908
mcm 2:93928d7d5c71 1909 /**
mcm 2:93928d7d5c71 1910 * @brief LPS25HB_GetFIFO_Status ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1911 *
mcm 2:93928d7d5c71 1912 * @details It reads the FIFO status register.
mcm 2:93928d7d5c71 1913 *
mcm 2:93928d7d5c71 1914 * @param[in] N/A.
mcm 2:93928d7d5c71 1915 *
mcm 2:93928d7d5c71 1916 * @param[out] myFIFOstatus: FIFO threshold (watermark) level selection.
mcm 2:93928d7d5c71 1917 *
mcm 2:93928d7d5c71 1918 *
mcm 2:93928d7d5c71 1919 * @return Status of LPS25HB_GetFIFO_Status.
mcm 2:93928d7d5c71 1920 *
mcm 2:93928d7d5c71 1921 *
mcm 2:93928d7d5c71 1922 * @author Manuel Caballero
mcm 2:93928d7d5c71 1923 * @date 10/June/2019
mcm 2:93928d7d5c71 1924 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1925 * @pre N/A.
mcm 2:93928d7d5c71 1926 * @warning N/A.
mcm 2:93928d7d5c71 1927 */
mcm 2:93928d7d5c71 1928 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetFIFO_Status ( LPS25HB_data_t* myFIFOstatus )
mcm 2:93928d7d5c71 1929 {
mcm 2:93928d7d5c71 1930 char cmd = 0U;
mcm 2:93928d7d5c71 1931 uint32_t aux;
mcm 2:93928d7d5c71 1932
mcm 2:93928d7d5c71 1933 /* Read the register */
mcm 2:93928d7d5c71 1934 cmd = LPS25HB_FIFO_STATUS;
mcm 2:93928d7d5c71 1935 aux = _i2c.write ( _LPS25HB_Addr, &cmd, 1U, true );
mcm 2:93928d7d5c71 1936 aux = _i2c.read ( _LPS25HB_Addr, &cmd, 1U );
mcm 2:93928d7d5c71 1937
mcm 2:93928d7d5c71 1938 /* Parse the data */
mcm 2:93928d7d5c71 1939 myFIFOstatus->FIFOstatus = cmd;
mcm 2:93928d7d5c71 1940
mcm 2:93928d7d5c71 1941
mcm 2:93928d7d5c71 1942
mcm 2:93928d7d5c71 1943 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1944 {
mcm 2:93928d7d5c71 1945 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1946 }
mcm 2:93928d7d5c71 1947 else
mcm 2:93928d7d5c71 1948 {
mcm 2:93928d7d5c71 1949 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1950 }
mcm 2:93928d7d5c71 1951 }
mcm 2:93928d7d5c71 1952
mcm 2:93928d7d5c71 1953
mcm 2:93928d7d5c71 1954
mcm 2:93928d7d5c71 1955 /**
mcm 2:93928d7d5c71 1956 * @brief LPS25HB_GetFIFO_ThresholdValue ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 1957 *
mcm 2:93928d7d5c71 1958 * @details It gets the FIFO threshold value.
mcm 2:93928d7d5c71 1959 *
mcm 2:93928d7d5c71 1960 * @param[in] N/A.
mcm 2:93928d7d5c71 1961 *
mcm 2:93928d7d5c71 1962 * @param[out] myFIFOthresholdValue: Threshold value for pressure interrupt generation.
mcm 2:93928d7d5c71 1963 *
mcm 2:93928d7d5c71 1964 *
mcm 2:93928d7d5c71 1965 * @return Status of LPS25HB_GetFIFO_ThresholdValue.
mcm 2:93928d7d5c71 1966 *
mcm 2:93928d7d5c71 1967 *
mcm 2:93928d7d5c71 1968 * @author Manuel Caballero
mcm 2:93928d7d5c71 1969 * @date 10/June/2019
mcm 2:93928d7d5c71 1970 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 1971 * @pre This function implemets auto-increment.
mcm 2:93928d7d5c71 1972 * @warning N/A.
mcm 2:93928d7d5c71 1973 */
mcm 2:93928d7d5c71 1974 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetFIFO_ThresholdValue ( LPS25HB_data_t* myFIFOthresholdValue )
mcm 2:93928d7d5c71 1975 {
mcm 2:93928d7d5c71 1976 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 1977 uint32_t aux;
mcm 2:93928d7d5c71 1978
mcm 2:93928d7d5c71 1979 /* Read the register */
mcm 2:93928d7d5c71 1980 cmd[0] = ( LPS25HB_THS_P_L | 0x80 ); // Force auto-increment
mcm 2:93928d7d5c71 1981 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 1982 aux = _i2c.read ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:93928d7d5c71 1983
mcm 2:93928d7d5c71 1984 /* Parse the data */
mcm 2:93928d7d5c71 1985 myFIFOthresholdValue->ths_p = cmd[1];
mcm 2:93928d7d5c71 1986 myFIFOthresholdValue->ths_p <<= 8U;
mcm 2:93928d7d5c71 1987 myFIFOthresholdValue->ths_p |= cmd[0];
mcm 2:93928d7d5c71 1988
mcm 2:93928d7d5c71 1989
mcm 2:93928d7d5c71 1990
mcm 2:93928d7d5c71 1991 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 1992 {
mcm 2:93928d7d5c71 1993 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 1994 }
mcm 2:93928d7d5c71 1995 else
mcm 2:93928d7d5c71 1996 {
mcm 2:93928d7d5c71 1997 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 1998 }
mcm 2:93928d7d5c71 1999 }
mcm 2:93928d7d5c71 2000
mcm 2:93928d7d5c71 2001
mcm 2:93928d7d5c71 2002
mcm 2:93928d7d5c71 2003 /**
mcm 2:93928d7d5c71 2004 * @brief LPS25HB_SetFIFO_ThresholdValue ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 2005 *
mcm 2:93928d7d5c71 2006 * @details It sets the FIFO threshold value.
mcm 2:93928d7d5c71 2007 *
mcm 2:93928d7d5c71 2008 * @param[in] myFIFOthresholdValue: Threshold value for pressure interrupt generation.
mcm 2:93928d7d5c71 2009 *
mcm 2:93928d7d5c71 2010 * @param[out] N/A.
mcm 2:93928d7d5c71 2011 *
mcm 2:93928d7d5c71 2012 *
mcm 2:93928d7d5c71 2013 * @return Status of LPS25HB_SetFIFO_ThresholdValue.
mcm 2:93928d7d5c71 2014 *
mcm 2:93928d7d5c71 2015 *
mcm 2:93928d7d5c71 2016 * @author Manuel Caballero
mcm 2:93928d7d5c71 2017 * @date 10/June/2019
mcm 2:93928d7d5c71 2018 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 2019 * @pre This function implements auto-increment.
mcm 2:93928d7d5c71 2020 * @warning N/A.
mcm 2:93928d7d5c71 2021 */
mcm 2:93928d7d5c71 2022 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetFIFO_ThresholdValue ( LPS25HB_data_t myFIFOthresholdValue )
mcm 2:93928d7d5c71 2023 {
mcm 2:93928d7d5c71 2024 char cmd[3] = { 0U };
mcm 2:93928d7d5c71 2025 uint32_t aux;
mcm 2:93928d7d5c71 2026
mcm 2:93928d7d5c71 2027 /* Read the register */
mcm 2:93928d7d5c71 2028 cmd[0] = ( LPS25HB_THS_P_L | 0x80 ); // Force auto-increment
mcm 2:93928d7d5c71 2029 cmd[1] = (char)( myFIFOthresholdValue.ths_p & 0xFF );
mcm 2:93928d7d5c71 2030 cmd[2] = (char)( ( myFIFOthresholdValue.ths_p >> 8U ) & 0xFF );
mcm 2:93928d7d5c71 2031 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 2032
mcm 2:93928d7d5c71 2033
mcm 2:93928d7d5c71 2034
mcm 2:93928d7d5c71 2035
mcm 2:93928d7d5c71 2036
mcm 2:93928d7d5c71 2037 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 2038 {
mcm 2:93928d7d5c71 2039 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 2040 }
mcm 2:93928d7d5c71 2041 else
mcm 2:93928d7d5c71 2042 {
mcm 2:93928d7d5c71 2043 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 2044 }
mcm 2:93928d7d5c71 2045 }
mcm 2:93928d7d5c71 2046
mcm 2:93928d7d5c71 2047
mcm 2:93928d7d5c71 2048
mcm 2:93928d7d5c71 2049 /**
mcm 2:93928d7d5c71 2050 * @brief LPS25HB_GetPressureOffset ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 2051 *
mcm 2:93928d7d5c71 2052 * @details It gets the Pressure offset value.
mcm 2:93928d7d5c71 2053 *
mcm 2:93928d7d5c71 2054 * @param[in] N/A.
mcm 2:93928d7d5c71 2055 *
mcm 2:93928d7d5c71 2056 * @param[out] myPressureOffset: Pressure offset.
mcm 2:93928d7d5c71 2057 *
mcm 2:93928d7d5c71 2058 *
mcm 2:93928d7d5c71 2059 * @return Status of LPS25HB_GetPressureOffset.
mcm 2:93928d7d5c71 2060 *
mcm 2:93928d7d5c71 2061 *
mcm 2:93928d7d5c71 2062 * @author Manuel Caballero
mcm 2:93928d7d5c71 2063 * @date 10/June/2019
mcm 2:93928d7d5c71 2064 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 2065 * @pre This function implemets auto-increment.
mcm 2:93928d7d5c71 2066 * @warning N/A.
mcm 2:93928d7d5c71 2067 */
mcm 2:93928d7d5c71 2068 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetPressureOffset ( LPS25HB_data_t* myPressureOffset )
mcm 2:93928d7d5c71 2069 {
mcm 2:93928d7d5c71 2070 char cmd[2] = { 0U };
mcm 2:93928d7d5c71 2071 uint32_t aux;
mcm 2:93928d7d5c71 2072
mcm 2:93928d7d5c71 2073 /* Read the register */
mcm 2:93928d7d5c71 2074 cmd[0] = ( LPS25HB_RPDS_L | 0x80 ); // Force auto-increment
mcm 2:93928d7d5c71 2075 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], 1U, true );
mcm 2:93928d7d5c71 2076 aux = _i2c.read ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:93928d7d5c71 2077
mcm 2:93928d7d5c71 2078 /* Parse the data */
mcm 2:93928d7d5c71 2079 myPressureOffset->rpds = cmd[1];
mcm 2:93928d7d5c71 2080 myPressureOffset->rpds <<= 8U;
mcm 2:93928d7d5c71 2081 myPressureOffset->rpds |= cmd[0];
mcm 2:93928d7d5c71 2082
mcm 2:93928d7d5c71 2083
mcm 2:93928d7d5c71 2084
mcm 2:93928d7d5c71 2085 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 2086 {
mcm 2:93928d7d5c71 2087 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 2088 }
mcm 2:93928d7d5c71 2089 else
mcm 2:93928d7d5c71 2090 {
mcm 2:93928d7d5c71 2091 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 2092 }
mcm 2:93928d7d5c71 2093 }
mcm 2:93928d7d5c71 2094
mcm 2:93928d7d5c71 2095
mcm 2:93928d7d5c71 2096
mcm 2:93928d7d5c71 2097 /**
mcm 2:93928d7d5c71 2098 * @brief LPS25HB_SetPressureOffset ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 2099 *
mcm 2:93928d7d5c71 2100 * @details It sets the Pressure offset value.
mcm 2:93928d7d5c71 2101 *
mcm 2:93928d7d5c71 2102 * @param[in] myPressureOffset: Pressure offset.
mcm 2:93928d7d5c71 2103 *
mcm 2:93928d7d5c71 2104 * @param[out] N/A.
mcm 2:93928d7d5c71 2105 *
mcm 2:93928d7d5c71 2106 *
mcm 2:93928d7d5c71 2107 * @return Status of LPS25HB_SetPressureOffset.
mcm 2:93928d7d5c71 2108 *
mcm 2:93928d7d5c71 2109 *
mcm 2:93928d7d5c71 2110 * @author Manuel Caballero
mcm 2:93928d7d5c71 2111 * @date 10/June/2019
mcm 2:93928d7d5c71 2112 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 2113 * @pre This function implements auto-increment.
mcm 2:93928d7d5c71 2114 * @warning N/A.
mcm 2:93928d7d5c71 2115 */
mcm 2:93928d7d5c71 2116 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_SetPressureOffset ( LPS25HB_data_t myPressureOffset )
mcm 2:93928d7d5c71 2117 {
mcm 2:93928d7d5c71 2118 char cmd[3] = { 0U };
mcm 2:93928d7d5c71 2119 uint32_t aux;
mcm 2:93928d7d5c71 2120
mcm 2:93928d7d5c71 2121 /* Read the register */
mcm 2:93928d7d5c71 2122 cmd[0] = ( LPS25HB_RPDS_L | 0x80 ); // Force auto-increment
mcm 2:93928d7d5c71 2123 cmd[1] = (char)( myPressureOffset.rpds & 0xFF );
mcm 2:93928d7d5c71 2124 cmd[2] = (char)( ( myPressureOffset.rpds >> 8U ) & 0xFF );
mcm 2:93928d7d5c71 2125 aux = _i2c.write ( _LPS25HB_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:93928d7d5c71 2126
mcm 2:93928d7d5c71 2127
mcm 2:93928d7d5c71 2128
mcm 2:93928d7d5c71 2129
mcm 2:93928d7d5c71 2130
mcm 2:93928d7d5c71 2131 if ( aux == I2C_SUCCESS )
mcm 2:93928d7d5c71 2132 {
mcm 2:93928d7d5c71 2133 return LPS25HB_SUCCESS;
mcm 2:93928d7d5c71 2134 }
mcm 2:93928d7d5c71 2135 else
mcm 2:93928d7d5c71 2136 {
mcm 2:93928d7d5c71 2137 return LPS25HB_FAILURE;
mcm 2:93928d7d5c71 2138 }
mcm 2:93928d7d5c71 2139 }
mcm 2:93928d7d5c71 2140
mcm 2:93928d7d5c71 2141
mcm 2:93928d7d5c71 2142
mcm 2:93928d7d5c71 2143 /**
mcm 2:93928d7d5c71 2144 * @brief LPS25HB_GetPressure ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 2145 *
mcm 2:93928d7d5c71 2146 * @details It gets the current pressure in mbar.
mcm 2:93928d7d5c71 2147 *
mcm 2:93928d7d5c71 2148 * @param[in] N/A.
mcm 2:93928d7d5c71 2149 *
mcm 2:93928d7d5c71 2150 * @param[out] myPressure: Current pressure in mbar.
mcm 2:93928d7d5c71 2151 *
mcm 2:93928d7d5c71 2152 *
mcm 2:93928d7d5c71 2153 * @return Status of LPS25HB_GetPressure.
mcm 2:93928d7d5c71 2154 *
mcm 2:93928d7d5c71 2155 *
mcm 2:93928d7d5c71 2156 * @author Manuel Caballero
mcm 2:93928d7d5c71 2157 * @date 10/June/2019
mcm 2:93928d7d5c71 2158 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 2159 * @pre N/A.
mcm 2:93928d7d5c71 2160 * @warning N/A.
mcm 2:93928d7d5c71 2161 */
mcm 2:93928d7d5c71 2162 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetPressure ( LPS25HB_data_t* myPressure )
mcm 2:93928d7d5c71 2163 {
mcm 2:93928d7d5c71 2164 LPS25HB::LPS25HB_status_t aux;
mcm 2:93928d7d5c71 2165
mcm 2:93928d7d5c71 2166 /* Read raw pressure */
mcm 2:93928d7d5c71 2167 aux = LPS25HB_GetRawPressure ( &(*myPressure) );
mcm 2:93928d7d5c71 2168
mcm 2:93928d7d5c71 2169 /* Check if the pressure value is negative */
mcm 2:93928d7d5c71 2170 if ( ( myPressure->rawPressure & 0x800000 ) == 0x800000 )
mcm 2:93928d7d5c71 2171 {
mcm 2:93928d7d5c71 2172 /* Negative pressure */
mcm 2:93928d7d5c71 2173 myPressure->rawPressure |= 0xFF000000;
mcm 2:93928d7d5c71 2174 }
mcm 2:93928d7d5c71 2175 else
mcm 2:93928d7d5c71 2176 {
mcm 2:93928d7d5c71 2177 /* Positive pressure */
mcm 2:93928d7d5c71 2178 }
mcm 2:93928d7d5c71 2179
mcm 2:93928d7d5c71 2180
mcm 2:93928d7d5c71 2181 /* Calculate pressure */
mcm 2:93928d7d5c71 2182 myPressure->pressure = (float)( myPressure->rawPressure / 4096.0 );
mcm 2:93928d7d5c71 2183
mcm 2:93928d7d5c71 2184
mcm 2:93928d7d5c71 2185
mcm 2:93928d7d5c71 2186 return aux;
mcm 2:93928d7d5c71 2187 }
mcm 2:93928d7d5c71 2188
mcm 2:93928d7d5c71 2189
mcm 2:93928d7d5c71 2190
mcm 2:93928d7d5c71 2191 /**
mcm 2:93928d7d5c71 2192 * @brief LPS25HB_GetTemperature ( LPS25HB_data_t* )
mcm 2:93928d7d5c71 2193 *
mcm 2:93928d7d5c71 2194 * @details It gets the current temperature in Celsius degrees.
mcm 2:93928d7d5c71 2195 *
mcm 2:93928d7d5c71 2196 * @param[in] N/A.
mcm 2:93928d7d5c71 2197 *
mcm 2:93928d7d5c71 2198 * @param[out] myTemperature: Current temperature in Celsius degrees.
mcm 2:93928d7d5c71 2199 *
mcm 2:93928d7d5c71 2200 *
mcm 2:93928d7d5c71 2201 * @return Status of LPS25HB_GetTemperature.
mcm 2:93928d7d5c71 2202 *
mcm 2:93928d7d5c71 2203 *
mcm 2:93928d7d5c71 2204 * @author Manuel Caballero
mcm 2:93928d7d5c71 2205 * @date 10/June/2019
mcm 2:93928d7d5c71 2206 * @version 10/June/2019 The ORIGIN
mcm 2:93928d7d5c71 2207 * @pre N/A.
mcm 2:93928d7d5c71 2208 * @warning N/A.
mcm 2:93928d7d5c71 2209 */
mcm 2:93928d7d5c71 2210 LPS25HB::LPS25HB_status_t LPS25HB::LPS25HB_GetTemperature ( LPS25HB_data_t* myTemperature )
mcm 2:93928d7d5c71 2211 {
mcm 2:93928d7d5c71 2212 LPS25HB::LPS25HB_status_t aux;
mcm 2:93928d7d5c71 2213
mcm 2:93928d7d5c71 2214 /* Read raw temperature */
mcm 2:93928d7d5c71 2215 aux = LPS25HB_GetRawTemperature ( &(*myTemperature) );
mcm 2:93928d7d5c71 2216
mcm 2:93928d7d5c71 2217 /* Calculate temperature */
mcm 2:93928d7d5c71 2218 myTemperature->temperature = (float)( 42.5 + ( myTemperature->rawTemperature / 480.0 ) );
mcm 2:93928d7d5c71 2219
mcm 2:93928d7d5c71 2220
mcm 2:93928d7d5c71 2221
mcm 2:93928d7d5c71 2222 return aux;
mcm 2:93928d7d5c71 2223 }