92 lines
2.4 KiB
C
92 lines
2.4 KiB
C
/* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "driver/gpio.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief gpio button configuration
|
|
*
|
|
*/
|
|
typedef struct {
|
|
int32_t gpio_num; /**< num of gpio */
|
|
uint8_t active_level; /**< gpio level when press down */
|
|
#if CONFIG_GPIO_BUTTON_SUPPORT_POWER_SAVE
|
|
bool enable_power_save; /**< enable power save mode */
|
|
#endif
|
|
bool disable_pull; /**< disable internal pull or not */
|
|
} button_gpio_config_t;
|
|
|
|
/**
|
|
* @brief Initialize gpio button
|
|
*
|
|
* @param config pointer of configuration struct
|
|
*
|
|
* @return
|
|
* - ESP_OK on success
|
|
* - ESP_ERR_INVALID_ARG Arguments is NULL.
|
|
*/
|
|
esp_err_t button_gpio_init(const button_gpio_config_t *config);
|
|
|
|
/**
|
|
* @brief Deinitialize gpio button
|
|
*
|
|
* @param gpio_num gpio number of button
|
|
*
|
|
* @return Always return ESP_OK
|
|
*/
|
|
esp_err_t button_gpio_deinit(int gpio_num);
|
|
|
|
/**
|
|
* @brief Get current level on button gpio
|
|
*
|
|
* @param gpio_num gpio number of button, it will be treated as a uint32_t variable.
|
|
*
|
|
* @return Level on gpio
|
|
*/
|
|
uint8_t button_gpio_get_key_level(void *gpio_num);
|
|
|
|
/**
|
|
* @brief Sets up interrupt for GPIO button.
|
|
*
|
|
* @param gpio_num gpio number of button
|
|
* @param intr_type The type of GPIO interrupt.
|
|
* @param isr_handler The ISR (Interrupt Service Routine) handler function.
|
|
* @param args Arguments to be passed to the ISR handler function.
|
|
* @return Always return ESP_OK
|
|
*/
|
|
esp_err_t button_gpio_set_intr(int gpio_num, gpio_int_type_t intr_type, gpio_isr_t isr_handler, void *args);
|
|
|
|
/**
|
|
* @brief Enable or disable interrupt for GPIO button.
|
|
*
|
|
* @param gpio_num gpio number of button
|
|
* @param enable enable or disable
|
|
* @return Always return ESP_OK
|
|
*/
|
|
esp_err_t button_gpio_intr_control(int gpio_num, bool enable);
|
|
|
|
/**
|
|
* @brief Enable or disable GPIO wakeup functionality.
|
|
*
|
|
* This function allows enabling or disabling GPIO wakeup feature.
|
|
*
|
|
* @param gpio_num GPIO number for wakeup functionality.
|
|
* @param active_level Active level of the GPIO when triggered.
|
|
* @param enable Enable or disable the GPIO wakeup.
|
|
* @return
|
|
* - ESP_OK on success
|
|
* - ESP_ERR_INVALID_STATE if trigger was not active or in conflict.
|
|
*/
|
|
esp_err_t button_gpio_enable_gpio_wakeup(uint32_t gpio_num, uint8_t active_level, bool enable);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|