#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
