1 /*
2  * Copyright (c) 2025 Microchip Technology Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <stdio.h>
8 
9 #include <zephyr/device.h>
10 #include <zephyr/devicetree.h>
11 #include <zephyr/drivers/gpio.h>
12 #include <zephyr/drivers/sensor/mtch9010.h>
13 #include <zephyr/kernel.h>
14 
main(void)15 int main(void)
16 {
17 	const struct device *my_sensor = DEVICE_DT_GET(
18 		DT_COMPAT_GET_ANY_STATUS_OKAY(microchip_mtch9010));
19 
20 	if (!device_is_ready(my_sensor)) {
21 		printk("MTCH9010 is NOT Ready\n");
22 		return 0;
23 	}
24 
25 	struct sensor_value val;
26 
27 	while (1) {
28 		sensor_sample_fetch(my_sensor);
29 
30 		if (sensor_channel_get(my_sensor, SENSOR_CHAN_MTCH9010_SW_OUT_STATE, &val) < 0) {
31 			printk("Unable to fetch SENSOR_CHAN_MTCH9010_SW_OUT_STATE\r\n");
32 		} else {
33 			printk("SENSOR_CHAN_MTCH9010_SW_OUT_STATE = %d\r\n", val.val1);
34 		}
35 
36 		if (sensor_channel_get(my_sensor, SENSOR_CHAN_MTCH9010_OUT_STATE, &val) < 0) {
37 			printk("Unable to fetch SENSOR_CHAN_MTCH9010_OUT_STATE\r\n");
38 		} else {
39 			printk("SENSOR_CHAN_MTCH9010_OUT_STATE = %d\r\n", val.val1);
40 		}
41 
42 		if (sensor_channel_get(my_sensor, SENSOR_CHAN_MTCH9010_REFERENCE_VALUE, &val) < 0) {
43 			printk("Unable to fetch SENSOR_CHAN_MTCH9010_REFERENCE_VALUE\r\n");
44 		} else {
45 			printk("SENSOR_CHAN_MTCH9010_REFERENCE_VALUE = %d\r\n", val.val1);
46 		}
47 
48 		if (sensor_channel_get(my_sensor, SENSOR_CHAN_MTCH9010_THRESHOLD_VALUE, &val) < 0) {
49 			printk("Unable to fetch SENSOR_CHAN_MTCH9010_THRESHOLD_VALUE\r\n");
50 		} else {
51 			printk("SENSOR_CHAN_MTCH9010_THRESHOLD_VALUE = %d\r\n", val.val1);
52 		}
53 
54 		if (sensor_channel_get(my_sensor, SENSOR_CHAN_MTCH9010_MEAS_RESULT, &val) < 0) {
55 			printk("Unable to fetch SENSOR_CHAN_MTCH9010_MEAS_RESULT\r\n");
56 		} else {
57 			printk("SENSOR_CHAN_MTCH9010_MEAS_RESULT = %d\r\n", val.val1);
58 		}
59 
60 		if (sensor_channel_get(my_sensor, SENSOR_CHAN_MTCH9010_MEAS_DELTA, &val) < 0) {
61 			printk("Unable to fetch SENSOR_CHAN_MTCH9010_MEAS_DELTA\r\n");
62 		} else {
63 			printk("SENSOR_CHAN_MTCH9010_MEAS_DELTA = %d\r\n", val.val1);
64 		}
65 
66 		if (sensor_channel_get(my_sensor, SENSOR_CHAN_MTCH9010_HEARTBEAT_ERROR_STATE,
67 				       &val) < 0) {
68 			printk("Unable to fetch SENSOR_CHAN_MTCH9010_HEARTBEAT_ERROR_STATE\r\n");
69 		} else {
70 			printk("SENSOR_CHAN_MTCH9010_HEARTBEAT_ERROR_STATE = %d\r\n", val.val1);
71 		}
72 
73 		printk("\n");
74 		k_sleep(K_MSEC(1000));
75 	}
76 
77 	return 0;
78 }
79