|
|
@@ -1,59 +1,65 @@
|
|
|
-
|
|
|
-#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
|
|
|
+
|
|
|
+#ifndef LUAT_GPIO_H
|
|
|
+#define LUAT_GPIO_H
|
|
|
+
|
|
|
+
|
|
|
+#include "luat_base.h"
|
|
|
+#include "luat_gpio_legacy.h"
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#define LUAT_GPIO_LOW (Luat_GPIO_LOW)
|
|
|
+#define LUAT_GPIO_HIGH (Luat_GPIO_HIGH)
|
|
|
+
|
|
|
+#define LUAT_GPIO_OUTPUT (Luat_GPIO_OUTPUT)
|
|
|
+#define LUAT_GPIO_INPUT (Luat_GPIO_INPUT)
|
|
|
+#define LUAT_GPIO_IRQ (Luat_GPIO_IRQ)
|
|
|
+
|
|
|
+#define LUAT_GPIO_DEFAULT (Luat_GPIO_DEFAULT)
|
|
|
+#define LUAT_GPIO_PULLUP (Luat_GPIO_PULLUP)
|
|
|
+#define LUAT_GPIO_PULLDOWN (Luat_GPIO_PULLDOWN)
|
|
|
+
|
|
|
+#define LUAT_GPIO_RISING (Luat_GPIO_RISING)
|
|
|
+#define LUAT_GPIO_FALLING (Luat_GPIO_FALLING)
|
|
|
+#define LUAT_GPIO_BOTH (Luat_GPIO_BOTH)
|
|
|
+#define LUAT_GPIO_HIGH_IRQ (Luat_GPIO_HIGH_IRQ) //高电平中断
|
|
|
+#define LUAT_GPIO_LOW_IRQ (Luat_GPIO_LOW_IRQ) //低电平中断
|
|
|
+
|
|
|
+#define LUAT_GPIO_MAX_ID (Luat_GPIO_MAX_ID)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+typedef struct luat_gpio_cfg
|
|
|
+{
|
|
|
+ int pin;
|
|
|
+ uint8_t mode;
|
|
|
+ uint8_t pull;
|
|
|
+ uint8_t irq_type;
|
|
|
+ uint8_t output_level;
|
|
|
+ luat_gpio_irq_cb irq_cb;
|
|
|
+ void* irq_args;
|
|
|
+ uint8_t alt_fun;
|
|
|
+} luat_gpio_cfg_t;
|
|
|
+/**
|
|
|
+ * @defgroup luatos_device 外设接口
|
|
|
+ * @{
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * @defgroup luatos_device_gpio GPIO接口
|
|
|
+ * @{
|
|
|
+ */
|
|
|
+
|
|
|
+void luat_gpio_set_default_cfg(luat_gpio_cfg_t* gpio);
|
|
|
+int luat_gpio_open(luat_gpio_cfg_t* gpio);
|
|
|
+int luat_gpio_set(int pin, int level);
|
|
|
+int luat_gpio_get(int pin);
|
|
|
+void luat_gpio_close(int pin);
|
|
|
+
|
|
|
+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
|