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) */
|
gpio_t dio5_pin; /**< Interrupt line DIO5 (not used) */
|
||||||
#ifdef SX127X_USE_DIO_MULTI
|
#ifdef SX127X_USE_DIO_MULTI
|
||||||
gpio_t dio_multi_pin; /**< Interrupt line for multiple IRQs */
|
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
|
#endif
|
||||||
uint8_t paselect; /**< Power amplifier mode (RFO or PABOOST) */
|
uint8_t paselect; /**< Power amplifier mode (RFO or PABOOST) */
|
||||||
} sx127x_params_t;
|
} sx127x_params_t;
|
||||||
|
|||||||
@ -68,6 +68,14 @@ extern "C" {
|
|||||||
#define SX127X_PARAM_PASELECT (SX127X_PA_RFO)
|
#define SX127X_PARAM_PASELECT (SX127X_PA_RFO)
|
||||||
#endif
|
#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
|
#ifndef SX127X_PARAMS
|
||||||
#ifdef SX127X_USE_DIO_MULTI
|
#ifdef SX127X_USE_DIO_MULTI
|
||||||
#define SX127X_PARAMS { .spi = SX127X_PARAM_SPI, \
|
#define SX127X_PARAMS { .spi = SX127X_PARAM_SPI, \
|
||||||
@ -79,6 +87,17 @@ extern "C" {
|
|||||||
.dio3_pin = SX127X_PARAM_DIO3, \
|
.dio3_pin = SX127X_PARAM_DIO3, \
|
||||||
.dio_multi_pin = SX127X_PARAM_DIO_MULTI,\
|
.dio_multi_pin = SX127X_PARAM_DIO_MULTI,\
|
||||||
.paselect = SX127X_PARAM_PASELECT }
|
.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
|
#else
|
||||||
#define SX127X_PARAMS { .spi = SX127X_PARAM_SPI, \
|
#define SX127X_PARAMS { .spi = SX127X_PARAM_SPI, \
|
||||||
.nss_pin = SX127X_PARAM_SPI_NSS, \
|
.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);
|
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 */
|
/* Set reset pin to 0 */
|
||||||
gpio_clear(dev->params.reset_pin);
|
gpio_clear(dev->params.reset_pin);
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,6 @@
|
|||||||
#define ENABLE_DEBUG (0)
|
#define ENABLE_DEBUG (0)
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
|
|
||||||
uint8_t sx127x_get_state(const sx127x_t *dev)
|
uint8_t sx127x_get_state(const sx127x_t *dev)
|
||||||
{
|
{
|
||||||
return dev->settings.state;
|
return dev->settings.state;
|
||||||
@ -225,6 +224,13 @@ void sx127x_set_rx(sx127x_t *dev)
|
|||||||
{
|
{
|
||||||
DEBUG("[sx127x] Set RX\n");
|
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) {
|
switch (dev->settings.modem) {
|
||||||
case SX127X_MODEM_FSK:
|
case SX127X_MODEM_FSK:
|
||||||
/* todo */
|
/* todo */
|
||||||
@ -328,6 +334,13 @@ void sx127x_set_rx(sx127x_t *dev)
|
|||||||
|
|
||||||
void sx127x_set_tx(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) {
|
switch (dev->settings.modem) {
|
||||||
case SX127X_MODEM_FSK:
|
case SX127X_MODEM_FSK:
|
||||||
/* todo */
|
/* todo */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user