|  | /* | 
|  | * Copyright (c) 2016 Firmwave | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  |  | 
|  | #include <zephyr/kernel.h> | 
|  | #include <zephyr/device.h> | 
|  | #include <zephyr/drivers/sensor.h> | 
|  | #include <zephyr/sys/printk.h> | 
|  | #include <zephyr/sys/__assert.h> | 
|  |  | 
|  | static void do_main(const 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(K_MSEC(1000)); | 
|  | } | 
|  | } | 
|  |  | 
|  | int main(void) | 
|  | { | 
|  | const struct device *const dev = DEVICE_DT_GET_ANY(ti_tmp112); | 
|  |  | 
|  | __ASSERT(dev != NULL, "Failed to get device binding"); | 
|  | __ASSERT(device_is_ready(dev), "Device %s is not ready", dev->name); | 
|  | printk("device is %p, name is %s\n", dev, dev->name); | 
|  |  | 
|  | do_main(dev); | 
|  | return 0; | 
|  | } |