From 8034342c5483d3aa0de749db8255f9def9335faa Mon Sep 17 00:00:00 2001 From: Juergen Fitschen Date: Thu, 12 Mar 2020 18:14:23 +0100 Subject: [PATCH] boards/samr30-xpro: add function to configure antenna switch --- boards/samr30-xpro/board.c | 18 ++++++++++++++++++ boards/samr30-xpro/include/board.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/boards/samr30-xpro/board.c b/boards/samr30-xpro/board.c index ba59777695..e27a081147 100644 --- a/boards/samr30-xpro/board.c +++ b/boards/samr30-xpro/board.c @@ -28,6 +28,18 @@ void led_init(void); +void board_antenna_config(uint8_t antenna) +{ + if (antenna == RFCTL_ANTENNA_EXT){ + gpio_clear(RFCTL1_PIN); + gpio_set(RFCTL2_PIN); + } + else if (antenna == RFCTL_ANTENNA_BOARD){ + gpio_set(RFCTL1_PIN); + gpio_clear(RFCTL2_PIN); + } +} + void board_init(void) { /* initialize the CPU */ @@ -35,6 +47,12 @@ void board_init(void) /* initialize the boards LEDs */ led_init(); + + /* initialize the on-board antenna switch */ + gpio_init(RFCTL1_PIN, GPIO_OUT); + gpio_init(RFCTL2_PIN, GPIO_OUT); + /* set default antenna switch configuration */ + board_antenna_config(RFCTL_ANTENNA_DEFAULT); } diff --git a/boards/samr30-xpro/include/board.h b/boards/samr30-xpro/include/board.h index d6eb0fc9aa..3d1535ab4e 100644 --- a/boards/samr30-xpro/include/board.h +++ b/boards/samr30-xpro/include/board.h @@ -67,11 +67,41 @@ extern "C" { #define BTN0_MODE GPIO_IN_PU /** @} */ +/** + * @name Antenna configuration pin interface + * @{ + */ +#define RFCTL1_PIN GPIO_PIN(PA, 9) +#define RFCTL2_PIN GPIO_PIN(PA, 12) +/** @} */ + +/** + * @brief Antenna configuration values + */ +enum { + RFCTL_ANTENNA_BOARD, + RFCTL_ANTENNA_EXT, +}; + +/** + * @name Default antenna configuration + * @{ + */ +#ifndef RFCTL_ANTENNA_DEFAULT +#define RFCTL_ANTENNA_DEFAULT RFCTL_ANTENNA_BOARD +#endif +/** @} */ + /** * @brief Initialize board specific hardware, including clock, LEDs and std-IO */ void board_init(void); +/** + * @brief Set antenna switch + */ +void board_antenna_config(uint8_t antenna); + #ifdef __cplusplus } #endif