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