drivers/tmp00x : Expose to Kconfig
Expose configurations to Kconfig Co-authored-by: Leandro Lanzieri <leandro.lanzieri@haw-hamburg.de>
This commit is contained in:
parent
414fae5b0c
commit
74a7bb230b
@ -27,6 +27,7 @@ rsource "mma8x5x/Kconfig"
|
|||||||
rsource "opt3001/Kconfig"
|
rsource "opt3001/Kconfig"
|
||||||
rsource "sps30/Kconfig"
|
rsource "sps30/Kconfig"
|
||||||
rsource "tcs37727/Kconfig"
|
rsource "tcs37727/Kconfig"
|
||||||
|
rsource "tmp00x/Kconfig"
|
||||||
endmenu # Sensor Device Drivers
|
endmenu # Sensor Device Drivers
|
||||||
|
|
||||||
menu "Storage Device Drivers"
|
menu "Storage Device Drivers"
|
||||||
|
|||||||
@ -101,8 +101,10 @@ extern "C"
|
|||||||
/**
|
/**
|
||||||
* @brief Default Address
|
* @brief Default Address
|
||||||
*
|
*
|
||||||
* I2C Address depends on the state of ADR0 and ADR1 Pins
|
* TMP006/TMP007 allows for up to 8 devices on a single bus. The address value
|
||||||
* For more information, please refer to section 7.3.6.2 of TMP007 datasheet (SBOS685B).
|
* depends on the state of ADR0 and ADR1 pins. Default value (0x40) corresponds
|
||||||
|
* to ADR0 and ADR1 pins tied to GND. For more information refer to the 'Serial
|
||||||
|
* Bus Address' section in the datasheet.
|
||||||
*/
|
*/
|
||||||
#ifndef CONFIG_TMP00X_I2C_ADDRESS
|
#ifndef CONFIG_TMP00X_I2C_ADDRESS
|
||||||
#define CONFIG_TMP00X_I2C_ADDRESS (0x40)
|
#define CONFIG_TMP00X_I2C_ADDRESS (0x40)
|
||||||
@ -110,7 +112,23 @@ extern "C"
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Default Conversion Time in us
|
* @brief Default Conversion Time in us
|
||||||
|
*
|
||||||
|
* The duration of the analog-to-digital(A/D) conversion is determined by the
|
||||||
|
* conversion rate bits CR0, CR1 and CR2. For more information refer to the
|
||||||
|
* datasheet.
|
||||||
*/
|
*/
|
||||||
|
#if IS_ACTIVE(CONFIG_TMP00X_CONVERSION_TIME_0_25S)
|
||||||
|
#define CONFIG_TMP00X_CONVERSION_TIME (25E4)
|
||||||
|
#elif IS_ACTIVE(CONFIG_TMP00X_CONVERSION_TIME_0_5S)
|
||||||
|
#define CONFIG_TMP00X_CONVERSION_TIME (5E5)
|
||||||
|
#elif IS_ACTIVE(CONFIG_TMP00X_CONVERSION_TIME_1S)
|
||||||
|
#define CONFIG_TMP00X_CONVERSION_TIME (1E6)
|
||||||
|
#elif IS_ACTIVE(CONFIG_TMP00X_CONVERSION_TIME_2S)
|
||||||
|
#define CONFIG_TMP00X_CONVERSION_TIME (2E6)
|
||||||
|
#elif IS_ACTIVE(CONFIG_TMP00X_CONVERSION_TIME_4S)
|
||||||
|
#define CONFIG_TMP00X_CONVERSION_TIME (4E6)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_TMP00X_CONVERSION_TIME
|
#ifndef CONFIG_TMP00X_CONVERSION_TIME
|
||||||
#define CONFIG_TMP00X_CONVERSION_TIME (1E6)
|
#define CONFIG_TMP00X_CONVERSION_TIME (1E6)
|
||||||
#endif
|
#endif
|
||||||
@ -130,8 +148,8 @@ extern "C"
|
|||||||
/**
|
/**
|
||||||
* @brief Default raw value mode
|
* @brief Default raw value mode
|
||||||
*
|
*
|
||||||
* Set this to 1 to return raw adc readings otherwise
|
* Set this to 1 to return raw adc readings otherwise measurements will be
|
||||||
* measurements will be converted to Celsius.
|
* converted to Celsius.
|
||||||
*/
|
*/
|
||||||
#ifdef DOXYGEN
|
#ifdef DOXYGEN
|
||||||
#define CONFIG_TMP00X_USE_RAW_VALUES
|
#define CONFIG_TMP00X_USE_RAW_VALUES
|
||||||
|
|||||||
64
drivers/tmp00x/Kconfig
Normal file
64
drivers/tmp00x/Kconfig
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# Copyright (c) 2020 Freie Universitaet Berlin
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
menuconfig KCONFIG_MODULE_TMP00X
|
||||||
|
bool "Configure TMP00X driver"
|
||||||
|
depends on MODULE_TMP00X
|
||||||
|
help
|
||||||
|
Configure the TMP00X driver using Kconfig.
|
||||||
|
|
||||||
|
if KCONFIG_MODULE_TMP00X
|
||||||
|
|
||||||
|
config TMP00X_I2C_ADDRESS
|
||||||
|
hex "Default I2C Address"
|
||||||
|
range 0x40 0x47
|
||||||
|
default 0x40
|
||||||
|
help
|
||||||
|
TMP006/TMP007 allows for up to 8 devices on a single bus. The address
|
||||||
|
value depends on the state of ADR0 and ADR1 pins. Default value (0x40)
|
||||||
|
corresponds to ADR0 and ADR1 pins tied to GND. For more information
|
||||||
|
refer to the 'Serial Bus Address' section in the datasheet.
|
||||||
|
|
||||||
|
choice
|
||||||
|
bool "Conversion time"
|
||||||
|
default TMP00X_CONVERSION_TIME_1S
|
||||||
|
help
|
||||||
|
The duration of the analog-to-digital(A/D) conversion is determined by
|
||||||
|
the conversion rate bits CR0, CR1 and CR2. For more information refer
|
||||||
|
datasheet.
|
||||||
|
|
||||||
|
config TMP00X_CONVERSION_TIME_0_25S
|
||||||
|
bool "0.25 s"
|
||||||
|
|
||||||
|
config TMP00X_CONVERSION_TIME_0_5S
|
||||||
|
bool "0.5 s"
|
||||||
|
|
||||||
|
config TMP00X_CONVERSION_TIME_1S
|
||||||
|
bool "1 s"
|
||||||
|
|
||||||
|
config TMP00X_CONVERSION_TIME_2S
|
||||||
|
bool "2 s"
|
||||||
|
|
||||||
|
config TMP00X_CONVERSION_TIME_4S
|
||||||
|
bool "4 s"
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config TMP00X_USE_LOW_POWER
|
||||||
|
bool "Enable low power mode"
|
||||||
|
help
|
||||||
|
Enable this to put the device in low power mode between measurements.
|
||||||
|
By default the device will always be on. Enabling this also adds a delay
|
||||||
|
based on "Conversion time" to each measurement call for bringing the
|
||||||
|
device out of standby.
|
||||||
|
|
||||||
|
config TMP00X_USE_RAW_VALUES
|
||||||
|
bool "Enable raw ADC readings"
|
||||||
|
help
|
||||||
|
Enable this to return raw ADC readings. By default measurements are
|
||||||
|
converted to Celsius.
|
||||||
|
|
||||||
|
endif # KCONFIG_MODULE_TMP00X
|
||||||
@ -34,10 +34,8 @@
|
|||||||
#include "tmp00x_regs.h"
|
#include "tmp00x_regs.h"
|
||||||
#include "byteorder.h"
|
#include "byteorder.h"
|
||||||
#include "kernel_defines.h"
|
#include "kernel_defines.h"
|
||||||
|
|
||||||
#if IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)
|
|
||||||
#include "xtimer.h"
|
#include "xtimer.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENABLE_DEBUG (0)
|
#define ENABLE_DEBUG (0)
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
@ -202,54 +200,50 @@ void tmp00x_convert(int16_t rawv, int16_t rawt, float *tamb, float *tobj)
|
|||||||
|
|
||||||
int tmp00x_read_temperature(const tmp00x_t *dev, int16_t *ta, int16_t *to)
|
int tmp00x_read_temperature(const tmp00x_t *dev, int16_t *ta, int16_t *to)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint16_t drdy;
|
uint16_t drdy;
|
||||||
#if (!IS_ACTIVE(CONFIG_TMP00X_USE_RAW_VALUES))
|
|
||||||
int16_t rawtemp, rawvolt;
|
int16_t rawtemp, rawvolt;
|
||||||
float tamb, tobj;
|
float tamb, tobj;
|
||||||
#endif
|
int ret;
|
||||||
|
|
||||||
#if IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)
|
if (IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)) {
|
||||||
if (tmp00x_set_active(dev)) {
|
if (tmp00x_set_active(dev)) {
|
||||||
return TMP00X_ERROR;
|
return TMP00X_ERROR;
|
||||||
}
|
}
|
||||||
xtimer_usleep(CONFIG_TMP00X_CONVERSION_TIME);
|
xtimer_usleep(CONFIG_TMP00X_CONVERSION_TIME);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
int ret;
|
if (IS_ACTIVE(CONFIG_TMP00X_USE_RAW_VALUES)) {
|
||||||
#if IS_ACTIVE(CONFIG_TMP00X_USE_RAW_VALUES)
|
|
||||||
if ((ret = tmp00x_read(dev, to, ta, &drdy)) < 0) {
|
if ((ret = tmp00x_read(dev, to, ta, &drdy)) < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!drdy) {
|
if (!drdy) {
|
||||||
#if IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)
|
if (IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)) {
|
||||||
tmp00x_set_standby(dev);
|
tmp00x_set_standby(dev);
|
||||||
#endif
|
}
|
||||||
return -TMP00X_ERROR;
|
return -TMP00X_ERROR;
|
||||||
}
|
}
|
||||||
#else
|
}
|
||||||
|
else {
|
||||||
if ((ret = tmp00x_read(dev, &rawvolt, &rawtemp, &drdy)) < 0) {
|
if ((ret = tmp00x_read(dev, &rawvolt, &rawtemp, &drdy)) < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!drdy) {
|
if (!drdy) {
|
||||||
#if IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)
|
if (IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)) {
|
||||||
tmp00x_set_standby(dev);
|
tmp00x_set_standby(dev);
|
||||||
#endif
|
}
|
||||||
return -TMP00X_ERROR;
|
return -TMP00X_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp00x_convert(rawvolt, rawtemp, &tamb, &tobj);
|
tmp00x_convert(rawvolt, rawtemp, &tamb, &tobj);
|
||||||
*ta = (int16_t)(tamb*100);
|
*ta = (int16_t)(tamb*100);
|
||||||
*to = (int16_t)(tobj*100);
|
*to = (int16_t)(tobj*100);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
if (IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)) {
|
if (IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)) {
|
||||||
if (tmp00x_set_standby(dev)) {
|
if (tmp00x_set_standby(dev)) {
|
||||||
return -TMP00X_ERROR;
|
return -TMP00X_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TMP00X_OK;
|
return TMP00X_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user