From fd7e668f22e4a99c6335b44e2097ed1f917adbb8 Mon Sep 17 00:00:00 2001 From: Rayllll Date: Sat, 12 Apr 2025 19:14:40 +0800 Subject: [PATCH 1/2] Signed-off-by: Rayllll trigger update --- services/include/updater/updater.h | 5 ++- services/updater_main.cpp | 69 ++++++++++++++---------------- services/updater_main.h | 3 -- utils/write_updater.cpp | 1 + 4 files changed, 35 insertions(+), 43 deletions(-) diff --git a/services/include/updater/updater.h b/services/include/updater/updater.h index e0e6ada9..de314e5b 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 eb16229d..93d4a1f0 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,11 +1356,30 @@ 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 (status != UPDATE_SUCCESS && status != UPDATE_SKIP) { + 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); while (true) { diff --git a/services/updater_main.h b/services/updater_main.h index daf901f3..3118d01d 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 4e53b29b..86c90264 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; } -- Gitee From b60df7afa7a613969dcfeeb6f34aa1b001e7fc7b Mon Sep 17 00:00:00 2001 From: Rayllll Date: Sat, 12 Apr 2025 19:14:40 +0800 Subject: [PATCH 2/2] Signed-off-by: Rayllll trigger update --- services/include/updater/updater.h | 5 ++- services/updater_main.cpp | 66 +++++++++++++----------------- services/updater_main.h | 3 -- utils/write_updater.cpp | 1 + 4 files changed, 33 insertions(+), 42 deletions(-) diff --git a/services/include/updater/updater.h b/services/include/updater/updater.h index e0e6ada9..de314e5b 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 eb16229d..95a21988 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 daf901f3..3118d01d 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 4e53b29b..86c90264 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; } -- Gitee