From f3fde1ab594112117307f6ecbac2548458c32165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Tue, 13 Aug 2024 19:07:22 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9ab=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=88=A4=E6=96=AD=20Signed-off-by:=20?= =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../include/firmware_sys_installer_install.h | 4 + .../src/firmware_sys_installer_install.cpp | 75 ++++++++++++++++--- 2 files changed, 68 insertions(+), 11 deletions(-) diff --git a/services/firmware/upgrade/install/include/firmware_sys_installer_install.h b/services/firmware/upgrade/install/include/firmware_sys_installer_install.h index 65954ee7..21f843a2 100644 --- a/services/firmware/upgrade/install/include/firmware_sys_installer_install.h +++ b/services/firmware/upgrade/install/include/firmware_sys_installer_install.h @@ -39,6 +39,10 @@ private: void InitInstallProgress(); int32_t WaitInstallResult(); + int32_t InitSysInstaller(); + int32_t SetSysInstallerCallback(const FirmwareComponent &firmwareComponent); + int32_t DoNormalSysInstaller(const FirmwareComponent &firmwareComponent); + private: Progress sysInstallProgress_; }; diff --git a/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp b/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp index 826e1313..cabb9faf 100644 --- a/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp +++ b/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp @@ -58,6 +58,50 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo FIRMWARE_LOGI("DoSysInstall, status=%{public}d", firmwareComponent.status); FirmwareComponent sysComponent = firmwareComponent; InitInstallProgress(); + + int32_t updateStatus = SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateStatus(); + int32_t ret = OHOS_SUCCESS; + switch (updateStatus) { + case -1: // -1 未初始化(或失败) 0 初始化 , 走正常流程 + case CAST_INT(SysInstaller::UpdateStatus::UPDATE_STATE_INIT): + ret = DoNormalSysInstaller(sysComponent); + break; + case CAST_INT(SysInstaller::UpdateStatus::UPDATE_STATE_SUCCESSFUL): + errMsg_.errorMessage = "sys installer success"; + errMsg_.errorCode = OHOS_SUCCESS; + return OHOS_SUCCESS; + case CAST_INT(SysInstaller::UpdateStatus::UPDATE_STATE_FAILED): + errMsg_.errorMessage = "sys installer failed"; + errMsg_.errorCode = OHOS_FAILURE; + return OHOS_FAILURE; + case CAST_INT(SysInstaller::UpdateStatus::UPDATE_STATE_ONGOING): + ret = SetSysInstallerCallback(sysComponent); + break; + default: + errMsg_.errorMessage = "sys installer Status is error"; + errMsg_.errorCode = OHOS_FAILURE; + return OHOS_FAILURE; + } + + if (ret != OHOS_SUCCESS) { + return ret; + } + return WaitInstallResult(); +} + +int32_t SysInstallerInstall::DoNormalSysInstaller(const FirmwareComponent &firmwareComponent) +{ + FirmwareComponent sysComponent = firmwareComponent; + if (InitSysInstaller() != OHOS_SUCCESS || SetSysInstallerCallback(sysComponent) != OHOS_SUCCESS || + StartUpdatePackageZip(sysComponent.spath) != OHOS_SUCCESS) { + return OHOS_FAILURE; + } + FIRMWARE_LOGI("DoSysInstall, DoNormalSysInstallern success"); + return OHOS_SUCCESS; +} + +int32_t SysInstallerInstall::InitSysInstaller() +{ int32_t ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SysInstallerInit(); if (ret != OHOS_SUCCESS) { FIRMWARE_LOGE("sys installer init failed"); @@ -65,15 +109,13 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo errMsg_.errorCode = DUPDATE_ERR_IPC_ERROR; return OHOS_FAILURE; } + FIRMWARE_LOGI("DoSysInstall InitSysInstaller success"); + return OHOS_SUCCESS; +} - int32_t updateStatus = SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateStatus(); - if (updateStatus != CAST_INT(SysInstaller::UpdateStatus::UPDATE_STATE_INIT)) { - FIRMWARE_LOGE("StartUnpack status: %{public}d , system busy", updateStatus); - errMsg_.errorMessage = "sys installer is busy"; - errMsg_.errorCode = ret; - return OHOS_FAILURE; - } - +int32_t SysInstallerInstall::SetSysInstallerCallback(const FirmwareComponent &firmwareComponent) +{ + FirmwareComponent sysComponent = firmwareComponent; SysInstallerExecutorCallback callback { [&](const InstallProgress &installProgress) { sysInstallProgress_ = installProgress.progress; errMsg_ = installProgress.errMsg; @@ -81,8 +123,13 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo sysComponent.progress = installProgress.progress.percent; FIRMWARE_LOGI("SysInstallerExecutorCallback status=%{public}d , progress=%{public}d", sysComponent.status, sysComponent.progress); + if (onInstallCallback_.onFirmwareProgress == nullptr) { + FIRMWARE_LOGE("SysInstallerExecutorCallback onFirmwareProgress is null"); + return; + } onInstallCallback_.onFirmwareProgress(sysComponent); } }; + sptr cb = new SysInstallerCallback(callback); if (cb == nullptr) { FIRMWARE_LOGE("sys installer callback is nullptr"); @@ -91,22 +138,28 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo return OHOS_FAILURE; } - ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SetUpdateCallback(cb); + int32_t ret = SysInstaller::SysInstallerKitsImpl::GetInstance().SetUpdateCallback(cb); if (ret != OHOS_SUCCESS) { FIRMWARE_LOGE("set sys installer callback failed"); errMsg_.errorMessage = "set sys installer callback failed"; errMsg_.errorCode = ret; return OHOS_FAILURE; } + FIRMWARE_LOGI("DoSysInstall SetSysInstallerCallback success"); + return OHOS_SUCCESS; +} - ret = SysInstaller::SysInstallerKitsImpl::GetInstance().StartUpdatePackageZip(sysComponent.spath); +int32_t SysInstallerInstall::StartUpdatePackageZip(std::string &path) +{ + auto ret = SysInstaller::SysInstallerKitsImpl::GetInstance().StartUpdatePackageZip(path); if (ret != OHOS_SUCCESS) { errMsg_.errorMessage = "sys installer StartUpdatePackageZip failed"; errMsg_.errorCode = ret; FIRMWARE_LOGE("sys installer StartUpdatePackageZip failed ret = %{public}d", ret); return OHOS_FAILURE; } - return WaitInstallResult(); + FIRMWARE_LOGI("DoSysInstall StartUpdatePackageZip success"); + return ret; } void SysInstallerInstall::InitInstallProgress() -- Gitee From 725e5d94b8943b14f72909b54015f7eeace6a671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Tue, 13 Aug 2024 11:42:43 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- .../upgrade/install/include/firmware_sys_installer_install.h | 1 + .../upgrade/install/src/firmware_sys_installer_install.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/services/firmware/upgrade/install/include/firmware_sys_installer_install.h b/services/firmware/upgrade/install/include/firmware_sys_installer_install.h index 21f843a2..07e45338 100644 --- a/services/firmware/upgrade/install/include/firmware_sys_installer_install.h +++ b/services/firmware/upgrade/install/include/firmware_sys_installer_install.h @@ -42,6 +42,7 @@ private: int32_t InitSysInstaller(); int32_t SetSysInstallerCallback(const FirmwareComponent &firmwareComponent); int32_t DoNormalSysInstaller(const FirmwareComponent &firmwareComponent); + int32_t StartUpdatePackageZip(const std::string &path); private: Progress sysInstallProgress_; diff --git a/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp b/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp index cabb9faf..59f5a1f8 100644 --- a/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp +++ b/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp @@ -149,7 +149,7 @@ int32_t SysInstallerInstall::SetSysInstallerCallback(const FirmwareComponent &fi return OHOS_SUCCESS; } -int32_t SysInstallerInstall::StartUpdatePackageZip(std::string &path) +int32_t SysInstallerInstall::StartUpdatePackageZip(const std::string &path) { auto ret = SysInstaller::SysInstallerKitsImpl::GetInstance().StartUpdatePackageZip(path); if (ret != OHOS_SUCCESS) { -- Gitee From 9490c37a3274680d8eb58c708d2a79666887cc1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Tue, 13 Aug 2024 12:22:01 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- .../upgrade/install/src/firmware_sys_installer_install.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp b/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp index 59f5a1f8..8ef2f30b 100644 --- a/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp +++ b/services/firmware/upgrade/install/src/firmware_sys_installer_install.cpp @@ -60,6 +60,7 @@ int32_t SysInstallerInstall::DoSysInstall(const FirmwareComponent &firmwareCompo InitInstallProgress(); int32_t updateStatus = SysInstaller::SysInstallerKitsImpl::GetInstance().GetUpdateStatus(); + FIRMWARE_LOGI("DoSysInstall, getUpdateStatus=%{public}d", updateStatus); int32_t ret = OHOS_SUCCESS; switch (updateStatus) { case -1: // -1 未初始化(或失败) 0 初始化 , 走正常流程 @@ -96,7 +97,7 @@ int32_t SysInstallerInstall::DoNormalSysInstaller(const FirmwareComponent &firmw StartUpdatePackageZip(sysComponent.spath) != OHOS_SUCCESS) { return OHOS_FAILURE; } - FIRMWARE_LOGI("DoSysInstall, DoNormalSysInstallern success"); + FIRMWARE_LOGI("DoSysInstall, DoNormalSysInstaller success"); return OHOS_SUCCESS; } -- Gitee