bool IsBatterySufficient() const;
bool IsMemorySufficient() const;
+ // 夜间更新状态管理
+ void SetNightUpdateEnabled(bool enabled);
+ bool IsNightUpdateEnabled() const;
+ void ClearNightUpdateStatus(); // 更新成功后清除状态
+
void HandleDownloadSuccess(int type);
void HandleDownloadProgress(int progress);
void HandleDownloadFail(int type);
// 状态栏更新定时器
void* m_statusBarTimer; // 状态栏更新定时器
bool m_statusBarTimerActive; // 定时器激活状态
+
+ // 夜间更新状态
+ bool m_nightUpdateEnabled; // 夜间更新是否启用
};
}
#include "wearable_log.h"
#include "ln_api.h"
#include "custom_utils.h"
+#include "kv_store.h"
#include "battery_hal.h"
#include "battery_service.h"
#include "custom_runtime.h"
// 初始化状态栏定时器
m_statusBarTimer = nullptr;
m_statusBarTimerActive = false;
+
+ // 初始化夜间更新状态
+ m_nightUpdateEnabled = false;
+
+ // 从KV存储中读取夜间更新状态
+ char temp[10] = { 0 };
+ (void)UtilsGetValue("night_update_enabled", temp, 10);
+ if(strcmp(temp, "1") == 0)
+ {
+ m_nightUpdateEnabled = true;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaModel: Night update is enabled from KV storage");
+ }
}
OtaModel::~OtaModel()
if(OtaDownloadView::GetInstance())
{
OtaView::GetInstance()->ChangeView(OtaView::OTA_VIEW_DOWNLOAD, OtaView::OTA_VIEW_UPDATE_SUCCESS);
- OtaDownloadView::GetInstance()->UpdateDownloadSuccess("下载失败");
+ OtaSuccessView::GetInstance()->UpdateDownloadSuccess("下载失败");
+ }
+
+ }
+
+ /*************************夜间更新状态管理*************************/
+ void OtaModel::SetNightUpdateEnabled(bool enabled)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaModel::SetNightUpdateEnabled: %d", enabled);
+ m_nightUpdateEnabled = enabled;
+
+ // 保存到KV存储
+ if (enabled) {
+ UtilsSetValue("night_update_enabled", "1");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaModel: Night update enabled and saved to KV storage");
+ } else {
+ UtilsSetValue("night_update_enabled", "0");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaModel: Night update disabled and saved to KV storage");
}
+ }
+ bool OtaModel::IsNightUpdateEnabled() const
+ {
+ return m_nightUpdateEnabled;
+ }
+
+ void OtaModel::ClearNightUpdateStatus()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaModel::ClearNightUpdateStatus: Clearing night update status");
+ m_nightUpdateEnabled = false;
+ UtilsSetValue("night_update_enabled", "0");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaModel: Night update status cleared from KV storage");
}
}
}
else if (currentView == OtaView::OTA_VIEW_NIGHT_UPDATE) {
//夜间升级
- //夜间升级操作
+ //夜间升级操作 - 设置夜间更新状态为启用
+ OtaModel::GetInstance()->SetNightUpdateEnabled(true);
OtaView::GetInstance()->ChangeView(OtaView::OTA_VIEW_NIGHT_UPDATE, OtaView::OTA_VIEW_NIGHT_UPDATE_SUCCESS);
}
else if (currentView == OtaView::OTA_VIEW_NIGHT_UPDATE_SUCCESS || currentView == OtaView::OTA_VIEW_UPDATE_SUCCESS) {
//夜间升级成功
+ // 清除夜间更新状态
+ if(currentView == OtaView::OTA_VIEW_UPDATE_SUCCESS)
+ OtaModel::GetInstance()->ClearNightUpdateStatus();
ThunderBirdModel::GetInstance()->ResetOtaStatus();
NativeAbility::GetInstance().SwitchSlice(VIEW_THUNDER_BIRD);
}
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Background image added to ScrollView");
}
- int otaStatus = ThunderBirdModel::GetInstance()->GetOtaStatus();
- if(otaStatus == OTA_UI_STATUS_OPTIONAL_START)//选择升级
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "选择升级");
- ChangeView(MAX_OTA_VIEW, OTA_VIEW_NORMAL);
- }
- else if(otaStatus == OTA_UI_STATUS_FORCE_START)//强制升级
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "强制升级");
- ChangeView(MAX_OTA_VIEW, OTA_VIEW_UPDATE_NOW);
- }
- else //下载界面,需要根据文件下载类型判断
- {
- int downloadFileType = ThunderBirdModel::GetInstance()->GetDownloadFile();
- if(downloadFileType != -1)
+ // 检查夜间更新状态
+ if (OtaModel::GetInstance()->IsNightUpdateEnabled()) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测到夜间更新已启用,直接开始更新");
+ // 如果夜间更新已启用,直接进入更新流程
+ ChangeView(MAX_OTA_VIEW, OTA_VIEW_COUNTDOWN);
+ }
+ else {
+ int otaStatus = ThunderBirdModel::GetInstance()->GetOtaStatus();
+ if(otaStatus == OTA_UI_STATUS_OPTIONAL_START)//选择升级
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "选择升级");
+ ChangeView(MAX_OTA_VIEW, OTA_VIEW_NORMAL);
+ }
+ else if(otaStatus == OTA_UI_STATUS_FORCE_START)//强制升级
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "强制升级");
+ ChangeView(MAX_OTA_VIEW, OTA_VIEW_UPDATE_NOW);
+ }
+ else //下载界面,需要根据文件下载类型判断
{
- ChangeView(MAX_OTA_VIEW, OTA_VIEW_DOWNLOAD);
- if(OtaDownloadView::GetInstance())
+ int downloadFileType = ThunderBirdModel::GetInstance()->GetDownloadFile();
+ if(downloadFileType != -1)
{
- OtaDownloadView::GetInstance()->SetDownloadType(downloadFileType);
+ ChangeView(MAX_OTA_VIEW, OTA_VIEW_DOWNLOAD);
+ if(OtaDownloadView::GetInstance())
+ {
+ OtaDownloadView::GetInstance()->SetDownloadType(downloadFileType);
+ }
}
+
}
-
}