35 lines
939 B
C
35 lines
939 B
C
#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;
|
|
} |