// 默认显示主界面
//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);
}
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");
//传入状态赋值
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);
}
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;
}
// 更新状态检查
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);
m_bootCat1OtaFromVer47 = false;
m_bootCat1OtaAwaitNetwork = false;
m_bootCat1OtaUrlsPending = false;
+ currentView_model = -1;
+ currentSubView_model = -1;
}
void ThunderBirdModel::PrepareCat1NextRoundAfterSuccess()