فهرست منبع

Merge branch 'master' of https://gitee.com/openLuat/LuatOS

zhutianhua 2 ماه پیش
والد
کامیت
a546ac3b60

+ 5 - 6
components/network/libftp/luat_ftp_client.c

@@ -449,7 +449,6 @@ static void ftp_task(void *param){
 	FTP_SUCCESS_STATE_e ftp_state = FTP_SUCCESS_NO_DATE;
 	int ret;
 	int count = 0;
-	luat_rtos_task_handle task_handle = g_s_ftp.task_handle;
 	OS_EVENT task_event;
 	uint8_t is_timeout = 0;
 
@@ -462,8 +461,8 @@ static void ftp_task(void *param){
 		ftp_state = FTP_ERROR;
 		l_ftp_cb(ftp_state);
 		luat_ftp_release();
+		luat_rtos_task_delete(g_s_ftp.task_handle);
 		g_s_ftp.task_handle = NULL;
-		luat_rtos_task_delete(task_handle);
 		return;
 	}else{
 		l_ftp_cb(ftp_state);
@@ -674,8 +673,8 @@ operation_failed:
 	if (ftp_state == FTP_SUCCESS_NO_DATE) ftp_state = FTP_SUCCESS_DATE;
 	l_ftp_cb(ftp_state);
 	luat_ftp_release();
-	g_s_ftp.task_handle = NULL;
-	luat_rtos_task_delete(task_handle);
+	luat_rtos_task_delete(g_s_ftp.task_handle);
+    g_s_ftp.task_handle = NULL;
 	return;
 wait_event_and_out:
 	while(1)
@@ -686,8 +685,8 @@ wait_event_and_out:
 			luat_ftp_release();
 			ftp_state = FTP_ERROR;
 			l_ftp_cb(ftp_state);
-			g_s_ftp.task_handle = NULL;
-			luat_rtos_task_delete(task_handle);
+			luat_rtos_task_delete(g_s_ftp.task_handle);
+            g_s_ftp.task_handle = NULL;
 			return;
 		}
 	}

+ 1 - 1
components/network/lwip22/port/luat_rtos/luat_rtos_lwip.c

@@ -273,7 +273,7 @@ void sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg)
 	user_timer->timer = luat_create_rtos_timer(luat_lwip_timer_cb, (void *)user_timer, NULL);
 	user_timer->handler = handler;
 	user_timer->args = arg;
-	luat_start_rtos_timer(user_timer, msecs, 0);
+	luat_start_rtos_timer(user_timer->timer, msecs, 0);
 }
 void sys_untimeout(sys_timeout_handler handler, void *arg)
 {

+ 1 - 1
module/Air8000/demo/aircloud/excloud_test.lua

@@ -107,7 +107,7 @@ function excloud_task_func()
         use_getip = true, -- 使用getip服务
         device_type = 1,   -- 4G设备
         auth_key = "VmhtOb81EgZau6YyuuZJzwF6oUNGCbXi",
-        transport = "mqtt",       -- 使用TCP传输
+        transport = "tcp",       -- 使用TCP传输
         auto_reconnect = true,   -- 自动重连
         reconnect_interval = 10, -- 重连间隔(秒)
         max_reconnect = 5,       -- 最大重连次数

+ 82 - 33
script/libs/excloud.lua

@@ -557,7 +557,7 @@ end
 --     for _, tlv in ipairs(tlvs) do
 --         if tlv.field_meaning == FIELD_MEANINGS.AUTH_RESPONSE then
 --             local success = (tlv.value == "OK" or tlv.value == "SUCCESS")
---             is_authenticated = success
+--             is_authenticated = true
 
 --             -- 记录认证结果到运维日志
 --             if config.aircloud_mtn_log_enabled then
@@ -1094,32 +1094,47 @@ end
 -- 发送文件上传开始通知
 local function send_file_upload_start(file_type, file_name, file_size)
     -- 构建子TLV数据
-    local sub_tlvs = ""
+    -- local sub_tlvs = ""
 
     -- 文件上传类型子TLV
-    local success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_UPLOAD_TYPE, DATA_TYPES.INTEGER, file_type)
-    if success then
-        sub_tlvs = sub_tlvs .. tlv_data
-    end
+    -- local success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_UPLOAD_TYPE, DATA_TYPES.INTEGER, file_type)
+    -- if success then
+    --     sub_tlvs = sub_tlvs .. tlv_data
+    -- end
 
     -- 文件名称子TLV
-    success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_NAME, DATA_TYPES.ASCII, file_name)
-    if success then
-        sub_tlvs = sub_tlvs .. tlv_data
-    end
+    -- success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_NAME, DATA_TYPES.ASCII, file_name)
+    -- if success then
+    --     sub_tlvs = sub_tlvs .. tlv_data
+    -- end
 
     -- 文件大小子TLV
