vl6180x_params.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Gunar Schorcht
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
19 #include "board.h"
20 #include "saul_reg.h"
21 #include "vl6180x.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
31 #ifndef VL6180X_PARAM_DEV
33 #define VL6180X_PARAM_DEV I2C_DEV(0)
34 #endif
35 
36 #ifndef VL6180X_PARAM_ADDR
38 #define VL6180X_PARAM_ADDR (VL6180X_I2C_ADDR)
39 #endif
40 
41 #ifndef VL6180X_PARAM_INT_PIN
43 #define VL6180X_PARAM_INT_PIN (GPIO_PIN(0, 1))
44 #endif
45 
46 #ifndef VL6180X_PARAM_SHUTDOWN_PIN
48 #define VL6180X_PARAM_SHUTDOWN_PIN (GPIO_PIN(0, 2))
49 #endif
56 #if !DOXYGEN
57 /* Mapping of Kconfig defines to the respective driver enumeration values */
58 
59 #ifdef CONFIG_VL6180X_ALS_GAIN_1
60 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_1)
61 #elif CONFIG_VL6180X_ALS_GAIN_1_25
62 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_1_25)
63 #elif CONFIG_VL6180X_ALS_GAIN_1_67
64 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_1_67)
65 #elif CONFIG_VL6180X_ALS_GAIN_2_5
66 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_2_5)
67 #elif CONFIG_VL6180X_ALS_GAIN_5
68 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_5)
69 #elif CONFIG_VL6180X_ALS_GAIN_10
70 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_10)
71 #elif CONFIG_VL6180X_ALS_GAIN_20
72 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_20)
73 #elif CONFIG_VL6180X_ALS_GAIN_40
74 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_40)
75 #endif
76 
77 #ifdef CONFIG_VL6180X_RNG_INT_DRDY
78 #define CONFIG_VL6180X_RNG_INT (VL6180X_INT_DRDY)
79 #elif CONFIG_VL6180X_RNG_INT_LOW
80 #define CONFIG_VL6180X_RNG_INT (VL6180X_INT_LOW)
81 #elif CONFIG_VL6180X_RNG_INT_HIGH
82 #define CONFIG_VL6180X_RNG_INT (VL6180X_INT_HIGH)
83 #elif CONFIG_VL6180X_RNG_INT_OUT
84 #define CONFIG_VL6180X_RNG_INT (VL6180X_INT_OUT)
85 #endif
86 
87 #ifdef CONFIG_VL6180X_ALS_INT_DRDY
88 #define CONFIG_VL6180X_ALS_INT (VL6180X_INT_DRDY)
89 #elif CONFIG_VL6180X_ALS_INT_LOW
90 #define CONFIG_VL6180X_ALS_INT (VL6180X_INT_LOW)
91 #elif CONFIG_VL6180X_ALS_INT_HIGH
92 #define CONFIG_VL6180X_ALS_INT (VL6180X_INT_HIGH)
93 #elif CONFIG_VL6180X_ALS_INT_OUT
94 #define CONFIG_VL6180X_ALS_INT (VL6180X_INT_OUT)
95 #endif
96 
97 #endif /* !DOXYGEN */
98 
99 #ifndef CONFIG_VL6180X_MEAS_PERIOD
101 #define CONFIG_VL6180X_MEAS_PERIOD (20)
102 #endif
103 
104 #ifndef CONFIG_VL6180X_RNG_MAX_TIME
106 #define CONFIG_VL6180X_RNG_MAX_TIME (50)
107 #endif
108 
109 #ifndef CONFIG_VL6180X_RNG_INT
111 #define CONFIG_VL6180X_RNG_INT (VL6180X_INT_DRDY)
112 #endif
113 
114 #ifndef CONFIG_VL6180X_RNG_THRESH_LOW
116 #define CONFIG_VL6180X_RNG_THRESH_LOW (20)
117 #endif
118 
119 #ifndef CONFIG_VL6180X_RNG_THRESH_HIGH
121 #define CONFIG_VL6180X_RNG_THRESH_HIGH (90)
122 #endif
123 
124 #ifndef CONFIG_VL6180X_ALS_INT_TIME
126 #define CONFIG_VL6180X_ALS_INT_TIME (100)
127 #endif
128 
129 #ifndef CONFIG_VL6180X_ALS_GAIN
131 #define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_1)
132 #endif
133 
134 #ifndef CONFIG_VL6180X_ALS_LUX_RES
136 #define CONFIG_VL6180X_ALS_LUX_RES 320
137 #endif
138 
139 #ifndef CONFIG_VL6180X_ALS_INT
141 #define CONFIG_VL6180X_ALS_INT (VL6180X_INT_DRDY)
142 #endif
143 
144 #ifndef CONFIG_VL6180X_ALS_THRESH_LOW
146 #define CONFIG_VL6180X_ALS_THRESH_LOW (50)
147 #endif
148 
149 #ifndef CONFIG_VL6180X_ALS_THRESH_HIGH
151 #define CONFIG_VL6180X_ALS_THRESH_HIGH (2000)
152 #endif
153 
154 #if IS_USED(MODULE_VL6180X_RNG) || DOXYGEN
156 #define VL6180X_PARAM_RANGE .rng_max_time = CONFIG_VL6180X_RNG_MAX_TIME,
157 #else
158 #define VL6180X_PARAM_RANGE
159 #endif
160 
161 #if IS_USED(MODULE_VL6180X_ALS) || DOXYGEN
163 #define VL6180X_PARAM_ALS .als_int_time = CONFIG_VL6180X_ALS_INT_TIME, \
164  .als_gain = CONFIG_VL6180X_ALS_GAIN, \
165  .als_lux_res = CONFIG_VL6180X_ALS_LUX_RES,
166 #else
167 #define VL6180X_PARAM_ALS
168 #endif
169 
170 #if IS_USED(MODULE_VL6180X_SHUTDOWN) || DOXYGEN
172 #define VL6180X_PARAM_SHUTDOWN .shutdown_pin = VL6180X_PARAM_SHUTDOWN_PIN,
173 #else
174 #define VL6180X_PARAM_SHUTDOWN
175 #endif
176 
177 #if IS_USED(MODULE_VL6180X_IRQ) || DOXYGEN
179 #define VL6180X_PARAM_INT .int_pin = VL6180X_PARAM_INT_PIN,
180 
181 #if IS_USED(MODULE_VL6180X_RNG) || DOXYGEN
183 #define VL6180X_PARAM_INT_RNG_CFG .int_cfg.rng_int = CONFIG_VL6180X_RNG_INT, \
184  .int_thresh.rng_low = CONFIG_VL6180X_RNG_THRESH_LOW, \
185  .int_thresh.rng_high = CONFIG_VL6180X_RNG_THRESH_HIGH,
186 #else /* IS_USED(MODULE_VL6180X_RNG) || DOXYGEN */
187 #define VL6180X_PARAM_INT_RNG_CFG
188 #endif /* IS_USED(MODULE_VL6180X_RNG) || DOXYGEN */
189 
190 #if IS_USED(MODULE_VL6180X_ALS) || DOXYGEN
192 #define VL6180X_PARAM_INT_ALS_CFG .int_cfg.als_int = CONFIG_VL6180X_ALS_INT, \
193  .int_thresh.als_low = CONFIG_VL6180X_ALS_THRESH_LOW, \
194  .int_thresh.als_high = CONFIG_VL6180X_ALS_THRESH_HIGH,
195 #else /* IS_USED(MODULE_VL6180X_ALS) || DOXYGEN */
196 #define VL6180X_PARAM_INT_ALS_CFG
197 #endif /* IS_USED(MODULE_VL6180X_ALS) || DOXYGEN */
198 
199 #else /* IS_USED(MODULE_VL6180X_IRQ) || DOXYGEN */
200 #define VL6180X_PARAM_INT
201 #define VL6180X_PARAM_INT_RNG_CFG
202 #define VL6180X_PARAM_INT_ALS_CFG
203 #endif /* IS_USED(MODULE_VL6180X_IRQ) || DOXYGEN */
204 
205 #if !VL6180X_PARAMS || DOXYGEN
207 #define VL6180X_PARAMS { \
208  .i2c_dev = VL6180X_PARAM_DEV, \
209  .i2c_addr = VL6180X_PARAM_ADDR, \
210  .period = CONFIG_VL6180X_MEAS_PERIOD, \
211  VL6180X_PARAM_RANGE \
212  VL6180X_PARAM_ALS \
213  VL6180X_PARAM_SHUTDOWN \
214  VL6180X_PARAM_INT \
215  VL6180X_PARAM_INT_RNG_CFG \
216  VL6180X_PARAM_INT_ALS_CFG \
217  }
218 #endif /* !VL6180X_PARAMS */
219 
220 #if !defined(VL6180X_SAUL_INFO) || DOXYGEN
222 #define VL6180X_SAUL_INFO { .name = "vl6180x" }
223 #endif
230 {
232 };
233 
238 {
240 };
241 
242 #ifdef __cplusplus
243 }
244 #endif
245 
SAUL registry interface definition.
Additional data to collect for each entry.
Definition: saul_reg.h:48
VL6180X device configuration.
Definition: vl6180x.h:548
static const vl6180x_params_t vl6180x_params[]
Allocate some memory to store the actual configuration.
#define VL6180X_PARAMS
Default configuration parameter set.
#define VL6180X_SAUL_INFO
Default SAUL information.
static const saul_reg_info_t vl6180x_saul_info[]
Additional meta information to keep in the SAUL registry.