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 "sps30/Kconfig"
|
||||
rsource "tcs37727/Kconfig"
|
||||
rsource "tmp00x/Kconfig"
|
||||
endmenu # Sensor Device Drivers
|
||||
|
||||
menu "Storage Device Drivers"
|
||||
|
||||
@ -101,8 +101,10 @@ extern "C"
|
||||
/**
|
||||
* @brief Default Address
|
||||
*
|
||||
* I2C Address depends on the state of ADR0 and ADR1 Pins
|
||||
* For more information, please refer to section 7.3.6.2 of TMP007 datasheet (SBOS685B).
|
||||
* 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.
|
||||
*/
|
||||
#ifndef CONFIG_TMP00X_I2C_ADDRESS
|
||||
#define CONFIG_TMP00X_I2C_ADDRESS (0x40)
|
||||
@ -110,7 +112,23 @@ extern "C"
|
||||
|
||||
/**
|
||||
* @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
|
||||
#define CONFIG_TMP00X_CONVERSION_TIME (1E6)
|
||||
#endif
|
||||
@ -130,8 +148,8 @@ extern "C"
|
||||
/**
|
||||
* @brief Default raw value mode
|
||||
*
|
||||
* Set this to 1 to return raw adc readings otherwise
|
||||
* measurements will be converted to Celsius.
|
||||
* Set this to 1 to return raw adc readings otherwise measurements will be
|
||||
* converted to Celsius.
|
||||
*/
|
||||
#ifdef DOXYGEN
|
||||
#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 "byteorder.h"
|
||||
#include "kernel_defines.h"
|
||||
|
||||
#if IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)
|
||||
#include "xtimer.h"
|
||||
#endif
|
||||
|
||||
|
||||
#define ENABLE_DEBUG (0)
|
||||
#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)
|
||||
{
|
||||
|
||||
uint16_t drdy;
|
||||
#if (!IS_ACTIVE(CONFIG_TMP00X_USE_RAW_VALUES))
|
||||
int16_t rawtemp, rawvolt;
|
||||
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)) {
|
||||
return TMP00X_ERROR;
|
||||
}
|
||||
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) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!drdy) {
|
||||
#if IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)
|
||||
if (IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)) {
|
||||
tmp00x_set_standby(dev);
|
||||
#endif
|
||||
}
|
||||
return -TMP00X_ERROR;
|
||||
}
|
||||
#else
|
||||
}
|
||||
else {
|
||||
if ((ret = tmp00x_read(dev, &rawvolt, &rawtemp, &drdy)) < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!drdy) {
|
||||
#if IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)
|
||||
if (IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)) {
|
||||
tmp00x_set_standby(dev);
|
||||
#endif
|
||||
}
|
||||
return -TMP00X_ERROR;
|
||||
}
|
||||
|
||||
tmp00x_convert(rawvolt, rawtemp, &tamb, &tobj);
|
||||
*ta = (int16_t)(tamb*100);
|
||||
*to = (int16_t)(tobj*100);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (IS_ACTIVE(CONFIG_TMP00X_USE_LOW_POWER)) {
|
||||
if (tmp00x_set_standby(dev)) {
|
||||
return -TMP00X_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
return TMP00X_OK;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user