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