From b67aafdefc59b1e06f26392517736e2fb5bd9cbc Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Wed, 27 May 2026 17:42:48 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E5=A4=8D=E6=AD=BB=E6=9C=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../thunderbird/include/ThunderBirdModel.h | 2 ++ .../thunderbird/src/ThunderBirdMainView.cpp | 14 +++++++-- .../thunderbird/src/ThunderBirdModel.cpp | 31 +++++++++++++++++-- code/sdk/zhihui/leiniao/imsl_ln/ln_api.h | 2 +- 4 files changed, 42 insertions(+), 7 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 6599c6c13..68c094834 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 @@ -519,6 +519,8 @@ namespace OHOS bool m_bootCat1OtaFromVer47 = false; bool m_bootCat1OtaAwaitNetwork = false; bool m_bootCat1OtaUrlsPending = false; + /** 本开机周期已做过 1.0.47 Cat1 检查,避免 OTA 失败返回主页后反复进 OTA */ + bool m_bootCat1OtaCheckDone = false; }; } 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 8fca11b0d..e35075aed 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 @@ -571,10 +571,12 @@ namespace OHOS // 默认显示主界面 //ChangeView(MAXVIEW, THUNDERBIRD_GUIDEVIEW, 0); // 文字显示图层 - if(ThunderBirdModel::GetInstance()->GetCurrentView() != -1 && ThunderBirdModel::GetInstance()->GetCurrentSubView() != -1) { - ChangeView(MAXVIEW, ThunderBirdModel::GetInstance()->GetCurrentView(), ThunderBirdModel::GetInstance()->GetCurrentSubView()); - //清空状态 + int16_t savedView = ThunderBirdModel::GetInstance()->GetCurrentView(); + int16_t savedSubView = ThunderBirdModel::GetInstance()->GetCurrentSubView(); + if (savedView >= 0 && savedView < MAXVIEW && savedSubView != -1) { + ChangeView(MAXVIEW, savedView, savedSubView); + } ThunderBirdModel::GetInstance()->SetCurrentView(-1); ThunderBirdModel::GetInstance()->SetCurrentSubView(-1); } @@ -1184,6 +1186,12 @@ namespace OHOS void ThunderBirdMainView::ChangeView(int16_t hideView, int16_t showView, int16_t subView) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView::ChangeView hideView=%d, showView=%d, subView=%d", hideView, showView, subView); + if (showView < 0 || showView >= MAXVIEW) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "ThunderBirdMainView::ChangeView invalid showView=%d, fallback guide", showView); + showView = THUNDERBIRD_GUIDEVIEW; + subView = ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_1; + } if (hideView > MAXVIEW) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdMainView:: SystemViewId Overstep ones bounds"); 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 322204da1..ec2f352be 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 @@ -784,9 +784,23 @@ static bool IsSoftwareVersion_1_0_47(void) //传入状态赋值 void ThunderBirdModel::SetViewModel() { - currentView_model = ThunderBirdMainView::GetInstance()->GetCurrentView(); - currentSubView_model = ThunderBirdMainView::GetInstance()->GetCurrentSubView(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetViewModel: currentView_model=%d, currentSubView_model=%d", currentView_model, currentSubView_model); + ThunderBirdMainView *mainView = ThunderBirdMainView::GetInstance(); + if (mainView == nullptr) { + WEARABLE_LOGW(WEARABLE_LOG_MODULE_APP, "SetViewModel: ThunderBirdMainView null, skip"); + return; + } + int16_t view = mainView->GetCurrentView(); + int16_t subView = mainView->GetCurrentSubView(); + if (view < 0 || view >= MAXVIEW) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetViewModel: invalid view=%d, reset saved state", view); + currentView_model = -1; + currentSubView_model = -1; + return; + } + currentView_model = view; + currentSubView_model = subView; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetViewModel: currentView_model=%d, currentSubView_model=%d", + currentView_model, currentSubView_model); } @@ -800,6 +814,12 @@ static bool IsSoftwareVersion_1_0_47(void) void ThunderBirdModel::TryEnterBootCat1OtaSliceIfNeeded() { #ifdef SUPPORT_CAT1_SERVICE + if (m_bootCat1OtaCheckDone) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "TryEnterBootCat1OtaSliceIfNeeded: already checked this boot, skip"); + return; + } + m_bootCat1OtaCheckDone = true; if (!IsSoftwareVersion_1_0_47()) { return; } @@ -830,6 +850,9 @@ static bool IsSoftwareVersion_1_0_47(void) // 更新状态检查 if(status == 1 || status == 2 || status == 5 || status == OTA_UI_STATUS_CAT1_PY34_FAIL)//OTA升级,3为py升级 { + if (status == OTA_UI_STATUS_CAT1_PY34_FAIL) { + m_bootCat1OtaCheckDone = true; + } OtaModel::GetInstance()->SetOtaStatus(status); SetViewModel(); //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_WS_ENTER_SLEEP, NULL, 0); @@ -858,6 +881,8 @@ static bool IsSoftwareVersion_1_0_47(void) m_bootCat1OtaFromVer47 = false; m_bootCat1OtaAwaitNetwork = false; m_bootCat1OtaUrlsPending = false; + currentView_model = -1; + currentSubView_model = -1; } void ThunderBirdModel::PrepareCat1NextRoundAfterSuccess() diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h index 6736e5841..c81523da8 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h @@ -28,7 +28,7 @@ typedef struct /* ============================== 公共宏与URL路径 ============================== */ #define LN_VOICE_CHAT_ENABLED 0 //声纹锁开启宏 -#define LN_ENV_PRODUCTION 0 //正式环境 +#define LN_ENV_PRODUCTION 1 //正式环境 /* 接口基础配置 - 如需切换环境/密钥,在此调整 */ #if LN_ENV_PRODUCTION #define LN_BASE_URL "https://ambybox-o.api.leiniao.com/ambybox-device-api" //正式环境服务器地址 -- 2.17.1