drivers: sensor: tmp116: Add ability to set operating mode of TMP116/7

Adds support for setting the operating mode of the TMP116/7 sensor to
either shutdown, continuous conversion or one-shot mode.

Signed-off-by: Ian Morris <ian.d.morris@outlook.com>
This commit is contained in:
Ian Morris 2023-09-29 13:20:48 -07:00 committed by Anas Nashif
commit a329a0c09f
3 changed files with 23 additions and 1 deletions

View file

@ -255,7 +255,7 @@ static int tmp116_attr_set(const struct device *dev,
return -ENOTSUP;
}
switch (attr) {
switch ((int)attr) {
case SENSOR_ATTR_OFFSET:
if (drv_data->id != TMP117_DEVICE_ID) {
LOG_ERR("%s: Offset is only supported by TMP117",
@ -293,6 +293,14 @@ static int tmp116_attr_set(const struct device *dev,
return -EINVAL;
}
return tmp116_write_config(dev, TMP116_CFGR_AVG, avg);
case SENSOR_ATTR_TMP116_SHUTDOWN_MODE:
return tmp116_write_config(dev, TMP116_CFGR_MODE, TMP116_MODE_SHUTDOWN);
case SENSOR_ATTR_TMP116_CONTINUOUS_CONVERSION_MODE:
return tmp116_write_config(dev, TMP116_CFGR_MODE, TMP116_MODE_CONTINUOUS);
case SENSOR_ATTR_TMP116_ONE_SHOT_MODE:
return tmp116_write_config(dev, TMP116_CFGR_MODE, TMP116_MODE_ONE_SHOT);
default:
return -ENOTSUP;

View file

@ -26,6 +26,7 @@
#define TMP117_DEVICE_ID 0x0117
#define TMP116_CFGR_AVG (BIT(5) | BIT(6))
#define TMP116_CFGR_MODE (BIT(10) | BIT(11))
#define TMP116_CFGR_DATA_READY BIT(13)
#define TMP116_EEPROM_UL_UNLOCK BIT(15)
#define TMP116_EEPROM_UL_BUSY BIT(14)
@ -34,6 +35,9 @@
#define TMP116_AVG_8_SAMPLES BIT(5)
#define TMP116_AVG_32_SAMPLES BIT(6)
#define TMP116_AVG_64_SAMPLES (BIT(5) | BIT(6))
#define TMP116_MODE_CONTINUOUS 0
#define TMP116_MODE_SHUTDOWN BIT(10)
#define TMP116_MODE_ONE_SHOT (BIT(10) | BIT(11))
struct tmp116_data {
uint16_t sample;

View file

@ -8,8 +8,18 @@
#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_TMP116_H_
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
#include <sys/types.h>
enum sensor_attribute_tmp_116 {
/** Turn on power saving/one shot mode */
SENSOR_ATTR_TMP116_ONE_SHOT_MODE = SENSOR_ATTR_PRIV_START,
/** Shutdown the sensor */
SENSOR_ATTR_TMP116_SHUTDOWN_MODE,
/** Turn on continuous conversion */
SENSOR_ATTR_TMP116_CONTINUOUS_CONVERSION_MODE,
};
#define EEPROM_TMP116_SIZE (4 * sizeof(uint16_t))
int tmp116_eeprom_read(const struct device *dev, off_t offset, void *data,