diff --git a/services/engine/etc/updater_sa.cfg b/services/engine/etc/updater_sa.cfg index 28a8eee7398988c93bed16862cf04b976d06c0c7..acef92146654788dfcdeb9eb085597788b8e78a7 100644 --- a/services/engine/etc/updater_sa.cfg +++ b/services/engine/etc/updater_sa.cfg @@ -12,8 +12,7 @@ "mkdir /data/update 0770 update update", "mkdir /data/update/ota_package 0770 update update", "mkdir /data/update/ota_package/firmware 0770 update update", - "mkdir /data/update/ota_package/firmware/versions 0770 update update", - "start updater_sa" + "mkdir /data/update/ota_package/firmware/versions 0770 update update" ] } ], @@ -24,7 +23,8 @@ "uid" : "update", "gid" : ["update", "netsys_socket"], "permission" : [ - "ohos.permission.UPDATE_SYSTEM" + "ohos.permission.UPDATE_SYSTEM", + "ohos.permission.GET_NETWORK_INFO" ], "secon" : "u:r:updater_sa:s0" } diff --git a/services/engine/sa_profile/3006.json b/services/engine/sa_profile/3006.json index a25f447a3ca8a27296f83708391e9c5de9329164..8e3f0ac5975d0f4c3cf629c78a936b00d5d12c55 100644 --- a/services/engine/sa_profile/3006.json +++ b/services/engine/sa_profile/3006.json @@ -4,11 +4,25 @@ { "name": 3006, "libpath": "libupdateservice.z.so", - "run-on-create": true, + "run-on-create": false, "distributed": false, "bootphase": "BootStartPhase", "dump-level": 1, - "auto-restart" : true + "auto-restart" : true, + "start-on-demand": { + "allow-update": true, + "commonevent": [ + { + "name": "usual.event.BOOT_COMPLETED" + } + ], + "timedevent": [ + { + "name": "loopevent", + "value": "14400" + } + ] + } } ] } \ No newline at end of file diff --git a/services/firmware/common/include/firmware_update_helper.h b/services/firmware/common/include/firmware_update_helper.h index 1a2e24348fb8f983c7dc5c69b80aee12555be716..a0e2336cb20b7366e1a13328cffe0cc6b0bba3b3 100644 --- a/services/firmware/common/include/firmware_update_helper.h +++ b/services/firmware/common/include/firmware_update_helper.h @@ -46,7 +46,7 @@ public: static void BuildCurrentVersionInfo(CurrentVersionInfo ¤tVersionInfo); static void BuildNewVersionInfo(const std::vector &components, std::vector &versionComponents); - + static bool IsUpgradeFailed(UpgradeStatus status); static std::string BuildTaskId(const std::vector &componentList); static InstallType GetInstallType(); diff --git a/services/firmware/common/src/firmware_update_helper.cpp b/services/firmware/common/src/firmware_update_helper.cpp index 3f05c8420d3afee414f61402632fbd796143840e..adc966162e187802fba48dd19dc300374255e605 100644 --- a/services/firmware/common/src/firmware_update_helper.cpp +++ b/services/firmware/common/src/firmware_update_helper.cpp @@ -35,7 +35,6 @@ std::string FirmwareUpdateHelper::BuildTaskId(const std::vector preferencesUtil = DelayedSingleton::GetInstance(); FirmwareTask task; FirmwareTaskOperator firmwareTaskOperator; @@ -59,6 +58,15 @@ InstallType FirmwareUpdateHelper::GetInstallType() return installType; } +bool FirmwareUpdateHelper::IsUpgradeFailed(UpgradeStatus status) +{ + return status == UpgradeStatus::DOWNLOAD_FAIL || + status == UpgradeStatus::PACKAGE_TRANS_FAIL || + status == UpgradeStatus::INSTALL_FAIL || + status == UpgradeStatus::UPDATE_FAIL || + status == UpgradeStatus::VERIFY_FAIL; +} + VersionComponent FirmwareUpdateHelper::BuildHotaVersionComponent(std::vector &hotaComponents) { VersionComponent hotaVersionComponent; diff --git a/services/firmware/upgrade/flow/src/firmware_manager.cpp b/services/firmware/upgrade/flow/src/firmware_manager.cpp index 2d03e1d3a7315871d372a5b43df13dd8685e9f87..b347c79bd5e1a4f27d64371785503950ab75640e 100644 --- a/services/firmware/upgrade/flow/src/firmware_manager.cpp +++ b/services/firmware/upgrade/flow/src/firmware_manager.cpp @@ -119,7 +119,7 @@ void FirmwareManager::RestoreUpdate() return; } - if (firmwareTask.status == UpgradeStatus::INSTALLING || firmwareTask.status == UpgradeStatus::INSTALL_SUCCESS) { + if (firmwareTask.status == UpgradeStatus::INSTALLING) { HandleBootInstallOnStatusProcess(firmwareTask); return; } @@ -270,7 +270,7 @@ void FirmwareManager::DoClearError(BusinessError &businessError) FIRMWARE_LOGI("DoClearError has no task"); return; } - if (!UpdateHelper::IsUpgradeFailed(task.status)) { + if (!FirmwareUpdateHelper::IsUpgradeFailed(task.status)) { businessError.Build(CallResult::FAIL, "please check status before clear error"); businessError.AddErrorMessage(CAST_INT(DUPDATE_ERR_UPDATE_COMMON_ERROR), "please check status before clear error"); @@ -380,6 +380,7 @@ void FirmwareManager::HandleBootUpdateSuccess(const FirmwareTask &task, versionComponent.upgradeAction = UpgradeAction::UPGRADE; versionComponent.displayVersion = component.targetBlDisplayVersionNumber; versionComponent.innerVersion = component.targetBlVersionNumber; + versionComponent.componentExtra = JsonBuilder().Append("{}").ToJson(); versionComponents.push_back(versionComponent); } @@ -407,6 +408,7 @@ void FirmwareManager::HandleBootUpdateFail(const FirmwareTask &task, versionComponent.upgradeAction = UpgradeAction::UPGRADE; versionComponent.displayVersion = component.targetBlDisplayVersionNumber; versionComponent.innerVersion = component.targetBlVersionNumber; + versionComponent.componentExtra = JsonBuilder().Append("{}").ToJson(); versionComponents.push_back(versionComponent); }