Loading...
Searching...
No Matches
vl6180x_params.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021 Gunar Schorcht
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
15
16#include "board.h"
17#include "saul_reg.h"
18#include "vl6180x.h"
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
28#ifndef VL6180X_PARAM_DEV
30#define VL6180X_PARAM_DEV I2C_DEV(0)
31#endif
32
33#ifndef VL6180X_PARAM_ADDR
35#define VL6180X_PARAM_ADDR (VL6180X_I2C_ADDR)
36#endif
37
38#ifndef VL6180X_PARAM_INT_PIN
40#define VL6180X_PARAM_INT_PIN (GPIO_PIN(0, 1))
41#endif
42
43#ifndef VL6180X_PARAM_SHUTDOWN_PIN
45#define VL6180X_PARAM_SHUTDOWN_PIN (GPIO_PIN(0, 2))
46#endif
48
53#if !DOXYGEN
54/* Mapping of Kconfig defines to the respective driver enumeration values */
55
56#ifdef CONFIG_VL6180X_ALS_GAIN_1
57#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_1)
58#elif CONFIG_VL6180X_ALS_GAIN_1_25
59#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_1_25)
60#elif CONFIG_VL6180X_ALS_GAIN_1_67
61#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_1_67)
62#elif CONFIG_VL6180X_ALS_GAIN_2_5
63#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_2_5)
64#elif CONFIG_VL6180X_ALS_GAIN_5
65#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_5)
66#elif CONFIG_VL6180X_ALS_GAIN_10
67#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_10)
68#elif CONFIG_VL6180X_ALS_GAIN_20
69#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_20)
70#elif CONFIG_VL6180X_ALS_GAIN_40
71#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_40)
72#endif
73
74#ifdef CONFIG_VL6180X_RNG_INT_DRDY
75#define CONFIG_VL6180X_RNG_INT (VL6180X_INT_DRDY)
76#elif CONFIG_VL6180X_RNG_INT_LOW
77#define CONFIG_VL6180X_RNG_INT (VL6180X_INT_LOW)
78#elif CONFIG_VL6180X_RNG_INT_HIGH
79#define CONFIG_VL6180X_RNG_INT (VL6180X_INT_HIGH)
80#elif CONFIG_VL6180X_RNG_INT_OUT
81#define CONFIG_VL6180X_RNG_INT (VL6180X_INT_OUT)
82#endif
83
84#ifdef CONFIG_VL6180X_ALS_INT_DRDY
85#define CONFIG_VL6180X_ALS_INT (VL6180X_INT_DRDY)
86#elif CONFIG_VL6180X_ALS_INT_LOW
87#define CONFIG_VL6180X_ALS_INT (VL6180X_INT_LOW)
88#elif CONFIG_VL6180X_ALS_INT_HIGH
89#define CONFIG_VL6180X_ALS_INT (VL6180X_INT_HIGH)
90#elif CONFIG_VL6180X_ALS_INT_OUT
91#define CONFIG_VL6180X_ALS_INT (VL6180X_INT_OUT)
92#endif
93
94#endif /* !DOXYGEN */
95
96#ifndef CONFIG_VL6180X_MEAS_PERIOD
98#define CONFIG_VL6180X_MEAS_PERIOD (20)
99#endif
100
101#ifndef CONFIG_VL6180X_RNG_MAX_TIME
103#define CONFIG_VL6180X_RNG_MAX_TIME (50)
104#endif
105
106#ifndef CONFIG_VL6180X_RNG_INT
108#define CONFIG_VL6180X_RNG_INT (VL6180X_INT_DRDY)
109#endif
110
111#ifndef CONFIG_VL6180X_RNG_THRESH_LOW
113#define CONFIG_VL6180X_RNG_THRESH_LOW (20)
114#endif
115
116#ifndef CONFIG_VL6180X_RNG_THRESH_HIGH
118#define CONFIG_VL6180X_RNG_THRESH_HIGH (90)
119#endif
120
121#ifndef CONFIG_VL6180X_ALS_INT_TIME
123#define CONFIG_VL6180X_ALS_INT_TIME (100)
124#endif
125
126#ifndef CONFIG_VL6180X_ALS_GAIN
128#define CONFIG_VL6180X_ALS_GAIN (VL6180X_ALS_GAIN_1)
129#endif
130
131#ifndef CONFIG_VL6180X_ALS_LUX_RES
133#define CONFIG_VL6180X_ALS_LUX_RES 320
134#endif
135
136#ifndef CONFIG_VL6180X_ALS_INT
138#define CONFIG_VL6180X_ALS_INT (VL6180X_INT_DRDY)
139#endif
140
141#ifndef CONFIG_VL6180X_ALS_THRESH_LOW
143#define CONFIG_VL6180X_ALS_THRESH_LOW (50)
144#endif
145
146#ifndef CONFIG_VL6180X_ALS_THRESH_HIGH
148#define CONFIG_VL6180X_ALS_THRESH_HIGH (2000)
149#endif
150
151#if IS_USED(MODULE_VL6180X_RNG) || DOXYGEN
153#define VL6180X_PARAM_RANGE .rng_max_time = CONFIG_VL6180X_RNG_MAX_TIME,
154#else
155#define VL6180X_PARAM_RANGE
156#endif
157
158#if IS_USED(MODULE_VL6180X_ALS) || DOXYGEN
160#define VL6180X_PARAM_ALS .als_int_time = CONFIG_VL6180X_ALS_INT_TIME, \
161 .als_gain = CONFIG_VL6180X_ALS_GAIN, \
162 .als_lux_res = CONFIG_VL6180X_ALS_LUX_RES,
163#else
164#define VL6180X_PARAM_ALS
165#endif
166
167#if IS_USED(MODULE_VL6180X_SHUTDOWN) || DOXYGEN
169#define VL6180X_PARAM_SHUTDOWN .shutdown_pin = VL6180X_PARAM_SHUTDOWN_PIN,
170#else
171#define VL6180X_PARAM_SHUTDOWN
172#endif
173
174#if IS_USED(MODULE_VL6180X_IRQ) || DOXYGEN
176#define VL6180X_PARAM_INT .int_pin = VL6180X_PARAM_INT_PIN,
177
178#if IS_USED(MODULE_VL6180X_RNG) || DOXYGEN
180#define VL6180X_PARAM_INT_RNG_CFG .int_cfg.rng_int = CONFIG_VL6180X_RNG_INT, \
181 .int_thresh.rng_low = CONFIG_VL6180X_RNG_THRESH_LOW, \
182 .int_thresh.rng_high = CONFIG_VL6180X_RNG_THRESH_HIGH,
183#else /* IS_USED(MODULE_VL6180X_RNG) || DOXYGEN */
184#define VL6180X_PARAM_INT_RNG_CFG
185#endif /* IS_USED(MODULE_VL6180X_RNG) || DOXYGEN */
186
187#if IS_USED(MODULE_VL6180X_ALS) || DOXYGEN
189#define VL6180X_PARAM_INT_ALS_CFG .int_cfg.als_int = CONFIG_VL6180X_ALS_INT, \
190 .int_thresh.als_low = CONFIG_VL6180X_ALS_THRESH_LOW, \
191 .int_thresh.als_high = CONFIG_VL6180X_ALS_THRESH_HIGH,
192#else /* IS_USED(MODULE_VL6180X_ALS) || DOXYGEN */
193#define VL6180X_PARAM_INT_ALS_CFG
194#endif /* IS_USED(MODULE_VL6180X_ALS) || DOXYGEN */
195
196#else /* IS_USED(MODULE_VL6180X_IRQ) || DOXYGEN */
197#define VL6180X_PARAM_INT
198#define VL6180X_PARAM_INT_RNG_CFG
199#define VL6180X_PARAM_INT_ALS_CFG
200#endif /* IS_USED(MODULE_VL6180X_IRQ) || DOXYGEN */
201
202#if !VL6180X_PARAMS || DOXYGEN
204#define VL6180X_PARAMS { \
205 .i2c_dev = VL6180X_PARAM_DEV, \
206 .i2c_addr = VL6180X_PARAM_ADDR, \
207 .period = CONFIG_VL6180X_MEAS_PERIOD, \
208 VL6180X_PARAM_RANGE \
209 VL6180X_PARAM_ALS \
210 VL6180X_PARAM_SHUTDOWN \
211 VL6180X_PARAM_INT \
212 VL6180X_PARAM_INT_RNG_CFG \
213 VL6180X_PARAM_INT_ALS_CFG \
214 }
215#endif /* !VL6180X_PARAMS */
216
217#if !defined(VL6180X_SAUL_INFO) || DOXYGEN
219#define VL6180X_SAUL_INFO { .name = "vl6180x" }
220#endif
222
227{
229};
230
238
239#ifdef __cplusplus
240}
241#endif
242
SAUL registry interface definition.
Additional data to collect for each entry.
Definition saul_reg.h:48
VL6180X device configuration.
Definition vl6180x.h:549
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.