12d43be4eSopenharmony_ci/* 22d43be4eSopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 32d43be4eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 42d43be4eSopenharmony_ci * you may not use this file except in compliance with the License. 52d43be4eSopenharmony_ci * You may obtain a copy of the License at 62d43be4eSopenharmony_ci * 72d43be4eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 82d43be4eSopenharmony_ci * 92d43be4eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 102d43be4eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 112d43be4eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 122d43be4eSopenharmony_ci * See the License for the specific language governing permissions and 132d43be4eSopenharmony_ci * limitations under the License. 142d43be4eSopenharmony_ci */ 152d43be4eSopenharmony_ci 162d43be4eSopenharmony_ci#include "cellular_data_client.h" 172d43be4eSopenharmony_ci 182d43be4eSopenharmony_ci#include "__mutex_base" 192d43be4eSopenharmony_ci#include "cellular_data_types.h" 202d43be4eSopenharmony_ci#include "i_cellular_data_manager.h" 212d43be4eSopenharmony_ci#include "if_system_ability_manager.h" 222d43be4eSopenharmony_ci#include "iremote_broker.h" 232d43be4eSopenharmony_ci#include "iremote_object.h" 242d43be4eSopenharmony_ci#include "iservice_registry.h" 252d43be4eSopenharmony_ci#include "memory" 262d43be4eSopenharmony_ci#include "refbase.h" 272d43be4eSopenharmony_ci#include "system_ability_definition.h" 282d43be4eSopenharmony_ci#include "telephony_errors.h" 292d43be4eSopenharmony_ci#include "telephony_log_wrapper.h" 302d43be4eSopenharmony_ci#include "telephony_types.h" 312d43be4eSopenharmony_ci 322d43be4eSopenharmony_cinamespace OHOS { 332d43be4eSopenharmony_cinamespace Telephony { 342d43be4eSopenharmony_ciint32_t CellularDataClient::defaultCellularDataSlotId_ = INVALID_MAIN_CARD_SLOTID; 352d43be4eSopenharmony_ciint32_t CellularDataClient::defaultCellularDataSimId_ = 0; 362d43be4eSopenharmony_ciCellularDataClient::CellularDataClient() 372d43be4eSopenharmony_ci{ 382d43be4eSopenharmony_ci if (callback_ == nullptr) { 392d43be4eSopenharmony_ci callback_ = new DataSimAccountCallback(); 402d43be4eSopenharmony_ci } 412d43be4eSopenharmony_ci} 422d43be4eSopenharmony_ci 432d43be4eSopenharmony_ciCellularDataClient::~CellularDataClient() 442d43be4eSopenharmony_ci{ 452d43be4eSopenharmony_ci UnregisterSimAccountCallback(); 462d43be4eSopenharmony_ci} 472d43be4eSopenharmony_ci 482d43be4eSopenharmony_cibool CellularDataClient::IsValidSlotId(int32_t slotId) 492d43be4eSopenharmony_ci{ 502d43be4eSopenharmony_ci return ((slotId >= DEFAULT_SIM_SLOT_ID) && (slotId < SIM_SLOT_COUNT)); 512d43be4eSopenharmony_ci} 522d43be4eSopenharmony_ci 532d43be4eSopenharmony_cisptr<ICellularDataManager> CellularDataClient::GetProxy() 542d43be4eSopenharmony_ci{ 552d43be4eSopenharmony_ci std::lock_guard<std::mutex> lock(mutexProxy_); 562d43be4eSopenharmony_ci if (proxy_ != nullptr) { 572d43be4eSopenharmony_ci return proxy_; 582d43be4eSopenharmony_ci } 592d43be4eSopenharmony_ci 602d43be4eSopenharmony_ci sptr<IRemoteObject> obj; 612d43be4eSopenharmony_ci if (!IsCellularDataSysAbilityExist(obj)) { 622d43be4eSopenharmony_ci TELEPHONY_LOGE("Failed to get cellular data service"); 632d43be4eSopenharmony_ci return nullptr; 642d43be4eSopenharmony_ci } 652d43be4eSopenharmony_ci std::unique_ptr<CellularDataDeathRecipient> recipient = std::make_unique<CellularDataDeathRecipient>(*this); 662d43be4eSopenharmony_ci if (recipient == nullptr) { 672d43be4eSopenharmony_ci TELEPHONY_LOGE("recipient is null"); 682d43be4eSopenharmony_ci return nullptr; 692d43be4eSopenharmony_ci } 702d43be4eSopenharmony_ci sptr<IRemoteObject::DeathRecipient> dr(recipient.release()); 712d43be4eSopenharmony_ci if ((obj->IsProxyObject()) && (!obj->AddDeathRecipient(dr))) { 722d43be4eSopenharmony_ci TELEPHONY_LOGE("Failed to add death recipient"); 732d43be4eSopenharmony_ci return nullptr; 742d43be4eSopenharmony_ci } 752d43be4eSopenharmony_ci proxy_ = iface_cast<ICellularDataManager>(obj); 762d43be4eSopenharmony_ci deathRecipient_ = dr; 772d43be4eSopenharmony_ci TELEPHONY_LOGD("Succeed to connect cellular data service %{public}d", proxy_ == nullptr); 782d43be4eSopenharmony_ci return proxy_; 792d43be4eSopenharmony_ci} 802d43be4eSopenharmony_ci 812d43be4eSopenharmony_civoid CellularDataClient::OnRemoteDied(const wptr<IRemoteObject> &remote) 822d43be4eSopenharmony_ci{ 832d43be4eSopenharmony_ci if (remote == nullptr) { 842d43be4eSopenharmony_ci TELEPHONY_LOGE("remote is nullptr"); 852d43be4eSopenharmony_ci return; 862d43be4eSopenharmony_ci } 872d43be4eSopenharmony_ci std::lock_guard<std::mutex> lock(mutexProxy_); 882d43be4eSopenharmony_ci if (proxy_ == nullptr) { 892d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy_ is nullptr"); 902d43be4eSopenharmony_ci return; 912d43be4eSopenharmony_ci } 922d43be4eSopenharmony_ci sptr<IRemoteObject> serviceRemote = proxy_->AsObject(); 932d43be4eSopenharmony_ci if ((serviceRemote != nullptr) && (serviceRemote == remote.promote())) { 942d43be4eSopenharmony_ci serviceRemote->RemoveDeathRecipient(deathRecipient_); 952d43be4eSopenharmony_ci proxy_ = nullptr; 962d43be4eSopenharmony_ci defaultCellularDataSlotId_ = INVALID_MAIN_CARD_SLOTID; 972d43be4eSopenharmony_ci defaultCellularDataSimId_ = 0; 982d43be4eSopenharmony_ci registerStatus_ = false; 992d43be4eSopenharmony_ci TELEPHONY_LOGE("on remote died"); 1002d43be4eSopenharmony_ci } 1012d43be4eSopenharmony_ci} 1022d43be4eSopenharmony_ci 1032d43be4eSopenharmony_cibool CellularDataClient::IsConnect() 1042d43be4eSopenharmony_ci{ 1052d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 1062d43be4eSopenharmony_ci return (proxy != nullptr); 1072d43be4eSopenharmony_ci} 1082d43be4eSopenharmony_ci 1092d43be4eSopenharmony_civoid CellularDataClient::RegisterSimAccountCallback() 1102d43be4eSopenharmony_ci{ 1112d43be4eSopenharmony_ci if (callback_ == nullptr) { 1122d43be4eSopenharmony_ci TELEPHONY_LOGE("callback_ is nullptr"); 1132d43be4eSopenharmony_ci return; 1142d43be4eSopenharmony_ci } 1152d43be4eSopenharmony_ci if (registerStatus_) { 1162d43be4eSopenharmony_ci return; 1172d43be4eSopenharmony_ci } 1182d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 1192d43be4eSopenharmony_ci if (proxy == nullptr) { 1202d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 1212d43be4eSopenharmony_ci return; 1222d43be4eSopenharmony_ci } 1232d43be4eSopenharmony_ci int32_t ret = proxy->RegisterSimAccountCallback(callback_); 1242d43be4eSopenharmony_ci TELEPHONY_LOGD("ret:%{public}d", ret); 1252d43be4eSopenharmony_ci if (ret == TELEPHONY_ERR_SUCCESS) { 1262d43be4eSopenharmony_ci registerStatus_ = true; 1272d43be4eSopenharmony_ci } 1282d43be4eSopenharmony_ci} 1292d43be4eSopenharmony_ci 1302d43be4eSopenharmony_civoid CellularDataClient::UnregisterSimAccountCallback() 1312d43be4eSopenharmony_ci{ 1322d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 1332d43be4eSopenharmony_ci if (proxy == nullptr) { 1342d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 1352d43be4eSopenharmony_ci return; 1362d43be4eSopenharmony_ci } 1372d43be4eSopenharmony_ci int32_t ret = proxy->UnregisterSimAccountCallback(); 1382d43be4eSopenharmony_ci TELEPHONY_LOGD("ret:%{public}d", ret); 1392d43be4eSopenharmony_ci} 1402d43be4eSopenharmony_ci 1412d43be4eSopenharmony_ciint32_t CellularDataClient::GetDefaultCellularDataSlotId() 1422d43be4eSopenharmony_ci{ 1432d43be4eSopenharmony_ci RegisterSimAccountCallback(); 1442d43be4eSopenharmony_ci if (IsValidSlotId(defaultCellularDataSlotId_)) { 1452d43be4eSopenharmony_ci return defaultCellularDataSlotId_; 1462d43be4eSopenharmony_ci } 1472d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 1482d43be4eSopenharmony_ci if (proxy == nullptr) { 1492d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 1502d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 1512d43be4eSopenharmony_ci } 1522d43be4eSopenharmony_ci defaultCellularDataSlotId_ = proxy->GetDefaultCellularDataSlotId(); 1532d43be4eSopenharmony_ci return defaultCellularDataSlotId_; 1542d43be4eSopenharmony_ci} 1552d43be4eSopenharmony_ci 1562d43be4eSopenharmony_ciint32_t CellularDataClient::GetDefaultCellularDataSimId(int32_t &simId) 1572d43be4eSopenharmony_ci{ 1582d43be4eSopenharmony_ci RegisterSimAccountCallback(); 1592d43be4eSopenharmony_ci if (defaultCellularDataSimId_ > 0) { 1602d43be4eSopenharmony_ci simId = defaultCellularDataSimId_; 1612d43be4eSopenharmony_ci return TELEPHONY_ERR_SUCCESS; 1622d43be4eSopenharmony_ci } 1632d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 1642d43be4eSopenharmony_ci if (proxy == nullptr) { 1652d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 1662d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 1672d43be4eSopenharmony_ci } 1682d43be4eSopenharmony_ci int32_t result = proxy->GetDefaultCellularDataSimId(simId); 1692d43be4eSopenharmony_ci if (result == TELEPHONY_ERR_SUCCESS) { 1702d43be4eSopenharmony_ci defaultCellularDataSimId_ = simId; 1712d43be4eSopenharmony_ci } 1722d43be4eSopenharmony_ci return result; 1732d43be4eSopenharmony_ci} 1742d43be4eSopenharmony_ci 1752d43be4eSopenharmony_ciint32_t CellularDataClient::SetDefaultCellularDataSlotId(int32_t slotId) 1762d43be4eSopenharmony_ci{ 1772d43be4eSopenharmony_ci RegisterSimAccountCallback(); 1782d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 1792d43be4eSopenharmony_ci if (proxy == nullptr) { 1802d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 1812d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 1822d43be4eSopenharmony_ci } 1832d43be4eSopenharmony_ci int32_t result = proxy->SetDefaultCellularDataSlotId(slotId); 1842d43be4eSopenharmony_ci if (result == TELEPHONY_ERR_SUCCESS) { 1852d43be4eSopenharmony_ci defaultCellularDataSlotId_ = slotId; 1862d43be4eSopenharmony_ci int32_t simId = 0; 1872d43be4eSopenharmony_ci int32_t ret = proxy->GetDefaultCellularDataSimId(simId); 1882d43be4eSopenharmony_ci if (ret == TELEPHONY_ERR_SUCCESS) { 1892d43be4eSopenharmony_ci defaultCellularDataSimId_ = simId; 1902d43be4eSopenharmony_ci } 1912d43be4eSopenharmony_ci } 1922d43be4eSopenharmony_ci return result; 1932d43be4eSopenharmony_ci} 1942d43be4eSopenharmony_ci 1952d43be4eSopenharmony_ciint32_t CellularDataClient::UpdateDefaultCellularDataSlotId() 1962d43be4eSopenharmony_ci{ 1972d43be4eSopenharmony_ci defaultCellularDataSlotId_ = INVALID_MAIN_CARD_SLOTID; 1982d43be4eSopenharmony_ci defaultCellularDataSimId_ = 0; 1992d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2002d43be4eSopenharmony_ci if (proxy == nullptr) { 2012d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2022d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2032d43be4eSopenharmony_ci } 2042d43be4eSopenharmony_ci defaultCellularDataSlotId_ = proxy->GetDefaultCellularDataSlotId(); 2052d43be4eSopenharmony_ci proxy->GetDefaultCellularDataSimId(defaultCellularDataSimId_); 2062d43be4eSopenharmony_ci return defaultCellularDataSlotId_; 2072d43be4eSopenharmony_ci} 2082d43be4eSopenharmony_ci 2092d43be4eSopenharmony_ciint32_t CellularDataClient::EnableCellularData(bool enable) 2102d43be4eSopenharmony_ci{ 2112d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2122d43be4eSopenharmony_ci if (proxy == nullptr) { 2132d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2142d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2152d43be4eSopenharmony_ci } 2162d43be4eSopenharmony_ci return proxy->EnableCellularData(enable); 2172d43be4eSopenharmony_ci} 2182d43be4eSopenharmony_ci 2192d43be4eSopenharmony_ciint32_t CellularDataClient::EnableIntelligenceSwitch(bool enable) 2202d43be4eSopenharmony_ci{ 2212d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2222d43be4eSopenharmony_ci if (proxy == nullptr) { 2232d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2242d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2252d43be4eSopenharmony_ci } 2262d43be4eSopenharmony_ci return proxy->EnableIntelligenceSwitch(enable); 2272d43be4eSopenharmony_ci} 2282d43be4eSopenharmony_ci 2292d43be4eSopenharmony_ciint32_t CellularDataClient::IsCellularDataEnabled(bool &dataEnabled) 2302d43be4eSopenharmony_ci{ 2312d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2322d43be4eSopenharmony_ci if (proxy == nullptr) { 2332d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2342d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2352d43be4eSopenharmony_ci } 2362d43be4eSopenharmony_ci return proxy->IsCellularDataEnabled(dataEnabled); 2372d43be4eSopenharmony_ci} 2382d43be4eSopenharmony_ci 2392d43be4eSopenharmony_ciint32_t CellularDataClient::GetCellularDataState() 2402d43be4eSopenharmony_ci{ 2412d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2422d43be4eSopenharmony_ci if (proxy == nullptr) { 2432d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2442d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2452d43be4eSopenharmony_ci } 2462d43be4eSopenharmony_ci return proxy->GetCellularDataState(); 2472d43be4eSopenharmony_ci} 2482d43be4eSopenharmony_ci 2492d43be4eSopenharmony_ciint32_t CellularDataClient::GetApnState(int32_t slotId, const std::string &apnType) 2502d43be4eSopenharmony_ci{ 2512d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2522d43be4eSopenharmony_ci if (proxy == nullptr) { 2532d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2542d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2552d43be4eSopenharmony_ci } 2562d43be4eSopenharmony_ci return proxy->GetApnState(slotId, apnType); 2572d43be4eSopenharmony_ci} 2582d43be4eSopenharmony_ci 2592d43be4eSopenharmony_ciint32_t CellularDataClient::GetDataRecoveryState() 2602d43be4eSopenharmony_ci{ 2612d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2622d43be4eSopenharmony_ci if (proxy == nullptr) { 2632d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2642d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2652d43be4eSopenharmony_ci } 2662d43be4eSopenharmony_ci return proxy->GetDataRecoveryState(); 2672d43be4eSopenharmony_ci} 2682d43be4eSopenharmony_ci 2692d43be4eSopenharmony_ciint32_t CellularDataClient::IsCellularDataRoamingEnabled(int32_t slotId, bool &dataRoamingEnabled) 2702d43be4eSopenharmony_ci{ 2712d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2722d43be4eSopenharmony_ci if (proxy == nullptr) { 2732d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2742d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2752d43be4eSopenharmony_ci } 2762d43be4eSopenharmony_ci return proxy->IsCellularDataRoamingEnabled(slotId, dataRoamingEnabled); 2772d43be4eSopenharmony_ci} 2782d43be4eSopenharmony_ci 2792d43be4eSopenharmony_ciint32_t CellularDataClient::EnableCellularDataRoaming(int32_t slotId, bool enable) 2802d43be4eSopenharmony_ci{ 2812d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2822d43be4eSopenharmony_ci if (proxy == nullptr) { 2832d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2842d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2852d43be4eSopenharmony_ci } 2862d43be4eSopenharmony_ci return proxy->EnableCellularDataRoaming(slotId, enable); 2872d43be4eSopenharmony_ci} 2882d43be4eSopenharmony_ci 2892d43be4eSopenharmony_ciint32_t CellularDataClient::GetCellularDataFlowType() 2902d43be4eSopenharmony_ci{ 2912d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 2922d43be4eSopenharmony_ci if (proxy == nullptr) { 2932d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 2942d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 2952d43be4eSopenharmony_ci } 2962d43be4eSopenharmony_ci return proxy->GetCellularDataFlowType(); 2972d43be4eSopenharmony_ci} 2982d43be4eSopenharmony_ci 2992d43be4eSopenharmony_ciint32_t CellularDataClient::HasInternetCapability(int32_t slotId, int32_t cid) 3002d43be4eSopenharmony_ci{ 3012d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3022d43be4eSopenharmony_ci if (proxy == nullptr) { 3032d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3042d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3052d43be4eSopenharmony_ci } 3062d43be4eSopenharmony_ci return proxy->HasInternetCapability(slotId, cid); 3072d43be4eSopenharmony_ci} 3082d43be4eSopenharmony_ci 3092d43be4eSopenharmony_ciint32_t CellularDataClient::ClearCellularDataConnections(int32_t slotId) 3102d43be4eSopenharmony_ci{ 3112d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3122d43be4eSopenharmony_ci if (proxy == nullptr) { 3132d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3142d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3152d43be4eSopenharmony_ci } 3162d43be4eSopenharmony_ci return proxy->ClearCellularDataConnections(slotId); 3172d43be4eSopenharmony_ci} 3182d43be4eSopenharmony_ci 3192d43be4eSopenharmony_ciint32_t CellularDataClient::GetDataConnApnAttr(int32_t slotId, ApnItem::Attribute &apnAttr) 3202d43be4eSopenharmony_ci{ 3212d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3222d43be4eSopenharmony_ci if (proxy == nullptr) { 3232d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3242d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3252d43be4eSopenharmony_ci } 3262d43be4eSopenharmony_ci return proxy->GetDataConnApnAttr(slotId, apnAttr); 3272d43be4eSopenharmony_ci} 3282d43be4eSopenharmony_ci 3292d43be4eSopenharmony_ciint32_t CellularDataClient::GetDataConnIpType(int32_t slotId, std::string &ipType) 3302d43be4eSopenharmony_ci{ 3312d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3322d43be4eSopenharmony_ci if (proxy == nullptr) { 3332d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3342d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3352d43be4eSopenharmony_ci } 3362d43be4eSopenharmony_ci return proxy->GetDataConnIpType(slotId, ipType); 3372d43be4eSopenharmony_ci} 3382d43be4eSopenharmony_ci 3392d43be4eSopenharmony_ciint32_t CellularDataClient::ClearAllConnections(int32_t slotId, DisConnectionReason reason) 3402d43be4eSopenharmony_ci{ 3412d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3422d43be4eSopenharmony_ci if (proxy == nullptr) { 3432d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3442d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3452d43be4eSopenharmony_ci } 3462d43be4eSopenharmony_ci return proxy->ClearAllConnections(slotId, reason); 3472d43be4eSopenharmony_ci} 3482d43be4eSopenharmony_ci 3492d43be4eSopenharmony_ciint32_t CellularDataClient::HandleApnChanged(int32_t slotId) 3502d43be4eSopenharmony_ci{ 3512d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3522d43be4eSopenharmony_ci if (proxy == nullptr) { 3532d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3542d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3552d43be4eSopenharmony_ci } 3562d43be4eSopenharmony_ci return proxy->HandleApnChanged(slotId); 3572d43be4eSopenharmony_ci} 3582d43be4eSopenharmony_ci 3592d43be4eSopenharmony_ciint32_t CellularDataClient::IsNeedDoRecovery(int32_t slotId, bool needDoRecovery) 3602d43be4eSopenharmony_ci{ 3612d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3622d43be4eSopenharmony_ci if (proxy == nullptr) { 3632d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3642d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3652d43be4eSopenharmony_ci } 3662d43be4eSopenharmony_ci return proxy->IsNeedDoRecovery(slotId, needDoRecovery); 3672d43be4eSopenharmony_ci} 3682d43be4eSopenharmony_ci 3692d43be4eSopenharmony_ciint32_t CellularDataClient::InitCellularDataController(int32_t slotId) 3702d43be4eSopenharmony_ci{ 3712d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3722d43be4eSopenharmony_ci if (proxy == nullptr) { 3732d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3742d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3752d43be4eSopenharmony_ci } 3762d43be4eSopenharmony_ci return proxy->InitCellularDataController(slotId); 3772d43be4eSopenharmony_ci} 3782d43be4eSopenharmony_ci 3792d43be4eSopenharmony_ciint32_t CellularDataClient::GetIntelligenceSwitchState(bool &switchState) 3802d43be4eSopenharmony_ci{ 3812d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 3822d43be4eSopenharmony_ci if (proxy == nullptr) { 3832d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 3842d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 3852d43be4eSopenharmony_ci } 3862d43be4eSopenharmony_ci return proxy->GetIntelligenceSwitchState(switchState); 3872d43be4eSopenharmony_ci} 3882d43be4eSopenharmony_ci 3892d43be4eSopenharmony_cibool CellularDataClient::IsCellularDataSysAbilityExist(sptr<IRemoteObject> &object) __attribute__((no_sanitize("cfi"))) 3902d43be4eSopenharmony_ci{ 3912d43be4eSopenharmony_ci sptr<ISystemAbilityManager> sm = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 3922d43be4eSopenharmony_ci if (sm == nullptr) { 3932d43be4eSopenharmony_ci TELEPHONY_LOGE("IsCellularDataSysAbilityExist Get ISystemAbilityManager failed, no SystemAbilityManager"); 3942d43be4eSopenharmony_ci return false; 3952d43be4eSopenharmony_ci } 3962d43be4eSopenharmony_ci object = sm->CheckSystemAbility(TELEPHONY_CELLULAR_DATA_SYS_ABILITY_ID); 3972d43be4eSopenharmony_ci if (object == nullptr) { 3982d43be4eSopenharmony_ci TELEPHONY_LOGE("No CesServiceAbility"); 3992d43be4eSopenharmony_ci return false; 4002d43be4eSopenharmony_ci } 4012d43be4eSopenharmony_ci return true; 4022d43be4eSopenharmony_ci} 4032d43be4eSopenharmony_ci 4042d43be4eSopenharmony_ciint32_t CellularDataClient::EstablishAllApnsIfConnectable(int32_t slotId) 4052d43be4eSopenharmony_ci{ 4062d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 4072d43be4eSopenharmony_ci if (proxy == nullptr) { 4082d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 4092d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 4102d43be4eSopenharmony_ci } 4112d43be4eSopenharmony_ci return proxy->EstablishAllApnsIfConnectable(slotId); 4122d43be4eSopenharmony_ci} 4132d43be4eSopenharmony_ci 4142d43be4eSopenharmony_ciint32_t CellularDataClient::ReleaseCellularDataConnection(int32_t slotId) 4152d43be4eSopenharmony_ci{ 4162d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 4172d43be4eSopenharmony_ci if (proxy == nullptr) { 4182d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 4192d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 4202d43be4eSopenharmony_ci } 4212d43be4eSopenharmony_ci return proxy->ReleaseCellularDataConnection(slotId); 4222d43be4eSopenharmony_ci} 4232d43be4eSopenharmony_ci 4242d43be4eSopenharmony_ciint32_t CellularDataClient::GetCellularDataSupplierId(int32_t slotId, uint64_t capability, uint32_t &supplierId) 4252d43be4eSopenharmony_ci{ 4262d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 4272d43be4eSopenharmony_ci if (proxy == nullptr) { 4282d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 4292d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 4302d43be4eSopenharmony_ci } 4312d43be4eSopenharmony_ci return proxy->GetCellularDataSupplierId(slotId, capability, supplierId); 4322d43be4eSopenharmony_ci} 4332d43be4eSopenharmony_ci 4342d43be4eSopenharmony_ciint32_t CellularDataClient::CorrectNetSupplierNoAvailable(int32_t slotId) 4352d43be4eSopenharmony_ci{ 4362d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 4372d43be4eSopenharmony_ci if (proxy == nullptr) { 4382d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 4392d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 4402d43be4eSopenharmony_ci } 4412d43be4eSopenharmony_ci return proxy->CorrectNetSupplierNoAvailable(slotId); 4422d43be4eSopenharmony_ci} 4432d43be4eSopenharmony_ci 4442d43be4eSopenharmony_ciint32_t CellularDataClient::GetSupplierRegisterState(uint32_t supplierId, int32_t ®State) 4452d43be4eSopenharmony_ci{ 4462d43be4eSopenharmony_ci sptr<ICellularDataManager> proxy = GetProxy(); 4472d43be4eSopenharmony_ci if (proxy == nullptr) { 4482d43be4eSopenharmony_ci TELEPHONY_LOGE("proxy is null"); 4492d43be4eSopenharmony_ci return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; 4502d43be4eSopenharmony_ci } 4512d43be4eSopenharmony_ci return proxy->GetSupplierRegisterState(supplierId, regState); 4522d43be4eSopenharmony_ci} 4532d43be4eSopenharmony_ci} // namespace Telephony 4542d43be4eSopenharmony_ci} // namespace OHOS 455