-    success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_SIZE, DATA_TYPES.INTEGER, file_size)
-    if success then
-        sub_tlvs = sub_tlvs .. tlv_data
-    end
-
+    -- success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_SIZE, DATA_TYPES.INTEGER, file_size)
+    -- if success then
+    --     sub_tlvs = sub_tlvs .. tlv_data
+    -- end
+    local sub_tlvs = 0
     -- 主TLV(文件上传开始通知)
     local message = {
         {
             field_meaning = FIELD_MEANINGS.FILE_UPLOAD_START,
-            data_type = DATA_TYPES.BINARY,
+            data_type = DATA_TYPES.INTEGER,
             value = sub_tlvs -- 子TLV数据作为二进制值
+        },
+        {
+            field_meaning = FIELD_MEANINGS.FILE_UPLOAD_TYPE,
+            data_type = DATA_TYPES.INTEGER,
+            value = file_type
+        },
+        {
+            field_meaning = FIELD_MEANINGS.FILE_NAME,
+            data_type = DATA_TYPES.ASCII,
+            value = file_name
+        },
+        {
+            field_meaning = FIELD_MEANINGS.FILE_SIZE,
+            data_type = DATA_TYPES.INTEGER,
+            value = file_size
         }
     }
 
@@ -1127,35 +1142,55 @@ local function send_file_upload_start(file_type, file_name, file_size)
 end
 
 -- 发送文件上传完成通知
-local function send_file_upload_finish(file_type, file_name, success)
+local function send_file_upload_finish(file_type, file_name, file_success)
     -- 构建子TLV数据
-    local sub_tlvs = ""
+    -- local sub_tlvs = ""
 
-    -- 文件上传类型子TLV
-    local success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_UPLOAD_TYPE, DATA_TYPES.INTEGER, file_type)
-    if success then
-        sub_tlvs = sub_tlvs .. tlv_data
-    end
+    -- -- 文件上传类型子TLV
+    -- local success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_UPLOAD_TYPE, DATA_TYPES.INTEGER, file_type)
+    -- if success then
+    --     sub_tlvs = sub_tlvs .. tlv_data
+    -- end
 
     -- 文件名称子TLV
-    success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_NAME, DATA_TYPES.ASCII, file_name)
-    if success then
-        sub_tlvs = sub_tlvs .. tlv_data
-    end
+    -- success, tlv_data = build_tlv(FIELD_MEANINGS.FILE_NAME, DATA_TYPES.ASCII, file_name)
+    -- if success then
+    --     sub_tlvs = sub_tlvs .. tlv_data
+    -- end
 
     -- 上传结果状态子TLV
-    success, tlv_data = build_tlv(FIELD_MEANINGS.UPLOAD_RESULT_STATUS, DATA_TYPES.INTEGER, success and 0 or 1)
-    if success then
-        sub_tlvs = sub_tlvs .. tlv_data
-    end
-
+    -- success, tlv_data = build_tlv(FIELD_MEANINGS.UPLOAD_RESULT_STATUS, DATA_TYPES.INTEGER, file_success and 0 or 1)
+    -- if success then
+    --     sub_tlvs = sub_tlvs .. tlv_data
+    -- end
+    local sub_tlvs = 0
     -- 主TLV(文件上传完成通知)
     local message = {
+
         {
             field_meaning = FIELD_MEANINGS.FILE_UPLOAD_FINISH,
-            data_type = DATA_TYPES.BINARY,
+            data_type = DATA_TYPES.INTEGER,
             value = sub_tlvs -- 子TLV数据作为二进制值
+        },
+
+        {
+            field_meaning = FIELD_MEANINGS.FILE_UPLOAD_TYPE,
+            data_type = DATA_TYPES.INTEGER,
+            value = file_type
+        },
+
+        {
+            field_meaning = FIELD_MEANINGS.FILE_NAME,
+            data_type = DATA_TYPES.ASCII,
+            value = file_name
+        },
+
+        {
+            field_meaning = FIELD_MEANINGS.UPLOAD_RESULT_STATUS,
+            data_type = DATA_TYPES.INTEGER,
+            value = file_success and 0 or 1
         }
+
     }
 
     return excloud.send(message, false)
@@ -1283,6 +1318,13 @@ function excloud.upload_image(file_path, file_name)
         log.warn("[excloud]手动填写IP时不允许上传图片文件")
         return false, "手动填写IP时不允许上传图片文件"
     end
+    if not io.exists(file_path) then
+        return false, "文件不存在: " .. file_path
+    end
+    -- 没有连接时直接退出
+    if not is_connected then
+        return false, "没有连接到服务器"
+    end
     file_name = file_name or "image_" .. os.time() .. ".jpg"
 
     -- 如果没有图片上传配置,先获取
@@ -1307,6 +1349,13 @@ function excloud.upload_audio(file_path, file_name)
         log.warn("[excloud]手动填写IP时不允许上传音频文件")
         return false, "手动填写IP时不允许上传音频文件"
     end
+    if not io.exists(file_path) then
+        return false, "文件不存在: " .. file_path
+    end
+    -- 没有连接时直接退出
+    if not is_connected then
+        return false, "没有连接到服务器"
+    end
     file_name = file_name or "audio_" .. os.time() .. ".mp3"
 
     -- 如果没有音频上传配置,先获取