Просмотр исходного кода

update:gnss处理转到lua任务里

alienwalker 3 лет назад
Родитель
Сommit
36f55711f0
1 измененных файлов с 18 добавлено и 3 удалено
  1. 18 3
      components/minmea/luat_lib_libgnss.c

+ 18 - 3
components/minmea/luat_lib_libgnss.c

@@ -31,7 +31,7 @@ libgnss.bind(2)
 -- libgnss.debug(true)
 
 sys.subscribe("GNSS_STATE", function(event, ticks)
-    -- event取值有 
+    -- event取值有
     -- FIXED 定位成功
     -- LOSE  定位丢失
     -- ticks是事件发生的时间,一般可以忽略
@@ -93,7 +93,7 @@ GNSS状态变化
 GNSS_STATE
 @usage
 sys.subscribe("GNSS_STATE", function(event, ticks)
-    -- event取值有 
+    -- event取值有
     -- FIXED 定位成功
     -- LOSE  定位丢失
     -- ticks是事件发生的时间,一般可以忽略
@@ -160,6 +160,21 @@ static void put_datetime(lua_State*L, struct tm* rtime) {
     lua_settable(L, -3);
 }
 
+static int32_t l_gnss_callback(lua_State *L, void* ptr){
+    rtos_msg_t* msg = (rtos_msg_t*)lua_topointer(L, -1);
+    luat_libgnss_uart_recv_cb(msg->arg1, msg->arg2);
+	return 0;
+}
+
+static void l_libgnss_uart_recv_cb(int uart_id, uint32_t data_len)
+{
+    rtos_msg_t msg = {0};
+    msg.handler = l_gnss_callback;
+    msg.arg1 = uart_id;
+    msg.arg2 = data_len;
+    luat_msgbus_put(&msg, 0);
+
+}
 /**
 处理nmea数据
 @api libgnss.parse(str)
@@ -782,7 +797,7 @@ static int l_libgnss_bind(lua_State* L) {
     }
     if (luat_uart_exist(uart_id)) {
         //uart_app_recvs[uart_id] = nmea_uart_recv_cb;
-        luat_uart_set_app_recv(uart_id, luat_libgnss_uart_recv_cb);
+        luat_uart_set_app_recv(uart_id, l_libgnss_uart_recv_cb);
     }
     if (lua_isinteger(L, 2)) {
         libgnss_route_uart_id = luaL_checkinteger(L, 2);