1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  *
4  * HDF is dual licensed: you can use it either under the terms of
5  * the GPL, or the BSD license, at your option.
6  * See the LICENSE file in the root of this repository for complete details.
7  */
8 
9 #ifndef HUMIDITY_SHT30_H
10 #define HUMIDITY_SHT30_H
11 
12 #include "sensor_config_parser.h"
13 #include "sensor_humidity_driver.h"
14 
15 /* Humidity registers addr */
16 #define SHT30_HUM_DATA_ADDR             0x240B  // Data
17 
18 /* Humidity data */
19 #define SHT30_HUM_DATA_BUF_LEN          6
20 #define SHT30_HUM_VALUE_INDEX_ZERO      0
21 #define SHT30_HUM_VALUE_INDEX_ONE       1
22 #define SHT30_HUM_VALUE_INDEX_TWO       2
23 #define SHT30_HUM_VALUE_INDEX_THREE     3
24 #define SHT30_HUM_VALUE_INDEX_FOUR      4
25 #define SHT30_HUM_VALUE_INDEX_FIVE      5
26 
27 #define SHT30_HUM_SLOPE                 10000      // 100.0 * 100
28 #define SHT30_HUM_RESOLUTION            0xFFFF
29 #define SHT30_HUM_SHFIT_1_BIT           1
30 
31 /* Humidity crc8 */
32 #define SHT30_HUM_CRC8_BASE             0xFF
33 #define SHT30_HUM_CRC8_MASK             0x80
34 #define SHT30_HUM_CRC8_POLYNOMIAL       0x31
35 #define SHT30_HUM_CRC8_LEN              2
36 
37 int32_t DetectHumiditySht30Chip(struct SensorCfgData *data);
38 
39 struct Sht30DrvData {
40     struct IDeviceIoService ioService;
41     struct HdfDeviceObject *device;
42     struct SensorCfgData *sensorCfg;
43 };
44 
45 #endif /* HUMIDITY_SHT30_H */
46