Loading...
Searching...
No Matches
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
20
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
29extern "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
188
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.