/* * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once #ifdef __cplusplus extern "C" { #endif #include "esp_types.h" #include "esp_err.h" #include "driver/i2c_master.h" /* AHT20 address: CE pin low - 0x38, CE pin high - 0x39 */ #define AHT20_ADDRRES_0 (0x38) #define AHT20_ADDRESS_1 (0x39) /** * @brief Type of AHT20 device handle */ typedef void *aht20_handle_t; /** * @brief Create and init sensor object and return a sensor handle * * @param[in] bus_handle I2C bus handle. Obtained from i2c_new_master_bus(). * @param[in] dev_addr I2C address of sensor. Use AHT20_ADDRRES_0 for default address. * @param[out] handle_ret Handle to created AHT20 driver object. * * @return * - ESP_OK Success * - ESP_ERR_NO_MEM Not enough memory for the driver * - Others Error from underlying I2C driver */ esp_err_t aht20_create(i2c_master_bus_handle_t bus_handle, const uint8_t dev_addr, aht20_handle_t *handle_ret); /** * @brief Delete and release a sensor object * * @param sensor object handle of aht20 * * @return * - ESP_OK Success * - ESP_FAIL Fail */ esp_err_t aht20_delete(aht20_handle_t sensor); /** * @brief read the temperature and humidity data * * @param[in] sensor object handle of aht20 * @param[out] temperature_raw points to a raw temperature buffer * @param[out] temperature points to a converted temperature buffer * @param[out] humidity_raw points to a raw humidity buffer * @param[out] humidity points to a converted humidity buffer * * @return * - ESP_OK Success * - ESP_ERR_NOT_FINISHED Measurement not ready yet * - ESP_FAIL Fail */ esp_err_t aht20_read_temperature_humidity(aht20_handle_t sensor, uint32_t *temperature_raw, float *temperature, uint32_t *humidity_raw, float *humidity); #ifdef __cplusplus } #endif