drivers/sx127x: add support for rx and tx switch pin
This commit is contained in:
parent
2f8e705679
commit
c62d9feff7
@ -216,6 +216,10 @@ typedef struct {
|
||||
gpio_t dio5_pin; /**< Interrupt line DIO5 (not used) */
|
||||
#ifdef SX127X_USE_DIO_MULTI
|
||||
gpio_t dio_multi_pin; /**< Interrupt line for multiple IRQs */
|
||||
#endif
|
||||
#if defined(SX127X_USE_TX_SWITCH) || defined(SX127X_USE_RX_SWITCH)
|
||||
gpio_t rx_switch_pin; /**< Rx antenna switch */
|
||||
gpio_t tx_switch_pin; /**< Tx antenna switch */
|
||||
#endif
|
||||
uint8_t paselect; /**< Power amplifier mode (RFO or PABOOST) */
|
||||
} sx127x_params_t;
|
||||
|
||||
@ -68,6 +68,14 @@ extern "C" {
|
||||
#define SX127X_PARAM_PASELECT (SX127X_PA_RFO)
|
||||
#endif
|
||||
|
||||
#ifndef SX127X_PARAM_TX_SWITCH
|
||||
#define SX127X_PARAM_TX_SWITCH GPIO_UNDEF
|
||||
#endif
|
||||
|
||||
#ifndef SX127X_PARAM_RX_SWITCH
|
||||
#define SX127X_PARAM_RX_SWITCH GPIO_UNDEF
|
||||
#endif
|
||||
|
||||
#ifndef SX127X_PARAMS
|
||||
#ifdef SX127X_USE_DIO_MULTI
|
||||
#define SX127X_PARAMS { .spi = SX127X_PARAM_SPI, \
|
||||
@ -79,6 +87,17 @@ extern "C" {
|
||||
.dio3_pin = SX127X_PARAM_DIO3, \
|
||||
.dio_multi_pin = SX127X_PARAM_DIO_MULTI,\
|
||||
.paselect = SX127X_PARAM_PASELECT }
|
||||
#elif defined(SX127X_USE_TX_SWITCH) || defined(SX127X_USE_RX_SWITCH)
|
||||
#define SX127X_PARAMS { .spi = SX127X_PARAM_SPI, \
|
||||
.nss_pin = SX127X_PARAM_SPI_NSS, \
|
||||
.reset_pin = SX127X_PARAM_RESET, \
|
||||
.dio0_pin = SX127X_PARAM_DIO0, \
|
||||
.dio1_pin = SX127X_PARAM_DIO1, \
|
||||
.dio2_pin = SX127X_PARAM_DIO2, \
|
||||
.dio3_pin = SX127X_PARAM_DIO3, \
|
||||
.rx_switch_pin = SX127X_PARAM_RX_SWITCH, \
|
||||
.tx_switch_pin = SX127X_PARAM_TX_SWITCH, \
|
||||
.paselect = SX127X_PARAM_PASELECT }
|
||||
#else
|
||||
#define SX127X_PARAMS { .spi = SX127X_PARAM_SPI, \
|
||||
.nss_pin = SX127X_PARAM_SPI_NSS, \
|
||||
|
||||
@ -84,6 +84,17 @@ int sx127x_reset(const sx127x_t *dev)
|
||||
|
||||
gpio_init(dev->params.reset_pin, GPIO_OUT);
|
||||
|
||||
#ifdef SX127X_USE_TX_SWITCH
|
||||
/* tx switch as output, start in rx */
|
||||
gpio_init(dev->params.tx_switch_pin, GPIO_OUT);
|
||||
gpio_clear(dev->params.tx_switch_pin);
|
||||
#endif
|
||||
#ifdef SX127X_USE_RX_SWITCH
|
||||
/* rx switch as output, start in rx */
|
||||
gpio_init(dev->params.rx_switch_pin, GPIO_OUT);
|
||||
gpio_set(dev->params.rx_switch_pin);
|
||||
#endif
|
||||
|
||||
/* Set reset pin to 0 */
|
||||
gpio_clear(dev->params.reset_pin);
|
||||
|
||||
|
||||
@ -35,7 +35,6 @@
|
||||
#define ENABLE_DEBUG (0)
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
uint8_t sx127x_get_state(const sx127x_t *dev)
|
||||
{
|
||||
return dev->settings.state;
|
||||
@ -225,6 +224,13 @@ void sx127x_set_rx(sx127x_t *dev)
|
||||
{
|
||||
DEBUG("[sx127x] Set RX\n");
|
||||
|
||||
#ifdef SX127X_USE_TX_SWITCH
|
||||
gpio_clear(dev->params.tx_switch_pin);
|
||||
#endif
|
||||
#ifdef SX127X_USE_RX_SWITCH
|
||||
gpio_set(dev->params.rx_switch_pin);
|
||||
#endif
|
||||
|
||||
switch (dev->settings.modem) {
|
||||
case SX127X_MODEM_FSK:
|
||||
/* todo */
|
||||
@ -328,6 +334,13 @@ void sx127x_set_rx(sx127x_t *dev)
|
||||
|
||||
void sx127x_set_tx(sx127x_t *dev)
|
||||
{
|
||||
#ifdef SX127X_USE_RX_SWITCH
|
||||
gpio_clear(dev->params.rx_switch_pin);
|
||||
#endif
|
||||
#ifdef SX127X_USE_TX_SWITCH
|
||||
gpio_set(dev->params.tx_switch_pin);
|
||||
#endif
|
||||
|
||||
switch (dev->settings.modem) {
|
||||
case SX127X_MODEM_FSK:
|
||||
/* todo */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user