zephyr/samples/sensor/tmp112/src/main.c
Armando Visconti 87d6c50e47 sensors: Add separation between ambient and die temperature
Some device include a temperature sensor, usually used as a
companion for helping in drift compensation, that measure the
die temperature. This temperature IS NOT related to the the
ambient temperature, hence a clean separation between the two
is required.

This commit introduces a clean separation between the two
types of temperature leaving the old deprecated definition
still there.

The list of current drivers that read the die (and not the ambient)
temperature is the following:

 - adxl362
 - bma280
 - bmg160
 - bmi160
 - fxos8700
 - lis3mdl
 - lsm6ds0
 - lsm6dsl
 - lsm9ds0
 - mpu6050

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2018-04-03 22:29:11 -04:00

67 lines
1.3 KiB
C

/*
* Copyright (c) 2016 Firmwave
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr.h>
#include <device.h>
#include <sensor.h>
#include <misc/printk.h>
#include <misc/__assert.h>
static void do_main(struct device *dev)
{
int ret;
struct sensor_value temp_value;
struct sensor_value attr;
attr.val1 = 150;
attr.val2 = 0;
ret = sensor_attr_set(dev, SENSOR_CHAN_AMBIENT_TEMP,
SENSOR_ATTR_FULL_SCALE, &attr);
if (ret) {
printk("sensor_attr_set failed ret %d\n", ret);
return;
}
attr.val1 = 8;
attr.val2 = 0;
ret = sensor_attr_set(dev, SENSOR_CHAN_AMBIENT_TEMP,
SENSOR_ATTR_SAMPLING_FREQUENCY, &attr);
if (ret) {
printk("sensor_attr_set failed ret %d\n", ret);
return;
}
while (1) {
ret = sensor_sample_fetch(dev);
if (ret) {
printk("sensor_sample_fetch failed ret %d\n", ret);
return;
}
ret = sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp_value);
if (ret) {
printk("sensor_channel_get failed ret %d\n", ret);
return;
}
printk("temp is %d (%d micro)\n", temp_value.val1,
temp_value.val2);
k_sleep(1000);
}
}
void main(void)
{
struct device *dev;
dev = device_get_binding("TMP112");
__ASSERT(dev != NULL, "Failed to get device binding");
printk("device is %p, name is %s\n", dev, dev->config->name);
do_main(dev);
}