From 580dc89218d43b464a461440b230bb2f07c91838 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Thu, 10 Oct 2024 15:01:35 +0800 Subject: [PATCH] =?utf8?q?=E6=B6=88=E6=81=AF=EF=BC=9A=E4=BC=98=E5=8C=96?= =?utf8?q?=E6=B6=88=E6=81=AF=E7=9A=84=E6=98=BE=E7=A4=BA=E9=97=B4=E9=9A=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/message/src/MessageModel.cpp | 48 +++++++++++++------ .../msg_center/src/msg_center_customer.cpp | 2 +- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp index e8eb16fc4..d413c2d56 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp @@ -110,7 +110,7 @@ void MessageUnsubscribeTopic(Topic topic) { } // 存储消息更新的定时器 -static std::chrono::milliseconds updateDelay(1000); // 设置更新延迟,1s +static std::chrono::milliseconds updateDelay(500); // 设置更新延迟,0.5s static std::chrono::steady_clock::time_point lastUpdateTime; static bool shouldDisplayMessage = false; static ancs_data_info_t *lastMessageInfo = NULL; @@ -121,18 +121,21 @@ static void Notify(void *args, const Topic topic, Request *request) { UNUSED(topic); if (request == NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Received NULL request"); return; } - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "request %d\r\n", request->msgId); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Received request %d", request->msgId); if (request->msgId == TOPIC_EVENT_MESSAGE_UPDATA) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TOPIC_EVENT_MESSAGE_UPDATA"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "Processing TOPIC_EVENT_MESSAGE_UPDATA"); // 创建新的消息信息 ancs_data_info_t *messageInfo = new ancs_data_info_t(); if (messageInfo == NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new ancs_data_info_t fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "Failed to allocate memory for ancs_data_info_t"); return; } @@ -142,7 +145,7 @@ static void Notify(void *args, const Topic topic, Request *request) { if (rets != EOK) { delete messageInfo; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, - "memcpy_s ancs_data_info_t fail ret = %d", rets); + "memcpy_s ancs_data_info_t failed, ret = %d", rets); return; } @@ -150,17 +153,13 @@ static void Notify(void *args, const Topic topic, Request *request) { MessageModel::GetInstance().AddMessageData(messageInfo); // 加锁以保护共享变量 - std::lock_guard lock(messageMutex); + { + std::lock_guard lock(messageMutex); + shouldDisplayMessage = true; // 标记需要显示新消息 - // 更新最后一条消息信息 - if (lastMessageInfo != NULL) { - delete lastMessageInfo; // 释放之前保存的消息信息 + // 设置最后更新时间 + lastUpdateTime = std::chrono::steady_clock::now(); } - lastMessageInfo = messageInfo; // 保存新的消息信息 - shouldDisplayMessage = true; // 标记需要显示新消息 - - // 设置最后更新时间 - lastUpdateTime = std::chrono::steady_clock::now(); } // 检查是否需要显示新消息 @@ -170,7 +169,16 @@ static void Notify(void *args, const Topic topic, Request *request) { if (shouldDisplayMessage) { // 检查是否达到延迟时间 auto now = std::chrono::steady_clock::now(); - if (now - lastUpdateTime >= updateDelay) { + auto timeDiff = now - lastUpdateTime; + WEARABLE_LOGD( + WEARABLE_LOG_MODULE_APP, "Time since last update: %lld milliseconds", + std::chrono::duration_cast(timeDiff) + .count()); + + if (timeDiff >= updateDelay) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "Displaying new message after time delay"); + // 发送信息进行弹窗 if (uapi_dev_runtime_get_train_status() || uapi_dev_runtime_get_saveele_status() || @@ -183,10 +191,20 @@ static void Notify(void *args, const Topic topic, Request *request) { // 发送弹窗通知 会自动查询到数组的最新一个 CustomEventPublish(TOPIC_EVENT_MESSAGENOTE, NULL, 0); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Message popup sent"); // 发送完毕,重置标志 shouldDisplayMessage = false; // 重置状态 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "Reset shouldDisplayMessage to false"); + } else { + WEARABLE_LOGD( + WEARABLE_LOG_MODULE_APP, + "Message display delayed, waiting for next opportunity %d %d", + timeDiff, updateDelay); } + } else { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "No new message to display"); } } } diff --git a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp index 5dd3f2a27..f7234fefd 100644 --- a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp @@ -881,7 +881,7 @@ void MsgCenterNotifyMessageProc(const Topic topic, Request* req) { //unused(topic); unused(req); - WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyMessageProc !"); + // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyMessageProc !"); if (CheckPriority(topic)) { NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_THREE); NotificationManager::GetInstance()->ShowNotify(showMessageNotify, (uint16_t)topic, true); -- 2.17.1