1 /*
2  * Copyright (c) 2023 Kurtis Dinelle
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 /**
8  * @file
9  * @brief Extended public API for AMS's TSL2591 ambient light sensor
10  *
11  * This exposes attributes for the TSL2591 which can be used for
12  * setting the on-chip gain, integration time, and persist filter parameters.
13  */
14 
15 #ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_TSL2591_H_
16 #define ZEPHYR_INCLUDE_DRIVERS_SENSOR_TSL2591_H_
17 
18 #include <zephyr/drivers/sensor.h>
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 enum sensor_attribute_tsl2591 {
25 	/* Sensor ADC Gain Mode
26 	 * Rather than set this value directly, can only be set to operate in one of four modes:
27 	 *
28 	 * TSL2591_SENSOR_GAIN_LOW
29 	 * TSL2591_SENSOR_GAIN_MED
30 	 * TSL2591_SENSOR_GAIN_HIGH
31 	 * TSL2591_SENSOR_GAIN_MAX
32 	 *
33 	 * See datasheet for actual typical gain scales these modes correspond to.
34 	 */
35 	SENSOR_ATTR_GAIN_MODE = SENSOR_ATTR_PRIV_START + 1,
36 
37 	/* Sensor ADC Integration Time (in ms)
38 	 * Can only be set to one of six values:
39 	 *
40 	 * 100, 200, 300, 400, 500, or 600
41 	 */
42 	SENSOR_ATTR_INTEGRATION_TIME,
43 
44 	/* Sensor ALS Interrupt Persist Filter
45 	 * Represents the number of consecutive sensor readings outside of a set threshold
46 	 * before triggering an interrupt. Can only be set to one of sixteen values:
47 	 *
48 	 * 0, 1, 2, 3, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, or 60
49 	 *
50 	 * Setting this to 0 causes an interrupt to generate every ALS cycle,
51 	 * regardless of threshold.
52 	 * Setting this to 1 is equivalent to the no-persist interrupt mode.
53 	 */
54 	SENSOR_ATTR_INT_PERSIST
55 };
56 
57 enum sensor_gain_tsl2591 {
58 	TSL2591_SENSOR_GAIN_LOW,
59 	TSL2591_SENSOR_GAIN_MED,
60 	TSL2591_SENSOR_GAIN_HIGH,
61 	TSL2591_SENSOR_GAIN_MAX
62 };
63 
64 #ifdef __cplusplus
65 }
66 #endif
67 
68 #endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_TSL2591_H_ */
69