| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #ifndef LUAT_GPIO_H
- #define LUAT_GPIO_H
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- #include "stdint.h"
- #include "luat_msgbus.h"
- typedef int (*luat_gpio_irq_cb)(int pin, void* args);
- #define Luat_GPIO_LOW 0x00
- #define Luat_GPIO_HIGH 0x01
- #define Luat_GPIO_OUTPUT 0x00
- #define Luat_GPIO_INPUT 0x01
- #define Luat_GPIO_IRQ 0x02
- #define Luat_GPIO_DEFAULT 0x00
- #define Luat_GPIO_PULLUP 0x01
- #define Luat_GPIO_PULLDOWN 0x02
- #define Luat_GPIO_RISING 0x00
- #define Luat_GPIO_FALLING 0x01
- #define Luat_GPIO_BOTH 0x02
- #define Luat_GPIO_HIGH_IRQ 0x03 //高电平中断
- #define Luat_GPIO_LOW_IRQ 0x04 //低电平中断
- #define Luat_GPIO_MAX_ID 255
- typedef struct luat_gpio
- {
- int pin;
- int mode;
- int pull;
- int irq;
- int lua_ref;
- luat_gpio_irq_cb irq_cb;
- void* irq_args;
- } luat_gpio_t;
- void luat_gpio_mode(int pin, int mode, int pull, int initOutput);
- int luat_gpio_setup(luat_gpio_t* gpio);
- int luat_gpio_set(int pin, int level);
- int luat_gpio_get(int pin);
- void luat_gpio_close(int pin);
- int l_gpio_handler(lua_State *L, void* ptr);
- int luat_gpio_irq_default(int pin, void* args);
- int luat_gpio_set_irq_cb(int pin, luat_gpio_irq_cb cb, void* args);
- // 在同一个GPIO输出一组脉冲, 注意, len的单位是bit, 高位在前.
- void luat_gpio_pulse(int pin, uint8_t *level, uint16_t len, uint16_t delay_ns);
- #endif
|