Commit a329a0c0 authored by Ian Morris's avatar Ian Morris Committed by Anas Nashif
Browse files

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: default avatarIan Morris <ian.d.morris@outlook.com>
parent 6255bf1e
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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;
+4 −0
Original line number Diff line number Diff line
@@ -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;
+10 −0
Original line number Diff line number Diff line
@@ -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,