diff --git a/services/include/cellular_data_power_save_mode_subscriber.h b/services/include/cellular_data_power_save_mode_subscriber.h index 873095c4320bb94eab553c45611c8dc06deba22e..2baa614b91dfd90d1720ceed4da571dc3294986a 100644 --- a/services/include/cellular_data_power_save_mode_subscriber.h +++ b/services/include/cellular_data_power_save_mode_subscriber.h @@ -35,7 +35,7 @@ private: std::shared_ptr strAsyncCommonEvent_ = nullptr; std::weak_ptr powerSaveModeCellularDataHandler_; static inline std::string lastMsg = ""; - static inline bool savedCellularDataStatus_ = true; + static inline int32_t savedCellularDataStatus_ = -1; }; } // namespace Telephony } // namespace OHOS diff --git a/services/src/cellular_data_power_save_mode_subscriber.cpp b/services/src/cellular_data_power_save_mode_subscriber.cpp index c36bb372df0eaf5c64d85307405eb98ef10ca483..3624ddf73dbdd1a3ed6c767bfb69efd8660f9532 100644 --- a/services/src/cellular_data_power_save_mode_subscriber.cpp +++ b/services/src/cellular_data_power_save_mode_subscriber.cpp @@ -21,6 +21,8 @@ namespace OHOS { namespace Telephony { +constexpr int32_t USER_OPERATION = 1; +constexpr int32_t INVALID_CELLULAR_DATA_STATUS = -1; void CellularDataPowerSaveModeSubscriber::OnReceiveEvent(const EventFwk::CommonEventData &data) { std::string action = data.GetWant().GetAction(); @@ -32,7 +34,7 @@ void CellularDataPowerSaveModeSubscriber::OnReceiveEvent(const EventFwk::CommonE TELEPHONY_LOGI("Exit str mode"); int32_t reason = data.GetCode(); // process only in user operation - if (reason == 1) { + if (reason == USER_OPERATION) { HandleExitStrEvent(action); } } @@ -46,12 +48,16 @@ void CellularDataPowerSaveModeSubscriber::HandleEnterStrEvent(std::string &actio auto powerSaveModeCellularDataHandler = powerSaveModeCellularDataHandler_.lock(); if (powerSaveModeCellularDataHandler != nullptr) { powerSaveModeCellularDataHandler->ClearAllConnections(DisConnectionReason::REASON_CLEAR_CONNECTION); - int32_t ret = powerSaveModeCellularDataHandler->IsCellularDataEnabled(savedCellularDataStatus_); + bool cellularStatus = INVALID_CELLULAR_DATA_STATUS; + int32_t ret = powerSaveModeCellularDataHandler->IsCellularDataEnabled(cellularStatus); + savedCellularDataStatus_ = static_cast(cellularStatus); TELEPHONY_LOGI("Backup cellular status = %{public}d, ret = %{public}d", savedCellularDataStatus_, ret); - powerSaveModeCellularDataHandler->SetCellularDataEnable(false); + if (savedCellularDataStatus_ != INVALID_CELLULAR_DATA_STATUS) { + powerSaveModeCellularDataHandler->SetCellularDataEnable(false); + } } } else { - TELEPHONY_LOGI("Recv same msg in succession lastMsg:%{public}s", lastMsg.c_str()); + TELEPHONY_LOGE("Recv same msg in succession lastMsg:%{public}s", lastMsg.c_str()); } lastMsg = ENTER_STR_TELEPHONY_NOTIFY; } @@ -60,12 +66,14 @@ void CellularDataPowerSaveModeSubscriber::HandleExitStrEvent(std::string &action { if (action != lastMsg) { auto powerSaveModeCellularDataHandler = powerSaveModeCellularDataHandler_.lock(); - if (powerSaveModeCellularDataHandler != nullptr) { + if (powerSaveModeCellularDataHandler != nullptr && savedCellularDataStatus_ != INVALID_CELLULAR_DATA_STATUS) { int32_t ret = powerSaveModeCellularDataHandler->SetCellularDataEnable(savedCellularDataStatus_); TELEPHONY_LOGI("Resume cellular status %{public}d, ret = %{public}d", savedCellularDataStatus_, ret); + } else { + TELEPHONY_LOGE("Invalid cellular status %{public}d", savedCellularDataStatus_); } } else { - TELEPHONY_LOGI("Recv same msg in succession lastMsg:%{public}s", lastMsg.c_str()); + TELEPHONY_LOGE("Recv same msg in succession lastMsg:%{public}s", lastMsg.c_str()); } lastMsg = EXIT_STR_TELEPHONY_NOTIFY; }