diff --git a/services/updater_main.cpp b/services/updater_main.cpp index a78ea267485fb17cc3b6e3e2c0c987841404849a..d6215055cb23b4031ef54420ca7e9cf9349a5202 100644 --- a/services/updater_main.cpp +++ b/services/updater_main.cpp @@ -1370,8 +1370,13 @@ __attribute__((weak)) void NotifyAutoReboot(PackageUpdateMode &mode) return; } -void RebootAfterUpdateSuccess(const UpdaterParams &upParams) +void RebootAfterUpdateSuccess(const UpdaterParams &upParams, const std::vector &args) { + std::string extData; + if (IsNeedUpdateNode(args, extData)) { + LOG(INFO) << "Need reboot to updater again."; + NotifyReboot("updater", "Updater update dev node after upgrade success when ptable change", extData); + } if (IsNeedWipe()) { NotifyReboot("updater", "Updater wipe data after upgrade success", "--user_wipe_data"); return; @@ -1433,7 +1438,7 @@ int UpdaterMain(int argc, char **argv) } #endif PostUpdater(true); - RebootAfterUpdateSuccess(upParams); + RebootAfterUpdateSuccess(upParams, args); return 0; } } // Updater diff --git a/services/updater_main.h b/services/updater_main.h index 9cd5dcc2d604f04ac2797730335ade121f2b91cb..cea0fe3af8699bbed6a7b63583d7ee13bc45e6f9 100644 --- a/services/updater_main.h +++ b/services/updater_main.h @@ -35,7 +35,7 @@ int UpdaterMain(int argc, char **argv); int FactoryReset(FactoryResetMode mode, const std::string &path); -void RebootAfterUpdateSuccess(const UpdaterParams &upParams); +void RebootAfterUpdateSuccess(const UpdaterParams &upParams, const std::vector &args); UpdaterStatus InstallUpdaterPackage(UpdaterParams &upParams, Hpackage::PkgManager::PkgManagerPtr manager); diff --git a/services/write_state/write_state.cpp b/services/write_state/write_state.cpp index b98979bd071a4749c69f930156ec9bc69e4a645c..a5e11bf25b972bb2bca7e83cef9a04532df96cda 100644 --- a/services/write_state/write_state.cpp +++ b/services/write_state/write_state.cpp @@ -28,4 +28,8 @@ __attribute__((weak)) UpdaterStatus PostStartUpdaterEntry(UpdaterParams &upParam { return status; } +__attribute__((weak)) bool IsNeedUpdateNode(const std::vector &args, std::string &extData) +{ + return false; +} } // Updater diff --git a/services/write_state/write_state.h b/services/write_state/write_state.h index 1a5a239d1c9ca1804bdce6d98027518c0b9c647a..86bd51a6ebf38a707e3d6834eb2e365557eff59b 100644 --- a/services/write_state/write_state.h +++ b/services/write_state/write_state.h @@ -28,6 +28,7 @@ extern "C" { UpdaterStatus WriteResult(std::string &path, const std::string &result); UpdaterStatus PreStartUpdaterEntry(UpdaterParams &upParams, UpdaterStatus status); UpdaterStatus PostStartUpdaterEntry(UpdaterParams &upParams, UpdaterStatus status); +bool IsNeedUpdateNode(const std::vector &args, std::string &extData); #ifdef __cplusplus #if __cplusplus }