/* GPIO management functions * * Part of esp-open-rtos * Copyright (C) 2015 Angus Gratton * BSD Licensed as described in the file LICENSE */ #include void gpio_enable(const uint8_t gpio_num, const gpio_direction_t direction) { switch (direction) { case GPIO_INPUT: GPIO.ENABLE_OUT_CLEAR = BIT(gpio_num); iomux_set_gpio_function(gpio_num, false); break; case GPIO_OUTPUT: GPIO.CONF[gpio_num] &= ~GPIO_CONF_OPEN_DRAIN; GPIO.ENABLE_OUT_SET = BIT(gpio_num); iomux_set_gpio_function(gpio_num, true); break; case GPIO_OUT_OPEN_DRAIN: GPIO.CONF[gpio_num] |= GPIO_CONF_OPEN_DRAIN; GPIO.ENABLE_OUT_SET = BIT(gpio_num); iomux_set_gpio_function(gpio_num, true); break; } } void gpio_set_pullup(uint8_t gpio_num, bool enabled, bool enabled_during_sleep) { uint32_t flags = 0; if (enabled) { flags |= IOMUX_PIN_PULLUP; } if (enabled_during_sleep) { flags |= IOMUX_PIN_PULLUP_SLEEP; } iomux_set_pullup_flags(gpio_to_iomux(gpio_num), flags); }