1 /*
2 * Copyright (C) 2021-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "core_service.h"
17
18 #include "core_manager_inner.h"
19 #include "core_service_dump_helper.h"
20 #include "common_event_data.h"
21 #include "common_event_manager.h"
22 #include "common_event_publish_info.h"
23 #include "ffrt_inner.h"
24 #include "ims_core_service_client.h"
25 #include "network_search_manager.h"
26 #include "network_search_types.h"
27 #include "tel_ril_manager.h"
28 #include "sim_constant.h"
29 #include "parameter.h"
30 #include "sim_manager.h"
31 #include "string_ex.h"
32 #include "system_ability_definition.h"
33 #include "telephony_common_utils.h"
34 #include "telephony_errors.h"
35 #include "telephony_ext_wrapper.h"
36 #include "telephony_log_wrapper.h"
37 #include "telephony_permission.h"
38 #ifdef CORE_SERVICE_SUPPORT_ESIM
39 #include "esim_manager.h"
40 #endif
41
42 namespace OHOS {
43 namespace Telephony {
44 namespace {
45 const int32_t MAX_FFRT_THREAD_NUM = 32;
46 }
47 const bool G_REGISTER_RESULT =
48 SystemAbility::MakeAndRegisterAbility(DelayedSingleton<CoreService>::GetInstance().get());
49
CoreService()50 CoreService::CoreService() : SystemAbility(TELEPHONY_CORE_SERVICE_SYS_ABILITY_ID, true) {}
51
~CoreService()52 CoreService::~CoreService() {}
53
OnStart()54 void CoreService::OnStart()
55 {
56 bindTime_ = std::chrono::duration_cast<std::chrono::milliseconds>(
57 std::chrono::system_clock::now().time_since_epoch()).count();
58 if (state_ == ServiceRunningState::STATE_RUNNING) {
59 TELEPHONY_LOGE("CoreService has already started.");
60 return;
61 }
62
63 if (!registerToService_) {
64 bool ret = Publish(DelayedSingleton<CoreService>::GetInstance().get());
65 if (!ret) {
66 TELEPHONY_LOGE("CoreService::Init Publish failed!");
67 return;
68 }
69 registerToService_ = true;
70 }
71 int ffrtRet = ffrt_set_cpu_worker_max_num(ffrt::qos_default, MAX_FFRT_THREAD_NUM);
72 if (ffrtRet == -1) {
73 TELEPHONY_LOGE("ffrt_set_cpu_worker_max_num fail");
74 }
75 if (!Init()) {
76 TELEPHONY_LOGE("failed to init CoreService");
77 return;
78 }
79 state_ = ServiceRunningState::STATE_RUNNING;
80 endTime_ =
81 std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
82 .count();
83 bool res = NotifyCoreServiceReady();
84 TELEPHONY_LOGI("CoreService start success, notify [%{public}d]", res);
85 }
86
Init()87 bool CoreService::Init()
88 {
89 TELEPHONY_LOGI("CoreService::Init");
90 #ifdef OHOS_BUILD_ENABLE_TELEPHONY_EXT
91 TELEPHONY_EXT_WRAPPER.InitTelephonyExtWrapper();
92 #endif
93 telRilManager_ = std::make_shared<TelRilManager>();
94 if (!telRilManager_->OnInit()) {
95 TELEPHONY_LOGE("TelRilManager init is failed!");
96 return false;
97 }
98 CoreManagerInner::GetInstance().SetTelRilMangerObj(telRilManager_);
99 int32_t slotCount = GetMaxSimCount();
100 #ifdef CORE_SERVICE_SUPPORT_ESIM
101 esimManager_ = std::make_shared<EsimManager>(telRilManager_);
102 esimManager_->OnInit(slotCount);
103 CoreManagerInner::GetInstance().SetEsimManagerObj(esimManager_);
104 #endif
105 simManager_ = std::make_shared<SimManager>(telRilManager_);
106 simManager_->OnInit(slotCount);
107 // connect ims_service
108 DelayedSingleton<ImsCoreServiceClient>::GetInstance()->Init();
109 networkSearchManager_ = std::make_shared<NetworkSearchManager>(telRilManager_, simManager_);
110 if (!networkSearchManager_->OnInit()) {
111 TELEPHONY_LOGE("NetworkSearchManager init is failed!");
112 return false;
113 }
114 CoreManagerInner::GetInstance().OnInit(networkSearchManager_, simManager_, telRilManager_);
115 for (int32_t slotId = 0; slotId < SIM_SLOT_COUNT; slotId++) {
116 networkSearchManager_->InitAirplaneMode(slotId);
117 }
118 TELEPHONY_LOGI("CoreService::Init success");
119 return true;
120 }
121
NotifyCoreServiceReady()122 bool CoreService::NotifyCoreServiceReady()
123 {
124 AAFwk::Want want;
125 want.SetAction("telephony.event.CORE_SERVICE_READY");
126 EventFwk::CommonEventData commonEventData;
127 commonEventData.SetWant(want);
128 EventFwk::CommonEventPublishInfo publishInfo;
129 std::vector<std::string> callPermissions;
130 callPermissions.emplace_back(Permission::GET_TELEPHONY_STATE);
131 publishInfo.SetSubscriberPermissions(callPermissions);
132 return EventFwk::CommonEventManager::PublishCommonEvent(commonEventData, publishInfo, nullptr);
133 }
134
OnStop()135 void CoreService::OnStop()
136 {
137 state_ = ServiceRunningState::STATE_NOT_START;
138 registerToService_ = false;
139 DelayedSingleton<ImsCoreServiceClient>::GetInstance()->UnInit();
140 telRilManager_->DeInit();
141 #ifdef OHOS_BUILD_ENABLE_TELEPHONY_EXT
142 TELEPHONY_EXT_WRAPPER.DeInitTelephonyExtWrapper();
143 #endif
144 TELEPHONY_LOGI("CoreService Stop success");
145 }
146
GetServiceRunningState()147 int32_t CoreService::GetServiceRunningState()
148 {
149 return static_cast<int32_t>(state_);
150 }
151
AsyncNetSearchExecute(const std::function<void ()> task)152 void CoreService::AsyncNetSearchExecute(const std::function<void()> task)
153 {
154 if (networkSearchManagerHandler_ == nullptr) {
155 std::lock_guard<std::mutex> lock(handlerInitMutex_);
156 if (networkSearchManagerHandler_ == nullptr) {
157 auto networkSearchRunner = AppExecFwk::EventRunner::Create("networkSearchHandler",
158 AppExecFwk::ThreadMode::FFRT);
159 networkSearchManagerHandler_ = std::make_shared<AppExecFwk::EventHandler>(networkSearchRunner);
160 }
161 }
162 networkSearchManagerHandler_->PostTask(task);
163 }
164
AsyncSimGeneralExecute(const std::function<void ()> task)165 void CoreService::AsyncSimGeneralExecute(const std::function<void()> task)
166 {
167 if (simGeneralHandler_ == nullptr) {
168 std::lock_guard<std::mutex> lock(handlerInitMutex_);
169 if (simGeneralHandler_ == nullptr) {
170 auto simManagerRunner = AppExecFwk::EventRunner::Create("simManagerHandler",
171 AppExecFwk::ThreadMode::FFRT);
172 simGeneralHandler_ = std::make_shared<AppExecFwk::EventHandler>(simManagerRunner);
173 }
174 }
175 simGeneralHandler_->PostTask(task);
176 }
177
AsyncSimPinExecute(const std::function<void ()> task)178 void CoreService::AsyncSimPinExecute(const std::function<void()> task)
179 {
180 if (simPinHandler_ == nullptr) {
181 std::lock_guard<std::mutex> lock(handlerInitMutex_);
182 if (simPinHandler_ == nullptr) {
183 auto simManagerRunner = AppExecFwk::EventRunner::Create("simPinManagerHandler",
184 AppExecFwk::ThreadMode::FFRT);
185 simPinHandler_ = std::make_shared<AppExecFwk::EventHandler>(simManagerRunner);
186 }
187 }
188 simPinHandler_->PostTask(task);
189 }
190
GetPsRadioTech(int32_t slotId,int32_t & psRadioTech)191 int32_t CoreService::GetPsRadioTech(int32_t slotId, int32_t &psRadioTech)
192 {
193 if (!TelephonyPermission::CheckPermission(Permission::GET_NETWORK_INFO)) {
194 TELEPHONY_LOGE("permission denied!");
195 return TELEPHONY_ERR_PERMISSION_ERR;
196 }
197 if (networkSearchManager_ == nullptr) {
198 TELEPHONY_LOGE("networkSearchManager_ is null");
199 return TELEPHONY_ERR_LOCAL_PTR_NULL;
200 }
201 return networkSearchManager_->GetPsRadioTech(slotId, psRadioTech);
202 }
203
GetCsRadioTech(int32_t slotId,int32_t & csRadioTech)204 int32_t CoreService::GetCsRadioTech(int32_t slotId, int32_t &csRadioTech)
205 {
206 if (!TelephonyPermission::CheckPermission(Permission::GET_NETWORK_INFO)) {
207 TELEPHONY_LOGE("permission denied!");
208 return TELEPHONY_ERR_PERMISSION_ERR;
209 }
210 if (networkSearchManager_ == nullptr) {
211 TELEPHONY_LOGE("networkSearchManager_ is null");
212 return TELEPHONY_ERR_LOCAL_PTR_NULL;
213 }
214 return networkSearchManager_->GetCsRadioTech(slotId, csRadioTech);
215 }
216
SetNetworkSelectionMode(int32_t slotId,int32_t selectMode,const sptr<NetworkInformation> & networkInformation,bool resumeSelection,const sptr<INetworkSearchCallback> & callback)217 int32_t CoreService::SetNetworkSelectionMode(int32_t slotId, int32_t selectMode,
218 const sptr<NetworkInformation> &networkInformation, bool resumeSelection,
219 const sptr<INetworkSearchCallback> &callback)
220 {
221 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
222 TELEPHONY_LOGE("Non-system applications use system APIs!");
223 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
224 }
225 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
226 TELEPHONY_LOGE("permission denied!");
227 return TELEPHONY_ERR_PERMISSION_ERR;
228 }
229 if (networkSearchManager_ == nullptr) {
230 TELEPHONY_LOGE("networkSearchManager_ is null");
231 return TELEPHONY_ERR_LOCAL_PTR_NULL;
232 }
233 TELEPHONY_LOGI("CoreService::SetNetworkSelectionMode selectMode:%{public}d", selectMode);
234 return networkSearchManager_->SetNetworkSelectionMode(
235 slotId, selectMode, networkInformation, resumeSelection, callback);
236 }
237
GetSignalInfoList(int32_t slotId,std::vector<sptr<SignalInformation>> & signals)238 int32_t CoreService::GetSignalInfoList(int32_t slotId, std::vector<sptr<SignalInformation>> &signals)
239 {
240 if (networkSearchManager_ == nullptr) {
241 TELEPHONY_LOGE("networkSearchManager_ is null");
242 return TELEPHONY_ERR_LOCAL_PTR_NULL;
243 }
244 return networkSearchManager_->GetSignalInfoList(slotId, signals);
245 }
246
GetOperatorNumeric(int32_t slotId)247 std::u16string CoreService::GetOperatorNumeric(int32_t slotId)
248 {
249 if (networkSearchManager_ == nullptr) {
250 TELEPHONY_LOGE("networkSearchManager_ is null");
251 return std::u16string();
252 }
253 return networkSearchManager_->GetOperatorNumeric(slotId);
254 }
255
GetResidentNetworkNumeric(int32_t slotId)256 std::string CoreService::GetResidentNetworkNumeric(int32_t slotId)
257 {
258 if (networkSearchManager_ == nullptr) {
259 TELEPHONY_LOGE("networkSearchManager_ is null");
260 return "";
261 }
262 return networkSearchManager_->GetResidentNetworkNumeric(slotId);
263 }
264
GetOperatorName(int32_t slotId,std::u16string & operatorName)265 int32_t CoreService::GetOperatorName(int32_t slotId, std::u16string &operatorName)
266 {
267 if (networkSearchManager_ == nullptr) {
268 TELEPHONY_LOGE("networkSearchManager_ is null");
269 return TELEPHONY_ERR_LOCAL_PTR_NULL;
270 }
271 return networkSearchManager_->GetOperatorName(slotId, operatorName);
272 }
273
GetNetworkState(int32_t slotId,sptr<NetworkState> & networkState)274 int32_t CoreService::GetNetworkState(int32_t slotId, sptr<NetworkState> &networkState)
275 {
276 if (!TelephonyPermission::CheckPermission(Permission::GET_NETWORK_INFO)) {
277 TELEPHONY_LOGE("permission denied!");
278 return TELEPHONY_ERR_PERMISSION_ERR;
279 }
280 if (networkSearchManager_ == nullptr) {
281 TELEPHONY_LOGE("networkSearchManager_ is null");
282 return TELEPHONY_ERR_LOCAL_PTR_NULL;
283 }
284 return networkSearchManager_->GetNetworkStatus(slotId, networkState);
285 }
286
SetRadioState(int32_t slotId,bool isOn,const sptr<INetworkSearchCallback> & callback)287 int32_t CoreService::SetRadioState(int32_t slotId, bool isOn, const sptr<INetworkSearchCallback> &callback)
288 {
289 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
290 TELEPHONY_LOGE("Non-system applications use system APIs!");
291 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
292 }
293 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
294 TELEPHONY_LOGE("permission denied!");
295 return TELEPHONY_ERR_PERMISSION_ERR;
296 }
297 if (networkSearchManager_ == nullptr) {
298 TELEPHONY_LOGE("networkSearchManager_ is null");
299 return TELEPHONY_ERR_LOCAL_PTR_NULL;
300 }
301 TELEPHONY_LOGI("CoreService::SetRadioState --> slotId:%{public}d, isOn:%{public}d", slotId, isOn);
302 return networkSearchManager_->SetRadioState(slotId, isOn, 0, callback);
303 }
304
GetRadioState(int32_t slotId,const sptr<INetworkSearchCallback> & callback)305 int32_t CoreService::GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
306 {
307 if (!TelephonyPermission::CheckPermission(Permission::GET_NETWORK_INFO)) {
308 TELEPHONY_LOGE("permission denied!");
309 return TELEPHONY_ERR_PERMISSION_ERR;
310 }
311 if (networkSearchManager_ == nullptr) {
312 TELEPHONY_LOGE("networkSearchManager_ is null");
313 return TELEPHONY_ERR_LOCAL_PTR_NULL;
314 }
315 return networkSearchManager_->GetRadioState(slotId, callback);
316 }
317
GetIsoCountryCodeForNetwork(int32_t slotId,std::u16string & countryCode)318 int32_t CoreService::GetIsoCountryCodeForNetwork(int32_t slotId, std::u16string &countryCode)
319 {
320 if (networkSearchManager_ == nullptr) {
321 TELEPHONY_LOGE("networkSearchManager_ is null");
322 return TELEPHONY_ERR_LOCAL_PTR_NULL;
323 }
324 return networkSearchManager_->GetIsoCountryCodeForNetwork(slotId, countryCode);
325 }
326
GetImei(int32_t slotId,const sptr<IRawParcelCallback> & callback)327 int32_t CoreService::GetImei(int32_t slotId, const sptr<IRawParcelCallback> &callback)
328 {
329 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
330 TELEPHONY_LOGE("Non-system applications use system APIs!");
331 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
332 }
333 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
334 TELEPHONY_LOGE("permission denied!");
335 return TELEPHONY_ERR_PERMISSION_ERR;
336 }
337 if (networkSearchManager_ == nullptr) {
338 TELEPHONY_LOGE("networkSearchManager_ is null");
339 return TELEPHONY_ERR_LOCAL_PTR_NULL;
340 }
341 if (callback == nullptr) {
342 TELEPHONY_LOGE("GetImei no callback");
343 return TELEPHONY_ERR_LOCAL_PTR_NULL;
344 }
345 AsyncNetSearchExecute([wp = std::weak_ptr<INetworkSearch>(networkSearchManager_), slotId, callback]() {
346 std::u16string imei = u"";
347 MessageParcel dataTmp;
348 auto networkSearchManager = wp.lock();
349 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
350 if (networkSearchManager) {
351 ret = networkSearchManager->GetImei(slotId, imei);
352 }
353 callback->Transfer([=](MessageParcel &data) {
354 data.WriteInt32(ret);
355 if (ret == TELEPHONY_ERR_SUCCESS) {
356 data.WriteString16(imei);
357 }
358 }, dataTmp);
359 });
360 return TELEPHONY_ERR_SUCCESS;
361 }
362
GetImeiSv(int32_t slotId,const sptr<IRawParcelCallback> & callback)363 int32_t CoreService::GetImeiSv(int32_t slotId, const sptr<IRawParcelCallback> &callback)
364 {
365 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
366 TELEPHONY_LOGE("Non-system applications use system APIs!");
367 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
368 }
369 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
370 TELEPHONY_LOGE("permission denied!");
371 return TELEPHONY_ERR_PERMISSION_ERR;
372 }
373 if (networkSearchManager_ == nullptr) {
374 TELEPHONY_LOGE("networkSearchManager_ is null");
375 return TELEPHONY_ERR_LOCAL_PTR_NULL;
376 }
377 if (callback == nullptr) {
378 TELEPHONY_LOGE("GetImeiSv no callback");
379 return TELEPHONY_ERR_LOCAL_PTR_NULL;
380 }
381 AsyncNetSearchExecute([wp = std::weak_ptr<INetworkSearch>(networkSearchManager_), slotId, callback]() {
382 std::u16string imeiSv = u"";
383 MessageParcel dataTmp;
384 auto networkSearchManager = wp.lock();
385 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
386 if (networkSearchManager) {
387 ret = networkSearchManager->GetImeiSv(slotId, imeiSv);
388 }
389 callback->Transfer([=](MessageParcel &data) {
390 data.WriteInt32(ret);
391 if (ret == TELEPHONY_ERR_SUCCESS) {
392 data.WriteString16(imeiSv);
393 }
394 }, dataTmp);
395 });
396 return TELEPHONY_ERR_SUCCESS;
397 }
398
GetMeid(int32_t slotId,std::u16string & meid)399 int32_t CoreService::GetMeid(int32_t slotId, std::u16string &meid)
400 {
401 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
402 TELEPHONY_LOGE("Non-system applications use system APIs!");
403 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
404 }
405 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
406 TELEPHONY_LOGE("permission denied!");
407 return TELEPHONY_ERR_PERMISSION_ERR;
408 }
409 if (networkSearchManager_ == nullptr) {
410 TELEPHONY_LOGE("networkSearchManager_ is null");
411 return TELEPHONY_ERR_LOCAL_PTR_NULL;
412 }
413 return networkSearchManager_->GetMeid(slotId, meid);
414 }
415
GetUniqueDeviceId(int32_t slotId,std::u16string & deviceId)416 int32_t CoreService::GetUniqueDeviceId(int32_t slotId, std::u16string &deviceId)
417 {
418 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
419 TELEPHONY_LOGE("Non-system applications use system APIs!");
420 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
421 }
422 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
423 TELEPHONY_LOGE("permission denied!");
424 return TELEPHONY_ERR_PERMISSION_ERR;
425 }
426 if (networkSearchManager_ == nullptr) {
427 TELEPHONY_LOGE("networkSearchManager_ is null");
428 return TELEPHONY_ERR_LOCAL_PTR_NULL;
429 }
430 return networkSearchManager_->GetUniqueDeviceId(slotId, deviceId);
431 }
432
IsNrSupported(int32_t slotId)433 bool CoreService::IsNrSupported(int32_t slotId)
434 {
435 if (networkSearchManager_ == nullptr) {
436 TELEPHONY_LOGE("networkSearchManager_ is null");
437 return false;
438 }
439 return networkSearchManager_->IsNrSupported(slotId);
440 }
441
SetNrOptionMode(int32_t slotId,int32_t mode,const sptr<INetworkSearchCallback> & callback)442 int32_t CoreService::SetNrOptionMode(int32_t slotId, int32_t mode, const sptr<INetworkSearchCallback> &callback)
443 {
444 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
445 TELEPHONY_LOGE("Non-system applications use system APIs!");
446 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
447 }
448 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
449 TELEPHONY_LOGE("permission denied!");
450 return TELEPHONY_ERR_PERMISSION_ERR;
451 }
452 if (networkSearchManager_ == nullptr) {
453 TELEPHONY_LOGE("networkSearchManager_ is null");
454 return TELEPHONY_ERR_LOCAL_PTR_NULL;
455 }
456 return networkSearchManager_->SetNrOptionMode(slotId, mode, callback);
457 }
458
GetNrOptionMode(int32_t slotId,const sptr<INetworkSearchCallback> & callback)459 int32_t CoreService::GetNrOptionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
460 {
461 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
462 TELEPHONY_LOGE("Non-system applications use system APIs!");
463 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
464 }
465 if (networkSearchManager_ == nullptr) {
466 TELEPHONY_LOGE("networkSearchManager_ is null");
467 return TELEPHONY_ERR_LOCAL_PTR_NULL;
468 }
469 return networkSearchManager_->GetNrOptionMode(slotId, callback);
470 }
471
HasSimCard(int32_t slotId,const sptr<IRawParcelCallback> & callback)472 int32_t CoreService::HasSimCard(int32_t slotId, const sptr<IRawParcelCallback> &callback)
473 {
474 if (simManager_ == nullptr) {
475 TELEPHONY_LOGE("simManager_ is null");
476 return TELEPHONY_ERR_LOCAL_PTR_NULL;
477 }
478 if (callback == nullptr) {
479 TELEPHONY_LOGE("HasSimCard no callback");
480 return TELEPHONY_ERR_LOCAL_PTR_NULL;
481 }
482 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, callback]() {
483 bool hasSimCard = false;
484 MessageParcel dataTmp;
485 auto simManager = wp.lock();
486 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
487 if (simManager) {
488 ret = simManager->HasSimCard(slotId, hasSimCard);
489 }
490 callback->Transfer([=](MessageParcel &data) {
491 data.WriteInt32(ret);
492 if (ret == TELEPHONY_ERR_SUCCESS) {
493 data.WriteBool(hasSimCard);
494 }
495 }, dataTmp);
496 });
497 return TELEPHONY_ERR_SUCCESS;
498 }
499
GetSimState(int32_t slotId,const sptr<IRawParcelCallback> & callback)500 int32_t CoreService::GetSimState(int32_t slotId, const sptr<IRawParcelCallback> &callback)
501 {
502 if (simManager_ == nullptr) {
503 TELEPHONY_LOGE("simManager_ is null");
504 return TELEPHONY_ERR_LOCAL_PTR_NULL;
505 }
506 if (callback == nullptr) {
507 TELEPHONY_LOGE("GetSimState no callback");
508 return TELEPHONY_ERR_LOCAL_PTR_NULL;
509 }
510 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, callback]() {
511 SimState simState = SimState::SIM_STATE_UNKNOWN;
512 MessageParcel dataTmp;
513 auto simManager = wp.lock();
514 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
515 if (simManager) {
516 ret = simManager->GetSimState(slotId, simState);
517 }
518 callback->Transfer([=](MessageParcel &data) {
519 data.WriteInt32(ret);
520 if (ret == TELEPHONY_ERR_SUCCESS) {
521 data.WriteInt32(static_cast<int32_t>(simState));
522 }
523 }, dataTmp);
524 });
525 return TELEPHONY_ERR_SUCCESS;
526 }
527
GetDsdsMode(int32_t & dsdsMode)528 int32_t CoreService::GetDsdsMode(int32_t &dsdsMode)
529 {
530 TELEPHONY_LOGI("CoreService::GetDsdsMode()");
531 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
532 TELEPHONY_LOGE("Non-system applications use system APIs!");
533 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
534 }
535 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
536 TELEPHONY_LOGE("permission denied!");
537 return TELEPHONY_ERR_PERMISSION_ERR;
538 }
539 if (simManager_ == nullptr) {
540 TELEPHONY_LOGE("simManager_ is null");
541 return TELEPHONY_ERR_LOCAL_PTR_NULL;
542 }
543
544 return simManager_->GetDsdsMode(dsdsMode);
545 }
546
GetCardType(int32_t slotId,CardType & cardType)547 int32_t CoreService::GetCardType(int32_t slotId, CardType &cardType)
548 {
549 if (simManager_ == nullptr) {
550 TELEPHONY_LOGE("simManager_ is null");
551 return TELEPHONY_ERR_LOCAL_PTR_NULL;
552 }
553
554 return simManager_->GetCardType(slotId, cardType);
555 }
556
GetISOCountryCodeForSim(int32_t slotId,std::u16string & countryCode)557 int32_t CoreService::GetISOCountryCodeForSim(int32_t slotId, std::u16string &countryCode)
558 {
559 if (simManager_ == nullptr) {
560 TELEPHONY_LOGE("simManager_ is null");
561 return TELEPHONY_ERR_LOCAL_PTR_NULL;
562 }
563
564 return simManager_->GetISOCountryCodeForSim(slotId, countryCode);
565 }
566
GetSimSpn(int32_t slotId,std::u16string & spn)567 int32_t CoreService::GetSimSpn(int32_t slotId, std::u16string &spn)
568 {
569 if (simManager_ == nullptr) {
570 TELEPHONY_LOGE("simManager_ is null");
571 return TELEPHONY_ERR_LOCAL_PTR_NULL;
572 }
573 return simManager_->GetSimSpn(slotId, spn);
574 }
575
GetSimIccId(int32_t slotId,std::u16string & iccId)576 int32_t CoreService::GetSimIccId(int32_t slotId, std::u16string &iccId)
577 {
578 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
579 TELEPHONY_LOGE("Non-system applications use system APIs!");
580 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
581 }
582 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
583 TELEPHONY_LOGE("permission denied!");
584 return TELEPHONY_ERR_PERMISSION_ERR;
585 }
586 if (simManager_ == nullptr) {
587 TELEPHONY_LOGE("simManager_ is null");
588 return TELEPHONY_ERR_LOCAL_PTR_NULL;
589 }
590 return simManager_->GetSimIccId(slotId, iccId);
591 }
592
GetSimOperatorNumeric(int32_t slotId,std::u16string & operatorNumeric)593 int32_t CoreService::GetSimOperatorNumeric(int32_t slotId, std::u16string &operatorNumeric)
594 {
595 if (simManager_ == nullptr) {
596 TELEPHONY_LOGE("simManager_ is null");
597 return TELEPHONY_ERR_LOCAL_PTR_NULL;
598 }
599 return simManager_->GetSimOperatorNumeric(slotId, operatorNumeric);
600 }
601
GetIMSI(int32_t slotId,std::u16string & imsi)602 int32_t CoreService::GetIMSI(int32_t slotId, std::u16string &imsi)
603 {
604 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
605 TELEPHONY_LOGE("Non-system applications use system APIs!");
606 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
607 }
608 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
609 TELEPHONY_LOGE("permission denied!");
610 return TELEPHONY_ERR_PERMISSION_ERR;
611 }
612 if (simManager_ == nullptr) {
613 TELEPHONY_LOGE("simManager_ is null");
614 return TELEPHONY_ERR_LOCAL_PTR_NULL;
615 }
616 return simManager_->GetIMSI(slotId, imsi);
617 }
618
IsCTSimCard(int32_t slotId,const sptr<IRawParcelCallback> & callback)619 int32_t CoreService::IsCTSimCard(int32_t slotId, const sptr<IRawParcelCallback> &callback)
620 {
621 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
622 TELEPHONY_LOGE("Non-system applications use system APIs!");
623 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
624 }
625 if (simManager_ == nullptr) {
626 TELEPHONY_LOGE("simManager_ is null");
627 return TELEPHONY_ERR_LOCAL_PTR_NULL;
628 }
629 if (callback == nullptr) {
630 TELEPHONY_LOGE("IsCTSimCard no callback");
631 return TELEPHONY_ERR_LOCAL_PTR_NULL;
632 }
633 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, callback]() {
634 bool isCTSimCard = false;
635 MessageParcel dataTmp;
636 auto simManager = wp.lock();
637 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
638 if (simManager) {
639 ret = simManager->IsCTSimCard(slotId, isCTSimCard);
640 }
641 callback->Transfer([=](MessageParcel &data) {
642 data.WriteInt32(ret);
643 if (ret == TELEPHONY_ERR_SUCCESS) {
644 data.WriteBool(isCTSimCard);
645 }
646 }, dataTmp);
647 });
648 return TELEPHONY_ERR_SUCCESS;
649 }
650
IsSimActive(int32_t slotId,const sptr<IRawParcelCallback> & callback)651 bool CoreService::IsSimActive(int32_t slotId, const sptr<IRawParcelCallback> &callback)
652 {
653 if (simManager_ == nullptr) {
654 TELEPHONY_LOGE("simManager_ is null");
655 return false;
656 }
657 if (callback == nullptr) {
658 TELEPHONY_LOGE("IsSimActive no callback");
659 return false;
660 }
661 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, callback]() {
662 bool isSimActive = false;
663 MessageParcel dataTmp;
664 auto simManager = wp.lock();
665 if (simManager) {
666 isSimActive = simManager->IsSimActive(slotId);
667 }
668 callback->Transfer([=](MessageParcel &data) {
669 data.WriteBool(isSimActive);
670 }, dataTmp);
671 });
672 return true;
673 }
674
GetSlotId(int32_t simId)675 int32_t CoreService::GetSlotId(int32_t simId)
676 {
677 if (simManager_ == nullptr) {
678 TELEPHONY_LOGE("CoreService::GetSlotId(), simManager_ is nullptr!");
679 return TELEPHONY_ERR_LOCAL_PTR_NULL;
680 }
681 return simManager_->GetSlotId(simId);
682 }
683
GetSimId(int32_t slotId)684 int32_t CoreService::GetSimId(int32_t slotId)
685 {
686 if (simManager_ == nullptr) {
687 TELEPHONY_LOGE("CoreService::GetSimId(), simManager_ is nullptr!");
688 return TELEPHONY_ERROR;
689 }
690 return simManager_->GetSimId(slotId);
691 }
692
GetNetworkSearchInformation(int32_t slotId,const sptr<INetworkSearchCallback> & callback)693 int32_t CoreService::GetNetworkSearchInformation(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
694 {
695 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
696 TELEPHONY_LOGE("Non-system applications use system APIs!");
697 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
698 }
699 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
700 TELEPHONY_LOGE("permission denied!");
701 return TELEPHONY_ERR_PERMISSION_ERR;
702 }
703 if (networkSearchManager_ == nullptr) {
704 TELEPHONY_LOGE("networkSearchManager_ is null");
705 return TELEPHONY_ERR_LOCAL_PTR_NULL;
706 }
707 return networkSearchManager_->GetNetworkSearchInformation(slotId, callback);
708 }
709
GetNetworkSelectionMode(int32_t slotId,const sptr<INetworkSearchCallback> & callback)710 int32_t CoreService::GetNetworkSelectionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
711 {
712 if (networkSearchManager_ == nullptr) {
713 TELEPHONY_LOGE("networkSearchManager_ is null");
714 return TELEPHONY_ERR_LOCAL_PTR_NULL;
715 }
716 return networkSearchManager_->GetNetworkSelectionMode(slotId, callback);
717 }
718
GetLocaleFromDefaultSim()719 std::u16string CoreService::GetLocaleFromDefaultSim()
720 {
721 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
722 TELEPHONY_LOGE("CoreService::GetLocaleFromDefaultSim, Permission denied!");
723 return std::u16string();
724 }
725 if (simManager_ == nullptr) {
726 TELEPHONY_LOGE("simManager_ is null");
727 return std::u16string();
728 }
729 int32_t slotId = INVALID_VALUE;
730 simManager_->GetPrimarySlotId(slotId);
731 if (slotId < DEFAULT_SIM_SLOT_ID) {
732 slotId = DEFAULT_SIM_SLOT_ID;
733 }
734 return simManager_->GetLocaleFromDefaultSim(slotId);
735 }
736
GetSimGid1(int32_t slotId,std::u16string & gid1)737 int32_t CoreService::GetSimGid1(int32_t slotId, std::u16string &gid1)
738 {
739 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
740 TELEPHONY_LOGE("Non-system applications use system APIs!");
741 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
742 }
743 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
744 TELEPHONY_LOGE("CoreService::GetSimGid1, Permission denied!");
745 return TELEPHONY_ERR_PERMISSION_ERR;
746 }
747 if (simManager_ == nullptr) {
748 TELEPHONY_LOGE("simManager_ is null");
749 return TELEPHONY_ERR_LOCAL_PTR_NULL;
750 }
751 return simManager_->GetSimGid1(slotId, gid1);
752 }
753
GetSimGid2(int32_t slotId)754 std::u16string CoreService::GetSimGid2(int32_t slotId)
755 {
756 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
757 TELEPHONY_LOGE("Non-system applications use system APIs!");
758 return std::u16string();
759 }
760 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
761 TELEPHONY_LOGE("CoreService::GetSimGid2, Permission denied!");
762 return std::u16string();
763 }
764 if (simManager_ == nullptr) {
765 TELEPHONY_LOGE("simManager_ is null");
766 return std::u16string();
767 }
768 return simManager_->GetSimGid2(slotId);
769 }
770
GetSimEons(int32_t slotId,const std::string & plmn,int32_t lac,bool longNameRequired)771 std::u16string CoreService::GetSimEons(int32_t slotId, const std::string &plmn, int32_t lac, bool longNameRequired)
772 {
773 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
774 TELEPHONY_LOGE("Non-system applications use system APIs!");
775 return std::u16string();
776 }
777 if (simManager_ == nullptr) {
778 TELEPHONY_LOGE("CoreService::GetSimEons, Permission denied!");
779 return std::u16string();
780 }
781 return simManager_->GetSimEons(slotId, plmn, lac, longNameRequired);
782 }
783
GetSimAccountInfo(int32_t slotId,IccAccountInfo & info)784 int32_t CoreService::GetSimAccountInfo(int32_t slotId, IccAccountInfo &info)
785 {
786 bool denied = false;
787 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
788 TELEPHONY_LOGE("permission denied!");
789 denied = true;
790 }
791 if (simManager_ == nullptr) {
792 TELEPHONY_LOGE("simManager_ is null");
793 return TELEPHONY_ERR_LOCAL_PTR_NULL;
794 }
795 return simManager_->GetSimAccountInfo(slotId, denied, info);
796 }
797
SetDefaultVoiceSlotId(int32_t slotId)798 int32_t CoreService::SetDefaultVoiceSlotId(int32_t slotId)
799 {
800 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
801 TELEPHONY_LOGE("Non-system applications use system APIs!");
802 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
803 }
804 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
805 TELEPHONY_LOGE("permission denied!");
806 return TELEPHONY_ERR_PERMISSION_ERR;
807 }
808 if (simManager_ == nullptr) {
809 TELEPHONY_LOGE("simManager_ is null");
810 return TELEPHONY_ERR_LOCAL_PTR_NULL;
811 }
812 return simManager_->SetDefaultVoiceSlotId(slotId);
813 }
814
GetDefaultVoiceSlotId()815 int32_t CoreService::GetDefaultVoiceSlotId()
816 {
817 if (simManager_ == nullptr) {
818 TELEPHONY_LOGE("simManager_ is null");
819 return TELEPHONY_ERROR;
820 }
821 return simManager_->GetDefaultVoiceSlotId();
822 }
823
GetDefaultVoiceSimId(const sptr<IRawParcelCallback> & callback)824 int32_t CoreService::GetDefaultVoiceSimId(const sptr<IRawParcelCallback> &callback)
825 {
826 if (simManager_ == nullptr) {
827 TELEPHONY_LOGE("simManager_ is null");
828 return TELEPHONY_ERR_LOCAL_PTR_NULL;
829 }
830
831 if (callback == nullptr) {
832 TELEPHONY_LOGE("GetDefaultVoiceSimId no callback");
833 return TELEPHONY_ERR_LOCAL_PTR_NULL;
834 }
835 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), callback]() {
836 int32_t simId = 0;
837 MessageParcel dataTmp;
838 auto simManager = wp.lock();
839 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
840 if (simManager) {
841 ret = simManager->GetDefaultVoiceSimId(simId);
842 }
843 callback->Transfer([=](MessageParcel &data) {
844 data.WriteInt32(ret);
845 if (ret == TELEPHONY_ERR_SUCCESS) {
846 data.WriteInt32(simId);
847 }
848 }, dataTmp);
849 });
850 return TELEPHONY_ERR_SUCCESS;
851 }
852
SetPrimarySlotId(int32_t slotId)853 int32_t CoreService::SetPrimarySlotId(int32_t slotId)
854 {
855 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
856 TELEPHONY_LOGE("Non-system applications use system APIs!");
857 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
858 }
859 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
860 TELEPHONY_LOGE("permission denied!");
861 return TELEPHONY_ERR_PERMISSION_ERR;
862 }
863 if (simManager_ == nullptr) {
864 TELEPHONY_LOGE("simManager_ is null");
865 return TELEPHONY_ERR_LOCAL_PTR_NULL;
866 }
867 bool hasSim = false;
868 simManager_->HasSimCard(slotId, hasSim);
869 if (!hasSim) {
870 TELEPHONY_LOGE("has no sim");
871 return TELEPHONY_ERR_NO_SIM_CARD;
872 }
873 if (!simManager_->IsSimActive(slotId)) {
874 TELEPHONY_LOGE("sim is not active");
875 return TELEPHONY_ERR_SLOTID_INVALID;
876 }
877 return simManager_->SetPrimarySlotId(slotId, true);
878 }
879
GetPrimarySlotId(int32_t & slotId)880 int32_t CoreService::GetPrimarySlotId(int32_t &slotId)
881 {
882 if (simManager_ == nullptr) {
883 TELEPHONY_LOGE("simManager_ is null");
884 return TELEPHONY_ERR_LOCAL_PTR_NULL;
885 }
886 return simManager_->GetPrimarySlotId(slotId);
887 }
888
SetShowNumber(int32_t slotId,const std::u16string & number,const sptr<IRawParcelCallback> & callback)889 int32_t CoreService::SetShowNumber(int32_t slotId, const std::u16string &number,
890 const sptr<IRawParcelCallback> &callback)
891 {
892 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
893 TELEPHONY_LOGE("Non-system applications use system APIs!");
894 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
895 }
896 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
897 TELEPHONY_LOGE("permission denied!");
898 return TELEPHONY_ERR_PERMISSION_ERR;
899 }
900 if (simManager_ == nullptr) {
901 TELEPHONY_LOGE("simManager_ is null");
902 return TELEPHONY_ERR_LOCAL_PTR_NULL;
903 }
904 if (callback == nullptr) {
905 TELEPHONY_LOGE("SetShowNumber no callback");
906 return TELEPHONY_ERR_LOCAL_PTR_NULL;
907 }
908 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, number, callback]() {
909 MessageParcel dataTmp;
910 auto simManager = wp.lock();
911 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
912 if (simManager) {
913 ret = simManager->SetShowNumber(slotId, number);
914 }
915 callback->Transfer([=](MessageParcel &data) {
916 data.WriteInt32(ret);
917 }, dataTmp);
918 });
919 return TELEPHONY_ERR_SUCCESS;
920 }
921
GetShowNumber(int32_t slotId,const sptr<IRawParcelCallback> & callback)922 int32_t CoreService::GetShowNumber(int32_t slotId, const sptr<IRawParcelCallback> &callback)
923 {
924 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
925 TELEPHONY_LOGE("Non-system applications use system APIs!");
926 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
927 }
928 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
929 TELEPHONY_LOGE("permission denied!");
930 return TELEPHONY_ERR_PERMISSION_ERR;
931 }
932 if (simManager_ == nullptr) {
933 TELEPHONY_LOGE("simManager_ is null");
934 return TELEPHONY_ERR_LOCAL_PTR_NULL;
935 }
936 if (callback == nullptr) {
937 TELEPHONY_LOGE("GetShowNumber no callback");
938 return TELEPHONY_ERR_LOCAL_PTR_NULL;
939 }
940 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, callback]() {
941 std::u16string showNumber = u"";
942 MessageParcel dataTmp;
943 auto simManager = wp.lock();
944 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
945 if (simManager) {
946 ret = simManager->GetShowNumber(slotId, showNumber);
947 }
948 callback->Transfer([=](MessageParcel &data) {
949 data.WriteInt32(ret);
950 if (ret == TELEPHONY_ERR_SUCCESS) {
951 data.WriteString16(showNumber);
952 }
953 }, dataTmp);
954 });
955 return TELEPHONY_ERR_SUCCESS;
956 }
957
SetShowName(int32_t slotId,const std::u16string & name,const sptr<IRawParcelCallback> & callback)958 int32_t CoreService::SetShowName(int32_t slotId, const std::u16string &name,
959 const sptr<IRawParcelCallback> &callback)
960 {
961 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
962 TELEPHONY_LOGE("Non-system applications use system APIs!");
963 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
964 }
965 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
966 TELEPHONY_LOGE("permission denied!");
967 return TELEPHONY_ERR_PERMISSION_ERR;
968 }
969 if (simManager_ == nullptr) {
970 TELEPHONY_LOGE("simManager_ is null");
971 return TELEPHONY_ERR_LOCAL_PTR_NULL;
972 }
973 if (callback == nullptr) {
974 TELEPHONY_LOGE("SetShowName no callback");
975 return TELEPHONY_ERR_LOCAL_PTR_NULL;
976 }
977 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, name, callback]() {
978 MessageParcel dataTmp;
979 auto simManager = wp.lock();
980 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
981 if (simManager) {
982 ret = simManager->SetShowName(slotId, name);
983 }
984 callback->Transfer([=](MessageParcel &data) {
985 data.WriteInt32(ret);
986 }, dataTmp);
987 });
988 return TELEPHONY_ERR_SUCCESS;
989 }
990
GetShowName(int32_t slotId,const sptr<IRawParcelCallback> & callback)991 int32_t CoreService::GetShowName(int32_t slotId, const sptr<IRawParcelCallback> &callback)
992 {
993 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
994 TELEPHONY_LOGE("Non-system applications use system APIs!");
995 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
996 }
997 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
998 TELEPHONY_LOGE("permission denied!");
999 return TELEPHONY_ERR_PERMISSION_ERR;
1000 }
1001 if (simManager_ == nullptr) {
1002 TELEPHONY_LOGE("simManager_ is null");
1003 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1004 }
1005 if (callback == nullptr) {
1006 TELEPHONY_LOGE("GetShowName no callback");
1007 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1008 }
1009 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, callback]() {
1010 std::u16string showName = u"";
1011 MessageParcel dataTmp;
1012 auto simManager = wp.lock();
1013 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1014 if (simManager) {
1015 ret = simManager->GetShowName(slotId, showName);
1016 }
1017 callback->Transfer([=](MessageParcel &data) {
1018 data.WriteInt32(ret);
1019 if (ret == TELEPHONY_ERR_SUCCESS) {
1020 data.WriteString16(showName);
1021 }
1022 }, dataTmp);
1023 });
1024 return TELEPHONY_ERR_SUCCESS;
1025 }
1026
GetActiveSimAccountInfoList(std::vector<IccAccountInfo> & iccAccountInfoList)1027 int32_t CoreService::GetActiveSimAccountInfoList(std::vector<IccAccountInfo> &iccAccountInfoList)
1028 {
1029 bool denied = false;
1030 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1031 TELEPHONY_LOGW("permission denied!");
1032 denied = true;
1033 }
1034 if (simManager_ == nullptr) {
1035 TELEPHONY_LOGE("simManager_ is null");
1036 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1037 }
1038 return simManager_->GetActiveSimAccountInfoList(denied, iccAccountInfoList);
1039 }
1040
GetOperatorConfigs(int32_t slotId,OperatorConfig & poc)1041 int32_t CoreService::GetOperatorConfigs(int32_t slotId, OperatorConfig &poc)
1042 {
1043 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1044 TELEPHONY_LOGE("Non-system applications use system APIs!");
1045 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1046 }
1047 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1048 TELEPHONY_LOGE("permission denied!");
1049 return TELEPHONY_ERR_PERMISSION_ERR;
1050 }
1051 if (simManager_ == nullptr) {
1052 TELEPHONY_LOGE("simManager_ is null");
1053 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1054 }
1055 return simManager_->GetOperatorConfigs(slotId, poc);
1056 }
1057
UnlockPin(const int32_t slotId,const std::u16string & pin,const sptr<IRawParcelCallback> & callback)1058 int32_t CoreService::UnlockPin(const int32_t slotId, const std::u16string &pin,
1059 const sptr<IRawParcelCallback> &callback)
1060 {
1061 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1062 TELEPHONY_LOGE("Non-system applications use system APIs!");
1063 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1064 }
1065 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1066 TELEPHONY_LOGE("permission denied!");
1067 return TELEPHONY_ERR_PERMISSION_ERR;
1068 }
1069 if (simManager_ == nullptr) {
1070 TELEPHONY_LOGE("simManager_ is null");
1071 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1072 }
1073 if (callback == nullptr) {
1074 TELEPHONY_LOGE("UnlockPin no callback");
1075 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1076 }
1077 AsyncSimPinExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, pin, callback]() {
1078 LockStatusResponse response = { UNLOCK_FAIL, TELEPHONY_ERROR };
1079 MessageParcel dataTmp;
1080 auto simManager = wp.lock();
1081 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1082 if (simManager) {
1083 ret = simManager->UnlockPin(slotId, Str16ToStr8(pin), response);
1084 }
1085 callback->Transfer([=](MessageParcel &data) {
1086 data.WriteInt32(ret);
1087 if (ret == TELEPHONY_ERR_SUCCESS) {
1088 data.WriteInt32(response.result);
1089 data.WriteInt32(response.remain);
1090 }
1091 }, dataTmp);
1092 });
1093 return TELEPHONY_ERR_SUCCESS;
1094 }
1095
UnlockPuk(const int slotId,const std::u16string & newPin,const std::u16string & puk,const sptr<IRawParcelCallback> & callback)1096 int32_t CoreService::UnlockPuk(const int slotId, const std::u16string &newPin, const std::u16string &puk,
1097 const sptr<IRawParcelCallback> &callback)
1098 {
1099 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1100 TELEPHONY_LOGE("Non-system applications use system APIs!");
1101 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1102 }
1103 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1104 TELEPHONY_LOGE("permission denied!");
1105 return TELEPHONY_ERR_PERMISSION_ERR;
1106 }
1107 TELEPHONY_LOGI("CoreService::UnlockPuk(), newPinLen = %{public}lu, pukLen = %{public}lu, slotId = %{public}d",
1108 static_cast<unsigned long>(newPin.length()), static_cast<unsigned long>(puk.length()), slotId);
1109 if (simManager_ == nullptr) {
1110 TELEPHONY_LOGE("simManager_ is null");
1111 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1112 }
1113 if (callback == nullptr) {
1114 TELEPHONY_LOGE("UnlockPuk no callback");
1115 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1116 }
1117 AsyncSimPinExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, newPin, puk, callback]() {
1118 LockStatusResponse response = { UNLOCK_FAIL, TELEPHONY_ERROR };
1119 MessageParcel dataTmp;
1120 auto simManager = wp.lock();
1121 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1122 if (simManager) {
1123 ret = simManager->UnlockPuk(slotId, Str16ToStr8(newPin), Str16ToStr8(puk), response);
1124 }
1125 callback->Transfer([=](MessageParcel &data) {
1126 data.WriteInt32(ret);
1127 if (ret == TELEPHONY_ERR_SUCCESS) {
1128 data.WriteInt32(response.result);
1129 data.WriteInt32(response.remain);
1130 }
1131 }, dataTmp);
1132 });
1133 return TELEPHONY_ERR_SUCCESS;
1134 }
1135
AlterPin(const int slotId,const std::u16string & newPin,const std::u16string & oldPin,const sptr<IRawParcelCallback> & callback)1136 int32_t CoreService::AlterPin(const int slotId, const std::u16string &newPin, const std::u16string &oldPin,
1137 const sptr<IRawParcelCallback> &callback)
1138 {
1139 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1140 TELEPHONY_LOGE("Non-system applications use system APIs!");
1141 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1142 }
1143 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1144 TELEPHONY_LOGE("permission denied!");
1145 return TELEPHONY_ERR_PERMISSION_ERR;
1146 }
1147 TELEPHONY_LOGI("CoreService::AlterPin(), newPinLen = %{public}lu, oldPinLen = %{public}lu, slotId = %{public}d",
1148 static_cast<unsigned long>(newPin.length()), static_cast<unsigned long>(oldPin.length()), slotId);
1149 if (simManager_ == nullptr) {
1150 TELEPHONY_LOGE("simManager_ is null");
1151 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1152 }
1153 if (callback == nullptr) {
1154 TELEPHONY_LOGE("AlterPin no callback");
1155 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1156 }
1157 AsyncSimPinExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, newPin, oldPin, callback]() {
1158 LockStatusResponse response = { UNLOCK_FAIL, TELEPHONY_ERROR };
1159 MessageParcel dataTmp;
1160 auto simManager = wp.lock();
1161 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1162 if (simManager) {
1163 ret = simManager->AlterPin(slotId, Str16ToStr8(newPin), Str16ToStr8(oldPin), response);
1164 }
1165 callback->Transfer([=](MessageParcel &data) {
1166 data.WriteInt32(ret);
1167 if (ret == TELEPHONY_ERR_SUCCESS) {
1168 data.WriteInt32(response.result);
1169 data.WriteInt32(response.remain);
1170 }
1171 }, dataTmp);
1172 });
1173 return TELEPHONY_ERR_SUCCESS;
1174 }
1175
UnlockPin2(const int32_t slotId,const std::u16string & pin2,const sptr<IRawParcelCallback> & callback)1176 int32_t CoreService::UnlockPin2(const int32_t slotId, const std::u16string &pin2,
1177 const sptr<IRawParcelCallback> &callback)
1178 {
1179 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1180 TELEPHONY_LOGE("Non-system applications use system APIs!");
1181 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1182 }
1183 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1184 TELEPHONY_LOGE("permission denied!");
1185 return TELEPHONY_ERR_PERMISSION_ERR;
1186 }
1187 TELEPHONY_LOGI("CoreService::UnlockPin2(), pin2Len = %{public}lu, slotId = %{public}d",
1188 static_cast<unsigned long>(pin2.length()), slotId);
1189 if (simManager_ == nullptr) {
1190 TELEPHONY_LOGE("simManager_ is null");
1191 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1192 }
1193 if (callback == nullptr) {
1194 TELEPHONY_LOGE("UnlockPin2 no callback");
1195 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1196 }
1197 AsyncSimPinExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, pin2, callback]() {
1198 LockStatusResponse response = { UNLOCK_FAIL, TELEPHONY_ERROR };
1199 MessageParcel dataTmp;
1200 auto simManager = wp.lock();
1201 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1202 if (simManager) {
1203 ret = simManager->UnlockPin2(slotId, Str16ToStr8(pin2), response);
1204 }
1205 callback->Transfer([=](MessageParcel &data) {
1206 data.WriteInt32(ret);
1207 if (ret == TELEPHONY_ERR_SUCCESS) {
1208 data.WriteInt32(response.result);
1209 data.WriteInt32(response.remain);
1210 }
1211 }, dataTmp);
1212 });
1213 return TELEPHONY_ERR_SUCCESS;
1214 }
1215
UnlockPuk2(const int slotId,const std::u16string & newPin2,const std::u16string & puk2,const sptr<IRawParcelCallback> & callback)1216 int32_t CoreService::UnlockPuk2(const int slotId, const std::u16string &newPin2, const std::u16string &puk2,
1217 const sptr<IRawParcelCallback> &callback)
1218 {
1219 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1220 TELEPHONY_LOGE("Non-system applications use system APIs!");
1221 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1222 }
1223 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1224 TELEPHONY_LOGE("permission denied!");
1225 return TELEPHONY_ERR_PERMISSION_ERR;
1226 }
1227 TELEPHONY_LOGI("CoreService::UnlockPuk2(), newPin2Len = %{public}lu, puk2Len = %{public}lu, slotId = %{public}d",
1228 static_cast<unsigned long>(newPin2.length()), static_cast<unsigned long>(puk2.length()), slotId);
1229 if (simManager_ == nullptr) {
1230 TELEPHONY_LOGE("simManager_ is null");
1231 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1232 }
1233 if (callback == nullptr) {
1234 TELEPHONY_LOGE("UnlockPuk2 no callback");
1235 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1236 }
1237 AsyncSimPinExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, newPin2, puk2, callback]() {
1238 LockStatusResponse response = { UNLOCK_FAIL, TELEPHONY_ERROR };
1239 MessageParcel dataTmp;
1240 auto simManager = wp.lock();
1241 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1242 if (simManager) {
1243 ret = simManager->UnlockPuk2(slotId, Str16ToStr8(newPin2), Str16ToStr8(puk2), response);
1244 }
1245 callback->Transfer([=](MessageParcel &data) {
1246 data.WriteInt32(ret);
1247 if (ret == TELEPHONY_ERR_SUCCESS) {
1248 data.WriteInt32(response.result);
1249 data.WriteInt32(response.remain);
1250 }
1251 }, dataTmp);
1252 });
1253 return TELEPHONY_ERR_SUCCESS;
1254 }
1255
AlterPin2(const int slotId,const std::u16string & newPin2,const std::u16string & oldPin2,const sptr<IRawParcelCallback> & callback)1256 int32_t CoreService::AlterPin2(const int slotId, const std::u16string &newPin2,
1257 const std::u16string &oldPin2, const sptr<IRawParcelCallback> &callback)
1258 {
1259 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1260 TELEPHONY_LOGE("Non-system applications use system APIs!");
1261 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1262 }
1263 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1264 TELEPHONY_LOGE("permission denied!");
1265 return TELEPHONY_ERR_PERMISSION_ERR;
1266 }
1267 TELEPHONY_LOGI("CoreService::AlterPin2(), newPin2Len = %{public}lu, oldPin2Len = %{public}lu, slotId = %{public}d",
1268 static_cast<unsigned long>(newPin2.length()), static_cast<unsigned long>(oldPin2.length()), slotId);
1269 if (simManager_ == nullptr) {
1270 TELEPHONY_LOGE("simManager_ is null");
1271 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1272 }
1273 if (callback == nullptr) {
1274 TELEPHONY_LOGE("AlterPin2 no callback");
1275 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1276 }
1277 AsyncSimPinExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, newPin2, oldPin2, callback]() {
1278 LockStatusResponse response = { UNLOCK_FAIL, TELEPHONY_ERROR };
1279 MessageParcel dataTmp;
1280 auto simManager = wp.lock();
1281 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1282 if (simManager) {
1283 ret = simManager->AlterPin2(slotId, Str16ToStr8(newPin2), Str16ToStr8(oldPin2), response);
1284 }
1285 callback->Transfer([=](MessageParcel &data) {
1286 data.WriteInt32(ret);
1287 if (ret == TELEPHONY_ERR_SUCCESS) {
1288 data.WriteInt32(response.result);
1289 data.WriteInt32(response.remain);
1290 }
1291 }, dataTmp);
1292 });
1293 return TELEPHONY_ERR_SUCCESS;
1294 }
1295
SetLockState(int32_t slotId,const LockInfo & options,const sptr<IRawParcelCallback> & callback)1296 int32_t CoreService::SetLockState(int32_t slotId, const LockInfo &options, const sptr<IRawParcelCallback> &callback)
1297 {
1298 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1299 TELEPHONY_LOGE("Non-system applications use system APIs!");
1300 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1301 }
1302 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1303 TELEPHONY_LOGE("permission denied!");
1304 return TELEPHONY_ERR_PERMISSION_ERR;
1305 }
1306 std::u16string strPin = options.password;
1307 TELEPHONY_LOGI(
1308 "CoreService::SetLockState(),lockType = %{public}d, pinLen = %{public}lu, lockState = %{public}d, slotId "
1309 "= "
1310 "%{public}d",
1311 options.lockType, static_cast<unsigned long>(strPin.length()), options.lockState, slotId);
1312 if (simManager_ == nullptr) {
1313 TELEPHONY_LOGE("simManager_ is null");
1314 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1315 }
1316 if (callback == nullptr) {
1317 TELEPHONY_LOGE("SetLockState no callback");
1318 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1319 }
1320 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, options, callback]() {
1321 LockStatusResponse response = { UNLOCK_FAIL, TELEPHONY_ERROR };
1322 MessageParcel dataTmp;
1323 auto simManager = wp.lock();
1324 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1325 if (simManager) {
1326 ret = simManager->SetLockState(slotId, options, response);
1327 }
1328 callback->Transfer([=](MessageParcel &data) {
1329 data.WriteInt32(ret);
1330 if (ret == TELEPHONY_ERR_SUCCESS) {
1331 data.WriteInt32(response.result);
1332 data.WriteInt32(response.remain);
1333 }
1334 }, dataTmp);
1335 });
1336 return TELEPHONY_ERR_SUCCESS;
1337 }
1338
GetLockState(int32_t slotId,LockType lockType,const sptr<IRawParcelCallback> & callback)1339 int32_t CoreService::GetLockState(int32_t slotId, LockType lockType, const sptr<IRawParcelCallback> &callback)
1340 {
1341 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1342 TELEPHONY_LOGE("Non-system applications use system APIs!");
1343 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1344 }
1345 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1346 TELEPHONY_LOGE("CoreService::GetLockState, Permission denied!");
1347 return TELEPHONY_ERR_PERMISSION_ERR;
1348 }
1349 TELEPHONY_LOGI("CoreService::GetLockState(), lockType = %{public}d, slotId = %{public}d", lockType, slotId);
1350 if (simManager_ == nullptr) {
1351 TELEPHONY_LOGE("simManager_ is null");
1352 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1353 }
1354 if (callback == nullptr) {
1355 TELEPHONY_LOGE("GetLockState no callback");
1356 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1357 }
1358 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, lockType, callback]() {
1359 LockState lockState = LockState::LOCK_ERROR;
1360 MessageParcel dataTmp;
1361 auto simManager = wp.lock();
1362 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1363 if (simManager) {
1364 ret = simManager->GetLockState(slotId, lockType, lockState);
1365 }
1366 callback->Transfer([=](MessageParcel &data) {
1367 data.WriteInt32(ret);
1368 if (ret == TELEPHONY_ERR_SUCCESS) {
1369 data.WriteInt32(static_cast<int32_t>(lockState));
1370 }
1371 }, dataTmp);
1372 });
1373 return TELEPHONY_ERR_SUCCESS;
1374 }
1375
RefreshSimState(int32_t slotId)1376 int32_t CoreService::RefreshSimState(int32_t slotId)
1377 {
1378 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1379 TELEPHONY_LOGE("Non-system applications use system APIs!");
1380 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1381 }
1382 if (simManager_ == nullptr) {
1383 TELEPHONY_LOGE("simManager_ is null");
1384 return TELEPHONY_ERROR;
1385 }
1386 return simManager_->RefreshSimState(slotId);
1387 }
1388
SetActiveSim(int32_t slotId,int32_t enable)1389 int32_t CoreService::SetActiveSim(int32_t slotId, int32_t enable)
1390 {
1391 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1392 TELEPHONY_LOGE("Non-system applications use system APIs!");
1393 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1394 }
1395 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1396 TELEPHONY_LOGE("permission denied!");
1397 return TELEPHONY_ERR_PERMISSION_ERR;
1398 }
1399 if (simManager_ == nullptr) {
1400 TELEPHONY_LOGE("simManager_ is null");
1401 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1402 }
1403 return simManager_->SetActiveSim(slotId, enable);
1404 }
1405
SetActiveSimSatellite(int32_t slotId,int32_t enable)1406 int32_t CoreService::SetActiveSimSatellite(int32_t slotId, int32_t enable)
1407 {
1408 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1409 TELEPHONY_LOGE("Non-system applications use system APIs!");
1410 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1411 }
1412 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1413 TELEPHONY_LOGE("permission denied!");
1414 return TELEPHONY_ERR_PERMISSION_ERR;
1415 }
1416 if (simManager_ == nullptr) {
1417 TELEPHONY_LOGE("simManager_ is null");
1418 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1419 }
1420 return simManager_->SetActiveSimSatellite(slotId, enable);
1421 }
1422
GetPreferredNetwork(int32_t slotId,const sptr<INetworkSearchCallback> & callback)1423 int32_t CoreService::GetPreferredNetwork(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
1424 {
1425 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1426 TELEPHONY_LOGE("Non-system applications use system APIs!");
1427 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1428 }
1429 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1430 TELEPHONY_LOGE("permission denied!");
1431 return TELEPHONY_ERR_PERMISSION_ERR;
1432 }
1433 if (networkSearchManager_ == nullptr) {
1434 TELEPHONY_LOGE("networkSearchManager_ is null");
1435 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1436 }
1437 return networkSearchManager_->GetPreferredNetwork(slotId, callback);
1438 }
1439
SetPreferredNetwork(int32_t slotId,int32_t networkMode,const sptr<INetworkSearchCallback> & callback)1440 int32_t CoreService::SetPreferredNetwork(
1441 int32_t slotId, int32_t networkMode, const sptr<INetworkSearchCallback> &callback)
1442 {
1443 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1444 TELEPHONY_LOGE("Non-system applications use system APIs!");
1445 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1446 }
1447 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1448 TELEPHONY_LOGE("permission denied!");
1449 return TELEPHONY_ERR_PERMISSION_ERR;
1450 }
1451 if (networkSearchManager_ == nullptr) {
1452 TELEPHONY_LOGE("networkSearchManager_ is null");
1453 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1454 }
1455 return networkSearchManager_->SetPreferredNetwork(slotId, networkMode, callback);
1456 }
1457
GetNetworkCapability(int32_t slotId,int32_t networkCapabilityType,int32_t & networkCapabilityState)1458 int32_t CoreService::GetNetworkCapability(
1459 int32_t slotId, int32_t networkCapabilityType, int32_t &networkCapabilityState)
1460 {
1461 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1462 TELEPHONY_LOGE("Non-system applications use system APIs!");
1463 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1464 }
1465 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1466 TELEPHONY_LOGE("permission denied!");
1467 return TELEPHONY_ERR_PERMISSION_ERR;
1468 }
1469 if (networkSearchManager_ == nullptr) {
1470 TELEPHONY_LOGE("networkSearchManager_ is null");
1471 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1472 }
1473 return networkSearchManager_->GetNetworkCapability(slotId, networkCapabilityType, networkCapabilityState);
1474 }
1475
SetNetworkCapability(int32_t slotId,int32_t networkCapabilityType,int32_t networkCapabilityState)1476 int32_t CoreService::SetNetworkCapability(int32_t slotId, int32_t networkCapabilityType, int32_t networkCapabilityState)
1477 {
1478 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1479 TELEPHONY_LOGE("Non-system applications use system APIs!");
1480 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1481 }
1482 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1483 TELEPHONY_LOGE("permission denied!");
1484 return TELEPHONY_ERR_PERMISSION_ERR;
1485 }
1486 if (networkSearchManager_ == nullptr) {
1487 TELEPHONY_LOGE("networkSearchManager_ is null");
1488 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1489 }
1490 return networkSearchManager_->SetNetworkCapability(slotId, networkCapabilityType, networkCapabilityState);
1491 }
1492
GetSimTelephoneNumber(int32_t slotId,std::u16string & telephoneNumber)1493 int32_t CoreService::GetSimTelephoneNumber(int32_t slotId, std::u16string &telephoneNumber)
1494 {
1495 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1496 TELEPHONY_LOGE("Non-system applications use system APIs!");
1497 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1498 }
1499 if ((!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) &&
1500 (!TelephonyPermission::CheckPermission(Permission::GET_PHONE_NUMBERS))) {
1501 TELEPHONY_LOGE("permission denied!");
1502 return TELEPHONY_ERR_PERMISSION_ERR;
1503 }
1504 if (simManager_ == nullptr) {
1505 TELEPHONY_LOGE("simManager_ is null");
1506 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1507 }
1508 return simManager_->GetSimTelephoneNumber(slotId, telephoneNumber);
1509 }
1510
GetSimTeleNumberIdentifier(const int32_t slotId)1511 std::u16string CoreService::GetSimTeleNumberIdentifier(const int32_t slotId)
1512 {
1513 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1514 TELEPHONY_LOGE("CoreService::GetSimTeleNumberIdentifier, Permission denied!");
1515 return std::u16string();
1516 }
1517 if (simManager_ == nullptr) {
1518 TELEPHONY_LOGE("simManager_ is null");
1519 return std::u16string();
1520 }
1521 return simManager_->GetSimTeleNumberIdentifier(slotId);
1522 }
1523
GetVoiceMailIdentifier(int32_t slotId,std::u16string & voiceMailIdentifier)1524 int32_t CoreService::GetVoiceMailIdentifier(int32_t slotId, std::u16string &voiceMailIdentifier)
1525 {
1526 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1527 TELEPHONY_LOGE("Non-system applications use system APIs!");
1528 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1529 }
1530 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1531 TELEPHONY_LOGE("permission denied!");
1532 return TELEPHONY_ERR_PERMISSION_ERR;
1533 }
1534 if (simManager_ == nullptr) {
1535 TELEPHONY_LOGE("simManager_ is null");
1536 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1537 }
1538 return simManager_->GetVoiceMailIdentifier(slotId, voiceMailIdentifier);
1539 }
1540
GetVoiceMailNumber(int32_t slotId,std::u16string & voiceMailNumber)1541 int32_t CoreService::GetVoiceMailNumber(int32_t slotId, std::u16string &voiceMailNumber)
1542 {
1543 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1544 TELEPHONY_LOGE("Non-system applications use system APIs!");
1545 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1546 }
1547 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1548 TELEPHONY_LOGE("permission denied!");
1549 return TELEPHONY_ERR_PERMISSION_ERR;
1550 }
1551 if (simManager_ == nullptr) {
1552 TELEPHONY_LOGE("simManager_ is null");
1553 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1554 }
1555 return simManager_->GetVoiceMailNumber(slotId, voiceMailNumber);
1556 }
1557
GetVoiceMailCount(int32_t slotId,int32_t & voiceMailCount)1558 int32_t CoreService::GetVoiceMailCount(int32_t slotId, int32_t &voiceMailCount)
1559 {
1560 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1561 TELEPHONY_LOGE("Non-system applications use system APIs!");
1562 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1563 }
1564 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1565 TELEPHONY_LOGE("permission denied!");
1566 return TELEPHONY_ERR_PERMISSION_ERR;
1567 }
1568 TELEPHONY_LOGI("CoreService::GetVoiceMailCount(), slotId = %{public}d", slotId);
1569 if (simManager_ == nullptr) {
1570 TELEPHONY_LOGE("simManager_ is null");
1571 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1572 }
1573 return simManager_->GetVoiceMailCount(slotId, voiceMailCount);
1574 }
1575
SetVoiceMailCount(int32_t slotId,int32_t voiceMailCount)1576 int32_t CoreService::SetVoiceMailCount(int32_t slotId, int32_t voiceMailCount)
1577 {
1578 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1579 TELEPHONY_LOGE("permission denied!");
1580 return TELEPHONY_ERR_PERMISSION_ERR;
1581 }
1582 TELEPHONY_LOGI("CoreService::SetVoiceMailCount(), slotId = %{public}d", slotId);
1583 if (simManager_ == nullptr) {
1584 TELEPHONY_LOGE("simManager_ is null");
1585 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1586 }
1587 return simManager_->SetVoiceMailCount(slotId, voiceMailCount);
1588 }
1589
SetVoiceCallForwarding(int32_t slotId,bool enable,const std::string & number)1590 int32_t CoreService::SetVoiceCallForwarding(int32_t slotId, bool enable, const std::string &number)
1591 {
1592 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1593 TELEPHONY_LOGE("permission denied!");
1594 return TELEPHONY_ERR_PERMISSION_ERR;
1595 }
1596 TELEPHONY_LOGI("CoreService::SetVoiceCallForwarding(), slotId = %{public}d", slotId);
1597 if (simManager_ == nullptr) {
1598 TELEPHONY_LOGE("simManager_ is null");
1599 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1600 }
1601 return simManager_->SetVoiceCallForwarding(slotId, enable, number);
1602 }
1603
QueryIccDiallingNumbers(int slotId,int type,std::vector<std::shared_ptr<DiallingNumbersInfo>> & reslut)1604 int32_t CoreService::QueryIccDiallingNumbers(
1605 int slotId, int type, std::vector<std::shared_ptr<DiallingNumbersInfo>> &reslut)
1606 {
1607 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1608 TELEPHONY_LOGE("Non-system applications use system APIs!");
1609 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1610 }
1611 if (!TelephonyPermission::CheckPermission(Permission::READ_CONTACTS)) {
1612 TELEPHONY_LOGE("permission denied!");
1613 return TELEPHONY_ERR_PERMISSION_ERR;
1614 }
1615 if (simManager_ == nullptr) {
1616 TELEPHONY_LOGE("simManager_ is null");
1617 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1618 }
1619 return simManager_->QueryIccDiallingNumbers(slotId, type, reslut);
1620 }
1621
AddIccDiallingNumbers(int slotId,int type,const std::shared_ptr<DiallingNumbersInfo> & diallingNumber)1622 int32_t CoreService::AddIccDiallingNumbers(
1623 int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber)
1624 {
1625 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1626 TELEPHONY_LOGE("Non-system applications use system APIs!");
1627 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1628 }
1629 if (!TelephonyPermission::CheckPermission(Permission::WRITE_CONTACTS)) {
1630 TELEPHONY_LOGE("permission denied!");
1631 return TELEPHONY_ERR_PERMISSION_ERR;
1632 }
1633 if (simManager_ == nullptr) {
1634 TELEPHONY_LOGE("simManager_ is null");
1635 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1636 }
1637 return simManager_->AddIccDiallingNumbers(slotId, type, diallingNumber);
1638 }
1639
DelIccDiallingNumbers(int slotId,int type,const std::shared_ptr<DiallingNumbersInfo> & diallingNumber)1640 int32_t CoreService::DelIccDiallingNumbers(
1641 int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber)
1642 {
1643 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1644 TELEPHONY_LOGE("Non-system applications use system APIs!");
1645 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1646 }
1647 if (!TelephonyPermission::CheckPermission(Permission::WRITE_CONTACTS)) {
1648 TELEPHONY_LOGE("permission denied!");
1649 return TELEPHONY_ERR_PERMISSION_ERR;
1650 }
1651 if (simManager_ == nullptr) {
1652 TELEPHONY_LOGE("simManager_ is null");
1653 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1654 }
1655 return simManager_->DelIccDiallingNumbers(slotId, type, diallingNumber);
1656 }
1657
UpdateIccDiallingNumbers(int slotId,int type,const std::shared_ptr<DiallingNumbersInfo> & diallingNumber)1658 int32_t CoreService::UpdateIccDiallingNumbers(
1659 int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber)
1660 {
1661 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1662 TELEPHONY_LOGE("Non-system applications use system APIs!");
1663 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1664 }
1665 if (!TelephonyPermission::CheckPermission(Permission::WRITE_CONTACTS)) {
1666 TELEPHONY_LOGE("permission denied!");
1667 return TELEPHONY_ERR_PERMISSION_ERR;
1668 }
1669 if (simManager_ == nullptr) {
1670 TELEPHONY_LOGE("simManager_ is null");
1671 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1672 }
1673 return simManager_->UpdateIccDiallingNumbers(slotId, type, diallingNumber);
1674 }
1675
SetVoiceMailInfo(const int32_t slotId,const std::u16string & mailName,const std::u16string & mailNumber)1676 int32_t CoreService::SetVoiceMailInfo(
1677 const int32_t slotId, const std::u16string &mailName, const std::u16string &mailNumber)
1678 {
1679 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1680 TELEPHONY_LOGE("Non-system applications use system APIs!");
1681 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1682 }
1683 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1684 TELEPHONY_LOGE("permission denied!");
1685 return TELEPHONY_ERR_PERMISSION_ERR;
1686 }
1687 if (simManager_ == nullptr) {
1688 TELEPHONY_LOGE("simManager_ is null");
1689 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1690 }
1691 return simManager_->SetVoiceMailInfo(slotId, mailName, mailNumber);
1692 }
1693
GetMaxSimCount()1694 int32_t CoreService::GetMaxSimCount()
1695 {
1696 return SIM_SLOT_COUNT;
1697 }
1698
GetOpKey(int32_t slotId,std::u16string & opkey)1699 int32_t CoreService::GetOpKey(int32_t slotId, std::u16string &opkey)
1700 {
1701 if (simManager_ == nullptr) {
1702 TELEPHONY_LOGE("simManager_ is null");
1703 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1704 }
1705 return simManager_->GetOpKey(slotId, opkey);
1706 }
1707
GetOpKeyExt(int32_t slotId,std::u16string & opkeyExt)1708 int32_t CoreService::GetOpKeyExt(int32_t slotId, std::u16string &opkeyExt)
1709 {
1710 if (simManager_ == nullptr) {
1711 TELEPHONY_LOGE("simManager_ is null");
1712 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1713 }
1714 return simManager_->GetOpKeyExt(slotId, opkeyExt);
1715 }
1716
GetOpName(int32_t slotId,std::u16string & opname)1717 int32_t CoreService::GetOpName(int32_t slotId, std::u16string &opname)
1718 {
1719 if (simManager_ == nullptr) {
1720 TELEPHONY_LOGE("simManager_ is null");
1721 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1722 }
1723 return simManager_->GetOpName(slotId, opname);
1724 }
1725
SendEnvelopeCmd(int32_t slotId,const std::string & cmd)1726 int32_t CoreService::SendEnvelopeCmd(int32_t slotId, const std::string &cmd)
1727 {
1728 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1729 TELEPHONY_LOGE("Non-system applications use system APIs!");
1730 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1731 }
1732 if (simManager_ == nullptr) {
1733 TELEPHONY_LOGE("CoreService::SendEnvelopeCmd simManager_ is nullptr");
1734 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1735 }
1736 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1737 TELEPHONY_LOGE("CoreService::SendEnvelopeCmd, Permission denied!");
1738 return TELEPHONY_ERR_PERMISSION_ERR;
1739 }
1740 return simManager_->SendEnvelopeCmd(slotId, cmd);
1741 }
1742
SendTerminalResponseCmd(int32_t slotId,const std::string & cmd)1743 int32_t CoreService::SendTerminalResponseCmd(int32_t slotId, const std::string &cmd)
1744 {
1745 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1746 TELEPHONY_LOGE("Non-system applications use system APIs!");
1747 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1748 }
1749 if (simManager_ == nullptr) {
1750 TELEPHONY_LOGE("CoreService::SendEnvelopeCmd simManager_ is nullptr");
1751 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1752 }
1753 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1754 TELEPHONY_LOGE("CoreService::SendTerminalResponseCmd, Permission denied!");
1755 return TELEPHONY_ERR_PERMISSION_ERR;
1756 }
1757 return simManager_->SendTerminalResponseCmd(slotId, cmd);
1758 }
1759
SendCallSetupRequestResult(int32_t slotId,bool accept)1760 int32_t CoreService::SendCallSetupRequestResult(int32_t slotId, bool accept)
1761 {
1762 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1763 TELEPHONY_LOGE("Non-system applications use system APIs!");
1764 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1765 }
1766 if (simManager_ == nullptr) {
1767 TELEPHONY_LOGE("CoreService::SendEnvelopeCmd simManager_ is nullptr");
1768 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1769 }
1770 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1771 TELEPHONY_LOGE("CoreService::SendCallSetupRequestResult, Permission denied!");
1772 return TELEPHONY_ERR_PERMISSION_ERR;
1773 }
1774 return simManager_->SendCallSetupRequestResult(slotId, accept);
1775 }
1776
UnlockSimLock(int32_t slotId,const PersoLockInfo & lockInfo,LockStatusResponse & response)1777 int32_t CoreService::UnlockSimLock(int32_t slotId, const PersoLockInfo &lockInfo, LockStatusResponse &response)
1778 {
1779 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1780 TELEPHONY_LOGE("Non-system applications use system APIs!");
1781 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1782 }
1783 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1784 TELEPHONY_LOGE("permission denied!");
1785 return TELEPHONY_ERR_PERMISSION_ERR;
1786 }
1787 TELEPHONY_LOGI(
1788 "CoreService::UnlockSimLock(), lockType = %{public}d, slotId = %{public}d", lockInfo.lockType, slotId);
1789 if (simManager_ == nullptr) {
1790 TELEPHONY_LOGE("simManager_ is null");
1791 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1792 }
1793 return simManager_->UnlockSimLock(slotId, lockInfo, response);
1794 }
1795
GetImsRegStatus(int32_t slotId,ImsServiceType imsSrvType,ImsRegInfo & info)1796 int32_t CoreService::GetImsRegStatus(int32_t slotId, ImsServiceType imsSrvType, ImsRegInfo &info)
1797 {
1798 TELEPHONY_LOGI("CoreService::GetImsRegStatus --> slotId:%{public}d, imsSrvType:%{public}d", slotId, imsSrvType);
1799 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1800 TELEPHONY_LOGE("Non-system applications use system APIs!");
1801 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1802 }
1803 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1804 TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1805 return TELEPHONY_ERR_PERMISSION_ERR;
1806 }
1807 if (networkSearchManager_ == nullptr) {
1808 TELEPHONY_LOGE("failed! network search manager is nullptr!");
1809 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1810 }
1811 return networkSearchManager_->GetImsRegStatus(slotId, imsSrvType, info);
1812 }
1813
GetCellInfoList(int32_t slotId,std::vector<sptr<CellInformation>> & cellInfo)1814 int32_t CoreService::GetCellInfoList(int32_t slotId, std::vector<sptr<CellInformation>> &cellInfo)
1815 {
1816 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1817 TELEPHONY_LOGE("Non-system applications use system APIs!");
1818 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1819 }
1820 if (!TelephonyPermission::CheckPermission(Permission::CELL_LOCATION)) {
1821 return TELEPHONY_ERR_PERMISSION_ERR;
1822 }
1823 if (networkSearchManager_ == nullptr) {
1824 TELEPHONY_LOGE("networkSearchManager_ is null");
1825 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1826 }
1827 return networkSearchManager_->GetCellInfoList(slotId, cellInfo);
1828 }
1829
GetNeighboringCellInfoList(int32_t slotId,std::vector<sptr<CellInformation>> & cellInfo)1830 int32_t CoreService::GetNeighboringCellInfoList(int32_t slotId, std::vector<sptr<CellInformation>> &cellInfo)
1831 {
1832 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1833 TELEPHONY_LOGE("Non-system applications use system APIs!");
1834 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1835 }
1836 if (!TelephonyPermission::CheckPermission(Permission::CELL_LOCATION)) {
1837 return TELEPHONY_ERR_PERMISSION_ERR;
1838 }
1839 if (networkSearchManager_ == nullptr) {
1840 TELEPHONY_LOGE("networkSearchManager_ is null");
1841 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1842 }
1843 return networkSearchManager_->GetNeighboringCellInfoList(slotId, cellInfo);
1844 }
1845
SendUpdateCellLocationRequest(int32_t slotId)1846 int32_t CoreService::SendUpdateCellLocationRequest(int32_t slotId)
1847 {
1848 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1849 TELEPHONY_LOGE("Non-system applications use system APIs!");
1850 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1851 }
1852 if (!TelephonyPermission::CheckPermission(Permission::CELL_LOCATION)) {
1853 TELEPHONY_LOGE("CoreService::SendUpdateCellLocationRequest, Permission denied!");
1854 return TELEPHONY_ERR_PERMISSION_ERR;
1855 }
1856 if (networkSearchManager_ == nullptr) {
1857 TELEPHONY_LOGE("networkSearchManager_ is null");
1858 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1859 }
1860 return networkSearchManager_->SendUpdateCellLocationRequest(slotId);
1861 }
1862
HasOperatorPrivileges(const int32_t slotId,const sptr<IRawParcelCallback> & callback)1863 int32_t CoreService::HasOperatorPrivileges(const int32_t slotId, const sptr<IRawParcelCallback> &callback)
1864 {
1865 if (simManager_ == nullptr) {
1866 TELEPHONY_LOGE("simManager_ is null");
1867 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1868 }
1869 if (callback == nullptr) {
1870 TELEPHONY_LOGE("HasOperatorPrivileges no callback");
1871 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1872 }
1873 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, callback]() {
1874 bool hasOperatorPrivileges = false;
1875 MessageParcel dataTmp;
1876 auto simManager = wp.lock();
1877 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
1878 if (simManager) {
1879 ret = simManager->HasOperatorPrivileges(slotId, hasOperatorPrivileges);
1880 }
1881 callback->Transfer([=](MessageParcel &data) {
1882 data.WriteInt32(ret);
1883 if (ret == TELEPHONY_ERR_SUCCESS) {
1884 data.WriteBool(hasOperatorPrivileges);
1885 }
1886 }, dataTmp);
1887 });
1888 return TELEPHONY_ERR_SUCCESS;
1889 }
1890
SimAuthentication(int32_t slotId,AuthType authType,const std::string & authData,SimAuthenticationResponse & response)1891 int32_t CoreService::SimAuthentication(
1892 int32_t slotId, AuthType authType, const std::string &authData, SimAuthenticationResponse &response)
1893 {
1894 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1895 TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1896 return TELEPHONY_ERR_PERMISSION_ERR;
1897 }
1898 if (simManager_ == nullptr) {
1899 TELEPHONY_LOGE("simManager_ is null");
1900 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1901 }
1902 return simManager_->SimAuthentication(slotId, authType, authData, response);
1903 }
1904
RegisterImsRegInfoCallback(int32_t slotId,ImsServiceType imsSrvType,const sptr<ImsRegInfoCallback> & callback)1905 int32_t CoreService::RegisterImsRegInfoCallback(
1906 int32_t slotId, ImsServiceType imsSrvType, const sptr<ImsRegInfoCallback> &callback)
1907 {
1908 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1909 TELEPHONY_LOGE("Non-system applications use system APIs!");
1910 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1911 }
1912 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1913 TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1914 return TELEPHONY_ERR_PERMISSION_ERR;
1915 }
1916 if (networkSearchManager_ == nullptr) {
1917 TELEPHONY_LOGE("failed! network search manager is nullptr!");
1918 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1919 }
1920 return networkSearchManager_->RegisterImsRegInfoCallback(slotId, imsSrvType, GetTokenID(), callback);
1921 }
1922
UnregisterImsRegInfoCallback(int32_t slotId,ImsServiceType imsSrvType)1923 int32_t CoreService::UnregisterImsRegInfoCallback(int32_t slotId, ImsServiceType imsSrvType)
1924 {
1925 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1926 TELEPHONY_LOGE("Non-system applications use system APIs!");
1927 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1928 }
1929 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1930 TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1931 return TELEPHONY_ERR_PERMISSION_ERR;
1932 }
1933 if (networkSearchManager_ == nullptr) {
1934 TELEPHONY_LOGE("failed! network search manager is nullptr!");
1935 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1936 }
1937 return networkSearchManager_->UnregisterImsRegInfoCallback(slotId, imsSrvType, GetTokenID());
1938 }
1939
GetBasebandVersion(int32_t slotId,std::string & version)1940 int32_t CoreService::GetBasebandVersion(int32_t slotId, std::string &version)
1941 {
1942 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1943 TELEPHONY_LOGE("Non-system applications use system APIs!");
1944 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1945 }
1946 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1947 TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1948 return TELEPHONY_ERR_PERMISSION_ERR;
1949 }
1950 if (networkSearchManager_ == nullptr) {
1951 TELEPHONY_LOGE("networkSearchManager_ is null");
1952 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1953 }
1954 return networkSearchManager_->GetBasebandVersion(slotId, version);
1955 }
1956
FactoryReset(int32_t slotId)1957 int32_t CoreService::FactoryReset(int32_t slotId)
1958 {
1959 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1960 TELEPHONY_LOGE("Non-system applications use system APIs!");
1961 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1962 }
1963 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1964 TELEPHONY_LOGE("Permission denied!");
1965 return TELEPHONY_ERR_PERMISSION_ERR;
1966 }
1967 if (networkSearchManager_ == nullptr) {
1968 TELEPHONY_LOGE("networkSearchManager_ is null");
1969 return TELEPHONY_ERR_LOCAL_PTR_NULL;
1970 }
1971 return networkSearchManager_->FactoryReset(slotId);
1972 }
1973
Dump(std::int32_t fd,const std::vector<std::u16string> & args)1974 int32_t CoreService::Dump(std::int32_t fd, const std::vector<std::u16string> &args)
1975 {
1976 if (fd < 0) {
1977 TELEPHONY_LOGE("dump fd invalid");
1978 return TELEPHONY_ERR_ARGUMENT_INVALID;
1979 }
1980 std::vector<std::string> argsInStr;
1981 for (const auto &arg : args) {
1982 TELEPHONY_LOGI("Dump args: %s", Str16ToStr8(arg).c_str());
1983 argsInStr.emplace_back(Str16ToStr8(arg));
1984 }
1985 std::string result;
1986 CoreServiceDumpHelper dumpHelper;
1987 if (dumpHelper.Dump(argsInStr, result)) {
1988 TELEPHONY_LOGI("%s", result.c_str());
1989 std::int32_t ret = dprintf(fd, "%s", result.c_str());
1990 if (ret < 0) {
1991 TELEPHONY_LOGE("dprintf to dump fd failed");
1992 return TELEPHONY_ERROR;
1993 }
1994 return 0;
1995 }
1996 TELEPHONY_LOGW("dumpHelper failed");
1997 return TELEPHONY_ERROR;
1998 }
1999
GetBindTime()2000 int64_t CoreService::GetBindTime()
2001 {
2002 return bindTime_;
2003 }
2004
GetEndTime()2005 int64_t CoreService::GetEndTime()
2006 {
2007 return endTime_;
2008 }
2009
GetSpendTime()2010 int64_t CoreService::GetSpendTime()
2011 {
2012 return endTime_ - bindTime_;
2013 }
2014
GetNrSsbIdInfo(int32_t slotId,const std::shared_ptr<NrSsbInformation> & nrSsbInformation)2015 int32_t CoreService::GetNrSsbIdInfo(int32_t slotId, const std::shared_ptr<NrSsbInformation> &nrSsbInformation)
2016 {
2017 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
2018 TELEPHONY_LOGE("Non-system applications use system APIs!");
2019 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
2020 }
2021 if (!TelephonyPermission::CheckPermission(Permission::CELL_LOCATION)) {
2022 TELEPHONY_LOGE("Do not support Permission::CELL_LOCATION");
2023 return TELEPHONY_ERR_PERMISSION_ERR;
2024 }
2025 if (networkSearchManager_ == nullptr) {
2026 TELEPHONY_LOGE("networkSearchManager_ is null");
2027 return TELEPHONY_ERR_LOCAL_PTR_NULL;
2028 }
2029 return networkSearchManager_->GetNrSsbId(slotId, nrSsbInformation);
2030 }
2031
IsAllowedInsertApn(std::string & value)2032 bool CoreService::IsAllowedInsertApn(std::string &value)
2033 {
2034 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
2035 TELEPHONY_LOGE("Non-system applications use system APIs!");
2036 return true;
2037 }
2038 if (TELEPHONY_EXT_WRAPPER.isAllowedInsertApn_ != nullptr) {
2039 return TELEPHONY_EXT_WRAPPER.isAllowedInsertApn_(value);
2040 }
2041 return true;
2042 }
2043
GetTargetOpkey(int32_t slotId,std::u16string & opkey)2044 int32_t CoreService::GetTargetOpkey(int32_t slotId, std::u16string &opkey)
2045 {
2046 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
2047 TELEPHONY_LOGE("Non-system applications use system APIs!");
2048 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
2049 }
2050 if (TELEPHONY_EXT_WRAPPER.getTargetOpkey_ != nullptr) {
2051 TELEPHONY_EXT_WRAPPER.getTargetOpkey_(slotId, opkey);
2052 }
2053 return TELEPHONY_ERR_SUCCESS;
2054 }
2055
GetOpkeyVersion(std::string & versionInfo)2056 int32_t CoreService::GetOpkeyVersion(std::string &versionInfo)
2057 {
2058 if (TELEPHONY_EXT_WRAPPER.getOpkeyVersion_ != nullptr) {
2059 TELEPHONY_EXT_WRAPPER.getOpkeyVersion_(versionInfo);
2060 return TELEPHONY_ERR_SUCCESS;
2061 }
2062 return TELEPHONY_ERR_LOCAL_PTR_NULL;
2063 }
2064
GetOpnameVersion(std::string & versionInfo)2065 int32_t CoreService::GetOpnameVersion(std::string &versionInfo)
2066 {
2067 if (TELEPHONY_EXT_WRAPPER.getOpnameVersion_ != nullptr) {
2068 TELEPHONY_EXT_WRAPPER.getOpnameVersion_(versionInfo);
2069 return TELEPHONY_ERR_SUCCESS;
2070 }
2071 return TELEPHONY_ERR_LOCAL_PTR_NULL;
2072 }
2073
GetSimIO(int32_t slotId,int32_t command,int32_t fileId,const std::string & data,const std::string & path,SimAuthenticationResponse & response)2074 int32_t CoreService::GetSimIO(int32_t slotId, int32_t command,
2075 int32_t fileId, const std::string &data, const std::string &path, SimAuthenticationResponse &response)
2076 {
2077 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
2078 TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
2079 return TELEPHONY_ERR_PERMISSION_ERR;
2080 }
2081 if (simManager_ == nullptr) {
2082 TELEPHONY_LOGE("simManager_ is null");
2083 return TELEPHONY_ERR_LOCAL_PTR_NULL;
2084 }
2085 return simManager_->GetSimIO(slotId, command, fileId, data, path, response);
2086 }
2087
GetAllSimAccountInfoList(std::vector<IccAccountInfo> & iccAccountInfoList)2088 int32_t CoreService::GetAllSimAccountInfoList(std::vector<IccAccountInfo> &iccAccountInfoList)
2089 {
2090 bool denied = false;
2091 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
2092 TELEPHONY_LOGE("permission denied!");
2093 denied = true;
2094 }
2095 if (simManager_ == nullptr) {
2096 TELEPHONY_LOGE("simManager_ is null");
2097 return TELEPHONY_ERR_LOCAL_PTR_NULL;
2098 }
2099 return simManager_->GetAllSimAccountInfoList(denied, iccAccountInfoList);
2100 }
2101
GetSimLabel(int32_t slotId,SimLabel & simLabel,const sptr<IRawParcelCallback> & callback)2102 int32_t CoreService::GetSimLabel(int32_t slotId, SimLabel &simLabel, const sptr<IRawParcelCallback> &callback)
2103 {
2104 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
2105 TELEPHONY_LOGE("Non-system applications use system APIs!");
2106 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
2107 }
2108 if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
2109 TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
2110 return TELEPHONY_ERR_PERMISSION_ERR;
2111 }
2112 if (simManager_ == nullptr) {
2113 TELEPHONY_LOGE("simManager_ is null");
2114 return TELEPHONY_ERR_LOCAL_PTR_NULL;
2115 }
2116 AsyncSimGeneralExecute([wp = std::weak_ptr<ISimManager>(simManager_), slotId, callback]() {
2117 SimLabel simLabel;
2118 MessageParcel dataTmp;
2119 auto simManager = wp.lock();
2120 int32_t ret = TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
2121 if (simManager) {
2122 ret = simManager->GetSimLabel(slotId, simLabel);
2123 }
2124 callback->Transfer([=](MessageParcel &data) {
2125 data.WriteInt32(ret);
2126 if (ret == TELEPHONY_ERR_SUCCESS) {
2127 data.WriteInt32(static_cast<int32_t>(simLabel.simType));
2128 data.WriteInt32(simLabel.index);
2129 }
2130 }, dataTmp);
2131 });
2132 return TELEPHONY_ERR_SUCCESS;
2133 }
2134
SendApduData(int32_t slotId,const std::u16string & aid,const EsimApduData & apduData,ResponseEsimResult & responseResult)2135 int32_t CoreService::SendApduData(
2136 int32_t slotId, const std::u16string &aid, const EsimApduData &apduData, ResponseEsimResult &responseResult)
2137 {
2138 if (!TelephonyPermission::CheckCallerIsSystemApp()) {
2139 TELEPHONY_LOGE("Non-system applications use system APIs!");
2140 return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
2141 }
2142 if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_ESIM_STATE)) {
2143 TELEPHONY_LOGE("Failed because no permission:SET_TELEPHONY_ESIM_STATE");
2144 return TELEPHONY_ERR_PERMISSION_ERR;
2145 }
2146 if (esimManager_ == nullptr) {
2147 TELEPHONY_LOGE("esimManager_ is null");
2148 return TELEPHONY_ERR_LOCAL_PTR_NULL;
2149 }
2150 OHOS::Telephony::ResponseEsimInnerResult result;
2151 int32_t res = esimManager_->SendApduData(slotId, aid, apduData, result);
2152 responseResult.resultCode_ = static_cast<EsimResultCode>(result.resultCode_);
2153 responseResult.response_ = result.response_;
2154 responseResult.sw1_ = result.sw1_;
2155 responseResult.sw2_ = result.sw2_;
2156
2157 return res;
2158 }
2159 } // namespace Telephony
2160 } // namespace OHOS
2161