AmbiMate Sensor Module

Revision:
1:f0711d344f71
Parent:
0:8d9328d3ff35
Child:
2:6c5fac3dfd44
--- a/AMBIMATE_MS4.h	Thu Jun 03 17:02:20 2021 +0000
+++ b/AMBIMATE_MS4.h	Thu Jun 03 17:07:59 2021 +0000
@@ -4,7 +4,7 @@
  *              Header file.
  *
  *
- * @return      NA
+ * @return      N/A
  *
  * @author      Manuel Caballero
  * @date        03/June/2021
@@ -28,98 +28,262 @@
 
 
 /*!
- Library for the AMBIMATE_MS4 Digital humidity sensor with temperature output.
+ Library for the AMBIMATE_MS4 AmbiMate Sensor Module.
 */
 class AMBIMATE_MS4
 {
 public:
     /**
-      * @brief   DEFAULT ADDRESSES
+    * @brief   DEFAULT ADDRESS
+    */
+    typedef enum {
+        AMBIMATE_MS4_ADDRESS     =   ( 0x2A << 1U )                 /*!<   AMBIMATE_MS4 ADDR                    */
+    } AMBIMATE_MS4_address_t;
+
+
+
+    /**
+      * @brief   COMMAND REGISTERS
       */
     typedef enum {
-        AMBIMATE_MS4_ADDRESS     =   ( 0x40 << 1 )
-    } AMBIMATE_MS4_address_t;
+        AMBIMATE_MS4_STATUS_HIGH_BYTE             =   0x00,   /*!<  Status register                       */
+        AMBIMATE_MS4_TEMPERATURE_HIGH_BYTE        =   0x01,   /*!<  Temperature register. High byte       */
+        AMBIMATE_MS4_TEMPERATURE_LOW_BYTE         =   0x02,   /*!<  Temperature register. Low byte        */
+        AMBIMATE_MS4_HUMIDITY_HIGH_BYTE           =   0x03,   /*!<  Humidity register. High byte          */
+        AMBIMATE_MS4_HUMIDITY_LOW_BYTE            =   0x04,   /*!<  Humidity register. Low byte           */
+        AMBIMATE_MS4_LIGHT_HIGH_BYTE              =   0x05,   /*!<  Light register. High byte             */
+        AMBIMATE_MS4_LIGHT_LOW_BYTE               =   0x06,   /*!<  Light register. Low byte              */
+        AMBIMATE_MS4_AUDIO_HIGH_BYTE              =   0x07,   /*!<  Audio register. High byte             */
+        AMBIMATE_MS4_AUDIO_LOW_BYTE               =   0x08,   /*!<  Audio register. Low byte              */
+        AMBIMATE_MS4_BATTERY_VOLTS_HIGH_BYTE      =   0x09,   /*!<  Battery voltage register. High byte   */
+        AMBIMATE_MS4_BATTERY_VOLTS_LOW_BYTE       =   0x0A,   /*!<  Battery voltage register. Low byte    */
+        AMBIMATE_MS4_ECO2_HIGH_BYTE               =   0x0B,   /*!<  eCO2 register. High byte              */
+        AMBIMATE_MS4_ECO2_LOW_BYTE                =   0x0C,   /*!<  eCO2 register. Low byte               */
+        AMBIMATE_MS4_VOC_HIGH_BYTE                =   0x0D,   /*!<  VOC register. High byte               */
+        AMBIMATE_MS4_VOC_LOW_BYTE                 =   0x0E    /*!<  VOC register. Low byte                */
+    } AMBIMATE_MS4_sensor_data_registers_t;
+
+
+    typedef enum {
+        AMBIMATE_MS4_8BIT_STATUS_HIGH_BYTE        =   0x40,   /*!<  Status register                       */
+        AMBIMATE_MS4_8BIT_TEMPERATURE_HIGH_BYTE   =   0x41,   /*!<  Temperature register. High byte       */
+        AMBIMATE_MS4_8BIT_HUMIDITY_HIGH_BYTE      =   0x42,   /*!<  Humidity register. High byte          */
+        AMBIMATE_MS4_8BIT_LIGHT_HIGH_BYTE         =   0x43,   /*!<  Light register. High byte             */
+        AMBIMATE_MS4_8BIT_AUDIO_HIGH_BYTE         =   0x44,   /*!<  Audio register. High byte             */
+        AMBIMATE_MS4_8BIT_BATTERY_VOLTS_HIGH_BYTE =   0x45,   /*!<  Battery voltage register. High byte   */
+        AMBIMATE_MS4_8BIT_ECO2_HIGH_BYTE          =   0x46,   /*!<  eCO2 register. High byte              */
+        AMBIMATE_MS4_8BIT_VOC_HIGH_BYTE           =   0x47    /*!<  VOC register. High byte               */
+    } AMBIMATE_MS4_8bit_sensor_data_registers_t;
+
+
+    typedef enum {
+        AMBIMATE_MS4_FIRMWARE_VERSION             =   0x80,   /*!<  Firmware version                      */
+        AMBIMATE_MS4_FIRMWARE_SUB_VERSION         =   0x81,   /*!<  Firmware sub-version                  */
+        AMBIMATE_MS4_OPTIONAL_SENSORS             =   0x82    /*!<  Optional sensors                      */
+    } AMBIMATE_MS4_other_registers_t;
+
+
+    typedef enum {
+        AMBIMATE_MS4_SCAN_START_BYTE              =   0xC0,   /*!<  Scan start byte                       */
+        AMBIMATE_MS4_AUDIO_EVENT_LEVEL            =   0xC1,   /*!<  Audio level event                     */
+        AMBIMATE_MS4_PROCESSOR_RESET              =   0xF0    /*!<  Initiates a processor reset           */
+    } AMBIMATE_MS4_writable_registers_t;
+
+
+
+
+    /**
+      * @brief   OPTIONAL SENSORS BYTE REGISTER.
+      *           NOTE: N/A.
+      */
+    /* CO2 <0>
+     *    NOTE: N/A.
+     */
+    typedef enum {
+        OPTIONAL_SENSORS_BYTE_CO2_MASK                  =   ( 1U << 0U ),   /*!<  CO2 mask                                                        */
+        OPTIONAL_SENSORS_BYTE_CO2_SENSOR_NOT_INSTALLED  =   ( 0U << 0U ),   /*!<  CO2 sensor is not installed                                     */
+        OPTIONAL_SENSORS_BYTE_CO2_SENSOR_INSTALLED      =   ( 1U << 0U )    /*!<  CO2 sensor is installed                                         */
+    } AMBIMATE_MS4_optional_sensors_byte_co2_t;
+
+
+    /* MIC <2>
+     *    NOTE: N/A.
+     */
+    typedef enum {
+        OPTIONAL_SENSORS_BYTE_MIC_MASK                  =   ( 1U << 2U ),   /*!<  MIC mask                                                        */
+        OPTIONAL_SENSORS_BYTE_MIC_SENSOR_NOT_INSTALLED  =   ( 0U << 2U ),   /*!<  MIC sensor is not installed                                     */
+        OPTIONAL_SENSORS_BYTE_MIC_SENSOR_INSTALLED      =   ( 1U << 2U )    /*!<  MIC sensor is installed                                         */
+    } AMBIMATE_MS4_optional_sensors_byte_mic_t;
+
 
 
     /**
-     * @brief   COMMAND REGISTERS
+      * @brief   WRITEABLE REGISTERS.
+      *           NOTE: N/A.
+      */
+    /* GAS <6>
+     *    NOTE: N/A.
+     */
+    typedef enum {
+        WRITEABLE_REGISTERS_GAS_MASK                        =   ( 1U << 6U ),   /*!<  GAS mask                                                        */
+        WRITEABLE_REGISTERS_GAS_MEASUREMENT_COMPLETED       =   ( 0U << 6U ),   /*!<  Measurement is completed                                        */
+        WRITEABLE_REGISTERS_GAS_INITIATE_NEW_MEASUREMENT    =   ( 1U << 6U )    /*!<  Initiates a measurement of the VOC sensor if installed          */
+    } AMBIMATE_MS4_writeable_reg_gas_t;
+
+
+    /* BATT <5>
+     *    NOTE: N/A.
      */
