1 /*
2  * Copyright (c) 2017 STMicroelectronics
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/kernel.h>
8 #include <zephyr/device.h>
9 #include <zephyr/drivers/sensor.h>
10 #include <zephyr/sys/printk.h>
11 #include <zephyr/drivers/sensor/vl53l0x.h>
12 
main(void)13 int main(void)
14 {
15 	const struct device *const dev = DEVICE_DT_GET_ONE(st_vl53l0x);
16 	struct sensor_value value;
17 	int ret;
18 
19 	if (!device_is_ready(dev)) {
20 		printk("sensor: device not ready.\n");
21 		return 0;
22 	}
23 
24 	while (1) {
25 		ret = sensor_sample_fetch(dev);
26 		if (ret) {
27 			printk("sensor_sample_fetch failed ret %d\n", ret);
28 			return 0;
29 		}
30 
31 		ret = sensor_channel_get(dev, SENSOR_CHAN_PROX, &value);
32 		printk("prox is %d\n", value.val1);
33 
34 		ret = sensor_channel_get(dev, SENSOR_CHAN_DISTANCE, &value);
35 		printk("distance is %.3lld mm\n", sensor_value_to_milli(&value));
36 
37 		ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_RANGE_DMAX, &value);
38 		printk("Max distance is %.3lld mm\n", sensor_value_to_milli(&value));
39 
40 		ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_SIGNAL_RATE_RTN_CPS, &value);
41 		printk("Signal rate is %d Cps\n", value.val1);
42 
43 		ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_AMBIENT_RATE_RTN_CPS, &value);
44 		printk("Ambient rate is %d Cps\n", value.val1);
45 
46 		ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_EFFECTIVE_SPAD_RTN_COUNT, &value);
47 		printk("SPADs used: %d\n", value.val1);
48 
49 		ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_RANGE_STATUS, &value);
50 		if (value.val1 == VL53L0X_RANGE_STATUS_RANGE_VALID) {
51 			printk("Status: OK\n");
52 		} else {
53 			printk("Status: Error code %d\n", value.val1);
54 		}
55 
56 		printk("\n");
57 		k_sleep(K_MSEC(5000));
58 	}
59 	return 0;
60 }
61