sx126x_params.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Inria
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 
21 #include "board.h"
22 #include "sx126x.h"
23 
24 #if defined(MODULE_SHIELD_LLCC68) || defined(MODULE_SHIELD_SX1262)
25 # include "arduino_iomap.h"
26 #endif
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 #if defined(MODULE_SHIELD_LLCC68) || defined(MODULE_SHIELD_SX1262)
33 # define SX126X_PARAM_SPI ARDUINO_SPI_D11D12D13
34 # define SX126X_PARAM_SPI_NSS ARDUINO_PIN_7
35 # define SX126X_PARAM_RESET ARDUINO_PIN_A0
36 # define SX126X_PARAM_BUSY ARDUINO_PIN_3
37 # define SX126X_PARAM_DIO1 ARDUINO_PIN_5
38 #endif
39 
46 #ifndef SX126X_PARAM_SPI
47 # define SX126X_PARAM_SPI SPI_DEV(0)
48 #endif
49 
50 #ifndef SX126X_PARAM_SPI_NSS
51 # define SX126X_PARAM_SPI_NSS GPIO_PIN(0, 8) /* D7 */
52 #endif
53 
54 #ifndef SX126X_PARAM_RESET
55 # define SX126X_PARAM_RESET GPIO_PIN(0, 0) /* A0 */
56 #endif
57 
58 #ifndef SX126X_PARAM_BUSY
59 # define SX126X_PARAM_BUSY GPIO_PIN(1, 3) /* D3 */
60 #endif
61 
62 #ifndef SX126X_PARAM_DIO1
63 # define SX126X_PARAM_DIO1 GPIO_PIN(1, 4) /* D5 */
64 #endif
65 
66 #if !defined(SX126X_PARAM_REGULATOR) || defined(DOXYGEN)
71 # define SX126X_PARAM_REGULATOR SX126X_REG_MODE_DCDC
72 #endif
73 
74 #ifndef SX126X_PARAM_SET_RF_MODE_CB
75 # define SX126X_PARAM_SET_RF_MODE_CB NULL
76 #endif
77 
78 #ifndef SX126X_PARAM_TX_PA_MODE
79 # define SX126X_PARAM_TX_PA_MODE SX126X_RF_MODE_TX_LPA
80 #endif
81 
82 #if !defined(SX126X_PARAM_DIO2_MODE) || defined(DOXYGEN)
87 # define SX126X_PARAM_DIO2_MODE SX126X_DIO2_UNUSED
88 #endif
89 
90 #if !defined(SX126X_PARAM_DIO3_MODE) || defined(DOXYGEN)
95 # define SX126X_PARAM_DIO3_MODE SX126X_DIO3_UNUSED
96 #endif
97 
98 #if !defined(SX126X_PARAM_TCXO_VOLTAGE) || defined(DOXYGEN)
105 # define SX126X_PARAM_TCXO_VOLTAGE SX126X_TCXO_CTRL_3_0V
106 #endif
107 
108 #if !defined(SX126X_PARAM_TCXO_TIMEOUT) || defined(DOXYGEN)
113 # define SX126X_PARAM_TCXO_TIMEOUT 256
114 #endif
115 
116 #if !defined(SX126X_PARAM_DIO3_ARG) || defined(DOXYGEN)
120 # define SX126X_PARAM_DIO3_ARG { .tcxo_volt = SX126X_PARAM_TCXO_VOLTAGE, \
121  .tcxo_timeout = SX126X_PARAM_TCXO_TIMEOUT }
122 #endif
123 
124 #ifndef SX126X_PARAM_TYPE
125 # if IS_USED(MODULE_SX1261)
126 # define SX126X_PARAM_TYPE SX126X_TYPE_SX1261
127 # elif IS_USED(MODULE_SX1262)
128 # define SX126X_PARAM_TYPE SX126X_TYPE_SX1262
129 # elif IS_USED(MODULE_SX1268)
130 # define SX126X_PARAM_TYPE SX126X_TYPE_SX1268
131 # elif IS_USED(MODULE_LLCC68)
132 # define SX126X_PARAM_TYPE SX126X_TYPE_LLCC68
133 # elif IS_USED(MODULE_SX126X_STM32WL)
134 # define SX126X_PARAM_TYPE SX126X_TYPE_STM32WL
135 # else
136 # error "You should select at least one of the SX126x variants."
137 # endif
138 #endif
139 
140 #if IS_USED(MODULE_SX126X_RF_SWITCH)
141 # define SX126X_SET_RF_MODE .set_rf_mode = SX126X_PARAM_SET_RF_MODE_CB,
142 # define SX126X_TX_PA_MODE .tx_pa_mode = SX126X_PARAM_TX_PA_MODE,
143 #else
144 # define SX126X_SET_RF_MODE
145 # define SX126X_TX_PA_MODE
146 #endif
147 
148 #if IS_USED(MODULE_SX126X_DIO2) || defined(DOXYGEN)
152 # define SX126X_DIO2_MODE .dio2_mode = SX126X_PARAM_DIO2_MODE,
153 #else
154 # define SX126X_DIO2_MODE
155 #endif
156 
157 #if IS_USED(MODULE_SX126X_DIO3) || defined(DOXYGEN)
161 # define SX126X_DIO3_MODE .dio3_mode = SX126X_PARAM_DIO3_MODE,
165 # define SX126X_DIO3_ARG .dio3_arg = SX126X_PARAM_DIO3_ARG,
166 #else
167 # define SX126X_DIO3_MODE
168 # define SX126X_DIO3_ARG
169 #endif
170 
171 #ifndef SX126X_PARAMS
172 # define SX126X_PARAMS { .spi = SX126X_PARAM_SPI, \
173  .nss_pin = SX126X_PARAM_SPI_NSS, \
174  .reset_pin = SX126X_PARAM_RESET, \
175  .busy_pin = SX126X_PARAM_BUSY, \
176  .dio1_pin = SX126X_PARAM_DIO1, \
177  .type = SX126X_PARAM_TYPE, \
178  .regulator = SX126X_PARAM_REGULATOR, \
179  SX126X_SET_RF_MODE \
180  SX126X_TX_PA_MODE \
181  SX126X_DIO2_MODE \
182  SX126X_DIO3_MODE \
183  SX126X_DIO3_ARG \
184  }
185 #endif
186 
193 {
194  SX126X_PARAMS
195 };
196 
197 #ifdef __cplusplus
198 }
199 #endif
200 
Device initialization parameters.
Definition: sx126x.h:111
static const sx126x_params_t sx126x_params[]
Configuration struct.