-#define AMBIMATE_MS4_TRIGGER_TEMPERATURE_MEASUREMENT_HOLD_MASTER          0xE3
-#define AMBIMATE_MS4_TRIGGER_HUMIDITY_MEASUREMENT_HOLD_MASTER             0xE5
-#define AMBIMATE_MS4_TRIGGER_TEMPERATURE_MEASUREMENT_NO_HOLD_MASTER       0xF3
-#define AMBIMATE_MS4_TRIGGER_HUMIDITY_MEASUREMENT_NO_HOLD_MASTER          0xF5
-#define AMBIMATE_MS4_WRITE_REGISTER                                       0xE6
-#define AMBIMATE_MS4_READ_REGISTER                                        0xE7
-#define AMBIMATE_MS4_SOFT_RESET                                           0xFE
+    typedef enum {
+        WRITEABLE_REGISTERS_BATT_MASK                       =   ( 1U << 5U ),   /*!<  BATT mask                                                       */
+        WRITEABLE_REGISTERS_BATT_MEASUREMENT_COMPLETED      =   ( 0U << 5U ),   /*!<  Measurement is completed                                        */
+        WRITEABLE_REGISTERS_BATT_INITIATE_NEW_MEASUREMENT   =   ( 1U << 5U )    /*!<  Initiates a measurement of the BATTERY voltage                  */
+    } AMBIMATE_MS4_writeable_reg_batt_t;
+
+
+    /* AUD <4>
+     *    NOTE: N/A.
+     */
+    typedef enum {
+        WRITEABLE_REGISTERS_AUD_MASK                        =   ( 1U << 4U ),   /*!<  AUD mask                                                        */
+        WRITEABLE_REGISTERS_AUD_MEASUREMENT_COMPLETED       =   ( 0U << 4U ),   /*!<  Measurement is completed                                        */
+        WRITEABLE_REGISTERS_AUD_INITIATE_NEW_MEASUREMENT    =   ( 1U << 4U )    /*!<  Initiates a measurement of the AUDIO sensor if installed        */
+    } AMBIMATE_MS4_writeable_reg_aud_t;
+
+
+    /* LIGHT <3>
+     *    NOTE: N/A.
+     */
+    typedef enum {
+        WRITEABLE_REGISTERS_LIGHT_MASK                      =   ( 1U << 3U ),   /*!<  LIGHT mask                                                      */
+        WRITEABLE_REGISTERS_LIGHT_MEASUREMENT_COMPLETED     =   ( 0U << 3U ),   /*!<  Measurement is completed                                        */
+        WRITEABLE_REGISTERS_LIGHT_INITIATE_NEW_MEASUREMENT  =   ( 1U << 3U )    /*!<  Initiates a measurement of the LIGHT sensor                     */
+    } AMBIMATE_MS4_writeable_reg_light_t;
 
 
-    /* User Register */
-    /**
-      * @brief   RESOLUTION
-      */
+    /* HUM <2>
+     *    NOTE: N/A.
+     */
+    typedef enum {
+        WRITEABLE_REGISTERS_HUM_MASK                        =   ( 1U << 2U ),   /*!<  HUM mask                                                        */
+        WRITEABLE_REGISTERS_HUM_MEASUREMENT_COMPLETED       =   ( 0U << 2U ),   /*!<  Measurement is completed                                        */
+        WRITEABLE_REGISTERS_HUM_INITIATE_NEW_MEASUREMENT    =   ( 1U << 2U )    /*!<  Initiates a measurement of the HUMIDITY sensor                  */
+    } AMBIMATE_MS4_writeable_reg_hum_t;
+
+
+    /* TEMP <1>
+     *    NOTE: N/A.
+     */
+    typedef enum {
+        WRITEABLE_REGISTERS_TEMP_MASK                       =   ( 1U << 1U ),   /*!<  TEMP mask                                                       */
+        WRITEABLE_REGISTERS_TEMP_MEASUREMENT_COMPLETED      =   ( 0U << 1U ),   /*!<  Measurement is completed                                        */
+        WRITEABLE_REGISTERS_TEMP_INITIATE_NEW_MEASUREMENT   =   ( 1U << 1U )    /*!<  Initiates a measurement of the TEMPERATURE sensor               */
+    } AMBIMATE_MS4_writeable_reg_temp_t;
+
+
+    /* STATUS <0>
+     *    NOTE: N/A.
+     */
     typedef enum {
-        RESOLUTION_12RH_14TEMP          =   0,          /*!<  Resolution: RH 12-bits, T 14-bits                 */
-        RESOLUTION_8RH_12TEMP           =   1,          /*!<  Resolution: RH 8-bits, T 12-bits                  */
-        RESOLUTION_10RH_13TEMP          =   2,          /*!<  Resolution: RH 10-bits, T 13-bits                 */
-        RESOLUTION_11RH_11TEMP          =   3           /*!<  Resolution: RH 11-bits, T 11-bits                 */
-    } AMBIMATE_MS4_user_register_resolution_t;
-    
+        WRITEABLE_REGISTERS_STATUS_MASK                     =   ( 1U << 0U ),   /*!<  STATUS mask                                                     */
+        WRITEABLE_REGISTERS_STATUS_MEASUREMENT_COMPLETED    =   ( 0U << 0U ),   /*!<  Measurement is completed                                        */
+        WRITEABLE_REGISTERS_STATUS_INITIATE_NEW_MEASUREMENT =   ( 1U << 0U )    /*!<  Initiates a measurement of the STATUS                           */
+    } AMBIMATE_MS4_writeable_reg_status_t;
+
+
+
+
     /**
-      * @brief   STATUS: END OF BATTERY
+      * @brief   RESET REGISTER.
+      *           NOTE: N/A.
+      */
+    /* PROCESSOR_RESET <7:0>
+     *    NOTE: N/A.
+     */
+    typedef enum {
+        RESET_REGISTER_PROCESSOR_RESET                      =   0xA5            /*!<  It initiates an AmbiMate processor reset                        */
+    } AMBIMATE_MS4_reset_t;
+
+
+
+
+    /**
+      * @brief   OPTIONAL SENSORS BYTE.
+      *           NOTE: N/A.
       */
     typedef enum {
-        STATUS_END_BATTERY_HIGH_2V25     =   0,         /*!<  Status: RH 12-bits, T 14-bits                      */
-        STATUS_END_BATTERY_LOW_2V25      =   1          /*!<  Status: RH 8-bits, T 12-bits                       */
-    } AMBIMATE_MS4_user_register_status_t;
-    
-    /**
-      * @brief   ON-CHIP HEATER
-      */
-    typedef enum {
-        HEATER_ENABLED                  =   0,          /*!<  Heater enabled                                    */
-        HEATER_DISABLED                 =   1           /*!<  Heater disabled                                   */
-    } AMBIMATE_MS4_user_register_heater_t;
-    
-    /**
-      * @brief   OTP RELOAD
-      */
-    typedef enum {
-        OTP_ENABLED                     =   0,          /*!<  OTP enabled                                       */
-        OTP_DISABLED                    =   1           /*!<  OTP disabled                                      */
-    } AMBIMATE_MS4_user_register_otp_t;
-
-
-    
-    /* Mode of working */
-    /**
-      * @brief   MODE
-      */
-    typedef enum {
-        MODE_HOLD_MASTER                =   0,          /*!<  Mode Hold master                                 */
-        MODE_NO_HOLD_MASTER             =   1           /*!<  Mode No hold master                              */
-    } AMBIMATE_MS4_master_mode_t;
+        OPTIONAL_SENSORS_NONE                               =   0,            /*!<  No optional sensors on board                                      */
+        OPTIONAL_SENSORS_CO2                                =   1,            /*!<  Optional sensors: C02 only                                        */
+        OPTIONAL_SENSORS_MIC                                =   3,            /*!<  Optional sensors: MIC only                                        */
+        OPTIONAL_SENSORS_CO2_AND_MIC                        =   4             /*!<  Optional sensors: CO2 and MIC                                     */
+    } AMBIMATE_MS4_op_sensors_byte_t;
 
 
 
 
 
