1d4afb5ceSopenharmony_ci#include <driver/gpio.h>
2d4afb5ceSopenharmony_ci#include "gpio-esp32.h"
3d4afb5ceSopenharmony_ci
4d4afb5ceSopenharmony_cistatic void
5d4afb5ceSopenharmony_cilws_gpio_esp32_mode_write(_lws_plat_gpio_t gpio)
6d4afb5ceSopenharmony_ci{
7d4afb5ceSopenharmony_ci	gpio_reset_pin(gpio);
8d4afb5ceSopenharmony_ci	gpio_set_pull_mode(gpio, GPIO_PULLUP_ONLY);
9d4afb5ceSopenharmony_ci	gpio_set_direction(gpio, GPIO_MODE_INPUT_OUTPUT);
10d4afb5ceSopenharmony_ci	gpio_set_level(gpio, 1);
11d4afb5ceSopenharmony_ci}
12d4afb5ceSopenharmony_cistatic void
13d4afb5ceSopenharmony_cilws_gpio_esp32_mode_read(_lws_plat_gpio_t gpio)
14d4afb5ceSopenharmony_ci{
15d4afb5ceSopenharmony_ci	gpio_set_pull_mode(gpio, GPIO_PULLUP_ONLY);
16d4afb5ceSopenharmony_ci	gpio_set_direction(gpio, GPIO_MODE_INPUT);
17d4afb5ceSopenharmony_ci	gpio_set_level(gpio, 1);
18d4afb5ceSopenharmony_ci}
19d4afb5ceSopenharmony_cistatic int
20d4afb5ceSopenharmony_cilws_gpio_esp32_read(_lws_plat_gpio_t gpio)
21d4afb5ceSopenharmony_ci{
22d4afb5ceSopenharmony_ci	return gpio_get_level(gpio);
23d4afb5ceSopenharmony_ci}
24d4afb5ceSopenharmony_cistatic void
25d4afb5ceSopenharmony_cilws_gpio_esp32_set(_lws_plat_gpio_t gpio, int val)
26d4afb5ceSopenharmony_ci{
27d4afb5ceSopenharmony_ci	gpio_set_level(gpio, val);
28d4afb5ceSopenharmony_ci}
29d4afb5ceSopenharmony_ci
30d4afb5ceSopenharmony_ciconst lws_gpio_ops_t lws_gpio_esp32 = {
31d4afb5ceSopenharmony_ci	.mode_write		= lws_gpio_esp32_mode_write,
32d4afb5ceSopenharmony_ci	.mode_read		= lws_gpio_esp32_mode_read,
33d4afb5ceSopenharmony_ci	.read			= lws_gpio_esp32_read,
34d4afb5ceSopenharmony_ci	.set			= lws_gpio_esp32_set,
35d4afb5ceSopenharmony_ci};
36d4afb5ceSopenharmony_ci
37