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>
67 lines
1.3 KiB
C
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);
|
|
}
|