From 3887d6432e477dcfe6c63a1045d61c317ca8fcd7 Mon Sep 17 00:00:00 2001 From: chengwang Date: Fri, 12 Sep 2025 14:50:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=80=97=E4=BC=98=E5=8C=96=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chengwang --- .../cellular_data_power_save_mode_subscriber.h | 2 +- .../src/cellular_data_power_save_mode_subscriber.cpp | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/services/include/cellular_data_power_save_mode_subscriber.h b/services/include/cellular_data_power_save_mode_subscriber.h index 873095c4..2baa614b 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 c36bb372..d30f5ecb 100644 --- a/services/src/cellular_data_power_save_mode_subscriber.cpp +++ b/services/src/cellular_data_power_save_mode_subscriber.cpp @@ -46,12 +46,14 @@ 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); } } 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 +62,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; } -- Gitee From 822c7829c405a27d4e9cbd8503a068421ae9be4b Mon Sep 17 00:00:00 2001 From: chengwang Date: Fri, 12 Sep 2025 08:53:16 +0000 Subject: [PATCH 2/2] update services/src/cellular_data_power_save_mode_subscriber.cpp. Signed-off-by: chengwang --- services/src/cellular_data_power_save_mode_subscriber.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/src/cellular_data_power_save_mode_subscriber.cpp b/services/src/cellular_data_power_save_mode_subscriber.cpp index d30f5ecb..3624ddf7 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); } } @@ -50,7 +52,9 @@ void CellularDataPowerSaveModeSubscriber::HandleEnterStrEvent(std::string &actio 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_LOGE("Recv same msg in succession lastMsg:%{public}s", lastMsg.c_str()); -- Gitee