1094332d3Sopenharmony_ci/** 2094332d3Sopenharmony_ci* Copyright (c) 2024 Bosch Sensortec GmbH. All rights reserved. 3094332d3Sopenharmony_ci* 4094332d3Sopenharmony_ci* gas_bmr688_driver.h as part of the * /chipsets subdirectory 5094332d3Sopenharmony_ci* is dual licensed: you can use it either under the terms of 6094332d3Sopenharmony_ci* the GPL, or the BSD license, at your option. 7094332d3Sopenharmony_ci* See the LICENSE file in the root of this repository for complete details. 8094332d3Sopenharmony_ci*/ 9094332d3Sopenharmony_ci 10094332d3Sopenharmony_ci#ifndef BME688_H 11094332d3Sopenharmony_ci#define BME688_H 12094332d3Sopenharmony_ci 13094332d3Sopenharmony_ci#include "sensor_gas_driver.h" 14094332d3Sopenharmony_ci#include "sensor_config_parser.h" 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#define BME688_AMB_TEMP (int8_t)25 /*ambient temperature*/ 17094332d3Sopenharmony_ci#define BME688_HEATR_TEMP 300 /*heating temperature*/ 18094332d3Sopenharmony_ci#define BME688_HEATR_DUR 100 /*heating duration*/ 19094332d3Sopenharmony_ci 20094332d3Sopenharmony_ci#if !defined(BME_UINT32_C) 21094332d3Sopenharmony_ci#define BME_UINT32_C(val) val ## U 22094332d3Sopenharmony_ci#endif 23094332d3Sopenharmony_ci 24094332d3Sopenharmony_ci#if !defined(BME_INT32_C) 25094332d3Sopenharmony_ci#define BME_INT32_C(val) val ## L 26094332d3Sopenharmony_ci#endif 27094332d3Sopenharmony_ci 28094332d3Sopenharmony_ci#define BME68X_CHIP_ID 0x61 /* BME68X unique chip identifier */ 29094332d3Sopenharmony_ci 30094332d3Sopenharmony_ci#define BME68X_REG_CTRL_MEAS 0x74 /* CTRL_MEAS address */ 31094332d3Sopenharmony_ci#define BME68X_REG_COEFF1 0x8a /* Register for 1st group of coefficients */ 32094332d3Sopenharmony_ci#define BME68X_REG_COEFF2 0xe1 /* Register for 2nd group of coefficients */ 33094332d3Sopenharmony_ci#define BME68X_REG_COEFF3 0x00 /* Register for 3rd group of coefficients */ 34094332d3Sopenharmony_ci#define BME68X_REG_CHIP_ID 0xd0 /* Chip ID address */ 35094332d3Sopenharmony_ci#define BME68X_REG_SOFT_RESET 0xe0 /* Soft reset address */ 36094332d3Sopenharmony_ci#define BME68X_REG_VARIANT_ID 0xF0 /* Variant ID Register */ 37094332d3Sopenharmony_ci#define BME68X_REG_FIELD0 0x1d /* 0th Field address*/ 38094332d3Sopenharmony_ci#define BME68X_REG_RES_HEAT0 0x5a /* 0th Res heat address */ 39094332d3Sopenharmony_ci#define BME68X_REG_IDAC_HEAT0 0x50 /* 0th Current DAC address*/ 40094332d3Sopenharmony_ci#define BME68X_REG_GAS_WAIT0 0x64 /* 0th Gas wait address */ 41094332d3Sopenharmony_ci#define BME68X_REG_CTRL_GAS_0 0x70 /* CTRL_GAS_0 address */ 42094332d3Sopenharmony_ci#define BME68X_REG_CTRL_GAS_1 0x71 /* CTRL_GAS_1 address */ 43094332d3Sopenharmony_ci#define BME68X_SOFT_RESET_CMD 0xb6 /* Soft reset command */ 44094332d3Sopenharmony_ci 45094332d3Sopenharmony_ci#define BME68X_LEN_COEFF_ALL 42 /* Length for all coefficients */ 46094332d3Sopenharmony_ci#define BME68X_LEN_COEFF1 23 /* Length for 1st group of coefficients */ 47094332d3Sopenharmony_ci#define BME68X_LEN_COEFF2 14 /* Length for 2nd group of coefficients */ 48094332d3Sopenharmony_ci#define BME68X_LEN_COEFF3 5 /* Length for 3rd group of coefficients */ 49094332d3Sopenharmony_ci#define BME68X_LEN_CONFIG 5 /* Length of the configuration register */ 50094332d3Sopenharmony_ci#define BME68X_LEN_FIELD 17 /* Length of the field */ 51094332d3Sopenharmony_ci#define BME68X_LEN_FIELD_OFFSET 17 /* Length between two fields */ 52094332d3Sopenharmony_ci 53094332d3Sopenharmony_ci#define BME68X_MODE_MSK 0x03 /* Mask for operation mode */ 54094332d3Sopenharmony_ci 55094332d3Sopenharmony_ci#define BME68X_GASM_VALID_MSK 0x20 /* Mask for gas measurement valid */ 56094332d3Sopenharmony_ci#define BME68X_GAS_INDEX_MSK 0x0f /* Mask for gas index */ 57094332d3Sopenharmony_ci#define BME68X_GAS_RANGE_MSK 0x0f /* Mask for gas range */ 58094332d3Sopenharmony_ci#define BME68X_GASM_VALID_MSK 0x20 /* Mask for gas measurement valid */ 59094332d3Sopenharmony_ci#define BME68X_HEAT_STAB_MSK 0x10 /* Mask for heater stability */ 60094332d3Sopenharmony_ci#define BME68X_NEW_DATA_MSK 0x80 /* Mask for new data */ 61094332d3Sopenharmony_ci#define BME68X_BIT_H1_DATA_MSK 0x0f /* Mask for the H1 calibration coefficient */ 62094332d3Sopenharmony_ci#define BME68X_RHRANGE_MSK 0x30 /* Mask for res heat range */ 63094332d3Sopenharmony_ci#define BME68X_RSERROR_MSK 0xf0 /* Mask for range switching error */ 64094332d3Sopenharmony_ci 65094332d3Sopenharmony_ci#define BME68X_FILTER_MSK 0X1c /* Mask for IIR filter */ 66094332d3Sopenharmony_ci#define BME68X_OST_MSK 0Xe0 /* Mask for temperature oversampling */ 67094332d3Sopenharmony_ci#define BME68X_OSP_MSK 0X1c /* Mask for pressure oversampling */ 68094332d3Sopenharmony_ci#define BME68X_OSH_MSK 0X07 /* Mask for humidity oversampling */ 69094332d3Sopenharmony_ci#define BME68X_ODR20_MSK 0xe0 /* Mask for ODR[2:0] */ 70094332d3Sopenharmony_ci#define BME68X_ODR3_MSK 0x80 /* Mask for ODR[3] */ 71094332d3Sopenharmony_ci#define BME68X_HCTRL_MSK 0x08 /* Mask for heater control */ 72094332d3Sopenharmony_ci#define BME68X_NBCONV_MSK 0X0f /* Mask for number of conversions */ 73094332d3Sopenharmony_ci#define BME68X_RUN_GAS_MSK 0x30 /* Mask for run gas */ 74094332d3Sopenharmony_ci#define BME688_NEW_DATA_READY 0x80 /* Mask for new data */ 75094332d3Sopenharmony_ci 76094332d3Sopenharmony_ci#define BME68X_SLEEP_MODE 0 /* Sleep operation mode */ 77094332d3Sopenharmony_ci#define BME68X_FORCED_MODE 1 /* Forced operation mode */ 78094332d3Sopenharmony_ci#define BME68X_PARALLEL_MODE 2 /* Parallel operation mode */ 79094332d3Sopenharmony_ci 80094332d3Sopenharmony_ci#define BME68X_VARIANT_GAS_HIGH 0x01 /* High Gas variant */ 81094332d3Sopenharmony_ci 82094332d3Sopenharmony_ci#define BME68X_IDX_T1_LSB 31 /* Coefficient T1 LSB position */ 83094332d3Sopenharmony_ci#define BME68X_IDX_T1_MSB 32 /* Coefficient T1 MSB position */ 84094332d3Sopenharmony_ci#define BME68X_IDX_T2_LSB 0 /* Coefficient T2 LSB position */ 85094332d3Sopenharmony_ci#define BME68X_IDX_T2_MSB 1 /* Coefficient T2 MSB position */ 86094332d3Sopenharmony_ci#define BME68X_IDX_T3 2 /* Coefficient T3 position */ 87094332d3Sopenharmony_ci#define BME68X_IDX_P1_LSB 4 /* Coefficient P1 LSB position */ 88094332d3Sopenharmony_ci#define BME68X_IDX_P1_MSB 5 /* Coefficient P1 MSB position */ 89094332d3Sopenharmony_ci#define BME68X_IDX_P2_LSB 6 /* Coefficient P2 LSB position */ 90094332d3Sopenharmony_ci#define BME68X_IDX_P2_MSB 7 /* Coefficient P2 MSB position */ 91094332d3Sopenharmony_ci#define BME68X_IDX_P3 8 /* Coefficient P3 position */ 92094332d3Sopenharmony_ci#define BME68X_IDX_P4_LSB 10 /* Coefficient P4 LSB position */ 93094332d3Sopenharmony_ci#define BME68X_IDX_P4_MSB 11 /* Coefficient P4 MSB position */ 94094332d3Sopenharmony_ci#define BME68X_IDX_P5_LSB 12 /* Coefficient P5 LSB position */ 95094332d3Sopenharmony_ci#define BME68X_IDX_P5_MSB 13 /* Coefficient P5 MSB position */ 96094332d3Sopenharmony_ci#define BME68X_IDX_P7 14 /* Coefficient P7 position */ 97094332d3Sopenharmony_ci#define BME68X_IDX_P6 15 /* Coefficient P6 position */ 98094332d3Sopenharmony_ci#define BME68X_IDX_P8_LSB 18 /* Coefficient P8 LSB position */ 99094332d3Sopenharmony_ci#define BME68X_IDX_P8_MSB 19 /* Coefficient P8 MSB position */ 100094332d3Sopenharmony_ci#define BME68X_IDX_P9_LSB 20 /* Coefficient P9 LSB position */ 101094332d3Sopenharmony_ci#define BME68X_IDX_P9_MSB 21 /* Coefficient P9 MSB position */ 102094332d3Sopenharmony_ci#define BME68X_IDX_P10 22 /* Coefficient P10 position */ 103094332d3Sopenharmony_ci#define BME68X_IDX_H2_MSB 23 /* Coefficient H2 MSB position */ 104094332d3Sopenharmony_ci#define BME68X_IDX_H2_LSB 24 /* Coefficient H2 LSB position */ 105094332d3Sopenharmony_ci#define BME68X_IDX_H1_LSB 24 /* Coefficient H1 LSB position */ 106094332d3Sopenharmony_ci#define BME68X_IDX_H1_MSB 25 /* Coefficient H1 MSB position */ 107094332d3Sopenharmony_ci#define BME68X_IDX_H3 26 /* Coefficient H3 position */ 108094332d3Sopenharmony_ci#define BME68X_IDX_H4 27 /* Coefficient H4 position */ 109094332d3Sopenharmony_ci#define BME68X_IDX_H5 28 /* Coefficient H5 position */ 110094332d3Sopenharmony_ci#define BME68X_IDX_H6 29 /* Coefficient H6 position */ 111094332d3Sopenharmony_ci#define BME68X_IDX_H7 30 /* Coefficient H7 position */ 112094332d3Sopenharmony_ci#define BME68X_IDX_T1_LSB 31 /* Coefficient T1 LSB position */ 113094332d3Sopenharmony_ci#define BME68X_IDX_T1_MSB 32 /* Coefficient T1 MSB position */ 114094332d3Sopenharmony_ci#define BME68X_IDX_GH2_LSB 33 /* Coefficient GH2 LSB position */ 115094332d3Sopenharmony_ci#define BME68X_IDX_GH2_MSB 34 /* Coefficient GH2 MSB position */ 116094332d3Sopenharmony_ci#define BME68X_IDX_GH1 35 /* Coefficient GH1 position */ 117094332d3Sopenharmony_ci#define BME68X_IDX_GH3 36 /* Coefficient GH3 position */ 118094332d3Sopenharmony_ci#define BME68X_IDX_RES_HEAT_VAL 37 /* Coefficient res heat value position */ 119094332d3Sopenharmony_ci#define BME68X_IDX_RES_HEAT_RANGE 39 /* Coefficient res heat range position */ 120094332d3Sopenharmony_ci#define BME68X_IDX_RANGE_SW_ERR 41 /* Coefficient range switching error position */ 121094332d3Sopenharmony_ci 122094332d3Sopenharmony_ci#define BME68X_FILTER_SIZE_127 7 /* Filter coefficient of 128 */ 123094332d3Sopenharmony_ci 124094332d3Sopenharmony_ci#define BME68X_OS_1X 1 /* Perform 1 measurement */ 125094332d3Sopenharmony_ci#define BME68X_OS_2X 2 /* Perform 2 measurements */ 126094332d3Sopenharmony_ci#define BME68X_OS_4X 3 /* Perform 4 measurements */ 127094332d3Sopenharmony_ci#define BME68X_OS_8X 4 /* Perform 8 measurements */ 128094332d3Sopenharmony_ci#define BME68X_OS_16X 5 /* Perform 16 measurements */ 129094332d3Sopenharmony_ci#define BME68X_ODR_NONE 8 /* No standby time */ 130094332d3Sopenharmony_ci 131094332d3Sopenharmony_ci#define BME68X_FILTER_OFF 0 /* Switch off the filter */ 132094332d3Sopenharmony_ci 133094332d3Sopenharmony_ci#define BME68X_ENABLE 0x01 /* Enable */ 134094332d3Sopenharmony_ci#define BME68X_DISABLE 0x00 /* Disable */ 135094332d3Sopenharmony_ci#define BME68X_DISABLE_HEATER 0x01 /* Disable heater */ 136094332d3Sopenharmony_ci#define BME68X_ENABLE_GAS_MEAS_L 0x01 /* Enable gas measurement low */ 137094332d3Sopenharmony_ci#define BME68X_ENABLE_GAS_MEAS_H 0x02 /* Enable gas measurement high */ 138094332d3Sopenharmony_ci#define BME68X_DISABLE_GAS_MEAS 0x00 /* Disable gas measurement */ 139094332d3Sopenharmony_ci#define BME68X_ENABLE_HEATER 0x00 /* Enable heater */ 140094332d3Sopenharmony_ci 141094332d3Sopenharmony_ci#define BME68X_HCTRL_POS 3 /* Heater control bit position */ 142094332d3Sopenharmony_ci#define BME68X_RUN_GAS_POS 4 /* Run gas bit position */ 143094332d3Sopenharmony_ci#define BME68X_FILTER_POS 2 /* Filter bit position */ 144094332d3Sopenharmony_ci#define BME68X_OST_POS 5 /* Temperature oversampling bit position */ 145094332d3Sopenharmony_ci#define BME68X_OSP_POS 2 /* Pressure oversampling bit position */ 146094332d3Sopenharmony_ci#define BME68X_ODR3_POS 7 /* ODR[3] bit position */ 147094332d3Sopenharmony_ci#define BME68X_ODR20_POS 5 /* ODR[2:0] bit position */ 148094332d3Sopenharmony_ci 149094332d3Sopenharmony_ci#define BME688_WORK_MODE_SUSPEND 1 /* Suspend mode */ 150094332d3Sopenharmony_ci#define BME688_WORK_MODE_IDLE 2 /* idle mode */ 151094332d3Sopenharmony_ci 152094332d3Sopenharmony_ci#define BME688_DELAY_4 4 /*delay time about 4 */ 153094332d3Sopenharmony_ci#define BME688_DELAY_5 5 /*delay time about 5 */ 154094332d3Sopenharmony_ci#define BME688_DELAY_10 10 /*delay time about 10 */ 155094332d3Sopenharmony_ci#define BME688_DELAY_50 50 /*delay time about 50 */ 156094332d3Sopenharmony_ci 157094332d3Sopenharmony_ci#define BME688_MAX_HUM 100000 /* max humidity */ 158094332d3Sopenharmony_ci#define BME688_MAX_TEMP 400 /* max temperature */ 159094332d3Sopenharmony_ci 160094332d3Sopenharmony_ci#define BME68X_LEN_INTERLEAVE_BUFF 20 /* Length of the interleaved buffer */ 161094332d3Sopenharmony_ci 162094332d3Sopenharmony_ci#define BME688_TRY_TIMES 5 /* try to read field data times*/ 163094332d3Sopenharmony_ci 164094332d3Sopenharmony_ci/* Macro to combine two 8 bit data's to form a 16 bit data */ 165094332d3Sopenharmony_ci#define BME68X_CONCAT_BYTES(msb, lsb) ((uint16_t)((msb) << 8) | (uint16_t)(lsb)) 166094332d3Sopenharmony_ci 167094332d3Sopenharmony_ci/* Macro to set bits */ 168094332d3Sopenharmony_ci#define BME68X_SET_BITS(reg_data, bitname, data) \ 169094332d3Sopenharmony_ci (((reg_data) & ~(bitname##_MSK)) | \ 170094332d3Sopenharmony_ci (((data) << bitname##_POS) & bitname##_MSK)) 171094332d3Sopenharmony_ci 172094332d3Sopenharmony_ci/* Macro to set bits starting from position 0 */ 173094332d3Sopenharmony_ci#define BME68X_SET_BITS_POS_0(reg_data, bitname, data) \ 174094332d3Sopenharmony_ci (((reg_data) & ~(bitname##_MSK)) | ((data) & bitname##_MSK)) 175094332d3Sopenharmony_ci 176094332d3Sopenharmony_cistruct Bme688CalibData { 177094332d3Sopenharmony_ci /*! Calibration coefficient for the humidity sensor */ 178094332d3Sopenharmony_ci uint16_t par_h1; 179094332d3Sopenharmony_ci 180094332d3Sopenharmony_ci /*! Calibration coefficient for the humidity sensor */ 181094332d3Sopenharmony_ci uint16_t par_h2; 182094332d3Sopenharmony_ci 183094332d3Sopenharmony_ci /*! Calibration coefficient for the humidity sensor */ 184094332d3Sopenharmony_ci int8_t par_h3; 185094332d3Sopenharmony_ci 186094332d3Sopenharmony_ci /*! Calibration coefficient for the humidity sensor */ 187094332d3Sopenharmony_ci int8_t par_h4; 188094332d3Sopenharmony_ci 189094332d3Sopenharmony_ci /*! Calibration coefficient for the humidity sensor */ 190094332d3Sopenharmony_ci int8_t par_h5; 191094332d3Sopenharmony_ci 192094332d3Sopenharmony_ci /*! Calibration coefficient for the humidity sensor */ 193094332d3Sopenharmony_ci uint8_t par_h6; 194094332d3Sopenharmony_ci 195094332d3Sopenharmony_ci /*! Calibration coefficient for the humidity sensor */ 196094332d3Sopenharmony_ci int8_t par_h7; 197094332d3Sopenharmony_ci 198094332d3Sopenharmony_ci /*! Calibration coefficient for the gas sensor */ 199094332d3Sopenharmony_ci int8_t par_gh1; 200094332d3Sopenharmony_ci 201094332d3Sopenharmony_ci /*! Calibration coefficient for the gas sensor */ 202094332d3Sopenharmony_ci int16_t par_gh2; 203094332d3Sopenharmony_ci 204094332d3Sopenharmony_ci /*! Calibration coefficient for the gas sensor */ 205094332d3Sopenharmony_ci int8_t par_gh3; 206094332d3Sopenharmony_ci 207094332d3Sopenharmony_ci /*! Calibration coefficient for the temperature sensor */ 208094332d3Sopenharmony_ci uint16_t par_t1; 209094332d3Sopenharmony_ci 210094332d3Sopenharmony_ci /*! Calibration coefficient for the temperature sensor */ 211094332d3Sopenharmony_ci int16_t par_t2; 212094332d3Sopenharmony_ci 213094332d3Sopenharmony_ci /*! Calibration coefficient for the temperature sensor */ 214094332d3Sopenharmony_ci int8_t par_t3; 215094332d3Sopenharmony_ci 216094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 217094332d3Sopenharmony_ci uint16_t par_p1; 218094332d3Sopenharmony_ci 219094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 220094332d3Sopenharmony_ci int16_t par_p2; 221094332d3Sopenharmony_ci 222094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 223094332d3Sopenharmony_ci int8_t par_p3; 224094332d3Sopenharmony_ci 225094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 226094332d3Sopenharmony_ci int16_t par_p4; 227094332d3Sopenharmony_ci 228094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 229094332d3Sopenharmony_ci int16_t par_p5; 230094332d3Sopenharmony_ci 231094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 232094332d3Sopenharmony_ci int8_t par_p6; 233094332d3Sopenharmony_ci 234094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 235094332d3Sopenharmony_ci int8_t par_p7; 236094332d3Sopenharmony_ci 237094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 238094332d3Sopenharmony_ci int16_t par_p8; 239094332d3Sopenharmony_ci 240094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 241094332d3Sopenharmony_ci int16_t par_p9; 242094332d3Sopenharmony_ci 243094332d3Sopenharmony_ci /*! Calibration coefficient for the pressure sensor */ 244094332d3Sopenharmony_ci uint8_t par_p10; 245094332d3Sopenharmony_ci 246094332d3Sopenharmony_ci /*! Variable to store the intermediate temperature coefficient */ 247094332d3Sopenharmony_ci int32_t t_fine; 248094332d3Sopenharmony_ci 249094332d3Sopenharmony_ci /*! Heater resistance range coefficient */ 250094332d3Sopenharmony_ci uint8_t res_heat_range; 251094332d3Sopenharmony_ci 252094332d3Sopenharmony_ci /*! Heater resistance value coefficient */ 253094332d3Sopenharmony_ci int8_t res_heat_val; 254094332d3Sopenharmony_ci 255094332d3Sopenharmony_ci /*! Gas resistance range switching error coefficient */ 256094332d3Sopenharmony_ci int8_t range_sw_err; 257094332d3Sopenharmony_ci}; 258094332d3Sopenharmony_ci 259094332d3Sopenharmony_cistruct bme688HeatrConf { 260094332d3Sopenharmony_ci /*! Enable gas measurement. Refer @ref en_dis */ 261094332d3Sopenharmony_ci uint8_t enable; 262094332d3Sopenharmony_ci 263094332d3Sopenharmony_ci /*! Store the heater temperature for forced mode degree Celsius */ 264094332d3Sopenharmony_ci uint16_t heatr_temp; 265094332d3Sopenharmony_ci 266094332d3Sopenharmony_ci /*! Store the heating duration for forced mode in milliseconds */ 267094332d3Sopenharmony_ci uint16_t heatr_dur; 268094332d3Sopenharmony_ci 269094332d3Sopenharmony_ci /*! Store the heater temperature profile in degree Celsius */ 270094332d3Sopenharmony_ci uint16_t *heatr_temp_prof; 271094332d3Sopenharmony_ci 272094332d3Sopenharmony_ci /*! Store the heating duration profile in milliseconds */ 273094332d3Sopenharmony_ci uint16_t *heatr_dur_prof; 274094332d3Sopenharmony_ci 275094332d3Sopenharmony_ci /*! Variable to store the length of the heating profile */ 276094332d3Sopenharmony_ci uint8_t profile_len; 277094332d3Sopenharmony_ci 278094332d3Sopenharmony_ci /*! 279094332d3Sopenharmony_ci * Variable to store heating duration for parallel mode 280094332d3Sopenharmony_ci * in milliseconds 281094332d3Sopenharmony_ci */ 282094332d3Sopenharmony_ci uint16_t shared_heatr_dur; 283094332d3Sopenharmony_ci}; 284094332d3Sopenharmony_ci 285094332d3Sopenharmony_cistruct Bme688Status { 286094332d3Sopenharmony_ci int8_t variantId; 287094332d3Sopenharmony_ci int8_t workState; 288094332d3Sopenharmony_ci int8_t inited; 289094332d3Sopenharmony_ci}; 290094332d3Sopenharmony_ci 291094332d3Sopenharmony_cistruct Bme688DrvData { 292094332d3Sopenharmony_ci struct IDeviceIoService ioService; 293094332d3Sopenharmony_ci struct HdfDeviceObject *device; 294094332d3Sopenharmony_ci struct SensorCfgData *sensorCfg; 295094332d3Sopenharmony_ci}; 296094332d3Sopenharmony_ci 297094332d3Sopenharmony_cienum Bme688FieldData { 298094332d3Sopenharmony_ci RESISTANCE = 0, 299094332d3Sopenharmony_ci TEMPERATURE = 1, 300094332d3Sopenharmony_ci HUMIDITY = 2, 301094332d3Sopenharmony_ci PRESSURE = 3 302094332d3Sopenharmony_ci}; 303094332d3Sopenharmony_ci 304094332d3Sopenharmony_ci#endif /* BME688_H */ 305094332d3Sopenharmony_ci 306