-#ifndef VECTOR_STRUCT_H
-#define VECTOR_STRUCT_H
+
+#ifndef AMBIMATE_MS4_VECTOR_STRUCT_H
+#define AMBIMATE_MS4_VECTOR_STRUCT_H
+    /* OTHER REGISTERS  */
     typedef struct {
-        char RawTemperature[3];
-    } Vector_raw_temperature_t;
+        uint8_t                         firmware_version;                 /*< Firmware version                                                */
+        uint8_t                         firmware_sub_version;             /*< Firmware sub-version                                            */
+        AMBIMATE_MS4_op_sensors_byte_t  optional_sensors;                 /*< Optional sensors                                                */
+    } AMBIMATE_MS4_other_reg_param_t;
+
 
+    /* RAW DATA VALUES: 16-bit  */
+    typedef struct {
+        uint16_t  raw_temperature;                                        /*< Raw temperature value                                           */
+        uint16_t  raw_humidity;                                           /*< Raw humidity value                                              */
+        uint16_t  raw_light;                                              /*< Raw light value                                                 */
+        uint16_t  raw_audio;                                              /*< Raw audio value                                                 */
+        uint16_t  raw_battery_volts;                                      /*< Raw battery volts value                                         */
+        uint16_t  raw_eco2;                                               /*< Raw eCO2 value                                                  */
+        uint16_t  raw_voc;                                                /*< Raw VOC value                                                   */
+    } AMBIMATE_MS4_raw_data_values_t;
+
+
+    /* RAW DATA VALUES: 8-bit  */
     typedef struct {
-        char RawHumidity[3];
-    } Vector_raw_humidity_t;
-    
+        uint16_t  raw_8bit_temperature;                                   /*< Raw temperature value                                           */
+        uint16_t  raw_8bit_humidity;                                      /*< Raw humidity value                                              */
+        uint16_t  raw_8bit_light;                                         /*< Raw light value                                                 */
+        uint16_t  raw_8bit_audio;                                         /*< Raw audio value                                                 */
+        uint16_t  raw_8bit_battery_volts;                                 /*< Raw battery volts value                                         */
+        uint16_t  raw_8bit_eco2;                                          /*< Raw eCO2 value                                                  */
+        uint16_t  raw_8bit_voc;                                           /*< Raw VOC value                                                   */
+    } AMBIMATE_MS4_raw_8bit_data_values_t;
+
+
+    /* DATA VALUES: 16-bit resolution  */
     typedef struct {
-        float Temperature;
-    } Vector_temperature_f;
+        double    temperature;                                            /*< Temperature value                                               */
+        double    humidity;                                               /*< Humidity value                                                  */
+        uint16_t  light;                                                  /*< Light value                                                     */
+        uint16_t  audio;                                                  /*< Audio value                                                     */
+        double    battery_volts;                                          /*< Battery volts value                                             */
+        uint16_t  eco2;                                                   /*< eCO2 value                                                      */
+        uint16_t  voc;                                                    /*< VOC value                                                       */
+    } AMBIMATE_MS4_data_values_t;
+
+
+
 
