1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * 4094332d3Sopenharmony_ci * HDF is dual licensed: you can use it either under the terms of 5094332d3Sopenharmony_ci * the GPL, or the BSD license, at your option. 6094332d3Sopenharmony_ci * See the LICENSE file in the root of this repository for complete details. 7094332d3Sopenharmony_ci */ 8094332d3Sopenharmony_ci 9094332d3Sopenharmony_ci#ifndef HUMIDITY_AHT20_H 10094332d3Sopenharmony_ci#define HUMIDITY_AHT20_H 11094332d3Sopenharmony_ci 12094332d3Sopenharmony_ci#include "sensor_config_parser.h" 13094332d3Sopenharmony_ci#include "sensor_humidity_driver.h" 14094332d3Sopenharmony_ci 15094332d3Sopenharmony_ci/* Humidity registers addr */ 16094332d3Sopenharmony_ci#define AHT20_HUM_STATUS_ADDR 0x71 // Status 17094332d3Sopenharmony_ci#define AHT20_HUM_RESET_ADDR 0xBA 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_ci#define AHT20_HUM_MEASURE_ADDR 0xAC // Measure 20094332d3Sopenharmony_ci#define AHT20_HUM_MEASURE_ARG0 0x33 21094332d3Sopenharmony_ci#define AHT20_HUM_MEASURE_ARG1 0x00 22094332d3Sopenharmony_ci 23094332d3Sopenharmony_ci#define AHT20_HUM_CALIBRATION_ADDR 0xBE // Calibration 24094332d3Sopenharmony_ci#define AHT20_HUM_CALIBRATION_ARG0 0x08 25094332d3Sopenharmony_ci#define AHT20_HUM_CALIBRATION_ARG1 0x00 26094332d3Sopenharmony_ci 27094332d3Sopenharmony_ci/* Humidity data */ 28094332d3Sopenharmony_ci#define AHT20_HUM_DATA_BUF_LEN 6 29094332d3Sopenharmony_ci#define AHT20_HUM_VALUE_IDX_ZERO 0 30094332d3Sopenharmony_ci#define AHT20_HUM_VALUE_IDX_ONE 1 31094332d3Sopenharmony_ci#define AHT20_HUM_VALUE_IDX_TWO 2 32094332d3Sopenharmony_ci#define AHT20_HUM_VALUE_IDX_THREE 3 33094332d3Sopenharmony_ci#define AHT20_HUM_VALUE_IDX_FOUR 4 34094332d3Sopenharmony_ci#define AHT20_HUM_VALUE_IDX_FIVE 5 35094332d3Sopenharmony_ci 36094332d3Sopenharmony_ci#define AHT20_HUM_BUSY_SHIFT 7 37094332d3Sopenharmony_ci#define AHT20_HUM_BUSY_MASK (0x1 << AHT20_HUM_BUSY_SHIFT) 38094332d3Sopenharmony_ci#define AHT20_HUM_IS_BUSY(status) (((status) & AHT20_HUM_BUSY_MASK) >> AHT20_HUM_BUSY_SHIFT) 39094332d3Sopenharmony_ci 40094332d3Sopenharmony_ci#define AHT20_HUM_CALI_SHIFT 3 41094332d3Sopenharmony_ci#define AHT20_HUM_CALI_MASK (0x1 << AHT20_HUM_CALI_SHIFT) 42094332d3Sopenharmony_ci#define AHT20_HUM_IS_CALI(status) (((status) & AHT20_HUM_CALI_MASK) >> AHT20_HUM_CALI_SHIFT) 43094332d3Sopenharmony_ci 44094332d3Sopenharmony_ci#define AHT20_HUM_DELAY_MS 80 45094332d3Sopenharmony_ci#define AHT20_HUM_STARTUP_MS 20 46094332d3Sopenharmony_ci#define AHT20_HUM_CALIBRATION_MS 40 47094332d3Sopenharmony_ci 48094332d3Sopenharmony_ci#define AHT20_HUM_SHFIT_FOUR_BITS 4 49094332d3Sopenharmony_ci#define AHT20_HUM_SHFIT_EIGHT_BITS 8 50094332d3Sopenharmony_ci#define AHT20_HUM_MASK 0xF0 51094332d3Sopenharmony_ci 52094332d3Sopenharmony_ci#define AHT20_HUM_SLOPE 10000 // 100 * 100.0 53094332d3Sopenharmony_ci#define AHT20_HUM_RESOLUTION (0x1 << 20) 54094332d3Sopenharmony_ci#define AHT20_HUM_RETRY_TIMES 5 55094332d3Sopenharmony_ci 56094332d3Sopenharmony_cistruct Aht20DrvData { 57094332d3Sopenharmony_ci struct IDeviceIoService ioService; 58094332d3Sopenharmony_ci struct HdfDeviceObject *device; 59094332d3Sopenharmony_ci struct SensorCfgData *sensorCfg; 60094332d3Sopenharmony_ci}; 61094332d3Sopenharmony_ci 62094332d3Sopenharmony_ci#endif /* HUMIDITY_AHT20_H */ 63