AmbiMate Sensor Module

Committer:
mcm
Date:
Thu Jun 03 17:42:11 2021 +0000
Revision:
2:6c5fac3dfd44
Parent:
0:8d9328d3ff35
The function file was completed and it is ready to test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcm 2:6c5fac3dfd44 1 /**
mcm 2:6c5fac3dfd44 2 * @brief AMBIMATE_MS4.c
mcm 2:6c5fac3dfd44 3 * @details AmbiMate Sensor Module.
mcm 2:6c5fac3dfd44 4 * Functions file.
mcm 2:6c5fac3dfd44 5 *
mcm 2:6c5fac3dfd44 6 *
mcm 2:6c5fac3dfd44 7 * @return N/A
mcm 2:6c5fac3dfd44 8 *
mcm 2:6c5fac3dfd44 9 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 10 * @date 03/June/2021
mcm 2:6c5fac3dfd44 11 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 12 * @pre N/A
mcm 2:6c5fac3dfd44 13 * @warning N/A
mcm 2:6c5fac3dfd44 14 * @pre This code belongs to Nimbus Centre ( http://www.nimbus.cit.ie ).
mcm 2:6c5fac3dfd44 15 */
mcm 2:6c5fac3dfd44 16
mcm 2:6c5fac3dfd44 17 #include "AMBIMATE_MS4.h"
mcm 2:6c5fac3dfd44 18
mcm 2:6c5fac3dfd44 19
mcm 2:6c5fac3dfd44 20 AMBIMATE_MS4::AMBIMATE_MS4 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq )
mcm 2:6c5fac3dfd44 21 : _i2c ( sda, scl )
mcm 2:6c5fac3dfd44 22 , _AMBIMATE_MS4_Addr ( addr )
mcm 2:6c5fac3dfd44 23 {
mcm 2:6c5fac3dfd44 24 _i2c.frequency( freq );
mcm 2:6c5fac3dfd44 25 }
mcm 2:6c5fac3dfd44 26
mcm 2:6c5fac3dfd44 27
mcm 2:6c5fac3dfd44 28 AMBIMATE_MS4::~AMBIMATE_MS4()
mcm 2:6c5fac3dfd44 29 {
mcm 2:6c5fac3dfd44 30 }
mcm 2:6c5fac3dfd44 31
mcm 2:6c5fac3dfd44 32
mcm 2:6c5fac3dfd44 33 /**
mcm 2:6c5fac3dfd44 34 * @brief AMBIMATE_MS4_ScanStartByte ( AMBIMATE_MS4_writeable_reg_gas_t , AMBIMATE_MS4_writeable_reg_batt_t , AMBIMATE_MS4_writeable_reg_aud_t , AMBIMATE_MS4_writeable_reg_light_t , AMBIMATE_MS4_writeable_reg_hum_t , AMBIMATE_MS4_writeable_reg_temp_t , AMBIMATE_MS4_writeable_reg_status_t )
mcm 2:6c5fac3dfd44 35 * @details It initiates a new measurements of the chosen sensors.
mcm 2:6c5fac3dfd44 36 *
mcm 2:6c5fac3dfd44 37 * @param[in] gas: Initiates a new measurement.
mcm 2:6c5fac3dfd44 38 * @param[in] batt: Initiates a new measurement.
mcm 2:6c5fac3dfd44 39 * @param[in] aud: Initiates a new measurement.
mcm 2:6c5fac3dfd44 40 * @param[in] light: Initiates a new measurement.
mcm 2:6c5fac3dfd44 41 * @param[in] hum: Initiates a new measurement.
mcm 2:6c5fac3dfd44 42 * @param[in] temp: Initiates a new measurement.
mcm 2:6c5fac3dfd44 43 * @param[in] status: Initiates a new measurement.
mcm 2:6c5fac3dfd44 44 *
mcm 2:6c5fac3dfd44 45 * @param[out] N/A
mcm 2:6c5fac3dfd44 46 *
mcm 2:6c5fac3dfd44 47 *
mcm 2:6c5fac3dfd44 48 * @return Status of AMBIMATE_MS4_ScanStartByte.
mcm 2:6c5fac3dfd44 49 *
mcm 2:6c5fac3dfd44 50 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 51 * @date 03/June/2021
mcm 2:6c5fac3dfd44 52 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 53 * @pre N/A
mcm 2:6c5fac3dfd44 54 * @warning N/A.
mcm 2:6c5fac3dfd44 55 */
mcm 2:6c5fac3dfd44 56 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_ScanStartByte ( AMBIMATE_MS4_writeable_reg_gas_t gas, AMBIMATE_MS4_writeable_reg_batt_t batt, AMBIMATE_MS4_writeable_reg_aud_t aud, AMBIMATE_MS4_writeable_reg_light_t light, AMBIMATE_MS4_writeable_reg_hum_t hum, AMBIMATE_MS4_writeable_reg_temp_t temp, AMBIMATE_MS4_writeable_reg_status_t status )
mcm 2:6c5fac3dfd44 57 {
mcm 2:6c5fac3dfd44 58 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 59 uint32_t aux;
mcm 2:6c5fac3dfd44 60
mcm 2:6c5fac3dfd44 61 /* Write the register */
mcm 2:6c5fac3dfd44 62 cmd[0] = AMBIMATE_MS4_SCAN_START_BYTE;
mcm 2:6c5fac3dfd44 63 cmd[1] = ( gas | batt | aud | light | hum | temp | status );
mcm 2:6c5fac3dfd44 64 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:6c5fac3dfd44 65
mcm 2:6c5fac3dfd44 66
mcm 2:6c5fac3dfd44 67 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 68 {
mcm 2:6c5fac3dfd44 69 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 70 }
mcm 2:6c5fac3dfd44 71 else
mcm 2:6c5fac3dfd44 72 {
mcm 2:6c5fac3dfd44 73 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 74 }
mcm 2:6c5fac3dfd44 75 }
mcm 2:6c5fac3dfd44 76
mcm 2:6c5fac3dfd44 77
mcm 2:6c5fac3dfd44 78
mcm 2:6c5fac3dfd44 79 /**
mcm 2:6c5fac3dfd44 80 * @brief AMBIMATE_MS4_ScanStartByte ( uint8_t* )
mcm 2:6c5fac3dfd44 81 * @details It gets the scan byte values.
mcm 2:6c5fac3dfd44 82 *
mcm 2:6c5fac3dfd44 83 * @param[in] N/A
mcm 2:6c5fac3dfd44 84 *
mcm 2:6c5fac3dfd44 85 * @param[out] scan_byte: Scan start byte value
mcm 2:6c5fac3dfd44 86 *
mcm 2:6c5fac3dfd44 87 *
mcm 2:6c5fac3dfd44 88 * @return Status of AMBIMATE_MS4_ScanStartByte.
mcm 2:6c5fac3dfd44 89 *
mcm 2:6c5fac3dfd44 90 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 91 * @date 03/June/2021
mcm 2:6c5fac3dfd44 92 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 93 * @pre Scanning all channels requires minimum 100 milliseconds therefore, the user must take that time into consideration.
mcm 2:6c5fac3dfd44 94 * @warning N/A.
mcm 2:6c5fac3dfd44 95 */
mcm 2:6c5fac3dfd44 96 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetScanStartByte ( uint8_t* scan_byte )
mcm 2:6c5fac3dfd44 97 {
mcm 2:6c5fac3dfd44 98 char cmd = 0U;
mcm 2:6c5fac3dfd44 99 uint32_t aux;
mcm 2:6c5fac3dfd44 100
mcm 2:6c5fac3dfd44 101 /* Read the register */
mcm 2:6c5fac3dfd44 102 cmd = AMBIMATE_MS4_SCAN_START_BYTE;
mcm 2:6c5fac3dfd44 103 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 104 aux = _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 105
mcm 2:6c5fac3dfd44 106 /* Parse the data */
mcm 2:6c5fac3dfd44 107 *scan_byte = cmd;
mcm 2:6c5fac3dfd44 108
mcm 2:6c5fac3dfd44 109
mcm 2:6c5fac3dfd44 110 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 111 {
mcm 2:6c5fac3dfd44 112 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 113 }
mcm 2:6c5fac3dfd44 114 else
mcm 2:6c5fac3dfd44 115 {
mcm 2:6c5fac3dfd44 116 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 117 }
mcm 2:6c5fac3dfd44 118 }
mcm 2:6c5fac3dfd44 119
mcm 2:6c5fac3dfd44 120
mcm 2:6c5fac3dfd44 121
mcm 2:6c5fac3dfd44 122 /**
mcm 2:6c5fac3dfd44 123 * @brief AMBIMATE_MS4_GetFirmwareVersion ( uint8_t* )
mcm 2:6c5fac3dfd44 124 * @details It gets the firmware version.
mcm 2:6c5fac3dfd44 125 *
mcm 2:6c5fac3dfd44 126 * @param[in] N/A.
mcm 2:6c5fac3dfd44 127 *
mcm 2:6c5fac3dfd44 128 * @param[out] fw_version: Firmware version.
mcm 2:6c5fac3dfd44 129 *
mcm 2:6c5fac3dfd44 130 *
mcm 2:6c5fac3dfd44 131 * @return Status of AMBIMATE_MS4_GetFirmwareVersion.
mcm 2:6c5fac3dfd44 132 *
mcm 2:6c5fac3dfd44 133 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 134 * @date 03/June/2021
mcm 2:6c5fac3dfd44 135 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 136 * @pre N/A
mcm 2:6c5fac3dfd44 137 * @warning N/A.
mcm 2:6c5fac3dfd44 138 */
mcm 2:6c5fac3dfd44 139 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetFirmwareVersion ( uint8_t* fw_version )
mcm 2:6c5fac3dfd44 140 {
mcm 2:6c5fac3dfd44 141 char cmd = 0U;
mcm 2:6c5fac3dfd44 142 uint32_t aux;
mcm 2:6c5fac3dfd44 143
mcm 2:6c5fac3dfd44 144 /* Write the register */
mcm 2:6c5fac3dfd44 145 cmd = AMBIMATE_MS4_FIRMWARE_VERSION;
mcm 2:6c5fac3dfd44 146 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 147 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 148
mcm 2:6c5fac3dfd44 149 /* Parse the data */
mcm 2:6c5fac3dfd44 150 *fw_version = cmd;
mcm 2:6c5fac3dfd44 151
mcm 2:6c5fac3dfd44 152
mcm 2:6c5fac3dfd44 153 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 154 {
mcm 2:6c5fac3dfd44 155 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 156 }
mcm 2:6c5fac3dfd44 157 else
mcm 2:6c5fac3dfd44 158 {
mcm 2:6c5fac3dfd44 159 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 160 }
mcm 2:6c5fac3dfd44 161 }
mcm 2:6c5fac3dfd44 162
mcm 2:6c5fac3dfd44 163
mcm 2:6c5fac3dfd44 164
mcm 2:6c5fac3dfd44 165 /**
mcm 2:6c5fac3dfd44 166 * @brief AMBIMATE_MS4_GetFirmwareSubVersion ( uint8_t* )
mcm 2:6c5fac3dfd44 167 * @details It gets the firmware sub-version.
mcm 2:6c5fac3dfd44 168 *
mcm 2:6c5fac3dfd44 169 * @param[in] N/A.
mcm 2:6c5fac3dfd44 170 *
mcm 2:6c5fac3dfd44 171 * @param[out] fw_subversion: Firmware version.
mcm 2:6c5fac3dfd44 172 *
mcm 2:6c5fac3dfd44 173 *
mcm 2:6c5fac3dfd44 174 * @return Status of AMBIMATE_MS4_GetFirmwareSubVersion.
mcm 2:6c5fac3dfd44 175 *
mcm 2:6c5fac3dfd44 176 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 177 * @date 03/June/2021
mcm 2:6c5fac3dfd44 178 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 179 * @pre N/A
mcm 2:6c5fac3dfd44 180 * @warning N/A.
mcm 2:6c5fac3dfd44 181 */
mcm 2:6c5fac3dfd44 182 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetFirmwareSubVersion ( uint8_t* fw_subversion )
mcm 2:6c5fac3dfd44 183 {
mcm 2:6c5fac3dfd44 184 char cmd = 0U;
mcm 2:6c5fac3dfd44 185 uint32_t aux;
mcm 2:6c5fac3dfd44 186
mcm 2:6c5fac3dfd44 187 /* Write the register */
mcm 2:6c5fac3dfd44 188 cmd = AMBIMATE_MS4_FIRMWARE_SUB_VERSION;
mcm 2:6c5fac3dfd44 189 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 190 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 191
mcm 2:6c5fac3dfd44 192 /* Parse the data */
mcm 2:6c5fac3dfd44 193 *fw_subversion = cmd;
mcm 2:6c5fac3dfd44 194
mcm 2:6c5fac3dfd44 195
mcm 2:6c5fac3dfd44 196 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 197 {
mcm 2:6c5fac3dfd44 198 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 199 }
mcm 2:6c5fac3dfd44 200 else
mcm 2:6c5fac3dfd44 201 {
mcm 2:6c5fac3dfd44 202 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 203 }
mcm 2:6c5fac3dfd44 204 }
mcm 2:6c5fac3dfd44 205
mcm 2:6c5fac3dfd44 206
mcm 2:6c5fac3dfd44 207
mcm 2:6c5fac3dfd44 208 /**
mcm 2:6c5fac3dfd44 209 * @brief AMBIMATE_MS4_GetOptionalSensorsByte ( AMBIMATE_MS4_op_sensors_byte_t* )
mcm 2:6c5fac3dfd44 210 * @details It gets the optional sensors on board.
mcm 2:6c5fac3dfd44 211 *
mcm 2:6c5fac3dfd44 212 * @param[in] N/A.
mcm 2:6c5fac3dfd44 213 *
mcm 2:6c5fac3dfd44 214 * @param[out] op_sensors: Optional sensors on board.
mcm 2:6c5fac3dfd44 215 *
mcm 2:6c5fac3dfd44 216 *
mcm 2:6c5fac3dfd44 217 * @return Status of AMBIMATE_MS4_GetOptionalSensorsByte.
mcm 2:6c5fac3dfd44 218 *
mcm 2:6c5fac3dfd44 219 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 220 * @date 03/June/2021
mcm 2:6c5fac3dfd44 221 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 222 * @pre N/A
mcm 2:6c5fac3dfd44 223 * @warning N/A.
mcm 2:6c5fac3dfd44 224 */
mcm 2:6c5fac3dfd44 225 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetOptionalSensorsByte ( AMBIMATE_MS4_op_sensors_byte_t* op_sensors )
mcm 2:6c5fac3dfd44 226 {
mcm 2:6c5fac3dfd44 227 char cmd = 0U;
mcm 2:6c5fac3dfd44 228 uint32_t aux;
mcm 2:6c5fac3dfd44 229
mcm 2:6c5fac3dfd44 230 /* Write the register */
mcm 2:6c5fac3dfd44 231 cmd = AMBIMATE_MS4_OPTIONAL_SENSORS;
mcm 2:6c5fac3dfd44 232 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 233 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 234
mcm 2:6c5fac3dfd44 235 /* Parse the data */
mcm 2:6c5fac3dfd44 236 *op_sensors = (AMBIMATE_MS4_op_sensors_byte_t)( cmd & ( OPTIONAL_SENSORS_BYTE_CO2_MASK | OPTIONAL_SENSORS_BYTE_MIC_MASK ) );
mcm 2:6c5fac3dfd44 237
mcm 2:6c5fac3dfd44 238
mcm 2:6c5fac3dfd44 239
mcm 2:6c5fac3dfd44 240 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 241 {
mcm 2:6c5fac3dfd44 242 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 243 }
mcm 2:6c5fac3dfd44 244 else
mcm 2:6c5fac3dfd44 245 {
mcm 2:6c5fac3dfd44 246 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 247 }
mcm 2:6c5fac3dfd44 248 }
mcm 2:6c5fac3dfd44 249
mcm 2:6c5fac3dfd44 250
mcm 2:6c5fac3dfd44 251
mcm 2:6c5fac3dfd44 252 /**
mcm 2:6c5fac3dfd44 253 * @brief AMBIMATE_MS4_ProcessorReset ( )
mcm 2:6c5fac3dfd44 254 * @details It performs a processor reset.
mcm 2:6c5fac3dfd44 255 *
mcm 2:6c5fac3dfd44 256 * @param[in] N/A.
mcm 2:6c5fac3dfd44 257 *
mcm 2:6c5fac3dfd44 258 * @param[out] N/A.
mcm 2:6c5fac3dfd44 259 *
mcm 2:6c5fac3dfd44 260 *
mcm 2:6c5fac3dfd44 261 * @return Status of AMBIMATE_MS4_ProcessorReset.
mcm 2:6c5fac3dfd44 262 *
mcm 2:6c5fac3dfd44 263 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 264 * @date 03/June/2021
mcm 2:6c5fac3dfd44 265 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 266 * @pre N/A
mcm 2:6c5fac3dfd44 267 * @warning N/A.
mcm 2:6c5fac3dfd44 268 */
mcm 2:6c5fac3dfd44 269 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_ProcessorReset ( void )
mcm 2:6c5fac3dfd44 270 {
mcm 2:6c5fac3dfd44 271 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 272 uint32_t aux;
mcm 2:6c5fac3dfd44 273
mcm 2:6c5fac3dfd44 274 /* Write the register */
mcm 2:6c5fac3dfd44 275 cmd[0] = AMBIMATE_MS4_PROCESSOR_RESET;
mcm 2:6c5fac3dfd44 276 cmd[1] = RESET_REGISTER_PROCESSOR_RESET;
mcm 2:6c5fac3dfd44 277 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), false );
mcm 2:6c5fac3dfd44 278
mcm 2:6c5fac3dfd44 279
mcm 2:6c5fac3dfd44 280
mcm 2:6c5fac3dfd44 281 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 282 {
mcm 2:6c5fac3dfd44 283 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 284 }
mcm 2:6c5fac3dfd44 285 else
mcm 2:6c5fac3dfd44 286 {
mcm 2:6c5fac3dfd44 287 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 288 }
mcm 2:6c5fac3dfd44 289 }
mcm 2:6c5fac3dfd44 290
mcm 2:6c5fac3dfd44 291
mcm 2:6c5fac3dfd44 292
mcm 2:6c5fac3dfd44 293 /**
mcm 2:6c5fac3dfd44 294 * @brief AMBIMATE_MS4_GetStatus ( uint8_t* )
mcm 2:6c5fac3dfd44 295 * @details It gets the Status value.
mcm 2:6c5fac3dfd44 296 *
mcm 2:6c5fac3dfd44 297 * @param[in] N/A.
mcm 2:6c5fac3dfd44 298 *
mcm 2:6c5fac3dfd44 299 * @param[out] status: Status register.
mcm 2:6c5fac3dfd44 300 *
mcm 2:6c5fac3dfd44 301 *
mcm 2:6c5fac3dfd44 302 * @return Status of AMBIMATE_MS4_GetStatus.
mcm 2:6c5fac3dfd44 303 *
mcm 2:6c5fac3dfd44 304 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 305 * @date 03/June/2021
mcm 2:6c5fac3dfd44 306 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 307 * @pre N/A
mcm 2:6c5fac3dfd44 308 * @warning N/A.
mcm 2:6c5fac3dfd44 309 */
mcm 2:6c5fac3dfd44 310 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetStatus ( uint8_t* status )
mcm 2:6c5fac3dfd44 311 {
mcm 2:6c5fac3dfd44 312 char cmd = 0U;
mcm 2:6c5fac3dfd44 313 uint32_t aux;
mcm 2:6c5fac3dfd44 314
mcm 2:6c5fac3dfd44 315 /* Write the register */
mcm 2:6c5fac3dfd44 316 cmd = AMBIMATE_MS4_STATUS_HIGH_BYTE;
mcm 2:6c5fac3dfd44 317 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 318 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 319
mcm 2:6c5fac3dfd44 320 /* Parse the data */
mcm 2:6c5fac3dfd44 321 *status = cmd;
mcm 2:6c5fac3dfd44 322
mcm 2:6c5fac3dfd44 323
mcm 2:6c5fac3dfd44 324 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 325 {
mcm 2:6c5fac3dfd44 326 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 327 }
mcm 2:6c5fac3dfd44 328 else
mcm 2:6c5fac3dfd44 329 {
mcm 2:6c5fac3dfd44 330 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 331 }
mcm 2:6c5fac3dfd44 332 }
mcm 2:6c5fac3dfd44 333
mcm 2:6c5fac3dfd44 334
mcm 2:6c5fac3dfd44 335
mcm 2:6c5fac3dfd44 336 /**
mcm 2:6c5fac3dfd44 337 * @brief AMBIMATE_MS4_GetRawTemperature ( uint16_t* )
mcm 2:6c5fac3dfd44 338 * @details It gets the temperature raw value.
mcm 2:6c5fac3dfd44 339 *
mcm 2:6c5fac3dfd44 340 * @param[in] N/A.
mcm 2:6c5fac3dfd44 341 *
mcm 2:6c5fac3dfd44 342 * @param[out] raw_temp: Raw value for temperature.
mcm 2:6c5fac3dfd44 343 *
mcm 2:6c5fac3dfd44 344 *
mcm 2:6c5fac3dfd44 345 * @return Status of AMBIMATE_MS4_GetRawTemperature.
mcm 2:6c5fac3dfd44 346 *
mcm 2:6c5fac3dfd44 347 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 348 * @date 03/June/2021
mcm 2:6c5fac3dfd44 349 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 350 * @pre N/A
mcm 2:6c5fac3dfd44 351 * @warning N/A.
mcm 2:6c5fac3dfd44 352 */
mcm 2:6c5fac3dfd44 353 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRawTemperature ( uint16_t* raw_temp )
mcm 2:6c5fac3dfd44 354 {
mcm 2:6c5fac3dfd44 355 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 356 uint32_t aux;
mcm 2:6c5fac3dfd44 357
mcm 2:6c5fac3dfd44 358 /* Write the register */
mcm 2:6c5fac3dfd44 359 cmd[0] = AMBIMATE_MS4_TEMPERATURE_HIGH_BYTE;
mcm 2:6c5fac3dfd44 360 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 361 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 362
mcm 2:6c5fac3dfd44 363 /* Parse the data */
mcm 2:6c5fac3dfd44 364 *raw_temp = cmd[0];
mcm 2:6c5fac3dfd44 365 *raw_temp <<= 8U;
mcm 2:6c5fac3dfd44 366 *raw_temp |= cmd[1];
mcm 2:6c5fac3dfd44 367
mcm 2:6c5fac3dfd44 368
mcm 2:6c5fac3dfd44 369
mcm 2:6c5fac3dfd44 370 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 371 {
mcm 2:6c5fac3dfd44 372 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 373 }
mcm 2:6c5fac3dfd44 374 else
mcm 2:6c5fac3dfd44 375 {
mcm 2:6c5fac3dfd44 376 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 377 }
mcm 2:6c5fac3dfd44 378 }
mcm 2:6c5fac3dfd44 379
mcm 2:6c5fac3dfd44 380
mcm 2:6c5fac3dfd44 381
mcm 2:6c5fac3dfd44 382 /**
mcm 2:6c5fac3dfd44 383 * @brief AMBIMATE_MS4_GetRawHumidity ( uint16_t* )
mcm 2:6c5fac3dfd44 384 * @details It gets the humidity raw value.
mcm 2:6c5fac3dfd44 385 *
mcm 2:6c5fac3dfd44 386 * @param[in] N/A.
mcm 2:6c5fac3dfd44 387 *
mcm 2:6c5fac3dfd44 388 * @param[out] raw_hum: Raw value for humidity.
mcm 2:6c5fac3dfd44 389 *
mcm 2:6c5fac3dfd44 390 *
mcm 2:6c5fac3dfd44 391 * @return Status of AMBIMATE_MS4_GetRawHumidity.
mcm 2:6c5fac3dfd44 392 *
mcm 2:6c5fac3dfd44 393 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 394 * @date 03/June/2021
mcm 2:6c5fac3dfd44 395 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 396 * @pre N/A
mcm 2:6c5fac3dfd44 397 * @warning N/A.
mcm 2:6c5fac3dfd44 398 */
mcm 2:6c5fac3dfd44 399 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRawHumidity ( uint16_t* raw_hum )
mcm 2:6c5fac3dfd44 400 {
mcm 2:6c5fac3dfd44 401 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 402 uint32_t aux;
mcm 2:6c5fac3dfd44 403
mcm 2:6c5fac3dfd44 404 /* Write the register */
mcm 2:6c5fac3dfd44 405 cmd[0] = AMBIMATE_MS4_HUMIDITY_HIGH_BYTE;
mcm 2:6c5fac3dfd44 406 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 407 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 408
mcm 2:6c5fac3dfd44 409 /* Parse the data */
mcm 2:6c5fac3dfd44 410 *raw_hum = cmd[0];
mcm 2:6c5fac3dfd44 411 *raw_hum <<= 8U;
mcm 2:6c5fac3dfd44 412 *raw_hum |= cmd[1];
mcm 2:6c5fac3dfd44 413
mcm 2:6c5fac3dfd44 414
mcm 2:6c5fac3dfd44 415
mcm 2:6c5fac3dfd44 416 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 417 {
mcm 2:6c5fac3dfd44 418 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 419 }
mcm 2:6c5fac3dfd44 420 else
mcm 2:6c5fac3dfd44 421 {
mcm 2:6c5fac3dfd44 422 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 423 }
mcm 2:6c5fac3dfd44 424 }
mcm 2:6c5fac3dfd44 425
mcm 2:6c5fac3dfd44 426
mcm 2:6c5fac3dfd44 427
mcm 2:6c5fac3dfd44 428 /**
mcm 2:6c5fac3dfd44 429 * @brief AMBIMATE_MS4_GetRawLight ( uint16_t* )
mcm 2:6c5fac3dfd44 430 * @details It gets the light raw value.
mcm 2:6c5fac3dfd44 431 *
mcm 2:6c5fac3dfd44 432 * @param[in] N/A
mcm 2:6c5fac3dfd44 433 *
mcm 2:6c5fac3dfd44 434 * @param[out] raw_light Raw value for light.
mcm 2:6c5fac3dfd44 435 *
mcm 2:6c5fac3dfd44 436 *
mcm 2:6c5fac3dfd44 437 * @return Status of AMBIMATE_MS4_GetRawLight.
mcm 2:6c5fac3dfd44 438 *
mcm 2:6c5fac3dfd44 439 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 440 * @date 03/June/2021
mcm 2:6c5fac3dfd44 441 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 442 * @pre N/A
mcm 2:6c5fac3dfd44 443 * @warning N/A.
mcm 2:6c5fac3dfd44 444 */
mcm 2:6c5fac3dfd44 445 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRawLight ( uint16_t* raw_light )
mcm 2:6c5fac3dfd44 446 {
mcm 2:6c5fac3dfd44 447 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 448 uint32_t aux;
mcm 2:6c5fac3dfd44 449
mcm 2:6c5fac3dfd44 450 /* Write the register */
mcm 2:6c5fac3dfd44 451 cmd[0] = AMBIMATE_MS4_LIGHT_HIGH_BYTE;
mcm 2:6c5fac3dfd44 452 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 453 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 454
mcm 2:6c5fac3dfd44 455 /* Parse the data */
mcm 2:6c5fac3dfd44 456 *raw_light = cmd[0];
mcm 2:6c5fac3dfd44 457 *raw_light <<= 8U;
mcm 2:6c5fac3dfd44 458 *raw_light |= cmd[1];
mcm 2:6c5fac3dfd44 459
mcm 2:6c5fac3dfd44 460
mcm 2:6c5fac3dfd44 461
mcm 2:6c5fac3dfd44 462 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 463 {
mcm 2:6c5fac3dfd44 464 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 465 }
mcm 2:6c5fac3dfd44 466 else
mcm 2:6c5fac3dfd44 467 {
mcm 2:6c5fac3dfd44 468 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 469 }
mcm 2:6c5fac3dfd44 470 }
mcm 2:6c5fac3dfd44 471
mcm 2:6c5fac3dfd44 472
mcm 2:6c5fac3dfd44 473
mcm 2:6c5fac3dfd44 474 /**
mcm 2:6c5fac3dfd44 475 * @brief AMBIMATE_MS4_GetRawAudio ( uint16_t* )
mcm 2:6c5fac3dfd44 476 * @details It gets the audio raw value.
mcm 2:6c5fac3dfd44 477 *
mcm 2:6c5fac3dfd44 478 * @param[in] N/A
mcm 2:6c5fac3dfd44 479 *
mcm 2:6c5fac3dfd44 480 * @param[out] raw_audio Raw value for audio.
mcm 2:6c5fac3dfd44 481 *
mcm 2:6c5fac3dfd44 482 *
mcm 2:6c5fac3dfd44 483 * @return Status of AMBIMATE_MS4_GetRawAudio.
mcm 2:6c5fac3dfd44 484 *
mcm 2:6c5fac3dfd44 485 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 486 * @date 03/June/2021
mcm 2:6c5fac3dfd44 487 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 488 * @pre N/A
mcm 2:6c5fac3dfd44 489 * @warning N/A.
mcm 2:6c5fac3dfd44 490 */
mcm 2:6c5fac3dfd44 491 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRawAudio ( uint16_t* raw_audio )
mcm 2:6c5fac3dfd44 492 {
mcm 2:6c5fac3dfd44 493 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 494 uint32_t aux;
mcm 2:6c5fac3dfd44 495
mcm 2:6c5fac3dfd44 496 /* Write the register */
mcm 2:6c5fac3dfd44 497 cmd[0] = AMBIMATE_MS4_AUDIO_HIGH_BYTE;
mcm 2:6c5fac3dfd44 498 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 499 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 500
mcm 2:6c5fac3dfd44 501 /* Parse the data */
mcm 2:6c5fac3dfd44 502 *raw_audio = cmd[0];
mcm 2:6c5fac3dfd44 503 *raw_audio <<= 8U;
mcm 2:6c5fac3dfd44 504 *raw_audio |= cmd[1];
mcm 2:6c5fac3dfd44 505
mcm 2:6c5fac3dfd44 506
mcm 2:6c5fac3dfd44 507
mcm 2:6c5fac3dfd44 508 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 509 {
mcm 2:6c5fac3dfd44 510 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 511 }
mcm 2:6c5fac3dfd44 512 else
mcm 2:6c5fac3dfd44 513 {
mcm 2:6c5fac3dfd44 514 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 515 }
mcm 2:6c5fac3dfd44 516 }
mcm 2:6c5fac3dfd44 517
mcm 2:6c5fac3dfd44 518
mcm 2:6c5fac3dfd44 519
mcm 2:6c5fac3dfd44 520 /**
mcm 2:6c5fac3dfd44 521 * @brief AMBIMATE_MS4_GetRawBatteryVolts ( uint16_t* )
mcm 2:6c5fac3dfd44 522 * @details It gets the battery volts raw value.
mcm 2:6c5fac3dfd44 523 *
mcm 2:6c5fac3dfd44 524 * @param[in] N/A.
mcm 2:6c5fac3dfd44 525 *
mcm 2:6c5fac3dfd44 526 * @param[out] raw_batt Raw value for battery volts.
mcm 2:6c5fac3dfd44 527 *
mcm 2:6c5fac3dfd44 528 *
mcm 2:6c5fac3dfd44 529 * @return Status of AMBIMATE_MS4_GetRawBatteryVolts.
mcm 2:6c5fac3dfd44 530 *
mcm 2:6c5fac3dfd44 531 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 532 * @date 03/June/2021
mcm 2:6c5fac3dfd44 533 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 534 * @pre N/A
mcm 2:6c5fac3dfd44 535 * @warning N/A.
mcm 2:6c5fac3dfd44 536 */
mcm 2:6c5fac3dfd44 537 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRawBatteryVolts ( uint16_t* raw_batt )
mcm 2:6c5fac3dfd44 538 {
mcm 2:6c5fac3dfd44 539 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 540 uint32_t aux;
mcm 2:6c5fac3dfd44 541
mcm 2:6c5fac3dfd44 542 /* Write the register */
mcm 2:6c5fac3dfd44 543 cmd[0] = AMBIMATE_MS4_BATTERY_VOLTS_HIGH_BYTE;
mcm 2:6c5fac3dfd44 544 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 545 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 546
mcm 2:6c5fac3dfd44 547 /* Parse the data */
mcm 2:6c5fac3dfd44 548 *raw_batt = cmd[0];
mcm 2:6c5fac3dfd44 549 *raw_batt <<= 8U;
mcm 2:6c5fac3dfd44 550 *raw_batt |= cmd[1];
mcm 2:6c5fac3dfd44 551
mcm 2:6c5fac3dfd44 552
mcm 2:6c5fac3dfd44 553
mcm 2:6c5fac3dfd44 554 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 555 {
mcm 2:6c5fac3dfd44 556 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 557 }
mcm 2:6c5fac3dfd44 558 else
mcm 2:6c5fac3dfd44 559 {
mcm 2:6c5fac3dfd44 560 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 561 }
mcm 2:6c5fac3dfd44 562 }
mcm 2:6c5fac3dfd44 563
mcm 2:6c5fac3dfd44 564
mcm 2:6c5fac3dfd44 565
mcm 2:6c5fac3dfd44 566 /**
mcm 2:6c5fac3dfd44 567 * @brief AMBIMATE_MS4_GetRawECO2 ( uint16_t* )
mcm 2:6c5fac3dfd44 568 * @details It gets the eCO2 raw value.
mcm 2:6c5fac3dfd44 569 *
mcm 2:6c5fac3dfd44 570 * @param[in] N/A.
mcm 2:6c5fac3dfd44 571 *
mcm 2:6c5fac3dfd44 572 * @param[out] raw_eco2 Raw value for eCO2.
mcm 2:6c5fac3dfd44 573 *
mcm 2:6c5fac3dfd44 574 *
mcm 2:6c5fac3dfd44 575 * @return Status of AMBIMATE_MS4_GetRawECO2.
mcm 2:6c5fac3dfd44 576 *
mcm 2:6c5fac3dfd44 577 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 578 * @date 03/June/2021
mcm 2:6c5fac3dfd44 579 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 580 * @pre N/A
mcm 2:6c5fac3dfd44 581 * @warning N/A.
mcm 2:6c5fac3dfd44 582 */
mcm 2:6c5fac3dfd44 583 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRawECO2 ( uint16_t* raw_eco2 )
mcm 2:6c5fac3dfd44 584 {
mcm 2:6c5fac3dfd44 585 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 586 uint32_t aux;
mcm 2:6c5fac3dfd44 587
mcm 2:6c5fac3dfd44 588 /* Write the register */
mcm 2:6c5fac3dfd44 589 cmd[0] = AMBIMATE_MS4_ECO2_HIGH_BYTE;
mcm 2:6c5fac3dfd44 590 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 591 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 592
mcm 2:6c5fac3dfd44 593 /* Parse the data */
mcm 2:6c5fac3dfd44 594 *raw_eco2 = cmd[0];
mcm 2:6c5fac3dfd44 595 *raw_eco2 <<= 8U;
mcm 2:6c5fac3dfd44 596 *raw_eco2 |= cmd[1];
mcm 2:6c5fac3dfd44 597
mcm 2:6c5fac3dfd44 598
mcm 2:6c5fac3dfd44 599
mcm 2:6c5fac3dfd44 600 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 601 {
mcm 2:6c5fac3dfd44 602 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 603 }
mcm 2:6c5fac3dfd44 604 else
mcm 2:6c5fac3dfd44 605 {
mcm 2:6c5fac3dfd44 606 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 607 }
mcm 2:6c5fac3dfd44 608 }
mcm 2:6c5fac3dfd44 609
mcm 2:6c5fac3dfd44 610
mcm 2:6c5fac3dfd44 611
mcm 2:6c5fac3dfd44 612 /**
mcm 2:6c5fac3dfd44 613 * @brief AMBIMATE_MS4_GetRawVOC ( uint16_t* )
mcm 2:6c5fac3dfd44 614 * @details It gets the VOC raw value.
mcm 2:6c5fac3dfd44 615 *
mcm 2:6c5fac3dfd44 616 * @param[in] N/A.
mcm 2:6c5fac3dfd44 617 *
mcm 2:6c5fac3dfd44 618 * @param[out] raw_voc Raw value for VOC.
mcm 2:6c5fac3dfd44 619 *
mcm 2:6c5fac3dfd44 620 *
mcm 2:6c5fac3dfd44 621 * @return Status of AMBIMATE_MS4_GetRawVOC.
mcm 2:6c5fac3dfd44 622 *
mcm 2:6c5fac3dfd44 623 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 624 * @date 03/June/2021
mcm 2:6c5fac3dfd44 625 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 626 * @pre N/A
mcm 2:6c5fac3dfd44 627 * @warning N/A.
mcm 2:6c5fac3dfd44 628 */
mcm 2:6c5fac3dfd44 629 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRawVOC ( uint16_t* raw_voc )
mcm 2:6c5fac3dfd44 630 {
mcm 2:6c5fac3dfd44 631 char cmd[2] = { 0U };
mcm 2:6c5fac3dfd44 632 uint32_t aux;
mcm 2:6c5fac3dfd44 633
mcm 2:6c5fac3dfd44 634 /* Write the register */
mcm 2:6c5fac3dfd44 635 cmd[0] = AMBIMATE_MS4_ECO2_HIGH_BYTE;
mcm 2:6c5fac3dfd44 636 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 637 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 638
mcm 2:6c5fac3dfd44 639 /* Parse the data */
mcm 2:6c5fac3dfd44 640 *raw_voc = cmd[0];
mcm 2:6c5fac3dfd44 641 *raw_voc <<= 8U;
mcm 2:6c5fac3dfd44 642 *raw_voc |= cmd[1];
mcm 2:6c5fac3dfd44 643
mcm 2:6c5fac3dfd44 644
mcm 2:6c5fac3dfd44 645
mcm 2:6c5fac3dfd44 646 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 647 {
mcm 2:6c5fac3dfd44 648 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 649 }
mcm 2:6c5fac3dfd44 650 else
mcm 2:6c5fac3dfd44 651 {
mcm 2:6c5fac3dfd44 652 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 653 }
mcm 2:6c5fac3dfd44 654 }
mcm 2:6c5fac3dfd44 655
mcm 2:6c5fac3dfd44 656
mcm 2:6c5fac3dfd44 657
mcm 2:6c5fac3dfd44 658 /**
mcm 2:6c5fac3dfd44 659 * @brief AMBIMATE_MS4_GetRawAllSensors ( uint8_t* , AMBIMATE_MS4_raw_data_values_t* )
mcm 2:6c5fac3dfd44 660 * @details It gets the all sensors raw values.
mcm 2:6c5fac3dfd44 661 *
mcm 2:6c5fac3dfd44 662 * @param[in] N/A.
mcm 2:6c5fac3dfd44 663 *
mcm 2:6c5fac3dfd44 664 * @param[out] status Status byte.
mcm 2:6c5fac3dfd44 665 * @param[out] raw_all Raw value for all the sensors.
mcm 2:6c5fac3dfd44 666 *
mcm 2:6c5fac3dfd44 667 *
mcm 2:6c5fac3dfd44 668 * @return Status of AMBIMATE_MS4_GetRawAllSensors.
mcm 2:6c5fac3dfd44 669 *
mcm 2:6c5fac3dfd44 670 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 671 * @date 03/June/2021
mcm 2:6c5fac3dfd44 672 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 673 * @pre N/A
mcm 2:6c5fac3dfd44 674 * @warning N/A.
mcm 2:6c5fac3dfd44 675 */
mcm 2:6c5fac3dfd44 676 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRawAllSensors ( uint8_t* status, AMBIMATE_MS4_raw_data_values_t* raw_all )
mcm 2:6c5fac3dfd44 677 {
mcm 2:6c5fac3dfd44 678 char cmd[15] = { 0U };
mcm 2:6c5fac3dfd44 679 uint32_t aux;
mcm 2:6c5fac3dfd44 680
mcm 2:6c5fac3dfd44 681 /* Write the register */
mcm 2:6c5fac3dfd44 682 cmd[0] = AMBIMATE_MS4_STATUS_HIGH_BYTE;
mcm 2:6c5fac3dfd44 683 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 684 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 685
mcm 2:6c5fac3dfd44 686 /* Parse the data */
mcm 2:6c5fac3dfd44 687 *status = cmd[0];
mcm 2:6c5fac3dfd44 688
mcm 2:6c5fac3dfd44 689 raw_all->raw_temperature = cmd[1];
mcm 2:6c5fac3dfd44 690 raw_all->raw_temperature <<= 8U;
mcm 2:6c5fac3dfd44 691 raw_all->raw_temperature |= cmd[2];
mcm 2:6c5fac3dfd44 692
mcm 2:6c5fac3dfd44 693 raw_all->raw_humidity = cmd[3];
mcm 2:6c5fac3dfd44 694 raw_all->raw_humidity <<= 8U;
mcm 2:6c5fac3dfd44 695 raw_all->raw_humidity |= cmd[4];
mcm 2:6c5fac3dfd44 696
mcm 2:6c5fac3dfd44 697 raw_all->raw_light = cmd[5];
mcm 2:6c5fac3dfd44 698 raw_all->raw_light <<= 8U;
mcm 2:6c5fac3dfd44 699 raw_all->raw_light |= cmd[6];
mcm 2:6c5fac3dfd44 700
mcm 2:6c5fac3dfd44 701 raw_all->raw_audio = cmd[7];
mcm 2:6c5fac3dfd44 702 raw_all->raw_audio <<= 8U;
mcm 2:6c5fac3dfd44 703 raw_all->raw_audio |= cmd[8];
mcm 2:6c5fac3dfd44 704
mcm 2:6c5fac3dfd44 705 raw_all->raw_battery_volts = cmd[9];
mcm 2:6c5fac3dfd44 706 raw_all->raw_battery_volts <<= 8U;
mcm 2:6c5fac3dfd44 707 raw_all->raw_battery_volts |= cmd[10];
mcm 2:6c5fac3dfd44 708
mcm 2:6c5fac3dfd44 709 raw_all->raw_eco2 = cmd[11];
mcm 2:6c5fac3dfd44 710 raw_all->raw_eco2 <<= 8U;
mcm 2:6c5fac3dfd44 711 raw_all->raw_eco2 |= cmd[12];
mcm 2:6c5fac3dfd44 712
mcm 2:6c5fac3dfd44 713 raw_all->raw_voc = cmd[13];
mcm 2:6c5fac3dfd44 714 raw_all->raw_voc <<= 8U;
mcm 2:6c5fac3dfd44 715 raw_all->raw_voc |= cmd[14];
mcm 2:6c5fac3dfd44 716
mcm 2:6c5fac3dfd44 717
mcm 2:6c5fac3dfd44 718
mcm 2:6c5fac3dfd44 719 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 720 {
mcm 2:6c5fac3dfd44 721 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 722 }
mcm 2:6c5fac3dfd44 723 else
mcm 2:6c5fac3dfd44 724 {
mcm 2:6c5fac3dfd44 725 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 726 }
mcm 2:6c5fac3dfd44 727 }
mcm 2:6c5fac3dfd44 728
mcm 2:6c5fac3dfd44 729
mcm 2:6c5fac3dfd44 730
mcm 2:6c5fac3dfd44 731 /**
mcm 2:6c5fac3dfd44 732 * @brief AMBIMATE_MS4_Get8bitRawTemperature ( uint8_t* )
mcm 2:6c5fac3dfd44 733 * @details It gets the temperature raw value ( 8-bit ).
mcm 2:6c5fac3dfd44 734 *
mcm 2:6c5fac3dfd44 735 * @param[in] N/A.
mcm 2:6c5fac3dfd44 736 *
mcm 2:6c5fac3dfd44 737 * @param[out] raw_8bit_temp: Raw value for temperature ( 8-bit resolution ).
mcm 2:6c5fac3dfd44 738 *
mcm 2:6c5fac3dfd44 739 *
mcm 2:6c5fac3dfd44 740 * @return Status of AMBIMATE_MS4_Get8bitRawTemperature.
mcm 2:6c5fac3dfd44 741 *
mcm 2:6c5fac3dfd44 742 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 743 * @date 03/June/2021
mcm 2:6c5fac3dfd44 744 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 745 * @pre N/A
mcm 2:6c5fac3dfd44 746 * @warning N/A.
mcm 2:6c5fac3dfd44 747 */
mcm 2:6c5fac3dfd44 748 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_Get8bitRawTemperature ( uint8_t* raw_8bit_temp )
mcm 2:6c5fac3dfd44 749 {
mcm 2:6c5fac3dfd44 750 char cmd = 0U;
mcm 2:6c5fac3dfd44 751 uint32_t aux;
mcm 2:6c5fac3dfd44 752
mcm 2:6c5fac3dfd44 753 /* Write the register */
mcm 2:6c5fac3dfd44 754 cmd = AMBIMATE_MS4_8BIT_STATUS_HIGH_BYTE;
mcm 2:6c5fac3dfd44 755 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 756 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 757
mcm 2:6c5fac3dfd44 758 /* Parse the data */
mcm 2:6c5fac3dfd44 759 *raw_8bit_temp = cmd;
mcm 2:6c5fac3dfd44 760
mcm 2:6c5fac3dfd44 761
mcm 2:6c5fac3dfd44 762 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 763 {
mcm 2:6c5fac3dfd44 764 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 765 }
mcm 2:6c5fac3dfd44 766 else
mcm 2:6c5fac3dfd44 767 {
mcm 2:6c5fac3dfd44 768 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 769 }
mcm 2:6c5fac3dfd44 770 }
mcm 2:6c5fac3dfd44 771
mcm 2:6c5fac3dfd44 772
mcm 2:6c5fac3dfd44 773
mcm 2:6c5fac3dfd44 774 /**
mcm 2:6c5fac3dfd44 775 * @brief AMBIMATE_MS4_Get8bitRawHumidity ( uint8_t* )
mcm 2:6c5fac3dfd44 776 * @details It gets the humidity raw value ( 8-bit resolution ).
mcm 2:6c5fac3dfd44 777 *
mcm 2:6c5fac3dfd44 778 * @param[in] N/A.
mcm 2:6c5fac3dfd44 779 *
mcm 2:6c5fac3dfd44 780 * @param[out] raw_8bit_hum: Raw value for humidity ( 8-bit ).
mcm 2:6c5fac3dfd44 781 *
mcm 2:6c5fac3dfd44 782 *
mcm 2:6c5fac3dfd44 783 * @return Status of AMBIMATE_MS4_Get8bitRawHumidity.
mcm 2:6c5fac3dfd44 784 *
mcm 2:6c5fac3dfd44 785 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 786 * @date 03/June/2021
mcm 2:6c5fac3dfd44 787 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 788 * @pre N/A
mcm 2:6c5fac3dfd44 789 * @warning N/A.
mcm 2:6c5fac3dfd44 790 */
mcm 2:6c5fac3dfd44 791 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_Get8bitRawHumidity ( uint8_t* raw_8bit_hum )
mcm 2:6c5fac3dfd44 792 {
mcm 2:6c5fac3dfd44 793 char cmd = 0U;
mcm 2:6c5fac3dfd44 794 uint32_t aux;
mcm 2:6c5fac3dfd44 795
mcm 2:6c5fac3dfd44 796 /* Write the register */
mcm 2:6c5fac3dfd44 797 cmd = AMBIMATE_MS4_8BIT_HUMIDITY_HIGH_BYTE;
mcm 2:6c5fac3dfd44 798 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 799 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 800
mcm 2:6c5fac3dfd44 801 /* Parse the data */
mcm 2:6c5fac3dfd44 802 *raw_8bit_hum = cmd;
mcm 2:6c5fac3dfd44 803
mcm 2:6c5fac3dfd44 804
mcm 2:6c5fac3dfd44 805 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 806 {
mcm 2:6c5fac3dfd44 807 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 808 }
mcm 2:6c5fac3dfd44 809 else
mcm 2:6c5fac3dfd44 810 {
mcm 2:6c5fac3dfd44 811 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 812 }
mcm 2:6c5fac3dfd44 813 }
mcm 2:6c5fac3dfd44 814
mcm 2:6c5fac3dfd44 815
mcm 2:6c5fac3dfd44 816
mcm 2:6c5fac3dfd44 817 /**
mcm 2:6c5fac3dfd44 818 * @brief AMBIMATE_MS4_Get8bitRawLight ( uint8_t* )
mcm 2:6c5fac3dfd44 819 * @details It gets the light raw value ( 8-bit resolution ).
mcm 2:6c5fac3dfd44 820 *
mcm 2:6c5fac3dfd44 821 * @param[in] N/A.
mcm 2:6c5fac3dfd44 822 *
mcm 2:6c5fac3dfd44 823 * @param[out] raw_8bit_light Raw value for light ( 8-bit ).
mcm 2:6c5fac3dfd44 824 *
mcm 2:6c5fac3dfd44 825 *
mcm 2:6c5fac3dfd44 826 * @return Status of AMBIMATE_MS4_Get8bitRawLight.
mcm 2:6c5fac3dfd44 827 *
mcm 2:6c5fac3dfd44 828 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 829 * @date 03/June/2021
mcm 2:6c5fac3dfd44 830 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 831 * @pre N/A
mcm 2:6c5fac3dfd44 832 * @warning N/A.
mcm 2:6c5fac3dfd44 833 */
mcm 2:6c5fac3dfd44 834 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_Get8bitRawLight ( uint8_t* raw_8bit_light )
mcm 2:6c5fac3dfd44 835 {
mcm 2:6c5fac3dfd44 836 char cmd = 0U;
mcm 2:6c5fac3dfd44 837 uint32_t aux;
mcm 2:6c5fac3dfd44 838
mcm 2:6c5fac3dfd44 839 /* Write the register */
mcm 2:6c5fac3dfd44 840 cmd = AMBIMATE_MS4_8BIT_LIGHT_HIGH_BYTE;
mcm 2:6c5fac3dfd44 841 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 842 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 843
mcm 2:6c5fac3dfd44 844 /* Parse the data */
mcm 2:6c5fac3dfd44 845 *raw_8bit_light = cmd;
mcm 2:6c5fac3dfd44 846
mcm 2:6c5fac3dfd44 847
mcm 2:6c5fac3dfd44 848 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 849 {
mcm 2:6c5fac3dfd44 850 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 851 }
mcm 2:6c5fac3dfd44 852 else
mcm 2:6c5fac3dfd44 853 {
mcm 2:6c5fac3dfd44 854 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 855 }
mcm 2:6c5fac3dfd44 856 }
mcm 2:6c5fac3dfd44 857
mcm 2:6c5fac3dfd44 858
mcm 2:6c5fac3dfd44 859
mcm 2:6c5fac3dfd44 860 /**
mcm 2:6c5fac3dfd44 861 * @brief AMBIMATE_MS4_Get8bitRawAudio ( uint8_t* )
mcm 2:6c5fac3dfd44 862 * @details It gets the audio raw value ( 8-bit resolution ).
mcm 2:6c5fac3dfd44 863 *
mcm 2:6c5fac3dfd44 864 * @param[in] N/A.
mcm 2:6c5fac3dfd44 865 *
mcm 2:6c5fac3dfd44 866 * @param[out] raw_8bit_audio Raw value for audio ( 8-bit ).
mcm 2:6c5fac3dfd44 867 *
mcm 2:6c5fac3dfd44 868 *
mcm 2:6c5fac3dfd44 869 * @return Status of AMBIMATE_MS4_Get8bitRawAudio.
mcm 2:6c5fac3dfd44 870 *
mcm 2:6c5fac3dfd44 871 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 872 * @date 03/June/2021
mcm 2:6c5fac3dfd44 873 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 874 * @pre N/A
mcm 2:6c5fac3dfd44 875 * @warning N/A.
mcm 2:6c5fac3dfd44 876 */
mcm 2:6c5fac3dfd44 877 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_Get8bitRawAudio ( uint8_t* raw_8bit_audio )
mcm 2:6c5fac3dfd44 878 {
mcm 2:6c5fac3dfd44 879 char cmd = 0U;
mcm 2:6c5fac3dfd44 880 uint32_t aux;
mcm 2:6c5fac3dfd44 881
mcm 2:6c5fac3dfd44 882 /* Write the register */
mcm 2:6c5fac3dfd44 883 cmd = AMBIMATE_MS4_8BIT_AUDIO_HIGH_BYTE;
mcm 2:6c5fac3dfd44 884 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 885 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 886
mcm 2:6c5fac3dfd44 887 /* Parse the data */
mcm 2:6c5fac3dfd44 888 *raw_8bit_audio = cmd;
mcm 2:6c5fac3dfd44 889
mcm 2:6c5fac3dfd44 890
mcm 2:6c5fac3dfd44 891 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 892 {
mcm 2:6c5fac3dfd44 893 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 894 }
mcm 2:6c5fac3dfd44 895 else
mcm 2:6c5fac3dfd44 896 {
mcm 2:6c5fac3dfd44 897 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 898 }
mcm 2:6c5fac3dfd44 899 }
mcm 2:6c5fac3dfd44 900
mcm 2:6c5fac3dfd44 901
mcm 2:6c5fac3dfd44 902
mcm 2:6c5fac3dfd44 903 /**
mcm 2:6c5fac3dfd44 904 * @brief AMBIMATE_MS4_Get8bitRawBatteryVolts ( uint8_t* )
mcm 2:6c5fac3dfd44 905 * @details It gets the battery volts raw value ( 8-bit resolution ).
mcm 2:6c5fac3dfd44 906 *
mcm 2:6c5fac3dfd44 907 * @param[in] N/A.
mcm 2:6c5fac3dfd44 908 *
mcm 2:6c5fac3dfd44 909 * @param[out] raw_8bit_batt Raw value for battery volts ( 8-bit ).
mcm 2:6c5fac3dfd44 910 *
mcm 2:6c5fac3dfd44 911 *
mcm 2:6c5fac3dfd44 912 * @return Status of AMBIMATE_MS4_Get8bitRawBatteryVolts.
mcm 2:6c5fac3dfd44 913 *
mcm 2:6c5fac3dfd44 914 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 915 * @date 03/June/2021
mcm 2:6c5fac3dfd44 916 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 917 * @pre N/A
mcm 2:6c5fac3dfd44 918 * @warning N/A.
mcm 2:6c5fac3dfd44 919 */
mcm 2:6c5fac3dfd44 920 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_Get8bitRawBatteryVolts ( uint8_t* raw_8bit_batt )
mcm 2:6c5fac3dfd44 921 {
mcm 2:6c5fac3dfd44 922 char cmd = 0U;
mcm 2:6c5fac3dfd44 923 uint32_t aux;
mcm 2:6c5fac3dfd44 924
mcm 2:6c5fac3dfd44 925 /* Write the register */
mcm 2:6c5fac3dfd44 926 cmd = AMBIMATE_MS4_8BIT_BATTERY_VOLTS_HIGH_BYTE;
mcm 2:6c5fac3dfd44 927 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 928 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 929
mcm 2:6c5fac3dfd44 930 /* Parse the data */
mcm 2:6c5fac3dfd44 931 *raw_8bit_batt = cmd;
mcm 2:6c5fac3dfd44 932
mcm 2:6c5fac3dfd44 933
mcm 2:6c5fac3dfd44 934 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 935 {
mcm 2:6c5fac3dfd44 936 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 937 }
mcm 2:6c5fac3dfd44 938 else
mcm 2:6c5fac3dfd44 939 {
mcm 2:6c5fac3dfd44 940 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 941 }
mcm 2:6c5fac3dfd44 942 }
mcm 2:6c5fac3dfd44 943
mcm 2:6c5fac3dfd44 944
mcm 2:6c5fac3dfd44 945
mcm 2:6c5fac3dfd44 946 /**
mcm 2:6c5fac3dfd44 947 * @brief AMBIMATE_MS4_Get8bitRawECO2 ( uint8_t* )
mcm 2:6c5fac3dfd44 948 * @details It gets the eCO2 raw value ( 8-bit resolution ).
mcm 2:6c5fac3dfd44 949 *
mcm 2:6c5fac3dfd44 950 * @param[in] N/A.
mcm 2:6c5fac3dfd44 951 *
mcm 2:6c5fac3dfd44 952 * @param[out] raw_eco2 Raw value for eCO2 ( 8-bit ).
mcm 2:6c5fac3dfd44 953 *
mcm 2:6c5fac3dfd44 954 *
mcm 2:6c5fac3dfd44 955 * @return Status of AMBIMATE_MS4_Get8bitRawECO2.
mcm 2:6c5fac3dfd44 956 *
mcm 2:6c5fac3dfd44 957 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 958 * @date 03/June/2021
mcm 2:6c5fac3dfd44 959 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 960 * @pre N/A
mcm 2:6c5fac3dfd44 961 * @warning N/A.
mcm 2:6c5fac3dfd44 962 */
mcm 2:6c5fac3dfd44 963 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_Get8bitRawECO2 ( uint8_t* raw_8bit_eco2 )
mcm 2:6c5fac3dfd44 964 {
mcm 2:6c5fac3dfd44 965 char cmd = 0U;
mcm 2:6c5fac3dfd44 966 uint32_t aux;
mcm 2:6c5fac3dfd44 967
mcm 2:6c5fac3dfd44 968 /* Write the register */
mcm 2:6c5fac3dfd44 969 cmd = AMBIMATE_MS4_8BIT_ECO2_HIGH_BYTE;
mcm 2:6c5fac3dfd44 970 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 971 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 972
mcm 2:6c5fac3dfd44 973 /* Parse the data */
mcm 2:6c5fac3dfd44 974 *raw_8bit_eco2 = cmd;
mcm 2:6c5fac3dfd44 975
mcm 2:6c5fac3dfd44 976
mcm 2:6c5fac3dfd44 977 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 978 {
mcm 2:6c5fac3dfd44 979 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 980 }
mcm 2:6c5fac3dfd44 981 else
mcm 2:6c5fac3dfd44 982 {
mcm 2:6c5fac3dfd44 983 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 984 }
mcm 2:6c5fac3dfd44 985 }
mcm 2:6c5fac3dfd44 986
mcm 2:6c5fac3dfd44 987
mcm 2:6c5fac3dfd44 988
mcm 2:6c5fac3dfd44 989 /**
mcm 2:6c5fac3dfd44 990 * @brief AMBIMATE_MS4_Get8bitRawVOC ( uint8_t* )
mcm 2:6c5fac3dfd44 991 * @details It gets the VOC raw value ( 8-bit resolution ).
mcm 2:6c5fac3dfd44 992 *
mcm 2:6c5fac3dfd44 993 * @param[in] N/A.
mcm 2:6c5fac3dfd44 994 *
mcm 2:6c5fac3dfd44 995 * @param[out] raw_8bit_voc Raw value for VOC ( 8-bit ).
mcm 2:6c5fac3dfd44 996 *
mcm 2:6c5fac3dfd44 997 *
mcm 2:6c5fac3dfd44 998 * @return Status of AMBIMATE_MS4_Get8bitRawVOC.
mcm 2:6c5fac3dfd44 999 *
mcm 2:6c5fac3dfd44 1000 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 1001 * @date 03/June/2021
mcm 2:6c5fac3dfd44 1002 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 1003 * @pre N/A
mcm 2:6c5fac3dfd44 1004 * @warning N/A.
mcm 2:6c5fac3dfd44 1005 */
mcm 2:6c5fac3dfd44 1006 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_Get8bitRawVOC ( uint8_t* raw_8bit_voc )
mcm 2:6c5fac3dfd44 1007 {
mcm 2:6c5fac3dfd44 1008 char cmd = 0U;
mcm 2:6c5fac3dfd44 1009 uint32_t aux;
mcm 2:6c5fac3dfd44 1010
mcm 2:6c5fac3dfd44 1011 /* Write the register */
mcm 2:6c5fac3dfd44 1012 cmd = AMBIMATE_MS4_8BIT_VOC_HIGH_BYTE;
mcm 2:6c5fac3dfd44 1013 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd, 1U, true );
mcm 2:6c5fac3dfd44 1014 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd, 1U );
mcm 2:6c5fac3dfd44 1015
mcm 2:6c5fac3dfd44 1016 /* Parse the data */
mcm 2:6c5fac3dfd44 1017 *raw_8bit_voc = cmd;
mcm 2:6c5fac3dfd44 1018
mcm 2:6c5fac3dfd44 1019
mcm 2:6c5fac3dfd44 1020 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 1021 {
mcm 2:6c5fac3dfd44 1022 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 1023 }
mcm 2:6c5fac3dfd44 1024 else
mcm 2:6c5fac3dfd44 1025 {
mcm 2:6c5fac3dfd44 1026 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 1027 }
mcm 2:6c5fac3dfd44 1028 }
mcm 2:6c5fac3dfd44 1029
mcm 2:6c5fac3dfd44 1030
mcm 2:6c5fac3dfd44 1031
mcm 2:6c5fac3dfd44 1032 /**
mcm 2:6c5fac3dfd44 1033 * @brief AMBIMATE_MS4_GetRaw8bitAllSensors ( uint8_t* , AMBIMATE_MS4_raw_8bit_data_values_t* )
mcm 2:6c5fac3dfd44 1034 * @details It gets the all sensors raw values ( 8-bit resolution ).
mcm 2:6c5fac3dfd44 1035 *
mcm 2:6c5fac3dfd44 1036 * @param[in] N/A.
mcm 2:6c5fac3dfd44 1037 *
mcm 2:6c5fac3dfd44 1038 * @param[out] status Status byte.
mcm 2:6c5fac3dfd44 1039 * @param[out] raw_8bit_all Raw value for all the sensors ( 8-bit ).
mcm 2:6c5fac3dfd44 1040 *
mcm 2:6c5fac3dfd44 1041 *
mcm 2:6c5fac3dfd44 1042 * @return Status of AMBIMATE_MS4_GetRaw8bitAllSensors.
mcm 2:6c5fac3dfd44 1043 *
mcm 2:6c5fac3dfd44 1044 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 1045 * @date 03/June/2021
mcm 2:6c5fac3dfd44 1046 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 1047 * @pre N/A
mcm 2:6c5fac3dfd44 1048 * @warning N/A.
mcm 2:6c5fac3dfd44 1049 */
mcm 2:6c5fac3dfd44 1050 AMBIMATE_MS4::AMBIMATE_MS4_status_t AMBIMATE_MS4::AMBIMATE_MS4_GetRaw8bitAllSensors ( uint8_t* status, AMBIMATE_MS4_raw_8bit_data_values_t* raw_8bit_all )
mcm 2:6c5fac3dfd44 1051 {
mcm 2:6c5fac3dfd44 1052 char cmd[8] = { 0U };
mcm 2:6c5fac3dfd44 1053 uint32_t aux;
mcm 2:6c5fac3dfd44 1054
mcm 2:6c5fac3dfd44 1055 /* Write the register */
mcm 2:6c5fac3dfd44 1056 cmd[0] = AMBIMATE_MS4_8BIT_STATUS_HIGH_BYTE;
mcm 2:6c5fac3dfd44 1057 aux = _i2c.write ( _AMBIMATE_MS4_Addr, &cmd[0], 1U, true );
mcm 2:6c5fac3dfd44 1058 aux |= _i2c.read ( _AMBIMATE_MS4_Addr, &cmd[0], sizeof( cmd )/sizeof( cmd[0] ) );
mcm 2:6c5fac3dfd44 1059
mcm 2:6c5fac3dfd44 1060 /* Parse the data */
mcm 2:6c5fac3dfd44 1061 *status = cmd[0];
mcm 2:6c5fac3dfd44 1062
mcm 2:6c5fac3dfd44 1063 raw_8bit_all->raw_8bit_temperature = cmd[1];
mcm 2:6c5fac3dfd44 1064
mcm 2:6c5fac3dfd44 1065 raw_8bit_all->raw_8bit_humidity = cmd[2];
mcm 2:6c5fac3dfd44 1066
mcm 2:6c5fac3dfd44 1067 raw_8bit_all->raw_8bit_light = cmd[3];
mcm 2:6c5fac3dfd44 1068
mcm 2:6c5fac3dfd44 1069 raw_8bit_all->raw_8bit_audio = cmd[4];
mcm 2:6c5fac3dfd44 1070
mcm 2:6c5fac3dfd44 1071 raw_8bit_all->raw_8bit_battery_volts = cmd[5];
mcm 2:6c5fac3dfd44 1072
mcm 2:6c5fac3dfd44 1073 raw_8bit_all->raw_8bit_eco2 = cmd[6];
mcm 2:6c5fac3dfd44 1074
mcm 2:6c5fac3dfd44 1075 raw_8bit_all->raw_8bit_voc = cmd[7];
mcm 2:6c5fac3dfd44 1076
mcm 2:6c5fac3dfd44 1077
mcm 2:6c5fac3dfd44 1078
mcm 2:6c5fac3dfd44 1079 if ( aux == I2C_SUCCESS )
mcm 2:6c5fac3dfd44 1080 {
mcm 2:6c5fac3dfd44 1081 return AMBIMATE_MS4_SUCCESS;
mcm 2:6c5fac3dfd44 1082 }
mcm 2:6c5fac3dfd44 1083 else
mcm 2:6c5fac3dfd44 1084 {
mcm 2:6c5fac3dfd44 1085 return AMBIMATE_MS4_FAILURE;
mcm 2:6c5fac3dfd44 1086 }
mcm 2:6c5fac3dfd44 1087 }
mcm 2:6c5fac3dfd44 1088
mcm 2:6c5fac3dfd44 1089
mcm 2:6c5fac3dfd44 1090
mcm 2:6c5fac3dfd44 1091 /**
mcm 2:6c5fac3dfd44 1092 * @brief AMBIMATE_MS4_ProcessAllData ( AMBIMATE_MS4_raw_data_values_t )
mcm 2:6c5fac3dfd44 1093 * @details It process all the data to human readable values for all the sensors.
mcm 2:6c5fac3dfd44 1094 *
mcm 2:6c5fac3dfd44 1095 * @param[in] raw_all: All raw values.
mcm 2:6c5fac3dfd44 1096 *
mcm 2:6c5fac3dfd44 1097 * @param[out] N/A.
mcm 2:6c5fac3dfd44 1098 *
mcm 2:6c5fac3dfd44 1099 *
mcm 2:6c5fac3dfd44 1100 * @return all_data All data is processed.
mcm 2:6c5fac3dfd44 1101 *
mcm 2:6c5fac3dfd44 1102 * @author Manuel Caballero
mcm 2:6c5fac3dfd44 1103 * @date 03/June/2021
mcm 2:6c5fac3dfd44 1104 * @version 03/June/2021 The ORIGIN
mcm 2:6c5fac3dfd44 1105 * @pre N/A
mcm 2:6c5fac3dfd44 1106 * @warning N/A.
mcm 2:6c5fac3dfd44 1107 */
mcm 2:6c5fac3dfd44 1108 AMBIMATE_MS4::AMBIMATE_MS4_data_values_t AMBIMATE_MS4::AMBIMATE_MS4_ProcessAllData ( AMBIMATE_MS4_raw_data_values_t raw_all )
mcm 2:6c5fac3dfd44 1109 {
mcm 2:6c5fac3dfd44 1110 AMBIMATE_MS4_data_values_t myData;
mcm 2:6c5fac3dfd44 1111
mcm 2:6c5fac3dfd44 1112 /* Temperature */
mcm 2:6c5fac3dfd44 1113 myData.temperature = ((double)((uint8_t)(raw_all.raw_temperature >> 8U)*256 + (uint8_t)(raw_all.raw_temperature & 0x00FF)))/10.0;
mcm 2:6c5fac3dfd44 1114
mcm 2:6c5fac3dfd44 1115 /* Humidity */
mcm 2:6c5fac3dfd44 1116 myData.humidity = ((double)((uint8_t)(raw_all.raw_humidity >> 8U)*256 + (uint8_t)(raw_all.raw_humidity & 0x00FF)))/10.0;
mcm 2:6c5fac3dfd44 1117
mcm 2:6c5fac3dfd44 1118 /* Light */
mcm 2:6c5fac3dfd44 1119 myData.light = (uint16_t)((uint8_t)(raw_all.raw_humidity >> 8U)*256 + (uint8_t)(raw_all.raw_humidity & 0x00FF));
mcm 2:6c5fac3dfd44 1120
mcm 2:6c5fac3dfd44 1121 /* Audio */
mcm 2:6c5fac3dfd44 1122 myData.audio = (uint16_t)((uint8_t)(raw_all.raw_audio >> 8U)*256 + (uint8_t)(raw_all.raw_audio & 0x00FF));
mcm 2:6c5fac3dfd44 1123
mcm 2:6c5fac3dfd44 1124 /* Battery volts */
mcm 2:6c5fac3dfd44 1125 myData.battery_volts = ((double)((uint8_t)(raw_all.raw_battery_volts >> 8U)*256 + (uint8_t)(raw_all.raw_battery_volts & 0x00FF))/1024.0)*(3.3/0.330);
mcm 2:6c5fac3dfd44 1126
mcm 2:6c5fac3dfd44 1127 /* Gas, eCO2 */
mcm 2:6c5fac3dfd44 1128 myData.eco2 = (uint16_t)((uint8_t)(raw_all.raw_eco2 >> 8U)*256 + (uint8_t)(raw_all.raw_eco2 & 0x00FF));
mcm 2:6c5fac3dfd44 1129
mcm 2:6c5fac3dfd44 1130 /* VOC */
mcm 2:6c5fac3dfd44 1131 myData.voc = (uint16_t)((uint8_t)(raw_all.raw_voc >> 8U)*256 + (uint8_t)(raw_all.raw_voc & 0x00FF));
mcm 2:6c5fac3dfd44 1132
mcm 2:6c5fac3dfd44 1133
mcm 2:6c5fac3dfd44 1134 return myData;
mcm 2:6c5fac3dfd44 1135 }