Loading...
Searching...
No Matches
l3gxxxx_params.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 Gunar Schorcht
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
15
16#include "board.h"
17#include "l3gxxxx.h"
18#include "saul_reg.h"
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
28#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
29
30#ifndef L3GXXXX_I2C_DEV
32#define L3GXXXX_I2C_DEV (I2C_DEV(0))
33#endif
34
35#ifndef L3GXXXX_I2C_ADDR
37#define L3GXXXX_I2C_ADDR (L3GXXXX_I2C_ADDR_2)
38#endif
39
40#ifndef L3GXXXX_I2C_IF_PARAMS
42#define L3GXXXX_I2C_IF_PARAMS .if_params.type = L3GXXXX_I2C, \
43 .if_params.i2c.dev = L3GXXXX_I2C_DEV, \
44 .if_params.i2c.addr = L3GXXXX_I2C_ADDR,
45#endif
46
47#endif /* MODULE_L3GXXXX_I2C || DOXYGEN */
48
49#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
50
51#ifndef L3GXXXX_SPI_DEV
53#define L3GXXXX_SPI_DEV SPI_DEV(0)
54#endif
55
56#ifndef L3GXXXX_SPI_CLK
58#define L3GXXXX_SPI_CLK (SPI_CLK_1MHZ)
59#endif
60
61#ifndef L3GXXXX_SPI_CS
63#define L3GXXXX_SPI_CS (GPIO_PIN(0, 0))
64#endif
65
66#ifndef L3GXXXX_SPI_IF_PARAMS
68#define L3GXXXX_SPI_IF_PARAMS .if_params.type = L3GXXXX_SPI, \
69 .if_params.spi.dev = L3GXXXX_SPI_DEV, \
70 .if_params.spi.clk = L3GXXXX_SPI_CLK, \
71 .if_params.spi.cs = L3GXXXX_SPI_CS,
72#endif
73
74#endif /* MODULE_L3GXXXX_SPI || DOXYGEN */
75
76#ifndef L3GXXXX_INT1_PIN
78#define L3GXXXX_INT1_PIN (GPIO_PIN(0, 1))
79#endif
80
81#ifndef L3GXXXX_INT2_PIN
83#define L3GXXXX_INT2_PIN (GPIO_PIN(0, 2))
84#endif
85
87
92#if !DOXYGEN
93/* Mapping of Kconfig defines to the respective driver enumeration values */
94
95#ifdef CONFIG_L3GXXXX_ODR_100_12
96#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_100_12)
97#elif CONFIG_L3GXXXX_ODR_100_25
98#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_100_25)
99#elif CONFIG_L3GXXXX_ODR_200_12
100#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_200_12)
101#elif CONFIG_L3GXXXX_ODR_200_25
102#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_200_25)
103#elif CONFIG_L3GXXXX_ODR_200_50
104#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_200_50)
105#elif CONFIG_L3GXXXX_ODR_200_70
106#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_200_70)
107#elif CONFIG_L3GXXXX_ODR_400_20
108#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_400_20)
109#elif CONFIG_L3GXXXX_ODR_400_25
110#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_400_25)
111#elif CONFIG_L3GXXXX_ODR_400_50
112#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_400_50)
113#elif CONFIG_L3GXXXX_ODR_400_110
114#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_400_110)
115#elif CONFIG_L3GXXXX_ODR_800_30
116#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_800_30)
117#elif CONFIG_L3GXXXX_ODR_800_35
118#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_800_35)
119#elif CONFIG_L3GXXXX_ODR_800_50
120#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_800_50)
121#elif CONFIG_L3GXXXX_ODR_800_100
122#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_800_100)
123#elif CONFIG_L3GXXXX_ODR_12
124#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_12)
125#elif CONFIG_L3GXXXX_ODR_25
126#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_25)
127#elif CONFIG_L3GXXXX_ODR_50
128#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_50)
129#endif
130
131#ifdef CONFIG_L3GXXXX_SCALE_245_DPS
132#define CONFIG_L3GXXXX_SCALE (L3GXXXX_SCALE_245_DPS)
133#elif CONFIG_L3GXXXX_SCALE_500_DPS
134#define CONFIG_L3GXXXX_SCALE (L3GXXXX_SCALE_500_DPS)
135#elif CONFIG_L3GXXXX_SCALE_2000_DPS
136#define CONFIG_L3GXXXX_SCALE (L3GXXXX_SCALE_2000_DPS)
137#endif
138
139#ifdef CONFIG_L3GXXXX_NO_FILTER
140#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_NO_FILTER)
141#elif CONFIG_L3GXXXX_HPF_ONLY
142#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_HPF_ONLY)
143#elif CONFIG_L3GXXXX_LPF2_ONLY
144#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_LPF2_ONLY)
145#elif CONFIG_L3GXXXX_HPF_AND_LPF2
146#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_HPF_AND_LPF2)
147#endif
148
149#ifdef CONFIG_L3GXXXX_HPF_NORMAL
150#define CONFIG_L3GXXXX_HPF_MODE (L3GXXXX_HPF_NORMAL)
151#elif CONFIG_L3GXXXX_HPF_REFERENCE
152#define CONFIG_L3GXXXX_HPF_MODE (L3GXXXX_HPF_REFERENCE)
153#elif CONFIG_L3GXXXX_HPF_AUTORESET
154#define CONFIG_L3GXXXX_HPF_MODE (L3GXXXX_HPF_AUTORESET)
155#endif
156
157#ifdef CONFIG_L3GXXXX_FIFO_MODE_BYPASS
158#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_BYPASS)
159#elif CONFIG_L3GXXXX_FIFO_MODE_FIFO
160#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_FIFO)
161#elif CONFIG_L3GXXXX_FIFO_MODE_STREAM
162#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_STREAM)
163#elif CONFIG_L3GXXXX_FIFO_MODE_STREAM_TO_FIFO
164#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_STREAM_TO_FIFO)
165#elif CONFIG_L3GXXXX_FIFO_MODE_BYPASS_TO_STREAM
166#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_BYPASS_TO_STREAM)
167#elif CONFIG_L3GXXXX_FIFO_MODE_DYNAMIC_STREAM
168#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_DYNAMIC_STREAM
169#elif CONFIG_L3GXXXX_FIFO_MODE_BYPASS_TO_FIFO
170#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_BYPASS_TO_FIFO)
171#endif
172
173#ifdef CONFIG_L3GXXXX_INT1_NO_FILTER
174#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_NO_FILTER)
175#elif CONFIG_L3GXXXX_INT1_HPF_ONLY
176#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_HPF_ONLY)
177#elif CONFIG_L3GXXXX_INT1_LPF2_ONLY
178#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_LPF2_ONLY)
179#elif CONFIG_L3GXXXX_INT1_HPF_AND_LPF2
180#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_HPF_AND_LPF2)
181#endif
182
183#endif /* !DOXYGEN */
184
185#ifndef CONFIG_L3GXXXX_ODR
187#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_100_25)
188#endif
189
190#ifndef CONFIG_L3GXXXX_SCALE
192#define CONFIG_L3GXXXX_SCALE (L3GXXXX_SCALE_245_DPS)
193#endif
194
195#ifndef CONFIG_L3GXXXX_FILTER_SEL
197#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_HPF_AND_LPF2)
198#endif
199
200#ifndef CONFIG_L3GXXXX_HPF_MODE
202#define CONFIG_L3GXXXX_HPF_MODE (L3GXXXX_HPF_NORMAL)
203#endif
204
205#ifndef CONFIG_L3GXXXX_HPF_CUTOFF
207#define CONFIG_L3GXXXX_HPF_CUTOFF (0)
208#endif
209
210#ifndef CONFIG_L3GXXXX_FIFO_MODE
212#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_FIFO)
213#endif
214
215#ifndef CONFIG_L3GXXXX_FIFO_WATERMARK
217#define CONFIG_L3GXXXX_FIFO_WATERMARK (23)
218#endif
219
220#ifndef CONFIG_L3GXXXX_INT1_X_THRESH
222#define CONFIG_L3GXXXX_INT1_X_THRESH (4012)
223#endif
224
225#ifndef CONFIG_L3GXXXX_INT1_X_GT_THRESH
227#define CONFIG_L3GXXXX_INT1_X_GT_THRESH (true)
228#endif
229
230#ifndef CONFIG_L3GXXXX_INT1_X_LT_THRESH
232#define CONFIG_L3GXXXX_INT1_X_LT_THRESH (false)
233#endif
234
235#ifndef CONFIG_L3GXXXX_INT1_Y_THRESH
237#define CONFIG_L3GXXXX_INT1_Y_THRESH (4012)
238#endif
239
240#ifndef CONFIG_L3GXXXX_INT1_Y_GT_THRESH
242#define CONFIG_L3GXXXX_INT1_Y_GT_THRESH (true)
243#endif
244
245#ifndef CONFIG_L3GXXXX_INT1_Y_LT_THRESH
247#define CONFIG_L3GXXXX_INT1_Y_LT_THRESH (false)
248#endif
249
250#ifndef CONFIG_L3GXXXX_INT1_Z_THRESH
252#define CONFIG_L3GXXXX_INT1_Z_THRESH (4012)
253#endif
254
255#ifndef CONFIG_L3GXXXX_INT1_Z_GT_THRESH
257#define CONFIG_L3GXXXX_INT1_Z_GT_THRESH (true)
258#endif
259
260#ifndef CONFIG_L3GXXXX_INT1_Z_LT_THRESH
262#define CONFIG_L3GXXXX_INT1_Z_LT_THRESH (false)
263#endif
264
265#ifndef CONFIG_L3GXXXX_INT1_FILTER
267#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_HPF_AND_LPF2)
268#endif
269
270#ifndef CONFIG_L3GXXXX_INT1_AND
272#define CONFIG_L3GXXXX_INT1_AND (false)
273#endif
274
275#ifndef CONFIG_L3GXXXX_INT1_LATCH
277#define CONFIG_L3GXXXX_INT1_LATCH (true)
278#endif
279
280#if IS_USED(MODULE_L3GXXXX_IRQ_EVENT) || DOXYGEN
282#define L3GXXXX_INT1_PARAMS .int1_pin = L3GXXXX_INT1_PIN, \
283 .int1_cfg.x_high_enabled = CONFIG_L3GXXXX_INT1_X_GT_THRESH, \
284 .int1_cfg.y_high_enabled = CONFIG_L3GXXXX_INT1_Y_GT_THRESH, \
285 .int1_cfg.z_high_enabled = CONFIG_L3GXXXX_INT1_Z_GT_THRESH, \
286 .int1_cfg.x_low_enabled = CONFIG_L3GXXXX_INT1_X_LT_THRESH, \
287 .int1_cfg.y_low_enabled = CONFIG_L3GXXXX_INT1_Y_LT_THRESH, \
288 .int1_cfg.z_low_enabled = CONFIG_L3GXXXX_INT1_Z_LT_THRESH, \
289 .int1_cfg.x_threshold = CONFIG_L3GXXXX_INT1_X_THRESH, \
290 .int1_cfg.y_threshold = CONFIG_L3GXXXX_INT1_Y_THRESH, \
291 .int1_cfg.z_threshold = CONFIG_L3GXXXX_INT1_Z_THRESH, \
292 .int1_cfg.filter = CONFIG_L3GXXXX_INT1_FILTER, \
293 .int1_cfg.and_or = CONFIG_L3GXXXX_INT1_AND, \
294 .int1_cfg.latch = CONFIG_L3GXXXX_INT1_LATCH,
295#else
296#define L3GXXXX_INT1_PARAMS
297#endif
298
299#if IS_USED(MODULE_L3GXXXX_IRQ_DATA) || DOXYGEN
301#define L3GXXXX_INT2_PARAMS .int2_pin = L3GXXXX_INT2_PIN,
302#else
303#define L3GXXXX_INT2_PARAMS
304#endif
305
306#if IS_USED(MODULE_L3GXXXX_FIFO) || DOXYGEN
308#define L3GXXXX_FIFO_PARAMS .fifo_mode = CONFIG_L3GXXXX_FIFO_MODE, \
309 .fifo_watermark = CONFIG_L3GXXXX_FIFO_WATERMARK,
310#else
311#define L3GXXXX_FIFO_PARAMS
312#endif
313
314#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
315
316#ifndef L3GXXXX_I2C_PARAMS
318#define L3GXXXX_I2C_PARAMS { \
319 L3GXXXX_I2C_IF_PARAMS \
320 .odr = CONFIG_L3GXXXX_ODR, \
321 .scale = CONFIG_L3GXXXX_SCALE, \
322 .filter_sel = CONFIG_L3GXXXX_FILTER_SEL, \
323 .hpf_mode = CONFIG_L3GXXXX_HPF_MODE, \
324 .hpf_cutoff = CONFIG_L3GXXXX_HPF_CUTOFF, \
325 L3GXXXX_FIFO_PARAMS \
326 L3GXXXX_INT1_PARAMS \
327 L3GXXXX_INT2_PARAMS \
328 }
329#endif
330#endif /* MODULE_L3GXXXX_I2C || DOXYGEN */
331
332#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
333#ifndef L3GXXXX_SPI_PARAMS
335#define L3GXXXX_SPI_PARAMS { \
336 L3GXXXX_SPI_IF_PARAMS \
337 .odr = CONFIG_L3GXXXX_ODR, \
338 .scale = CONFIG_L3GXXXX_SCALE, \
339 .filter_sel = CONFIG_L3GXXXX_FILTER_SEL, \
340 .hpf_mode = CONFIG_L3GXXXX_HPF_MODE, \
341 .hpf_cutoff = CONFIG_L3GXXXX_HPF_CUTOFF, \
342 L3GXXXX_FIFO_PARAMS \
343 L3GXXXX_INT1_PARAMS \
344 L3GXXXX_INT2_PARAMS \
345 }
346#endif
347#endif /* MODULE_L3GXXXX_SPI || DOXYGEN */
348
349#ifndef L3GXXXX_SAUL_INFO
351#define L3GXXXX_SAUL_INFO { .name = "l3gxxxx" }
352#endif
354
359{
360#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
362#endif
363#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
365#endif
366};
367
375
376#ifdef __cplusplus
377}
378#endif
379
Device Driver for ST L3Gxxxx 3-axis gyroscope sensor family.
static const l3gxxxx_params_t l3gxxxx_params[]
Allocate some memory to store the actual configuration.
#define L3GXXXX_SAUL_INFO
Default SAUL device info.
static const saul_reg_info_t l3gxxxx_saul_info[]
Additional meta information to keep in the SAUL registry.
#define L3GXXXX_I2C_PARAMS
Default I2C device parameter set.
#define L3GXXXX_SPI_PARAMS
Default SPI device parameter set.
SAUL registry interface definition.
L3Gxxxx device initialization parameters.
Definition l3gxxxx.h:1429
Additional data to collect for each entry.
Definition saul_reg.h:48