Loading...
Searching...
No Matches
l3gxxxx_params.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018 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
18
19#include "board.h"
20#include "l3gxxxx.h"
21#include "saul_reg.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
31#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
32
33#ifndef L3GXXXX_I2C_DEV
35#define L3GXXXX_I2C_DEV (I2C_DEV(0))
36#endif
37
38#ifndef L3GXXXX_I2C_ADDR
40#define L3GXXXX_I2C_ADDR (L3GXXXX_I2C_ADDR_2)
41#endif
42
43#ifndef L3GXXXX_I2C_IF_PARAMS
45#define L3GXXXX_I2C_IF_PARAMS .if_params.type = L3GXXXX_I2C, \
46 .if_params.i2c.dev = L3GXXXX_I2C_DEV, \
47 .if_params.i2c.addr = L3GXXXX_I2C_ADDR,
48#endif
49
50#endif /* MODULE_L3GXXXX_I2C || DOXYGEN */
51
52#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
53
54#ifndef L3GXXXX_SPI_DEV
56#define L3GXXXX_SPI_DEV SPI_DEV(0)
57#endif
58
59#ifndef L3GXXXX_SPI_CLK
61#define L3GXXXX_SPI_CLK (SPI_CLK_1MHZ)
62#endif
63
64#ifndef L3GXXXX_SPI_CS
66#define L3GXXXX_SPI_CS (GPIO_PIN(0, 0))
67#endif
68
69#ifndef L3GXXXX_SPI_IF_PARAMS
71#define L3GXXXX_SPI_IF_PARAMS .if_params.type = L3GXXXX_SPI, \
72 .if_params.spi.dev = L3GXXXX_SPI_DEV, \
73 .if_params.spi.clk = L3GXXXX_SPI_CLK, \
74 .if_params.spi.cs = L3GXXXX_SPI_CS,
75#endif
76
77#endif /* MODULE_L3GXXXX_SPI || DOXYGEN */
78
79#ifndef L3GXXXX_INT1_PIN
81#define L3GXXXX_INT1_PIN (GPIO_PIN(0, 1))
82#endif
83
84#ifndef L3GXXXX_INT2_PIN
86#define L3GXXXX_INT2_PIN (GPIO_PIN(0, 2))
87#endif
88
90
95#if !DOXYGEN
96/* Mapping of Kconfig defines to the respective driver enumeration values */
97
98#ifdef CONFIG_L3GXXXX_ODR_100_12
99#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_100_12)
100#elif CONFIG_L3GXXXX_ODR_100_25
101#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_100_25)
102#elif CONFIG_L3GXXXX_ODR_200_12
103#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_200_12)
104#elif CONFIG_L3GXXXX_ODR_200_25
105#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_200_25)
106#elif CONFIG_L3GXXXX_ODR_200_50
107#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_200_50)
108#elif CONFIG_L3GXXXX_ODR_200_70
109#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_200_70)
110#elif CONFIG_L3GXXXX_ODR_400_20
111#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_400_20)
112#elif CONFIG_L3GXXXX_ODR_400_25
113#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_400_25)
114#elif CONFIG_L3GXXXX_ODR_400_50
115#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_400_50)
116#elif CONFIG_L3GXXXX_ODR_400_110
117#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_400_110)
118#elif CONFIG_L3GXXXX_ODR_800_30
119#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_800_30)
120#elif CONFIG_L3GXXXX_ODR_800_35
121#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_800_35)
122#elif CONFIG_L3GXXXX_ODR_800_50
123#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_800_50)
124#elif CONFIG_L3GXXXX_ODR_800_100
125#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_800_100)
126#elif CONFIG_L3GXXXX_ODR_12
127#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_12)
128#elif CONFIG_L3GXXXX_ODR_25
129#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_25)
130#elif CONFIG_L3GXXXX_ODR_50
131#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_50)
132#endif
133
134#ifdef CONFIG_L3GXXXX_SCALE_245_DPS
135#define CONFIG_L3GXXXX_SCALE (L3GXXXX_SCALE_245_DPS)
136#elif CONFIG_L3GXXXX_SCALE_500_DPS
137#define CONFIG_L3GXXXX_SCALE (L3GXXXX_SCALE_500_DPS)
138#elif CONFIG_L3GXXXX_SCALE_2000_DPS
139#define CONFIG_L3GXXXX_SCALE (L3GXXXX_SCALE_2000_DPS)
140#endif
141
142#ifdef CONFIG_L3GXXXX_NO_FILTER
143#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_NO_FILTER)
144#elif CONFIG_L3GXXXX_HPF_ONLY
145#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_HPF_ONLY)
146#elif CONFIG_L3GXXXX_LPF2_ONLY
147#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_LPF2_ONLY)
148#elif CONFIG_L3GXXXX_HPF_AND_LPF2
149#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_HPF_AND_LPF2)
150#endif
151
152#ifdef CONFIG_L3GXXXX_HPF_NORMAL
153#define CONFIG_L3GXXXX_HPF_MODE (L3GXXXX_HPF_NORMAL)
154#elif CONFIG_L3GXXXX_HPF_REFERENCE
155#define CONFIG_L3GXXXX_HPF_MODE (L3GXXXX_HPF_REFERENCE)
156#elif CONFIG_L3GXXXX_HPF_AUTORESET
157#define CONFIG_L3GXXXX_HPF_MODE (L3GXXXX_HPF_AUTORESET)
158#endif
159
160#ifdef CONFIG_L3GXXXX_FIFO_MODE_BYPASS
161#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_BYPASS)
162#elif CONFIG_L3GXXXX_FIFO_MODE_FIFO
163#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_FIFO)
164#elif CONFIG_L3GXXXX_FIFO_MODE_STREAM
165#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_STREAM)
166#elif CONFIG_L3GXXXX_FIFO_MODE_STREAM_TO_FIFO
167#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_STREAM_TO_FIFO)
168#elif CONFIG_L3GXXXX_FIFO_MODE_BYPASS_TO_STREAM
169#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_BYPASS_TO_STREAM)
170#elif CONFIG_L3GXXXX_FIFO_MODE_DYNAMIC_STREAM
171#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_DYNAMIC_STREAM
172#elif CONFIG_L3GXXXX_FIFO_MODE_BYPASS_TO_FIFO
173#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_BYPASS_TO_FIFO)
174#endif
175
176#ifdef CONFIG_L3GXXXX_INT1_NO_FILTER
177#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_NO_FILTER)
178#elif CONFIG_L3GXXXX_INT1_HPF_ONLY
179#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_HPF_ONLY)
180#elif CONFIG_L3GXXXX_INT1_LPF2_ONLY
181#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_LPF2_ONLY)
182#elif CONFIG_L3GXXXX_INT1_HPF_AND_LPF2
183#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_HPF_AND_LPF2)
184#endif
185
186#endif /* !DOXYGEN */
187
188#ifndef CONFIG_L3GXXXX_ODR
190#define CONFIG_L3GXXXX_ODR (L3GXXXX_ODR_100_25)
191#endif
192
193#ifndef CONFIG_L3GXXXX_SCALE
195#define CONFIG_L3GXXXX_SCALE (L3GXXXX_SCALE_245_DPS)
196#endif
197
198#ifndef CONFIG_L3GXXXX_FILTER_SEL
200#define CONFIG_L3GXXXX_FILTER_SEL (L3GXXXX_HPF_AND_LPF2)
201#endif
202
203#ifndef CONFIG_L3GXXXX_HPF_MODE
205#define CONFIG_L3GXXXX_HPF_MODE (L3GXXXX_HPF_NORMAL)
206#endif
207
208#ifndef CONFIG_L3GXXXX_HPF_CUTOFF
210#define CONFIG_L3GXXXX_HPF_CUTOFF (0)
211#endif
212
213#ifndef CONFIG_L3GXXXX_FIFO_MODE
215#define CONFIG_L3GXXXX_FIFO_MODE (L3GXXXX_FIFO)
216#endif
217
218#ifndef CONFIG_L3GXXXX_FIFO_WATERMARK
220#define CONFIG_L3GXXXX_FIFO_WATERMARK (23)
221#endif
222
223#ifndef CONFIG_L3GXXXX_INT1_X_THRESH
225#define CONFIG_L3GXXXX_INT1_X_THRESH (4012)
226#endif
227
228#ifndef CONFIG_L3GXXXX_INT1_X_GT_THRESH
230#define CONFIG_L3GXXXX_INT1_X_GT_THRESH (true)
231#endif
232
233#ifndef CONFIG_L3GXXXX_INT1_X_LT_THRESH
235#define CONFIG_L3GXXXX_INT1_X_LT_THRESH (false)
236#endif
237
238#ifndef CONFIG_L3GXXXX_INT1_Y_THRESH
240#define CONFIG_L3GXXXX_INT1_Y_THRESH (4012)
241#endif
242
243#ifndef CONFIG_L3GXXXX_INT1_Y_GT_THRESH
245#define CONFIG_L3GXXXX_INT1_Y_GT_THRESH (true)
246#endif
247
248#ifndef CONFIG_L3GXXXX_INT1_Y_LT_THRESH
250#define CONFIG_L3GXXXX_INT1_Y_LT_THRESH (false)
251#endif
252
253#ifndef CONFIG_L3GXXXX_INT1_Z_THRESH
255#define CONFIG_L3GXXXX_INT1_Z_THRESH (4012)
256#endif
257
258#ifndef CONFIG_L3GXXXX_INT1_Z_GT_THRESH
260#define CONFIG_L3GXXXX_INT1_Z_GT_THRESH (true)
261#endif
262
263#ifndef CONFIG_L3GXXXX_INT1_Z_LT_THRESH
265#define CONFIG_L3GXXXX_INT1_Z_LT_THRESH (false)
266#endif
267
268#ifndef CONFIG_L3GXXXX_INT1_FILTER
270#define CONFIG_L3GXXXX_INT1_FILTER (L3GXXXX_HPF_AND_LPF2)
271#endif
272
273#ifndef CONFIG_L3GXXXX_INT1_AND
275#define CONFIG_L3GXXXX_INT1_AND (false)
276#endif
277
278#ifndef CONFIG_L3GXXXX_INT1_LATCH
280#define CONFIG_L3GXXXX_INT1_LATCH (true)
281#endif
282
283#if IS_USED(MODULE_L3GXXXX_IRQ_EVENT) || DOXYGEN
285#define L3GXXXX_INT1_PARAMS .int1_pin = L3GXXXX_INT1_PIN, \
286 .int1_cfg.x_high_enabled = CONFIG_L3GXXXX_INT1_X_GT_THRESH, \
287 .int1_cfg.y_high_enabled = CONFIG_L3GXXXX_INT1_Y_GT_THRESH, \
288 .int1_cfg.z_high_enabled = CONFIG_L3GXXXX_INT1_Z_GT_THRESH, \
289 .int1_cfg.x_low_enabled = CONFIG_L3GXXXX_INT1_X_LT_THRESH, \
290 .int1_cfg.y_low_enabled = CONFIG_L3GXXXX_INT1_Y_LT_THRESH, \
291 .int1_cfg.z_low_enabled = CONFIG_L3GXXXX_INT1_Z_LT_THRESH, \
292 .int1_cfg.x_threshold = CONFIG_L3GXXXX_INT1_X_THRESH, \
293 .int1_cfg.y_threshold = CONFIG_L3GXXXX_INT1_Y_THRESH, \
294 .int1_cfg.z_threshold = CONFIG_L3GXXXX_INT1_Z_THRESH, \
295 .int1_cfg.filter = CONFIG_L3GXXXX_INT1_FILTER, \
296 .int1_cfg.and_or = CONFIG_L3GXXXX_INT1_AND, \
297 .int1_cfg.latch = CONFIG_L3GXXXX_INT1_LATCH,
298#else
299#define L3GXXXX_INT1_PARAMS
300#endif
301
302#if IS_USED(MODULE_L3GXXXX_IRQ_DATA) || DOXYGEN
304#define L3GXXXX_INT2_PARAMS .int2_pin = L3GXXXX_INT2_PIN,
305#else
306#define L3GXXXX_INT2_PARAMS
307#endif
308
309#if IS_USED(MODULE_L3GXXXX_FIFO) || DOXYGEN
311#define L3GXXXX_FIFO_PARAMS .fifo_mode = CONFIG_L3GXXXX_FIFO_MODE, \
312 .fifo_watermark = CONFIG_L3GXXXX_FIFO_WATERMARK,
313#else
314#define L3GXXXX_FIFO_PARAMS
315#endif
316
317#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
318
319#ifndef L3GXXXX_I2C_PARAMS
321#define L3GXXXX_I2C_PARAMS { \
322 L3GXXXX_I2C_IF_PARAMS \
323 .odr = CONFIG_L3GXXXX_ODR, \
324 .scale = CONFIG_L3GXXXX_SCALE, \
325 .filter_sel = CONFIG_L3GXXXX_FILTER_SEL, \
326 .hpf_mode = CONFIG_L3GXXXX_HPF_MODE, \
327 .hpf_cutoff = CONFIG_L3GXXXX_HPF_CUTOFF, \
328 L3GXXXX_FIFO_PARAMS \
329 L3GXXXX_INT1_PARAMS \
330 L3GXXXX_INT2_PARAMS \
331 }
332#endif
333#endif /* MODULE_L3GXXXX_I2C || DOXYGEN */
334
335#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
336#ifndef L3GXXXX_SPI_PARAMS
338#define L3GXXXX_SPI_PARAMS { \
339 L3GXXXX_SPI_IF_PARAMS \
340 .odr = CONFIG_L3GXXXX_ODR, \
341 .scale = CONFIG_L3GXXXX_SCALE, \
342 .filter_sel = CONFIG_L3GXXXX_FILTER_SEL, \
343 .hpf_mode = CONFIG_L3GXXXX_HPF_MODE, \
344 .hpf_cutoff = CONFIG_L3GXXXX_HPF_CUTOFF, \
345 L3GXXXX_FIFO_PARAMS \
346 L3GXXXX_INT1_PARAMS \
347 L3GXXXX_INT2_PARAMS \
348 }
349#endif
350#endif /* MODULE_L3GXXXX_SPI || DOXYGEN */
351
352#ifndef L3GXXXX_SAUL_INFO
354#define L3GXXXX_SAUL_INFO { .name = "l3gxxxx" }
355#endif
357
362{
363#if IS_USED(MODULE_L3GXXXX_I2C) || DOXYGEN
365#endif
366#if IS_USED(MODULE_L3GXXXX_SPI) || DOXYGEN
368#endif
369};
370
378
379#ifdef __cplusplus
380}
381#endif
382
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:1432
Additional data to collect for each entry.
Definition saul_reg.h:48