/* * Copyright 2017, RWTH Aachen. All rights reserved. * * This file is subject to the terms and conditions of the GNU Lesser * General Public License v2.1. See the file LICENSE in the top level * directory for more details. */ /** * @defgroup drivers_shtc1 SHTC1 Temperature and humidity sensor * @ingroup drivers_sensors * @ingroup drivers_saul * @brief Driver for the Sensirion SHTC1 sensor. * * @file * @brief Device driver interface for the SHTC1 Temperature and humidity sensor * * @author Steffen Robertz * @author Josua Arndt */ #ifndef SHTC1_H #define SHTC1_H #include #include "saul.h" #include "periph/i2c.h" #ifdef __cplusplus extern "C" { #endif /** * @brief SHTC1 Default Address * */ #ifndef SHTC1_I2C_ADDRESS #define SHTC1_I2C_ADDRESS (0x70) #endif /** * @brief settings struct with all relevant parameters * @{ */ typedef struct { i2c_t i2c_dev; /**< I2C bus descriptor. */ uint8_t i2c_addr; /**< I2C address of the sensor. */ } shtc1_params_t; /** @} */ /** * @brief device descriptor for the SHTC1 * @{ */ typedef struct { shtc1_params_t params; /**< Parameters struct with all settings set. */ } shtc1_t; /** @} */ enum { SHTC1_OK, /**< Success, no error */ SHTC1_ERROR_BUS, /**< I2C bus error */ SHTC1_ERROR_CRC, /**< CRC error */ SHTC1_ERROR /**< General error */ }; /** * @brief Initializes the sensor and I2C. * * @param[in] dev I2C device descriptor. * @param[in] params SHTC1 parameters to be used. * * @return SHTC1_OK on a working initialization. * @return SHTC1_ERROR_BUS Reading I2C failed. * @return SHTC1_ERROR_CRC Wrong ID. */ int8_t shtc1_init(shtc1_t* const dev, const shtc1_params_t* params); /** * @brief Reads all register values from the device. * @details The values as raw data will be saved into reveived. * * @param[in] dev The I2C device descriptor. * @param[in] rel_humidity Humidity in centi %. * @param[in] temperature Temperature in centi °C. * * @return SHTC1_OK if a measurement completed. * @return SHTC1_ERROR_BUS reading I2C failed. * @return SHTC1_ERROR_CRC on checksum error. */ int8_t shtc1_read(const shtc1_t *dev, uint16_t *rel_humidity, int16_t *temperature); /** * @brief Reads the ID and saves it in the device descriptor * * @details When working correctly ID should equal xxxx'xxxx'xx00'0111 where x is unspecified. * * @param[in] dev The I2C device descriptor. * @param[in] id ID of the device. * * @return SHTC1_OK on everything done. * @return SHTC1_ERROR_BUS on error. */ int8_t shtc1_id(const shtc1_t *dev, uint16_t *id); /** * @brief Resets sensor * * This will reset all internal state machines and reload calibration data from the memory. * * @param[in] dev The I2C device descriptor. * * @return SHTC1_OK on everything done. * @return SHTC1_ERROR_BUS on error. */ int8_t shtc1_reset(const shtc1_t *dev); #ifdef __cplusplus } #endif #endif /* SHTC1_H */ /** @} */