AmbiMate Sensor Module
AMBIMATE_MS4.h@2:6c5fac3dfd44, 2021-06-03 (annotated)
- Committer:
- mcm
- Date:
- Thu Jun 03 17:42:11 2021 +0000
- Revision:
- 2:6c5fac3dfd44
- Parent:
- 1:f0711d344f71
- Child:
- 3:891e0af7da10
The function file was completed and it is ready to test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mcm | 0:8d9328d3ff35 | 1 | /** |
mcm | 0:8d9328d3ff35 | 2 | * @brief AMBIMATE_MS4.h |
mcm | 0:8d9328d3ff35 | 3 | * @details AmbiMate Sensor Module. |
mcm | 0:8d9328d3ff35 | 4 | * Header file. |
mcm | 0:8d9328d3ff35 | 5 | * |
mcm | 0:8d9328d3ff35 | 6 | * |
mcm | 1:f0711d344f71 | 7 | * @return N/A |
mcm | 0:8d9328d3ff35 | 8 | * |
mcm | 0:8d9328d3ff35 | 9 | * @author Manuel Caballero |
mcm | 0:8d9328d3ff35 | 10 | * @date 03/June/2021 |
mcm | 0:8d9328d3ff35 | 11 | * @version 03/June/2021 The ORIGIN |
mcm | 0:8d9328d3ff35 | 12 | * @pre N/A. |
mcm | 0:8d9328d3ff35 | 13 | * @warning N/A |
mcm | 0:8d9328d3ff35 | 14 | * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). |
mcm | 0:8d9328d3ff35 | 15 | */ |
mcm | 0:8d9328d3ff35 | 16 | #ifndef AMBIMATE_MS4_H |
mcm | 0:8d9328d3ff35 | 17 | #define AMBIMATE_MS4_H |
mcm | 0:8d9328d3ff35 | 18 | |
mcm | 0:8d9328d3ff35 | 19 | #include "mbed.h" |
mcm | 0:8d9328d3ff35 | 20 | |
mcm | 0:8d9328d3ff35 | 21 | |
mcm | 0:8d9328d3ff35 | 22 | /** |
mcm | 0:8d9328d3ff35 | 23 | Example: |
mcm | 0:8d9328d3ff35 | 24 | @code |
mcm | 0:8d9328d3ff35 | 25 | |
mcm | 0:8d9328d3ff35 | 26 | @endcode |
mcm | 0:8d9328d3ff35 | 27 | */ |
mcm | 0:8d9328d3ff35 | 28 | |
mcm | 0:8d9328d3ff35 | 29 | |
mcm | 0:8d9328d3ff35 | 30 | /*! |
mcm | 1:f0711d344f71 | 31 | Library for the AMBIMATE_MS4 AmbiMate Sensor Module. |
mcm | 0:8d9328d3ff35 | 32 | */ |
mcm | 0:8d9328d3ff35 | 33 | class AMBIMATE_MS4 |
mcm | 0:8d9328d3ff35 | 34 | { |
mcm | 0:8d9328d3ff35 | 35 | public: |
mcm | 0:8d9328d3ff35 | 36 | /** |
mcm | 1:f0711d344f71 | 37 | * @brief DEFAULT ADDRESS |
mcm | 1:f0711d344f71 | 38 | */ |
mcm | 1:f0711d344f71 | 39 | typedef enum { |
mcm | 1:f0711d344f71 | 40 | AMBIMATE_MS4_ADDRESS = ( 0x2A << 1U ) /*!< AMBIMATE_MS4 ADDR */ |
mcm | 1:f0711d344f71 | 41 | } AMBIMATE_MS4_address_t; |
mcm | 1:f0711d344f71 | 42 | |
mcm | 1:f0711d344f71 | 43 | |
mcm | 1:f0711d344f71 | 44 | |
mcm | 1:f0711d344f71 | 45 | /** |
mcm | 1:f0711d344f71 | 46 | * @brief COMMAND REGISTERS |
mcm | 0:8d9328d3ff35 | 47 | */ |
mcm | 0:8d9328d3ff35 | 48 | typedef enum { |
mcm | 1:f0711d344f71 | 49 | AMBIMATE_MS4_STATUS_HIGH_BYTE = 0x00, /*!< Status register */ |
mcm | 1:f0711d344f71 | 50 | AMBIMATE_MS4_TEMPERATURE_HIGH_BYTE = 0x01, /*!< Temperature register. High byte */ |
mcm | 1:f0711d344f71 | 51 | AMBIMATE_MS4_TEMPERATURE_LOW_BYTE = 0x02, /*!< Temperature register. Low byte */ |
mcm | 1:f0711d344f71 | 52 | AMBIMATE_MS4_HUMIDITY_HIGH_BYTE = 0x03, /*!< Humidity register. High byte */ |
mcm | 1:f0711d344f71 | 53 | AMBIMATE_MS4_HUMIDITY_LOW_BYTE = 0x04, /*!< Humidity register. Low byte */ |
mcm | 1:f0711d344f71 | 54 | AMBIMATE_MS4_LIGHT_HIGH_BYTE = 0x05, /*!< Light register. High byte */ |
mcm | 1:f0711d344f71 | 55 | AMBIMATE_MS4_LIGHT_LOW_BYTE = 0x06, /*!< Light register. Low byte */ |
mcm | 1:f0711d344f71 | 56 | AMBIMATE_MS4_AUDIO_HIGH_BYTE = 0x07, /*!< Audio register. High byte */ |
mcm | 1:f0711d344f71 | 57 | AMBIMATE_MS4_AUDIO_LOW_BYTE = 0x08, /*!< Audio register. Low byte */ |
mcm | 1:f0711d344f71 | 58 | AMBIMATE_MS4_BATTERY_VOLTS_HIGH_BYTE = 0x09, /*!< Battery voltage register. High byte */ |
mcm | 1:f0711d344f71 | 59 | AMBIMATE_MS4_BATTERY_VOLTS_LOW_BYTE = 0x0A, /*!< Battery voltage register. Low byte */ |
mcm | 1:f0711d344f71 | 60 | AMBIMATE_MS4_ECO2_HIGH_BYTE = 0x0B, /*!< eCO2 register. High byte */ |
mcm | 1:f0711d344f71 | 61 | AMBIMATE_MS4_ECO2_LOW_BYTE = 0x0C, /*!< eCO2 register. Low byte */ |
mcm | 1:f0711d344f71 | 62 | AMBIMATE_MS4_VOC_HIGH_BYTE = 0x0D, /*!< VOC register. High byte */ |
mcm | 1:f0711d344f71 | 63 | AMBIMATE_MS4_VOC_LOW_BYTE = 0x0E /*!< VOC register. Low byte */ |
mcm | 1:f0711d344f71 | 64 | } AMBIMATE_MS4_sensor_data_registers_t; |
mcm | 1:f0711d344f71 | 65 | |
mcm | 1:f0711d344f71 | 66 | |
mcm | 1:f0711d344f71 | 67 | typedef enum { |
mcm | 1:f0711d344f71 | 68 | AMBIMATE_MS4_8BIT_STATUS_HIGH_BYTE = 0x40, /*!< Status register */ |
mcm | 1:f0711d344f71 | 69 | AMBIMATE_MS4_8BIT_TEMPERATURE_HIGH_BYTE = 0x41, /*!< Temperature register. High byte */ |
mcm | 1:f0711d344f71 | 70 | AMBIMATE_MS4_8BIT_HUMIDITY_HIGH_BYTE = 0x42, /*!< Humidity register. High byte */ |
mcm | 1:f0711d344f71 | 71 | AMBIMATE_MS4_8BIT_LIGHT_HIGH_BYTE = 0x43, /*!< Light register. High byte */ |
mcm | 1:f0711d344f71 | 72 | AMBIMATE_MS4_8BIT_AUDIO_HIGH_BYTE = 0x44, /*!< Audio register. High byte */ |
mcm | 1:f0711d344f71 | 73 | AMBIMATE_MS4_8BIT_BATTERY_VOLTS_HIGH_BYTE = 0x45, /*!< Battery voltage register. High byte */ |
mcm | 1:f0711d344f71 | 74 | AMBIMATE_MS4_8BIT_ECO2_HIGH_BYTE = 0x46, /*!< eCO2 register. High byte */ |
mcm | 1:f0711d344f71 | 75 | AMBIMATE_MS4_8BIT_VOC_HIGH_BYTE = 0x47 /*!< VOC register. High byte */ |
mcm | 1:f0711d344f71 | 76 | } AMBIMATE_MS4_8bit_sensor_data_registers_t; |
mcm | 1:f0711d344f71 | 77 | |
mcm | 1:f0711d344f71 | 78 | |
mcm | 1:f0711d344f71 | 79 | typedef enum { |
mcm | 1:f0711d344f71 | 80 | AMBIMATE_MS4_FIRMWARE_VERSION = 0x80, /*!< Firmware version */ |
mcm | 1:f0711d344f71 | 81 | AMBIMATE_MS4_FIRMWARE_SUB_VERSION = 0x81, /*!< Firmware sub-version */ |
mcm | 1:f0711d344f71 | 82 | AMBIMATE_MS4_OPTIONAL_SENSORS = 0x82 /*!< Optional sensors */ |
mcm | 1:f0711d344f71 | 83 | } AMBIMATE_MS4_other_registers_t; |
mcm | 1:f0711d344f71 | 84 | |
mcm | 1:f0711d344f71 | 85 | |
mcm | 1:f0711d344f71 | 86 | typedef enum { |
mcm | 1:f0711d344f71 | 87 | AMBIMATE_MS4_SCAN_START_BYTE = 0xC0, /*!< Scan start byte */ |
mcm | 1:f0711d344f71 | 88 | AMBIMATE_MS4_AUDIO_EVENT_LEVEL = 0xC1, /*!< Audio level event */ |
mcm | 1:f0711d344f71 | 89 | AMBIMATE_MS4_PROCESSOR_RESET = 0xF0 /*!< Initiates a processor reset */ |
mcm | 1:f0711d344f71 | 90 | } AMBIMATE_MS4_writable_registers_t; |
mcm | 1:f0711d344f71 | 91 | |
mcm | 1:f0711d344f71 | 92 | |
mcm | 1:f0711d344f71 | 93 | |
mcm | 1:f0711d344f71 | 94 | |
mcm | 1:f0711d344f71 | 95 | /** |
mcm | 1:f0711d344f71 | 96 | * @brief OPTIONAL SENSORS BYTE REGISTER. |
mcm | 1:f0711d344f71 | 97 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 98 | */ |
mcm | 1:f0711d344f71 | 99 | /* CO2 <0> |
mcm | 1:f0711d344f71 | 100 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 101 | */ |
mcm | 1:f0711d344f71 | 102 | typedef enum { |
mcm | 1:f0711d344f71 | 103 | OPTIONAL_SENSORS_BYTE_CO2_MASK = ( 1U << 0U ), /*!< CO2 mask */ |
mcm | 1:f0711d344f71 | 104 | OPTIONAL_SENSORS_BYTE_CO2_SENSOR_NOT_INSTALLED = ( 0U << 0U ), /*!< CO2 sensor is not installed */ |
mcm | 1:f0711d344f71 | 105 | OPTIONAL_SENSORS_BYTE_CO2_SENSOR_INSTALLED = ( 1U << 0U ) /*!< CO2 sensor is installed */ |
mcm | 1:f0711d344f71 | 106 | } AMBIMATE_MS4_optional_sensors_byte_co2_t; |
mcm | 1:f0711d344f71 | 107 | |
mcm | 1:f0711d344f71 | 108 | |
mcm | 1:f0711d344f71 | 109 | /* MIC <2> |
mcm | 1:f0711d344f71 | 110 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 111 | */ |
mcm | 1:f0711d344f71 | 112 | typedef enum { |
mcm | 1:f0711d344f71 | 113 | OPTIONAL_SENSORS_BYTE_MIC_MASK = ( 1U << 2U ), /*!< MIC mask */ |
mcm | 1:f0711d344f71 | 114 | OPTIONAL_SENSORS_BYTE_MIC_SENSOR_NOT_INSTALLED = ( 0U << 2U ), /*!< MIC sensor is not installed */ |
mcm | 1:f0711d344f71 | 115 | OPTIONAL_SENSORS_BYTE_MIC_SENSOR_INSTALLED = ( 1U << 2U ) /*!< MIC sensor is installed */ |
mcm | 1:f0711d344f71 | 116 | } AMBIMATE_MS4_optional_sensors_byte_mic_t; |
mcm | 1:f0711d344f71 | 117 | |
mcm | 0:8d9328d3ff35 | 118 | |
mcm | 0:8d9328d3ff35 | 119 | |
mcm | 0:8d9328d3ff35 | 120 | /** |
mcm | 1:f0711d344f71 | 121 | * @brief WRITEABLE REGISTERS. |
mcm | 1:f0711d344f71 | 122 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 123 | */ |
mcm | 1:f0711d344f71 | 124 | /* GAS <6> |
mcm | 1:f0711d344f71 | 125 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 126 | */ |
mcm | 1:f0711d344f71 | 127 | typedef enum { |
mcm | 1:f0711d344f71 | 128 | WRITEABLE_REGISTERS_GAS_MASK = ( 1U << 6U ), /*!< GAS mask */ |
mcm | 1:f0711d344f71 | 129 | WRITEABLE_REGISTERS_GAS_MEASUREMENT_COMPLETED = ( 0U << 6U ), /*!< Measurement is completed */ |
mcm | 1:f0711d344f71 | 130 | WRITEABLE_REGISTERS_GAS_INITIATE_NEW_MEASUREMENT = ( 1U << 6U ) /*!< Initiates a measurement of the VOC sensor if installed */ |
mcm | 1:f0711d344f71 | 131 | } AMBIMATE_MS4_writeable_reg_gas_t; |
mcm | 1:f0711d344f71 | 132 | |
mcm | 1:f0711d344f71 | 133 | |
mcm | 1:f0711d344f71 | 134 | /* BATT <5> |
mcm | 1:f0711d344f71 | 135 | * NOTE: N/A. |
mcm | 0:8d9328d3ff35 | 136 | */ |
mcm | 1:f0711d344f71 | 137 | typedef enum { |
mcm | 1:f0711d344f71 | 138 | WRITEABLE_REGISTERS_BATT_MASK = ( 1U << 5U ), /*!< BATT mask */ |
mcm | 1:f0711d344f71 | 139 | WRITEABLE_REGISTERS_BATT_MEASUREMENT_COMPLETED = ( 0U << 5U ), /*!< Measurement is completed */ |
mcm | 1:f0711d344f71 | 140 | WRITEABLE_REGISTERS_BATT_INITIATE_NEW_MEASUREMENT = ( 1U << 5U ) /*!< Initiates a measurement of the BATTERY voltage */ |
mcm | 1:f0711d344f71 | 141 | } AMBIMATE_MS4_writeable_reg_batt_t; |
mcm | 1:f0711d344f71 | 142 | |
mcm | 1:f0711d344f71 | 143 | |
mcm | 1:f0711d344f71 | 144 | /* AUD <4> |
mcm | 1:f0711d344f71 | 145 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 146 | */ |
mcm | 1:f0711d344f71 | 147 | typedef enum { |
mcm | 1:f0711d344f71 | 148 | WRITEABLE_REGISTERS_AUD_MASK = ( 1U << 4U ), /*!< AUD mask */ |
mcm | 1:f0711d344f71 | 149 | WRITEABLE_REGISTERS_AUD_MEASUREMENT_COMPLETED = ( 0U << 4U ), /*!< Measurement is completed */ |
mcm | 1:f0711d344f71 | 150 | WRITEABLE_REGISTERS_AUD_INITIATE_NEW_MEASUREMENT = ( 1U << 4U ) /*!< Initiates a measurement of the AUDIO sensor if installed */ |
mcm | 1:f0711d344f71 | 151 | } AMBIMATE_MS4_writeable_reg_aud_t; |
mcm | 1:f0711d344f71 | 152 | |
mcm | 1:f0711d344f71 | 153 | |
mcm | 1:f0711d344f71 | 154 | /* LIGHT <3> |
mcm | 1:f0711d344f71 | 155 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 156 | */ |
mcm | 1:f0711d344f71 | 157 | typedef enum { |
mcm | 1:f0711d344f71 | 158 | WRITEABLE_REGISTERS_LIGHT_MASK = ( 1U << 3U ), /*!< LIGHT mask */ |
mcm | 1:f0711d344f71 | 159 | WRITEABLE_REGISTERS_LIGHT_MEASUREMENT_COMPLETED = ( 0U << 3U ), /*!< Measurement is completed */ |
mcm | 1:f0711d344f71 | 160 | WRITEABLE_REGISTERS_LIGHT_INITIATE_NEW_MEASUREMENT = ( 1U << 3U ) /*!< Initiates a measurement of the LIGHT sensor */ |
mcm | 1:f0711d344f71 | 161 | } AMBIMATE_MS4_writeable_reg_light_t; |
mcm | 0:8d9328d3ff35 | 162 | |
mcm | 0:8d9328d3ff35 | 163 | |
mcm | 1:f0711d344f71 | 164 | /* HUM <2> |
mcm | 1:f0711d344f71 | 165 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 166 | */ |
mcm | 1:f0711d344f71 | 167 | typedef enum { |
mcm | 1:f0711d344f71 | 168 | WRITEABLE_REGISTERS_HUM_MASK = ( 1U << 2U ), /*!< HUM mask */ |
mcm | 1:f0711d344f71 | 169 | WRITEABLE_REGISTERS_HUM_MEASUREMENT_COMPLETED = ( 0U << 2U ), /*!< Measurement is completed */ |
mcm | 1:f0711d344f71 | 170 | WRITEABLE_REGISTERS_HUM_INITIATE_NEW_MEASUREMENT = ( 1U << 2U ) /*!< Initiates a measurement of the HUMIDITY sensor */ |
mcm | 1:f0711d344f71 | 171 | } AMBIMATE_MS4_writeable_reg_hum_t; |
mcm | 1:f0711d344f71 | 172 | |
mcm | 1:f0711d344f71 | 173 | |
mcm | 1:f0711d344f71 | 174 | /* TEMP <1> |
mcm | 1:f0711d344f71 | 175 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 176 | */ |
mcm | 1:f0711d344f71 | 177 | typedef enum { |
mcm | 1:f0711d344f71 | 178 | WRITEABLE_REGISTERS_TEMP_MASK = ( 1U << 1U ), /*!< TEMP mask */ |
mcm | 1:f0711d344f71 | 179 | WRITEABLE_REGISTERS_TEMP_MEASUREMENT_COMPLETED = ( 0U << 1U ), /*!< Measurement is completed */ |
mcm | 1:f0711d344f71 | 180 | WRITEABLE_REGISTERS_TEMP_INITIATE_NEW_MEASUREMENT = ( 1U << 1U ) /*!< Initiates a measurement of the TEMPERATURE sensor */ |
mcm | 1:f0711d344f71 | 181 | } AMBIMATE_MS4_writeable_reg_temp_t; |
mcm | 1:f0711d344f71 | 182 | |
mcm | 1:f0711d344f71 | 183 | |
mcm | 1:f0711d344f71 | 184 | /* STATUS <0> |
mcm | 1:f0711d344f71 | 185 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 186 | */ |
mcm | 0:8d9328d3ff35 | 187 | typedef enum { |
mcm | 1:f0711d344f71 | 188 | WRITEABLE_REGISTERS_STATUS_MASK = ( 1U << 0U ), /*!< STATUS mask */ |
mcm | 1:f0711d344f71 | 189 | WRITEABLE_REGISTERS_STATUS_MEASUREMENT_COMPLETED = ( 0U << 0U ), /*!< Measurement is completed */ |
mcm | 1:f0711d344f71 | 190 | WRITEABLE_REGISTERS_STATUS_INITIATE_NEW_MEASUREMENT = ( 1U << 0U ) /*!< Initiates a measurement of the STATUS */ |
mcm | 1:f0711d344f71 | 191 | } AMBIMATE_MS4_writeable_reg_status_t; |
mcm | 1:f0711d344f71 | 192 | |
mcm | 1:f0711d344f71 | 193 | |
mcm | 1:f0711d344f71 | 194 | |
mcm | 1:f0711d344f71 | 195 | |
mcm | 0:8d9328d3ff35 | 196 | /** |
mcm | 1:f0711d344f71 | 197 | * @brief RESET REGISTER. |
mcm | 1:f0711d344f71 | 198 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 199 | */ |
mcm | 1:f0711d344f71 | 200 | /* PROCESSOR_RESET <7:0> |
mcm | 1:f0711d344f71 | 201 | * NOTE: N/A. |
mcm | 1:f0711d344f71 | 202 | */ |
mcm | 1:f0711d344f71 | 203 | typedef enum { |
mcm | 1:f0711d344f71 | 204 | RESET_REGISTER_PROCESSOR_RESET = 0xA5 /*!< It initiates an AmbiMate processor reset */ |
mcm | 1:f0711d344f71 | 205 | } AMBIMATE_MS4_reset_t; |
mcm | 1:f0711d344f71 | 206 | |
mcm | 1:f0711d344f71 | 207 | |
mcm | 1:f0711d344f71 | 208 | |
mcm | 1:f0711d344f71 | 209 | |
mcm | 1:f0711d344f71 | 210 | /** |
mcm | 1:f0711d344f71 | 211 | * @brief OPTIONAL SENSORS BYTE. |
mcm | 1:f0711d344f71 | 212 | * NOTE: N/A. |
mcm | 0:8d9328d3ff35 | 213 | */ |
mcm | 0:8d9328d3ff35 | 214 | typedef enum { |
mcm | 1:f0711d344f71 | 215 | OPTIONAL_SENSORS_NONE = 0, /*!< No optional sensors on board */ |
mcm | 1:f0711d344f71 | 216 | OPTIONAL_SENSORS_CO2 = 1, /*!< Optional sensors: C02 only */ |
mcm | 1:f0711d344f71 | 217 | OPTIONAL_SENSORS_MIC = 3, /*!< Optional sensors: MIC only */ |
mcm | 1:f0711d344f71 | 218 | OPTIONAL_SENSORS_CO2_AND_MIC = 4 /*!< Optional sensors: CO2 and MIC */ |
mcm | 1:f0711d344f71 | 219 | } AMBIMATE_MS4_op_sensors_byte_t; |
mcm | 0:8d9328d3ff35 | 220 | |
mcm | 0:8d9328d3ff35 | 221 | |
mcm | 0:8d9328d3ff35 | 222 | |
mcm | 0:8d9328d3ff35 | 223 | |
mcm | 0:8d9328d3ff35 | 224 | |
mcm | 1:f0711d344f71 | 225 | |
mcm | 1:f0711d344f71 | 226 | #ifndef AMBIMATE_MS4_VECTOR_STRUCT_H |
mcm | 1:f0711d344f71 | 227 | #define AMBIMATE_MS4_VECTOR_STRUCT_H |
mcm | 1:f0711d344f71 | 228 | /* OTHER REGISTERS */ |
mcm | 0:8d9328d3ff35 | 229 | typedef struct { |
mcm | 1:f0711d344f71 | 230 | uint8_t firmware_version; /*< Firmware version */ |
mcm | 1:f0711d344f71 | 231 | uint8_t firmware_sub_version; /*< Firmware sub-version */ |
mcm | 1:f0711d344f71 | 232 | AMBIMATE_MS4_op_sensors_byte_t optional_sensors; /*< Optional sensors */ |
mcm | 1:f0711d344f71 | 233 | } AMBIMATE_MS4_other_reg_param_t; |
mcm | 1:f0711d344f71 | 234 | |
mcm | 0:8d9328d3ff35 | 235 | |
mcm | 1:f0711d344f71 | 236 | /* RAW DATA VALUES: 16-bit */ |
mcm | 1:f0711d344f71 | 237 | typedef struct { |
mcm | 1:f0711d344f71 | 238 | uint16_t raw_temperature; /*< Raw temperature value */ |
mcm | 1:f0711d344f71 | 239 | uint16_t raw_humidity; /*< Raw humidity value */ |
mcm | 1:f0711d344f71 | 240 | uint16_t raw_light; /*< Raw light value */ |
mcm | 1:f0711d344f71 | 241 | uint16_t raw_audio; /*< Raw audio value */ |
mcm | 1:f0711d344f71 | 242 | uint16_t raw_battery_volts; /*< Raw battery volts value */ |
mcm | 1:f0711d344f71 | 243 | uint16_t raw_eco2; /*< Raw eCO2 value */ |
mcm | 1:f0711d344f71 | 244 | uint16_t raw_voc; /*< Raw VOC value */ |
mcm | 1:f0711d344f71 | 245 | } AMBIMATE_MS4_raw_data_values_t; |
mcm | 1:f0711d344f71 | 246 | |
mcm | 1:f0711d344f71 | 247 | |
mcm | 1:f0711d344f71 | 248 | /* RAW DATA VALUES: 8-bit */ |
mcm | 0:8d9328d3ff35 | 249 | typedef struct { |
mcm | 1:f0711d344f71 | 250 | uint16_t raw_8bit_temperature; /*< Raw temperature value */ |
mcm | 1:f0711d344f71 | 251 | uint16_t raw_8bit_humidity; /*< Raw humidity value */ |
mcm | 1:f0711d344f71 | 252 | uint16_t raw_8bit_light; /*< Raw light value */ |
mcm | 1:f0711d344f71 | 253 | uint16_t raw_8bit_audio; /*< Raw audio value */ |
mcm | 1:f0711d344f71 | 254 | uint16_t raw_8bit_battery_volts; /*< Raw battery volts value */ |
mcm | 1:f0711d344f71 | 255 | uint16_t raw_8bit_eco2; /*< Raw eCO2 value */ |
mcm | 1:f0711d344f71 | 256 | uint16_t raw_8bit_voc; /*< Raw VOC value */ |
mcm | 1:f0711d344f71 | 257 | } AMBIMATE_MS4_raw_8bit_data_values_t; |
mcm | 1:f0711d344f71 | 258 | |
mcm | 1:f0711d344f71 | 259 | |
mcm | 1:f0711d344f71 | 260 | /* DATA VALUES: 16-bit resolution */ |
mcm | 0:8d9328d3ff35 | 261 | typedef struct { |
mcm | 1:f0711d344f71 | 262 | double temperature; /*< Temperature value */ |
mcm | 1:f0711d344f71 | 263 | double humidity; /*< Humidity value */ |
mcm | 1:f0711d344f71 | 264 | uint16_t light; /*< Light value */ |
mcm | 1:f0711d344f71 | 265 | uint16_t audio; /*< Audio value */ |
mcm | 1:f0711d344f71 | 266 | double battery_volts; /*< Battery volts value */ |
mcm | 1:f0711d344f71 | 267 | uint16_t eco2; /*< eCO2 value */ |
mcm | 1:f0711d344f71 | 268 | uint16_t voc; /*< VOC value */ |
mcm | 1:f0711d344f71 | 269 | } AMBIMATE_MS4_data_values_t; |
mcm | 1:f0711d344f71 | 270 | |
mcm | 1:f0711d344f71 | 271 | |
mcm | 1:f0711d344f71 | 272 | |
mcm | 0:8d9328d3ff35 | 273 | |
mcm | 1:f0711d344f71 | 274 | /* USER: User's variables */ |
mcm | 0:8d9328d3ff35 | 275 | typedef struct { |
mcm | 1:f0711d344f71 | 276 | uint8_t status; /*< Status register */ |
mcm | 1:f0711d344f71 | 277 | |
mcm | 1:f0711d344f71 | 278 | uint8_t start_scan_byte; /*< StartScanByte register */ |
mcm | 1:f0711d344f71 | 279 | |
mcm | 1:f0711d344f71 | 280 | AMBIMATE_MS4_raw_data_values_t raw_data; /*< Raw data values */ |
mcm | 1:f0711d344f71 | 281 | AMBIMATE_MS4_raw_8bit_data_values_t raw_data8bit; /*< 8-bit Raw data values */ |
mcm | 1:f0711d344f71 | 282 | |
mcm | 1:f0711d344f71 | 283 | AMBIMATE_MS4_data_values_t data; /*< Data values */ |
mcm | 1:f0711d344f71 | 284 | |
mcm | 1:f0711d344f71 | 285 | AMBIMATE_MS4_other_reg_param_t info; /*< Other registers: Info regarding the device */ |
mcm | 1:f0711d344f71 | 286 | } AMBIMATE_MS4_data_t; |
mcm | 0:8d9328d3ff35 | 287 | #endif |
mcm | 0:8d9328d3ff35 | 288 | |
mcm | 0:8d9328d3ff35 | 289 | |
mcm | 0:8d9328d3ff35 | 290 | /** |
mcm | 0:8d9328d3ff35 | 291 | * @brief INTERNAL CONSTANTS |
mcm | 0:8d9328d3ff35 | 292 | */ |
mcm | 0:8d9328d3ff35 | 293 | typedef enum { |
mcm | 1:f0711d344f71 | 294 | AMBIMATE_MS4_SUCCESS = 0, |
mcm | 1:f0711d344f71 | 295 | AMBIMATE_MS4_FAILURE = 1, |
mcm | 1:f0711d344f71 | 296 | AMBIMATE_MS4_DATA_CORRUPTED = 2, |
mcm | 1:f0711d344f71 | 297 | I2C_SUCCESS = 0 /*!< I2C communication was fine */ |
mcm | 0:8d9328d3ff35 | 298 | } AMBIMATE_MS4_status_t; |
mcm | 0:8d9328d3ff35 | 299 | |
mcm | 0:8d9328d3ff35 | 300 | |
mcm | 0:8d9328d3ff35 | 301 | |
mcm | 0:8d9328d3ff35 | 302 | |
mcm | 0:8d9328d3ff35 | 303 | /** Create an AMBIMATE_MS4 object connected to the specified I2C pins. |
mcm | 0:8d9328d3ff35 | 304 | * |
mcm | 0:8d9328d3ff35 | 305 | * @param sda I2C data pin |
mcm | 0:8d9328d3ff35 | 306 | * @param scl I2C clock pin |
mcm | 0:8d9328d3ff35 | 307 | * @param addr I2C slave address |
mcm | 0:8d9328d3ff35 | 308 | * @param freq I2C frequency in Hz. |
mcm | 0:8d9328d3ff35 | 309 | */ |
mcm | 0:8d9328d3ff35 | 310 | AMBIMATE_MS4 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); |
mcm | 0:8d9328d3ff35 | 311 | |
mcm | 0:8d9328d3ff35 | 312 | /** Delete AMBIMATE_MS4 object. |
mcm | 0:8d9328d3ff35 | 313 | */ |
mcm | 0:8d9328d3ff35 | 314 | ~AMBIMATE_MS4(); |
mcm | 0:8d9328d3ff35 | 315 | |
mcm | 1:f0711d344f71 | 316 | /** It initiates a new measurements of the chosen sensors. |
mcm | 1:f0711d344f71 | 317 | */ |
mcm | 1:f0711d344f71 | 318 | 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 ); |
mcm | 1:f0711d344f71 | 319 | |
mcm | 1:f0711d344f71 | 320 | /** It gets the scan byte values. |
mcm | 1:f0711d344f71 | 321 | */ |
mcm | 1:f0711d344f71 | 322 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetScanStartByte ( uint8_t* scan_byte ); |
mcm | 1:f0711d344f71 | 323 | |
mcm | 1:f0711d344f71 | 324 | /** It gets the firmware version. |
mcm | 1:f0711d344f71 | 325 | */ |
mcm | 1:f0711d344f71 | 326 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetFirmwareVersion ( uint8_t* fw_version ); |
mcm | 1:f0711d344f71 | 327 | |
mcm | 1:f0711d344f71 | 328 | /** It gets the firmware sub-version. |
mcm | 1:f0711d344f71 | 329 | */ |
mcm | 1:f0711d344f71 | 330 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetFirmwareSubVersion ( uint8_t* fw_subversion ); |
mcm | 1:f0711d344f71 | 331 | |
mcm | 1:f0711d344f71 | 332 | /** It gets the optional sensors on board. |
mcm | 1:f0711d344f71 | 333 | */ |
mcm | 1:f0711d344f71 | 334 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetOptionalSensorsByte ( AMBIMATE_MS4_op_sensors_byte_t* op_sensors ); |
mcm | 1:f0711d344f71 | 335 | |
mcm | 1:f0711d344f71 | 336 | /** It performs a processor reset. |
mcm | 1:f0711d344f71 | 337 | */ |
mcm | 1:f0711d344f71 | 338 | AMBIMATE_MS4_status_t AMBIMATE_MS4_ProcessorReset ( void ); |
mcm | 0:8d9328d3ff35 | 339 | |
mcm | 1:f0711d344f71 | 340 | /** It gets the Status value. |
mcm | 1:f0711d344f71 | 341 | */ |
mcm | 1:f0711d344f71 | 342 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetStatus ( uint8_t* status ); |
mcm | 1:f0711d344f71 | 343 | |
mcm | 1:f0711d344f71 | 344 | /** It gets the raw value for temperature. |
mcm | 1:f0711d344f71 | 345 | */ |
mcm | 1:f0711d344f71 | 346 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRawTemperature ( uint16_t* raw_temp ); |
mcm | 1:f0711d344f71 | 347 | |
mcm | 1:f0711d344f71 | 348 | /** It gets the raw value for humidity. |
mcm | 1:f0711d344f71 | 349 | */ |
mcm | 1:f0711d344f71 | 350 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRawHumidity ( uint16_t* raw_hum ); |
mcm | 0:8d9328d3ff35 | 351 | |
mcm | 1:f0711d344f71 | 352 | /** It gets the raw value for light. |
mcm | 1:f0711d344f71 | 353 | */ |
mcm | 1:f0711d344f71 | 354 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRawLight ( uint16_t* raw_light ); |
mcm | 1:f0711d344f71 | 355 | |
mcm | 1:f0711d344f71 | 356 | /** It gets the raw value for audio. |
mcm | 1:f0711d344f71 | 357 | */ |
mcm | 1:f0711d344f71 | 358 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRawAudio ( uint16_t* raw_audio ); |
mcm | 1:f0711d344f71 | 359 | |
mcm | 1:f0711d344f71 | 360 | /** It gets the raw value for battery volts. |
mcm | 1:f0711d344f71 | 361 | */ |
mcm | 1:f0711d344f71 | 362 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRawBatteryVolts ( uint16_t* raw_batt ); |
mcm | 0:8d9328d3ff35 | 363 | |
mcm | 1:f0711d344f71 | 364 | /** It gets the raw value for eCO2. |
mcm | 1:f0711d344f71 | 365 | */ |
mcm | 1:f0711d344f71 | 366 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRawECO2 ( uint16_t* raw_eco2 ); |
mcm | 1:f0711d344f71 | 367 | |
mcm | 1:f0711d344f71 | 368 | /** It gets the raw value for VOC. |
mcm | 1:f0711d344f71 | 369 | */ |
mcm | 1:f0711d344f71 | 370 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRawVOC ( uint16_t* raw_voc ); |
mcm | 1:f0711d344f71 | 371 | |
mcm | 1:f0711d344f71 | 372 | /** It gets the raw value for all the sensors. |
mcm | 1:f0711d344f71 | 373 | */ |
mcm | 1:f0711d344f71 | 374 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRawAllSensors ( uint8_t* status, AMBIMATE_MS4_raw_data_values_t* raw_all ); |
mcm | 0:8d9328d3ff35 | 375 | |
mcm | 1:f0711d344f71 | 376 | /** It gets the 8bit raw value for temperature. |
mcm | 1:f0711d344f71 | 377 | */ |
mcm | 1:f0711d344f71 | 378 | AMBIMATE_MS4_status_t AMBIMATE_MS4_Get8bitRawTemperature ( uint8_t* raw_8bit_temp ); |
mcm | 1:f0711d344f71 | 379 | |
mcm | 1:f0711d344f71 | 380 | /** It gets the 8bit raw value for humidity. |
mcm | 1:f0711d344f71 | 381 | */ |
mcm | 1:f0711d344f71 | 382 | AMBIMATE_MS4_status_t AMBIMATE_MS4_Get8bitRawHumidity ( uint8_t* raw_8bit_hum ); |
mcm | 1:f0711d344f71 | 383 | |
mcm | 1:f0711d344f71 | 384 | /** It gets the 8bit raw value for light. |
mcm | 1:f0711d344f71 | 385 | */ |
mcm | 1:f0711d344f71 | 386 | AMBIMATE_MS4_status_t AMBIMATE_MS4_Get8bitRawLight ( uint8_t* raw_8bit_light ); |
mcm | 0:8d9328d3ff35 | 387 | |
mcm | 1:f0711d344f71 | 388 | /** It gets the 8bit raw value for audio. |
mcm | 1:f0711d344f71 | 389 | */ |
mcm | 1:f0711d344f71 | 390 | AMBIMATE_MS4_status_t AMBIMATE_MS4_Get8bitRawAudio ( uint8_t* raw_8bit_audio ); |
mcm | 1:f0711d344f71 | 391 | |
mcm | 1:f0711d344f71 | 392 | /** It gets the 8bit raw value for battery volts. |
mcm | 1:f0711d344f71 | 393 | */ |
mcm | 1:f0711d344f71 | 394 | AMBIMATE_MS4_status_t AMBIMATE_MS4_Get8bitRawBatteryVolts ( uint8_t* raw_8bit_batt ); |
mcm | 1:f0711d344f71 | 395 | |
mcm | 1:f0711d344f71 | 396 | /** It gets the 8bit raw value for eCO2. |
mcm | 1:f0711d344f71 | 397 | */ |
mcm | 1:f0711d344f71 | 398 | AMBIMATE_MS4_status_t AMBIMATE_MS4_Get8bitRawECO2 ( uint8_t* raw_8bit_eco2 ); |
mcm | 0:8d9328d3ff35 | 399 | |
mcm | 1:f0711d344f71 | 400 | /** It gets the 8bit raw value for VOC. |
mcm | 1:f0711d344f71 | 401 | */ |
mcm | 1:f0711d344f71 | 402 | AMBIMATE_MS4_status_t AMBIMATE_MS4_Get8bitRawVOC ( uint8_t* raw_8bit_voc ); |
mcm | 1:f0711d344f71 | 403 | |
mcm | 1:f0711d344f71 | 404 | /** It gets the 8bit raw value for all the sensors. |
mcm | 1:f0711d344f71 | 405 | */ |
mcm | 1:f0711d344f71 | 406 | AMBIMATE_MS4_status_t AMBIMATE_MS4_GetRaw8bitAllSensors ( uint8_t* status, AMBIMATE_MS4_raw_8bit_data_values_t* raw_8bit_all ); |
mcm | 1:f0711d344f71 | 407 | |
mcm | 1:f0711d344f71 | 408 | /** It process all the data to human readable values for all the sensors. |
mcm | 1:f0711d344f71 | 409 | */ |
mcm | 1:f0711d344f71 | 410 | AMBIMATE_MS4_data_values_t AMBIMATE_MS4_ProcessAllData ( AMBIMATE_MS4_raw_data_values_t raw_all ); |
mcm | 0:8d9328d3ff35 | 411 | |
mcm | 0:8d9328d3ff35 | 412 | private: |
mcm | 0:8d9328d3ff35 | 413 | I2C _i2c; |
mcm | 0:8d9328d3ff35 | 414 | uint32_t _AMBIMATE_MS4_Addr; |
mcm | 0:8d9328d3ff35 | 415 | }; |
mcm | 0:8d9328d3ff35 | 416 | |
mcm | 2:6c5fac3dfd44 | 417 | #endif |