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_service_stub.h" 172d43be4eSopenharmony_ci 182d43be4eSopenharmony_ci#include <string_ex.h> 192d43be4eSopenharmony_ci 202d43be4eSopenharmony_ci#include "cellular_data_controller.h" 212d43be4eSopenharmony_ci#include "cellular_data_service.h" 222d43be4eSopenharmony_ci#include "ipc_skeleton.h" 232d43be4eSopenharmony_ci#include "sim_account_callback_proxy.h" 242d43be4eSopenharmony_ci#include "telephony_errors.h" 252d43be4eSopenharmony_ci#include "telephony_log_wrapper.h" 262d43be4eSopenharmony_ci 272d43be4eSopenharmony_ci#ifdef HICOLLIE_ENABLE 282d43be4eSopenharmony_ci#include "xcollie/xcollie.h" 292d43be4eSopenharmony_ci#include "xcollie/xcollie_define.h" 302d43be4eSopenharmony_ci#define XCOLLIE_TIMEOUT_SECONDS 30 312d43be4eSopenharmony_ci#endif 322d43be4eSopenharmony_ci 332d43be4eSopenharmony_cinamespace OHOS { 342d43be4eSopenharmony_cinamespace Telephony { 352d43be4eSopenharmony_ciCellularDataServiceStub::CellularDataServiceStub() = default; 362d43be4eSopenharmony_ci 372d43be4eSopenharmony_ciCellularDataServiceStub::~CellularDataServiceStub() = default; 382d43be4eSopenharmony_ci 392d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnRemoteRequest( 402d43be4eSopenharmony_ci uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) 412d43be4eSopenharmony_ci{ 422d43be4eSopenharmony_ci std::u16string myDescriptor = CellularDataServiceStub::GetDescriptor(); 432d43be4eSopenharmony_ci std::u16string remoteDescriptor = data.ReadInterfaceToken(); 442d43be4eSopenharmony_ci // NetManager has no transport description 452d43be4eSopenharmony_ci if (myDescriptor != remoteDescriptor) { 462d43be4eSopenharmony_ci TELEPHONY_LOGE("descriptor check fail!"); 472d43be4eSopenharmony_ci return TELEPHONY_ERR_DESCRIPTOR_MISMATCH; 482d43be4eSopenharmony_ci } 492d43be4eSopenharmony_ci std::map<uint32_t, Fun>::iterator it = eventIdFunMap_.find(code); 502d43be4eSopenharmony_ci if (it != eventIdFunMap_.end()) { 512d43be4eSopenharmony_ci if (it->second != nullptr) { 522d43be4eSopenharmony_ci int32_t idTimer = SetTimer(code); 532d43be4eSopenharmony_ci int32_t result = it->second(data, reply); 542d43be4eSopenharmony_ci CancelTimer(idTimer); 552d43be4eSopenharmony_ci return result; 562d43be4eSopenharmony_ci } 572d43be4eSopenharmony_ci } else { 582d43be4eSopenharmony_ci TELEPHONY_LOGE("event code is not exist"); 592d43be4eSopenharmony_ci } 602d43be4eSopenharmony_ci return IPCObjectStub::OnRemoteRequest(code, data, reply, option); 612d43be4eSopenharmony_ci} 622d43be4eSopenharmony_ci 632d43be4eSopenharmony_ciint32_t CellularDataServiceStub::SetTimer(uint32_t code) 642d43be4eSopenharmony_ci{ 652d43be4eSopenharmony_ci#ifdef HICOLLIE_ENABLE 662d43be4eSopenharmony_ci int32_t idTimer = HiviewDFX::INVALID_ID; 672d43be4eSopenharmony_ci std::map<uint32_t, std::string>::iterator itCollieId = collieCodeStringMap_.find(code); 682d43be4eSopenharmony_ci if (itCollieId != collieCodeStringMap_.end()) { 692d43be4eSopenharmony_ci std::string collieStr = itCollieId->second; 702d43be4eSopenharmony_ci std::string collieName = "CellularDataServiceStub: " + collieStr; 712d43be4eSopenharmony_ci unsigned int flag = HiviewDFX::XCOLLIE_FLAG_NOOP; 722d43be4eSopenharmony_ci auto TimerCallback = [collieStr](void *) { 732d43be4eSopenharmony_ci TELEPHONY_LOGE("OnRemoteRequest timeout func: %{public}s", collieStr.c_str()); 742d43be4eSopenharmony_ci }; 752d43be4eSopenharmony_ci idTimer = HiviewDFX::XCollie::GetInstance().SetTimer( 762d43be4eSopenharmony_ci collieName, XCOLLIE_TIMEOUT_SECONDS, TimerCallback, nullptr, flag); 772d43be4eSopenharmony_ci TELEPHONY_LOGD("SetTimer id: %{public}d, name: %{public}s.", idTimer, collieStr.c_str()); 782d43be4eSopenharmony_ci } 792d43be4eSopenharmony_ci return idTimer; 802d43be4eSopenharmony_ci#else 812d43be4eSopenharmony_ci TELEPHONY_LOGD("No HICOLLIE_ENABLE"); 822d43be4eSopenharmony_ci return -1; 832d43be4eSopenharmony_ci#endif 842d43be4eSopenharmony_ci} 852d43be4eSopenharmony_ci 862d43be4eSopenharmony_civoid CellularDataServiceStub::CancelTimer(int32_t id) 872d43be4eSopenharmony_ci{ 882d43be4eSopenharmony_ci#ifdef HICOLLIE_ENABLE 892d43be4eSopenharmony_ci if (id == HiviewDFX::INVALID_ID) { 902d43be4eSopenharmony_ci return; 912d43be4eSopenharmony_ci } 922d43be4eSopenharmony_ci TELEPHONY_LOGD("CancelTimer id: %{public}d.", id); 932d43be4eSopenharmony_ci HiviewDFX::XCollie::GetInstance().CancelTimer(id); 942d43be4eSopenharmony_ci#else 952d43be4eSopenharmony_ci return; 962d43be4eSopenharmony_ci#endif 972d43be4eSopenharmony_ci} 982d43be4eSopenharmony_ci 992d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnIsCellularDataEnabled(MessageParcel &data, MessageParcel &reply) 1002d43be4eSopenharmony_ci{ 1012d43be4eSopenharmony_ci bool dataEnabled = false; 1022d43be4eSopenharmony_ci int32_t result = IsCellularDataEnabled(dataEnabled); 1032d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 1042d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 1052d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1062d43be4eSopenharmony_ci } 1072d43be4eSopenharmony_ci if (result != TELEPHONY_ERR_SUCCESS) { 1082d43be4eSopenharmony_ci return result; 1092d43be4eSopenharmony_ci } 1102d43be4eSopenharmony_ci if (!reply.WriteBool(dataEnabled)) { 1112d43be4eSopenharmony_ci TELEPHONY_LOGE("write bool reply failed."); 1122d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1132d43be4eSopenharmony_ci } 1142d43be4eSopenharmony_ci return TELEPHONY_SUCCESS; 1152d43be4eSopenharmony_ci} 1162d43be4eSopenharmony_ci 1172d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnEnableCellularData(MessageParcel &data, MessageParcel &reply) 1182d43be4eSopenharmony_ci{ 1192d43be4eSopenharmony_ci bool enable = data.ReadBool(); 1202d43be4eSopenharmony_ci int32_t result = EnableCellularData(enable); 1212d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 1222d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 1232d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1242d43be4eSopenharmony_ci } 1252d43be4eSopenharmony_ci return result; 1262d43be4eSopenharmony_ci} 1272d43be4eSopenharmony_ci 1282d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnEnableIntelligenceSwitch(MessageParcel &data, MessageParcel &reply) 1292d43be4eSopenharmony_ci{ 1302d43be4eSopenharmony_ci bool enable = data.ReadBool(); 1312d43be4eSopenharmony_ci int32_t result = EnableIntelligenceSwitch(enable); 1322d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 1332d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 1342d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1352d43be4eSopenharmony_ci } 1362d43be4eSopenharmony_ci return result; 1372d43be4eSopenharmony_ci} 1382d43be4eSopenharmony_ci 1392d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetCellularDataState(MessageParcel &data, MessageParcel &reply) 1402d43be4eSopenharmony_ci{ 1412d43be4eSopenharmony_ci int32_t result = GetCellularDataState(); 1422d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 1432d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 1442d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1452d43be4eSopenharmony_ci } 1462d43be4eSopenharmony_ci return result; 1472d43be4eSopenharmony_ci} 1482d43be4eSopenharmony_ci 1492d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnIsCellularDataRoamingEnabled(MessageParcel &data, MessageParcel &reply) 1502d43be4eSopenharmony_ci{ 1512d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 1522d43be4eSopenharmony_ci bool dataRoamingEnabled = false; 1532d43be4eSopenharmony_ci int32_t result = IsCellularDataRoamingEnabled(slotId, dataRoamingEnabled); 1542d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 1552d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 1562d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1572d43be4eSopenharmony_ci } 1582d43be4eSopenharmony_ci if (result != TELEPHONY_ERR_SUCCESS) { 1592d43be4eSopenharmony_ci return result; 1602d43be4eSopenharmony_ci } 1612d43be4eSopenharmony_ci if (!reply.WriteBool(dataRoamingEnabled)) { 1622d43be4eSopenharmony_ci TELEPHONY_LOGE("write bool reply failed."); 1632d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1642d43be4eSopenharmony_ci } 1652d43be4eSopenharmony_ci 1662d43be4eSopenharmony_ci return TELEPHONY_SUCCESS; 1672d43be4eSopenharmony_ci} 1682d43be4eSopenharmony_ci 1692d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnEnableCellularDataRoaming(MessageParcel &data, MessageParcel &reply) 1702d43be4eSopenharmony_ci{ 1712d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 1722d43be4eSopenharmony_ci bool enable = data.ReadBool(); 1732d43be4eSopenharmony_ci int32_t result = EnableCellularDataRoaming(slotId, enable); 1742d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 1752d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 1762d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1772d43be4eSopenharmony_ci } 1782d43be4eSopenharmony_ci return result; 1792d43be4eSopenharmony_ci} 1802d43be4eSopenharmony_ci 1812d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetIntelligenceSwitchState(MessageParcel &data, MessageParcel &reply) 1822d43be4eSopenharmony_ci{ 1832d43be4eSopenharmony_ci bool switchState = false; 1842d43be4eSopenharmony_ci int32_t result = GetIntelligenceSwitchState(switchState); 1852d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 1862d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 1872d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1882d43be4eSopenharmony_ci } 1892d43be4eSopenharmony_ci if (result != TELEPHONY_ERR_SUCCESS) { 1902d43be4eSopenharmony_ci return result; 1912d43be4eSopenharmony_ci } 1922d43be4eSopenharmony_ci if (!reply.WriteBool(switchState)) { 1932d43be4eSopenharmony_ci TELEPHONY_LOGE("write bool reply failed."); 1942d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 1952d43be4eSopenharmony_ci } 1962d43be4eSopenharmony_ci return TELEPHONY_SUCCESS; 1972d43be4eSopenharmony_ci} 1982d43be4eSopenharmony_ci 1992d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnHandleApnChanged(MessageParcel &data, MessageParcel &reply) 2002d43be4eSopenharmony_ci{ 2012d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 2022d43be4eSopenharmony_ci int32_t result = HandleApnChanged(slotId); 2032d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 2042d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 2052d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2062d43be4eSopenharmony_ci } 2072d43be4eSopenharmony_ci return result; 2082d43be4eSopenharmony_ci} 2092d43be4eSopenharmony_ci 2102d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetDefaultCellularDataSlotId(MessageParcel &data, MessageParcel &reply) 2112d43be4eSopenharmony_ci{ 2122d43be4eSopenharmony_ci int32_t result = GetDefaultCellularDataSlotId(); 2132d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 2142d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 2152d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2162d43be4eSopenharmony_ci } 2172d43be4eSopenharmony_ci return result; 2182d43be4eSopenharmony_ci} 2192d43be4eSopenharmony_ci 2202d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetDefaultCellularDataSimId(MessageParcel &data, MessageParcel &reply) 2212d43be4eSopenharmony_ci{ 2222d43be4eSopenharmony_ci int32_t simId = 0; 2232d43be4eSopenharmony_ci int32_t result = GetDefaultCellularDataSimId(simId); 2242d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 2252d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 2262d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2272d43be4eSopenharmony_ci } 2282d43be4eSopenharmony_ci if (result != TELEPHONY_ERR_SUCCESS) { 2292d43be4eSopenharmony_ci return result; 2302d43be4eSopenharmony_ci } 2312d43be4eSopenharmony_ci if (!reply.WriteInt32(simId)) { 2322d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 2332d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2342d43be4eSopenharmony_ci } 2352d43be4eSopenharmony_ci return TELEPHONY_SUCCESS; 2362d43be4eSopenharmony_ci} 2372d43be4eSopenharmony_ci 2382d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnSetDefaultCellularDataSlotId(MessageParcel &data, MessageParcel &reply) 2392d43be4eSopenharmony_ci{ 2402d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 2412d43be4eSopenharmony_ci int32_t result = SetDefaultCellularDataSlotId(slotId); 2422d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 2432d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 2442d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2452d43be4eSopenharmony_ci } 2462d43be4eSopenharmony_ci return result; 2472d43be4eSopenharmony_ci} 2482d43be4eSopenharmony_ci 2492d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetCellularDataFlowType(MessageParcel &data, MessageParcel &reply) 2502d43be4eSopenharmony_ci{ 2512d43be4eSopenharmony_ci int32_t result = GetCellularDataFlowType(); 2522d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 2532d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 2542d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2552d43be4eSopenharmony_ci } 2562d43be4eSopenharmony_ci return result; 2572d43be4eSopenharmony_ci} 2582d43be4eSopenharmony_ci 2592d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnHasInternetCapability(MessageParcel &data, MessageParcel &reply) 2602d43be4eSopenharmony_ci{ 2612d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 2622d43be4eSopenharmony_ci int32_t cid = data.ReadInt32(); 2632d43be4eSopenharmony_ci int32_t result = HasInternetCapability(slotId, cid); 2642d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 2652d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 2662d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2672d43be4eSopenharmony_ci } 2682d43be4eSopenharmony_ci return result; 2692d43be4eSopenharmony_ci} 2702d43be4eSopenharmony_ci 2712d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnClearCellularDataConnections(MessageParcel &data, MessageParcel &reply) 2722d43be4eSopenharmony_ci{ 2732d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 2742d43be4eSopenharmony_ci int32_t result = ClearCellularDataConnections(slotId); 2752d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 2762d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 2772d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2782d43be4eSopenharmony_ci } 2792d43be4eSopenharmony_ci return result; 2802d43be4eSopenharmony_ci} 2812d43be4eSopenharmony_ci 2822d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnClearAllConnections(MessageParcel &data, MessageParcel &reply) 2832d43be4eSopenharmony_ci{ 2842d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 2852d43be4eSopenharmony_ci DisConnectionReason reason = static_cast<DisConnectionReason>(data.ReadInt32()); 2862d43be4eSopenharmony_ci int32_t result = ClearAllConnections(slotId, reason); 2872d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 2882d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 2892d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 2902d43be4eSopenharmony_ci } 2912d43be4eSopenharmony_ci return result; 2922d43be4eSopenharmony_ci} 2932d43be4eSopenharmony_ci 2942d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnRegisterSimAccountCallback(MessageParcel &data, MessageParcel &reply) 2952d43be4eSopenharmony_ci{ 2962d43be4eSopenharmony_ci sptr<SimAccountCallback> callback = iface_cast<SimAccountCallback>(data.ReadRemoteObject()); 2972d43be4eSopenharmony_ci int32_t result; 2982d43be4eSopenharmony_ci if (callback == nullptr) { 2992d43be4eSopenharmony_ci TELEPHONY_LOGE("callback is nullptr!"); 3002d43be4eSopenharmony_ci result = TELEPHONY_ERR_ARGUMENT_NULL; 3012d43be4eSopenharmony_ci } else { 3022d43be4eSopenharmony_ci result = RegisterSimAccountCallback(callback); 3032d43be4eSopenharmony_ci } 3042d43be4eSopenharmony_ci reply.WriteInt32(result); 3052d43be4eSopenharmony_ci return result; 3062d43be4eSopenharmony_ci} 3072d43be4eSopenharmony_ci 3082d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnUnregisterSimAccountCallback(MessageParcel &data, MessageParcel &reply) 3092d43be4eSopenharmony_ci{ 3102d43be4eSopenharmony_ci int32_t result = UnregisterSimAccountCallback(); 3112d43be4eSopenharmony_ci reply.WriteInt32(result); 3122d43be4eSopenharmony_ci return result; 3132d43be4eSopenharmony_ci} 3142d43be4eSopenharmony_ci 3152d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetDataConnApnAttr(MessageParcel &data, MessageParcel &reply) 3162d43be4eSopenharmony_ci{ 3172d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 3182d43be4eSopenharmony_ci ApnItem::Attribute apnAttr; 3192d43be4eSopenharmony_ci int32_t result = GetDataConnApnAttr(slotId, apnAttr); 3202d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 3212d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 3222d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3232d43be4eSopenharmony_ci } 3242d43be4eSopenharmony_ci if (!reply.WriteRawData(&apnAttr, sizeof(ApnItem::Attribute))) { 3252d43be4eSopenharmony_ci TELEPHONY_LOGE("write apnAttr reply failed."); 3262d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3272d43be4eSopenharmony_ci } 3282d43be4eSopenharmony_ci return TELEPHONY_SUCCESS; 3292d43be4eSopenharmony_ci} 3302d43be4eSopenharmony_ci 3312d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetDataConnIpType(MessageParcel &data, MessageParcel &reply) 3322d43be4eSopenharmony_ci{ 3332d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 3342d43be4eSopenharmony_ci std::string ipType; 3352d43be4eSopenharmony_ci int32_t result = GetDataConnIpType(slotId, ipType); 3362d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 3372d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 3382d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3392d43be4eSopenharmony_ci } 3402d43be4eSopenharmony_ci if (!reply.WriteString(ipType)) { 3412d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 3422d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3432d43be4eSopenharmony_ci } 3442d43be4eSopenharmony_ci return TELEPHONY_SUCCESS; 3452d43be4eSopenharmony_ci} 3462d43be4eSopenharmony_ci 3472d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetApnState(MessageParcel &data, MessageParcel &reply) 3482d43be4eSopenharmony_ci{ 3492d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 3502d43be4eSopenharmony_ci std::string apnType = data.ReadString(); 3512d43be4eSopenharmony_ci int32_t result = GetApnState(slotId, apnType); 3522d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 3532d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 3542d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3552d43be4eSopenharmony_ci } 3562d43be4eSopenharmony_ci return result; 3572d43be4eSopenharmony_ci} 3582d43be4eSopenharmony_ci 3592d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetRecoveryState(MessageParcel &data, MessageParcel &reply) 3602d43be4eSopenharmony_ci{ 3612d43be4eSopenharmony_ci int32_t result = GetDataRecoveryState(); 3622d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 3632d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 3642d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3652d43be4eSopenharmony_ci } 3662d43be4eSopenharmony_ci return result; 3672d43be4eSopenharmony_ci} 3682d43be4eSopenharmony_ci 3692d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnIsNeedDoRecovery(MessageParcel &data, MessageParcel &reply) 3702d43be4eSopenharmony_ci{ 3712d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 3722d43be4eSopenharmony_ci int32_t needDoRecovery = data.ReadBool(); 3732d43be4eSopenharmony_ci int32_t result = IsNeedDoRecovery(slotId, needDoRecovery); 3742d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 3752d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 3762d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3772d43be4eSopenharmony_ci } 3782d43be4eSopenharmony_ci return result; 3792d43be4eSopenharmony_ci} 3802d43be4eSopenharmony_ci 3812d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnInitCellularDataController(MessageParcel &data, MessageParcel &reply) 3822d43be4eSopenharmony_ci{ 3832d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 3842d43be4eSopenharmony_ci int32_t result = InitCellularDataController(slotId); 3852d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 3862d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 3872d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3882d43be4eSopenharmony_ci } 3892d43be4eSopenharmony_ci return result; 3902d43be4eSopenharmony_ci} 3912d43be4eSopenharmony_ci 3922d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnEstablishAllApnsIfConnectable(MessageParcel &data, MessageParcel &reply) 3932d43be4eSopenharmony_ci{ 3942d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 3952d43be4eSopenharmony_ci int32_t result = EstablishAllApnsIfConnectable(slotId); 3962d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 3972d43be4eSopenharmony_ci TELEPHONY_LOGE("fail to write parcel"); 3982d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 3992d43be4eSopenharmony_ci } 4002d43be4eSopenharmony_ci return result; 4012d43be4eSopenharmony_ci} 4022d43be4eSopenharmony_ci 4032d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnReleaseCellularDataConnection(MessageParcel &data, MessageParcel &reply) 4042d43be4eSopenharmony_ci{ 4052d43be4eSopenharmony_ci int32_t slotId; 4062d43be4eSopenharmony_ci if (!data.ReadInt32(slotId)) { 4072d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 slotId failed."); 4082d43be4eSopenharmony_ci return TELEPHONY_ERR_READ_DATA_FAIL; 4092d43be4eSopenharmony_ci } 4102d43be4eSopenharmony_ci int32_t result = ReleaseCellularDataConnection(slotId); 4112d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 4122d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 4132d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 4142d43be4eSopenharmony_ci } 4152d43be4eSopenharmony_ci return result; 4162d43be4eSopenharmony_ci} 4172d43be4eSopenharmony_ci 4182d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetCellularDataSupplierId(MessageParcel &data, MessageParcel &reply) 4192d43be4eSopenharmony_ci{ 4202d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 4212d43be4eSopenharmony_ci uint64_t capability = data.ReadUint64(); 4222d43be4eSopenharmony_ci uint32_t supplierId = 0; 4232d43be4eSopenharmony_ci int32_t result = GetCellularDataSupplierId(slotId, capability, supplierId); 4242d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 4252d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 4262d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 4272d43be4eSopenharmony_ci } 4282d43be4eSopenharmony_ci if (!reply.WriteUint32(supplierId)) { 4292d43be4eSopenharmony_ci TELEPHONY_LOGE("write uint32 reply failed."); 4302d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 4312d43be4eSopenharmony_ci } 4322d43be4eSopenharmony_ci return result; 4332d43be4eSopenharmony_ci} 4342d43be4eSopenharmony_ci 4352d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnCorrectNetSupplierNoAvailable(MessageParcel &data, MessageParcel &reply) 4362d43be4eSopenharmony_ci{ 4372d43be4eSopenharmony_ci int32_t slotId = data.ReadInt32(); 4382d43be4eSopenharmony_ci int32_t result = CorrectNetSupplierNoAvailable(slotId); 4392d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 4402d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 4412d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 4422d43be4eSopenharmony_ci } 4432d43be4eSopenharmony_ci return result; 4442d43be4eSopenharmony_ci} 4452d43be4eSopenharmony_ci 4462d43be4eSopenharmony_ciint32_t CellularDataServiceStub::OnGetSupplierRegisterState(MessageParcel &data, MessageParcel &reply) 4472d43be4eSopenharmony_ci{ 4482d43be4eSopenharmony_ci uint32_t supplierId = data.ReadUint32(); 4492d43be4eSopenharmony_ci int32_t regState = -1; 4502d43be4eSopenharmony_ci int32_t result = GetSupplierRegisterState(supplierId, regState); 4512d43be4eSopenharmony_ci if (!reply.WriteInt32(result)) { 4522d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 4532d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 4542d43be4eSopenharmony_ci } 4552d43be4eSopenharmony_ci if (!reply.WriteInt32(regState)) { 4562d43be4eSopenharmony_ci TELEPHONY_LOGE("write int32 reply failed."); 4572d43be4eSopenharmony_ci return TELEPHONY_ERR_WRITE_REPLY_FAIL; 4582d43be4eSopenharmony_ci } 4592d43be4eSopenharmony_ci return result; 4602d43be4eSopenharmony_ci} 4612d43be4eSopenharmony_ci} // namespace Telephony 4622d43be4eSopenharmony_ci} // namespace OHOS