#include "board_antenna.h" #if CONFIG_FRAME_XIAO_ANTENNA_INIT #include "driver/gpio.h" // Fixed by the XIAO ESP32-C6's own PCB (the RF switch wiring, not // user-configurable), not exposed as Kconfig pins the way the EPD/button // GPIOs are. GPIO3 is the switch's power enable (active low), GPIO14 // selects onboard (low) vs external u.FL (high) antenna. Seeed's own // Arduino board package does this at boot automatically; plain ESP-IDF // does not, so without it the switch is left unpowered/floating and the // radio doesn't reliably reach the onboard antenna. #define ANTENNA_SWITCH_POWER_GPIO 3 #define ANTENNA_SELECT_GPIO 14 void board_antenna_select_onboard(void) { gpio_config_t cfg = { .pin_bit_mask = (1ULL << ANTENNA_SWITCH_POWER_GPIO) | (1ULL << ANTENNA_SELECT_GPIO), .mode = GPIO_MODE_OUTPUT, }; gpio_config(&cfg); gpio_set_level(ANTENNA_SWITCH_POWER_GPIO, 0); gpio_set_level(ANTENNA_SELECT_GPIO, 0); } #else void board_antenna_select_onboard(void) { } #endif