mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
fa05cf0c5d
- add saul integration - uncrustified - SAUL/DRIVER tests
125 lines
3.2 KiB
C
125 lines
3.2 KiB
C
/*
|
|
* 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 <steffen.robertz@rwth-aachen.de>
|
|
* @author Josua Arndt <jarndt@ias.rwth-aachen.de>
|
|
*/
|
|
|
|
#ifndef SHTC1_H
|
|
#define SHTC1_H
|
|
|
|
#include <stdint.h>
|
|
#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 */
|
|
/** @} */
|