Przeglądaj źródła

fix:spi接收概率异常,接受数据上报lua丢失为null

Dozingfiretruck 1 rok temu
rodzic
commit
32146795ac
1 zmienionych plików z 4 dodań i 5 usunięć
  1. 4 5
      luat/modules/luat_lib_spi.c

+ 4 - 5
luat/modules/luat_lib_spi.c

@@ -404,7 +404,6 @@ local len = spi.recv(0, 4, buff)
 static int l_spi_recv(lua_State *L) {
     luat_zbuff_t* buff = NULL;
     char* recv_buff = NULL;
-    luaL_Buffer b = {0};
     int ret = 0;
     int len = luaL_optinteger(L, 2, 1);
     if (len <= 0) {
@@ -419,11 +418,10 @@ static int l_spi_recv(lua_State *L) {
         }
     }
     else {
-        luaL_buffinitsize(L, &b, len);
-        recv_buff = b.b;
+        recv_buff = (char *)luat_heap_malloc(len);
     }
     if(recv_buff == NULL) {
-        LLOGW("out of memory when malloc spi buff %d", recv_buff);
+        LLOGW("out of memory when malloc spi buff %d", len);
         return 0;
     }
     
@@ -452,7 +450,8 @@ static int l_spi_recv(lua_State *L) {
     }
     
     if (buff == NULL) {
-        luaL_pushresult(&b);
+        lua_pushlstring(L, recv_buff, ret);
+        luat_heap_free(recv_buff);
     }
     else {
         buff->used += len;