diff --git a/include/zh_aht.h b/include/zh_aht.h index e034f02..db12668 100644 --- a/include/zh_aht.h +++ b/include/zh_aht.h @@ -1,3 +1,7 @@ +/** + * @file zh_aht.h + */ + #pragma once #include "esp_err.h" @@ -10,21 +14,26 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" +/** + * @brief AHT sensor initial default values. + */ #define ZH_AHT_INIT_CONFIG_DEFAULT() \ { \ - .i2c_port = 0 \ - } + .i2c_port = 0} #ifdef __cplusplus extern "C" { #endif - typedef struct // Structure for initial initialization of AHT sensor. + /** + * @brief Structure for initial initialization of AHT sensor. + */ + typedef struct { - bool i2c_port; // I2C port. + bool i2c_port; /*!< I2C port. */ #ifndef CONFIG_IDF_TARGET_ESP8266 - i2c_master_bus_handle_t i2c_handle; // Unique I2C bus handle. + i2c_master_bus_handle_t i2c_handle; /*!< Unique I2C bus handle. */ #endif } zh_aht_init_config_t; @@ -39,11 +48,7 @@ extern "C" * * @code zh_aht_init_config_t config = ZH_AHT_INIT_CONFIG_DEFAULT() @endcode * - * @return - * - ESP_OK if initialization was success - * - ESP_ERR_INVALID_ARG if parameter error - * - ESP_ERR_NOT_FOUND if sensor not connected or not responded - * - ESP_ERR_INVALID_RESPONSE if I2C driver error + * @return ESP_OK if success or an error code otherwise. */ esp_err_t zh_aht_init(const zh_aht_init_config_t *config); @@ -53,23 +58,14 @@ extern "C" * @param[out] humidity Pointer for AHT sensor reading data of humidity. * @param[out] temperature Pointer for AHT sensor reading data of temperature. * - * @return - * - ESP_OK if read was success - * - ESP_ERR_INVALID_ARG if parameter error - * - ESP_ERR_NOT_FOUND if sensor is not initialized - * - ESP_ERR_INVALID_CRC if check CRC is fail - * - ESP_ERR_INVALID_RESPONSE if I2C driver error - * - ESP_ERR_TIMEOUT if sensor has not responded + * @return ESP_OK if success or an error code otherwise. */ esp_err_t zh_aht_read(float *humidity, float *temperature); /** * @brief Reset AHT sensor. * - * @return - * - ESP_OK if reset was success - * - ESP_ERR_NOT_FOUND if sensor is not initialized - * - ESP_ERR_INVALID_RESPONSE if I2C driver error + * @return ESP_OK if success or an error code otherwise. */ esp_err_t zh_aht_reset(void); diff --git a/zh_aht.c b/zh_aht.c index 1f47a70..c55dc5d 100644 --- a/zh_aht.c +++ b/zh_aht.c @@ -1,15 +1,15 @@ #include "zh_aht.h" -#define I2C_MAX_DATA_SIZE 7 // Sensor maximum data size (in bytes). -#define MEASUREMENT_TIME 80 // Sensor measurement time (in milliseconds). -#define RESET_TIME 20 // Sensor reset time (in milliseconds). -#define I2C_ADDRESS 0x38 // Sensor I2C address. -#define I2C_DATA_READ_COMMAND 0xAC, 0x33, 0x00 // Command for read sensor data (temperature and humidity). -#define I2C_RESET_COMMAND 0xBA // Command for reset sensor. -#define I2C_INIT_COMMAND 0x00, 0x08, 0x00 // Command for initialize sensor. First byte is depend of sensor type. -#define I2C_INIT_AHT1X_FIRST_BYTE 0xE1 // First byte for command for initialize sensor. For AHT1X series. -#define I2C_INIT_AHT2X_FIRST_BYTE 0xBE // First byte for command for initialize sensor. For AHT2X/3X series. -#define I2C_STATUS_READ_COMMAND 0x71 // Command for read sensor status. +#define I2C_MAX_DATA_SIZE 7 /*!< Sensor maximum data size (in bytes). */ +#define MEASUREMENT_TIME 80 /*!< Sensor measurement time (in milliseconds). */ +#define RESET_TIME 20 /*!< Sensor reset time (in milliseconds). */ +#define I2C_ADDRESS 0x38 /*!< Sensor I2C address. */ +#define I2C_DATA_READ_COMMAND 0xAC, 0x33, 0x00 /*!< Command for read sensor data (temperature and humidity). */ +#define I2C_RESET_COMMAND 0xBA /*!< Command for reset sensor. */ +#define I2C_INIT_COMMAND 0x00, 0x08, 0x00 /*!< Command for initialize sensor. First byte is depend of sensor type. */ +#define I2C_INIT_AHT1X_FIRST_BYTE 0xE1 /*!< First byte for command for initialize sensor. For AHT1X series. */ +#define I2C_INIT_AHT2X_FIRST_BYTE 0xBE /*!< First byte for command for initialize sensor. For AHT2X/3X series. */ +#define I2C_STATUS_READ_COMMAND 0x71 /*!< Command for read sensor status. */ static zh_aht_init_config_t _init_config = {0}; static bool _is_initialized = false; @@ -188,7 +188,7 @@ esp_err_t zh_aht_read(float *humidity, float *temperature) ESP_LOGE(TAG, "AHT read fail. I2C driver error at line %d.", __LINE__); return ESP_ERR_INVALID_RESPONSE; } - if ((sensor_data[0] & 0x40) != 0) // If sensor is busy in measurement. + if ((sensor_data[0] & 0x40) != 0) { ESP_LOGE(TAG, "AHT read fail. Timeout exceeded."); return ESP_ERR_TIMEOUT;