From 38c934a556b9c687c735cdbb1be89649a3824498 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=A2=81=E6=B8=85=E6=A2=A6?= <3449750381@qq.com> Date: Sun, 21 Sep 2025 04:00:44 +0000 Subject: [PATCH] Merge #2352 into sdk650pathc0423 from refs/changes/2352/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 袁清梦 * refs/changes/2352/head: (2 commits squashed) - 增加网络状态判断 - Merge branch 'sdk650pathc0423' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423 Signed-off-by: Caisking <3449750381@qq.com> Merged-by: Caisking <3449750381@qq.com> CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/2352 --- .../thunderbird/include/ThunderBirdModel.h | 22 +- .../thunderbird/src/ThunderBirdMainView.cpp | 14 +- .../thunderbird/src/ThunderBirdModel.cpp | 188 ++++++++++++++++-- 3 files changed, 197 insertions(+), 27 deletions(-) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h index cc7bc996b..3b30d5607 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h @@ -135,7 +135,18 @@ namespace OHOS // IMEI状态管理函数 bool IsIMEIValid() const; void CheckIMEIStatus(); - + void SetIMEIValid(bool valid); + + // 网络状态管理函数 + int GetSimStatus() const; + int GetCat1PowerStatus() const; + int GetSignalStrength() const; + int GetNetworkStatus() const; + int GetNetworkType() const; + void UpdateNetworkStatus(); + bool HasNetwork() const; + bool IsNetworkStatusChanged() const; + void SetNetworkStatusChanged(bool changed); // 对话状态相关函数 int GetConversationStatus(); @@ -174,6 +185,15 @@ namespace OHOS // IMEI状态管理 bool m_imeiValid; // IMEI是否有效标志位 bool m_imeiChecked; // IMEI是否已检查过 + + // 网络状态管理 + int m_simStatus; // SIM卡状态 + int m_cat1PowerStatus; // CAT1电源状态 + int m_signalStrength; // 信号强度 + int m_networkStatus; // 网络状态 + int m_networkType; // 网络类型 + bool m_hasNetwork; // 网络连接标志位 + bool m_networkStatusChanged; // 网络状态变化标志位 }; } diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp index 62482c168..b7cefa30b 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp @@ -867,11 +867,15 @@ namespace OHOS void ThunderBirdMainView::updateSignalDisplay() // 信号接收 { - int sim = uapi_dev_runtime_get_cat1_simstat(); - int cat1_powerOn = uapi_dev_runtime_get_cat1_powerstat(); - int signal = uapi_dev_runtime_get_cat1_signal(); - int network_on = uapi_dev_runtime_get_cat1_networkstat(); - int cat1_network_type = uapi_dev_runtime_get_cat1_networtype(); + // 更新网络状态 + ThunderBirdModel::GetInstance()->UpdateNetworkStatus(); + + // 从Model获取网络状态信息 + int sim = ThunderBirdModel::GetInstance()->GetSimStatus(); + int cat1_powerOn = ThunderBirdModel::GetInstance()->GetCat1PowerStatus(); + int signal = ThunderBirdModel::GetInstance()->GetSignalStrength(); + int network_on = ThunderBirdModel::GetInstance()->GetNetworkStatus(); + int cat1_network_type = ThunderBirdModel::GetInstance()->GetNetworkType(); // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sim = %d", sim); // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cat1_powerOn = %d", cat1_powerOn); // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "signal = %d", signal); diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp index 9d0949761..72bf9808b 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp @@ -58,7 +58,10 @@ m_reminderHideActive(false), m_reminderHideTime(0), m_otaCountdownActive(false), m_otaCountdownValue(0), m_countUpActive(false), m_countUpValue(0), m_countUpTarget(0), - m_imeiValid(false), m_imeiChecked(false) + m_imeiValid(false), m_imeiChecked(false), + m_simStatus(0), m_cat1PowerStatus(0), m_signalStrength(0), + m_networkStatus(0), m_networkType(0), + m_hasNetwork(false), m_networkStatusChanged(false) { // 初始化时加载提醒数据 // LoadRemindersFromFile(); @@ -141,10 +144,10 @@ m_reminderHideTime = intervalMs / 1000; // 转换为秒数 // 先隐藏全部提醒界面 - auto *reminder = ThunderBirdReminderView::GetInstance(); + auto *reminder = ThunderBirdReminderView::GetInstance(); if (reminder != nullptr) { - reminder->HideAll(); - } + reminder->HideAll(); + } // 确保时间显示定时器正在运行 if (m_timeDisplayTimer == nullptr) { @@ -322,8 +325,8 @@ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::StartBootOperation: 未绑定"); return 0; } - return 1; - } + return 1; + } //判断是否绑定 ThunderBirdModel::BindingStatus ThunderBirdModel::CheckBindingStatus() { @@ -383,7 +386,7 @@ { return g_isRecording; } - + bool ThunderBirdModel::StopRecording() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::StopRecording"); @@ -847,20 +850,20 @@ - /* - 1、新手引导 - 判断是否绑定 返回,0:绑定,1:未绑定;2:没有网络 使用枚举 - 2、对话 - 2.1 录音 - 开始录音接口 - 停止录音接口 - 2.2 发送录音接口 - 2.3 接收回答数据 - 2.4 对话文本获取接口 - 2.5 对话结束接口 - 3、哄睡模式 - 4、事项提醒 - */ + /* + 1、新手引导 + 判断是否绑定 返回,0:绑定,1:未绑定;2:没有网络 使用枚举 + 2、对话 + 2.1 录音 + 开始录音接口 + 停止录音接口 + 2.2 发送录音接口 + 2.3 接收回答数据 + 2.4 对话文本获取接口 + 2.5 对话结束接口 + 3、哄睡模式 + 4、事项提醒 + */ // ==================== 时间显示定时器实现 ==================== @@ -1005,6 +1008,26 @@ */ void ThunderBirdModel::StatusCallback() { + // ==================== 网络状态处理 ==================== + // 更新网络状态信息(包括SIM卡、信号强度、网络连接等) + UpdateNetworkStatus(); + + // 检查网络状态是否发生变化 + if (IsNetworkStatusChanged()) { + if (HasNetwork()) { + // 网络连接成功,调用HTTP服务获取设备Token + do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN, NULL, 0); + // 获取一下OTA 是否有最新版本 + ota_update_boot(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Network connected, calling HTTP service"); + } else { + // 网络断开,记录状态变化日志 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Network disconnected"); + } + // 重置网络状态变化标志位,避免重复处理 + SetNetworkStatusChanged(false); + } + // 更新设备状态 UpdateDeviceStatus(); @@ -1201,6 +1224,129 @@ WEARABLE_LOGD("IMEI status checked: valid=%d", m_imeiValid); } + // ==================== 网络状态管理函数实现 ==================== + + /** + * @brief 获取SIM卡状态 + * @return SIM卡状态值 + * @note 0=无SIM卡,1=有SIM卡,其他值表示SIM卡异常状态 + */ + int ThunderBirdModel::GetSimStatus() const + { + return m_simStatus; + } + + /** + * @brief 获取CAT1模块电源状态 + * @return CAT1电源状态值 + * @note 0=关机,1=开机,其他值表示电源异常状态 + */ + int ThunderBirdModel::GetCat1PowerStatus() const + { + return m_cat1PowerStatus; + } + + /** + * @brief 获取信号强度 + * @return 信号强度值 + * @note 信号强度范围通常为0-31,数值越大信号越强 + */ + int ThunderBirdModel::GetSignalStrength() const + { + return m_signalStrength; + } + + /** + * @brief 获取网络连接状态 + * @return 网络连接状态值 + * @note 0=未连接,1=已连接,其他值表示连接异常状态 + */ + int ThunderBirdModel::GetNetworkStatus() const + { + return m_networkStatus; + } + + /** + * @brief 获取网络类型 + * @return 网络类型值 + * @note 不同数值代表不同的网络类型(2G/3G/4G/5G等) + */ + int ThunderBirdModel::GetNetworkType() const + { + return m_networkType; + } + + /** + * @brief 更新网络状态信息 + * @details 从底层API获取最新的网络状态信息,并检测状态变化 + * @note 此函数会更新所有网络相关的状态变量,并设置变化标志位 + * + * 更新的状态包括: + * - SIM卡状态 (m_simStatus) + * - CAT1电源状态 (m_cat1PowerStatus) + * - 信号强度 (m_signalStrength) + * - 网络连接状态 (m_networkStatus) + * - 网络类型 (m_networkType) + * - 网络连接标志位 (m_hasNetwork) + * - 状态变化标志位 (m_networkStatusChanged) + */ + void ThunderBirdModel::UpdateNetworkStatus() + { + // 保存之前的网络状态,用于变化检测 + int previousNetworkStatus = m_networkStatus; + bool previousHasNetwork = m_hasNetwork; + + // 从底层API获取最新的网络状态信息 + m_simStatus = uapi_dev_runtime_get_cat1_simstat(); // SIM卡状态 + m_cat1PowerStatus = uapi_dev_runtime_get_cat1_powerstat(); // CAT1电源状态 + m_signalStrength = uapi_dev_runtime_get_cat1_signal(); // 信号强度 + m_networkStatus = uapi_dev_runtime_get_cat1_networkstat(); // 网络连接状态 + m_networkType = uapi_dev_runtime_get_cat1_networtype(); // 网络类型 + + // 更新网络连接标志位:m_networkStatus == 1表示有网络连接 + m_hasNetwork = (m_networkStatus == 1); + + // 检测网络状态是否发生变化 + if (previousNetworkStatus != m_networkStatus || previousHasNetwork != m_hasNetwork) { + m_networkStatusChanged = true; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Network status changed: previous=%d, current=%d, hasNetwork=%d", + previousNetworkStatus, m_networkStatus, m_hasNetwork); + } + + // 记录网络状态更新日志 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Network status updated: sim=%d, power=%d, signal=%d, network=%d, type=%d, hasNetwork=%d", + m_simStatus, m_cat1PowerStatus, m_signalStrength, m_networkStatus, m_networkType, m_hasNetwork); + } + + /** + * @brief 获取网络连接状态 + * @return true表示有网络连接,false表示无网络连接 + * @note 基于m_networkStatus == 1判断网络连接状态 + */ + bool ThunderBirdModel::HasNetwork() const + { + return m_hasNetwork; + } + + /** + * @brief 检查网络状态是否发生变化 + * @return true表示网络状态发生变化,false表示无变化 + * @note 用于检测网络状态变化,避免重复处理 + */ + bool ThunderBirdModel::IsNetworkStatusChanged() const + { + return m_networkStatusChanged; + } + + /** + * @brief 设置网络状态变化标志位 + * @param changed true表示状态已变化,false表示重置标志位 + * @note 用于控制网络状态变化检测,处理完成后应重置为false + */ + void ThunderBirdModel::SetNetworkStatusChanged(bool changed) + { + m_networkStatusChanged = changed; + } } \ No newline at end of file -- 2.17.1