From 0867d1724237dbf8c383d67ee3f460b8df51e0ef Mon Sep 17 00:00:00 2001 From: Pawel Olejniczak Date: Fri, 30 Sep 2022 01:00:28 +0200 Subject: [PATCH] [CP-1424] Refactor backup and restore endpoints Redesign of backup and restore endpoints in the service-desktop to delegate responsibility for execution of the actual backup and restore process onto the Updater. --- .../board/rt1051/bsp/lpm/RT1051LPMCommon.cpp | 8 +- .../board/rt1051/common/reboot_codes.hpp | 4 +- module-bsp/bsp/lpm/bsp_lpm.hpp | 13 ++- .../service-desktop/ServiceDesktop.cpp | 56 ----------- .../endpoints/backup/BackupHelper.cpp | 69 +++---------- .../include/endpoints/backup/BackupHelper.hpp | 3 +- .../endpoints/restore/RestoreHelper.hpp | 7 +- .../endpoints/restore/RestoreHelper.cpp | 96 +------------------ .../endpoints/update/UpdateHelper.cpp | 2 +- .../service-desktop/ServiceDesktop.hpp | 4 - module-sys/SystemManager/PowerManager.cpp | 12 ++- .../SystemManager/SystemManagerCommon.cpp | 27 +++--- .../include/SystemManager/PowerManager.hpp | 2 +- .../SystemManager/SystemManagerCommon.hpp | 24 ++--- module-sys/common/include/system/Common.hpp | 8 +- 15 files changed, 78 insertions(+), 257 deletions(-) diff --git a/module-bsp/board/rt1051/bsp/lpm/RT1051LPMCommon.cpp b/module-bsp/board/rt1051/bsp/lpm/RT1051LPMCommon.cpp index 78df471729a92c095aa95e7569b47ae8379ea9b0..4e72089302e1c13ada2fa27d9adfae66df6812fc 100644 --- a/module-bsp/board/rt1051/bsp/lpm/RT1051LPMCommon.cpp +++ b/module-bsp/board/rt1051/bsp/lpm/RT1051LPMCommon.cpp @@ -36,7 +36,7 @@ namespace bsp { switch (reason) { case RebootType::GoToUpdaterUpdate: - SNVS->LPGPR[0] = bsp::rebootCode::rebootToUpdateCode; + SNVS->LPGPR[0] = bsp::rebootCode::rebootToUpdaterCode; break; case RebootType::GoToUpdaterRecovery: SNVS->LPGPR[0] = bsp::rebootCode::rebootToRecoveryCode; @@ -44,6 +44,12 @@ namespace bsp case RebootType::GoToUpdaterFactoryReset: SNVS->LPGPR[0] = bsp::rebootCode::rebootToFactoryRstCode; break; + case RebootType::GoToUpdaterBackup: + SNVS->LPGPR[0] = bsp::rebootCode::rebootToBackupCode; + break; + case RebootType::GoToUpdaterRestore: + SNVS->LPGPR[0] = bsp::rebootCode::rebootToRestoreCode; + break; case RebootType::GoToUsbMscMode: SNVS->LPGPR[0] = bsp::rebootCode::rebootToUsbMscModeCode; break; diff --git a/module-bsp/board/rt1051/common/reboot_codes.hpp b/module-bsp/board/rt1051/common/reboot_codes.hpp index 4ce8603ae19625471c4f9b83af4fcef7c37b3cc2..6ba3a96066fc1136274fd8fe6fa3369e25127e00 100644 --- a/module-bsp/board/rt1051/common/reboot_codes.hpp +++ b/module-bsp/board/rt1051/common/reboot_codes.hpp @@ -13,11 +13,13 @@ namespace bsp enum rebootCode : std::uint32_t { rebootNormalCode = std::uint32_t{0}, - rebootToUpdateCode = std::uint32_t{0xdead0000}, + rebootToUpdaterCode = std::uint32_t{0xdead0000}, rebootToRecoveryCode = std::uint32_t{0xdead0001}, rebootToFactoryRstCode = std::uint32_t{0xdead0002}, // 0xdead0003 is reserved for eco_factory_pgm_keys rebootToUsbMscModeCode = std::uint32_t{0x00000004}, + rebootToBackupCode = std::uint32_t{0xdead0005}, + rebootToRestoreCode = std::uint32_t{0xdead0006}, rebootFailedToBoot = std::uint32_t{0xdeadFFFF} }; } // namespace bsp diff --git a/module-bsp/bsp/lpm/bsp_lpm.hpp b/module-bsp/bsp/lpm/bsp_lpm.hpp index 2d7f4ec1b8a28d6dce15906375659c6fe8b5dbc7..418d0c8e81ca67cb2c86afd1440be80bc6fa823d 100644 --- a/module-bsp/bsp/lpm/bsp_lpm.hpp +++ b/module-bsp/bsp/lpm/bsp_lpm.hpp @@ -26,10 +26,13 @@ namespace bsp enum class RebootType { NormalRestart, - GoToUsbMscMode, // Reboot into USB MSC mode + GoToUsbMscMode, // Reboot into USB MSC mode GoToUpdaterUpdate, //! Goto updater into the update mode GoToUpdaterFactoryReset, //! GOto updater into the factory reset mode - GoToUpdaterRecovery //! Goto to updater into recovery mode + GoToUpdaterRecovery, //! Goto to updater into recovery mode + GoToUpdaterBackup, //! Goto to updater into backup mode + GoToUpdaterRestore //! Goto to updater into restore mode + }; LowPowerMode() = default; @@ -41,7 +44,7 @@ namespace bsp virtual int32_t Reboot(RebootType reason) = 0; virtual void SetCpuFrequency(CpuFrequencyMHz freq) = 0; - virtual void SetHighestCoreVoltage() = 0; + virtual void SetHighestCoreVoltage() = 0; [[nodiscard]] CpuFrequencyMHz GetCurrentFrequencyLevel() const noexcept; [[nodiscard]] virtual uint32_t GetCpuFrequency() const noexcept = 0; @@ -51,8 +54,8 @@ namespace bsp virtual void EnableDcdcPowerSaveMode() = 0; virtual void DisableDcdcPowerSaveMode() = 0; - virtual void DisconnectInternalLoadResistor() = 0; - virtual void ConnectInternalLoadResistor() = 0; + virtual void DisconnectInternalLoadResistor() = 0; + virtual void ConnectInternalLoadResistor() = 0; virtual void SwitchToRegularModeLDO() = 0; virtual void SwitchToLowPowerModeLDO() = 0; diff --git a/module-services/service-desktop/ServiceDesktop.cpp b/module-services/service-desktop/ServiceDesktop.cpp index d8ff765fe6b55173358a446a026517f663723ed1..a18624719fb2c755d8e5bb1d34b0a0e5bc522a11 100644 --- a/module-services/service-desktop/ServiceDesktop.cpp +++ b/module-services/service-desktop/ServiceDesktop.cpp @@ -45,9 +45,7 @@ sys::ReturnCodes ServiceDesktop::InitHandler() connectHandler(); connectHandler(); connectHandler(); - connectHandler(); connectHandler(); - connectHandler(); connectHandler(); connectHandler(); connectHandler(); @@ -113,14 +111,6 @@ std::string ServiceDesktop::prepareSyncFilename() return std::string(syncFileName.data()); } -void ServiceDesktop::prepareBackupData() -{ - backupSyncRestoreStatus.operation = BackupSyncRestore::Operation::Backup; - backupSyncRestoreStatus.taskId = prepareBackupFilename(); - backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Stopped; - backupSyncRestoreStatus.backupTempDir = purefs::dir::getTemporaryPath() / backupSyncRestoreStatus.taskId; -} - void ServiceDesktop::prepareSyncData() { backupSyncRestoreStatus.operation = BackupSyncRestore::Operation::Sync; @@ -129,14 +119,6 @@ void ServiceDesktop::prepareSyncData() backupSyncRestoreStatus.backupTempDir = purefs::dir::getTemporaryPath() / backupSyncRestoreStatus.taskId; } -void ServiceDesktop::prepareRestoreData(const std::filesystem::path &restoreLocation) -{ - backupSyncRestoreStatus.operation = BackupSyncRestore::Operation::Restore; - backupSyncRestoreStatus.taskId = restoreLocation.filename(); - backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Stopped; - backupSyncRestoreStatus.location = purefs::dir::getBackupOSPath() / backupSyncRestoreStatus.taskId; -} - auto ServiceDesktop::requestLogsFlush() -> void { int response = 0; @@ -333,25 +315,6 @@ auto ServiceDesktop::handle(sdesktop::developerMode::DeveloperModeRequest *msg) return sys::MessageNone{}; } -auto ServiceDesktop::handle(sdesktop::BackupMessage * /*msg*/) -> std::shared_ptr -{ - backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Running; - backupSyncRestoreStatus.completionCode = - BackupSyncRestore::BackupUserFiles(this, backupSyncRestoreStatus.backupTempDir); - backupSyncRestoreStatus.location = backupSyncRestoreStatus.taskId; - - if (backupSyncRestoreStatus.completionCode == BackupSyncRestore::CompletionCode::Success) { - LOG_INFO("Backup finished"); - backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Finished; - } - else { - LOG_ERROR("Backup failed"); - backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Error; - } - - return sys::MessageNone{}; -} - auto ServiceDesktop::handle(sdesktop::SyncMessage * /*msg*/) -> std::shared_ptr { backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Running; @@ -371,25 +334,6 @@ auto ServiceDesktop::handle(sdesktop::SyncMessage * /*msg*/) -> std::shared_ptr< return sys::MessageNone{}; } -auto ServiceDesktop::handle(sdesktop::RestoreMessage * /*msg*/) -> std::shared_ptr -{ - backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Running; - backupSyncRestoreStatus.completionCode = - BackupSyncRestore::RestoreUserFiles(this, backupSyncRestoreStatus.location); - - if (backupSyncRestoreStatus.completionCode == BackupSyncRestore::CompletionCode::Success) { - LOG_DEBUG("Restore finished"); - backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Finished; - sys::SystemManagerCommon::Reboot(this); - } - else { - LOG_ERROR("Restore failed"); - backupSyncRestoreStatus.state = BackupSyncRestore::OperationState::Error; - } - - return sys::MessageNone{}; -} - auto ServiceDesktop::handle(sdesktop::FactoryMessage * /*msg*/) -> std::shared_ptr { LOG_DEBUG("ServiceDesktop: FactoryMessage received"); diff --git a/module-services/service-desktop/endpoints/backup/BackupHelper.cpp b/module-services/service-desktop/endpoints/backup/BackupHelper.cpp index 8e7f1396ea31fe2d515873e9a6affe859ae70cea..3bb983e66fde8a503e7a0db7cbb9557435f1f82d 100644 --- a/module-services/service-desktop/endpoints/backup/BackupHelper.cpp +++ b/module-services/service-desktop/endpoints/backup/BackupHelper.cpp @@ -9,9 +9,6 @@ #include #include -#include - -#include namespace sdesktop::endpoints { @@ -22,74 +19,34 @@ namespace sdesktop::endpoints if (context.getBody()[json::messages::category].string_value() == json::messages::categorySync) { return checkSyncState(context); } - return checkState(context); + context.setResponseStatus(http::Code::BadRequest); + putToSendQueue(context.createSimpleResponse()); + + return {sent::yes, std::nullopt}; } auto BackupHelper::processPost(Context &context) -> ProcessResult { - if (context.getBody()[json::messages::category].string_value() == json::messages::categorySync) { + auto category = context.getBody()[json::messages::category].string_value(); + if (category == json::messages::categorySync) { return executeSyncRequest(context); } - return executeRequest(context); - } - - auto BackupHelper::executeRequest(Context &context) -> ProcessResult - { - auto ownerServicePtr = static_cast(owner); - - if (ownerServicePtr->getBackupSyncRestoreStatus().state == BackupSyncRestore::OperationState::Running) { - LOG_DEBUG("Backup already running"); - // a backup is already running, don't start a second task - context.setResponseStatus(http::Code::NotAcceptable); - } - else { - LOG_DEBUG("Starting backup"); - // initialize new backup information - ownerServicePtr->prepareBackupData(); - - // start the backup process in the background - ownerServicePtr->bus.sendUnicast(std::make_shared(), - service::name::service_desktop); - - // return new generated backup info - context.setResponseBody(ownerServicePtr->getBackupSyncRestoreStatus()); + else if (category == json::messages::categoryBackup) { + return executeBackupRequest(context); } - + context.setResponseStatus(http::Code::BadRequest); putToSendQueue(context.createSimpleResponse()); return {sent::yes, std::nullopt}; } - auto BackupHelper::checkState(Context &context) -> ProcessResult + auto BackupHelper::executeBackupRequest([[maybe_unused]] Context &context) -> ProcessResult { - auto ownerServicePtr = static_cast(owner); - - if (context.getBody()[json::taskId].is_string()) { - if (ownerServicePtr->getBackupSyncRestoreStatus().taskId == - context.getBody()[json::taskId].string_value()) { - if (ownerServicePtr->getBackupSyncRestoreStatus().state == - BackupSyncRestore::OperationState::Finished) { - context.setResponseStatus(http::Code::SeeOther); - } - else { - context.setResponseStatus(http::Code::OK); - } - - context.setResponseBody(ownerServicePtr->getBackupSyncRestoreStatus()); - } - else { - context.setResponseStatus(http::Code::NotFound); - } - } - else { - LOG_DEBUG("Backup task not found"); - context.setResponseStatus(http::Code::BadRequest); + if (sys::SystemManagerCommon::RebootToUpdater(owner, sys::UpdaterReason::Backup)) { + return {sent::no, ResponseContext{.status = http::Code::NoContent}}; } - LOG_DEBUG("Responding"); - putToSendQueue(context.createSimpleResponse()); - - return {sent::yes, std::nullopt}; + return {sent::no, ResponseContext{.status = http::Code::InternalServerError}}; } auto BackupHelper::executeSyncRequest(Context &context) -> ProcessResult diff --git a/module-services/service-desktop/endpoints/include/endpoints/backup/BackupHelper.hpp b/module-services/service-desktop/endpoints/include/endpoints/backup/BackupHelper.hpp index 39705c0a5e568f26e46aaea1433d5c8558f4ad15..cab8480406cc9e8e8f54212a4e2b510008a13c76 100644 --- a/module-services/service-desktop/endpoints/include/endpoints/backup/BackupHelper.hpp +++ b/module-services/service-desktop/endpoints/include/endpoints/backup/BackupHelper.hpp @@ -17,8 +17,7 @@ namespace sdesktop::endpoints auto processGet(Context &context) -> ProcessResult final; private: - auto executeRequest(Context &context) -> ProcessResult; - auto checkState(Context &context) -> ProcessResult; + auto executeBackupRequest(Context &context) -> ProcessResult; auto executeSyncRequest(Context &context) -> ProcessResult; auto checkSyncState(Context &context) -> ProcessResult; }; diff --git a/module-services/service-desktop/endpoints/include/endpoints/restore/RestoreHelper.hpp b/module-services/service-desktop/endpoints/include/endpoints/restore/RestoreHelper.hpp index 539bcdc7830bd3f50aa42d5ffb4ee44cc7076866..2ef67af39d1afb19e1fb920168270f497767201c 100644 --- a/module-services/service-desktop/endpoints/include/endpoints/restore/RestoreHelper.hpp +++ b/module-services/service-desktop/endpoints/include/endpoints/restore/RestoreHelper.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -14,10 +14,5 @@ namespace sdesktop::endpoints {} auto processPost(Context &context) -> ProcessResult final; - auto processGet(Context &context) -> ProcessResult final; - - private: - auto executeRequest(Context &context) -> ProcessResult; - auto checkState(Context &context) -> ProcessResult; }; } // namespace sdesktop::endpoints diff --git a/module-services/service-desktop/endpoints/restore/RestoreHelper.cpp b/module-services/service-desktop/endpoints/restore/RestoreHelper.cpp index 64b9797d19d45a5dceca025612b3da48e5450328..7017ae9a467869469122bc0c7796aa85d30014cd 100644 --- a/module-services/service-desktop/endpoints/restore/RestoreHelper.cpp +++ b/module-services/service-desktop/endpoints/restore/RestoreHelper.cpp @@ -3,104 +3,16 @@ #include #include -#include -#include #include -#include -#include -#include - -#include namespace sdesktop::endpoints { - using sender::putToSendQueue; - - auto RestoreHelper::processGet(Context &context) -> ProcessResult - { - return checkState(context); - } - - auto RestoreHelper::processPost(Context &context) -> ProcessResult - { - return executeRequest(context); - } - - auto RestoreHelper::checkState(Context &context) -> ProcessResult - { - auto ownerService = static_cast(owner); - - if (context.getBody()[json::taskId].is_string()) { - if (ownerService->getBackupSyncRestoreStatus().taskId == context.getBody()[json::taskId].string_value()) { - context.setResponseStatus(http::Code::OK); - context.setResponseBody(ownerService->getBackupSyncRestoreStatus()); - } - else { - return {sent::no, ResponseContext{.status = http::Code::NotFound}}; - } - } - else if (context.getBody()[json::request].is_string()) { - const std::string request(context.getBody()[json::request].string_value()); - - if (request.compare(json::fileList)) { - - return {sent::no, ResponseContext{.status = http::Code::BadRequest}}; - } - auto filesList = json11::Json::object{{json::files, BackupSyncRestore::GetBackupFiles()}}; - context.setResponseBody(filesList); - } - - LOG_DEBUG("Responding"); - putToSendQueue(context.createSimpleResponse()); - - return {sent::yes, std::nullopt}; - } - - auto RestoreHelper::executeRequest(Context &context) -> ProcessResult + auto RestoreHelper::processPost([[maybe_unused]] Context &context) -> ProcessResult { - auto ownerService = static_cast(owner); - - if (context.getBody()[json::restore].is_string()) { - if (ownerService->getBackupSyncRestoreStatus().state == BackupSyncRestore::OperationState::Running) { - LOG_WARN("Restore is running, try again later"); - - return {sent::no, ResponseContext{.status = http::Code::NotAcceptable}}; - } - else { - const std::filesystem::path restorePoint(context.getBody()[json::restore].string_value()); - if (restorePoint.empty()) { - LOG_ERROR("no restorePoint in request"); - context.setResponseBody(json11::Json::object({{json::reason, "No restore point passed"}})); - - return {sent::no, ResponseContext{.status = http::Code::NotAcceptable}}; - } - if (!std::filesystem::exists(purefs::dir::getBackupOSPath() / restorePoint)) { - LOG_ERROR("Restore point %s does not exist", (restorePoint).c_str()); - context.setResponseBody(json11::Json::object({{json::reason, "Invalid restore point"}})); - - return {sent::no, ResponseContext{.status = http::Code::NotFound}}; - } - // initialize new restore information - ownerService->prepareRestoreData(restorePoint); - - // start the request process - ownerService->bus.sendUnicast(std::make_shared(), - service::name::service_desktop); - - // return new generated restore info - context.setResponseBody(ownerService->getBackupSyncRestoreStatus()); - } + if (sys::SystemManagerCommon::RebootToUpdater(owner, sys::UpdaterReason::Restore)) { + return {sent::no, ResponseContext{.status = http::Code::NoContent}}; } - else { - // unknown request for backup endpoint - return {sent::no, ResponseContext{.status = http::Code::BadRequest}}; - } - - LOG_DEBUG("Responding"); - putToSendQueue(context.createSimpleResponse()); - - return {sent::yes, std::nullopt}; + return {sent::no, ResponseContext{.status = http::Code::InternalServerError}}; } - } // namespace sdesktop::endpoints diff --git a/module-services/service-desktop/endpoints/update/UpdateHelper.cpp b/module-services/service-desktop/endpoints/update/UpdateHelper.cpp index df09c5f845dfa8deb985f3c6a92d3c62525386b5..bc92e08a9f85dc628c5b81b9110f55bdba8988da 100644 --- a/module-services/service-desktop/endpoints/update/UpdateHelper.cpp +++ b/module-services/service-desktop/endpoints/update/UpdateHelper.cpp @@ -32,7 +32,7 @@ namespace sdesktop::endpoints return {sent::no, ResponseContext{.status = http::Code::NotFound}}; } - if (sys::SystemManagerCommon::RebootToUpdate(owner, sys::UpdateReason::Update)) { + if (sys::SystemManagerCommon::RebootToUpdater(owner, sys::UpdaterReason::Update)) { return {sent::no, ResponseContext{.status = http::Code::NoContent}}; } diff --git a/module-services/service-desktop/include/service-desktop/ServiceDesktop.hpp b/module-services/service-desktop/include/service-desktop/ServiceDesktop.hpp index 3ec0ee888af738321b6821325f48c328a814e3b5..4e493eb0e6edd820a6863874c5e34318da7bfb42 100644 --- a/module-services/service-desktop/include/service-desktop/ServiceDesktop.hpp +++ b/module-services/service-desktop/include/service-desktop/ServiceDesktop.hpp @@ -64,9 +64,7 @@ class ServiceDesktop : public sys::Service std::string prepareBackupFilename(); std::string prepareSyncFilename(); - void prepareBackupData(); void prepareSyncData(); - void prepareRestoreData(const std::filesystem::path &restoreLocation); const BackupSyncRestore::OperationStatus getBackupSyncRestoreStatus() { return backupSyncRestoreStatus; @@ -121,9 +119,7 @@ class ServiceDesktop : public sys::Service [[nodiscard]] auto handle(message::bluetooth::ResponseBondedDevices *msg) -> std::shared_ptr; [[nodiscard]] auto handle(message::bluetooth::ResponseVisibleDevices *msg) -> std::shared_ptr; [[nodiscard]] auto handle(sdesktop::developerMode::DeveloperModeRequest *msg) -> std::shared_ptr; - [[nodiscard]] auto handle(sdesktop::BackupMessage *msg) -> std::shared_ptr; [[nodiscard]] auto handle(sdesktop::SyncMessage *msg) -> std::shared_ptr; - [[nodiscard]] auto handle(sdesktop::RestoreMessage *msg) -> std::shared_ptr; [[nodiscard]] auto handle(sdesktop::FactoryMessage *msg) -> std::shared_ptr; [[nodiscard]] auto handle(sdesktop::usb::USBConfigured *msg) -> std::shared_ptr; [[nodiscard]] auto handle(sdesktop::usb::USBDisconnected *msg) -> std::shared_ptr; diff --git a/module-sys/SystemManager/PowerManager.cpp b/module-sys/SystemManager/PowerManager.cpp index d6f690cb5688182cb89d38d59a73915ffe9a95ca..5c0ed704ffb4b3163440c9514024eb67d88dc6cb 100644 --- a/module-sys/SystemManager/PowerManager.cpp +++ b/module-sys/SystemManager/PowerManager.cpp @@ -89,15 +89,19 @@ namespace sys return lowPowerControl->Reboot(bsp::LowPowerMode::RebootType::GoToUsbMscMode); } - int32_t PowerManager::RebootToUpdate(UpdateReason reason) + int32_t PowerManager::RebootToUpdater(UpdaterReason reason) { switch (reason) { - case UpdateReason::FactoryReset: + case UpdaterReason::FactoryReset: return lowPowerControl->Reboot(bsp::LowPowerMode::RebootType::GoToUpdaterFactoryReset); - case UpdateReason::Recovery: + case UpdaterReason::Recovery: return lowPowerControl->Reboot(bsp::LowPowerMode::RebootType::GoToUpdaterRecovery); - case UpdateReason::Update: + case UpdaterReason::Update: return lowPowerControl->Reboot(bsp::LowPowerMode::RebootType::GoToUpdaterUpdate); + case UpdaterReason::Backup: + return lowPowerControl->Reboot(bsp::LowPowerMode::RebootType::GoToUpdaterBackup); + case UpdaterReason::Restore: + return lowPowerControl->Reboot(bsp::LowPowerMode::RebootType::GoToUpdaterRestore); default: return -1; } diff --git a/module-sys/SystemManager/SystemManagerCommon.cpp b/module-sys/SystemManager/SystemManagerCommon.cpp index 5916d326a7c706020e98681f7046d269e6e86237..6e2c12345d4bec174773a366ff9bc4a035251e9f 100644 --- a/module-sys/SystemManager/SystemManagerCommon.cpp +++ b/module-sys/SystemManager/SystemManagerCommon.cpp @@ -139,7 +139,7 @@ namespace sys case SystemManagerCommon::State::RebootToUsbMscMode: LOG_INFO(" ---> REBOOT TO USB MSC Mode <--- "); break; - case SystemManagerCommon::State::RebootToUpdate: + case SystemManagerCommon::State::RebootToUpdater: LOG_INFO(" ---> REBOOT TO UPDATER <--- "); break; case SystemManagerCommon::State::Running: @@ -163,8 +163,8 @@ namespace sys case State::RebootToUsbMscMode: powerManager->RebootToUsbMscMode(); break; - case State::RebootToUpdate: - powerManager->RebootToUpdate(updateReason); + case State::RebootToUpdater: + powerManager->RebootToUpdater(updaterReason); break; case SystemManagerCommon::State::Running: case SystemManagerCommon::State::Suspend: @@ -305,10 +305,11 @@ namespace sys return true; } - bool SystemManagerCommon::RebootToUpdate(Service *s, UpdateReason updateReason) + bool SystemManagerCommon::RebootToUpdater(Service *s, UpdaterReason updaterReason) { - s->bus.sendUnicast(std::make_shared(Code::RebootToUpdate, CloseReason::Reboot, updateReason), - service::name::system_manager); + s->bus.sendUnicast( + std::make_shared(Code::RebootToUpdater, CloseReason::Reboot, updaterReason), + service::name::system_manager); return true; } @@ -575,8 +576,8 @@ namespace sys case Code::Reboot: RebootHandler(); break; - case Code::RebootToUpdate: - RebootToUpdateHandler(data->updateReason); + case Code::RebootToUpdater: + RebootToUpdaterHandler(data->updaterReason); break; case Code::RebootToUsbMscMode: RebootToUsbMscModeHandler(State::RebootToUsbMscMode); @@ -741,9 +742,9 @@ namespace sys DestroyServices(sys::state::regularClose::whitelist); set(State::Reboot); break; - case CloseReason::RebootToUpdate: + case CloseReason::RebootToUpdater: DestroyServices(sys::state::update::whitelist); - set(State::RebootToUpdate); + set(State::RebootToUpdater); break; } } @@ -769,10 +770,10 @@ namespace sys CloseSystemHandler(CloseReason::Reboot); } - void SystemManagerCommon::RebootToUpdateHandler(UpdateReason updateReason) + void SystemManagerCommon::RebootToUpdaterHandler(UpdaterReason updaterReason) { - CloseSystemHandler(CloseReason::RebootToUpdate); - this->updateReason = updateReason; + CloseSystemHandler(CloseReason::RebootToUpdater); + this->updaterReason = updaterReason; } void SystemManagerCommon::RebootToUsbMscModeHandler(State newState) diff --git a/module-sys/SystemManager/include/SystemManager/PowerManager.hpp b/module-sys/SystemManager/include/SystemManager/PowerManager.hpp index d5c5301b87452e6ee356cf50e852eacd330fe789..04e042007ac8742b72dbe04e15167db567650d3d 100644 --- a/module-sys/SystemManager/include/SystemManager/PowerManager.hpp +++ b/module-sys/SystemManager/include/SystemManager/PowerManager.hpp @@ -51,7 +51,7 @@ namespace sys int32_t PowerOff(); int32_t Reboot(); int32_t RebootToUsbMscMode(); - int32_t RebootToUpdate(UpdateReason reason); + int32_t RebootToUpdater(UpdaterReason reason); /// called periodically to calculate the CPU requirement /// diff --git a/module-sys/SystemManager/include/SystemManager/SystemManagerCommon.hpp b/module-sys/SystemManager/include/SystemManager/SystemManagerCommon.hpp index bc4e2ec18ddf15dbf553a95b5de6053ea27b71dc..66447531326cf2a64f323d8ef9e39ca76bbc47bd 100644 --- a/module-sys/SystemManager/include/SystemManager/SystemManagerCommon.hpp +++ b/module-sys/SystemManager/include/SystemManager/SystemManagerCommon.hpp @@ -42,7 +42,7 @@ namespace sys CloseSystem, Restore, Reboot, - RebootToUpdate, + RebootToUpdater, RebootToUsbMscMode, FactoryReset, None, @@ -57,16 +57,16 @@ namespace sys class SystemManagerCmd : public DataMessage { public: - explicit SystemManagerCmd(Code type = Code::None, - CloseReason closeReason = CloseReason::RegularPowerDown, - UpdateReason updateReason = UpdateReason::Update) + explicit SystemManagerCmd(Code type = Code::None, + CloseReason closeReason = CloseReason::RegularPowerDown, + UpdaterReason updaterReason = UpdaterReason::Update) : DataMessage(BusChannel::SystemManagerRequests), type(type), closeReason(closeReason), - updateReason(updateReason) + updaterReason(updaterReason) {} Code type; CloseReason closeReason; - UpdateReason updateReason; + UpdaterReason updaterReason; }; class SystemManagerCommon : public Service @@ -81,7 +81,7 @@ namespace sys Shutdown, ShutdownReady, Reboot, - RebootToUpdate, + RebootToUpdater, RebootToUsbMscMode } state = State::Running; @@ -102,7 +102,7 @@ namespace sys static bool RebootToUsbMscMode(Service *s); - static bool RebootToUpdate(Service *s, UpdateReason updateReason); + static bool RebootToUpdater(Service *s, UpdaterReason updaterReason); static bool SuspendService(const std::string &name, Service *caller); @@ -184,7 +184,7 @@ namespace sys void RebootHandler(); - void RebootToUpdateHandler(UpdateReason updateReason); + void RebootToUpdaterHandler(UpdaterReason updaterReason); void RebootToUsbMscModeHandler(State newState); @@ -197,7 +197,7 @@ namespace sys bool serviceListReversed{false}; CloseReason closeReason{CloseReason::RegularPowerDown}; - UpdateReason updateReason{UpdateReason::Update}; + UpdaterReason updaterReason{UpdaterReason::Update}; std::vector> systemServiceCreators; sys::TimerHandle freqTimer; sys::TimerHandle serviceCloseTimer; @@ -232,8 +232,8 @@ inline const char *c_str(sys::SystemManagerCommon::State state) return "Shutdown"; case sys::SystemManagerCommon::State::Reboot: return "Reboot"; - case sys::SystemManagerCommon::State::RebootToUpdate: - return "RebootToUpdate"; + case sys::SystemManagerCommon::State::RebootToUpdater: + return "RebootToUpdater"; case sys::SystemManagerCommon::State::RebootToUsbMscMode: return "RebootToUsbMscModeUpdate"; break; diff --git a/module-sys/common/include/system/Common.hpp b/module-sys/common/include/system/Common.hpp index 2cfc9840aca744f115e5e399f390b2763c65fe40..2c749dbd3f476cec43512f06fd7f46da3acedd60 100644 --- a/module-sys/common/include/system/Common.hpp +++ b/module-sys/common/include/system/Common.hpp @@ -49,7 +49,7 @@ namespace sys { RegularPowerDown, Reboot, - RebootToUpdate, + RebootToUpdater, RebootToUsbMscMode, FactoryReset, SystemBrownout, @@ -57,11 +57,13 @@ namespace sys }; // Updater reason code - enum class UpdateReason + enum class UpdaterReason { Update, Recovery, - FactoryReset + FactoryReset, + Backup, + Restore }; } // namespace sys