Loading...
Searching...
No Matches
sx126x_params.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021 Inria
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
17
18#include "board.h"
19#include "sx126x.h"
20
21#if defined(MODULE_SHIELD_LLCC68) || defined(MODULE_SHIELD_SX1262)
22# include "arduino_iomap.h"
23#endif
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#if defined(MODULE_SHIELD_LLCC68) || defined(MODULE_SHIELD_SX1262)
30# define SX126X_PARAM_SPI ARDUINO_SPI_D11D12D13
31# define SX126X_PARAM_SPI_NSS ARDUINO_PIN_7
32# define SX126X_PARAM_RESET ARDUINO_PIN_A0
33# define SX126X_PARAM_BUSY ARDUINO_PIN_3
34# define SX126X_PARAM_DIO1 ARDUINO_PIN_5
35#endif
36
43#ifndef SX126X_PARAM_SPI
44# define SX126X_PARAM_SPI SPI_DEV(0)
45#endif
46
47#ifndef SX126X_PARAM_SPI_NSS
48# define SX126X_PARAM_SPI_NSS GPIO_PIN(0, 8) /* D7 */
49#endif
50
51#ifndef SX126X_PARAM_RESET
52# define SX126X_PARAM_RESET GPIO_PIN(0, 0) /* A0 */
53#endif
54
55#ifndef SX126X_PARAM_BUSY
56# define SX126X_PARAM_BUSY GPIO_PIN(1, 3) /* D3 */
57#endif
58
59#ifndef SX126X_PARAM_DIO1
60# define SX126X_PARAM_DIO1 GPIO_PIN(1, 4) /* D5 */
61#endif
62
63#if !defined(SX126X_PARAM_REGULATOR) || defined(DOXYGEN)
68# define SX126X_PARAM_REGULATOR SX126X_REG_MODE_DCDC
69#endif
70
71#ifndef SX126X_PARAM_SET_RF_MODE_CB
72# define SX126X_PARAM_SET_RF_MODE_CB NULL
73#endif
74
75#ifndef SX126X_PARAM_TX_PA_MODE
76# define SX126X_PARAM_TX_PA_MODE SX126X_RF_MODE_TX_LPA
77#endif
78
79#if !defined(SX126X_PARAM_DIO2_MODE) || defined(DOXYGEN)
84# define SX126X_PARAM_DIO2_MODE SX126X_DIO2_UNUSED
85#endif
86
87#if !defined(SX126X_PARAM_DIO3_MODE) || defined(DOXYGEN)
92# define SX126X_PARAM_DIO3_MODE SX126X_DIO3_UNUSED
93#endif
94
95#if !defined(SX126X_PARAM_TCXO_VOLTAGE) || defined(DOXYGEN)
102# define SX126X_PARAM_TCXO_VOLTAGE SX126X_TCXO_CTRL_3_0V
103#endif
104
105#if !defined(SX126X_PARAM_TCXO_TIMEOUT) || defined(DOXYGEN)
110# define SX126X_PARAM_TCXO_TIMEOUT 256
111#endif
112
113#if !defined(SX126X_PARAM_DIO3_ARG) || defined(DOXYGEN)
117# define SX126X_PARAM_DIO3_ARG { .tcxo_volt = SX126X_PARAM_TCXO_VOLTAGE, \
118 .tcxo_timeout = SX126X_PARAM_TCXO_TIMEOUT }
119#endif
120
121#ifndef SX126X_PARAM_TYPE
122# if IS_USED(MODULE_SX1261)
123# define SX126X_PARAM_TYPE SX126X_TYPE_SX1261
124# elif IS_USED(MODULE_SX1262)
125# define SX126X_PARAM_TYPE SX126X_TYPE_SX1262
126# elif IS_USED(MODULE_SX1268)
127# define SX126X_PARAM_TYPE SX126X_TYPE_SX1268
128# elif IS_USED(MODULE_LLCC68)
129# define SX126X_PARAM_TYPE SX126X_TYPE_LLCC68
130# elif IS_USED(MODULE_SX126X_STM32WL)
131# define SX126X_PARAM_TYPE SX126X_TYPE_STM32WL
132# else
133# error "You should select at least one of the SX126x variants."
134# endif
135#endif
136
137#if IS_USED(MODULE_SX126X_RF_SWITCH)
138# define SX126X_SET_RF_MODE .set_rf_mode = SX126X_PARAM_SET_RF_MODE_CB,
139# define SX126X_TX_PA_MODE .tx_pa_mode = SX126X_PARAM_TX_PA_MODE,
140#else
141# define SX126X_SET_RF_MODE
142# define SX126X_TX_PA_MODE
143#endif
144
145#if IS_USED(MODULE_SX126X_DIO2) || defined(DOXYGEN)
149# define SX126X_DIO2_MODE .dio2_mode = SX126X_PARAM_DIO2_MODE,
150#else
151# define SX126X_DIO2_MODE
152#endif
153
154#if IS_USED(MODULE_SX126X_DIO3) || defined(DOXYGEN)
158# define SX126X_DIO3_MODE .dio3_mode = SX126X_PARAM_DIO3_MODE,
162# define SX126X_DIO3_ARG .dio3_arg = SX126X_PARAM_DIO3_ARG,
163#else
164# define SX126X_DIO3_MODE
165# define SX126X_DIO3_ARG
166#endif
167
168#ifndef SX126X_PARAMS
169# define SX126X_PARAMS { .spi = SX126X_PARAM_SPI, \
170 .nss_pin = SX126X_PARAM_SPI_NSS, \
171 .reset_pin = SX126X_PARAM_RESET, \
172 .busy_pin = SX126X_PARAM_BUSY, \
173 .dio1_pin = SX126X_PARAM_DIO1, \
174 .type = SX126X_PARAM_TYPE, \
175 .regulator = SX126X_PARAM_REGULATOR, \
176 SX126X_SET_RF_MODE \
177 SX126X_TX_PA_MODE \
178 SX126X_DIO2_MODE \
179 SX126X_DIO3_MODE \
180 SX126X_DIO3_ARG \
181 }
182#endif
183
185
190{
191 SX126X_PARAMS
192};
193
194#ifdef __cplusplus
195}
196#endif
197
Device initialization parameters.
Definition sx126x.h:127
static const sx126x_params_t sx126x_params[]
Configuration struct.