1 // 2 // Copyright (C) 2015 The Android Open Source Project 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 #include "update_engine/update_status_utils.h" 17 18 #include <base/logging.h> 19 #include <update_engine/dbus-constants.h> 20 21 using update_engine::UpdateStatus; 22 23 namespace { 24 25 const char kWeaveStatusIdle[] = "idle"; 26 const char kWeaveStatusCheckingForUpdate[] = "checkingForUpdate"; 27 const char kWeaveStatusUpdateAvailable[] = "updateAvailable"; 28 const char kWeaveStatusDownloading[] = "downloading"; 29 const char kWeaveStatusVerifying[] = "verifying"; 30 const char kWeaveStatusFinalizing[] = "finalizing"; 31 const char kWeaveStatusUpdatedNeedReboot[] = "updatedNeedReboot"; 32 const char kWeaveStatusReportingErrorEvent[] = "reportingErrorEvent"; 33 const char kWeaveStatusAttemptingRollback[] = "attemptingRollback"; 34 const char kWeaveStatusDisabled[] = "disabled"; 35 36 } // namespace 37 38 namespace chromeos_update_engine { 39 40 const char* UpdateStatusToString(const UpdateStatus& status) { 41 switch (status) { 42 case UpdateStatus::IDLE: 43 return update_engine::kUpdateStatusIdle; 44 case UpdateStatus::CHECKING_FOR_UPDATE: 45 return update_engine::kUpdateStatusCheckingForUpdate; 46 case UpdateStatus::UPDATE_AVAILABLE: 47 return update_engine::kUpdateStatusUpdateAvailable; 48 case UpdateStatus::DOWNLOADING: 49 return update_engine::kUpdateStatusDownloading; 50 case UpdateStatus::VERIFYING: 51 return update_engine::kUpdateStatusVerifying; 52 case UpdateStatus::FINALIZING: 53 return update_engine::kUpdateStatusFinalizing; 54 case UpdateStatus::UPDATED_NEED_REBOOT: 55 return update_engine::kUpdateStatusUpdatedNeedReboot; 56 case UpdateStatus::REPORTING_ERROR_EVENT: 57 return update_engine::kUpdateStatusReportingErrorEvent; 58 case UpdateStatus::ATTEMPTING_ROLLBACK: 59 return update_engine::kUpdateStatusAttemptingRollback; 60 case UpdateStatus::DISABLED: 61 return update_engine::kUpdateStatusDisabled; 62 } 63 64 NOTREACHED(); 65 return nullptr; 66 } 67 68 const char* UpdateStatusToWeaveStatus(const UpdateStatus& status) { 69 switch (status) { 70 case UpdateStatus::IDLE: 71 return kWeaveStatusIdle; 72 case UpdateStatus::CHECKING_FOR_UPDATE: 73 return kWeaveStatusCheckingForUpdate; 74 case UpdateStatus::UPDATE_AVAILABLE: 75 return kWeaveStatusUpdateAvailable; 76 case UpdateStatus::DOWNLOADING: 77 return kWeaveStatusDownloading; 78 case UpdateStatus::VERIFYING: 79 return kWeaveStatusVerifying; 80 case UpdateStatus::FINALIZING: 81 return kWeaveStatusFinalizing; 82 case UpdateStatus::UPDATED_NEED_REBOOT: 83 return kWeaveStatusUpdatedNeedReboot; 84 case UpdateStatus::REPORTING_ERROR_EVENT: 85 return kWeaveStatusReportingErrorEvent; 86 case UpdateStatus::ATTEMPTING_ROLLBACK: 87 return kWeaveStatusAttemptingRollback; 88 case UpdateStatus::DISABLED: 89 return kWeaveStatusDisabled; 90 } 91 92 NOTREACHED(); 93 return nullptr; 94 } 95 96 bool StringToUpdateStatus(const std::string& s, 97 UpdateStatus* status) { 98 if (s == update_engine::kUpdateStatusIdle) { 99 *status = UpdateStatus::IDLE; 100 return true; 101 } else if (s == update_engine::kUpdateStatusCheckingForUpdate) { 102 *status = UpdateStatus::CHECKING_FOR_UPDATE; 103 return true; 104 } else if (s == update_engine::kUpdateStatusUpdateAvailable) { 105 *status = UpdateStatus::UPDATE_AVAILABLE; 106 return true; 107 } else if (s == update_engine::kUpdateStatusDownloading) { 108 *status = UpdateStatus::DOWNLOADING; 109 return true; 110 } else if (s == update_engine::kUpdateStatusVerifying) { 111 *status = UpdateStatus::VERIFYING; 112 return true; 113 } else if (s == update_engine::kUpdateStatusFinalizing) { 114 *status = UpdateStatus::FINALIZING; 115 return true; 116 } else if (s == update_engine::kUpdateStatusUpdatedNeedReboot) { 117 *status = UpdateStatus::UPDATED_NEED_REBOOT; 118 return true; 119 } else if (s == update_engine::kUpdateStatusReportingErrorEvent) { 120 *status = UpdateStatus::REPORTING_ERROR_EVENT; 121 return true; 122 } else if (s == update_engine::kUpdateStatusAttemptingRollback) { 123 *status = UpdateStatus::ATTEMPTING_ROLLBACK; 124 return true; 125 } else if (s == update_engine::kUpdateStatusDisabled) { 126 *status = UpdateStatus::DISABLED; 127 return true; 128 } 129 return false; 130 } 131 132 } // namespace chromeos_update_engine 133