Manuel Caballero / HDC2080
Committer:
mcm
Date:
Tue Nov 19 10:55:47 2019 +0000
Revision:
2:d6cde3037eac
Parent:
0:e214a18cbe6d
Child:
3:d36591d51f4d
The functions file is ready to be tested.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcm 2:d6cde3037eac 1 /**
mcm 2:d6cde3037eac 2 * @brief HDC2080.cpp
mcm 2:d6cde3037eac 3 * @details Low-Power Humidity and Temperature Digital Sensor.
mcm 2:d6cde3037eac 4 * Functions file.
mcm 2:d6cde3037eac 5 *
mcm 2:d6cde3037eac 6 *
mcm 2:d6cde3037eac 7 * @return N/A
mcm 2:d6cde3037eac 8 *
mcm 2:d6cde3037eac 9 * @author Manuel Caballero
mcm 2:d6cde3037eac 10 * @date 19/November/2019
mcm 2:d6cde3037eac 11 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 12 * @pre N/A.
mcm 2:d6cde3037eac 13 * @warning N/A
mcm 2:d6cde3037eac 14 * @pre This code belongs to Nimbus Centre ( https://www.nimbus.cit.ie ).
mcm 2:d6cde3037eac 15 */
mcm 2:d6cde3037eac 16
mcm 2:d6cde3037eac 17 #include "HDC2080.h"
mcm 2:d6cde3037eac 18
mcm 2:d6cde3037eac 19
mcm 2:d6cde3037eac 20 HDC2080::HDC2080 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq )
mcm 2:d6cde3037eac 21 : _i2c ( sda, scl )
mcm 2:d6cde3037eac 22 , _HDC2080_Addr ( addr )
mcm 2:d6cde3037eac 23 {
mcm 2:d6cde3037eac 24 _i2c.frequency( freq );
mcm 2:d6cde3037eac 25 }
mcm 2:d6cde3037eac 26
mcm 2:d6cde3037eac 27
mcm 2:d6cde3037eac 28 HDC2080::~HDC2080()
mcm 2:d6cde3037eac 29 {
mcm 2:d6cde3037eac 30 }
mcm 2:d6cde3037eac 31
mcm 2:d6cde3037eac 32
mcm 2:d6cde3037eac 33 /**
mcm 2:d6cde3037eac 34 * @brief HDC2080_GetRawTemperature ( HDC2080_data_t* )
mcm 2:d6cde3037eac 35 *
mcm 2:d6cde3037eac 36 * @details It gets the raw temperature.
mcm 2:d6cde3037eac 37 *
mcm 2:d6cde3037eac 38 * @param[in] N/A.
mcm 2:d6cde3037eac 39 *
mcm 2:d6cde3037eac 40 * @param[out] myRawTemperature: Raw temperature.
mcm 2:d6cde3037eac 41 *
mcm 2:d6cde3037eac 42 *
mcm 2:d6cde3037eac 43 * @return Status of HDC2080_GetRawTemperature.
mcm 2:d6cde3037eac 44 *
mcm 2:d6cde3037eac 45 *
mcm 2:d6cde3037eac 46 * @author Manuel Caballero
mcm 2:d6cde3037eac 47 * @date 19/November/2019
mcm 2:d6cde3037eac 48 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 49 * @pre N/A
mcm 2:d6cde3037eac 50 * @warning N/A.
mcm 2:d6cde3037eac 51 */
mcm 2:d6cde3037eac 52 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetRawTemperature ( HDC2080_data_t* myRawTemperature )
mcm 2:d6cde3037eac 53 {
mcm 2:d6cde3037eac 54 char cmd[2] = { 0 };
mcm 2:d6cde3037eac 55 uint32_t aux;
mcm 2:d6cde3037eac 56
mcm 2:d6cde3037eac 57 /* Read the register */
mcm 2:d6cde3037eac 58 cmd[0] = HDC2080_TEMPERATURE_LOW;
mcm 2:d6cde3037eac 59 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 60 aux = _i2c.read ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:d6cde3037eac 61
mcm 2:d6cde3037eac 62
mcm 2:d6cde3037eac 63 /* Parse data */
mcm 2:d6cde3037eac 64 myRawTemperature->rawTemperature = cmd[1];
mcm 2:d6cde3037eac 65 myRawTemperature->rawTemperature <<= 8U;
mcm 2:d6cde3037eac 66 myRawTemperature->rawTemperature |= cmd[0];
mcm 2:d6cde3037eac 67
mcm 2:d6cde3037eac 68
mcm 2:d6cde3037eac 69
mcm 2:d6cde3037eac 70 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 71 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 72 } else {
mcm 2:d6cde3037eac 73 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 74 }
mcm 2:d6cde3037eac 75 }
mcm 2:d6cde3037eac 76
mcm 2:d6cde3037eac 77
mcm 2:d6cde3037eac 78
mcm 2:d6cde3037eac 79 /**
mcm 2:d6cde3037eac 80 * @brief HDC2080_GetTemperature ( HDC2080_data_t* )
mcm 2:d6cde3037eac 81 *
mcm 2:d6cde3037eac 82 * @details It gets the current temperature.
mcm 2:d6cde3037eac 83 *
mcm 2:d6cde3037eac 84 * @param[in] N/A.
mcm 2:d6cde3037eac 85 *
mcm 2:d6cde3037eac 86 * @param[out] myTemperature: Current temperature.
mcm 2:d6cde3037eac 87 *
mcm 2:d6cde3037eac 88 *
mcm 2:d6cde3037eac 89 * @return Status of HDC2080_GetTemperature.
mcm 2:d6cde3037eac 90 *
mcm 2:d6cde3037eac 91 *
mcm 2:d6cde3037eac 92 * @author Manuel Caballero
mcm 2:d6cde3037eac 93 * @date 19/November/2019
mcm 2:d6cde3037eac 94 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 95 * @pre N/A
mcm 2:d6cde3037eac 96 * @warning N/A.
mcm 2:d6cde3037eac 97 */
mcm 2:d6cde3037eac 98 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetTemperature ( HDC2080_data_t* myTemperature )
mcm 2:d6cde3037eac 99 {
mcm 2:d6cde3037eac 100 HDC2080_status_t aux;
mcm 2:d6cde3037eac 101
mcm 2:d6cde3037eac 102 /* Read the register */
mcm 2:d6cde3037eac 103 aux = HDC2080_GetRawTemperature ( &(*myTemperature) );
mcm 2:d6cde3037eac 104
mcm 2:d6cde3037eac 105 /* Parse data */
mcm 2:d6cde3037eac 106 myTemperature->temperature = ( (double)( myTemperature->rawTemperature ) / 65536.0 ) * 165.0 - 40.0;
mcm 2:d6cde3037eac 107
mcm 2:d6cde3037eac 108
mcm 2:d6cde3037eac 109 return aux;
mcm 2:d6cde3037eac 110 }
mcm 2:d6cde3037eac 111
mcm 2:d6cde3037eac 112
mcm 2:d6cde3037eac 113
mcm 2:d6cde3037eac 114 /**
mcm 2:d6cde3037eac 115 * @brief HDC2080_GetRawHumidity ( HDC2080_data_t* )
mcm 2:d6cde3037eac 116 *
mcm 2:d6cde3037eac 117 * @details It gets the raw humidity.
mcm 2:d6cde3037eac 118 *
mcm 2:d6cde3037eac 119 * @param[in] N/A.
mcm 2:d6cde3037eac 120 *
mcm 2:d6cde3037eac 121 * @param[out] myRawTemperature: Raw humidity.
mcm 2:d6cde3037eac 122 *
mcm 2:d6cde3037eac 123 *
mcm 2:d6cde3037eac 124 * @return Status of HDC2080_GetRawHumidity.
mcm 2:d6cde3037eac 125 *
mcm 2:d6cde3037eac 126 *
mcm 2:d6cde3037eac 127 * @author Manuel Caballero
mcm 2:d6cde3037eac 128 * @date 19/November/2019
mcm 2:d6cde3037eac 129 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 130 * @pre N/A
mcm 2:d6cde3037eac 131 * @warning N/A.
mcm 2:d6cde3037eac 132 */
mcm 2:d6cde3037eac 133 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetRawHumidity ( HDC2080_data_t* myRawHumidity )
mcm 2:d6cde3037eac 134 {
mcm 2:d6cde3037eac 135 char cmd[2] = { 0 };
mcm 2:d6cde3037eac 136 uint32_t aux;
mcm 2:d6cde3037eac 137
mcm 2:d6cde3037eac 138 /* Read the register */
mcm 2:d6cde3037eac 139 cmd[0] = HDC2080_HUMIDITY_LOW;
mcm 2:d6cde3037eac 140 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 141 aux = _i2c.read ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:d6cde3037eac 142
mcm 2:d6cde3037eac 143
mcm 2:d6cde3037eac 144 /* Parse data */
mcm 2:d6cde3037eac 145 myRawHumidity->rawHumidity = cmd[1];
mcm 2:d6cde3037eac 146 myRawHumidity->rawHumidity <<= 8U;
mcm 2:d6cde3037eac 147 myRawHumidity->rawHumidity |= cmd[0];
mcm 2:d6cde3037eac 148
mcm 2:d6cde3037eac 149
mcm 2:d6cde3037eac 150
mcm 2:d6cde3037eac 151 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 152 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 153 } else {
mcm 2:d6cde3037eac 154 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 155 }
mcm 2:d6cde3037eac 156 }
mcm 2:d6cde3037eac 157
mcm 2:d6cde3037eac 158
mcm 2:d6cde3037eac 159
mcm 2:d6cde3037eac 160 /**
mcm 2:d6cde3037eac 161 * @brief HDC2080_GetHumidity ( HDC2080_data_t* )
mcm 2:d6cde3037eac 162 *
mcm 2:d6cde3037eac 163 * @details It gets the current humidity.
mcm 2:d6cde3037eac 164 *
mcm 2:d6cde3037eac 165 * @param[in] N/A.
mcm 2:d6cde3037eac 166 *
mcm 2:d6cde3037eac 167 * @param[out] myTemperature: Current humidity.
mcm 2:d6cde3037eac 168 *
mcm 2:d6cde3037eac 169 *
mcm 2:d6cde3037eac 170 * @return Status of HDC2080_GetTemperature.
mcm 2:d6cde3037eac 171 *
mcm 2:d6cde3037eac 172 *
mcm 2:d6cde3037eac 173 * @author Manuel Caballero
mcm 2:d6cde3037eac 174 * @date 19/November/2019
mcm 2:d6cde3037eac 175 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 176 * @pre N/A
mcm 2:d6cde3037eac 177 * @warning N/A.
mcm 2:d6cde3037eac 178 */
mcm 2:d6cde3037eac 179 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetHumidity ( HDC2080_data_t* myHumidity )
mcm 2:d6cde3037eac 180 {
mcm 2:d6cde3037eac 181 HDC2080_status_t aux;
mcm 2:d6cde3037eac 182
mcm 2:d6cde3037eac 183 /* Read the register */
mcm 2:d6cde3037eac 184 aux = HDC2080_GetRawHumidity ( &(*myHumidity) );
mcm 2:d6cde3037eac 185
mcm 2:d6cde3037eac 186 /* Parse data */
mcm 2:d6cde3037eac 187 myHumidity->humidity = ( (double)( myHumidity->rawHumidity ) / 65536.0 ) * 100.0;
mcm 2:d6cde3037eac 188
mcm 2:d6cde3037eac 189
mcm 2:d6cde3037eac 190 return aux;
mcm 2:d6cde3037eac 191 }
mcm 2:d6cde3037eac 192
mcm 2:d6cde3037eac 193
mcm 2:d6cde3037eac 194
mcm 2:d6cde3037eac 195 /**
mcm 2:d6cde3037eac 196 * @brief HDC2080_GetInterrupt_DRDY_Status ( HDC2080_data_t* )
mcm 2:d6cde3037eac 197 *
mcm 2:d6cde3037eac 198 * @details It gets the interrupt DRDY status.
mcm 2:d6cde3037eac 199 *
mcm 2:d6cde3037eac 200 * @param[in] N/A.
mcm 2:d6cde3037eac 201 *
mcm 2:d6cde3037eac 202 * @param[out] myStatus: Interrupt DRDY status.
mcm 2:d6cde3037eac 203 *
mcm 2:d6cde3037eac 204 *
mcm 2:d6cde3037eac 205 * @return Status of HDC2080_GetInterrupt_DRDY_Status.
mcm 2:d6cde3037eac 206 *
mcm 2:d6cde3037eac 207 *
mcm 2:d6cde3037eac 208 * @author Manuel Caballero
mcm 2:d6cde3037eac 209 * @date 19/November/2019
mcm 2:d6cde3037eac 210 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 211 * @pre N/A
mcm 2:d6cde3037eac 212 * @warning N/A.
mcm 2:d6cde3037eac 213 */
mcm 2:d6cde3037eac 214 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetInterrupt_DRDY_Status ( HDC2080_data_t* myStatus )
mcm 2:d6cde3037eac 215 {
mcm 2:d6cde3037eac 216 char cmd = 0U;
mcm 2:d6cde3037eac 217 uint32_t aux;
mcm 2:d6cde3037eac 218
mcm 2:d6cde3037eac 219 /* Read the register */
mcm 2:d6cde3037eac 220 cmd = HDC2080_INTERRUPT_DRDY;
mcm 2:d6cde3037eac 221 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 222 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 223
mcm 2:d6cde3037eac 224
mcm 2:d6cde3037eac 225 /* Parse data */
mcm 2:d6cde3037eac 226 myStatus->interrupt_drdy_status = (HDC2080_interrupt_drdy_drdy_status_t)( INTERRUPT_DRDY_DRDY_STATUS_MASK & cmd );
mcm 2:d6cde3037eac 227
mcm 2:d6cde3037eac 228
mcm 2:d6cde3037eac 229
mcm 2:d6cde3037eac 230 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 231 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 232 } else {
mcm 2:d6cde3037eac 233 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 234 }
mcm 2:d6cde3037eac 235 }
mcm 2:d6cde3037eac 236
mcm 2:d6cde3037eac 237
mcm 2:d6cde3037eac 238
mcm 2:d6cde3037eac 239 /**
mcm 2:d6cde3037eac 240 * @brief HDC2080_ConfTemperatureMax ( HDC2080_data_t )
mcm 2:d6cde3037eac 241 *
mcm 2:d6cde3037eac 242 * @details It configures the temperature MAX register.
mcm 2:d6cde3037eac 243 *
mcm 2:d6cde3037eac 244 * @param[in] myTemperatureMax: Temperature max raw value.
mcm 2:d6cde3037eac 245 *
mcm 2:d6cde3037eac 246 * @param[out] N/A
mcm 2:d6cde3037eac 247 *
mcm 2:d6cde3037eac 248 *
mcm 2:d6cde3037eac 249 * @return Status of HDC2080_ConfTemperatureMax.
mcm 2:d6cde3037eac 250 *
mcm 2:d6cde3037eac 251 *
mcm 2:d6cde3037eac 252 * @author Manuel Caballero
mcm 2:d6cde3037eac 253 * @date 19/November/2019
mcm 2:d6cde3037eac 254 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 255 * @pre N/A
mcm 2:d6cde3037eac 256 * @warning N/A.
mcm 2:d6cde3037eac 257 */
mcm 2:d6cde3037eac 258 HDC2080::HDC2080_status_t HDC2080::HDC2080_ConfTemperatureMax ( HDC2080_data_t myTemperatureMax )
mcm 2:d6cde3037eac 259 {
mcm 2:d6cde3037eac 260 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 261 uint32_t aux;
mcm 2:d6cde3037eac 262
mcm 2:d6cde3037eac 263 /* Read the register */
mcm 2:d6cde3037eac 264 cmd[0] = HDC2080_TEMPERATURE_MAX;
mcm 2:d6cde3037eac 265 cmd[1] = myTemperatureMax.rawTemperature_max;
mcm 2:d6cde3037eac 266 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 267
mcm 2:d6cde3037eac 268
mcm 2:d6cde3037eac 269 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 270 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 271 } else {
mcm 2:d6cde3037eac 272 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 273 }
mcm 2:d6cde3037eac 274 }
mcm 2:d6cde3037eac 275
mcm 2:d6cde3037eac 276
mcm 2:d6cde3037eac 277
mcm 2:d6cde3037eac 278 /**
mcm 2:d6cde3037eac 279 * @brief HDC2080_ConfHumidityMax ( HDC2080_data_t )
mcm 2:d6cde3037eac 280 *
mcm 2:d6cde3037eac 281 * @details It configures the humidity MAX register.
mcm 2:d6cde3037eac 282 *
mcm 2:d6cde3037eac 283 * @param[in] myTemperatureMax: Humidity max raw value.
mcm 2:d6cde3037eac 284 *
mcm 2:d6cde3037eac 285 * @param[out] N/A.
mcm 2:d6cde3037eac 286 *
mcm 2:d6cde3037eac 287 *
mcm 2:d6cde3037eac 288 * @return Status of HDC2080_ConfHumidityMax.
mcm 2:d6cde3037eac 289 *
mcm 2:d6cde3037eac 290 *
mcm 2:d6cde3037eac 291 * @author Manuel Caballero
mcm 2:d6cde3037eac 292 * @date 19/November/2019
mcm 2:d6cde3037eac 293 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 294 * @pre N/A
mcm 2:d6cde3037eac 295 * @warning N/A.
mcm 2:d6cde3037eac 296 */
mcm 2:d6cde3037eac 297 HDC2080::HDC2080_status_t HDC2080::HDC2080_ConfHumidityMax ( HDC2080_data_t myHumidityMax )
mcm 2:d6cde3037eac 298 {
mcm 2:d6cde3037eac 299 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 300 uint32_t aux;
mcm 2:d6cde3037eac 301
mcm 2:d6cde3037eac 302 /* Read the register */
mcm 2:d6cde3037eac 303 cmd[0] = HDC2080_HUMIDITY_MAX;
mcm 2:d6cde3037eac 304 cmd[1] = myHumidityMax.rawHumidity_max;
mcm 2:d6cde3037eac 305 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 306
mcm 2:d6cde3037eac 307
mcm 2:d6cde3037eac 308 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 309 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 310 } else {
mcm 2:d6cde3037eac 311 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 312 }
mcm 2:d6cde3037eac 313 }
mcm 2:d6cde3037eac 314
mcm 2:d6cde3037eac 315
mcm 2:d6cde3037eac 316
mcm 2:d6cde3037eac 317 /**
mcm 2:d6cde3037eac 318 * @brief HDC2080_GetInterruptConfiguration ( HDC2080_data_t* )
mcm 2:d6cde3037eac 319 *
mcm 2:d6cde3037eac 320 * @details It gets the interrupt configuration bits.
mcm 2:d6cde3037eac 321 *
mcm 2:d6cde3037eac 322 * @param[in] N/A.
mcm 2:d6cde3037eac 323 *
mcm 2:d6cde3037eac 324 * @param[out] myIntConfiguration: DRDY_ENABLE, TH_ENABLE, TL_ENABLE, HH_ENABLE and HL_ENABLE status.
mcm 2:d6cde3037eac 325 *
mcm 2:d6cde3037eac 326 *
mcm 2:d6cde3037eac 327 * @return Status of HDC2080_GetInterruptConfiguration.
mcm 2:d6cde3037eac 328 *
mcm 2:d6cde3037eac 329 *
mcm 2:d6cde3037eac 330 * @author Manuel Caballero
mcm 2:d6cde3037eac 331 * @date 19/November/2019
mcm 2:d6cde3037eac 332 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 333 * @pre N/A
mcm 2:d6cde3037eac 334 * @warning N/A.
mcm 2:d6cde3037eac 335 */
mcm 2:d6cde3037eac 336 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetInterruptConfiguration ( HDC2080_data_t* myIntConfiguration )
mcm 2:d6cde3037eac 337 {
mcm 2:d6cde3037eac 338 char cmd = 0U;
mcm 2:d6cde3037eac 339 uint32_t aux;
mcm 2:d6cde3037eac 340
mcm 2:d6cde3037eac 341 /* Read the register */
mcm 2:d6cde3037eac 342 cmd = HDC2080_INTERRUPT_ENABLE;
mcm 2:d6cde3037eac 343 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 344 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 345
mcm 2:d6cde3037eac 346 /* Parse the data */
mcm 2:d6cde3037eac 347 myIntConfiguration->drdy_enable = (HDC2080_interrupt_enable_drdy_enable_t)( cmd & INTERRUPT_DRDY_DRDY_ENABLE_MASK );
mcm 2:d6cde3037eac 348 myIntConfiguration->th_enable = (HDC2080_interrupt_enable_th_enable_t)( cmd & INTERRUPT_DRDY_TH_ENABLE_MASK );
mcm 2:d6cde3037eac 349 myIntConfiguration->tl_enable = (HDC2080_interrupt_enable_tl_enable_t)( cmd & INTERRUPT_DRDY_TL_ENABLE_MASK );
mcm 2:d6cde3037eac 350 myIntConfiguration->hh_enable = (HDC2080_interrupt_enable_hh_enable_t)( cmd & INTERRUPT_DRDY_HH_ENABLE_MASK );
mcm 2:d6cde3037eac 351 myIntConfiguration->hl_enable = (HDC2080_interrupt_enable_hl_enable_t)( cmd & INTERRUPT_DRDY_HL_ENABLE_MASK );
mcm 2:d6cde3037eac 352
mcm 2:d6cde3037eac 353
mcm 2:d6cde3037eac 354 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 355 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 356 } else {
mcm 2:d6cde3037eac 357 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 358 }
mcm 2:d6cde3037eac 359 }
mcm 2:d6cde3037eac 360
mcm 2:d6cde3037eac 361
mcm 2:d6cde3037eac 362
mcm 2:d6cde3037eac 363 /**
mcm 2:d6cde3037eac 364 * @brief HDC2080_SetInterruptConfiguration ( HDC2080_data_t )
mcm 2:d6cde3037eac 365 *
mcm 2:d6cde3037eac 366 * @details It configures the humidity MAX register.
mcm 2:d6cde3037eac 367 *
mcm 2:d6cde3037eac 368 * @param[in] myIntConfiguration: DRDY_ENABLE, TH_ENABLE, TL_ENABLE, HH_ENABLE and HL_ENABLE.
mcm 2:d6cde3037eac 369 *
mcm 2:d6cde3037eac 370 * @param[out] N/A.
mcm 2:d6cde3037eac 371 *
mcm 2:d6cde3037eac 372 *
mcm 2:d6cde3037eac 373 * @return Status of HDC2080_SetInterruptConfiguration.
mcm 2:d6cde3037eac 374 *
mcm 2:d6cde3037eac 375 *
mcm 2:d6cde3037eac 376 * @author Manuel Caballero
mcm 2:d6cde3037eac 377 * @date 19/November/2019
mcm 2:d6cde3037eac 378 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 379 * @pre N/A
mcm 2:d6cde3037eac 380 * @warning N/A.
mcm 2:d6cde3037eac 381 */
mcm 2:d6cde3037eac 382 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetInterruptConfiguration ( HDC2080_data_t myIntConfiguration )
mcm 2:d6cde3037eac 383 {
mcm 2:d6cde3037eac 384 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 385 uint32_t aux;
mcm 2:d6cde3037eac 386
mcm 2:d6cde3037eac 387 /* Read the register */
mcm 2:d6cde3037eac 388 cmd[0] = HDC2080_INTERRUPT_ENABLE;
mcm 2:d6cde3037eac 389 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 390 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 391
mcm 2:d6cde3037eac 392 /* Update the register */
mcm 2:d6cde3037eac 393 cmd[1] &= ~( INTERRUPT_DRDY_DRDY_ENABLE_MASK | INTERRUPT_DRDY_TH_ENABLE_MASK | INTERRUPT_DRDY_TL_ENABLE_MASK | INTERRUPT_DRDY_HH_ENABLE_MASK | INTERRUPT_DRDY_HL_ENABLE_MASK );
mcm 2:d6cde3037eac 394 cmd[1] |= ( myIntConfiguration.drdy_enable | myIntConfiguration.th_enable | myIntConfiguration.tl_enable | myIntConfiguration.hh_enable | myIntConfiguration.hl_enable );
mcm 2:d6cde3037eac 395 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 396
mcm 2:d6cde3037eac 397
mcm 2:d6cde3037eac 398
mcm 2:d6cde3037eac 399 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 400 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 401 } else {
mcm 2:d6cde3037eac 402 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 403 }
mcm 2:d6cde3037eac 404 }
mcm 2:d6cde3037eac 405
mcm 2:d6cde3037eac 406
mcm 2:d6cde3037eac 407
mcm 2:d6cde3037eac 408 /**
mcm 2:d6cde3037eac 409 * @brief HDC2080_SetTemperatureOffset ( HDC2080_data_t )
mcm 2:d6cde3037eac 410 *
mcm 2:d6cde3037eac 411 * @details It sets the temperature offset.
mcm 2:d6cde3037eac 412 *
mcm 2:d6cde3037eac 413 * @param[in] myTemperatureOffset: Temperature offset value.
mcm 2:d6cde3037eac 414 *
mcm 2:d6cde3037eac 415 * @param[out] N/A.
mcm 2:d6cde3037eac 416 *
mcm 2:d6cde3037eac 417 *
mcm 2:d6cde3037eac 418 * @return Status of HDC2080_SetTemperatureOffset.
mcm 2:d6cde3037eac 419 *
mcm 2:d6cde3037eac 420 *
mcm 2:d6cde3037eac 421 * @author Manuel Caballero
mcm 2:d6cde3037eac 422 * @date 19/November/2019
mcm 2:d6cde3037eac 423 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 424 * @pre N/A
mcm 2:d6cde3037eac 425 * @warning N/A.
mcm 2:d6cde3037eac 426 */
mcm 2:d6cde3037eac 427 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetTemperatureOffset ( HDC2080_data_t myTemperatureOffset )
mcm 2:d6cde3037eac 428 {
mcm 2:d6cde3037eac 429 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 430 uint32_t aux;
mcm 2:d6cde3037eac 431
mcm 2:d6cde3037eac 432 /* Write the register */
mcm 2:d6cde3037eac 433 cmd[0] = HDC2080_TEMP_OFFSET_ADJUST;
mcm 2:d6cde3037eac 434 cmd[1] = myTemperatureOffset.temp_offset_adjust;
mcm 2:d6cde3037eac 435 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 436
mcm 2:d6cde3037eac 437
mcm 2:d6cde3037eac 438
mcm 2:d6cde3037eac 439 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 440 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 441 } else {
mcm 2:d6cde3037eac 442 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 443 }
mcm 2:d6cde3037eac 444 }
mcm 2:d6cde3037eac 445
mcm 2:d6cde3037eac 446
mcm 2:d6cde3037eac 447
mcm 2:d6cde3037eac 448 /**
mcm 2:d6cde3037eac 449 * @brief HDC2080_GetTemperatureOffset ( HDC2080_data_t* )
mcm 2:d6cde3037eac 450 *
mcm 2:d6cde3037eac 451 * @details It gets the temperature offset ( raw value ).
mcm 2:d6cde3037eac 452 *
mcm 2:d6cde3037eac 453 * @param[in] N/A
mcm 2:d6cde3037eac 454 *
mcm 2:d6cde3037eac 455 * @param[out] myTemperatureOffset: Temperature offset value ( raw value ).
mcm 2:d6cde3037eac 456 *
mcm 2:d6cde3037eac 457 *
mcm 2:d6cde3037eac 458 * @return Status of HDC2080_GetTemperatureOffset.
mcm 2:d6cde3037eac 459 *
mcm 2:d6cde3037eac 460 *
mcm 2:d6cde3037eac 461 * @author Manuel Caballero
mcm 2:d6cde3037eac 462 * @date 19/November/2019
mcm 2:d6cde3037eac 463 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 464 * @pre N/A
mcm 2:d6cde3037eac 465 * @warning N/A.
mcm 2:d6cde3037eac 466 */
mcm 2:d6cde3037eac 467 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetTemperatureOffset ( HDC2080_data_t* myTemperatureOffset )
mcm 2:d6cde3037eac 468 {
mcm 2:d6cde3037eac 469 char cmd = 0U;
mcm 2:d6cde3037eac 470 uint32_t aux;
mcm 2:d6cde3037eac 471
mcm 2:d6cde3037eac 472 /* Read the register */
mcm 2:d6cde3037eac 473 cmd = HDC2080_TEMP_OFFSET_ADJUST;
mcm 2:d6cde3037eac 474 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 475 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 476
mcm 2:d6cde3037eac 477 /* Parse the data */
mcm 2:d6cde3037eac 478 myTemperatureOffset->temp_offset_adjust = cmd;
mcm 2:d6cde3037eac 479
mcm 2:d6cde3037eac 480
mcm 2:d6cde3037eac 481
mcm 2:d6cde3037eac 482 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 483 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 484 } else {
mcm 2:d6cde3037eac 485 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 486 }
mcm 2:d6cde3037eac 487 }
mcm 2:d6cde3037eac 488
mcm 2:d6cde3037eac 489
mcm 2:d6cde3037eac 490
mcm 2:d6cde3037eac 491 /**
mcm 2:d6cde3037eac 492 * @brief HDC2080_SetHumidityOffset ( HDC2080_data_t )
mcm 2:d6cde3037eac 493 *
mcm 2:d6cde3037eac 494 * @details It sets the humidity offset.
mcm 2:d6cde3037eac 495 *
mcm 2:d6cde3037eac 496 * @param[in] myHumidityOffset: Humidity offset value.
mcm 2:d6cde3037eac 497 *
mcm 2:d6cde3037eac 498 * @param[out] N/A.
mcm 2:d6cde3037eac 499 *
mcm 2:d6cde3037eac 500 *
mcm 2:d6cde3037eac 501 * @return Status of HDC2080_SetHumidityOffset.
mcm 2:d6cde3037eac 502 *
mcm 2:d6cde3037eac 503 *
mcm 2:d6cde3037eac 504 * @author Manuel Caballero
mcm 2:d6cde3037eac 505 * @date 19/November/2019
mcm 2:d6cde3037eac 506 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 507 * @pre N/A
mcm 2:d6cde3037eac 508 * @warning N/A.
mcm 2:d6cde3037eac 509 */
mcm 2:d6cde3037eac 510 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetHumidityOffset ( HDC2080_data_t myHumidityOffset )
mcm 2:d6cde3037eac 511 {
mcm 2:d6cde3037eac 512 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 513 uint32_t aux;
mcm 2:d6cde3037eac 514
mcm 2:d6cde3037eac 515 /* Write the register */
mcm 2:d6cde3037eac 516 cmd[0] = HDC2080_HUM_OFFSET_ADJUST;
mcm 2:d6cde3037eac 517 cmd[1] = myHumidityOffset.hum_offset_adjust;
mcm 2:d6cde3037eac 518 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 519
mcm 2:d6cde3037eac 520
mcm 2:d6cde3037eac 521
mcm 2:d6cde3037eac 522 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 523 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 524 } else {
mcm 2:d6cde3037eac 525 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 526 }
mcm 2:d6cde3037eac 527 }
mcm 2:d6cde3037eac 528
mcm 2:d6cde3037eac 529
mcm 2:d6cde3037eac 530
mcm 2:d6cde3037eac 531 /**
mcm 2:d6cde3037eac 532 * @brief HDC2080_GetHumidityOffset ( HDC2080_data_t* )
mcm 2:d6cde3037eac 533 *
mcm 2:d6cde3037eac 534 * @details It gets the humidity offset ( raw value ).
mcm 2:d6cde3037eac 535 *
mcm 2:d6cde3037eac 536 * @param[in] N/A.
mcm 2:d6cde3037eac 537 *
mcm 2:d6cde3037eac 538 * @param[out] myHumidityOffset: Humidity offset value ( raw value ).
mcm 2:d6cde3037eac 539 *
mcm 2:d6cde3037eac 540 *
mcm 2:d6cde3037eac 541 * @return Status of HDC2080_GetHumidityOffset.
mcm 2:d6cde3037eac 542 *
mcm 2:d6cde3037eac 543 *
mcm 2:d6cde3037eac 544 * @author Manuel Caballero
mcm 2:d6cde3037eac 545 * @date 19/November/2019
mcm 2:d6cde3037eac 546 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 547 * @pre N/A
mcm 2:d6cde3037eac 548 * @warning N/A.
mcm 2:d6cde3037eac 549 */
mcm 2:d6cde3037eac 550 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetHumidityOffset ( HDC2080_data_t* myHumidityOffset )
mcm 2:d6cde3037eac 551 {
mcm 2:d6cde3037eac 552 char cmd = 0U;
mcm 2:d6cde3037eac 553 uint32_t aux;
mcm 2:d6cde3037eac 554
mcm 2:d6cde3037eac 555 /* Read the register */
mcm 2:d6cde3037eac 556 cmd = HDC2080_HUM_OFFSET_ADJUST;
mcm 2:d6cde3037eac 557 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 558 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 559
mcm 2:d6cde3037eac 560 /* Parse the data */
mcm 2:d6cde3037eac 561 myHumidityOffset->hum_offset_adjust = cmd;
mcm 2:d6cde3037eac 562
mcm 2:d6cde3037eac 563
mcm 2:d6cde3037eac 564
mcm 2:d6cde3037eac 565 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 566 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 567 } else {
mcm 2:d6cde3037eac 568 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 569 }
mcm 2:d6cde3037eac 570 }
mcm 2:d6cde3037eac 571
mcm 2:d6cde3037eac 572
mcm 2:d6cde3037eac 573
mcm 2:d6cde3037eac 574 /**
mcm 2:d6cde3037eac 575 * @brief HDC2080_SetTemperatureThresLow ( HDC2080_data_t )
mcm 2:d6cde3037eac 576 *
mcm 2:d6cde3037eac 577 * @details It sets the temperature threshold low value ( raw value ).
mcm 2:d6cde3037eac 578 *
mcm 2:d6cde3037eac 579 * @param[in] myTempThresLow: Temperature threshold low value ( raw value ).
mcm 2:d6cde3037eac 580 *
mcm 2:d6cde3037eac 581 * @param[out] N/A.
mcm 2:d6cde3037eac 582 *
mcm 2:d6cde3037eac 583 *
mcm 2:d6cde3037eac 584 * @return Status of HDC2080_SetTemperatureThresLow.
mcm 2:d6cde3037eac 585 *
mcm 2:d6cde3037eac 586 *
mcm 2:d6cde3037eac 587 * @author Manuel Caballero
mcm 2:d6cde3037eac 588 * @date 19/November/2019
mcm 2:d6cde3037eac 589 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 590 * @pre N/A
mcm 2:d6cde3037eac 591 * @warning N/A.
mcm 2:d6cde3037eac 592 */
mcm 2:d6cde3037eac 593 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetTemperatureThresLow ( HDC2080_data_t myTempThresLow )
mcm 2:d6cde3037eac 594 {
mcm 2:d6cde3037eac 595 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 596 uint32_t aux;
mcm 2:d6cde3037eac 597
mcm 2:d6cde3037eac 598 /* Write the register */
mcm 2:d6cde3037eac 599 cmd[0] = HDC2080_TEMP_THR_L;
mcm 2:d6cde3037eac 600 cmd[1] = myTempThresLow.temp_thres_low;
mcm 2:d6cde3037eac 601 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 602
mcm 2:d6cde3037eac 603
mcm 2:d6cde3037eac 604
mcm 2:d6cde3037eac 605 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 606 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 607 } else {
mcm 2:d6cde3037eac 608 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 609 }
mcm 2:d6cde3037eac 610 }
mcm 2:d6cde3037eac 611
mcm 2:d6cde3037eac 612
mcm 2:d6cde3037eac 613
mcm 2:d6cde3037eac 614 /**
mcm 2:d6cde3037eac 615 * @brief HDC2080_GetTemperatureThresLow ( HDC2080_data_t* )
mcm 2:d6cde3037eac 616 *
mcm 2:d6cde3037eac 617 * @details It gets the temperature threshold low value ( raw value ).
mcm 2:d6cde3037eac 618 *
mcm 2:d6cde3037eac 619 * @param[in] N/A.
mcm 2:d6cde3037eac 620 *
mcm 2:d6cde3037eac 621 * @param[out] myTempThresLow: Temperature threshold low value ( raw value ).
mcm 2:d6cde3037eac 622 *
mcm 2:d6cde3037eac 623 *
mcm 2:d6cde3037eac 624 * @return Status of HDC2080_GetTemperatureThresLow.
mcm 2:d6cde3037eac 625 *
mcm 2:d6cde3037eac 626 *
mcm 2:d6cde3037eac 627 * @author Manuel Caballero
mcm 2:d6cde3037eac 628 * @date 19/November/2019
mcm 2:d6cde3037eac 629 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 630 * @pre N/A
mcm 2:d6cde3037eac 631 * @warning N/A.
mcm 2:d6cde3037eac 632 */
mcm 2:d6cde3037eac 633 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetTemperatureThresLow ( HDC2080_data_t* myTempThresLow )
mcm 2:d6cde3037eac 634 {
mcm 2:d6cde3037eac 635 char cmd = 0U;
mcm 2:d6cde3037eac 636 uint32_t aux;
mcm 2:d6cde3037eac 637
mcm 2:d6cde3037eac 638 /* Read the register */
mcm 2:d6cde3037eac 639 cmd = HDC2080_TEMP_THR_L;
mcm 2:d6cde3037eac 640 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 641 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 642
mcm 2:d6cde3037eac 643 /* Parse the data */
mcm 2:d6cde3037eac 644 myTempThresLow->temp_thres_low = cmd;
mcm 2:d6cde3037eac 645
mcm 2:d6cde3037eac 646
mcm 2:d6cde3037eac 647
mcm 2:d6cde3037eac 648 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 649 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 650 } else {
mcm 2:d6cde3037eac 651 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 652 }
mcm 2:d6cde3037eac 653 }
mcm 2:d6cde3037eac 654
mcm 2:d6cde3037eac 655
mcm 2:d6cde3037eac 656
mcm 2:d6cde3037eac 657 /**
mcm 2:d6cde3037eac 658 * @brief HDC2080_SetTemperatureThresHigh ( HDC2080_data_t )
mcm 2:d6cde3037eac 659 *
mcm 2:d6cde3037eac 660 * @details It sets the temperature threshold high value ( raw value ).
mcm 2:d6cde3037eac 661 *
mcm 2:d6cde3037eac 662 * @param[in] myTempThresHigh: Temperature threshold high value ( raw value ).
mcm 2:d6cde3037eac 663 *
mcm 2:d6cde3037eac 664 * @param[out] N/A.
mcm 2:d6cde3037eac 665 *
mcm 2:d6cde3037eac 666 *
mcm 2:d6cde3037eac 667 * @return Status of HDC2080_SetTemperatureThresHigh.
mcm 2:d6cde3037eac 668 *
mcm 2:d6cde3037eac 669 *
mcm 2:d6cde3037eac 670 * @author Manuel Caballero
mcm 2:d6cde3037eac 671 * @date 19/November/2019
mcm 2:d6cde3037eac 672 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 673 * @pre N/A
mcm 2:d6cde3037eac 674 * @warning N/A.
mcm 2:d6cde3037eac 675 */
mcm 2:d6cde3037eac 676 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetTemperatureThresHigh ( HDC2080_data_t myTempThresHigh )
mcm 2:d6cde3037eac 677 {
mcm 2:d6cde3037eac 678 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 679 uint32_t aux;
mcm 2:d6cde3037eac 680
mcm 2:d6cde3037eac 681 /* Write the register */
mcm 2:d6cde3037eac 682 cmd[0] = HDC2080_TEMP_THR_H;
mcm 2:d6cde3037eac 683 cmd[1] = myTempThresHigh.temp_thres_high;
mcm 2:d6cde3037eac 684 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 685
mcm 2:d6cde3037eac 686
mcm 2:d6cde3037eac 687
mcm 2:d6cde3037eac 688 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 689 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 690 } else {
mcm 2:d6cde3037eac 691 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 692 }
mcm 2:d6cde3037eac 693 }
mcm 2:d6cde3037eac 694
mcm 2:d6cde3037eac 695
mcm 2:d6cde3037eac 696
mcm 2:d6cde3037eac 697 /**
mcm 2:d6cde3037eac 698 * @brief HDC2080_GetTemperatureThresHigh ( HDC2080_data_t* )
mcm 2:d6cde3037eac 699 *
mcm 2:d6cde3037eac 700 * @details It gets the temperature threshold high value ( raw value ).
mcm 2:d6cde3037eac 701 *
mcm 2:d6cde3037eac 702 * @param[in] N/A.
mcm 2:d6cde3037eac 703 *
mcm 2:d6cde3037eac 704 * @param[out] myTempThresHigh: Temperature threshold high value ( raw value ).
mcm 2:d6cde3037eac 705 *
mcm 2:d6cde3037eac 706 *
mcm 2:d6cde3037eac 707 * @return Status of HDC2080_GetTemperatureThresHigh.
mcm 2:d6cde3037eac 708 *
mcm 2:d6cde3037eac 709 *
mcm 2:d6cde3037eac 710 * @author Manuel Caballero
mcm 2:d6cde3037eac 711 * @date 19/November/2019
mcm 2:d6cde3037eac 712 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 713 * @pre N/A
mcm 2:d6cde3037eac 714 * @warning N/A.
mcm 2:d6cde3037eac 715 */
mcm 2:d6cde3037eac 716 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetTemperatureThresHigh ( HDC2080_data_t* myTempThresHigh )
mcm 2:d6cde3037eac 717 {
mcm 2:d6cde3037eac 718 char cmd = 0U;
mcm 2:d6cde3037eac 719 uint32_t aux;
mcm 2:d6cde3037eac 720
mcm 2:d6cde3037eac 721 /* Read the register */
mcm 2:d6cde3037eac 722 cmd = HDC2080_TEMP_THR_H;
mcm 2:d6cde3037eac 723 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 724 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 725
mcm 2:d6cde3037eac 726 /* Parse the data */
mcm 2:d6cde3037eac 727 myTempThresHigh->temp_thres_high = cmd;
mcm 2:d6cde3037eac 728
mcm 2:d6cde3037eac 729
mcm 2:d6cde3037eac 730
mcm 2:d6cde3037eac 731 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 732 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 733 } else {
mcm 2:d6cde3037eac 734 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 735 }
mcm 2:d6cde3037eac 736 }
mcm 2:d6cde3037eac 737
mcm 2:d6cde3037eac 738
mcm 2:d6cde3037eac 739
mcm 2:d6cde3037eac 740 /**
mcm 2:d6cde3037eac 741 * @brief HDC2080_SetHumidityThresLow ( HDC2080_data_t )
mcm 2:d6cde3037eac 742 *
mcm 2:d6cde3037eac 743 * @details It sets the humidity threshold low value ( raw value ).
mcm 2:d6cde3037eac 744 *
mcm 2:d6cde3037eac 745 * @param[in] myTempThresLow: Humidity threshold low value ( raw value ).
mcm 2:d6cde3037eac 746 *
mcm 2:d6cde3037eac 747 * @param[out] N/A.
mcm 2:d6cde3037eac 748 *
mcm 2:d6cde3037eac 749 *
mcm 2:d6cde3037eac 750 * @return Status of HDC2080_SetHumidityThresLow.
mcm 2:d6cde3037eac 751 *
mcm 2:d6cde3037eac 752 *
mcm 2:d6cde3037eac 753 * @author Manuel Caballero
mcm 2:d6cde3037eac 754 * @date 19/November/2019
mcm 2:d6cde3037eac 755 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 756 * @pre N/A
mcm 2:d6cde3037eac 757 * @warning N/A.
mcm 2:d6cde3037eac 758 */
mcm 2:d6cde3037eac 759 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetHumidityThresLow ( HDC2080_data_t myHumThresLow )
mcm 2:d6cde3037eac 760 {
mcm 2:d6cde3037eac 761 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 762 uint32_t aux;
mcm 2:d6cde3037eac 763
mcm 2:d6cde3037eac 764 /* Write the register */
mcm 2:d6cde3037eac 765 cmd[0] = HDC2080_RH_THR_L;
mcm 2:d6cde3037eac 766 cmd[1] = myHumThresLow.hum_thres_low;
mcm 2:d6cde3037eac 767 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 768
mcm 2:d6cde3037eac 769
mcm 2:d6cde3037eac 770
mcm 2:d6cde3037eac 771 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 772 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 773 } else {
mcm 2:d6cde3037eac 774 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 775 }
mcm 2:d6cde3037eac 776 }
mcm 2:d6cde3037eac 777
mcm 2:d6cde3037eac 778
mcm 2:d6cde3037eac 779
mcm 2:d6cde3037eac 780 /**
mcm 2:d6cde3037eac 781 * @brief HDC2080_GetHumidityThresLow ( HDC2080_data_t* )
mcm 2:d6cde3037eac 782 *
mcm 2:d6cde3037eac 783 * @details It gets the humidity threshold low value ( raw value ).
mcm 2:d6cde3037eac 784 *
mcm 2:d6cde3037eac 785 * @param[in] N/A.
mcm 2:d6cde3037eac 786 *
mcm 2:d6cde3037eac 787 * @param[out] myHumThresLow: Humidity threshold low value ( raw value ).
mcm 2:d6cde3037eac 788 *
mcm 2:d6cde3037eac 789 *
mcm 2:d6cde3037eac 790 * @return Status of HDC2080_GetHumidityThresLow.
mcm 2:d6cde3037eac 791 *
mcm 2:d6cde3037eac 792 *
mcm 2:d6cde3037eac 793 * @author Manuel Caballero
mcm 2:d6cde3037eac 794 * @date 19/November/2019
mcm 2:d6cde3037eac 795 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 796 * @pre N/A
mcm 2:d6cde3037eac 797 * @warning N/A.
mcm 2:d6cde3037eac 798 */
mcm 2:d6cde3037eac 799 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetHumidityThresLow ( HDC2080_data_t* myHumThresLow )
mcm 2:d6cde3037eac 800 {
mcm 2:d6cde3037eac 801 char cmd = 0U;
mcm 2:d6cde3037eac 802 uint32_t aux;
mcm 2:d6cde3037eac 803
mcm 2:d6cde3037eac 804 /* Read the register */
mcm 2:d6cde3037eac 805 cmd = HDC2080_RH_THR_L;
mcm 2:d6cde3037eac 806 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 807 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 808
mcm 2:d6cde3037eac 809 /* Parse the data */
mcm 2:d6cde3037eac 810 myHumThresLow->hum_thres_low = cmd;
mcm 2:d6cde3037eac 811
mcm 2:d6cde3037eac 812
mcm 2:d6cde3037eac 813
mcm 2:d6cde3037eac 814 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 815 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 816 } else {
mcm 2:d6cde3037eac 817 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 818 }
mcm 2:d6cde3037eac 819 }
mcm 2:d6cde3037eac 820
mcm 2:d6cde3037eac 821
mcm 2:d6cde3037eac 822
mcm 2:d6cde3037eac 823 /**
mcm 2:d6cde3037eac 824 * @brief HDC2080_SetHumidityThresHigh ( HDC2080_data_t )
mcm 2:d6cde3037eac 825 *
mcm 2:d6cde3037eac 826 * @details It sets the humidity threshold high value ( raw value ).
mcm 2:d6cde3037eac 827 *
mcm 2:d6cde3037eac 828 * @param[in] myHumThresHigh: Humidity threshold high value ( raw value ).
mcm 2:d6cde3037eac 829 *
mcm 2:d6cde3037eac 830 * @param[out] N/A.
mcm 2:d6cde3037eac 831 *
mcm 2:d6cde3037eac 832 *
mcm 2:d6cde3037eac 833 * @return Status of HDC2080_SetHumidityThresHigh.
mcm 2:d6cde3037eac 834 *
mcm 2:d6cde3037eac 835 *
mcm 2:d6cde3037eac 836 * @author Manuel Caballero
mcm 2:d6cde3037eac 837 * @date 19/November/2019
mcm 2:d6cde3037eac 838 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 839 * @pre N/A
mcm 2:d6cde3037eac 840 * @warning N/A.
mcm 2:d6cde3037eac 841 */
mcm 2:d6cde3037eac 842 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetHumidityThresHigh ( HDC2080_data_t myHumThresHigh )
mcm 2:d6cde3037eac 843 {
mcm 2:d6cde3037eac 844 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 845 uint32_t aux;
mcm 2:d6cde3037eac 846
mcm 2:d6cde3037eac 847 /* Write the register */
mcm 2:d6cde3037eac 848 cmd[0] = HDC2080_RH_THR_H;
mcm 2:d6cde3037eac 849 cmd[1] = myHumThresHigh.hum_thres_high;
mcm 2:d6cde3037eac 850 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 851
mcm 2:d6cde3037eac 852
mcm 2:d6cde3037eac 853
mcm 2:d6cde3037eac 854 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 855 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 856 } else {
mcm 2:d6cde3037eac 857 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 858 }
mcm 2:d6cde3037eac 859 }
mcm 2:d6cde3037eac 860
mcm 2:d6cde3037eac 861
mcm 2:d6cde3037eac 862
mcm 2:d6cde3037eac 863 /**
mcm 2:d6cde3037eac 864 * @brief HDC2080_GetHumidityThresHigh ( HDC2080_data_t* )
mcm 2:d6cde3037eac 865 *
mcm 2:d6cde3037eac 866 * @details It gets the humidity threshold high value ( raw value ).
mcm 2:d6cde3037eac 867 *
mcm 2:d6cde3037eac 868 * @param[in] N/A.
mcm 2:d6cde3037eac 869 *
mcm 2:d6cde3037eac 870 * @param[out] myHumThresHigh: Humidity threshold high value ( raw value ).
mcm 2:d6cde3037eac 871 *
mcm 2:d6cde3037eac 872 *
mcm 2:d6cde3037eac 873 * @return Status of HDC2080_GetHumidityThresHigh.
mcm 2:d6cde3037eac 874 *
mcm 2:d6cde3037eac 875 *
mcm 2:d6cde3037eac 876 * @author Manuel Caballero
mcm 2:d6cde3037eac 877 * @date 19/November/2019
mcm 2:d6cde3037eac 878 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 879 * @pre N/A
mcm 2:d6cde3037eac 880 * @warning N/A.
mcm 2:d6cde3037eac 881 */
mcm 2:d6cde3037eac 882 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetHumidityThresHigh ( HDC2080_data_t* myHumThresHigh )
mcm 2:d6cde3037eac 883 {
mcm 2:d6cde3037eac 884 char cmd = 0U;
mcm 2:d6cde3037eac 885 uint32_t aux;
mcm 2:d6cde3037eac 886
mcm 2:d6cde3037eac 887 /* Read the register */
mcm 2:d6cde3037eac 888 cmd = HDC2080_RH_THR_H;
mcm 2:d6cde3037eac 889 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 890 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 891
mcm 2:d6cde3037eac 892 /* Parse the data */
mcm 2:d6cde3037eac 893 myHumThresHigh->hum_thres_high = cmd;
mcm 2:d6cde3037eac 894
mcm 2:d6cde3037eac 895
mcm 2:d6cde3037eac 896
mcm 2:d6cde3037eac 897 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 898 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 899 } else {
mcm 2:d6cde3037eac 900 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 901 }
mcm 2:d6cde3037eac 902 }
mcm 2:d6cde3037eac 903
mcm 2:d6cde3037eac 904
mcm 2:d6cde3037eac 905
mcm 2:d6cde3037eac 906 /**
mcm 2:d6cde3037eac 907 * @brief HDC2080_SetSoftReset ( void )
mcm 2:d6cde3037eac 908 *
mcm 2:d6cde3037eac 909 * @details It makes a soft reset.
mcm 2:d6cde3037eac 910 *
mcm 2:d6cde3037eac 911 * @param[in] N/A.
mcm 2:d6cde3037eac 912 *
mcm 2:d6cde3037eac 913 * @param[out] N/A.
mcm 2:d6cde3037eac 914 *
mcm 2:d6cde3037eac 915 *
mcm 2:d6cde3037eac 916 * @return Status of HDC2080_SetSoftReset.
mcm 2:d6cde3037eac 917 *
mcm 2:d6cde3037eac 918 *
mcm 2:d6cde3037eac 919 * @author Manuel Caballero
mcm 2:d6cde3037eac 920 * @date 19/November/2019
mcm 2:d6cde3037eac 921 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 922 * @pre This bit is self-clear.
mcm 2:d6cde3037eac 923 * @warning N/A.
mcm 2:d6cde3037eac 924 */
mcm 2:d6cde3037eac 925 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetSoftReset ( void )
mcm 2:d6cde3037eac 926 {
mcm 2:d6cde3037eac 927 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 928 uint32_t aux;
mcm 2:d6cde3037eac 929
mcm 2:d6cde3037eac 930 /* Read the register */
mcm 2:d6cde3037eac 931 cmd[0] = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 932 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 933 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 934
mcm 2:d6cde3037eac 935 /* Update the register */
mcm 2:d6cde3037eac 936 cmd[1] |= RESET_DRDY_INT_CONF_SOFT_RES_RESET;
mcm 2:d6cde3037eac 937 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 938
mcm 2:d6cde3037eac 939
mcm 2:d6cde3037eac 940
mcm 2:d6cde3037eac 941 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 942 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 943 } else {
mcm 2:d6cde3037eac 944 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 945 }
mcm 2:d6cde3037eac 946 }
mcm 2:d6cde3037eac 947
mcm 2:d6cde3037eac 948
mcm 2:d6cde3037eac 949
mcm 2:d6cde3037eac 950 /**
mcm 2:d6cde3037eac 951 * @brief HDC2080_GetSoftReset ( HDC2080_data_t* )
mcm 2:d6cde3037eac 952 *
mcm 2:d6cde3037eac 953 * @details It checks the soft reset flag.
mcm 2:d6cde3037eac 954 *
mcm 2:d6cde3037eac 955 * @param[in] N/A.
mcm 2:d6cde3037eac 956 *
mcm 2:d6cde3037eac 957 * @param[out] mySoftResetFlag: Soft reset flag.
mcm 2:d6cde3037eac 958 *
mcm 2:d6cde3037eac 959 *
mcm 2:d6cde3037eac 960 * @return Status of HDC2080_SetSoftReset.
mcm 2:d6cde3037eac 961 *
mcm 2:d6cde3037eac 962 *
mcm 2:d6cde3037eac 963 * @author Manuel Caballero
mcm 2:d6cde3037eac 964 * @date 19/November/2019
mcm 2:d6cde3037eac 965 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 966 * @pre N/A.
mcm 2:d6cde3037eac 967 * @warning N/A.
mcm 2:d6cde3037eac 968 */
mcm 2:d6cde3037eac 969 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetSoftReset ( HDC2080_data_t* mySoftResetFlag )
mcm 2:d6cde3037eac 970 {
mcm 2:d6cde3037eac 971 char cmd = 0U;
mcm 2:d6cde3037eac 972 uint32_t aux;
mcm 2:d6cde3037eac 973
mcm 2:d6cde3037eac 974 /* Read the register */
mcm 2:d6cde3037eac 975 cmd = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 976 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 977 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 978
mcm 2:d6cde3037eac 979 /* Parse the data */
mcm 2:d6cde3037eac 980 mySoftResetFlag->soft_res = (HDC2080_reset_drdy_int_conf_soft_res_t)( RESET_DRDY_INT_CONF_SOFT_RES_MASK & cmd );
mcm 2:d6cde3037eac 981
mcm 2:d6cde3037eac 982
mcm 2:d6cde3037eac 983
mcm 2:d6cde3037eac 984 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 985 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 986 } else {
mcm 2:d6cde3037eac 987 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 988 }
mcm 2:d6cde3037eac 989 }
mcm 2:d6cde3037eac 990
mcm 2:d6cde3037eac 991
mcm 2:d6cde3037eac 992
mcm 2:d6cde3037eac 993 /**
mcm 2:d6cde3037eac 994 * @brief HDC2080_SetAutoMeasurementMode ( HDC2080_data_t )
mcm 2:d6cde3037eac 995 *
mcm 2:d6cde3037eac 996 * @details It sets auto measurement mode ( AMM ).
mcm 2:d6cde3037eac 997 *
mcm 2:d6cde3037eac 998 * @param[in] myAMM: Auto measurement mode.
mcm 2:d6cde3037eac 999 *
mcm 2:d6cde3037eac 1000 * @param[out] N/A.
mcm 2:d6cde3037eac 1001 *
mcm 2:d6cde3037eac 1002 *
mcm 2:d6cde3037eac 1003 * @return Status of HDC2080_SetAutoMeasurementMode.
mcm 2:d6cde3037eac 1004 *
mcm 2:d6cde3037eac 1005 *
mcm 2:d6cde3037eac 1006 * @author Manuel Caballero
mcm 2:d6cde3037eac 1007 * @date 19/November/2019
mcm 2:d6cde3037eac 1008 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1009 * @pre N/A.
mcm 2:d6cde3037eac 1010 * @warning N/A.
mcm 2:d6cde3037eac 1011 */
mcm 2:d6cde3037eac 1012 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetAutoMeasurementMode ( HDC2080_data_t myAMM )
mcm 2:d6cde3037eac 1013 {
mcm 2:d6cde3037eac 1014 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1015 uint32_t aux;
mcm 2:d6cde3037eac 1016
mcm 2:d6cde3037eac 1017 /* Read the register */
mcm 2:d6cde3037eac 1018 cmd[0] = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1019 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1020 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 1021
mcm 2:d6cde3037eac 1022 /* Update the register */
mcm 2:d6cde3037eac 1023 cmd[1] &= ~( RESET_DRDY_INT_CONF_AMM_MASK );
mcm 2:d6cde3037eac 1024 cmd[1] |= ( myAMM.amm );
mcm 2:d6cde3037eac 1025 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 1026
mcm 2:d6cde3037eac 1027
mcm 2:d6cde3037eac 1028
mcm 2:d6cde3037eac 1029 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1030 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1031 } else {
mcm 2:d6cde3037eac 1032 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1033 }
mcm 2:d6cde3037eac 1034 }
mcm 2:d6cde3037eac 1035
mcm 2:d6cde3037eac 1036
mcm 2:d6cde3037eac 1037
mcm 2:d6cde3037eac 1038 /**
mcm 2:d6cde3037eac 1039 * @brief HDC2080_GetAutoMeasurementMode ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1040 *
mcm 2:d6cde3037eac 1041 * @details It gets auto measurement mode ( AMM ).
mcm 2:d6cde3037eac 1042 *
mcm 2:d6cde3037eac 1043 * @param[in] N/A.
mcm 2:d6cde3037eac 1044 *
mcm 2:d6cde3037eac 1045 * @param[out] myAMM: Auto measurement mode.
mcm 2:d6cde3037eac 1046 *
mcm 2:d6cde3037eac 1047 *
mcm 2:d6cde3037eac 1048 * @return Status of HDC2080_GetAutoMeasurementMode.
mcm 2:d6cde3037eac 1049 *
mcm 2:d6cde3037eac 1050 *
mcm 2:d6cde3037eac 1051 * @author Manuel Caballero
mcm 2:d6cde3037eac 1052 * @date 19/November/2019
mcm 2:d6cde3037eac 1053 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1054 * @pre N/A.
mcm 2:d6cde3037eac 1055 * @warning N/A.
mcm 2:d6cde3037eac 1056 */
mcm 2:d6cde3037eac 1057 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetAutoMeasurementMode ( HDC2080_data_t* myAMM )
mcm 2:d6cde3037eac 1058 {
mcm 2:d6cde3037eac 1059 char cmd = 0U;
mcm 2:d6cde3037eac 1060 uint32_t aux;
mcm 2:d6cde3037eac 1061
mcm 2:d6cde3037eac 1062 /* Read the register */
mcm 2:d6cde3037eac 1063 cmd = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1064 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 1065 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 1066
mcm 2:d6cde3037eac 1067 /* Parse the data */
mcm 2:d6cde3037eac 1068 myAMM->amm = (HDC2080_reset_drdy_int_conf_amm_t)( RESET_DRDY_INT_CONF_AMM_MASK & cmd );
mcm 2:d6cde3037eac 1069
mcm 2:d6cde3037eac 1070
mcm 2:d6cde3037eac 1071
mcm 2:d6cde3037eac 1072 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1073 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1074 } else {
mcm 2:d6cde3037eac 1075 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1076 }
mcm 2:d6cde3037eac 1077 }
mcm 2:d6cde3037eac 1078
mcm 2:d6cde3037eac 1079
mcm 2:d6cde3037eac 1080
mcm 2:d6cde3037eac 1081 /**
mcm 2:d6cde3037eac 1082 * @brief HDC2080_SetHeaterMode ( HDC2080_data_t )
mcm 2:d6cde3037eac 1083 *
mcm 2:d6cde3037eac 1084 * @details It sets the heater mode.
mcm 2:d6cde3037eac 1085 *
mcm 2:d6cde3037eac 1086 * @param[in] myHeatEn: Heater mode: On/Off.
mcm 2:d6cde3037eac 1087 *
mcm 2:d6cde3037eac 1088 * @param[out] N/A.
mcm 2:d6cde3037eac 1089 *
mcm 2:d6cde3037eac 1090 *
mcm 2:d6cde3037eac 1091 * @return Status of HDC2080_SetHeaterMode.
mcm 2:d6cde3037eac 1092 *
mcm 2:d6cde3037eac 1093 *
mcm 2:d6cde3037eac 1094 * @author Manuel Caballero
mcm 2:d6cde3037eac 1095 * @date 19/November/2019
mcm 2:d6cde3037eac 1096 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1097 * @pre N/A.
mcm 2:d6cde3037eac 1098 * @warning N/A.
mcm 2:d6cde3037eac 1099 */
mcm 2:d6cde3037eac 1100 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetHeaterMode ( HDC2080_data_t myHeatEn )
mcm 2:d6cde3037eac 1101 {
mcm 2:d6cde3037eac 1102 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1103 uint32_t aux;
mcm 2:d6cde3037eac 1104
mcm 2:d6cde3037eac 1105 /* Read the register */
mcm 2:d6cde3037eac 1106 cmd[0] = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1107 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1108 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 1109
mcm 2:d6cde3037eac 1110 /* Update the register */
mcm 2:d6cde3037eac 1111 cmd[1] &= ~( RESET_DRDY_INT_CONF_HEAT_EN_MASK );
mcm 2:d6cde3037eac 1112 cmd[1] |= ( myHeatEn.heater_en );
mcm 2:d6cde3037eac 1113 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 1114
mcm 2:d6cde3037eac 1115
mcm 2:d6cde3037eac 1116
mcm 2:d6cde3037eac 1117 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1118 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1119 } else {
mcm 2:d6cde3037eac 1120 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1121 }
mcm 2:d6cde3037eac 1122 }
mcm 2:d6cde3037eac 1123
mcm 2:d6cde3037eac 1124
mcm 2:d6cde3037eac 1125
mcm 2:d6cde3037eac 1126 /**
mcm 2:d6cde3037eac 1127 * @brief HDC2080_GetHeaterMode ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1128 *
mcm 2:d6cde3037eac 1129 * @details It gets the heater mode.
mcm 2:d6cde3037eac 1130 *
mcm 2:d6cde3037eac 1131 * @param[in] N/A.
mcm 2:d6cde3037eac 1132 *
mcm 2:d6cde3037eac 1133 * @param[out] myHeatEn: Heater mode: On/Off..
mcm 2:d6cde3037eac 1134 *
mcm 2:d6cde3037eac 1135 *
mcm 2:d6cde3037eac 1136 * @return Status of HDC2080_GetHeaterMode.
mcm 2:d6cde3037eac 1137 *
mcm 2:d6cde3037eac 1138 *
mcm 2:d6cde3037eac 1139 * @author Manuel Caballero
mcm 2:d6cde3037eac 1140 * @date 19/November/2019
mcm 2:d6cde3037eac 1141 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1142 * @pre N/A.
mcm 2:d6cde3037eac 1143 * @warning N/A.
mcm 2:d6cde3037eac 1144 */
mcm 2:d6cde3037eac 1145 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetHeaterMode ( HDC2080_data_t* myHeatEn )
mcm 2:d6cde3037eac 1146 {
mcm 2:d6cde3037eac 1147 char cmd = 0U;
mcm 2:d6cde3037eac 1148 uint32_t aux;
mcm 2:d6cde3037eac 1149
mcm 2:d6cde3037eac 1150 /* Read the register */
mcm 2:d6cde3037eac 1151 cmd = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1152 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 1153 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 1154
mcm 2:d6cde3037eac 1155 /* Parse the data */
mcm 2:d6cde3037eac 1156 myHeatEn->heater_en = (HDC2080_reset_drdy_int_conf_heat_en_t)( RESET_DRDY_INT_CONF_HEAT_EN_MASK & cmd );
mcm 2:d6cde3037eac 1157
mcm 2:d6cde3037eac 1158
mcm 2:d6cde3037eac 1159
mcm 2:d6cde3037eac 1160 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1161 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1162 } else {
mcm 2:d6cde3037eac 1163 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1164 }
mcm 2:d6cde3037eac 1165 }
mcm 2:d6cde3037eac 1166
mcm 2:d6cde3037eac 1167
mcm 2:d6cde3037eac 1168
mcm 2:d6cde3037eac 1169 /**
mcm 2:d6cde3037eac 1170 * @brief HDC2080_SetPinConfifuration ( HDC2080_data_t )
mcm 2:d6cde3037eac 1171 *
mcm 2:d6cde3037eac 1172 * @details It sets the DRDY/INT_EN pin configuration.
mcm 2:d6cde3037eac 1173 *
mcm 2:d6cde3037eac 1174 * @param[in] myPinConfiguration: DRDY/INT_EN pin configuration.
mcm 2:d6cde3037eac 1175 *
mcm 2:d6cde3037eac 1176 * @param[out] N/A.
mcm 2:d6cde3037eac 1177 *
mcm 2:d6cde3037eac 1178 *
mcm 2:d6cde3037eac 1179 * @return Status of HDC2080_SetPinConfifuration.
mcm 2:d6cde3037eac 1180 *
mcm 2:d6cde3037eac 1181 *
mcm 2:d6cde3037eac 1182 * @author Manuel Caballero
mcm 2:d6cde3037eac 1183 * @date 19/November/2019
mcm 2:d6cde3037eac 1184 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1185 * @pre N/A.
mcm 2:d6cde3037eac 1186 * @warning N/A.
mcm 2:d6cde3037eac 1187 */
mcm 2:d6cde3037eac 1188 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetPinConfifuration ( HDC2080_data_t myPinConfiguration )
mcm 2:d6cde3037eac 1189 {
mcm 2:d6cde3037eac 1190 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1191 uint32_t aux;
mcm 2:d6cde3037eac 1192
mcm 2:d6cde3037eac 1193 /* Read the register */
mcm 2:d6cde3037eac 1194 cmd[0] = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1195 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1196 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 1197
mcm 2:d6cde3037eac 1198 /* Update the register */
mcm 2:d6cde3037eac 1199 cmd[1] &= ~( RESET_DRDY_INT_CONF_DRDY_INT_EN_MASK );
mcm 2:d6cde3037eac 1200 cmd[1] |= ( myPinConfiguration.drdy_intEn );
mcm 2:d6cde3037eac 1201 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 1202
mcm 2:d6cde3037eac 1203
mcm 2:d6cde3037eac 1204
mcm 2:d6cde3037eac 1205 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1206 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1207 } else {
mcm 2:d6cde3037eac 1208 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1209 }
mcm 2:d6cde3037eac 1210 }
mcm 2:d6cde3037eac 1211
mcm 2:d6cde3037eac 1212
mcm 2:d6cde3037eac 1213
mcm 2:d6cde3037eac 1214 /**
mcm 2:d6cde3037eac 1215 * @brief HDC2080_GetPinConfiguration ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1216 *
mcm 2:d6cde3037eac 1217 * @details It gets the DRDY/INT_EN pin configuration.
mcm 2:d6cde3037eac 1218 *
mcm 2:d6cde3037eac 1219 * @param[in] N/A.
mcm 2:d6cde3037eac 1220 *
mcm 2:d6cde3037eac 1221 * @param[out] myPinConfiguration: DRDY/INT_EN pin configuration..
mcm 2:d6cde3037eac 1222 *
mcm 2:d6cde3037eac 1223 *
mcm 2:d6cde3037eac 1224 * @return Status of HDC2080_GetPinConfiguration.
mcm 2:d6cde3037eac 1225 *
mcm 2:d6cde3037eac 1226 *
mcm 2:d6cde3037eac 1227 * @author Manuel Caballero
mcm 2:d6cde3037eac 1228 * @date 19/November/2019
mcm 2:d6cde3037eac 1229 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1230 * @pre N/A.
mcm 2:d6cde3037eac 1231 * @warning N/A.
mcm 2:d6cde3037eac 1232 */
mcm 2:d6cde3037eac 1233 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetPinConfiguration ( HDC2080_data_t* myPinConfiguration )
mcm 2:d6cde3037eac 1234 {
mcm 2:d6cde3037eac 1235 char cmd = 0U;
mcm 2:d6cde3037eac 1236 uint32_t aux;
mcm 2:d6cde3037eac 1237
mcm 2:d6cde3037eac 1238 /* Read the register */
mcm 2:d6cde3037eac 1239 cmd = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1240 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 1241 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 1242
mcm 2:d6cde3037eac 1243 /* Update the register */
mcm 2:d6cde3037eac 1244 myPinConfiguration->drdy_intEn = (HDC2080_reset_drdy_int_conf_drdr_int_en_t)( RESET_DRDY_INT_CONF_DRDY_INT_EN_MASK & cmd );
mcm 2:d6cde3037eac 1245
mcm 2:d6cde3037eac 1246
mcm 2:d6cde3037eac 1247
mcm 2:d6cde3037eac 1248 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1249 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1250 } else {
mcm 2:d6cde3037eac 1251 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1252 }
mcm 2:d6cde3037eac 1253 }
mcm 2:d6cde3037eac 1254
mcm 2:d6cde3037eac 1255
mcm 2:d6cde3037eac 1256
mcm 2:d6cde3037eac 1257 /**
mcm 2:d6cde3037eac 1258 * @brief HDC2080_SetInterruptPolarity ( HDC2080_data_t )
mcm 2:d6cde3037eac 1259 *
mcm 2:d6cde3037eac 1260 * @details It sets the interrupt polarity
mcm 2:d6cde3037eac 1261 *
mcm 2:d6cde3037eac 1262 * @param[in] myIntPol: Interrupt polarity: Active Low/High.
mcm 2:d6cde3037eac 1263 *
mcm 2:d6cde3037eac 1264 * @param[out] N/A.
mcm 2:d6cde3037eac 1265 *
mcm 2:d6cde3037eac 1266 *
mcm 2:d6cde3037eac 1267 * @return Status of HDC2080_SetInterruptPolarity.
mcm 2:d6cde3037eac 1268 *
mcm 2:d6cde3037eac 1269 *
mcm 2:d6cde3037eac 1270 * @author Manuel Caballero
mcm 2:d6cde3037eac 1271 * @date 19/November/2019
mcm 2:d6cde3037eac 1272 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1273 * @pre N/A.
mcm 2:d6cde3037eac 1274 * @warning N/A.
mcm 2:d6cde3037eac 1275 */
mcm 2:d6cde3037eac 1276 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetInterruptPolarity ( HDC2080_data_t myIntPol )
mcm 2:d6cde3037eac 1277 {
mcm 2:d6cde3037eac 1278 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1279 uint32_t aux;
mcm 2:d6cde3037eac 1280
mcm 2:d6cde3037eac 1281 /* Read the register */
mcm 2:d6cde3037eac 1282 cmd[0] = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1283 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1284 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 1285
mcm 2:d6cde3037eac 1286 /* Update the register */
mcm 2:d6cde3037eac 1287 cmd[1] &= ~( RESET_DRDY_INT_CONF_INT_POL_MASK );
mcm 2:d6cde3037eac 1288 cmd[1] |= ( myIntPol.int_pol );
mcm 2:d6cde3037eac 1289 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 1290
mcm 2:d6cde3037eac 1291
mcm 2:d6cde3037eac 1292
mcm 2:d6cde3037eac 1293 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1294 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1295 } else {
mcm 2:d6cde3037eac 1296 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1297 }
mcm 2:d6cde3037eac 1298 }
mcm 2:d6cde3037eac 1299
mcm 2:d6cde3037eac 1300
mcm 2:d6cde3037eac 1301
mcm 2:d6cde3037eac 1302 /**
mcm 2:d6cde3037eac 1303 * @brief HDC2080_GetInterruptPolarity ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1304 *
mcm 2:d6cde3037eac 1305 * @details It gets the interrupt polarity
mcm 2:d6cde3037eac 1306 *
mcm 2:d6cde3037eac 1307 * @param[in] N/A.
mcm 2:d6cde3037eac 1308 *
mcm 2:d6cde3037eac 1309 * @param[out] myIntPol: Interrupt polarity: Active Low/High.
mcm 2:d6cde3037eac 1310 *
mcm 2:d6cde3037eac 1311 *
mcm 2:d6cde3037eac 1312 * @return Status of HDC2080_GetInterruptPolarity.
mcm 2:d6cde3037eac 1313 *
mcm 2:d6cde3037eac 1314 *
mcm 2:d6cde3037eac 1315 * @author Manuel Caballero
mcm 2:d6cde3037eac 1316 * @date 19/November/2019
mcm 2:d6cde3037eac 1317 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1318 * @pre N/A.
mcm 2:d6cde3037eac 1319 * @warning N/A.
mcm 2:d6cde3037eac 1320 */
mcm 2:d6cde3037eac 1321 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetInterruptPolarity ( HDC2080_data_t* myIntPol )
mcm 2:d6cde3037eac 1322 {
mcm 2:d6cde3037eac 1323 char cmd = 0U;
mcm 2:d6cde3037eac 1324 uint32_t aux;
mcm 2:d6cde3037eac 1325
mcm 2:d6cde3037eac 1326 /* Read the register */
mcm 2:d6cde3037eac 1327 cmd = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1328 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 1329 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 1330
mcm 2:d6cde3037eac 1331 /* Parse the data */
mcm 2:d6cde3037eac 1332 myIntPol->int_pol = (HDC2080_reset_drdy_int_conf_int_pol_t)( RESET_DRDY_INT_CONF_INT_POL_MASK & cmd );
mcm 2:d6cde3037eac 1333
mcm 2:d6cde3037eac 1334
mcm 2:d6cde3037eac 1335
mcm 2:d6cde3037eac 1336 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1337 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1338 } else {
mcm 2:d6cde3037eac 1339 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1340 }
mcm 2:d6cde3037eac 1341 }
mcm 2:d6cde3037eac 1342
mcm 2:d6cde3037eac 1343
mcm 2:d6cde3037eac 1344
mcm 2:d6cde3037eac 1345 /**
mcm 2:d6cde3037eac 1346 * @brief HDC2080_SetInterruptMode ( HDC2080_data_t )
mcm 2:d6cde3037eac 1347 *
mcm 2:d6cde3037eac 1348 * @details It sets the interrupt mode
mcm 2:d6cde3037eac 1349 *
mcm 2:d6cde3037eac 1350 * @param[in] myIntMode: Interrupt mode: Level sensitive/Comparator mode.
mcm 2:d6cde3037eac 1351 *
mcm 2:d6cde3037eac 1352 * @param[out] N/A.
mcm 2:d6cde3037eac 1353 *
mcm 2:d6cde3037eac 1354 *
mcm 2:d6cde3037eac 1355 * @return Status of HDC2080_SetInterruptMode.
mcm 2:d6cde3037eac 1356 *
mcm 2:d6cde3037eac 1357 *
mcm 2:d6cde3037eac 1358 * @author Manuel Caballero
mcm 2:d6cde3037eac 1359 * @date 19/November/2019
mcm 2:d6cde3037eac 1360 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1361 * @pre N/A.
mcm 2:d6cde3037eac 1362 * @warning N/A.
mcm 2:d6cde3037eac 1363 */
mcm 2:d6cde3037eac 1364 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetInterruptMode ( HDC2080_data_t myIntMode )
mcm 2:d6cde3037eac 1365 {
mcm 2:d6cde3037eac 1366 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1367 uint32_t aux;
mcm 2:d6cde3037eac 1368
mcm 2:d6cde3037eac 1369 /* Read the register */
mcm 2:d6cde3037eac 1370 cmd[0] = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1371 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1372 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 1373
mcm 2:d6cde3037eac 1374 /* Update the register */
mcm 2:d6cde3037eac 1375 cmd[1] &= ~( RESET_DRDY_INT_CONF_INT_MODE_MASK );
mcm 2:d6cde3037eac 1376 cmd[1] |= ( myIntMode.int_mode );
mcm 2:d6cde3037eac 1377 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 1378
mcm 2:d6cde3037eac 1379
mcm 2:d6cde3037eac 1380
mcm 2:d6cde3037eac 1381 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1382 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1383 } else {
mcm 2:d6cde3037eac 1384 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1385 }
mcm 2:d6cde3037eac 1386 }
mcm 2:d6cde3037eac 1387
mcm 2:d6cde3037eac 1388
mcm 2:d6cde3037eac 1389
mcm 2:d6cde3037eac 1390 /**
mcm 2:d6cde3037eac 1391 * @brief HDC2080_GetInterruptMode ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1392 *
mcm 2:d6cde3037eac 1393 * @details It gets the interrupt mode
mcm 2:d6cde3037eac 1394 *
mcm 2:d6cde3037eac 1395 * @param[in] N/A.
mcm 2:d6cde3037eac 1396 *
mcm 2:d6cde3037eac 1397 * @param[out] myIntMode: Interrupt mode: Level sensitive/Comparator mode.
mcm 2:d6cde3037eac 1398 *
mcm 2:d6cde3037eac 1399 *
mcm 2:d6cde3037eac 1400 * @return Status of HDC2080_GetInterruptMode.
mcm 2:d6cde3037eac 1401 *
mcm 2:d6cde3037eac 1402 *
mcm 2:d6cde3037eac 1403 * @author Manuel Caballero
mcm 2:d6cde3037eac 1404 * @date 19/November/2019
mcm 2:d6cde3037eac 1405 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1406 * @pre N/A.
mcm 2:d6cde3037eac 1407 * @warning N/A.
mcm 2:d6cde3037eac 1408 */
mcm 2:d6cde3037eac 1409 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetInterruptMode ( HDC2080_data_t* myIntMode )
mcm 2:d6cde3037eac 1410 {
mcm 2:d6cde3037eac 1411 char cmd = 0U;
mcm 2:d6cde3037eac 1412 uint32_t aux;
mcm 2:d6cde3037eac 1413
mcm 2:d6cde3037eac 1414 /* Read the register */
mcm 2:d6cde3037eac 1415 cmd = HDC2080_RESET_DRDY_INT_CONF;
mcm 2:d6cde3037eac 1416 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 1417 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 1418
mcm 2:d6cde3037eac 1419 /* Parse the data */
mcm 2:d6cde3037eac 1420 myIntMode->int_mode = (HDC2080_reset_drdy_int_conf_int_mode_t)( RESET_DRDY_INT_CONF_INT_MODE_MASK & cmd );
mcm 2:d6cde3037eac 1421
mcm 2:d6cde3037eac 1422
mcm 2:d6cde3037eac 1423
mcm 2:d6cde3037eac 1424 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1425 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1426 } else {
mcm 2:d6cde3037eac 1427 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1428 }
mcm 2:d6cde3037eac 1429 }
mcm 2:d6cde3037eac 1430
mcm 2:d6cde3037eac 1431
mcm 2:d6cde3037eac 1432
mcm 2:d6cde3037eac 1433 /**
mcm 2:d6cde3037eac 1434 * @brief HDC2080_SetMeasurementConf ( HDC2080_data_t )
mcm 2:d6cde3037eac 1435 *
mcm 2:d6cde3037eac 1436 * @details It sets the measurement configuration.
mcm 2:d6cde3037eac 1437 *
mcm 2:d6cde3037eac 1438 * @param[in] myMeasConf: Temperature resolution, Humidity resolution and Measurement configuration.
mcm 2:d6cde3037eac 1439 *
mcm 2:d6cde3037eac 1440 * @param[out] N/A.
mcm 2:d6cde3037eac 1441 *
mcm 2:d6cde3037eac 1442 *
mcm 2:d6cde3037eac 1443 * @return Status of HDC2080_SetMeasurementConf.
mcm 2:d6cde3037eac 1444 *
mcm 2:d6cde3037eac 1445 *
mcm 2:d6cde3037eac 1446 * @author Manuel Caballero
mcm 2:d6cde3037eac 1447 * @date 19/November/2019
mcm 2:d6cde3037eac 1448 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1449 * @pre N/A.
mcm 2:d6cde3037eac 1450 * @warning N/A.
mcm 2:d6cde3037eac 1451 */
mcm 2:d6cde3037eac 1452 HDC2080::HDC2080_status_t HDC2080::HDC2080_SetMeasurementConf ( HDC2080_data_t myMeasConf )
mcm 2:d6cde3037eac 1453 {
mcm 2:d6cde3037eac 1454 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1455 uint32_t aux;
mcm 2:d6cde3037eac 1456
mcm 2:d6cde3037eac 1457 /* Read the register */
mcm 2:d6cde3037eac 1458 cmd[0] = HDC2080_MEASUREMENT_CONFIGURATION;
mcm 2:d6cde3037eac 1459 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1460 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 1461
mcm 2:d6cde3037eac 1462 /* Update the register */
mcm 2:d6cde3037eac 1463 cmd[1] &= ~( MEASUREMENT_CONF_TRES_MASK | MEASUREMENT_CONF_HRES_MASK | MEASUREMENT_CONF_MEAS_CONF_MASK );
mcm 2:d6cde3037eac 1464 cmd[1] |= ( myMeasConf.tres | myMeasConf.hres | myMeasConf.meas_conf );
mcm 2:d6cde3037eac 1465 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 1466
mcm 2:d6cde3037eac 1467
mcm 2:d6cde3037eac 1468
mcm 2:d6cde3037eac 1469 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1470 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1471 } else {
mcm 2:d6cde3037eac 1472 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1473 }
mcm 2:d6cde3037eac 1474 }
mcm 2:d6cde3037eac 1475
mcm 2:d6cde3037eac 1476
mcm 2:d6cde3037eac 1477
mcm 2:d6cde3037eac 1478 /**
mcm 2:d6cde3037eac 1479 * @brief HDC2080_GetMeasurementConf ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1480 *
mcm 2:d6cde3037eac 1481 * @details It gets the measurement configuration.
mcm 2:d6cde3037eac 1482 *
mcm 2:d6cde3037eac 1483 * @param[in] N/A.
mcm 2:d6cde3037eac 1484 *
mcm 2:d6cde3037eac 1485 * @param[out] myMeasConf: Temperature resolution, Humidity resolution and Measurement configuration.
mcm 2:d6cde3037eac 1486 *
mcm 2:d6cde3037eac 1487 *
mcm 2:d6cde3037eac 1488 * @return Status of HDC2080_GetMeasurementConf.
mcm 2:d6cde3037eac 1489 *
mcm 2:d6cde3037eac 1490 *
mcm 2:d6cde3037eac 1491 * @author Manuel Caballero
mcm 2:d6cde3037eac 1492 * @date 19/November/2019
mcm 2:d6cde3037eac 1493 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1494 * @pre N/A.
mcm 2:d6cde3037eac 1495 * @warning N/A.
mcm 2:d6cde3037eac 1496 */
mcm 2:d6cde3037eac 1497 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetMeasurementConf ( HDC2080_data_t* myMeasConf )
mcm 2:d6cde3037eac 1498 {
mcm 2:d6cde3037eac 1499 char cmd = 0U;
mcm 2:d6cde3037eac 1500 uint32_t aux;
mcm 2:d6cde3037eac 1501
mcm 2:d6cde3037eac 1502 /* Read the register */
mcm 2:d6cde3037eac 1503 cmd = HDC2080_MEASUREMENT_CONFIGURATION;
mcm 2:d6cde3037eac 1504 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 1505 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 1506
mcm 2:d6cde3037eac 1507 /* Parse the data */
mcm 2:d6cde3037eac 1508 myMeasConf->tres = (HDC2080_measurement_configuration_tres_t)( MEASUREMENT_CONF_TRES_MASK & cmd );
mcm 2:d6cde3037eac 1509 myMeasConf->hres = (HDC2080_measurement_configuration_hres_t)( MEASUREMENT_CONF_HRES_MASK & cmd );
mcm 2:d6cde3037eac 1510 myMeasConf->meas_conf = (HDC2080_measurement_configuration_meas_conf_t)( MEASUREMENT_CONF_MEAS_CONF_MASK & cmd );
mcm 2:d6cde3037eac 1511
mcm 2:d6cde3037eac 1512
mcm 2:d6cde3037eac 1513
mcm 2:d6cde3037eac 1514 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1515 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1516 } else {
mcm 2:d6cde3037eac 1517 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1518 }
mcm 2:d6cde3037eac 1519 }
mcm 2:d6cde3037eac 1520
mcm 2:d6cde3037eac 1521
mcm 2:d6cde3037eac 1522
mcm 2:d6cde3037eac 1523 /**
mcm 2:d6cde3037eac 1524 * @brief HDC2080_StartMeasurementTrigger ( void )
mcm 2:d6cde3037eac 1525 *
mcm 2:d6cde3037eac 1526 * @details It triggers a new measurement.
mcm 2:d6cde3037eac 1527 *
mcm 2:d6cde3037eac 1528 * @param[in] N/A.
mcm 2:d6cde3037eac 1529 *
mcm 2:d6cde3037eac 1530 * @param[out] N/A.
mcm 2:d6cde3037eac 1531 *
mcm 2:d6cde3037eac 1532 *
mcm 2:d6cde3037eac 1533 * @return Status of HDC2080_StartMeasurementTrigger.
mcm 2:d6cde3037eac 1534 *
mcm 2:d6cde3037eac 1535 *
mcm 2:d6cde3037eac 1536 * @author Manuel Caballero
mcm 2:d6cde3037eac 1537 * @date 19/November/2019
mcm 2:d6cde3037eac 1538 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1539 * @pre N/A.
mcm 2:d6cde3037eac 1540 * @warning N/A.
mcm 2:d6cde3037eac 1541 */
mcm 2:d6cde3037eac 1542 HDC2080::HDC2080_status_t HDC2080::HDC2080_StartMeasurementTrigger ( void )
mcm 2:d6cde3037eac 1543 {
mcm 2:d6cde3037eac 1544 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1545 uint32_t aux;
mcm 2:d6cde3037eac 1546
mcm 2:d6cde3037eac 1547 /* Read the register */
mcm 2:d6cde3037eac 1548 cmd[0] = HDC2080_MEASUREMENT_CONFIGURATION;
mcm 2:d6cde3037eac 1549 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1550 aux = _i2c.read ( _HDC2080_Addr, &cmd[1], 1U );
mcm 2:d6cde3037eac 1551
mcm 2:d6cde3037eac 1552 /* Update the register */
mcm 2:d6cde3037eac 1553 cmd[1] |= MEASUREMENT_CONF_MEAS_TRIG_START_MEASUREMENT;
mcm 2:d6cde3037eac 1554 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:d6cde3037eac 1555
mcm 2:d6cde3037eac 1556
mcm 2:d6cde3037eac 1557
mcm 2:d6cde3037eac 1558 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1559 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1560 } else {
mcm 2:d6cde3037eac 1561 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1562 }
mcm 2:d6cde3037eac 1563 }
mcm 2:d6cde3037eac 1564
mcm 2:d6cde3037eac 1565
mcm 2:d6cde3037eac 1566
mcm 2:d6cde3037eac 1567 /**
mcm 2:d6cde3037eac 1568 * @brief HDC2080_GetMeasurementTrigger ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1569 *
mcm 2:d6cde3037eac 1570 * @details It gets the measurement trigger flag.
mcm 2:d6cde3037eac 1571 *
mcm 2:d6cde3037eac 1572 * @param[in] N/A.
mcm 2:d6cde3037eac 1573 *
mcm 2:d6cde3037eac 1574 * @param[out] myMeasTrig: Measurement trigger flag.
mcm 2:d6cde3037eac 1575 *
mcm 2:d6cde3037eac 1576 *
mcm 2:d6cde3037eac 1577 * @return Status of HDC2080_GetMeasurementTrigger.
mcm 2:d6cde3037eac 1578 *
mcm 2:d6cde3037eac 1579 *
mcm 2:d6cde3037eac 1580 * @author Manuel Caballero
mcm 2:d6cde3037eac 1581 * @date 19/November/2019
mcm 2:d6cde3037eac 1582 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1583 * @pre N/A.
mcm 2:d6cde3037eac 1584 * @warning N/A.
mcm 2:d6cde3037eac 1585 */
mcm 2:d6cde3037eac 1586 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetMeasurementTrigger ( HDC2080_data_t* myMeasTrig )
mcm 2:d6cde3037eac 1587 {
mcm 2:d6cde3037eac 1588 char cmd = 0U;
mcm 2:d6cde3037eac 1589 uint32_t aux;
mcm 2:d6cde3037eac 1590
mcm 2:d6cde3037eac 1591 /* Read the register */
mcm 2:d6cde3037eac 1592 cmd = HDC2080_MEASUREMENT_CONFIGURATION;
mcm 2:d6cde3037eac 1593 aux = _i2c.write ( _HDC2080_Addr, &cmd, 1U, true );
mcm 2:d6cde3037eac 1594 aux = _i2c.read ( _HDC2080_Addr, &cmd, 1U );
mcm 2:d6cde3037eac 1595
mcm 2:d6cde3037eac 1596 /* Parse the data */
mcm 2:d6cde3037eac 1597 myMeasTrig->meas_trig = (HDC2080_measurement_configuration_meas_trig_t)( MEASUREMENT_CONF_MEAS_TRIG_MASK & cmd );
mcm 2:d6cde3037eac 1598
mcm 2:d6cde3037eac 1599
mcm 2:d6cde3037eac 1600
mcm 2:d6cde3037eac 1601 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1602 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1603 } else {
mcm 2:d6cde3037eac 1604 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1605 }
mcm 2:d6cde3037eac 1606 }
mcm 2:d6cde3037eac 1607
mcm 2:d6cde3037eac 1608
mcm 2:d6cde3037eac 1609
mcm 2:d6cde3037eac 1610 /**
mcm 2:d6cde3037eac 1611 * @brief HDC2080_GetManufacturerID ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1612 *
mcm 2:d6cde3037eac 1613 * @details It gets the manufacturer ID.
mcm 2:d6cde3037eac 1614 *
mcm 2:d6cde3037eac 1615 * @param[in] N/A.
mcm 2:d6cde3037eac 1616 *
mcm 2:d6cde3037eac 1617 * @param[out] myManufacturerID: Manufacturer ID.
mcm 2:d6cde3037eac 1618 *
mcm 2:d6cde3037eac 1619 *
mcm 2:d6cde3037eac 1620 * @return Status of HDC2080_GetManufacturerID.
mcm 2:d6cde3037eac 1621 *
mcm 2:d6cde3037eac 1622 *
mcm 2:d6cde3037eac 1623 * @author Manuel Caballero
mcm 2:d6cde3037eac 1624 * @date 19/November/2019
mcm 2:d6cde3037eac 1625 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1626 * @pre N/A.
mcm 2:d6cde3037eac 1627 * @warning N/A.
mcm 2:d6cde3037eac 1628 */
mcm 2:d6cde3037eac 1629 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetManufacturerID ( HDC2080_data_t* myManufacturerID )
mcm 2:d6cde3037eac 1630 {
mcm 2:d6cde3037eac 1631 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1632 uint32_t aux;
mcm 2:d6cde3037eac 1633
mcm 2:d6cde3037eac 1634 /* Read the register */
mcm 2:d6cde3037eac 1635 cmd[0] = HDC2080_MANUFACTURER_ID_LOW;
mcm 2:d6cde3037eac 1636 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1637 aux = _i2c.read ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:d6cde3037eac 1638
mcm 2:d6cde3037eac 1639 /* Parse the data */
mcm 2:d6cde3037eac 1640 myManufacturerID->manufacturer_id = cmd[1];
mcm 2:d6cde3037eac 1641 myManufacturerID->manufacturer_id <<= 8U;
mcm 2:d6cde3037eac 1642 myManufacturerID->manufacturer_id |= cmd[0];
mcm 2:d6cde3037eac 1643
mcm 2:d6cde3037eac 1644
mcm 2:d6cde3037eac 1645
mcm 2:d6cde3037eac 1646 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1647 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1648 } else {
mcm 2:d6cde3037eac 1649 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1650 }
mcm 2:d6cde3037eac 1651 }
mcm 2:d6cde3037eac 1652
mcm 2:d6cde3037eac 1653
mcm 2:d6cde3037eac 1654
mcm 2:d6cde3037eac 1655 /**
mcm 2:d6cde3037eac 1656 * @brief HDC2080_GetDeviceID ( HDC2080_data_t* )
mcm 2:d6cde3037eac 1657 *
mcm 2:d6cde3037eac 1658 * @details It gets the device ID.
mcm 2:d6cde3037eac 1659 *
mcm 2:d6cde3037eac 1660 * @param[in] N/A.
mcm 2:d6cde3037eac 1661 *
mcm 2:d6cde3037eac 1662 * @param[out] myDeviceID: Device ID.
mcm 2:d6cde3037eac 1663 *
mcm 2:d6cde3037eac 1664 *
mcm 2:d6cde3037eac 1665 * @return Status of HDC2080_GetDeviceID.
mcm 2:d6cde3037eac 1666 *
mcm 2:d6cde3037eac 1667 *
mcm 2:d6cde3037eac 1668 * @author Manuel Caballero
mcm 2:d6cde3037eac 1669 * @date 19/November/2019
mcm 2:d6cde3037eac 1670 * @version 19/November/2019 The ORIGIN
mcm 2:d6cde3037eac 1671 * @pre N/A.
mcm 2:d6cde3037eac 1672 * @warning N/A.
mcm 2:d6cde3037eac 1673 */
mcm 2:d6cde3037eac 1674 HDC2080::HDC2080_status_t HDC2080::HDC2080_GetDeviceID ( HDC2080_data_t* myDeviceID )
mcm 2:d6cde3037eac 1675 {
mcm 2:d6cde3037eac 1676 char cmd[2] = { 0U };
mcm 2:d6cde3037eac 1677 uint32_t aux;
mcm 2:d6cde3037eac 1678
mcm 2:d6cde3037eac 1679 /* Read the register */
mcm 2:d6cde3037eac 1680 cmd[0] = HDC2080_DEVICE_ID_LOW;
mcm 2:d6cde3037eac 1681 aux = _i2c.write ( _HDC2080_Addr, &cmd[0], 1U, true );
mcm 2:d6cde3037eac 1682 aux = _i2c.read ( _HDC2080_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:d6cde3037eac 1683
mcm 2:d6cde3037eac 1684 /* Parse the data */
mcm 2:d6cde3037eac 1685 myDeviceID->device_id = cmd[1];
mcm 2:d6cde3037eac 1686 myDeviceID->device_id <<= 8U;
mcm 2:d6cde3037eac 1687 myDeviceID->device_id |= cmd[0];
mcm 2:d6cde3037eac 1688
mcm 2:d6cde3037eac 1689
mcm 2:d6cde3037eac 1690
mcm 2:d6cde3037eac 1691 if ( aux == I2C_SUCCESS ) {
mcm 2:d6cde3037eac 1692 return HDC2080_SUCCESS;
mcm 2:d6cde3037eac 1693 } else {
mcm 2:d6cde3037eac 1694 return HDC2080_FAILURE;
mcm 2:d6cde3037eac 1695 }
mcm 2:d6cde3037eac 1696 }