|
|
@@ -0,0 +1,72 @@
|
|
|
+#include "luat_base.h"
|
|
|
+#include "luat_spi.h"
|
|
|
+#include "luat_airlink.h"
|
|
|
+
|
|
|
+
|
|
|
+#include "luat_rtos.h"
|
|
|
+#include "luat_debug.h"
|
|
|
+#include "luat_spi.h"
|
|
|
+#include "luat_pm.h"
|
|
|
+#include "luat_gpio.h"
|
|
|
+#include "luat_airlink.h"
|
|
|
+#include "luat_mem.h"
|
|
|
+
|
|
|
+#define LUAT_LOG_TAG "airlink.uart"
|
|
|
+#include "luat_log.h"
|
|
|
+
|
|
|
+
|
|
|
+int luat_airlink_drv_uart_setup(luat_uart_t* conf) {
|
|
|
+ uint64_t luat_airlink_next_cmd_id = luat_airlink_get_next_cmd_id();
|
|
|
+ airlink_queue_item_t item = {
|
|
|
+ .len = sizeof(luat_gpio_t) + sizeof(luat_airlink_cmd_t) + 8
|
|
|
+ };
|
|
|
+ luat_airlink_cmd_t* cmd = luat_airlink_cmd_new(0x400, sizeof(luat_uart_t) + 8);
|
|
|
+ if (cmd == NULL) {
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ memcpy(cmd->data, &luat_airlink_next_cmd_id, 8);
|
|
|
+ memcpy(cmd->data + 8, conf, sizeof(luat_uart_t));
|
|
|
+ item.cmd = cmd;
|
|
|
+ luat_airlink_queue_send(LUAT_AIRLINK_QUEUE_CMD, &item);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int luat_airlink_drv_uart_write(int uart_id, void* data, size_t length) {
|
|
|
+ uint64_t luat_airlink_next_cmd_id = luat_airlink_get_next_cmd_id();
|
|
|
+ airlink_queue_item_t item = {
|
|
|
+ .len = sizeof(luat_gpio_t) + sizeof(luat_airlink_cmd_t) + 8
|
|
|
+ };
|
|
|
+ luat_airlink_cmd_t* cmd = luat_airlink_cmd_new(0x401, length + 1 + 8);
|
|
|
+ if (cmd == NULL) {
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ memcpy(cmd->data, &luat_airlink_next_cmd_id, 8);
|
|
|
+ uint8_t tmp = (uint8_t)uart_id;
|
|
|
+ memcpy(cmd->data + 8, &tmp, 1);
|
|
|
+ memcpy(cmd->data + 9, data, length);
|
|
|
+ item.cmd = cmd;
|
|
|
+ luat_airlink_queue_send(LUAT_AIRLINK_QUEUE_CMD, &item);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int luat_airlink_drv_uart_close(int uart_id) {
|
|
|
+ uint64_t luat_airlink_next_cmd_id = luat_airlink_get_next_cmd_id();
|
|
|
+ airlink_queue_item_t item = {
|
|
|
+ .len = sizeof(luat_gpio_t) + sizeof(luat_airlink_cmd_t) + 8
|
|
|
+ };
|
|
|
+ luat_airlink_cmd_t* cmd = luat_airlink_cmd_new(0x402, 8 + 1);
|
|
|
+ if (cmd == NULL) {
|
|
|
+ return -101;
|
|
|
+ }
|
|
|
+ memcpy(cmd->data, &luat_airlink_next_cmd_id, 8);
|
|
|
+ uint8_t tmp = (uint8_t)uart_id;
|
|
|
+ memcpy(cmd->data + 8, &tmp, 1);
|
|
|
+ item.cmd = cmd;
|
|
|
+ luat_airlink_queue_send(LUAT_AIRLINK_QUEUE_CMD, &item);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int luat_airlink_drv_uart_data_cb(int uart_id, void* buffer, size_t length) {
|
|
|
+ // TODO 要接收UART BUFF数据, 返回给用户代码
|
|
|
+ return 0;
|
|
|
+}
|