deviceInfo += "设备iccid:" + std::string(uapi_ln_get_device_iccid()) + "\n";
deviceInfo += "设备version:" + std::string(uapi_ln_get_device_version()) + "\n";
deviceInfo += "设备model:" + std::string(uapi_ln_get_device_model()) + "\n";
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "设备连接状态:%d", ln_ws_get_connection_state());
+ switch ((int)ln_ws_get_connection_state()) {
+ case 0:
+ deviceInfo += "设备连接状态:未连接 " +std::to_string(ln_ws_get_connection_state());
+ break;
+ case 1:
+ deviceInfo += "设备连接状态:连接中 " +std::to_string(ln_ws_get_connection_state());
+ break;
+ case 2:
+ deviceInfo += "设备连接状态:连接成功 " +std::to_string(ln_ws_get_connection_state());
+ break;
+ case 3:
+ deviceInfo += "设备连接状态:休眠状态 " +std::to_string(ln_ws_get_connection_state());
+ break;
+ case 4:
+ deviceInfo += "设备连接状态:重连执行中 " +std::to_string(ln_ws_get_connection_state());
+ break;
+ default:
+ deviceInfo += "设备连接状态:未知状态 " +std::to_string(ln_ws_get_connection_state());
+ break;
+ }
return deviceInfo;
}
char g_ln_device_user_id[64] = {0}; // 设备绑定用户ID
static int g_ln_is_file_downloading = 0; // 是否正在下载文件
char g_ln_character_id[64] = {0}; // 角色ID
+static int g_ln_file_download_type = LN_FILE_DOWNLOAD_TYPE_NONE; // 文件下载类型
/* 简单的字符串读写(以.bin形式读写原始字节,末尾补'\0')*/
static int ln_read_string_file(const char *file_path, char **out_str)
return g_ln_is_file_downloading;
}
+/* 获取当前文件下载类型 */
+int uapi_ln_get_file_download_type(void)
+{
+ return g_ln_file_download_type;
+}
+/* 设置当前文件下载类型 */
+void uapi_ln_set_file_download_type(int type)
+{
+ g_ln_file_download_type = type;
+}
+
/* 获取ota包大小 */
static int g_ln_ota_package_size = 0;
int uapi_ln_get_ota_package_size(void)
// return;
// }
- const char *json_str = data_msg->raw_json;
+ const char *json_str = NULL;
+ if(data_msg->raw_json)
+ {
+ json_str = data_msg->raw_json;
+ }
const char *message_id = data_msg->message_id;
const char *cmd_str = data_msg->command_str;
- printf("[WS] cmd=%d message_id=%s cmd_str=%s\n", (int)type, message_id ? message_id : "", cmd_str ? cmd_str : "");
+ // printf("[WS] cmd=%d message_id=%s cmd_str=%s\n", (int)type, message_id ? message_id : "", cmd_str ? cmd_str : "");
switch (type)
{
else if (mail.cmd == LN_HTTP_SERVICE_CMD_SCHEDULE_REMINDER)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVICE_CMD_SCHEDULE_REMINDER] 日程提醒");
- ln_parse_schedule_reminder(mail.data, mail.len);
+ if(uapi_ln_get_file_download_type() == LN_FILE_DOWNLOAD_TYPE_NONE && uapi_ln_is_file_downloading() == 0)
+ {
+ ln_parse_schedule_reminder(mail.data, mail.len);
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVICE_CMD_SCHEDULE_REMINDER] 文件下载类型:%d,文件下载状态:%d,跳过处理",uapi_ln_get_file_download_type(), uapi_ln_is_file_downloading());
+ }
}
else if(mail.cmd == LN_HTTP_SERVICE_CMD_TIMELINE_GET_STATUS)
{
char *scheduleName; // 日程名称
} ScheduleReminderConfig;
+/* 文件下载类型 */
+typedef enum
+{
+ LN_FILE_DOWNLOAD_TYPE_NONE = 0, /* 无下载 */
+ LN_FILE_DOWNLOAD_TYPE_SCREEN_IMAGE = 1, /* 屏保下载 */
+ LN_FILE_DOWNLOAD_TYPE_EMOJI = 2, /* 表情下载 */
+} LnFileDownloadType;
+
/* 初始化 LN HTTP 服务 */
errcode_t uapi_ln_http_server_init(void);
/* 通用发送接口:向 LN HTTP 发送队列投递消息 */
void uapi_ln_set_character_id(const char *character_id);
//获取当前是否正在下载文件
int uapi_ln_is_file_downloading(void);
+//获取当前文件下载类型,0:无下载,1:屏保下载,2:表情下载
+int uapi_ln_get_file_download_type(void);
+//设置当前文件下载类型
+void uapi_ln_set_file_download_type(int type);
/* 获取ota包大小 */
int uapi_ln_get_ota_package_size(void);
/* 设置ota包大小 */
//如果本地有文件先删除文件
uapi_delete_files(LN_DEVICE_SCREEN_IMAGE_FILE);
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[DEVICE_CHARACTER] 屏保下载URL: %s, 保存路径: %s", url, save_path);
+ uapi_ln_set_file_download_type(LN_FILE_DOWNLOAD_TYPE_SCREEN_IMAGE);
int ret = uapi_ln_download_file_resume_with_retry(url, save_path, 5);
if (ret == 0)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DEVICE_CHARACTER] 屏保下载失败");
push_download_fail_notification(DOWNLOAD_FILE_TYPE_SCREEN_IMAGE);
}
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DEVICE_CHARACTER] 屏保下载结束,ret=%d", ret);
+ uapi_ln_set_file_download_type(LN_FILE_DOWNLOAD_TYPE_NONE);
/* 一次性使用后释放 */
free(g_ln_pending_screen_image_url);
g_ln_pending_screen_image_url = NULL;
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DEVICE_CHARACTER] 屏保图片不为空,下载屏保图片");
/* 解析阶段先拷贝URL,避免稍后清理结构体后URL丢失 */
ln_set_pending_screen_image(g_ln_character_config.avatar_screen_image);
- push_download_file_notification(DOWNLOAD_FILE_TYPE_SCREEN_IMAGE);
+ if(uapi_ln_get_file_download_type() == LN_FILE_DOWNLOAD_TYPE_NONE && uapi_ln_is_file_downloading() == 0)
+ {
+ push_download_file_notification(DOWNLOAD_FILE_TYPE_SCREEN_IMAGE);
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVICE_CMD_DOWNLOAD_SCREEN_IMAGE] 文件下载类型:%d,文件下载状态:%d,跳过处理",uapi_ln_get_file_download_type(), uapi_ln_is_file_downloading());
+ }
+
// 改为无参发送:由接收线程读取全局配置并下载
//do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_DOWNLOAD_SCREEN_IMAGE, NULL, 0);
}
void ln_start_emoji_download(void)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DOWNLOAD] 启动表情下载任务");
+ uapi_ln_set_file_download_type(LN_FILE_DOWNLOAD_TYPE_EMOJI);
if (g_emoji_package.emojiCount <= 0 || !g_emoji_package.emojis)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DOWNLOAD] no emojis to download");
}
// 下载表情
ln_emoji_download(&g_emoji_package);
+ uapi_ln_set_file_download_type(LN_FILE_DOWNLOAD_TYPE_NONE);
}
/* 解析下载表情命令JSON */
// 解析完成后启动下载任务(通过发送队列触发下载逻辑)
// 说明:下载所需信息已填充到全局 g_emoji_package,触发命令无需携带负载
//通知ui切换slice下载表情
- push_download_file_notification(DOWNLOAD_FILE_TYPE_EMOJI);
- //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_DOWNLOAD_EMOJI, NULL, 0);
-
- ln_ws_send_download_emoji_ack(g_emoji_package.characterId, g_emoji_package.eyesColor, g_emoji_package.eyesShape, true, "下载表情");
+ if(uapi_ln_get_file_download_type() == LN_FILE_DOWNLOAD_TYPE_NONE && uapi_ln_is_file_downloading() == 0)
+ {
+ push_download_file_notification(DOWNLOAD_FILE_TYPE_EMOJI);
+ ln_ws_send_download_emoji_ack(g_emoji_package.characterId, g_emoji_package.eyesColor, g_emoji_package.eyesShape, true, "下载表情");
+ }
+ else
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVICE_CMD_DOWNLOAD_EMOJI] 文件下载类型:%d,文件下载状态:%d,跳过处理",uapi_ln_get_file_download_type(), uapi_ln_is_file_downloading());
+ ln_ws_send_download_emoji_ack(g_emoji_package.characterId, g_emoji_package.eyesColor, g_emoji_package.eyesShape, false, "已有文件正在下载中,跳过下载");
+ }
// 清理资源
cJSON_Delete(root);
free(text);