瀏覽代碼

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

Dozingfiretruck 1 年之前
父節點
當前提交
32146795ac
共有 1 個文件被更改,包括 4 次插入5 次删除
  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) {
 static int l_spi_recv(lua_State *L) {
     luat_zbuff_t* buff = NULL;
     luat_zbuff_t* buff = NULL;
     char* recv_buff = NULL;
     char* recv_buff = NULL;
-    luaL_Buffer b = {0};
     int ret = 0;
     int ret = 0;
     int len = luaL_optinteger(L, 2, 1);
     int len = luaL_optinteger(L, 2, 1);
     if (len <= 0) {
     if (len <= 0) {
@@ -419,11 +418,10 @@ static int l_spi_recv(lua_State *L) {
         }
         }
     }
     }
     else {
     else {
-        luaL_buffinitsize(L, &b, len);
-        recv_buff = b.b;
+        recv_buff = (char *)luat_heap_malloc(len);
     }
     }
     if(recv_buff == NULL) {
     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;
         return 0;
     }
     }
     
     
@@ -452,7 +450,8 @@ static int l_spi_recv(lua_State *L) {
     }
     }
     
     
     if (buff == NULL) {
     if (buff == NULL) {
-        luaL_pushresult(&b);
+        lua_pushlstring(L, recv_buff, ret);
+        luat_heap_free(recv_buff);
     }
     }
     else {
     else {
         buff->used += len;
         buff->used += len;