diff --git a/services/include/updater/updater.h b/services/include/updater/updater.h index e0e6ada9f4ec17dc27c6dd6b8a88673931fb6abb..de314e5ba6cdde786e58f621ec31cbef3548ae15 100644 --- a/services/include/updater/updater.h +++ b/services/include/updater/updater.h @@ -48,8 +48,9 @@ enum NotifyAction { GET_INSTALL_STATUS, SET_UPDATE_STATUS, GET_UPDATE_STATUS, - SEND_LOG, - RECEIVE_LOG + TRIGGER_SDUPDATE, + TRIGGER_FACTORYRST, + TRIGGER_EUPDATER, }; struct UpdaterParams { diff --git a/services/updater_main.cpp b/services/updater_main.cpp index eb16229dd602c85ca3b86963694794db66f97c09..95a21988dd57f6fe7ffa0fa295e26d69d21b168d 100644 --- a/services/updater_main.cpp +++ b/services/updater_main.cpp @@ -990,8 +990,12 @@ UpdaterStatus UpdaterFromSdcard(UpdaterParams &upParams) UPDATER_INIT_RECORD; upParams.callbackProgress = [] (float value) { UPDATER_UI_INSTANCE.ShowProgress(value); }; SetMessageToMisc(upParams.miscCmd, 0, "sdcard_update"); - UpdaterStatus status = CheckSdcardPkgs(upParams); - NotifyPreCheck(status, upParams); + UpdaterStatus status = UPDATE_SUCCESS; + if (NotifyActionResult(upParams, status, {TRIGGER_SDUPDATE}) != UPDATE_SUCCESS) { + LOG(ERROR) << "trigger sd update fail"; + return UPDATE_ERROR; + } + status = CheckSdcardPkgs(upParams); if (status != UPDATE_SUCCESS) { LOG(ERROR) << "can not find sdcard packages"; if (NotifyActionResult(upParams, status, {SET_INSTALL_STATUS, @@ -1001,6 +1005,7 @@ UpdaterStatus UpdaterFromSdcard(UpdaterParams &upParams) return UPDATE_ERROR; } status = PreSdcardUpdatePackages(upParams); + NotifyPreCheck(status, upParams); if (status == UPDATE_SUCCESS) { upParams.initialProgress += VERIFY_PERCENT; upParams.currentPercentage -= VERIFY_PERCENT; @@ -1334,37 +1339,6 @@ void RebootAfterUpdateSuccess(const UpdaterParams &upParams) NotifyReboot("", "Updater update success"); } -__attribute__((weak)) void ProcessLogs() -{ - return; -} - -void ProcessUpdateResult(PackageUpdateMode &mode, UpdaterStatus &status, UpdaterParams &upParams) -{ - if (mode == HOTA_UPDATE) { - UPDATER_UI_INSTANCE.ShowFailedPage(); - UpdaterInit::GetInstance().InvokeEvent(UPDATER_POST_INIT_EVENT); - if (upParams.forceReboot) { - Utils::UsSleep(5 * DISPLAY_TIME); // 5 : 5s - PostUpdater(true); - NotifyReboot("", "Updater night update fail"); - } - } else if (mode == SDCARD_UPDATE) { - UPDATER_UI_INSTANCE.ShowLogRes( - status == UPDATE_CORRUPT ? TR(LOGRES_VERIFY_FAILED) : TR(LOGRES_UPDATE_FAILED)); - UPDATER_UI_INSTANCE.ShowFailedPage(); - } else if (upParams.factoryResetMode == "user_wipe_data" || - upParams.factoryResetMode == "menu_wipe_data" || upParams.factoryResetMode == "factory_wipe_data") { - UPDATER_UI_INSTANCE.ShowFailedPage(); - } else if (CheckUpdateMode(USB_UPDATE_FAIL)) { - (void)UPDATER_UI_INSTANCE.SetMode(UPDATERMODE_USBUPDATE); - UPDATER_UI_INSTANCE.ShowFailedPage(); - } else { - UPDATER_UI_INSTANCE.ShowMainpage(); - UPDATER_UI_INSTANCE.SaveScreen(); - } -} - int UpdaterMain(int argc, char **argv) { [[maybe_unused]] UpdaterStatus status = UPDATE_UNKNOWN; @@ -1382,10 +1356,28 @@ int UpdaterMain(int argc, char **argv) #if !defined(UPDATER_UT) && defined(UPDATER_UI_SUPPORT) UPDATER_UI_INSTANCE.Sleep(UI_SHOW_DURATION); if (status != UPDATE_SUCCESS && status != UPDATE_SKIP) { - ProcessLogs(); - ProcessUpdateResult(mode, status, upParams); - if (mode == HOTA_UPDATE && upParams.forceReboot) { - return 0; + if (mode == HOTA_UPDATE) { + UpdaterInit::GetInstance().InvokeEvent(UPDATER_POST_INIT_EVENT); + UPDATER_UI_INSTANCE.ShowFailedPage(); + if (upParams.forceReboot) { + Utils::UsSleep(5 * DISPLAY_TIME); // 5 : 5s + PostUpdater(true); + NotifyReboot("", "Updater night update fail"); + return 0; + } + } else if (mode == SDCARD_UPDATE) { + UPDATER_UI_INSTANCE.ShowLogRes( + status == UPDATE_CORRUPT ? TR(LOGRES_VERIFY_FAILED) : TR(LOGRES_UPDATE_FAILED)); + UPDATER_UI_INSTANCE.ShowFailedPage(); + } else if (upParams.factoryResetMode == "user_wipe_data" || + upParams.factoryResetMode == "menu_wipe_data" || upParams.factoryResetMode == "factory_wipe_data") { + UPDATER_UI_INSTANCE.ShowFailedPage(); + } else if (CheckUpdateMode(USB_UPDATE_FAIL)) { + (void)UPDATER_UI_INSTANCE.SetMode(UPDATERMODE_USBUPDATE); + UPDATER_UI_INSTANCE.ShowFailedPage(); + } else { + UPDATER_UI_INSTANCE.ShowMainpage(); + UPDATER_UI_INSTANCE.SaveScreen(); } // Wait for user input NotifyAutoReboot(mode); diff --git a/services/updater_main.h b/services/updater_main.h index daf901f3479bcef8c96514d4e244b70001aec403..3118d01dc5e0662defe6998694a5e8a24cdf38f9 100644 --- a/services/updater_main.h +++ b/services/updater_main.h @@ -62,8 +62,6 @@ UpdaterStatus InstallUpdaterPackages(UpdaterParams &upParams); int OtaUpdatePreCheck(Hpackage::PkgManager::PkgManagerPtr pkgManager, const std::string &packagePath); -void ProcessUpdateResult(PackageUpdateMode &mode, UpdaterStatus &status, UpdaterParams &upParams); - #ifdef __cplusplus #if __cplusplus extern "C" { @@ -84,7 +82,6 @@ void NotifyReboot(const std::string& rebootTarget, const std::string &rebootReas UpdaterStatus NotifyActionResult(UpdaterParams &upParams, UpdaterStatus &status, const std::vector ¬ifyActionVec); UpdaterStatus UpdateSubPkg(UpdaterParams &upParams); -void ProcessLogs(); void NotifyPreCheck(UpdaterStatus &status, UpdaterParams &upParams); #ifdef __cplusplus #if __cplusplus diff --git a/utils/write_updater.cpp b/utils/write_updater.cpp index 4e53b29b31bc5f22ec19645e8c9ab9480d5b452a..86c90264e929a98c853229a03b97e6cbfbf63d50 100644 --- a/utils/write_updater.cpp +++ b/utils/write_updater.cpp @@ -187,5 +187,6 @@ int main(int argc, char **argv) } } HandleMiscInfo(argc, argv); + _exit(-1); return 0; }