diff --git a/interfaces/kits/include/updaterkits/updaterkits.h b/interfaces/kits/include/updaterkits/updaterkits.h index 6f2b66999f311d50fbc01ae7266620c338dc7bd9..34b8c353bbd27ad670b32172ca1654429d2b32c8 100755 --- a/interfaces/kits/include/updaterkits/updaterkits.h +++ b/interfaces/kits/include/updaterkits/updaterkits.h @@ -18,6 +18,7 @@ constexpr const char *UPGRADE_TYPE_OTA = "ota"; constexpr const char *UPGRADE_TYPE_SD = "sdcard"; +constexpr const char *UPGRADE_TYPE_OTA_INTRAL = "ota_intral"; constexpr const char *UPGRADE_TYPE_SD_INTRAL = "sdcard_intral"; // Reboot system to updater mode and trigger installing update package. diff --git a/interfaces/kits/updaterkits/updaterkits.cpp b/interfaces/kits/updaterkits/updaterkits.cpp index 673392aa0d3b0e28d46b29ac739df02472fedc6c..7b1bf0f744fe74fa304217e174574bb444d31263 100755 --- a/interfaces/kits/updaterkits/updaterkits.cpp +++ b/interfaces/kits/updaterkits/updaterkits.cpp @@ -227,7 +227,7 @@ bool RebootAndInstallSdcardPackage(const std::string &miscFile, const std::vecto int RebootAndInstallUpgradePackage(const std::string &miscFile, const std::vector &packageName, const std::string &upgradeType) { - if (packageName.size() == 0 && upgradeType == UPGRADE_TYPE_OTA) { + if (packageName.size() == 0 && (upgradeType == UPGRADE_TYPE_OTA || upgradeType == UPGRADE_TYPE_OTA_INTRAL)) { LOG(ERROR) << "updaterkits: invalid argument. one of arugments is empty"; return 1; // 1 : Invalid input } @@ -248,6 +248,9 @@ int RebootAndInstallUpgradePackage(const std::string &miscFile, const std::vecto } else if (upgradeType == UPGRADE_TYPE_SD_INTRAL) { ret = snprintf_s(updateMsg.update, sizeof(updateMsg.update), sizeof(updateMsg.update) - 1, "--sdcard_intral_update\n"); + } else if (upgradeType == UPGRADE_TYPE_OTA_INTRAL) { + ret = snprintf_s(updateMsg.update, sizeof(updateMsg.update), sizeof(updateMsg.update) - 1, + "--ota_intral_update\n"); } if (ret < 0) { LOG(ERROR) << "updaterkits: copy updater message failed"; @@ -257,7 +260,7 @@ int RebootAndInstallUpgradePackage(const std::string &miscFile, const std::vecto if (addRet != 0) { return addRet; } - if (upgradeType == UPGRADE_TYPE_OTA) { + if (upgradeType == UPGRADE_TYPE_OTA || upgradeType == UPGRADE_TYPE_OTA_INTRAL) { WriteToMiscAndResultFileRebootToUpdater(updateMsg, upgradeType); } else { WriteToMiscAndRebootToUpdater(updateMsg); diff --git a/services/include/updater/updater_const.h b/services/include/updater/updater_const.h index 7378ab572db7ec48f3b5c087c66716fae1715574..95413cde37311e4e64c27527c916d40cbb721599 100644 --- a/services/include/updater/updater_const.h +++ b/services/include/updater/updater_const.h @@ -51,6 +51,7 @@ constexpr const char *UPLOAD_LOG_TIME_FILE = "upload_time"; constexpr const char *SDCARD_MODE = "sdcard_update"; constexpr const char *OTA_MODE = "update_package"; constexpr const char *USB_MODE = "usb_update"; +constexpr const char *OTA_INTRAL_MODE = "ota_intral_update"; constexpr const char *SDCARD_INTRAL_MODE = "sdcard_intral_update"; constexpr const char *UPDATRE_SCRIPT_ZIP = "/etc/updater_script.zip"; constexpr const char *FACTORY_INTERNAL_MODE = "factory_internal_update"; diff --git a/services/updater_init.h b/services/updater_init.h index c60c85b98695d4fea32fd333d8d12567615f79f4..4a395314c642c2c26f0c20c6562f8a61296a2641 100644 --- a/services/updater_init.h +++ b/services/updater_init.h @@ -27,6 +27,7 @@ enum UpdaterInitEvent { UPDATER_PRE_INIT_EVENT, UPDATER_INIT_EVENT, UPDATER_PRE_UPDATE_PACKAGE_EVENT, + UPDATER_PRE_VERIFY_PACKAGE_EVENT, UPDATER_POST_UPDATE_PACKAGE_EVENT, UPDATER_POST_INIT_EVENT, diff --git a/services/updater_main.cpp b/services/updater_main.cpp index 0e4f44dfc59f8b1252e0af2330cc8297f4506911..7c668075bde60570bd7d78829052622587e45114 100644 --- a/services/updater_main.cpp +++ b/services/updater_main.cpp @@ -424,6 +424,7 @@ static UpdaterStatus PreUpdatePackages(UpdaterParams &upParams) return UPDATE_SUCCESS; } + UpdaterInit::GetInstance().InvokeEvent(UPDATER_PRE_VERIFY_PACKAGE_EVENT); // verify package first if (VerifyPackages(upParams) != UPDATE_SUCCESS) { return UPDATE_CORRUPT; // verify package failed must return UPDATE_CORRUPT, ux need it !!! diff --git a/utils/write_updater.cpp b/utils/write_updater.cpp index e8c9d9e6824249d9cda6a4e8a554c57da90dd345..0676e0fee55682ec81d6128dcc519bff1f3eac4f 100644 --- a/utils/write_updater.cpp +++ b/utils/write_updater.cpp @@ -36,7 +36,8 @@ static void PrintPrompts() cout << "factory_reset : write_updater user_factory_reset" << endl; cout << "sdcard_update : write_updater sdcard_update" << endl; cout << "clear command : write_updater clear" << endl; - cout << "updater_para : write_updater updater_para" << endl; + cout << "updater_para : write_updater updater_para" << endl; + cout << "intral_update : write_updater ota_intral_update /data/updater/updater.zip" << endl; } static int ExceptionUpdater(int argc, char **argv, UpdateMessage &boot) @@ -103,7 +104,6 @@ int main(int argc, char **argv) PrintPrompts(); return -1; } - const std::string miscFile = "/dev/block/by-name/misc"; struct UpdateMessage boot {}; struct UpdaterPara para {}; @@ -128,11 +128,13 @@ int main(int argc, char **argv) cout << "strncpy_s failed!" << endl; return -1; } - } else if (strcmp(argv[1], "updater_para") == 0) { - if (WriteUpdaterPara(argc, para) != 0) { + } else if (strcmp(argv[1], "ota_intral_update") == 0) { + if (ExceptionUpdater(argc, argv, boot) == -1 || + strcat_s(boot.update, sizeof(boot.update), "\n--ota_intral_update") != 0) { return -1; } - return 0; + } else if (strcmp(argv[1], "updater_para") == 0) { + return WriteUpdaterPara(argc, para) != 0 ? -1 : 0; } else { cout << "Please input correct command!" << endl; return -1;