+    /* USER: User's variables  */
     typedef struct {
-        float Humidity;
-    } Vector_humidity_f;
+        uint8_t  status;                                                  /*< Status register                                                 */
+
+        uint8_t  start_scan_byte;                                         /*< StartScanByte register                                          */
+
+        AMBIMATE_MS4_raw_data_values_t      raw_data;                     /*< Raw data values                                                 */
+        AMBIMATE_MS4_raw_8bit_data_values_t raw_data8bit;                 /*< 8-bit Raw data values                                           */
+
+        AMBIMATE_MS4_data_values_t          data;                         /*< Data values                                                     */
+
+        AMBIMATE_MS4_other_reg_param_t      info;                         /*< Other registers: Info regarding the device                      */
+    } AMBIMATE_MS4_data_t;
 #endif
 
 
@@ -127,9 +291,10 @@
       * @brief   INTERNAL CONSTANTS
       */
     typedef enum {
-        AMBIMATE_MS4_SUCCESS     =       0,
-        AMBIMATE_MS4_FAILURE     =       1,
-        I2C_SUCCESS        =       0                                           /*!<   I2C communication was fine     */
+        AMBIMATE_MS4_SUCCESS        =       0,
+        AMBIMATE_MS4_FAILURE        =       1,
+        AMBIMATE_MS4_DATA_CORRUPTED =       2,
+        I2C_SUCCESS                 =       0                            /*!<   I2C communication was fine     */
     } AMBIMATE_MS4_status_t;
 
 
