From 920cb076b54985edfa1d7bfba6ed2ec765247c60 Mon Sep 17 00:00:00 2001 From: chejunwei051 Date: Thu, 10 Oct 2024 19:00:05 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=BF=80=E6=B4=BBAPN?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=AF=B9=E5=BA=94=E7=9A=84APN=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chejunwei051 --- services/include/cellular_data_handler.h | 4 ++ services/src/cellular_data_handler.cpp | 76 ++++++++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/services/include/cellular_data_handler.h b/services/include/cellular_data_handler.h index dc10d1b9..79874d49 100644 --- a/services/include/cellular_data_handler.h +++ b/services/include/cellular_data_handler.h @@ -160,6 +160,10 @@ private: void RetryToSetupDatacall(const AppExecFwk::InnerEvent::Pointer &event); void RetryOrClearConnection(const sptr &apnHolder, DisConnectionReason reason, const std::shared_ptr &netInfo); + std::shared_ptr CreatorDataShareHelper(); + bool GetCurrentDataShareApnInfo(std::shared_ptr dataShareHelper, + const int32_t simId, int32_t &profileIdValue); + void UpdateApnInfo(const int32_t profileId); private: sptr apnManager_; diff --git a/services/src/cellular_data_handler.cpp b/services/src/cellular_data_handler.cpp index 4133713c..c18e0880 100644 --- a/services/src/cellular_data_handler.cpp +++ b/services/src/cellular_data_handler.cpp @@ -821,9 +821,85 @@ void CellularDataHandler::EstablishDataConnectionComplete(const InnerEvent::Poin incallDataStateMachine_->SendEvent(incallEvent); } UpdateCellularDataConnectState(apnHolder->GetApnType()); + UpdateApnInfo(apnHolder->GetCurrentApn()->attr_.profileId_); } } +std::shared_ptr CellularDataHandler::CreatorDataShareHelper() +{ + sptr saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + sptr remoteObj = saManager->GetSystemAbility(TELEPHONY_CELLULAR_DATA_SYS_ABILITY_ID); + if (saManager == nullptr) { + TELEPHONY_LOGE("saManager is nullptr."); + return nullptr; + } + if (remoteObj == nullptr) { + TELEPHONY_LOGE("remoteObj is nullptr."); + return nullptr; + } + return DataShare::DataShareHelper::Creator(remoteObj, CELLULAR_DATA_RDB_URI); +} + +bool CellularDataHandler::GetCurrentDataShareApnInfo(std::shared_ptr dataShareHelper, + const int32_t simId, int32_t &profileIdValue) +{ + Uri preferApnUri(std::string(CELLULAR_DATA_RDB_PREFER) + "?Proxy=true&simId=" + std::to_string(simId)); + DataShare::DataSharePredicates predicates; + std::vector columns; + std::shared_ptr resultSet = + dataShareHelper->Query(preferApnUri, predicates, columns); + if (resultSet == nullptr) { + TELEPHONY_LOGI("Query CurrentDataShareApnInfo resultSet is nullptr."); + return false; + } + + int32_t operationResult = resultSet->GoToFirstRow(); + while (operationResult == TELEPHONY_SUCCESS) { + int32_t columnIndex = 0; + resultSet->GetColumnIndex(PdpProfileData::PROFILE_ID, columnIndex); + operationResult = resultSet->GetInt(columnIndex, profileIdValue); + if (operationResult == TELEPHONY_SUCCESS) { + break; + } + operationResult = resultSet->GoToNextRow(); + } + resultSet->Close(); + return true; +} + +void CellularDataHandler::UpdateApnInfo(const int32_t profileId) +{ + std::shared_ptr dataShareHelper = CreatorDataShareHelper(); + if (dataShareHelper == nullptr) { + TELEPHONY_LOGE("dataShareHelper is nullptr."); + return; + } + int32_t simId = CoreManagerInner::GetInstance().GetSimId(slotId_); + if (simId <= INVALID_SIM_ID) { + TELEPHONY_LOGE("Slot%{public}d: failed due to invalid sim id %{public}d", slotId_, simId); + return; + } + int32_t profileIdValue = 0; + if (!GetCurrentDataShareApnInfo(dataShareHelper, simId, profileIdValue)) { + TELEPHONY_LOGE("GetCurrentDataShareApnInfo fail."); + return; + } + if (profileIdValue == profileId) { + return; + } else { + DataShare::DataSharePredicates predicates; + DataShare::DataShareValuesBucket values; + double profileIdAsDouble = static_cast(profileId); + double simIdAsDouble = static_cast(simId); + values.Put(PdpProfileData::PROFILE_ID, profileIdAsDouble); + values.Put(PdpProfileData::SIM_ID, simIdAsDouble); + Uri uri(CELLULAR_DATA_RDB_PREFER); + int32_t result = dataShareHelper->Update(uri, predicates, values); + TELEPHONY_LOGI("profile_id:%{public}d, simId:%{public}d, result:%{public}d", profileId, simId, result); + } + dataShareHelper->Release(); +} + int32_t CellularDataHandler::GetSlotId() const { return slotId_; -- Gitee From b179e73018357dc9e9dec6abff71467000f659a8 Mon Sep 17 00:00:00 2001 From: chejunwei051 Date: Thu, 10 Oct 2024 11:02:11 +0000 Subject: [PATCH 2/8] update services/src/cellular_data_handler.cpp. Signed-off-by: chejunwei051 --- services/src/cellular_data_handler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/src/cellular_data_handler.cpp b/services/src/cellular_data_handler.cpp index c18e0880..8b1f6a76 100644 --- a/services/src/cellular_data_handler.cpp +++ b/services/src/cellular_data_handler.cpp @@ -821,7 +821,7 @@ void CellularDataHandler::EstablishDataConnectionComplete(const InnerEvent::Poin incallDataStateMachine_->SendEvent(incallEvent); } UpdateCellularDataConnectState(apnHolder->GetApnType()); - UpdateApnInfo(apnHolder->GetCurrentApn()->attr_.profileId_); + UpdateApnInfo(apnHolder->GetCurrentApn()->attr_.profileId_); } } -- Gitee From 4375a7bac47390d12054de75e40a75ca1b03baa1 Mon Sep 17 00:00:00 2001 From: chejunwei051 Date: Thu, 10 Oct 2024 11:08:40 +0000 Subject: [PATCH 3/8] update services/src/cellular_data_handler.cpp. Signed-off-by: chejunwei051 --- services/src/cellular_data_handler.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/services/src/cellular_data_handler.cpp b/services/src/cellular_data_handler.cpp index 8b1f6a76..88a74b09 100644 --- a/services/src/cellular_data_handler.cpp +++ b/services/src/cellular_data_handler.cpp @@ -869,24 +869,23 @@ bool CellularDataHandler::GetCurrentDataShareApnInfo(std::shared_ptr dataShareHelper = CreatorDataShareHelper(); - if (dataShareHelper == nullptr) { - TELEPHONY_LOGE("dataShareHelper is nullptr."); - return; - } int32_t simId = CoreManagerInner::GetInstance().GetSimId(slotId_); if (simId <= INVALID_SIM_ID) { TELEPHONY_LOGE("Slot%{public}d: failed due to invalid sim id %{public}d", slotId_, simId); return; } + std::shared_ptr dataShareHelper = CreatorDataShareHelper(); + if (dataShareHelper == nullptr) { + TELEPHONY_LOGE("dataShareHelper is nullptr."); + return; + } int32_t profileIdValue = 0; if (!GetCurrentDataShareApnInfo(dataShareHelper, simId, profileIdValue)) { TELEPHONY_LOGE("GetCurrentDataShareApnInfo fail."); + dataShareHelper->Release(); return; } - if (profileIdValue == profileId) { - return; - } else { + if (profileIdValue != profileId) { DataShare::DataSharePredicates predicates; DataShare::DataShareValuesBucket values; double profileIdAsDouble = static_cast(profileId); -- Gitee From 76f8cf9691fcc0c02a005905263ca94065461b1c Mon Sep 17 00:00:00 2001 From: chejunwei051 Date: Thu, 10 Oct 2024 11:12:07 +0000 Subject: [PATCH 4/8] update services/src/cellular_data_handler.cpp. Signed-off-by: chejunwei051 --- services/src/cellular_data_handler.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/src/cellular_data_handler.cpp b/services/src/cellular_data_handler.cpp index 88a74b09..c4b2657a 100644 --- a/services/src/cellular_data_handler.cpp +++ b/services/src/cellular_data_handler.cpp @@ -894,7 +894,9 @@ void CellularDataHandler::UpdateApnInfo(const int32_t profileId) values.Put(PdpProfileData::SIM_ID, simIdAsDouble); Uri uri(CELLULAR_DATA_RDB_PREFER); int32_t result = dataShareHelper->Update(uri, predicates, values); - TELEPHONY_LOGI("profile_id:%{public}d, simId:%{public}d, result:%{public}d", profileId, simId, result); + if (result < TELEPHONY_ERR_SUCCESS) { + TELEPHONY_LOGE("UpdateApnInfo fail!"); + } } dataShareHelper->Release(); } -- Gitee From 0424f29be37feaff3f0170caaaaaedbe53c467c3 Mon Sep 17 00:00:00 2001 From: chejunwei051 Date: Thu, 10 Oct 2024 11:13:59 +0000 Subject: [PATCH 5/8] update services/src/cellular_data_handler.cpp. Signed-off-by: chejunwei051 --- services/src/cellular_data_handler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/src/cellular_data_handler.cpp b/services/src/cellular_data_handler.cpp index c4b2657a..36287361 100644 --- a/services/src/cellular_data_handler.cpp +++ b/services/src/cellular_data_handler.cpp @@ -895,7 +895,7 @@ void CellularDataHandler::UpdateApnInfo(const int32_t profileId) Uri uri(CELLULAR_DATA_RDB_PREFER); int32_t result = dataShareHelper->Update(uri, predicates, values); if (result < TELEPHONY_ERR_SUCCESS) { - TELEPHONY_LOGE("UpdateApnInfo fail!"); + TELEPHONY_LOGE("UpdateApnInfo fail! result:%{public}d", result); } } dataShareHelper->Release(); -- Gitee From 169960dd6e13ee7982c674cdfca14175db13c6c0 Mon Sep 17 00:00:00 2001 From: chejunwei051 Date: Sat, 12 Oct 2024 07:41:55 +0000 Subject: [PATCH 6/8] update services/src/cellular_data_handler.cpp. Signed-off-by: chejunwei051 --- services/src/cellular_data_handler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/src/cellular_data_handler.cpp b/services/src/cellular_data_handler.cpp index 36287361..93c896b6 100644 --- a/services/src/cellular_data_handler.cpp +++ b/services/src/cellular_data_handler.cpp @@ -828,11 +828,11 @@ void CellularDataHandler::EstablishDataConnectionComplete(const InnerEvent::Poin std::shared_ptr CellularDataHandler::CreatorDataShareHelper() { sptr saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - sptr remoteObj = saManager->GetSystemAbility(TELEPHONY_CELLULAR_DATA_SYS_ABILITY_ID); if (saManager == nullptr) { TELEPHONY_LOGE("saManager is nullptr."); return nullptr; } + sptr remoteObj = saManager->GetSystemAbility(TELEPHONY_CELLULAR_DATA_SYS_ABILITY_ID); if (remoteObj == nullptr) { TELEPHONY_LOGE("remoteObj is nullptr."); return nullptr; -- Gitee From 63c0ce803b6e0fc54d5a039d5ccc4248217b4cf6 Mon Sep 17 00:00:00 2001 From: chejunwei051 Date: Sat, 12 Oct 2024 10:04:34 +0000 Subject: [PATCH 7/8] update services/src/cellular_data_handler.cpp. Signed-off-by: chejunwei051 --- services/src/cellular_data_handler.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/services/src/cellular_data_handler.cpp b/services/src/cellular_data_handler.cpp index 93c896b6..105a4f09 100644 --- a/services/src/cellular_data_handler.cpp +++ b/services/src/cellular_data_handler.cpp @@ -852,17 +852,17 @@ bool CellularDataHandler::GetCurrentDataShareApnInfo(std::shared_ptrGoToFirstRow(); - while (operationResult == TELEPHONY_SUCCESS) { - int32_t columnIndex = 0; - resultSet->GetColumnIndex(PdpProfileData::PROFILE_ID, columnIndex); - operationResult = resultSet->GetInt(columnIndex, profileIdValue); - if (operationResult == TELEPHONY_SUCCESS) { - break; - } - operationResult = resultSet->GoToNextRow(); + int count = 0; + resultSet->GetRowCount(count); + if (count <= 0) { + TELEPHONY_LOGI("GetRowCount fail."); + resultSet->Close(); + return false; } + int32_t columnIndex = 0; + resultSet->GoToFirstRow(); + resultSet->GetColumnIndex(PdpProfileData::PROFILE_ID, columnIndex); + resultSet->GetInt(columnIndex, profileIdValue); resultSet->Close(); return true; } -- Gitee From d2495f6637cfc53ba773fe7088d8ec0a5ba2f104 Mon Sep 17 00:00:00 2001 From: chejunwei051 Date: Sat, 12 Oct 2024 13:54:41 +0000 Subject: [PATCH 8/8] update services/src/cellular_data_handler.cpp. Signed-off-by: chejunwei051 --- services/src/cellular_data_handler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/src/cellular_data_handler.cpp b/services/src/cellular_data_handler.cpp index 105a4f09..06b0cc48 100644 --- a/services/src/cellular_data_handler.cpp +++ b/services/src/cellular_data_handler.cpp @@ -855,11 +855,11 @@ bool CellularDataHandler::GetCurrentDataShareApnInfo(std::shared_ptrGetRowCount(count); if (count <= 0) { - TELEPHONY_LOGI("GetRowCount fail."); + TELEPHONY_LOGI("GetRowCount is NULL."); resultSet->Close(); return false; } - int32_t columnIndex = 0; + int columnIndex = 0; resultSet->GoToFirstRow(); resultSet->GetColumnIndex(PdpProfileData::PROFILE_ID, columnIndex); resultSet->GetInt(columnIndex, profileIdValue); -- Gitee