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:
parent
6255bf1ef4
commit
a329a0c09f
3 changed files with 23 additions and 1 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue