• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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 "call_manager_proxy.h"
17 
18 #include "iservice_registry.h"
19 #include "system_ability.h"
20 #include "system_ability_definition.h"
21 
22 #include "call_manager_errors.h"
23 #include "telephony_log_wrapper.h"
24 
25 namespace OHOS {
26 namespace Telephony {
CallManagerProxy()27 CallManagerProxy::CallManagerProxy()
28     : systemAbilityId_(TELEPHONY_CALL_MANAGER_SYS_ABILITY_ID), registerStatus_(false), initStatus_(false)
29 {}
30 
~CallManagerProxy()31 CallManagerProxy::~CallManagerProxy()
32 {
33     UnInit();
34 }
35 
Init(int32_t systemAbilityId)36 void CallManagerProxy::Init(int32_t systemAbilityId)
37 {
38     std::lock_guard<std::mutex> lock(mutex_);
39     if (initStatus_) {
40         TELEPHONY_LOGW("you have already initialized");
41         return;
42     }
43     systemAbilityId_ = systemAbilityId;
44     int32_t result = ConnectService();
45     if (result != TELEPHONY_SUCCESS) {
46         TELEPHONY_LOGE("connect service failed,errCode: %{public}d", result);
47         Timer::start(CONNECT_SERVICE_WAIT_TIME, CallManagerProxy::task);
48         return;
49     }
50     initStatus_ = true;
51     TELEPHONY_LOGI("connected to call manager service successfully!");
52 }
53 
UnInit()54 void CallManagerProxy::UnInit()
55 {
56     DisconnectService();
57     std::lock_guard<std::mutex> lock(mutex_);
58     initStatus_ = false;
59     TELEPHONY_LOGI("disconnect service\n");
60 }
61 
62 /**
63  * Register a callback with the CallManager, through which the CallManager's data is notified to the NAPI.
64  */
RegisterCallBack(std::unique_ptr<CallManagerCallback> callback)65 int32_t CallManagerProxy::RegisterCallBack(std::unique_ptr<CallManagerCallback> callback)
66 {
67     std::lock_guard<std::mutex> lock(mutex_);
68     if (registerStatus_) {
69         TELEPHONY_LOGE("you have already register callback yet!");
70         return TELEPHONY_ERR_REGISTER_CALLBACK_FAIL;
71     }
72     if (callManagerServicePtr_ == nullptr) {
73         TELEPHONY_LOGE("callManagerServicePtr_ is null");
74         return TELEPHONY_ERR_LOCAL_PTR_NULL;
75     }
76     callAbilityCallbackPtr_ = (std::make_unique<CallAbilityCallback>()).release();
77     if (callAbilityCallbackPtr_ == nullptr) {
78         TELEPHONY_LOGE("create CallAbilityCallback object failed!");
79         return TELEPHONY_ERR_LOCAL_PTR_NULL;
80     }
81     int32_t ret = callManagerServicePtr_->RegisterCallBack(callAbilityCallbackPtr_);
82     if (ret != TELEPHONY_SUCCESS && ret != TELEPHONY_ERR_PERMISSION_ERR) {
83         callAbilityCallbackPtr_.clear();
84         callAbilityCallbackPtr_ = nullptr;
85         TELEPHONY_LOGE("register callback to call manager service failed,result: %{public}d", ret);
86         return TELEPHONY_ERR_REGISTER_CALLBACK_FAIL;
87     }
88     TELEPHONY_LOGI("register call ability callback success!");
89     callAbilityCallbackPtr_->SetProcessCallback(std::move(callback));
90     registerStatus_ = true;
91     return TELEPHONY_SUCCESS;
92 }
93 
UnRegisterCallBack()94 int32_t CallManagerProxy::UnRegisterCallBack()
95 {
96     std::lock_guard<std::mutex> lock(mutex_);
97     if (!registerStatus_) {
98         TELEPHONY_LOGE("you haven't register callback yet, please RegisterCallBack first!");
99         return TELEPHONY_ERR_REGISTER_CALLBACK_FAIL;
100     }
101     if (callManagerServicePtr_ == nullptr) {
102         TELEPHONY_LOGE("callManagerServicePtr_ is null");
103         return TELEPHONY_ERR_LOCAL_PTR_NULL;
104     }
105     int32_t ret = callManagerServicePtr_->UnRegisterCallBack();
106     if (ret != TELEPHONY_SUCCESS && ret != TELEPHONY_ERR_PERMISSION_ERR) {
107         TELEPHONY_LOGE("UnRegisterCallBack failed,result: %{public}d", ret);
108         return TELEPHONY_ERR_UNREGISTER_CALLBACK_FAIL;
109     }
110     if (callAbilityCallbackPtr_ == nullptr) {
111         TELEPHONY_LOGE("callAbilityCallbackPtr_ is nullptr!");
112         return TELEPHONY_ERR_LOCAL_PTR_NULL;
113     }
114     callAbilityCallbackPtr_->SetProcessCallback(nullptr);
115     callAbilityCallbackPtr_.clear();
116     callAbilityCallbackPtr_ = nullptr;
117     registerStatus_ = false;
118     TELEPHONY_LOGI("UnRegisterCallBack success!");
119     return TELEPHONY_SUCCESS;
120 }
121 
task()122 void CallManagerProxy::task()
123 {
124     int32_t ret = DelayedSingleton<CallManagerProxy>::GetInstance()->ReConnectService();
125     if (ret != TELEPHONY_SUCCESS) {
126         TELEPHONY_LOGE("call manager service reconnection failed! errCode:%{public}d", ret);
127         return;
128     }
129     DelayedSingleton<CallManagerProxy>::GetInstance()->ThreadExit();
130     TELEPHONY_LOGI("call manager service reconnection successfully!");
131 }
132 
ConnectService()133 int32_t CallManagerProxy::ConnectService()
134 {
135     Utils::UniqueWriteGuard<Utils::RWLock> guard(rwClientLock_);
136     if (callManagerServicePtr_ != nullptr) {
137         return TELEPHONY_SUCCESS;
138     }
139     sptr<ISystemAbilityManager> managerPtr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
140     if (managerPtr == nullptr) {
141         TELEPHONY_LOGE("GetSystemAbilityManager failed!");
142         return TELEPHONY_ERR_LOCAL_PTR_NULL;
143     }
144     sptr<ICallManagerService> callManagerServicePtr = nullptr;
145     sptr<IRemoteObject> iRemoteObjectPtr = managerPtr->GetSystemAbility(systemAbilityId_);
146     if (iRemoteObjectPtr == nullptr) {
147         TELEPHONY_LOGE("GetSystemAbility failed!");
148         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
149     }
150     callManagerServicePtr = iface_cast<ICallManagerService>(iRemoteObjectPtr);
151     if (!callManagerServicePtr) {
152         TELEPHONY_LOGE("iface_cast<ICallManagerService> failed!");
153         return TELEPHONY_ERR_LOCAL_PTR_NULL;
154     }
155     callManagerServicePtr_ = callManagerServicePtr;
156     return TELEPHONY_SUCCESS;
157 }
158 
DisconnectService()159 void CallManagerProxy::DisconnectService()
160 {
161     UnRegisterCallBack();
162     Utils::UniqueWriteGuard<Utils::RWLock> guard(rwClientLock_);
163     if (callManagerServicePtr_ != nullptr) {
164         callManagerServicePtr_.clear();
165         callManagerServicePtr_ = nullptr;
166     }
167 }
168 
ReConnectService()169 int32_t CallManagerProxy::ReConnectService()
170 {
171     if (callManagerServicePtr_ == nullptr) {
172         TELEPHONY_LOGI("try to reconnect call manager service now...");
173         int32_t result = ConnectService();
174         if (result != TELEPHONY_SUCCESS) {
175             TELEPHONY_LOGE("Connect service: %{public}d", result);
176             return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
177         }
178         if (registerStatus_) {
179             ReRegisterCallBack();
180         }
181     }
182     return TELEPHONY_SUCCESS;
183 }
184 
ReRegisterCallBack()185 int32_t CallManagerProxy::ReRegisterCallBack()
186 {
187     std::lock_guard<std::mutex> lock(mutex_);
188     if (callManagerServicePtr_ == nullptr) {
189         TELEPHONY_LOGE("callManagerServicePtr_ is null");
190         return TELEPHONY_ERR_LOCAL_PTR_NULL;
191     }
192     if (callAbilityCallbackPtr_ == nullptr) {
193         TELEPHONY_LOGE("create CallAbilityCallback object failed!");
194         return TELEPHONY_ERR_LOCAL_PTR_NULL;
195     }
196     int32_t ret = callManagerServicePtr_->RegisterCallBack(callAbilityCallbackPtr_);
197     if (ret != TELEPHONY_SUCCESS && ret != TELEPHONY_ERR_PERMISSION_ERR) {
198         callAbilityCallbackPtr_.clear();
199         callAbilityCallbackPtr_ = nullptr;
200         TELEPHONY_LOGE("register callback to call manager service failed,result: %{public}d", ret);
201         return TELEPHONY_ERR_REGISTER_CALLBACK_FAIL;
202     }
203     TELEPHONY_LOGI("register call ability callback again success!");
204     return TELEPHONY_SUCCESS;
205 }
206 
OnDeath()207 void CallManagerProxy::OnDeath()
208 {
209     Utils::UniqueWriteGuard<Utils::RWLock> guard(rwClientLock_);
210     if (callManagerServicePtr_ != nullptr) {
211         callManagerServicePtr_.clear();
212         callManagerServicePtr_ = nullptr;
213     }
214     NotifyDeath();
215 }
216 
NotifyDeath()217 void CallManagerProxy::NotifyDeath()
218 {
219     Timer::start(CONNECT_SERVICE_WAIT_TIME, CallManagerProxy::task);
220 }
221 
DialCall(std::u16string number,AppExecFwk::PacMap & extras)222 int32_t CallManagerProxy::DialCall(std::u16string number, AppExecFwk::PacMap &extras)
223 {
224     if (ReConnectService() != TELEPHONY_SUCCESS) {
225         TELEPHONY_LOGE("ipc reconnect failed!");
226         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
227     }
228     std::lock_guard<std::mutex> lock(mutex_);
229     int32_t errCode = callManagerServicePtr_->DialCall(number, extras);
230     if (errCode != TELEPHONY_SUCCESS) {
231         TELEPHONY_LOGE("DialCall failed, errcode:%{public}d", errCode);
232         return errCode;
233     }
234     return TELEPHONY_SUCCESS;
235 }
236 
AnswerCall(int32_t callId,int32_t videoState)237 int32_t CallManagerProxy::AnswerCall(int32_t callId, int32_t videoState)
238 {
239     if (ReConnectService() != TELEPHONY_SUCCESS) {
240         TELEPHONY_LOGE("ipc reconnect failed!");
241         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
242     }
243     std::lock_guard<std::mutex> lock(mutex_);
244     int32_t errCode = callManagerServicePtr_->AnswerCall(callId, videoState);
245     if (errCode != TELEPHONY_SUCCESS) {
246         TELEPHONY_LOGE("AnswerCall failed, errcode:%{public}d", errCode);
247         return errCode;
248     }
249     return TELEPHONY_SUCCESS;
250 }
251 
RejectCall(int32_t callId,bool isSendSms,std::u16string content)252 int32_t CallManagerProxy::RejectCall(int32_t callId, bool isSendSms, std::u16string content)
253 {
254     if (ReConnectService() != TELEPHONY_SUCCESS) {
255         TELEPHONY_LOGE("ipc reconnect failed!");
256         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
257     }
258     std::lock_guard<std::mutex> lock(mutex_);
259     int32_t errCode = callManagerServicePtr_->RejectCall(callId, isSendSms, content);
260     if (errCode != TELEPHONY_SUCCESS) {
261         TELEPHONY_LOGE("RejectCall failed, errcode:%{public}d", errCode);
262         return errCode;
263     }
264     return TELEPHONY_SUCCESS;
265 }
266 
HangUpCall(int32_t callId)267 int32_t CallManagerProxy::HangUpCall(int32_t callId)
268 {
269     if (ReConnectService() != TELEPHONY_SUCCESS) {
270         TELEPHONY_LOGE("ipc reconnect failed!");
271         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
272     }
273     std::lock_guard<std::mutex> lock(mutex_);
274     int32_t errCode = callManagerServicePtr_->HangUpCall(callId);
275     if (errCode != TELEPHONY_SUCCESS) {
276         TELEPHONY_LOGE("HangUpCall failed, errcode:%{public}d", errCode);
277         return errCode;
278     }
279     return TELEPHONY_SUCCESS;
280 }
281 
GetCallState()282 int32_t CallManagerProxy::GetCallState()
283 {
284     if (ReConnectService() != TELEPHONY_SUCCESS) {
285         TELEPHONY_LOGE("ipc reconnect failed!");
286         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
287     }
288     std::lock_guard<std::mutex> lock(mutex_);
289     int32_t errCode = callManagerServicePtr_->GetCallState();
290     if (errCode != TELEPHONY_SUCCESS) {
291         TELEPHONY_LOGE("GetCallState failed, errcode:%{public}d", errCode);
292         return errCode;
293     }
294     return TELEPHONY_SUCCESS;
295 }
296 
HoldCall(int32_t callId)297 int32_t CallManagerProxy::HoldCall(int32_t callId)
298 {
299     if (ReConnectService() != TELEPHONY_SUCCESS) {
300         TELEPHONY_LOGE("ipc reconnect failed!");
301         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
302     }
303     std::lock_guard<std::mutex> lock(mutex_);
304     int32_t errCode = callManagerServicePtr_->HoldCall(callId);
305     if (errCode != TELEPHONY_SUCCESS) {
306         TELEPHONY_LOGE("HoldCall failed, errcode:%{public}d", errCode);
307         return errCode;
308     }
309     return TELEPHONY_SUCCESS;
310 }
311 
UnHoldCall(int32_t callId)312 int32_t CallManagerProxy::UnHoldCall(int32_t callId)
313 {
314     if (ReConnectService() != TELEPHONY_SUCCESS) {
315         TELEPHONY_LOGE("ipc reconnect failed!");
316         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
317     }
318     std::lock_guard<std::mutex> lock(mutex_);
319     int32_t errCode = callManagerServicePtr_->UnHoldCall(callId);
320     if (errCode != TELEPHONY_SUCCESS) {
321         TELEPHONY_LOGE("UnHoldCall failed, errcode:%{public}d", errCode);
322         return errCode;
323     }
324     return TELEPHONY_SUCCESS;
325 }
326 
SwitchCall(int32_t callId)327 int32_t CallManagerProxy::SwitchCall(int32_t callId)
328 {
329     if (ReConnectService() != TELEPHONY_SUCCESS) {
330         TELEPHONY_LOGE("ipc reconnect failed!");
331         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
332     }
333     std::lock_guard<std::mutex> lock(mutex_);
334     int32_t errCode = callManagerServicePtr_->SwitchCall(callId);
335     if (errCode != TELEPHONY_SUCCESS) {
336         TELEPHONY_LOGE("SwitchCall failed, errcode:%{public}d", errCode);
337         return errCode;
338     }
339     return TELEPHONY_SUCCESS;
340 }
341 
CombineConference(int32_t callId)342 int32_t CallManagerProxy::CombineConference(int32_t callId)
343 {
344     if (ReConnectService() != TELEPHONY_SUCCESS) {
345         TELEPHONY_LOGE("ipc reconnect failed!");
346         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
347     }
348     std::lock_guard<std::mutex> lock(mutex_);
349     int32_t errCode = callManagerServicePtr_->CombineConference(callId);
350     if (errCode != TELEPHONY_SUCCESS) {
351         TELEPHONY_LOGE("CombineConference failed, errcode:%{public}d", errCode);
352         return errCode;
353     }
354     return TELEPHONY_SUCCESS;
355 }
356 
SeparateConference(int32_t callId)357 int32_t CallManagerProxy::SeparateConference(int32_t callId)
358 {
359     if (ReConnectService() != TELEPHONY_SUCCESS) {
360         TELEPHONY_LOGE("ipc reconnect failed!");
361         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
362     }
363     std::lock_guard<std::mutex> lock(mutex_);
364     int32_t errCode = callManagerServicePtr_->SeparateConference(callId);
365     if (errCode != TELEPHONY_SUCCESS) {
366         TELEPHONY_LOGE("SeparateConference failed, errcode:%{public}d", errCode);
367         return errCode;
368     }
369     return TELEPHONY_SUCCESS;
370 }
371 
GetMainCallId(int32_t & callId)372 int32_t CallManagerProxy::GetMainCallId(int32_t &callId)
373 {
374     if (ReConnectService() != TELEPHONY_SUCCESS) {
375         TELEPHONY_LOGE("ipc reconnect failed!");
376         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
377     }
378     std::lock_guard<std::mutex> lock(mutex_);
379     int32_t errCode = callManagerServicePtr_->GetMainCallId(callId);
380     if (errCode != TELEPHONY_SUCCESS) {
381         TELEPHONY_LOGE("GetMainCallId failed, errcode:%{public}d", errCode);
382         return errCode;
383     }
384     return TELEPHONY_SUCCESS;
385 }
386 
GetSubCallIdList(int32_t callId)387 std::vector<std::u16string> CallManagerProxy::GetSubCallIdList(int32_t callId)
388 {
389     std::vector<std::u16string> list;
390     if (ReConnectService() != TELEPHONY_SUCCESS) {
391         TELEPHONY_LOGE("ipc reconnect failed!");
392         return list;
393     }
394     std::lock_guard<std::mutex> lock(mutex_);
395     list = callManagerServicePtr_->GetSubCallIdList(callId);
396     return list;
397 }
398 
GetCallIdListForConference(int32_t callId)399 std::vector<std::u16string> CallManagerProxy::GetCallIdListForConference(int32_t callId)
400 {
401     std::vector<std::u16string> list;
402     if (ReConnectService() != TELEPHONY_SUCCESS) {
403         TELEPHONY_LOGE("ipc reconnect failed!");
404         return list;
405     }
406     std::lock_guard<std::mutex> lock(mutex_);
407     list = callManagerServicePtr_->GetCallIdListForConference(callId);
408     return list;
409 }
410 
GetCallWaiting(int32_t slotId)411 int32_t CallManagerProxy::GetCallWaiting(int32_t slotId)
412 {
413     if (ReConnectService() != TELEPHONY_SUCCESS) {
414         TELEPHONY_LOGE("ipc reconnect failed!");
415         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
416     }
417     std::lock_guard<std::mutex> lock(mutex_);
418     int32_t errCode = callManagerServicePtr_->GetCallWaiting(slotId);
419     if (errCode != TELEPHONY_SUCCESS) {
420         TELEPHONY_LOGE("GetCallWaiting failed, errcode:%{public}d", errCode);
421         return errCode;
422     }
423     return TELEPHONY_SUCCESS;
424 }
425 
SetCallWaiting(int32_t slotId,bool activate)426 int32_t CallManagerProxy::SetCallWaiting(int32_t slotId, bool activate)
427 {
428     if (ReConnectService() != TELEPHONY_SUCCESS) {
429         TELEPHONY_LOGE("ipc reconnect failed!");
430         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
431     }
432     std::lock_guard<std::mutex> lock(mutex_);
433     int32_t errCode = callManagerServicePtr_->SetCallWaiting(slotId, activate);
434     if (errCode != TELEPHONY_SUCCESS) {
435         TELEPHONY_LOGE("SetCallWaiting failed, errcode:%{public}d", errCode);
436         return errCode;
437     }
438     return TELEPHONY_SUCCESS;
439 }
440 
GetCallRestriction(int32_t slotId,CallRestrictionType type)441 int32_t CallManagerProxy::GetCallRestriction(int32_t slotId, CallRestrictionType type)
442 {
443     if (ReConnectService() != TELEPHONY_SUCCESS) {
444         TELEPHONY_LOGE("ipc reconnect failed!");
445         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
446     }
447     std::lock_guard<std::mutex> lock(mutex_);
448     int32_t errCode = callManagerServicePtr_->GetCallRestriction(slotId, type);
449     if (errCode != TELEPHONY_SUCCESS) {
450         TELEPHONY_LOGE("GetCallRestriction failed, errcode:%{public}d", errCode);
451         return errCode;
452     }
453     return TELEPHONY_SUCCESS;
454 }
455 
SetCallRestriction(int32_t slotId,CallRestrictionInfo & info)456 int32_t CallManagerProxy::SetCallRestriction(int32_t slotId, CallRestrictionInfo &info)
457 {
458     if (ReConnectService() != TELEPHONY_SUCCESS) {
459         TELEPHONY_LOGE("ipc reconnect failed!");
460         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
461     }
462     std::lock_guard<std::mutex> lock(mutex_);
463     int32_t errCode = callManagerServicePtr_->SetCallRestriction(slotId, info);
464     if (errCode != TELEPHONY_SUCCESS) {
465         TELEPHONY_LOGE("SetCallRestriction failed, errcode:%{public}d", errCode);
466         return errCode;
467     }
468     return TELEPHONY_SUCCESS;
469 }
470 
GetCallTransferInfo(int32_t slotId,CallTransferType type)471 int32_t CallManagerProxy::GetCallTransferInfo(int32_t slotId, CallTransferType type)
472 {
473     if (ReConnectService() != TELEPHONY_SUCCESS) {
474         TELEPHONY_LOGE("ipc reconnect failed!");
475         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
476     }
477     std::lock_guard<std::mutex> lock(mutex_);
478     int32_t errCode = callManagerServicePtr_->GetCallTransferInfo(slotId, type);
479     if (errCode != TELEPHONY_SUCCESS) {
480         TELEPHONY_LOGE("GetCallTransferInfo failed, errcode:%{public}d", errCode);
481         return errCode;
482     }
483     return TELEPHONY_SUCCESS;
484 }
485 
SetCallTransferInfo(int32_t slotId,CallTransferInfo & info)486 int32_t CallManagerProxy::SetCallTransferInfo(int32_t slotId, CallTransferInfo &info)
487 {
488     if (ReConnectService() != TELEPHONY_SUCCESS) {
489         TELEPHONY_LOGE("ipc reconnect failed!");
490         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
491     }
492     std::lock_guard<std::mutex> lock(mutex_);
493     int32_t errCode = callManagerServicePtr_->SetCallTransferInfo(slotId, info);
494     if (errCode != TELEPHONY_SUCCESS) {
495         TELEPHONY_LOGE("SetCallTransferInfo failed, errcode:%{public}d", errCode);
496         return errCode;
497     }
498     return TELEPHONY_SUCCESS;
499 }
500 
SetCallPreferenceMode(int32_t slotId,int32_t mode)501 int32_t CallManagerProxy::SetCallPreferenceMode(int32_t slotId, int32_t mode)
502 {
503     if (ReConnectService() != TELEPHONY_SUCCESS) {
504         TELEPHONY_LOGE("ipc reconnect failed!");
505         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
506     }
507     std::lock_guard<std::mutex> lock(mutex_);
508     int32_t errCode = callManagerServicePtr_->SetCallPreferenceMode(slotId, mode);
509     if (errCode != TELEPHONY_SUCCESS) {
510         TELEPHONY_LOGE("SetCallPreferenceMode failed, errcode:%{public}d", errCode);
511         return errCode;
512     }
513     return TELEPHONY_SUCCESS;
514 }
515 
StartDtmf(int32_t callId,char str)516 int32_t CallManagerProxy::StartDtmf(int32_t callId, char str)
517 {
518     if (ReConnectService() != TELEPHONY_SUCCESS) {
519         TELEPHONY_LOGE("ipc reconnect failed!");
520         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
521     }
522     std::lock_guard<std::mutex> lock(mutex_);
523     int32_t errCode = callManagerServicePtr_->StartDtmf(callId, str);
524     if (errCode != TELEPHONY_SUCCESS) {
525         TELEPHONY_LOGE("StartDtmf failed, errcode:%{public}d", errCode);
526         return errCode;
527     }
528     return TELEPHONY_SUCCESS;
529 }
530 
StopDtmf(int32_t callId)531 int32_t CallManagerProxy::StopDtmf(int32_t callId)
532 {
533     if (ReConnectService() != TELEPHONY_SUCCESS) {
534         TELEPHONY_LOGE("ipc reconnect failed!");
535         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
536     }
537     std::lock_guard<std::mutex> lock(mutex_);
538     int32_t errCode = callManagerServicePtr_->StopDtmf(callId);
539     if (errCode != TELEPHONY_SUCCESS) {
540         TELEPHONY_LOGE("StopDtmf failed, errcode:%{public}d", errCode);
541         return errCode;
542     }
543     return TELEPHONY_SUCCESS;
544 }
545 
IsRinging()546 bool CallManagerProxy::IsRinging()
547 {
548     if (ReConnectService() != TELEPHONY_SUCCESS) {
549         TELEPHONY_LOGE("ipc reconnect failed!");
550         return false;
551     }
552     std::lock_guard<std::mutex> lock(mutex_);
553     return callManagerServicePtr_->IsRinging();
554 }
555 
HasCall()556 bool CallManagerProxy::HasCall()
557 {
558     if (ReConnectService() != TELEPHONY_SUCCESS) {
559         TELEPHONY_LOGE("ipc reconnect failed!");
560         return false;
561     }
562     std::lock_guard<std::mutex> lock(mutex_);
563     return callManagerServicePtr_->HasCall();
564 }
565 
IsNewCallAllowed()566 bool CallManagerProxy::IsNewCallAllowed()
567 {
568     if (ReConnectService() != TELEPHONY_SUCCESS) {
569         TELEPHONY_LOGE("ipc reconnect failed!");
570         return false;
571     }
572     std::lock_guard<std::mutex> lock(mutex_);
573     return callManagerServicePtr_->IsNewCallAllowed();
574 }
575 
IsInEmergencyCall()576 bool CallManagerProxy::IsInEmergencyCall()
577 {
578     if (ReConnectService() != TELEPHONY_SUCCESS) {
579         TELEPHONY_LOGE("ipc reconnect failed!");
580         return false;
581     }
582     std::lock_guard<std::mutex> lock(mutex_);
583     return callManagerServicePtr_->IsInEmergencyCall();
584 }
585 
IsEmergencyPhoneNumber(std::u16string & number,int32_t slotId,int32_t & errorCode)586 bool CallManagerProxy::IsEmergencyPhoneNumber(std::u16string &number, int32_t slotId, int32_t &errorCode)
587 {
588     if (ReConnectService() != TELEPHONY_SUCCESS) {
589         TELEPHONY_LOGE("ipc reconnect failed!");
590         return false;
591     }
592     std::lock_guard<std::mutex> lock(mutex_);
593     return callManagerServicePtr_->IsEmergencyPhoneNumber(number, slotId, errorCode);
594 }
595 
FormatPhoneNumber(std::u16string & number,std::u16string & countryCode,std::u16string & formatNumber)596 int32_t CallManagerProxy::FormatPhoneNumber(
597     std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber)
598 {
599     if (ReConnectService() != TELEPHONY_SUCCESS) {
600         TELEPHONY_LOGE("ipc reconnect failed!");
601         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
602     }
603     std::lock_guard<std::mutex> lock(mutex_);
604     int32_t errCode = callManagerServicePtr_->FormatPhoneNumber(number, countryCode, formatNumber);
605     if (errCode != TELEPHONY_SUCCESS) {
606         TELEPHONY_LOGE("FormatPhoneNumber failed, errcode:%{public}d", errCode);
607         return errCode;
608     }
609     return TELEPHONY_SUCCESS;
610 }
611 
FormatPhoneNumberToE164(std::u16string & number,std::u16string & countryCode,std::u16string & formatNumber)612 int32_t CallManagerProxy::FormatPhoneNumberToE164(
613     std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber)
614 {
615     if (ReConnectService() != TELEPHONY_SUCCESS) {
616         TELEPHONY_LOGE("ipc reconnect failed!");
617         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
618     }
619     std::lock_guard<std::mutex> lock(mutex_);
620     int32_t errCode = callManagerServicePtr_->FormatPhoneNumberToE164(number, countryCode, formatNumber);
621     if (errCode != TELEPHONY_SUCCESS) {
622         TELEPHONY_LOGE("FormatPhoneNumberToE164 failed, errcode:%{public}d", errCode);
623         return errCode;
624     }
625     return TELEPHONY_SUCCESS;
626 }
627 
SetMuted(bool isMute)628 int32_t CallManagerProxy::SetMuted(bool isMute)
629 {
630     if (ReConnectService() != TELEPHONY_SUCCESS) {
631         TELEPHONY_LOGE("ipc reconnect failed!");
632         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
633     }
634     std::lock_guard<std::mutex> lock(mutex_);
635     int32_t errCode = callManagerServicePtr_->SetMuted(isMute);
636     if (errCode != TELEPHONY_SUCCESS) {
637         TELEPHONY_LOGE("SetMute failed, errcode:%{public}d", errCode);
638         return errCode;
639     }
640     return TELEPHONY_SUCCESS;
641 }
642 
MuteRinger()643 int32_t CallManagerProxy::MuteRinger()
644 {
645     if (ReConnectService() != TELEPHONY_SUCCESS) {
646         TELEPHONY_LOGE("ipc reconnect failed!");
647         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
648     }
649     std::lock_guard<std::mutex> lock(mutex_);
650     int32_t errCode = callManagerServicePtr_->MuteRinger();
651     if (errCode != TELEPHONY_SUCCESS) {
652         TELEPHONY_LOGE("MuteRinger failed, errcode:%{public}d", errCode);
653         return errCode;
654     }
655     return TELEPHONY_SUCCESS;
656 }
657 
SetAudioDevice(AudioDevice deviceType)658 int32_t CallManagerProxy::SetAudioDevice(AudioDevice deviceType)
659 {
660     if (ReConnectService() != TELEPHONY_SUCCESS) {
661         TELEPHONY_LOGE("ipc reconnect failed!");
662         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
663     }
664     std::lock_guard<std::mutex> lock(mutex_);
665     int32_t errCode = callManagerServicePtr_->SetAudioDevice(deviceType);
666     if (errCode != TELEPHONY_SUCCESS) {
667         TELEPHONY_LOGE("SetAudioDevice failed, errcode:%{public}d", errCode);
668         return errCode;
669     }
670     return TELEPHONY_SUCCESS;
671 }
672 
ControlCamera(std::u16string cameraId)673 int32_t CallManagerProxy::ControlCamera(std::u16string cameraId)
674 {
675     if (ReConnectService() != TELEPHONY_SUCCESS) {
676         TELEPHONY_LOGE("ipc reconnect failed!");
677         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
678     }
679     std::lock_guard<std::mutex> lock(mutex_);
680     int32_t errCode = callManagerServicePtr_->ControlCamera(cameraId);
681     if (errCode != TELEPHONY_SUCCESS) {
682         TELEPHONY_LOGE("ControlCamera failed, errcode:%{public}d", errCode);
683         return errCode;
684     }
685     return TELEPHONY_SUCCESS;
686 }
687 
SetPreviewWindow(VideoWindow & window)688 int32_t CallManagerProxy::SetPreviewWindow(VideoWindow &window)
689 {
690     if (ReConnectService() != TELEPHONY_SUCCESS) {
691         TELEPHONY_LOGE("ipc reconnect failed!");
692         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
693     }
694     std::lock_guard<std::mutex> lock(mutex_);
695     int32_t errCode = callManagerServicePtr_->SetPreviewWindow(window);
696     if (errCode != TELEPHONY_SUCCESS) {
697         TELEPHONY_LOGE("SetPreviewWindow failed, errcode:%{public}d", errCode);
698         return errCode;
699     }
700     return TELEPHONY_SUCCESS;
701 }
702 
SetDisplayWindow(VideoWindow & window)703 int32_t CallManagerProxy::SetDisplayWindow(VideoWindow &window)
704 {
705     if (ReConnectService() != TELEPHONY_SUCCESS) {
706         TELEPHONY_LOGE("ipc reconnect failed!");
707         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
708     }
709     std::lock_guard<std::mutex> lock(mutex_);
710     int32_t errCode = callManagerServicePtr_->SetDisplayWindow(window);
711     if (errCode != TELEPHONY_SUCCESS) {
712         TELEPHONY_LOGE("SetDisplayWindow failed, errcode:%{public}d", errCode);
713         return errCode;
714     }
715     return TELEPHONY_SUCCESS;
716 }
717 
SetCameraZoom(float zoomRatio)718 int32_t CallManagerProxy::SetCameraZoom(float zoomRatio)
719 {
720     if (ReConnectService() != TELEPHONY_SUCCESS) {
721         TELEPHONY_LOGE("ipc reconnect failed!");
722         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
723     }
724     std::lock_guard<std::mutex> lock(mutex_);
725     int32_t errCode = callManagerServicePtr_->SetCameraZoom(zoomRatio);
726     if (errCode != TELEPHONY_SUCCESS) {
727         TELEPHONY_LOGE("SetCameraZoom failed, errcode:%{public}d", errCode);
728         return errCode;
729     }
730     return TELEPHONY_SUCCESS;
731 }
732 
SetPausePicture(std::u16string path)733 int32_t CallManagerProxy::SetPausePicture(std::u16string path)
734 {
735     if (ReConnectService() != TELEPHONY_SUCCESS) {
736         TELEPHONY_LOGE("ipc reconnect failed!");
737         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
738     }
739     std::lock_guard<std::mutex> lock(mutex_);
740     int32_t errCode = callManagerServicePtr_->SetPausePicture(path);
741     if (errCode != TELEPHONY_SUCCESS) {
742         TELEPHONY_LOGE("SetPausePicture failed, errcode:%{public}d", errCode);
743         return errCode;
744     }
745     return TELEPHONY_SUCCESS;
746 }
747 
SetDeviceDirection(int32_t rotation)748 int32_t CallManagerProxy::SetDeviceDirection(int32_t rotation)
749 {
750     if (ReConnectService() != TELEPHONY_SUCCESS) {
751         TELEPHONY_LOGE("ipc reconnect failed!");
752         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
753     }
754     std::lock_guard<std::mutex> lock(mutex_);
755     int32_t errCode = callManagerServicePtr_->SetDeviceDirection(rotation);
756     if (errCode != TELEPHONY_SUCCESS) {
757         TELEPHONY_LOGE("SetDeviceDirection failed, errcode:%{public}d", errCode);
758         return errCode;
759     }
760     return TELEPHONY_SUCCESS;
761 }
762 
GetImsConfig(int32_t slotId,ImsConfigItem item)763 int32_t CallManagerProxy::GetImsConfig(int32_t slotId, ImsConfigItem item)
764 {
765     if (ReConnectService() != TELEPHONY_SUCCESS) {
766         TELEPHONY_LOGE("ipc reconnect failed!");
767         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
768     }
769     std::lock_guard<std::mutex> lock(mutex_);
770     int32_t errCode = callManagerServicePtr_->GetImsConfig(slotId, item);
771     if (errCode != TELEPHONY_SUCCESS) {
772         TELEPHONY_LOGE("GetImsConfig failed, errcode:%{public}d", errCode);
773         return errCode;
774     }
775     return TELEPHONY_SUCCESS;
776 }
777 
SetImsConfig(int32_t slotId,ImsConfigItem item,std::u16string & value)778 int32_t CallManagerProxy::SetImsConfig(int32_t slotId, ImsConfigItem item, std::u16string &value)
779 {
780     if (ReConnectService() != TELEPHONY_SUCCESS) {
781         TELEPHONY_LOGE("ipc reconnect failed!");
782         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
783     }
784     std::lock_guard<std::mutex> lock(mutex_);
785     int32_t errCode = callManagerServicePtr_->SetImsConfig(slotId, item, value);
786     if (errCode != TELEPHONY_SUCCESS) {
787         TELEPHONY_LOGE("SetImsConfig failed, errcode:%{public}d", errCode);
788         return errCode;
789     }
790     return TELEPHONY_SUCCESS;
791 }
792 
GetImsFeatureValue(int32_t slotId,FeatureType type)793 int32_t CallManagerProxy::GetImsFeatureValue(int32_t slotId, FeatureType type)
794 {
795     if (ReConnectService() != TELEPHONY_SUCCESS) {
796         TELEPHONY_LOGE("ipc reconnect failed!");
797         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
798     }
799     std::lock_guard<std::mutex> lock(mutex_);
800     int32_t errCode = callManagerServicePtr_->GetImsFeatureValue(slotId, type);
801     if (errCode != TELEPHONY_SUCCESS) {
802         TELEPHONY_LOGE("GetImsFeatureValue failed, errcode:%{public}d", errCode);
803         return errCode;
804     }
805     return TELEPHONY_SUCCESS;
806 }
807 
SetImsFeatureValue(int32_t slotId,FeatureType type,int32_t value)808 int32_t CallManagerProxy::SetImsFeatureValue(int32_t slotId, FeatureType type, int32_t value)
809 {
810     if (ReConnectService() != TELEPHONY_SUCCESS) {
811         TELEPHONY_LOGE("ipc reconnect failed!");
812         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
813     }
814     std::lock_guard<std::mutex> lock(mutex_);
815     int32_t errCode = callManagerServicePtr_->SetImsFeatureValue(slotId, type, value);
816     if (errCode != TELEPHONY_SUCCESS) {
817         TELEPHONY_LOGE("SetImsFeatureValue failed, errcode:%{public}d", errCode);
818         return errCode;
819     }
820     return TELEPHONY_SUCCESS;
821 }
822 
UpdateImsCallMode(int32_t callId,ImsCallMode mode)823 int32_t CallManagerProxy::UpdateImsCallMode(int32_t callId, ImsCallMode mode)
824 {
825     if (ReConnectService() != TELEPHONY_SUCCESS) {
826         TELEPHONY_LOGE("ipc reconnect failed!");
827         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
828     }
829     std::lock_guard<std::mutex> lock(mutex_);
830     int32_t errCode = callManagerServicePtr_->UpdateImsCallMode(callId, mode);
831     if (errCode != TELEPHONY_SUCCESS) {
832         TELEPHONY_LOGE("UpdateImsCallMode failed, errcode:%{public}d", errCode);
833         return errCode;
834     }
835     return TELEPHONY_SUCCESS;
836 }
837 
EnableImsSwitch(int32_t slotId)838 int32_t CallManagerProxy::EnableImsSwitch(int32_t slotId)
839 {
840     if (ReConnectService() != TELEPHONY_SUCCESS) {
841         TELEPHONY_LOGE("ipc reconnect failed!");
842         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
843     }
844     std::lock_guard<std::mutex> lock(mutex_);
845     int32_t errCode = callManagerServicePtr_->EnableImsSwitch(slotId);
846     if (errCode != TELEPHONY_SUCCESS) {
847         TELEPHONY_LOGE("EnableImsSwitch failed, errcode:%{public}d", errCode);
848         return errCode;
849     }
850     return TELEPHONY_SUCCESS;
851 }
852 
DisableImsSwitch(int32_t slotId)853 int32_t CallManagerProxy::DisableImsSwitch(int32_t slotId)
854 {
855     if (ReConnectService() != TELEPHONY_SUCCESS) {
856         TELEPHONY_LOGE("ipc reconnect failed!");
857         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
858     }
859     std::lock_guard<std::mutex> lock(mutex_);
860     int32_t errCode = callManagerServicePtr_->DisableImsSwitch(slotId);
861     if (errCode != TELEPHONY_SUCCESS) {
862         TELEPHONY_LOGE("DisableImsSwitch failed, errcode:%{public}d", errCode);
863         return errCode;
864     }
865     return TELEPHONY_SUCCESS;
866 }
867 
IsImsSwitchEnabled(int32_t slotId)868 int32_t CallManagerProxy::IsImsSwitchEnabled(int32_t slotId)
869 {
870     if (ReConnectService() != TELEPHONY_SUCCESS) {
871         TELEPHONY_LOGE("ipc reconnect failed!");
872         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
873     }
874     std::lock_guard<std::mutex> lock(mutex_);
875     int32_t errCode = callManagerServicePtr_->IsImsSwitchEnabled(slotId);
876     if (errCode != TELEPHONY_SUCCESS) {
877         TELEPHONY_LOGE("IsImsSwitchEnabled failed, errcode:%{public}d", errCode);
878         return errCode;
879     }
880     return TELEPHONY_SUCCESS;
881 }
882 
EnableLteEnhanceMode(int32_t slotId)883 int32_t CallManagerProxy::EnableLteEnhanceMode(int32_t slotId)
884 {
885     if (ReConnectService() != TELEPHONY_SUCCESS) {
886         TELEPHONY_LOGE("ipc reconnect failed!");
887         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
888     }
889     std::lock_guard<std::mutex> lock(mutex_);
890     int32_t errCode = callManagerServicePtr_->EnableLteEnhanceMode(slotId);
891     if (errCode != TELEPHONY_SUCCESS) {
892         TELEPHONY_LOGE("EnableLteEnhanceMode failed, errcode:%{public}d", errCode);
893         return errCode;
894     }
895     return TELEPHONY_SUCCESS;
896 }
897 
DisableLteEnhanceMode(int32_t slotId)898 int32_t CallManagerProxy::DisableLteEnhanceMode(int32_t slotId)
899 {
900     if (ReConnectService() != TELEPHONY_SUCCESS) {
901         TELEPHONY_LOGE("ipc reconnect failed!");
902         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
903     }
904     std::lock_guard<std::mutex> lock(mutex_);
905     int32_t errCode = callManagerServicePtr_->DisableLteEnhanceMode(slotId);
906     if (errCode != TELEPHONY_SUCCESS) {
907         TELEPHONY_LOGE("DisableLteEnhanceMode failed, errcode:%{public}d", errCode);
908         return errCode;
909     }
910     return TELEPHONY_SUCCESS;
911 }
912 
IsLteEnhanceModeEnabled(int32_t slotId)913 int32_t CallManagerProxy::IsLteEnhanceModeEnabled(int32_t slotId)
914 {
915     if (ReConnectService() != TELEPHONY_SUCCESS) {
916         TELEPHONY_LOGE("ipc reconnect failed!");
917         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
918     }
919     std::lock_guard<std::mutex> lock(mutex_);
920     int32_t errCode = callManagerServicePtr_->IsLteEnhanceModeEnabled(slotId);
921     if (errCode != TELEPHONY_SUCCESS) {
922         TELEPHONY_LOGE("GetLteEnhanceMode failed, errcode:%{public}d", errCode);
923         return errCode;
924     }
925     return TELEPHONY_SUCCESS;
926 }
927 
StartRtt(int32_t callId,std::u16string & msg)928 int32_t CallManagerProxy::StartRtt(int32_t callId, std::u16string &msg)
929 {
930     if (ReConnectService() != TELEPHONY_SUCCESS) {
931         TELEPHONY_LOGE("ipc reconnect failed!");
932         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
933     }
934     std::lock_guard<std::mutex> lock(mutex_);
935     int32_t errCode = callManagerServicePtr_->StartRtt(callId, msg);
936     if (errCode != TELEPHONY_SUCCESS) {
937         TELEPHONY_LOGE("StartRtt failed, errcode:%{public}d", errCode);
938         return errCode;
939     }
940     return TELEPHONY_SUCCESS;
941 }
942 
StopRtt(int32_t callId)943 int32_t CallManagerProxy::StopRtt(int32_t callId)
944 {
945     if (ReConnectService() != TELEPHONY_SUCCESS) {
946         TELEPHONY_LOGE("ipc reconnect failed!");
947         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
948     }
949     std::lock_guard<std::mutex> lock(mutex_);
950     int32_t errCode = callManagerServicePtr_->StopRtt(callId);
951     if (errCode != TELEPHONY_SUCCESS) {
952         TELEPHONY_LOGE("StopRtt failed, errcode:%{public}d", errCode);
953         return errCode;
954     }
955     return TELEPHONY_SUCCESS;
956 }
957 
JoinConference(int32_t callId,std::vector<std::u16string> & numberList)958 int32_t CallManagerProxy::JoinConference(int32_t callId, std::vector<std::u16string> &numberList)
959 {
960     if (ReConnectService() != TELEPHONY_SUCCESS) {
961         TELEPHONY_LOGE("ipc reconnect failed!");
962         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
963     }
964     std::lock_guard<std::mutex> lock(mutex_);
965     int32_t errCode = callManagerServicePtr_->JoinConference(callId, numberList);
966     if (errCode != TELEPHONY_SUCCESS) {
967         TELEPHONY_LOGE("JoinConference failed, errcode:%{public}d", errCode);
968         return errCode;
969     }
970     return TELEPHONY_SUCCESS;
971 }
972 
ReportOttCallDetailsInfo(std::vector<OttCallDetailsInfo> & ottVec)973 int32_t CallManagerProxy::ReportOttCallDetailsInfo(std::vector<OttCallDetailsInfo> &ottVec)
974 {
975     if (ReConnectService() != TELEPHONY_SUCCESS) {
976         TELEPHONY_LOGE("ipc reconnect failed!");
977         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
978     }
979     std::lock_guard<std::mutex> lock(mutex_);
980     int32_t errCode = callManagerServicePtr_->ReportOttCallDetailsInfo(ottVec);
981     if (errCode != TELEPHONY_SUCCESS) {
982         TELEPHONY_LOGE("ReportOttCallInfo failed, errcode:%{public}d", errCode);
983         return errCode;
984     }
985     return TELEPHONY_SUCCESS;
986 }
987 
ReportOttCallEventInfo(OttCallEventInfo & eventInfo)988 int32_t CallManagerProxy::ReportOttCallEventInfo(OttCallEventInfo &eventInfo)
989 {
990     if (ReConnectService() != TELEPHONY_SUCCESS) {
991         TELEPHONY_LOGE("ipc reconnect failed!");
992         return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL;
993     }
994     std::lock_guard<std::mutex> lock(mutex_);
995     int32_t errCode = callManagerServicePtr_->ReportOttCallEventInfo(eventInfo);
996     if (errCode != TELEPHONY_SUCCESS) {
997         TELEPHONY_LOGE("ReportOttCallEventInfo failed, errcode:%{public}d", errCode);
998         return errCode;
999     }
1000     return TELEPHONY_SUCCESS;
1001 }
1002 
GetProxyObjectPtr(CallManagerProxyType proxyType)1003 sptr<IRemoteObject> CallManagerProxy::GetProxyObjectPtr(CallManagerProxyType proxyType)
1004 {
1005     if (ReConnectService() != TELEPHONY_SUCCESS) {
1006         TELEPHONY_LOGE("ipc reconnect failed!");
1007         return nullptr;
1008     }
1009     std::lock_guard<std::mutex> lock(mutex_);
1010     sptr<IRemoteObject> ptr = callManagerServicePtr_->GetProxyObjectPtr(proxyType);
1011     if (ptr == nullptr) {
1012         TELEPHONY_LOGE("GetProxyObjectPtr failed");
1013         return nullptr;
1014     }
1015     return ptr;
1016 }
1017 } // namespace Telephony
1018 } // namespace OHOS
1019