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_main.cpp b/services/updater_main.cpp index b736a883291ec51e9f81f2cf1ea7a460977d01ef..4efb5a0555a6f777874c2f60fcba005a43131558 100644 --- a/services/updater_main.cpp +++ b/services/updater_main.cpp @@ -75,6 +75,7 @@ constexpr struct option OPTIONS[] = { { "UPDATE:SD", no_argument, nullptr, 0 }, { "UPDATE:SDFROMDEV", no_argument, nullptr, 0 }, { "sdcard_intral_update", optional_argument, nullptr, 0}, + { "ota_intral_update", optional_argument, nullptr, 0}, { "shrink_info", required_argument, nullptr, 0 }, { "virtual_shrink_info", required_argument, nullptr, 0 }, {"wipe_data_factory_lowlevel", no_argument, nullptr, 0}, @@ -802,6 +803,12 @@ std::unordered_map> InitOptionsFuncTab(char* { upParams.updateMode = SDCARD_UPDATE; }}, + {"ota_intral_update", [&]() -> void + { + upParams.updatePackage.push_back(optarg); + (void)UPDATER_UI_INSTANCE.SetMode(UPDATERMODE_OTA); + mode = HOTA_UPDATE; + }}, {"shrink_info", [&]() -> void { upParams.shrinkInfo = std::string(optarg); diff --git a/services/updater_utils.cpp b/services/updater_utils.cpp index 6c7c09832dad9bd18cadca81ae5458a0f7af769b..d3058d417c4d85ef85980818c6015f80e4225c01 100755 --- a/services/updater_utils.cpp +++ b/services/updater_utils.cpp @@ -187,9 +187,11 @@ bool IsMountDataAndSaveLogs(void) bool isSdCardMode = CheckUpdateMode(SDCARD_MODE); bool isUsbMode = CheckUpdateMode(USB_MODE); bool isSdCardIntralMode = CheckUpdateMode(SDCARD_INTRAL_MODE); + bool isOtaIntralMode = CheckUpdateMode(OTA_INTRAL_MODE); bool isLogMounted = GetMountStatusForMountPoint("/log") == MountStatus::MOUNT_MOUNTED; bool isDataAlreadyMounted = GetMountStatusForMountPoint("/data") == MountStatus::MOUNT_MOUNTED; - return (!(isSdCardMode || isUsbMode) && (isDataAlreadyMounted || !isLogMounted)) || isSdCardIntralMode; + return (!(isSdCardMode || isUsbMode) && (isDataAlreadyMounted || !isLogMounted)) || + isSdCardIntralMode || isOtaIntralMode; } static void DeleteUpdaterTmpFiles() diff --git a/utils/write_updater.cpp b/utils/write_updater.cpp index 444d66d7e456c2c08cdc940e0e5864381e2ee8cc..2d0ca5ae307ae0ad28e9afeca38a6e514b0dd54a 100644 --- a/utils/write_updater.cpp +++ b/utils/write_updater.cpp @@ -124,6 +124,14 @@ int main(int argc, char **argv) cout << "strncpy_s failed!" << endl; return -1; } + } else if (strcmp(argv[1], "ota_intral_update") == 0) { + if (ExceptionUpdater(argc, argv, boot) == -1) { + return -1; + } + if (strncpy_s(boot.update, sizeof(boot.update), "--ota_intral_update", sizeof(boot.update) - 1) != 0) { + cout << "strncpy_s failed!" << endl; + return -1; + } } else if (strcmp(argv[1], "updater_para") == 0) { if (WriteUpdaterPara(argc, para) != 0) { return -1;