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