#include "impl_btn.h" #include "driver/gpio.h" #define BTN_GPIO_1 GPIO_NUM_46 #define BTN_GPIO_2 GPIO_NUM_45 #define BTN_GPIO_3 GPIO_NUM_42 #define BTN_GPIO_4 GPIO_NUM_41 static void impl_btn_setup_pin(gpio_num_t pin) { gpio_reset_pin(pin); gpio_set_direction(pin, GPIO_MODE_INPUT); gpio_pullup_en(pin); } esp_err_t impl_btn_init(void) { impl_btn_setup_pin(BTN_GPIO_1); impl_btn_setup_pin(BTN_GPIO_2); impl_btn_setup_pin(BTN_GPIO_3); impl_btn_setup_pin(BTN_GPIO_4); return ESP_OK; } esp_err_t impl_btn_read(uint8_t *btn_status) { *btn_status = 0U; /* Bug workaround: GPIO46 cannot pull up. */ //if (gpio_get_level(BTN_GPIO_1) == 0) *btn_status |= 0x01U; if (gpio_get_level(BTN_GPIO_2) == 0) *btn_status |= (0x01U << 1U); if (gpio_get_level(BTN_GPIO_3) == 0) *btn_status |= (0x01U << 2U); if (gpio_get_level(BTN_GPIO_4) == 0) *btn_status |= (0x01U << 3U); return ESP_OK; }