1 /*
2 * Copyright (c) 2021 Jimmy Johnson <catch22@fastmail.net>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7 #include <zephyr/drivers/sensor.h>
8 #include <zephyr/logging/log.h>
9 #include <zephyr/kernel.h>
10
11 #include "tmp108.h"
12
13 LOG_MODULE_DECLARE(TMP108, CONFIG_SENSOR_LOG_LEVEL);
14
tmp108_trigger_handle_alert(const struct device * gpio,struct gpio_callback * cb,gpio_port_pins_t pins)15 void tmp108_trigger_handle_alert(const struct device *gpio,
16 struct gpio_callback *cb,
17 gpio_port_pins_t pins)
18 {
19
20 struct tmp108_data *drv_data = CONTAINER_OF(cb,
21 struct tmp108_data,
22 temp_alert_gpio_cb);
23
24 /* Successful read, call set callbacks */
25 if (drv_data->temp_alert_handler) {
26 drv_data->temp_alert_handler(drv_data->tmp108_dev,
27 drv_data->temp_alert_trigger);
28 }
29 }
30
tmp_108_trigger_set(const struct device * dev,const struct sensor_trigger * trig,sensor_trigger_handler_t handler)31 int tmp_108_trigger_set(const struct device *dev,
32 const struct sensor_trigger *trig,
33 sensor_trigger_handler_t handler)
34 {
35 struct tmp108_data *drv_data = dev->data;
36
37 if (trig->type == SENSOR_TRIG_THRESHOLD) {
38 drv_data->temp_alert_handler = handler;
39 drv_data->temp_alert_trigger = trig;
40 return 0;
41 }
42
43 return -ENOTSUP;
44 }
45