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