41 lines
1.2 KiB
C
41 lines
1.2 KiB
C
#ifndef __MGOS_GPIO_H
|
|
#define __MGOS_GPIO_H
|
|
|
|
#include "mgos.h"
|
|
|
|
enum mgos_gpio_mode {
|
|
MGOS_GPIO_MODE_INPUT = 0, /* input mode */
|
|
MGOS_GPIO_MODE_OUTPUT = 1 /* output mode */
|
|
};
|
|
|
|
enum mgos_gpio_pull_type {
|
|
MGOS_GPIO_PULL_NONE = 0,
|
|
MGOS_GPIO_PULL_UP = 1, /* pin is pilled to the high voltage */
|
|
MGOS_GPIO_PULL_DOWN = 2 /* pin is pulled to the low voltage */
|
|
};
|
|
|
|
enum mgos_gpio_int_mode {
|
|
MGOS_GPIO_INT_NONE = 0,
|
|
MGOS_GPIO_INT_EDGE_POS = 1, /* positive edge */
|
|
MGOS_GPIO_INT_EDGE_NEG = 2, /* negative edge */
|
|
MGOS_GPIO_INT_EDGE_ANY = 3, /* any edge - positive or negative */
|
|
MGOS_GPIO_INT_LEVEL_HI = 4, /* high voltage level */
|
|
MGOS_GPIO_INT_LEVEL_LO = 5 /* low voltage level */
|
|
};
|
|
|
|
typedef void (*mgos_gpio_int_handler_f)(int pin, void *arg);
|
|
|
|
bool mgos_gpio_set_mode(int pin, enum mgos_gpio_mode mode);
|
|
void mgos_gpio_write(int pin, bool level);
|
|
|
|
bool mgos_gpio_set_button_handler(int pin, enum mgos_gpio_pull_type pull_type,
|
|
enum mgos_gpio_int_mode int_mode,
|
|
int debounce_ms, mgos_gpio_int_handler_f cb,
|
|
void *arg);
|
|
bool mgos_gpio_read(int pin);
|
|
|
|
void mgos_gpio_inject(int pin);
|
|
|
|
|
|
#endif // __MGOS_GPIO_H
|