Files
lucky-cat/components/platform/src/platform_digital_input_driver.c
T
2026-06-25 00:34:34 +08:00

41 lines
1.2 KiB
C

/*
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "platform_internal.h"
#include "driver/gpio.h"
esp_err_t platform_digital_input_driver_configure(const platform_digital_input_config_t *config)
{
if (config == NULL) {
return ESP_ERR_INVALID_ARG;
}
if (config->gpio_num < 0 || config->gpio_num >= GPIO_NUM_MAX) {
return ESP_ERR_INVALID_ARG;
}
gpio_config_t io_conf = {
.pin_bit_mask = (1ULL << config->gpio_num),
.mode = GPIO_MODE_INPUT,
.pull_up_en = config->pullup_enabled ? GPIO_PULLUP_ENABLE : GPIO_PULLUP_DISABLE,
.pull_down_en = config->pulldown_enabled ? GPIO_PULLDOWN_ENABLE : GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE
};
return gpio_config(&io_conf);
}
bool platform_digital_input_driver_is_active(const platform_digital_input_config_t *config)
{
if (config == NULL || config->gpio_num < 0 || config->gpio_num >= GPIO_NUM_MAX) {
return false;
}
int active_level = (config->active_level != 0) ? 1 : 0;
return gpio_get_level((gpio_num_t)config->gpio_num) == active_level;
}