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