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 "ffrt_inner.h"
21 #include "ims_core_service_client.h"
22 #include "ipc_skeleton.h"
23 #include "network_search_manager.h"
24 #include "network_search_types.h"
25 #include "parameter.h"
26 #include "sim_manager.h"
27 #include "string_ex.h"
28 #include "system_ability_definition.h"
29 #include "telephony_common_utils.h"
30 #include "telephony_errors.h"
31 #include "telephony_ext_wrapper.h"
32 #include "telephony_log_wrapper.h"
33 #include "telephony_permission.h"
34 
35 namespace OHOS {
36 namespace Telephony {
37 namespace {
38 const int32_t MAX_IPC_THREAD_NUM = 6;
39 const int32_t MAX_FFRT_THREAD_NUM = 32;
40 }
41 const bool G_REGISTER_RESULT =
42     SystemAbility::MakeAndRegisterAbility(DelayedSingleton<CoreService>::GetInstance().get());
43 
CoreService()44 CoreService::CoreService() : SystemAbility(TELEPHONY_CORE_SERVICE_SYS_ABILITY_ID, true) {}
45 
~CoreService()46 CoreService::~CoreService() {}
47 
OnStart()48 void CoreService::OnStart()
49 {
50     bindTime_ =
51         std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
52             .count();
53     if (state_ == ServiceRunningState::STATE_RUNNING) {
54         TELEPHONY_LOGE("CoreService has already started.");
55         return;
56     }
57 
58     if (!registerToService_) {
59         bool ret = Publish(DelayedSingleton<CoreService>::GetInstance().get());
60         if (!ret) {
61             TELEPHONY_LOGE("CoreService::Init Publish failed!");
62             return;
63         }
64         registerToService_ = true;
65     }
66     IPCSkeleton::SetMaxWorkThreadNum(MAX_IPC_THREAD_NUM);
67     int ffrtRet = ffrt_set_cpu_worker_max_num(ffrt::qos_default, MAX_FFRT_THREAD_NUM);
68     if (ffrtRet == -1) {
69         TELEPHONY_LOGE("ffrt_set_cpu_worker_max_num fail");
70     }
71     if (!Init()) {
72         TELEPHONY_LOGE("failed to init CoreService");
73         return;
74     }
75     state_ = ServiceRunningState::STATE_RUNNING;
76     endTime_ =
77         std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch())
78             .count();
79     TELEPHONY_LOGI("CoreService start success");
80 }
81 
Init()82 bool CoreService::Init()
83 {
84     TELEPHONY_LOGI("CoreService::Init");
85 #ifdef OHOS_BUILD_ENABLE_TELEPHONY_EXT
86     TELEPHONY_EXT_WRAPPER.InitTelephonyExtWrapper();
87 #endif
88     telRilManager_ = std::make_shared<TelRilManager>();
89     if (telRilManager_ != nullptr) {
90         if (!telRilManager_->OnInit()) {
91             TELEPHONY_LOGE("TelRilManager init is failed!");
92             return false;
93         }
94     }
95     CoreManagerInner::GetInstance().SetTelRilMangerObj(telRilManager_);
96     int32_t slotCount = GetMaxSimCount();
97     simManager_ = std::make_shared<SimManager>(telRilManager_);
98     if (simManager_ != nullptr) {
99         simManager_->OnInit(slotCount);
100     } else {
101         TELEPHONY_LOGE("SimManager init is failed!");
102         return false;
103     }
104     // connect ims_service
105     DelayedSingleton<ImsCoreServiceClient>::GetInstance()->Init();
106     networkSearchManager_ = std::make_shared<NetworkSearchManager>(telRilManager_, simManager_);
107     if (networkSearchManager_ != nullptr) {
108         if (!networkSearchManager_->OnInit()) {
109             TELEPHONY_LOGE("NetworkSearchManager init is failed!");
110             return false;
111         }
112     }
113     CoreManagerInner::GetInstance().OnInit(networkSearchManager_, simManager_, telRilManager_);
114     for (int32_t slotId = 0; slotId < SIM_SLOT_COUNT; slotId++) {
115         networkSearchManager_->InitAirplaneMode(slotId);
116     }
117     TELEPHONY_LOGI("CoreService::Init success");
118     return true;
119 }
120 
OnStop()121 void CoreService::OnStop()
122 {
123     state_ = ServiceRunningState::STATE_NOT_START;
124     registerToService_ = false;
125     DelayedSingleton<ImsCoreServiceClient>::GetInstance()->UnInit();
126     telRilManager_->DeInit();
127     TELEPHONY_LOGI("CoreService Stop success");
128 }
129 
GetServiceRunningState()130 int32_t CoreService::GetServiceRunningState()
131 {
132     return static_cast<int32_t>(state_);
133 }
134 
GetPsRadioTech(int32_t slotId,int32_t & psRadioTech)135 int32_t CoreService::GetPsRadioTech(int32_t slotId, int32_t &psRadioTech)
136 {
137     if (!TelephonyPermission::CheckPermission(Permission::GET_NETWORK_INFO)) {
138         TELEPHONY_LOGE("permission denied!");
139         return TELEPHONY_ERR_PERMISSION_ERR;
140     }
141     if (networkSearchManager_ == nullptr) {
142         TELEPHONY_LOGE("networkSearchManager_ is null");
143         return TELEPHONY_ERR_LOCAL_PTR_NULL;
144     }
145     return networkSearchManager_->GetPsRadioTech(slotId, psRadioTech);
146 }
147 
GetCsRadioTech(int32_t slotId,int32_t & csRadioTech)148 int32_t CoreService::GetCsRadioTech(int32_t slotId, int32_t &csRadioTech)
149 {
150     if (!TelephonyPermission::CheckPermission(Permission::GET_NETWORK_INFO)) {
151         TELEPHONY_LOGE("permission denied!");
152         return TELEPHONY_ERR_PERMISSION_ERR;
153     }
154     if (networkSearchManager_ == nullptr) {
155         TELEPHONY_LOGE("networkSearchManager_ is null");
156         return TELEPHONY_ERR_LOCAL_PTR_NULL;
157     }
158     return networkSearchManager_->GetCsRadioTech(slotId, csRadioTech);
159 }
160 
SetNetworkSelectionMode(int32_t slotId,int32_t selectMode,const sptr<NetworkInformation> & networkInformation,bool resumeSelection,const sptr<INetworkSearchCallback> & callback)161 int32_t CoreService::SetNetworkSelectionMode(int32_t slotId, int32_t selectMode,
162     const sptr<NetworkInformation> &networkInformation, bool resumeSelection,
163     const sptr<INetworkSearchCallback> &callback)
164 {
165     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
166         TELEPHONY_LOGE("Non-system applications use system APIs!");
167         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
168     }
169     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
170         TELEPHONY_LOGE("permission denied!");
171         return TELEPHONY_ERR_PERMISSION_ERR;
172     }
173     if (networkSearchManager_ == nullptr) {
174         TELEPHONY_LOGE("networkSearchManager_ is null");
175         return TELEPHONY_ERR_LOCAL_PTR_NULL;
176     }
177     TELEPHONY_LOGI("CoreService::SetNetworkSelectionMode selectMode:%{public}d", selectMode);
178     return networkSearchManager_->SetNetworkSelectionMode(
179         slotId, selectMode, networkInformation, resumeSelection, callback);
180 }
181 
GetSignalInfoList(int32_t slotId,std::vector<sptr<SignalInformation>> & signals)182 int32_t CoreService::GetSignalInfoList(int32_t slotId, std::vector<sptr<SignalInformation>> &signals)
183 {
184     if (networkSearchManager_ == nullptr) {
185         TELEPHONY_LOGE("networkSearchManager_ is null");
186         return TELEPHONY_ERR_LOCAL_PTR_NULL;
187     }
188     return networkSearchManager_->GetSignalInfoList(slotId, signals);
189 }
190 
GetOperatorNumeric(int32_t slotId)191 std::u16string CoreService::GetOperatorNumeric(int32_t slotId)
192 {
193     if (networkSearchManager_ == nullptr) {
194         TELEPHONY_LOGE("networkSearchManager_ is null");
195         return std::u16string();
196     }
197     return networkSearchManager_->GetOperatorNumeric(slotId);
198 }
199 
GetResidentNetworkNumeric(int32_t slotId)200 std::string CoreService::GetResidentNetworkNumeric(int32_t slotId)
201 {
202     if (networkSearchManager_ == nullptr) {
203         TELEPHONY_LOGE("networkSearchManager_ is null");
204         return "";
205     }
206     return networkSearchManager_->GetResidentNetworkNumeric(slotId);
207 }
208 
GetOperatorName(int32_t slotId,std::u16string & operatorName)209 int32_t CoreService::GetOperatorName(int32_t slotId, std::u16string &operatorName)
210 {
211     if (networkSearchManager_ == nullptr) {
212         TELEPHONY_LOGE("networkSearchManager_ is null");
213         return TELEPHONY_ERR_LOCAL_PTR_NULL;
214     }
215     return networkSearchManager_->GetOperatorName(slotId, operatorName);
216 }
217 
GetNetworkState(int32_t slotId,sptr<NetworkState> & networkState)218 int32_t CoreService::GetNetworkState(int32_t slotId, sptr<NetworkState> &networkState)
219 {
220     if (!TelephonyPermission::CheckPermission(Permission::GET_NETWORK_INFO)) {
221         TELEPHONY_LOGE("permission denied!");
222         return TELEPHONY_ERR_PERMISSION_ERR;
223     }
224     if (networkSearchManager_ == nullptr) {
225         TELEPHONY_LOGE("networkSearchManager_ is null");
226         return TELEPHONY_ERR_LOCAL_PTR_NULL;
227     }
228     return networkSearchManager_->GetNetworkStatus(slotId, networkState);
229 }
230 
SetRadioState(int32_t slotId,bool isOn,const sptr<INetworkSearchCallback> & callback)231 int32_t CoreService::SetRadioState(int32_t slotId, bool isOn, const sptr<INetworkSearchCallback> &callback)
232 {
233     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
234         TELEPHONY_LOGE("Non-system applications use system APIs!");
235         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
236     }
237     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
238         TELEPHONY_LOGE("permission denied!");
239         return TELEPHONY_ERR_PERMISSION_ERR;
240     }
241     if (networkSearchManager_ == nullptr) {
242         TELEPHONY_LOGE("networkSearchManager_ is null");
243         return TELEPHONY_ERR_LOCAL_PTR_NULL;
244     }
245     TELEPHONY_LOGI("CoreService::SetRadioState --> slotId:%{public}d, isOn:%{public}d", slotId, isOn);
246     return networkSearchManager_->SetRadioState(slotId, isOn, 0, callback);
247 }
248 
GetRadioState(int32_t slotId,const sptr<INetworkSearchCallback> & callback)249 int32_t CoreService::GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
250 {
251     if (!TelephonyPermission::CheckPermission(Permission::GET_NETWORK_INFO)) {
252         TELEPHONY_LOGE("permission denied!");
253         return TELEPHONY_ERR_PERMISSION_ERR;
254     }
255     if (networkSearchManager_ == nullptr) {
256         TELEPHONY_LOGE("networkSearchManager_ is null");
257         return TELEPHONY_ERR_LOCAL_PTR_NULL;
258     }
259     return networkSearchManager_->GetRadioState(slotId, callback);
260 }
261 
GetIsoCountryCodeForNetwork(int32_t slotId,std::u16string & countryCode)262 int32_t CoreService::GetIsoCountryCodeForNetwork(int32_t slotId, std::u16string &countryCode)
263 {
264     if (networkSearchManager_ == nullptr) {
265         TELEPHONY_LOGE("networkSearchManager_ is null");
266         return TELEPHONY_ERR_LOCAL_PTR_NULL;
267     }
268     return networkSearchManager_->GetIsoCountryCodeForNetwork(slotId, countryCode);
269 }
270 
GetImei(int32_t slotId,std::u16string & imei)271 int32_t CoreService::GetImei(int32_t slotId, std::u16string &imei)
272 {
273     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
274         TELEPHONY_LOGE("Non-system applications use system APIs!");
275         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
276     }
277     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
278         TELEPHONY_LOGE("permission denied!");
279         return TELEPHONY_ERR_PERMISSION_ERR;
280     }
281     if (networkSearchManager_ == nullptr) {
282         TELEPHONY_LOGE("networkSearchManager_ is null");
283         return TELEPHONY_ERR_LOCAL_PTR_NULL;
284     }
285     return networkSearchManager_->GetImei(slotId, imei);
286 }
287 
GetImeiSv(int32_t slotId,std::u16string & imeiSv)288 int32_t CoreService::GetImeiSv(int32_t slotId, std::u16string &imeiSv)
289 {
290     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
291         TELEPHONY_LOGE("Non-system applications use system APIs!");
292         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
293     }
294     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
295         TELEPHONY_LOGE("permission denied!");
296         return TELEPHONY_ERR_PERMISSION_ERR;
297     }
298     if (networkSearchManager_ == nullptr) {
299         TELEPHONY_LOGE("networkSearchManager_ is null");
300         return TELEPHONY_ERR_LOCAL_PTR_NULL;
301     }
302     return networkSearchManager_->GetImeiSv(slotId, imeiSv);
303 }
304 
GetMeid(int32_t slotId,std::u16string & meid)305 int32_t CoreService::GetMeid(int32_t slotId, std::u16string &meid)
306 {
307     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
308         TELEPHONY_LOGE("Non-system applications use system APIs!");
309         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
310     }
311     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
312         TELEPHONY_LOGE("permission denied!");
313         return TELEPHONY_ERR_PERMISSION_ERR;
314     }
315     if (networkSearchManager_ == nullptr) {
316         TELEPHONY_LOGE("networkSearchManager_ is null");
317         return TELEPHONY_ERR_LOCAL_PTR_NULL;
318     }
319     return networkSearchManager_->GetMeid(slotId, meid);
320 }
321 
GetUniqueDeviceId(int32_t slotId,std::u16string & deviceId)322 int32_t CoreService::GetUniqueDeviceId(int32_t slotId, std::u16string &deviceId)
323 {
324     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
325         TELEPHONY_LOGE("Non-system applications use system APIs!");
326         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
327     }
328     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
329         TELEPHONY_LOGE("permission denied!");
330         return TELEPHONY_ERR_PERMISSION_ERR;
331     }
332     if (networkSearchManager_ == nullptr) {
333         TELEPHONY_LOGE("networkSearchManager_ is null");
334         return TELEPHONY_ERR_LOCAL_PTR_NULL;
335     }
336     return networkSearchManager_->GetUniqueDeviceId(slotId, deviceId);
337 }
338 
IsNrSupported(int32_t slotId)339 bool CoreService::IsNrSupported(int32_t slotId)
340 {
341     if (networkSearchManager_ == nullptr) {
342         TELEPHONY_LOGE("networkSearchManager_ is null");
343         return false;
344     }
345     return networkSearchManager_->IsNrSupported(slotId);
346 }
347 
SetNrOptionMode(int32_t slotId,int32_t mode,const sptr<INetworkSearchCallback> & callback)348 int32_t CoreService::SetNrOptionMode(int32_t slotId, int32_t mode, const sptr<INetworkSearchCallback> &callback)
349 {
350     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
351         TELEPHONY_LOGE("Non-system applications use system APIs!");
352         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
353     }
354     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
355         TELEPHONY_LOGE("permission denied!");
356         return TELEPHONY_ERR_PERMISSION_ERR;
357     }
358     if (networkSearchManager_ == nullptr) {
359         TELEPHONY_LOGE("networkSearchManager_ is null");
360         return TELEPHONY_ERR_LOCAL_PTR_NULL;
361     }
362     return networkSearchManager_->SetNrOptionMode(slotId, mode, callback);
363 }
364 
GetNrOptionMode(int32_t slotId,const sptr<INetworkSearchCallback> & callback)365 int32_t CoreService::GetNrOptionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
366 {
367     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
368         TELEPHONY_LOGE("Non-system applications use system APIs!");
369         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
370     }
371     if (networkSearchManager_ == nullptr) {
372         TELEPHONY_LOGE("networkSearchManager_ is null");
373         return TELEPHONY_ERR_LOCAL_PTR_NULL;
374     }
375     return networkSearchManager_->GetNrOptionMode(slotId, callback);
376 }
377 
HasSimCard(int32_t slotId,bool & hasSimCard)378 int32_t CoreService::HasSimCard(int32_t slotId, bool &hasSimCard)
379 {
380     TELEPHONY_LOGD("CoreService::HasSimCard(), slotId = %{public}d", slotId);
381     if (simManager_ == nullptr) {
382         TELEPHONY_LOGE("simManager_ is null");
383         return TELEPHONY_ERR_LOCAL_PTR_NULL;
384     }
385     return simManager_->HasSimCard(slotId, hasSimCard);
386 }
387 
GetSimState(int32_t slotId,SimState & simState)388 int32_t CoreService::GetSimState(int32_t slotId, SimState &simState)
389 {
390     TELEPHONY_LOGD("CoreService::GetSimState(), slotId = %{public}d", slotId);
391     if (simManager_ == nullptr) {
392         TELEPHONY_LOGE("simManager_ is null");
393         return TELEPHONY_ERR_LOCAL_PTR_NULL;
394     }
395 
396     return simManager_->GetSimState(slotId, simState);
397 }
398 
GetDsdsMode(int32_t & dsdsMode)399 int32_t CoreService::GetDsdsMode(int32_t &dsdsMode)
400 {
401     TELEPHONY_LOGI("CoreService::GetDsdsMode()");
402     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
403         TELEPHONY_LOGE("Non-system applications use system APIs!");
404         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
405     }
406     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
407         TELEPHONY_LOGE("permission denied!");
408         return TELEPHONY_ERR_PERMISSION_ERR;
409     }
410     if (simManager_ == nullptr) {
411         TELEPHONY_LOGE("simManager_ is null");
412         return TELEPHONY_ERR_LOCAL_PTR_NULL;
413     }
414 
415     return simManager_->GetDsdsMode(dsdsMode);
416 }
417 
GetCardType(int32_t slotId,CardType & cardType)418 int32_t CoreService::GetCardType(int32_t slotId, CardType &cardType)
419 {
420     TELEPHONY_LOGD("CoreService::GetCardType(), slotId = %{public}d", slotId);
421     if (simManager_ == nullptr) {
422         TELEPHONY_LOGE("simManager_ is null");
423         return TELEPHONY_ERR_LOCAL_PTR_NULL;
424     }
425 
426     return simManager_->GetCardType(slotId, cardType);
427 }
428 
GetISOCountryCodeForSim(int32_t slotId,std::u16string & countryCode)429 int32_t CoreService::GetISOCountryCodeForSim(int32_t slotId, std::u16string &countryCode)
430 {
431     TELEPHONY_LOGD("CoreService::GetISOCountryCodeForSim(), slotId = %{public}d", slotId);
432     if (simManager_ == nullptr) {
433         TELEPHONY_LOGE("simManager_ is null");
434         return TELEPHONY_ERR_LOCAL_PTR_NULL;
435     }
436 
437     return simManager_->GetISOCountryCodeForSim(slotId, countryCode);
438 }
439 
GetSimSpn(int32_t slotId,std::u16string & spn)440 int32_t CoreService::GetSimSpn(int32_t slotId, std::u16string &spn)
441 {
442     TELEPHONY_LOGD("CoreService::GetSimSpn(), slotId = %{public}d", slotId);
443     if (simManager_ == nullptr) {
444         TELEPHONY_LOGE("simManager_ is null");
445         return TELEPHONY_ERR_LOCAL_PTR_NULL;
446     }
447     return simManager_->GetSimSpn(slotId, spn);
448 }
449 
GetSimIccId(int32_t slotId,std::u16string & iccId)450 int32_t CoreService::GetSimIccId(int32_t slotId, std::u16string &iccId)
451 {
452     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
453         TELEPHONY_LOGE("Non-system applications use system APIs!");
454         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
455     }
456     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
457         TELEPHONY_LOGE("permission denied!");
458         return TELEPHONY_ERR_PERMISSION_ERR;
459     }
460     TELEPHONY_LOGD("CoreService::GetSimIccId(), slotId = %{public}d", slotId);
461     if (simManager_ == nullptr) {
462         TELEPHONY_LOGE("simManager_ is null");
463         return TELEPHONY_ERR_LOCAL_PTR_NULL;
464     }
465     return simManager_->GetSimIccId(slotId, iccId);
466 }
467 
GetSimOperatorNumeric(int32_t slotId,std::u16string & operatorNumeric)468 int32_t CoreService::GetSimOperatorNumeric(int32_t slotId, std::u16string &operatorNumeric)
469 {
470     TELEPHONY_LOGD("CoreService::GetSimOperatorNumeric(), slotId = %{public}d", slotId);
471     if (simManager_ == nullptr) {
472         TELEPHONY_LOGE("simManager_ is null");
473         return TELEPHONY_ERR_LOCAL_PTR_NULL;
474     }
475     return simManager_->GetSimOperatorNumeric(slotId, operatorNumeric);
476 }
477 
GetIMSI(int32_t slotId,std::u16string & imsi)478 int32_t CoreService::GetIMSI(int32_t slotId, std::u16string &imsi)
479 {
480     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
481         TELEPHONY_LOGE("Non-system applications use system APIs!");
482         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
483     }
484     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
485         TELEPHONY_LOGE("permission denied!");
486         return TELEPHONY_ERR_PERMISSION_ERR;
487     }
488     TELEPHONY_LOGD("CoreService::GetIMSI(), slotId = %{public}d", slotId);
489     if (simManager_ == nullptr) {
490         TELEPHONY_LOGE("simManager_ is null");
491         return TELEPHONY_ERR_LOCAL_PTR_NULL;
492     }
493     return simManager_->GetIMSI(slotId, imsi);
494 }
495 
IsCTSimCard(int32_t slotId,bool & isCTSimCard)496 int32_t CoreService::IsCTSimCard(int32_t slotId, bool &isCTSimCard)
497 {
498     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
499         TELEPHONY_LOGE("Non-system applications use system APIs!");
500         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
501     }
502     TELEPHONY_LOGD("CoreService::IsCTSimCard(), slotId = %{public}d", slotId);
503     if (simManager_ == nullptr) {
504         TELEPHONY_LOGE("simManager_ is null");
505         return TELEPHONY_ERR_LOCAL_PTR_NULL;
506     }
507     return simManager_->IsCTSimCard(slotId, isCTSimCard);
508 }
509 
IsSimActive(int32_t slotId)510 bool CoreService::IsSimActive(int32_t slotId)
511 {
512     TELEPHONY_LOGD("CoreService::IsSimActive(), slotId = %{public}d", slotId);
513     if (simManager_ == nullptr) {
514         TELEPHONY_LOGE("simManager_ is null");
515         return false;
516     }
517     return simManager_->IsSimActive(slotId);
518 }
519 
GetSlotId(int32_t simId)520 int32_t CoreService::GetSlotId(int32_t simId)
521 {
522     TELEPHONY_LOGD("CoreService::GetSlotId(), simId = %{public}d", simId);
523     if (simManager_ == nullptr) {
524         TELEPHONY_LOGE("CoreService::GetSlotId(), simManager_ is nullptr!");
525         return TELEPHONY_ERR_LOCAL_PTR_NULL;
526     }
527     return simManager_->GetSlotId(simId);
528 }
529 
GetSimId(int32_t slotId)530 int32_t CoreService::GetSimId(int32_t slotId)
531 {
532     TELEPHONY_LOGD("CoreService::GetSimId(), slotId = %{public}d", slotId);
533     if (simManager_ == nullptr) {
534         TELEPHONY_LOGE("CoreService::GetSimId(), simManager_ is nullptr!");
535         return TELEPHONY_ERROR;
536     }
537     return simManager_->GetSimId(slotId);
538 }
539 
GetNetworkSearchInformation(int32_t slotId,const sptr<INetworkSearchCallback> & callback)540 int32_t CoreService::GetNetworkSearchInformation(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
541 {
542     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
543         TELEPHONY_LOGE("Non-system applications use system APIs!");
544         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
545     }
546     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
547         TELEPHONY_LOGE("permission denied!");
548         return TELEPHONY_ERR_PERMISSION_ERR;
549     }
550     if (networkSearchManager_ == nullptr) {
551         TELEPHONY_LOGE("networkSearchManager_ is null");
552         return TELEPHONY_ERR_LOCAL_PTR_NULL;
553     }
554     return networkSearchManager_->GetNetworkSearchInformation(slotId, callback);
555 }
556 
GetNetworkSelectionMode(int32_t slotId,const sptr<INetworkSearchCallback> & callback)557 int32_t CoreService::GetNetworkSelectionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
558 {
559     if (networkSearchManager_ == nullptr) {
560         TELEPHONY_LOGE("networkSearchManager_ is null");
561         return TELEPHONY_ERR_LOCAL_PTR_NULL;
562     }
563     return networkSearchManager_->GetNetworkSelectionMode(slotId, callback);
564 }
565 
GetLocaleFromDefaultSim()566 std::u16string CoreService::GetLocaleFromDefaultSim()
567 {
568     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
569         TELEPHONY_LOGE("CoreService::GetLocaleFromDefaultSim, Permission denied!");
570         return std::u16string();
571     }
572     TELEPHONY_LOGD("CoreService::GetLocaleFromDefaultSim()");
573     if (simManager_ == nullptr) {
574         TELEPHONY_LOGE("simManager_ is null");
575         return std::u16string();
576     }
577     int32_t slotId = INVALID_VALUE;
578     simManager_->GetPrimarySlotId(slotId);
579     if (slotId < DEFAULT_SIM_SLOT_ID) {
580         slotId = DEFAULT_SIM_SLOT_ID;
581     }
582     return simManager_->GetLocaleFromDefaultSim(slotId);
583 }
584 
GetSimGid1(int32_t slotId,std::u16string & gid1)585 int32_t CoreService::GetSimGid1(int32_t slotId, std::u16string &gid1)
586 {
587     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
588         TELEPHONY_LOGE("Non-system applications use system APIs!");
589         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
590     }
591     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
592         TELEPHONY_LOGE("CoreService::GetSimGid1, Permission denied!");
593         return TELEPHONY_ERR_PERMISSION_ERR;
594     }
595     TELEPHONY_LOGD("CoreService::GetSimGid1(), slotId = %{public}d", slotId);
596     if (simManager_ == nullptr) {
597         TELEPHONY_LOGE("simManager_ is null");
598         return TELEPHONY_ERR_LOCAL_PTR_NULL;
599     }
600     return simManager_->GetSimGid1(slotId, gid1);
601 }
602 
GetSimGid2(int32_t slotId)603 std::u16string CoreService::GetSimGid2(int32_t slotId)
604 {
605     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
606         TELEPHONY_LOGE("CoreService::GetSimGid2, Permission denied!");
607         return std::u16string();
608     }
609     TELEPHONY_LOGD("CoreService::GetSimGid2(), slotId = %{public}d", slotId);
610     if (simManager_ == nullptr) {
611         TELEPHONY_LOGE("simManager_ is null");
612         return std::u16string();
613     }
614     return simManager_->GetSimGid2(slotId);
615 }
616 
GetSimEons(int32_t slotId,const std::string & plmn,int32_t lac,bool longNameRequired)617 std::u16string CoreService::GetSimEons(int32_t slotId, const std::string &plmn, int32_t lac, bool longNameRequired)
618 {
619     TELEPHONY_LOGD("CoreService::GetSimEons(), slotId = %{public}d", slotId);
620     if (simManager_ == nullptr) {
621         TELEPHONY_LOGE("CoreService::GetSimEons, Permission denied!");
622         return std::u16string();
623     }
624     return simManager_->GetSimEons(slotId, plmn, lac, longNameRequired);
625 }
626 
GetSimAccountInfo(int32_t slotId,IccAccountInfo & info)627 int32_t CoreService::GetSimAccountInfo(int32_t slotId, IccAccountInfo &info)
628 {
629     bool denied = false;
630     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
631         TELEPHONY_LOGE("permission denied!");
632         denied = true;
633     }
634     TELEPHONY_LOGD("CoreService::GetSimAccountInfo(), slotId = %{public}d", slotId);
635     if (simManager_ == nullptr) {
636         TELEPHONY_LOGE("simManager_ is null");
637         return TELEPHONY_ERR_LOCAL_PTR_NULL;
638     }
639     return simManager_->GetSimAccountInfo(slotId, denied, info);
640 }
641 
SetDefaultVoiceSlotId(int32_t slotId)642 int32_t CoreService::SetDefaultVoiceSlotId(int32_t slotId)
643 {
644     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
645         TELEPHONY_LOGE("Non-system applications use system APIs!");
646         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
647     }
648     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
649         TELEPHONY_LOGE("permission denied!");
650         return TELEPHONY_ERR_PERMISSION_ERR;
651     }
652     TELEPHONY_LOGD("CoreService::SetDefaultVoiceSlotId(), slotId = %{public}d", slotId);
653     if (simManager_ == nullptr) {
654         TELEPHONY_LOGE("simManager_ is null");
655         return TELEPHONY_ERR_LOCAL_PTR_NULL;
656     }
657     return simManager_->SetDefaultVoiceSlotId(slotId);
658 }
659 
GetDefaultVoiceSlotId()660 int32_t CoreService::GetDefaultVoiceSlotId()
661 {
662     TELEPHONY_LOGD("CoreService::GetDefaultVoiceSlotId()");
663     if (simManager_ == nullptr) {
664         TELEPHONY_LOGE("simManager_ is null");
665         return TELEPHONY_ERROR;
666     }
667     return simManager_->GetDefaultVoiceSlotId();
668 }
669 
GetDefaultVoiceSimId(int32_t & simId)670 int32_t CoreService::GetDefaultVoiceSimId(int32_t &simId)
671 {
672     TELEPHONY_LOGD("start");
673     if (simManager_ == nullptr) {
674         TELEPHONY_LOGE("simManager_ is null");
675         return TELEPHONY_ERR_LOCAL_PTR_NULL;
676     }
677     return simManager_->GetDefaultVoiceSimId(simId);
678 }
679 
SetPrimarySlotId(int32_t slotId)680 int32_t CoreService::SetPrimarySlotId(int32_t slotId)
681 {
682     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
683         TELEPHONY_LOGE("Non-system applications use system APIs!");
684         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
685     }
686     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
687         TELEPHONY_LOGE("permission denied!");
688         return TELEPHONY_ERR_PERMISSION_ERR;
689     }
690     TELEPHONY_LOGD("CoreService::SetPrimarySlotId(), slotId = %{public}d", slotId);
691     if (simManager_ == nullptr) {
692         TELEPHONY_LOGE("simManager_ is null");
693         return TELEPHONY_ERR_LOCAL_PTR_NULL;
694     }
695     bool hasSim = false;
696     simManager_->HasSimCard(slotId, hasSim);
697     if (!hasSim) {
698         TELEPHONY_LOGE("has no sim");
699         return TELEPHONY_ERR_NO_SIM_CARD;
700     }
701     if (!simManager_->IsSimActive(slotId)) {
702         TELEPHONY_LOGE("sim is not active");
703         return TELEPHONY_ERR_SLOTID_INVALID;
704     }
705     return simManager_->SetPrimarySlotId(slotId);
706 }
707 
GetPrimarySlotId(int32_t & slotId)708 int32_t CoreService::GetPrimarySlotId(int32_t &slotId)
709 {
710     TELEPHONY_LOGD("CoreService::GetPrimarySlotId()");
711     if (simManager_ == nullptr) {
712         TELEPHONY_LOGE("simManager_ is null");
713         return TELEPHONY_ERR_LOCAL_PTR_NULL;
714     }
715     return simManager_->GetPrimarySlotId(slotId);
716 }
717 
SetShowNumber(int32_t slotId,const std::u16string & number)718 int32_t CoreService::SetShowNumber(int32_t slotId, const std::u16string &number)
719 {
720     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
721         TELEPHONY_LOGE("Non-system applications use system APIs!");
722         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
723     }
724     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
725         TELEPHONY_LOGE("permission denied!");
726         return TELEPHONY_ERR_PERMISSION_ERR;
727     }
728     TELEPHONY_LOGD("CoreService::SetShowNumber(), slotId = %{public}d", slotId);
729     if (simManager_ == nullptr) {
730         TELEPHONY_LOGE("simManager_ is null");
731         return TELEPHONY_ERR_LOCAL_PTR_NULL;
732     }
733     return simManager_->SetShowNumber(slotId, number);
734 }
735 
GetShowNumber(int32_t slotId,std::u16string & showNumber)736 int32_t CoreService::GetShowNumber(int32_t slotId, std::u16string &showNumber)
737 {
738     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
739         TELEPHONY_LOGE("Non-system applications use system APIs!");
740         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
741     }
742     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
743         TELEPHONY_LOGE("permission denied!");
744         return TELEPHONY_ERR_PERMISSION_ERR;
745     }
746     TELEPHONY_LOGD("CoreService::GetShowNumber(), slotId = %{public}d", slotId);
747     if (simManager_ == nullptr) {
748         TELEPHONY_LOGE("simManager_ is null");
749         return TELEPHONY_ERR_LOCAL_PTR_NULL;
750     }
751     return simManager_->GetShowNumber(slotId, showNumber);
752 }
753 
SetShowName(int32_t slotId,const std::u16string & name)754 int32_t CoreService::SetShowName(int32_t slotId, const std::u16string &name)
755 {
756     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
757         TELEPHONY_LOGE("Non-system applications use system APIs!");
758         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
759     }
760     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
761         TELEPHONY_LOGE("permission denied!");
762         return TELEPHONY_ERR_PERMISSION_ERR;
763     }
764     TELEPHONY_LOGD("CoreService::SetShowName(), slotId = %{public}d", slotId);
765     if (simManager_ == nullptr) {
766         TELEPHONY_LOGE("simManager_ is null");
767         return TELEPHONY_ERR_LOCAL_PTR_NULL;
768     }
769     return simManager_->SetShowName(slotId, name);
770 }
771 
GetShowName(int32_t slotId,std::u16string & showName)772 int32_t CoreService::GetShowName(int32_t slotId, std::u16string &showName)
773 {
774     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
775         TELEPHONY_LOGE("Non-system applications use system APIs!");
776         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
777     }
778     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
779         TELEPHONY_LOGE("permission denied!");
780         return TELEPHONY_ERR_PERMISSION_ERR;
781     }
782     TELEPHONY_LOGD("CoreService::GetShowName(), slotId = %{public}d", slotId);
783     if (simManager_ == nullptr) {
784         TELEPHONY_LOGE("simManager_ is null");
785         return TELEPHONY_ERR_LOCAL_PTR_NULL;
786     }
787     return simManager_->GetShowName(slotId, showName);
788 }
789 
GetActiveSimAccountInfoList(std::vector<IccAccountInfo> & iccAccountInfoList)790 int32_t CoreService::GetActiveSimAccountInfoList(std::vector<IccAccountInfo> &iccAccountInfoList)
791 {
792     bool denied = false;
793     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
794         TELEPHONY_LOGE("permission denied!");
795         denied = true;
796     }
797     TELEPHONY_LOGD("CoreService::GetActiveSimAccountInfoList");
798     if (simManager_ == nullptr) {
799         TELEPHONY_LOGE("simManager_ is null");
800         return TELEPHONY_ERR_LOCAL_PTR_NULL;
801     }
802     return simManager_->GetActiveSimAccountInfoList(denied, iccAccountInfoList);
803 }
804 
GetOperatorConfigs(int32_t slotId,OperatorConfig & poc)805 int32_t CoreService::GetOperatorConfigs(int32_t slotId, OperatorConfig &poc)
806 {
807     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
808         TELEPHONY_LOGE("Non-system applications use system APIs!");
809         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
810     }
811     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
812         TELEPHONY_LOGE("permission denied!");
813         return TELEPHONY_ERR_PERMISSION_ERR;
814     }
815     TELEPHONY_LOGD("CoreService::GetOperatorConfigs");
816     if (simManager_ == nullptr) {
817         TELEPHONY_LOGE("simManager_ is null");
818         return TELEPHONY_ERR_LOCAL_PTR_NULL;
819     }
820     return simManager_->GetOperatorConfigs(slotId, poc);
821 }
822 
UnlockPin(const int32_t slotId,const std::u16string & pin,LockStatusResponse & response)823 int32_t CoreService::UnlockPin(const int32_t slotId, const std::u16string &pin, LockStatusResponse &response)
824 {
825     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
826         TELEPHONY_LOGE("Non-system applications use system APIs!");
827         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
828     }
829     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
830         TELEPHONY_LOGE("permission denied!");
831         return TELEPHONY_ERR_PERMISSION_ERR;
832     }
833     TELEPHONY_LOGD("CoreService::UnlockPin(), pinLen = %{public}lu, slotId = %{public}d",
834         static_cast<unsigned long>(pin.length()), slotId);
835     if (simManager_ == nullptr) {
836         TELEPHONY_LOGE("simManager_ is null");
837         return TELEPHONY_ERR_LOCAL_PTR_NULL;
838     }
839     return simManager_->UnlockPin(slotId, Str16ToStr8(pin), response);
840 }
841 
UnlockPuk(const int slotId,const std::u16string & newPin,const std::u16string & puk,LockStatusResponse & response)842 int32_t CoreService::UnlockPuk(
843     const int slotId, const std::u16string &newPin, const std::u16string &puk, LockStatusResponse &response)
844 {
845     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
846         TELEPHONY_LOGE("Non-system applications use system APIs!");
847         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
848     }
849     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
850         TELEPHONY_LOGE("permission denied!");
851         return TELEPHONY_ERR_PERMISSION_ERR;
852     }
853     TELEPHONY_LOGI("CoreService::UnlockPuk(), newPinLen = %{public}lu, pukLen = %{public}lu, slotId = %{public}d",
854         static_cast<unsigned long>(newPin.length()), static_cast<unsigned long>(puk.length()), slotId);
855     if (simManager_ == nullptr) {
856         TELEPHONY_LOGE("simManager_ is null");
857         return TELEPHONY_ERR_LOCAL_PTR_NULL;
858     }
859     return simManager_->UnlockPuk(slotId, Str16ToStr8(newPin), Str16ToStr8(puk), response);
860 }
861 
AlterPin(const int slotId,const std::u16string & newPin,const std::u16string & oldPin,LockStatusResponse & response)862 int32_t CoreService::AlterPin(
863     const int slotId, const std::u16string &newPin, const std::u16string &oldPin, LockStatusResponse &response)
864 {
865     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
866         TELEPHONY_LOGE("Non-system applications use system APIs!");
867         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
868     }
869     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
870         TELEPHONY_LOGE("permission denied!");
871         return TELEPHONY_ERR_PERMISSION_ERR;
872     }
873     TELEPHONY_LOGI("CoreService::AlterPin(), newPinLen = %{public}lu, oldPinLen = %{public}lu, slotId = %{public}d",
874         static_cast<unsigned long>(newPin.length()), static_cast<unsigned long>(oldPin.length()), slotId);
875     if (simManager_ == nullptr) {
876         TELEPHONY_LOGE("simManager_ is null");
877         return TELEPHONY_ERR_LOCAL_PTR_NULL;
878     }
879     return simManager_->AlterPin(slotId, Str16ToStr8(newPin), Str16ToStr8(oldPin), response);
880 }
881 
UnlockPin2(const int32_t slotId,const std::u16string & pin2,LockStatusResponse & response)882 int32_t CoreService::UnlockPin2(const int32_t slotId, const std::u16string &pin2, LockStatusResponse &response)
883 {
884     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
885         TELEPHONY_LOGE("Non-system applications use system APIs!");
886         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
887     }
888     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
889         TELEPHONY_LOGE("permission denied!");
890         return TELEPHONY_ERR_PERMISSION_ERR;
891     }
892     TELEPHONY_LOGI("CoreService::UnlockPin2(), pin2Len = %{public}lu, slotId = %{public}d",
893         static_cast<unsigned long>(pin2.length()), slotId);
894     if (simManager_ == nullptr) {
895         TELEPHONY_LOGE("simManager_ is null");
896         return TELEPHONY_ERR_LOCAL_PTR_NULL;
897     }
898     return simManager_->UnlockPin2(slotId, Str16ToStr8(pin2), response);
899 }
900 
UnlockPuk2(const int slotId,const std::u16string & newPin2,const std::u16string & puk2,LockStatusResponse & response)901 int32_t CoreService::UnlockPuk2(
902     const int slotId, const std::u16string &newPin2, const std::u16string &puk2, LockStatusResponse &response)
903 {
904     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
905         TELEPHONY_LOGE("Non-system applications use system APIs!");
906         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
907     }
908     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
909         TELEPHONY_LOGE("permission denied!");
910         return TELEPHONY_ERR_PERMISSION_ERR;
911     }
912     TELEPHONY_LOGI("CoreService::UnlockPuk2(), newPin2Len = %{public}lu, puk2Len = %{public}lu, slotId = %{public}d",
913         static_cast<unsigned long>(newPin2.length()), static_cast<unsigned long>(puk2.length()), slotId);
914     if (simManager_ == nullptr) {
915         TELEPHONY_LOGE("simManager_ is null");
916         return TELEPHONY_ERR_LOCAL_PTR_NULL;
917     }
918     return simManager_->UnlockPuk2(slotId, Str16ToStr8(newPin2), Str16ToStr8(puk2), response);
919 }
920 
AlterPin2(const int slotId,const std::u16string & newPin2,const std::u16string & oldPin2,LockStatusResponse & response)921 int32_t CoreService::AlterPin2(
922     const int slotId, const std::u16string &newPin2, const std::u16string &oldPin2, LockStatusResponse &response)
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::SET_TELEPHONY_STATE)) {
929         TELEPHONY_LOGE("permission denied!");
930         return TELEPHONY_ERR_PERMISSION_ERR;
931     }
932     TELEPHONY_LOGI("CoreService::AlterPin2(), newPin2Len = %{public}lu, oldPin2Len = %{public}lu, slotId = %{public}d",
933         static_cast<unsigned long>(newPin2.length()), static_cast<unsigned long>(oldPin2.length()), slotId);
934     if (simManager_ == nullptr) {
935         TELEPHONY_LOGE("simManager_ is null");
936         return TELEPHONY_ERR_LOCAL_PTR_NULL;
937     }
938     return simManager_->AlterPin2(slotId, Str16ToStr8(newPin2), Str16ToStr8(oldPin2), response);
939 }
940 
SetLockState(int32_t slotId,const LockInfo & options,LockStatusResponse & response)941 int32_t CoreService::SetLockState(int32_t slotId, const LockInfo &options, LockStatusResponse &response)
942 {
943     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
944         TELEPHONY_LOGE("Non-system applications use system APIs!");
945         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
946     }
947     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
948         TELEPHONY_LOGE("permission denied!");
949         return TELEPHONY_ERR_PERMISSION_ERR;
950     }
951     std::u16string strPin = options.password;
952     TELEPHONY_LOGI(
953         "CoreService::SetLockState(),lockType = %{public}d, pinLen = %{public}lu, lockState = %{public}d, slotId "
954         "= "
955         "%{public}d",
956         options.lockType, static_cast<unsigned long>(strPin.length()), options.lockState, slotId);
957     if (simManager_ == nullptr) {
958         TELEPHONY_LOGE("simManager_ is null");
959         return TELEPHONY_ERR_LOCAL_PTR_NULL;
960     }
961     return simManager_->SetLockState(slotId, options, response);
962 }
963 
GetLockState(int32_t slotId,LockType lockType,LockState & lockState)964 int32_t CoreService::GetLockState(int32_t slotId, LockType lockType, LockState &lockState)
965 {
966     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
967         TELEPHONY_LOGE("Non-system applications use system APIs!");
968         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
969     }
970     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
971         TELEPHONY_LOGE("CoreService::GetLockState, Permission denied!");
972         return TELEPHONY_ERR_PERMISSION_ERR;
973     }
974     TELEPHONY_LOGI("CoreService::GetLockState(), lockType = %{public}d, slotId = %{public}d", lockType, slotId);
975     if (simManager_ == nullptr) {
976         TELEPHONY_LOGE("simManager_ is null");
977         return TELEPHONY_ERR_LOCAL_PTR_NULL;
978     }
979     return simManager_->GetLockState(slotId, lockType, lockState);
980 }
981 
RefreshSimState(int32_t slotId)982 int32_t CoreService::RefreshSimState(int32_t slotId)
983 {
984     TELEPHONY_LOGD("CoreService::RefreshSimState(), slotId = %{public}d", slotId);
985     if (simManager_ == nullptr) {
986         TELEPHONY_LOGE("simManager_ is null");
987         return TELEPHONY_ERROR;
988     }
989     return simManager_->RefreshSimState(slotId);
990 }
991 
SetActiveSim(int32_t slotId,int32_t enable)992 int32_t CoreService::SetActiveSim(int32_t slotId, int32_t enable)
993 {
994     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
995         TELEPHONY_LOGE("Non-system applications use system APIs!");
996         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
997     }
998     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
999         TELEPHONY_LOGE("permission denied!");
1000         return TELEPHONY_ERR_PERMISSION_ERR;
1001     }
1002     TELEPHONY_LOGD("CoreService::SetActiveSim(), slotId = %{public}d", slotId);
1003     if (simManager_ == nullptr) {
1004         TELEPHONY_LOGE("simManager_ is null");
1005         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1006     }
1007     return simManager_->SetActiveSim(slotId, enable);
1008 }
1009 
GetPreferredNetwork(int32_t slotId,const sptr<INetworkSearchCallback> & callback)1010 int32_t CoreService::GetPreferredNetwork(int32_t slotId, const sptr<INetworkSearchCallback> &callback)
1011 {
1012     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1013         TELEPHONY_LOGE("Non-system applications use system APIs!");
1014         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1015     }
1016     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1017         TELEPHONY_LOGE("permission denied!");
1018         return TELEPHONY_ERR_PERMISSION_ERR;
1019     }
1020     if (networkSearchManager_ == nullptr) {
1021         TELEPHONY_LOGE("networkSearchManager_ is null");
1022         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1023     }
1024     return networkSearchManager_->GetPreferredNetwork(slotId, callback);
1025 }
1026 
SetPreferredNetwork(int32_t slotId,int32_t networkMode,const sptr<INetworkSearchCallback> & callback)1027 int32_t CoreService::SetPreferredNetwork(
1028     int32_t slotId, int32_t networkMode, const sptr<INetworkSearchCallback> &callback)
1029 {
1030     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1031         TELEPHONY_LOGE("Non-system applications use system APIs!");
1032         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1033     }
1034     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1035         TELEPHONY_LOGE("permission denied!");
1036         return TELEPHONY_ERR_PERMISSION_ERR;
1037     }
1038     if (networkSearchManager_ == nullptr) {
1039         TELEPHONY_LOGE("networkSearchManager_ is null");
1040         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1041     }
1042     return networkSearchManager_->SetPreferredNetwork(slotId, networkMode, callback);
1043 }
1044 
GetNetworkCapability(int32_t slotId,int32_t networkCapabilityType,int32_t & networkCapabilityState)1045 int32_t CoreService::GetNetworkCapability(
1046     int32_t slotId, int32_t networkCapabilityType, int32_t &networkCapabilityState)
1047 {
1048     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1049         TELEPHONY_LOGE("Non-system applications use system APIs!");
1050         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1051     }
1052     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1053         TELEPHONY_LOGE("permission denied!");
1054         return TELEPHONY_ERR_PERMISSION_ERR;
1055     }
1056     if (networkSearchManager_ == nullptr) {
1057         TELEPHONY_LOGE("networkSearchManager_ is null");
1058         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1059     }
1060     return networkSearchManager_->GetNetworkCapability(slotId, networkCapabilityType, networkCapabilityState);
1061 }
1062 
SetNetworkCapability(int32_t slotId,int32_t networkCapabilityType,int32_t networkCapabilityState)1063 int32_t CoreService::SetNetworkCapability(int32_t slotId, int32_t networkCapabilityType, int32_t networkCapabilityState)
1064 {
1065     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1066         TELEPHONY_LOGE("Non-system applications use system APIs!");
1067         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1068     }
1069     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1070         TELEPHONY_LOGE("permission denied!");
1071         return TELEPHONY_ERR_PERMISSION_ERR;
1072     }
1073     if (networkSearchManager_ == nullptr) {
1074         TELEPHONY_LOGE("networkSearchManager_ is null");
1075         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1076     }
1077     return networkSearchManager_->SetNetworkCapability(slotId, networkCapabilityType, networkCapabilityState);
1078 }
1079 
GetSimTelephoneNumber(int32_t slotId,std::u16string & telephoneNumber)1080 int32_t CoreService::GetSimTelephoneNumber(int32_t slotId, std::u16string &telephoneNumber)
1081 {
1082     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1083         TELEPHONY_LOGE("Non-system applications use system APIs!");
1084         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1085     }
1086     if ((!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) &&
1087         (!TelephonyPermission::CheckPermission(Permission::GET_PHONE_NUMBERS))) {
1088         TELEPHONY_LOGE("permission denied!");
1089         return TELEPHONY_ERR_PERMISSION_ERR;
1090     }
1091     TELEPHONY_LOGD("CoreService::GetSimTelephoneNumber(), slotId = %{public}d", slotId);
1092     if (simManager_ == nullptr) {
1093         TELEPHONY_LOGE("simManager_ is null");
1094         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1095     }
1096     return simManager_->GetSimTelephoneNumber(slotId, telephoneNumber);
1097 }
1098 
GetSimTeleNumberIdentifier(const int32_t slotId)1099 std::u16string CoreService::GetSimTeleNumberIdentifier(const int32_t slotId)
1100 {
1101     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1102         TELEPHONY_LOGE("CoreService::GetSimTeleNumberIdentifier, Permission denied!");
1103         return std::u16string();
1104     }
1105     TELEPHONY_LOGD("CoreService::GetSimTeleNumberIdentifier(), slotId = %{public}d", slotId);
1106     if (simManager_ == nullptr) {
1107         TELEPHONY_LOGE("simManager_ is null");
1108         return std::u16string();
1109     }
1110     return simManager_->GetSimTeleNumberIdentifier(slotId);
1111 }
1112 
GetVoiceMailIdentifier(int32_t slotId,std::u16string & voiceMailIdentifier)1113 int32_t CoreService::GetVoiceMailIdentifier(int32_t slotId, std::u16string &voiceMailIdentifier)
1114 {
1115     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1116         TELEPHONY_LOGE("Non-system applications use system APIs!");
1117         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1118     }
1119     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1120         TELEPHONY_LOGE("permission denied!");
1121         return TELEPHONY_ERR_PERMISSION_ERR;
1122     }
1123     TELEPHONY_LOGD("CoreService::GetVoiceMailIdentifier(), slotId = %{public}d", slotId);
1124     if (simManager_ == nullptr) {
1125         TELEPHONY_LOGE("simManager_ is null");
1126         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1127     }
1128     return simManager_->GetVoiceMailIdentifier(slotId, voiceMailIdentifier);
1129 }
1130 
GetVoiceMailNumber(int32_t slotId,std::u16string & voiceMailNumber)1131 int32_t CoreService::GetVoiceMailNumber(int32_t slotId, std::u16string &voiceMailNumber)
1132 {
1133     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1134         TELEPHONY_LOGE("Non-system applications use system APIs!");
1135         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1136     }
1137     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1138         TELEPHONY_LOGE("permission denied!");
1139         return TELEPHONY_ERR_PERMISSION_ERR;
1140     }
1141     TELEPHONY_LOGD("CoreService::GetVoiceMailNumber(), slotId = %{public}d", slotId);
1142     if (simManager_ == nullptr) {
1143         TELEPHONY_LOGE("simManager_ is null");
1144         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1145     }
1146     return simManager_->GetVoiceMailNumber(slotId, voiceMailNumber);
1147 }
1148 
GetVoiceMailCount(int32_t slotId,int32_t & voiceMailCount)1149 int32_t CoreService::GetVoiceMailCount(int32_t slotId, int32_t &voiceMailCount)
1150 {
1151     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1152         TELEPHONY_LOGE("Non-system applications use system APIs!");
1153         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1154     }
1155     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1156         TELEPHONY_LOGE("permission denied!");
1157         return TELEPHONY_ERR_PERMISSION_ERR;
1158     }
1159     TELEPHONY_LOGI("CoreService::GetVoiceMailCount(), slotId = %{public}d", slotId);
1160     if (simManager_ == nullptr) {
1161         TELEPHONY_LOGE("simManager_ is null");
1162         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1163     }
1164     return simManager_->GetVoiceMailCount(slotId, voiceMailCount);
1165 }
1166 
SetVoiceMailCount(int32_t slotId,int32_t voiceMailCount)1167 int32_t CoreService::SetVoiceMailCount(int32_t slotId, int32_t voiceMailCount)
1168 {
1169     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1170         TELEPHONY_LOGE("permission denied!");
1171         return TELEPHONY_ERR_PERMISSION_ERR;
1172     }
1173     TELEPHONY_LOGI("CoreService::SetVoiceMailCount(), slotId = %{public}d", slotId);
1174     if (simManager_ == nullptr) {
1175         TELEPHONY_LOGE("simManager_ is null");
1176         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1177     }
1178     return simManager_->SetVoiceMailCount(slotId, voiceMailCount);
1179 }
1180 
SetVoiceCallForwarding(int32_t slotId,bool enable,const std::string & number)1181 int32_t CoreService::SetVoiceCallForwarding(int32_t slotId, bool enable, const std::string &number)
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::SetVoiceCallForwarding(), slotId = %{public}d", slotId);
1188     if (simManager_ == nullptr) {
1189         TELEPHONY_LOGE("simManager_ is null");
1190         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1191     }
1192     return simManager_->SetVoiceCallForwarding(slotId, enable, number);
1193 }
1194 
QueryIccDiallingNumbers(int slotId,int type,std::vector<std::shared_ptr<DiallingNumbersInfo>> & reslut)1195 int32_t CoreService::QueryIccDiallingNumbers(
1196     int slotId, int type, std::vector<std::shared_ptr<DiallingNumbersInfo>> &reslut)
1197 {
1198     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1199         TELEPHONY_LOGE("Non-system applications use system APIs!");
1200         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1201     }
1202     if (!TelephonyPermission::CheckPermission(Permission::READ_CONTACTS)) {
1203         TELEPHONY_LOGE("permission denied!");
1204         return TELEPHONY_ERR_PERMISSION_ERR;
1205     }
1206     TELEPHONY_LOGD("CoreService::QueryIccDiallingNumbers");
1207     if (simManager_ == nullptr) {
1208         TELEPHONY_LOGE("simManager_ is null");
1209         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1210     }
1211     return simManager_->QueryIccDiallingNumbers(slotId, type, reslut);
1212 }
1213 
AddIccDiallingNumbers(int slotId,int type,const std::shared_ptr<DiallingNumbersInfo> & diallingNumber)1214 int32_t CoreService::AddIccDiallingNumbers(
1215     int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber)
1216 {
1217     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1218         TELEPHONY_LOGE("Non-system applications use system APIs!");
1219         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1220     }
1221     if (!TelephonyPermission::CheckPermission(Permission::WRITE_CONTACTS)) {
1222         TELEPHONY_LOGE("permission denied!");
1223         return TELEPHONY_ERR_PERMISSION_ERR;
1224     }
1225     TELEPHONY_LOGD("CoreService::AddIccDiallingNumbers");
1226     if (simManager_ == nullptr) {
1227         TELEPHONY_LOGE("simManager_ is null");
1228         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1229     }
1230     return simManager_->AddIccDiallingNumbers(slotId, type, diallingNumber);
1231 }
1232 
DelIccDiallingNumbers(int slotId,int type,const std::shared_ptr<DiallingNumbersInfo> & diallingNumber)1233 int32_t CoreService::DelIccDiallingNumbers(
1234     int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber)
1235 {
1236     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1237         TELEPHONY_LOGE("Non-system applications use system APIs!");
1238         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1239     }
1240     if (!TelephonyPermission::CheckPermission(Permission::WRITE_CONTACTS)) {
1241         TELEPHONY_LOGE("permission denied!");
1242         return TELEPHONY_ERR_PERMISSION_ERR;
1243     }
1244     TELEPHONY_LOGD("CoreService::DelIccDiallingNumbers");
1245     if (simManager_ == nullptr) {
1246         TELEPHONY_LOGE("simManager_ is null");
1247         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1248     }
1249     return simManager_->DelIccDiallingNumbers(slotId, type, diallingNumber);
1250 }
1251 
UpdateIccDiallingNumbers(int slotId,int type,const std::shared_ptr<DiallingNumbersInfo> & diallingNumber)1252 int32_t CoreService::UpdateIccDiallingNumbers(
1253     int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber)
1254 {
1255     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1256         TELEPHONY_LOGE("Non-system applications use system APIs!");
1257         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1258     }
1259     if (!TelephonyPermission::CheckPermission(Permission::WRITE_CONTACTS)) {
1260         TELEPHONY_LOGE("permission denied!");
1261         return TELEPHONY_ERR_PERMISSION_ERR;
1262     }
1263     TELEPHONY_LOGD("CoreService::UpdateIccDiallingNumbers");
1264     if (simManager_ == nullptr) {
1265         TELEPHONY_LOGE("simManager_ is null");
1266         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1267     }
1268     return simManager_->UpdateIccDiallingNumbers(slotId, type, diallingNumber);
1269 }
1270 
SetVoiceMailInfo(const int32_t slotId,const std::u16string & mailName,const std::u16string & mailNumber)1271 int32_t CoreService::SetVoiceMailInfo(
1272     const int32_t slotId, const std::u16string &mailName, const std::u16string &mailNumber)
1273 {
1274     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1275         TELEPHONY_LOGE("Non-system applications use system APIs!");
1276         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1277     }
1278     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1279         TELEPHONY_LOGE("permission denied!");
1280         return TELEPHONY_ERR_PERMISSION_ERR;
1281     }
1282     TELEPHONY_LOGD("CoreService::SetVoiceMailInfo(), slotId = %{public}d", slotId);
1283     if (simManager_ == nullptr) {
1284         TELEPHONY_LOGE("simManager_ is null");
1285         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1286     }
1287     return simManager_->SetVoiceMailInfo(slotId, mailName, mailNumber);
1288 }
1289 
GetMaxSimCount()1290 int32_t CoreService::GetMaxSimCount()
1291 {
1292     return SIM_SLOT_COUNT;
1293 }
1294 
GetOpKey(int32_t slotId,std::u16string & opkey)1295 int32_t CoreService::GetOpKey(int32_t slotId, std::u16string &opkey)
1296 {
1297     TELEPHONY_LOGD("CoreService::GetOpKey(), slotId = %{public}d", slotId);
1298     if (simManager_ == nullptr) {
1299         TELEPHONY_LOGE("simManager_ is null");
1300         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1301     }
1302     return simManager_->GetOpKey(slotId, opkey);
1303 }
1304 
GetOpKeyExt(int32_t slotId,std::u16string & opkeyExt)1305 int32_t CoreService::GetOpKeyExt(int32_t slotId, std::u16string &opkeyExt)
1306 {
1307     TELEPHONY_LOGD("CoreService::GetOpKeyExt(), slotId = %{public}d", slotId);
1308     if (simManager_ == nullptr) {
1309         TELEPHONY_LOGE("simManager_ is null");
1310         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1311     }
1312     return simManager_->GetOpKeyExt(slotId, opkeyExt);
1313 }
1314 
GetOpName(int32_t slotId,std::u16string & opname)1315 int32_t CoreService::GetOpName(int32_t slotId, std::u16string &opname)
1316 {
1317     TELEPHONY_LOGD("CoreService::GetOpName(), slotId = %{public}d", slotId);
1318     if (simManager_ == nullptr) {
1319         TELEPHONY_LOGE("simManager_ is null");
1320         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1321     }
1322     return simManager_->GetOpName(slotId, opname);
1323 }
1324 
SendEnvelopeCmd(int32_t slotId,const std::string & cmd)1325 int32_t CoreService::SendEnvelopeCmd(int32_t slotId, const std::string &cmd)
1326 {
1327     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1328         TELEPHONY_LOGE("Non-system applications use system APIs!");
1329         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1330     }
1331     if (simManager_ == nullptr) {
1332         TELEPHONY_LOGE("CoreService::SendEnvelopeCmd simManager_ is nullptr");
1333         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1334     }
1335     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1336         TELEPHONY_LOGE("CoreService::SendEnvelopeCmd, Permission denied!");
1337         return TELEPHONY_ERR_PERMISSION_ERR;
1338     }
1339     TELEPHONY_LOGD("CoreService::SendEnvelopeCmd(), slotId = %{public}d", slotId);
1340     return simManager_->SendEnvelopeCmd(slotId, cmd);
1341 }
1342 
SendTerminalResponseCmd(int32_t slotId,const std::string & cmd)1343 int32_t CoreService::SendTerminalResponseCmd(int32_t slotId, const std::string &cmd)
1344 {
1345     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1346         TELEPHONY_LOGE("Non-system applications use system APIs!");
1347         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1348     }
1349     if (simManager_ == nullptr) {
1350         TELEPHONY_LOGE("CoreService::SendEnvelopeCmd simManager_ is nullptr");
1351         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1352     }
1353     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1354         TELEPHONY_LOGE("CoreService::SendTerminalResponseCmd, Permission denied!");
1355         return TELEPHONY_ERR_PERMISSION_ERR;
1356     }
1357     TELEPHONY_LOGD("CoreService::SendTerminalResponseCmd(), slotId = %{public}d", slotId);
1358     return simManager_->SendTerminalResponseCmd(slotId, cmd);
1359 }
1360 
SendCallSetupRequestResult(int32_t slotId,bool accept)1361 int32_t CoreService::SendCallSetupRequestResult(int32_t slotId, bool accept)
1362 {
1363     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1364         TELEPHONY_LOGE("Non-system applications use system APIs!");
1365         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1366     }
1367     if (simManager_ == nullptr) {
1368         TELEPHONY_LOGE("CoreService::SendEnvelopeCmd simManager_ is nullptr");
1369         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1370     }
1371     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1372         TELEPHONY_LOGE("CoreService::SendCallSetupRequestResult, Permission denied!");
1373         return TELEPHONY_ERR_PERMISSION_ERR;
1374     }
1375     TELEPHONY_LOGD("CoreService::SendCallSetupRequestResult(), slotId = %{public}d", slotId);
1376     return simManager_->SendCallSetupRequestResult(slotId, accept);
1377 }
1378 
UnlockSimLock(int32_t slotId,const PersoLockInfo & lockInfo,LockStatusResponse & response)1379 int32_t CoreService::UnlockSimLock(int32_t slotId, const PersoLockInfo &lockInfo, LockStatusResponse &response)
1380 {
1381     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1382         TELEPHONY_LOGE("Non-system applications use system APIs!");
1383         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1384     }
1385     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1386         TELEPHONY_LOGE("permission denied!");
1387         return TELEPHONY_ERR_PERMISSION_ERR;
1388     }
1389     TELEPHONY_LOGI(
1390         "CoreService::UnlockSimLock(), lockType = %{public}d, slotId = %{public}d", lockInfo.lockType, slotId);
1391     if (simManager_ == nullptr) {
1392         TELEPHONY_LOGE("simManager_ is null");
1393         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1394     }
1395     return simManager_->UnlockSimLock(slotId, lockInfo, response);
1396 }
1397 
GetImsRegStatus(int32_t slotId,ImsServiceType imsSrvType,ImsRegInfo & info)1398 int32_t CoreService::GetImsRegStatus(int32_t slotId, ImsServiceType imsSrvType, ImsRegInfo &info)
1399 {
1400     TELEPHONY_LOGI("CoreService::GetImsRegStatus --> slotId:%{public}d, imsSrvType:%{public}d", slotId, imsSrvType);
1401     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1402         TELEPHONY_LOGE("Non-system applications use system APIs!");
1403         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1404     }
1405     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1406         TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1407         return TELEPHONY_ERR_PERMISSION_ERR;
1408     }
1409     if (networkSearchManager_ == nullptr) {
1410         TELEPHONY_LOGE("failed! network search manager is nullptr!");
1411         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1412     }
1413     return networkSearchManager_->GetImsRegStatus(slotId, imsSrvType, info);
1414 }
1415 
GetCellInfoList(int32_t slotId,std::vector<sptr<CellInformation>> & cellInfo)1416 int32_t CoreService::GetCellInfoList(int32_t slotId, std::vector<sptr<CellInformation>> &cellInfo)
1417 {
1418     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1419         TELEPHONY_LOGE("Non-system applications use system APIs!");
1420         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1421     }
1422     if (!TelephonyPermission::CheckPermission(Permission::CELL_LOCATION)) {
1423         return TELEPHONY_ERR_PERMISSION_ERR;
1424     }
1425     if (networkSearchManager_ == nullptr) {
1426         TELEPHONY_LOGE("networkSearchManager_ is null");
1427         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1428     }
1429     return networkSearchManager_->GetCellInfoList(slotId, cellInfo);
1430 }
1431 
SendUpdateCellLocationRequest(int32_t slotId)1432 int32_t CoreService::SendUpdateCellLocationRequest(int32_t slotId)
1433 {
1434     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1435         TELEPHONY_LOGE("Non-system applications use system APIs!");
1436         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1437     }
1438     if (!TelephonyPermission::CheckPermission(Permission::CELL_LOCATION)) {
1439         TELEPHONY_LOGE("CoreService::SendUpdateCellLocationRequest, Permission denied!");
1440         return TELEPHONY_ERR_PERMISSION_ERR;
1441     }
1442     if (networkSearchManager_ == nullptr) {
1443         TELEPHONY_LOGE("networkSearchManager_ is null");
1444         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1445     }
1446     return networkSearchManager_->SendUpdateCellLocationRequest(slotId);
1447 }
1448 
HasOperatorPrivileges(const int32_t slotId,bool & hasOperatorPrivileges)1449 int32_t CoreService::HasOperatorPrivileges(const int32_t slotId, bool &hasOperatorPrivileges)
1450 {
1451     TELEPHONY_LOGD("CoreService::HasOperatorPrivileges(), slotId = %{public}d", slotId);
1452     if (simManager_ == nullptr) {
1453         TELEPHONY_LOGE("simManager_ is null");
1454         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1455     }
1456     return simManager_->HasOperatorPrivileges(slotId, hasOperatorPrivileges);
1457 }
1458 
SimAuthentication(int32_t slotId,AuthType authType,const std::string & authData,SimAuthenticationResponse & response)1459 int32_t CoreService::SimAuthentication(
1460     int32_t slotId, AuthType authType, const std::string &authData, SimAuthenticationResponse &response)
1461 {
1462     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1463         TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1464         return TELEPHONY_ERR_PERMISSION_ERR;
1465     }
1466     TELEPHONY_LOGD("CoreService::SimAuthentication(), slotId = %{public}d", slotId);
1467     if (simManager_ == nullptr) {
1468         TELEPHONY_LOGE("simManager_ is null");
1469         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1470     }
1471     return simManager_->SimAuthentication(slotId, authType, authData, response);
1472 }
1473 
RegisterImsRegInfoCallback(int32_t slotId,ImsServiceType imsSrvType,const sptr<ImsRegInfoCallback> & callback)1474 int32_t CoreService::RegisterImsRegInfoCallback(
1475     int32_t slotId, ImsServiceType imsSrvType, const sptr<ImsRegInfoCallback> &callback)
1476 {
1477     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1478         TELEPHONY_LOGE("Non-system applications use system APIs!");
1479         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1480     }
1481     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1482         TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1483         return TELEPHONY_ERR_PERMISSION_ERR;
1484     }
1485     if (networkSearchManager_ == nullptr) {
1486         TELEPHONY_LOGE("failed! network search manager is nullptr!");
1487         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1488     }
1489     return networkSearchManager_->RegisterImsRegInfoCallback(slotId, imsSrvType, GetTokenID(), callback);
1490 }
1491 
UnregisterImsRegInfoCallback(int32_t slotId,ImsServiceType imsSrvType)1492 int32_t CoreService::UnregisterImsRegInfoCallback(int32_t slotId, ImsServiceType imsSrvType)
1493 {
1494     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1495         TELEPHONY_LOGE("Non-system applications use system APIs!");
1496         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1497     }
1498     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1499         TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1500         return TELEPHONY_ERR_PERMISSION_ERR;
1501     }
1502     if (networkSearchManager_ == nullptr) {
1503         TELEPHONY_LOGE("failed! network search manager is nullptr!");
1504         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1505     }
1506     return networkSearchManager_->UnregisterImsRegInfoCallback(slotId, imsSrvType, GetTokenID());
1507 }
1508 
GetBasebandVersion(int32_t slotId,std::string & version)1509 int32_t CoreService::GetBasebandVersion(int32_t slotId, std::string &version)
1510 {
1511     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1512         TELEPHONY_LOGE("Non-system applications use system APIs!");
1513         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1514     }
1515     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1516         TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1517         return TELEPHONY_ERR_PERMISSION_ERR;
1518     }
1519     if (networkSearchManager_ == nullptr) {
1520         TELEPHONY_LOGE("networkSearchManager_ is null");
1521         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1522     }
1523     return networkSearchManager_->GetBasebandVersion(slotId, version);
1524 }
1525 
FactoryReset(int32_t slotId)1526 int32_t CoreService::FactoryReset(int32_t slotId)
1527 {
1528     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1529         TELEPHONY_LOGE("Non-system applications use system APIs!");
1530         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1531     }
1532     if (!TelephonyPermission::CheckPermission(Permission::SET_TELEPHONY_STATE)) {
1533         TELEPHONY_LOGE("Permission denied!");
1534         return TELEPHONY_ERR_PERMISSION_ERR;
1535     }
1536     if (networkSearchManager_ == nullptr) {
1537         TELEPHONY_LOGE("networkSearchManager_ is null");
1538         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1539     }
1540     return networkSearchManager_->FactoryReset(slotId);
1541 }
1542 
InitExtraModule(int32_t slotId)1543 int32_t CoreService::InitExtraModule(int32_t slotId)
1544 {
1545     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1546         TELEPHONY_LOGE("Non-system applications use system APIs!");
1547         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1548     }
1549     return CoreManagerInner::GetInstance().InitExtraModule(slotId);
1550 }
1551 
Dump(std::int32_t fd,const std::vector<std::u16string> & args)1552 int32_t CoreService::Dump(std::int32_t fd, const std::vector<std::u16string> &args)
1553 {
1554     if (fd < 0) {
1555         TELEPHONY_LOGE("dump fd invalid");
1556         return TELEPHONY_ERR_ARGUMENT_INVALID;
1557     }
1558     std::vector<std::string> argsInStr;
1559     for (const auto &arg : args) {
1560         TELEPHONY_LOGI("Dump args: %s", Str16ToStr8(arg).c_str());
1561         argsInStr.emplace_back(Str16ToStr8(arg));
1562     }
1563     std::string result;
1564     CoreServiceDumpHelper dumpHelper;
1565     if (dumpHelper.Dump(argsInStr, result)) {
1566         TELEPHONY_LOGI("%s", result.c_str());
1567         std::int32_t ret = dprintf(fd, "%s", result.c_str());
1568         if (ret < 0) {
1569             TELEPHONY_LOGE("dprintf to dump fd failed");
1570             return TELEPHONY_ERROR;
1571         }
1572         return 0;
1573     }
1574     TELEPHONY_LOGW("dumpHelper failed");
1575     return TELEPHONY_ERROR;
1576 }
1577 
GetBindTime()1578 int64_t CoreService::GetBindTime()
1579 {
1580     return bindTime_;
1581 }
1582 
GetEndTime()1583 int64_t CoreService::GetEndTime()
1584 {
1585     return endTime_;
1586 }
1587 
GetSpendTime()1588 int64_t CoreService::GetSpendTime()
1589 {
1590     return endTime_ - bindTime_;
1591 }
1592 
GetNrSsbIdInfo(int32_t slotId,const std::shared_ptr<NrSsbInformation> & nrSsbInformation)1593 int32_t CoreService::GetNrSsbIdInfo(int32_t slotId, const std::shared_ptr<NrSsbInformation> &nrSsbInformation)
1594 {
1595     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1596         TELEPHONY_LOGE("Non-system applications use system APIs!");
1597         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1598     }
1599     if (!TelephonyPermission::CheckPermission(Permission::CELL_LOCATION)) {
1600         TELEPHONY_LOGE("Do not support Permission::CELL_LOCATION");
1601         return TELEPHONY_ERR_PERMISSION_ERR;
1602     }
1603     if (networkSearchManager_ == nullptr) {
1604         TELEPHONY_LOGE("networkSearchManager_ is null");
1605         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1606     }
1607     return networkSearchManager_->GetNrSsbId(slotId, nrSsbInformation);
1608 }
1609 
IsAllowedInsertApn(std::string & value)1610 bool CoreService::IsAllowedInsertApn(std::string &value)
1611 {
1612     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1613         TELEPHONY_LOGE("Non-system applications use system APIs!");
1614         return true;
1615     }
1616     if (TELEPHONY_EXT_WRAPPER.isAllowedInsertApn_ != nullptr) {
1617         return TELEPHONY_EXT_WRAPPER.isAllowedInsertApn_(value);
1618     }
1619     return true;
1620 }
1621 
GetTargetOpkey(int32_t slotId,std::u16string & opkey)1622 int32_t CoreService::GetTargetOpkey(int32_t slotId, std::u16string &opkey)
1623 {
1624     if (!TelephonyPermission::CheckCallerIsSystemApp()) {
1625         TELEPHONY_LOGE("Non-system applications use system APIs!");
1626         return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API;
1627     }
1628     if (TELEPHONY_EXT_WRAPPER.getTargetOpkey_ != nullptr) {
1629         TELEPHONY_EXT_WRAPPER.getTargetOpkey_(slotId, opkey);
1630     }
1631     return TELEPHONY_ERR_SUCCESS;
1632 }
1633 
GetOpkeyVersion(std::string & versionInfo)1634 int32_t CoreService::GetOpkeyVersion(std::string &versionInfo)
1635 {
1636     if (TELEPHONY_EXT_WRAPPER.getOpkeyVersion_ != nullptr) {
1637         TELEPHONY_EXT_WRAPPER.getOpkeyVersion_(versionInfo);
1638         return TELEPHONY_ERR_SUCCESS;
1639     }
1640     return TELEPHONY_ERR_LOCAL_PTR_NULL;
1641 }
1642 
GetSimIO(int32_t slotId,int32_t command,int32_t fileId,const std::string & data,const std::string & path,SimAuthenticationResponse & response)1643 int32_t CoreService::GetSimIO(int32_t slotId, int32_t command,
1644     int32_t fileId, const std::string &data, const std::string &path, SimAuthenticationResponse &response)
1645 {
1646     if (!TelephonyPermission::CheckPermission(Permission::GET_TELEPHONY_STATE)) {
1647         TELEPHONY_LOGE("Failed because no permission:GET_TELEPHONY_STATE");
1648         return TELEPHONY_ERR_PERMISSION_ERR;
1649     }
1650     TELEPHONY_LOGD("CoreService::GetSimIO(), slotId = %{public}d", slotId);
1651     if (simManager_ == nullptr) {
1652         TELEPHONY_LOGE("simManager_ is null");
1653         return TELEPHONY_ERR_LOCAL_PTR_NULL;
1654     }
1655     return simManager_->GetSimIO(slotId, command, fileId, data, path, response);
1656 }
1657 
1658 } // namespace Telephony
1659 } // namespace OHOS
1660