/* * 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; }