Browse Source

update: airlink,uart sent回调测试ok

Wendal Chen 9 months ago
parent
commit
22a20a4285
1 changed files with 18 additions and 0 deletions
  1. 18 0
      components/airlink/src/exec/luat_airlink_cmd_exec_uart.c

+ 18 - 0
components/airlink/src/exec/luat_airlink_cmd_exec_uart.c

@@ -29,6 +29,23 @@ static void rx_data_input(int uart_id, uint32_t data_len) {
     luat_rtos_queue_send(rx_queue, &id, 0, 0);
 }
 
+static void tx_sent_cb(int uart_id, uint32_t data_len) {
+    size_t total_len = sizeof(luat_airlink_cmd_t) + 8 + 1;
+    airlink_queue_item_t item = {.len = total_len};
+    luat_airlink_cmd_t* cmd = luat_airlink_cmd_new(0x411, 1 + 8);
+    if (cmd == NULL) {
+        LLOGE("内存分配失败!!");
+        return;
+    }
+    uint64_t luat_airlink_next_cmd_id = 0;
+    luat_airlink_next_cmd_id = luat_airlink_get_next_cmd_id();
+    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);
+}
+
 static void rx_data_input2(int uart_id, uint32_t data_len) {
     // LLOGD("执行uart read %d %d", uart_id, data_len);
     uint64_t luat_airlink_next_cmd_id = 0;
@@ -90,6 +107,7 @@ int luat_airlink_cmd_exec_uart_setup(luat_airlink_cmd_t* cmd, void* userdata) {
             luat_rtos_task_create(&rx_thread, 4 * 1024, 50, "airlink_rx", rx_thread_main, NULL, 0);
         }
         luat_uart_ctrl(uart->id, LUAT_UART_SET_RECV_CALLBACK, rx_data_input);
+        luat_uart_ctrl(uart->id, LUAT_UART_SET_SENT_CALLBACK, tx_sent_cb);
     }
     return ret;
 }