ESP32-PaxCounter/src/antenna.cpp

39 lines
1.2 KiB
C++
Raw Normal View History

2018-07-21 18:25:03 +02:00
/* switches wifi antenna, if board has switch internal / external antenna */
#ifdef HAS_ANTENNA_SWITCH
2018-03-18 19:45:17 +01:00
2018-07-30 18:48:25 +02:00
#include <Arduino.h>
2018-03-18 19:45:17 +01:00
// Local logging tag
2018-06-02 18:28:01 +02:00
static const char TAG[] = "wifi";
2018-03-18 19:45:17 +01:00
typedef enum { ANTENNA_INT = 0, ANTENNA_EXT } antenna_type_t;
2018-03-18 19:45:17 +01:00
void antenna_init(void) {
gpio_config_t gpioconf = {.pin_bit_mask = 1ull << HAS_ANTENNA_SWITCH,
.mode = GPIO_MODE_OUTPUT,
.pull_up_en = GPIO_PULLUP_DISABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE};
gpio_config(&gpioconf);
2018-03-18 19:45:17 +01:00
}
void antenna_select(const uint8_t _ant) {
if (HAS_ANTENNA_SWITCH < 32) {
if (_ant == ANTENNA_EXT) {
GPIO_REG_WRITE(GPIO_OUT_W1TS_REG, 1 << HAS_ANTENNA_SWITCH);
} else {
GPIO_REG_WRITE(GPIO_OUT_W1TC_REG, 1 << HAS_ANTENNA_SWITCH);
}
} else {
if (_ant == ANTENNA_EXT) {
GPIO_REG_WRITE(GPIO_OUT1_W1TS_REG, 1 << (HAS_ANTENNA_SWITCH & 31));
} else {
GPIO_REG_WRITE(GPIO_OUT1_W1TC_REG, 1 << (HAS_ANTENNA_SWITCH & 31));
}
}
ESP_LOGI(TAG, "Wifi Antenna switched to %s", _ant ? "external" : "internal");
2018-03-18 19:45:17 +01:00
}
2018-07-30 18:48:25 +02:00
#endif