41 lines
1.2 KiB
C
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;
|
|
}
|