@@ -148,41 +313,101 @@
      */
     ~AMBIMATE_MS4();
 
-    /** It configures the device.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_Init                          ( AMBIMATE_MS4_master_mode_t myMode, AMBIMATE_MS4_user_register_resolution_t myResolution, AMBIMATE_MS4_user_register_heater_t myHeater );
+    /** It initiates a new measurements of the chosen sensors.
+    */
+    AMBIMATE_MS4_status_t  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 );
+
+    /** It gets the scan byte values.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetScanStartByte        ( uint8_t* scan_byte );
+
+    /** It gets the firmware version.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetFirmwareVersion      ( uint8_t* fw_version );
+
+    /** It gets the firmware sub-version.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetFirmwareSubVersion   ( uint8_t* fw_subversion );
+
+    /** It gets the optional sensors on board.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetOptionalSensorsByte  ( AMBIMATE_MS4_op_sensors_byte_t* op_sensors );
+
+    /** It performs a processor reset.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_ProcessorReset          ( void );
 
-    /** It resets the device by software.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_SoftReset                     ( void );
+    /** It gets the Status value.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetStatus               ( uint8_t* status );
+
+    /** It gets the raw value for temperature.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRawTemperature       ( uint16_t* raw_temp );
+
+    /** It gets the raw value for humidity.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRawHumidity          ( uint16_t* raw_hum );
 
-    /** It triggers a new temperature measurement.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_TriggerTemperature            ( void );
+    /** It gets the raw value for light.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRawLight             ( uint16_t* raw_light );
+
+    /** It gets the raw value for audio.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRawAudio             ( uint16_t* raw_audio );
+
+    /** It gets the raw value for battery volts.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRawBatteryVolts      ( uint16_t* raw_batt );
 
-    /** It reads the raw temperature.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_ReadRawTemperature            ( Vector_raw_temperature_t* myRawTemperature );
-    
-    /** It reads the temperature.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_ReadTemperature               ( Vector_temperature_f* myTemperature );
+    /** It gets the raw value for eCO2.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRawECO2              ( uint16_t* raw_eco2 );
+
+    /** It gets the raw value for VOC.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRawVOC               ( uint16_t* raw_voc );
+
+    /** It gets the raw value for all the sensors.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRawAllSensors        ( uint8_t* status, AMBIMATE_MS4_raw_data_values_t* raw_all );
 
-    /** It triggers a new humidity measurement.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_TriggerHumidity               ( void );
+    /** It gets the 8bit raw value for temperature.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_Get8bitRawTemperature   ( uint8_t* raw_8bit_temp );
+
+    /** It gets the 8bit raw value for humidity.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_Get8bitRawHumidity      ( uint8_t* raw_8bit_hum );
+
+    /** It gets the 8bit raw value for light.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_Get8bitRawLight         ( uint8_t* raw_8bit_light );
 
-    /** It reads the raw humidity.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_ReadRawHumidity               ( Vector_raw_humidity_t* myRawHumidity );
-    
-    /** It reads the humidity.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_ReadHumidity                  ( Vector_humidity_f* myHumidity );
+    /** It gets the 8bit raw value for audio.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_Get8bitRawAudio         ( uint8_t* raw_8bit_audio );
+
+    /** It gets the 8bit raw value for battery volts.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_Get8bitRawBatteryVolts  ( uint8_t* raw_8bit_batt );
+
+    /** It gets the 8bit raw value for eCO2.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_Get8bitRawECO2          ( uint8_t* raw_8bit_eco2 );
 
-    /** It gets the battery status.
-     */
-    AMBIMATE_MS4_status_t  AMBIMATE_MS4_BatteryStatus                 ( AMBIMATE_MS4_user_register_status_t* myBattStatus );
+    /** It gets the 8bit raw value for VOC.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_Get8bitRawVOC           ( uint8_t* raw_8bit_voc );
+
+    /** It gets the 8bit raw value for all the sensors.
+      */
+    AMBIMATE_MS4_status_t  AMBIMATE_MS4_GetRaw8bitAllSensors    ( uint8_t* status, AMBIMATE_MS4_raw_8bit_data_values_t* raw_8bit_all );
+
+    /** It process all the data to human readable values for all the sensors.
+      */
+    AMBIMATE_MS4_data_values_t  AMBIMATE_MS4_ProcessAllData     ( AMBIMATE_MS4_raw_data_values_t raw_all );
 
 private:
     I2C      _i2c;