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_client.h"
17
18 #include <memory>
19
20 #include "ability_manager_client.h"
21 #include "string_wrapper.h"
22 #include "telephony_errors.h"
23
24 #include "call_manager_proxy.h"
25
26 #include "parameter.h"
27
28 namespace OHOS {
29 namespace Telephony {
30 std::shared_ptr<CallManagerProxy> g_callManagerProxy = nullptr;
31
32 const std::string KEY_VOICECALL_CAP = "const.telephony.voice.capable";
33 const int32_t VOICECALL_CAP_VAL_LEN = 6;
34
CallManagerClient()35 CallManagerClient::CallManagerClient() {}
36
~CallManagerClient()37 CallManagerClient::~CallManagerClient() {}
38
Init(int32_t systemAbilityId)39 void CallManagerClient::Init(int32_t systemAbilityId)
40 {
41 if (g_callManagerProxy == nullptr) {
42 g_callManagerProxy = DelayedSingleton<CallManagerProxy>::GetInstance();
43 if (g_callManagerProxy == nullptr) {
44 TELEPHONY_LOGE("g_callManagerProxy is nullptr");
45 return;
46 }
47 g_callManagerProxy->Init(systemAbilityId);
48 }
49 TELEPHONY_LOGI("CallManagerClient init success!");
50 }
51
UnInit()52 void CallManagerClient::UnInit()
53 {
54 if (g_callManagerProxy != nullptr) {
55 g_callManagerProxy->UnInit();
56 } else {
57 TELEPHONY_LOGE("init first please!");
58 }
59 }
60
RegisterCallBack(std::unique_ptr<CallManagerCallback> callback)61 int32_t CallManagerClient::RegisterCallBack(std::unique_ptr<CallManagerCallback> callback)
62 {
63 if (g_callManagerProxy != nullptr) {
64 return g_callManagerProxy->RegisterCallBack(std::move(callback));
65 } else {
66 TELEPHONY_LOGE("init first please!");
67 return TELEPHONY_ERR_UNINIT;
68 }
69 }
70
UnRegisterCallBack()71 int32_t CallManagerClient::UnRegisterCallBack()
72 {
73 if (g_callManagerProxy != nullptr) {
74 return g_callManagerProxy->UnRegisterCallBack();
75 } else {
76 TELEPHONY_LOGE("init first please!");
77 return TELEPHONY_ERR_UNINIT;
78 }
79 }
80
DialCall(std::u16string number,AppExecFwk::PacMap & extras)81 int32_t CallManagerClient::DialCall(std::u16string number, AppExecFwk::PacMap &extras)
82 {
83 if (g_callManagerProxy != nullptr) {
84 return g_callManagerProxy->DialCall(number, extras);
85 } else {
86 TELEPHONY_LOGE("init first please!");
87 return TELEPHONY_ERR_UNINIT;
88 }
89 }
90
MakeCall(std::string number)91 int32_t CallManagerClient::MakeCall(std::string number)
92 {
93 AAFwk::Want want;
94 AppExecFwk::ElementName element("", "com.ohos.contacts", "com.ohos.contacts.MainAbility");
95 want.SetElement(element);
96 AAFwk::WantParams wantParams;
97 wantParams.SetParam("phoneNumber", AAFwk::String::Box(number));
98 wantParams.SetParam("pageFlag", AAFwk::String::Box("page_flag_edit_before_calling"));
99 want.SetParams(wantParams);
100 ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want);
101 if (err != ERR_OK) {
102 TELEPHONY_LOGE("Fail to make call, err:%{public}d", err);
103 return TELEPHONY_ERR_FAIL;
104 }
105 return TELEPHONY_SUCCESS;
106 }
107
AnswerCall(int32_t callId,int32_t videoState)108 int32_t CallManagerClient::AnswerCall(int32_t callId, int32_t videoState)
109 {
110 if (g_callManagerProxy != nullptr) {
111 return g_callManagerProxy->AnswerCall(callId, videoState);
112 } else {
113 TELEPHONY_LOGE("init first please!");
114 return TELEPHONY_ERR_UNINIT;
115 }
116 }
117
RejectCall(int32_t callId,bool isSendSms,std::u16string content)118 int32_t CallManagerClient::RejectCall(int32_t callId, bool isSendSms, std::u16string content)
119 {
120 if (g_callManagerProxy != nullptr) {
121 return g_callManagerProxy->RejectCall(callId, isSendSms, content);
122 } else {
123 TELEPHONY_LOGE("init first please!");
124 return TELEPHONY_ERR_UNINIT;
125 }
126 }
127
HangUpCall(int32_t callId)128 int32_t CallManagerClient::HangUpCall(int32_t callId)
129 {
130 if (g_callManagerProxy != nullptr) {
131 return g_callManagerProxy->HangUpCall(callId);
132 } else {
133 TELEPHONY_LOGE("init first please!");
134 return TELEPHONY_ERR_UNINIT;
135 }
136 }
137
GetCallState()138 int32_t CallManagerClient::GetCallState()
139 {
140 if (g_callManagerProxy != nullptr) {
141 return g_callManagerProxy->GetCallState();
142 } else {
143 TELEPHONY_LOGE("init first please!");
144 return TELEPHONY_ERR_UNINIT;
145 }
146 }
147
HoldCall(int32_t callId)148 int32_t CallManagerClient::HoldCall(int32_t callId)
149 {
150 if (g_callManagerProxy != nullptr) {
151 return g_callManagerProxy->HoldCall(callId);
152 } else {
153 TELEPHONY_LOGE("init first please!");
154 return TELEPHONY_ERR_UNINIT;
155 }
156 }
157
UnHoldCall(int32_t callId)158 int32_t CallManagerClient::UnHoldCall(int32_t callId)
159 {
160 if (g_callManagerProxy != nullptr) {
161 return g_callManagerProxy->UnHoldCall(callId);
162 } else {
163 TELEPHONY_LOGE("init first please!");
164 return TELEPHONY_ERR_UNINIT;
165 }
166 }
167
SwitchCall(int32_t callId)168 int32_t CallManagerClient::SwitchCall(int32_t callId)
169 {
170 if (g_callManagerProxy != nullptr) {
171 return g_callManagerProxy->SwitchCall(callId);
172 } else {
173 TELEPHONY_LOGE("init first please!");
174 return TELEPHONY_ERR_UNINIT;
175 }
176 }
177
CombineConference(int32_t callId)178 int32_t CallManagerClient::CombineConference(int32_t callId)
179 {
180 if (g_callManagerProxy != nullptr) {
181 return g_callManagerProxy->CombineConference(callId);
182 } else {
183 TELEPHONY_LOGE("init first please!");
184 return TELEPHONY_ERR_UNINIT;
185 }
186 }
187
SeparateConference(int32_t callId)188 int32_t CallManagerClient::SeparateConference(int32_t callId)
189 {
190 if (g_callManagerProxy != nullptr) {
191 return g_callManagerProxy->SeparateConference(callId);
192 } else {
193 TELEPHONY_LOGE("init first please!");
194 return TELEPHONY_ERR_UNINIT;
195 }
196 }
197
GetMainCallId(int32_t & callId)198 int32_t CallManagerClient::GetMainCallId(int32_t &callId)
199 {
200 if (g_callManagerProxy != nullptr) {
201 return g_callManagerProxy->GetMainCallId(callId);
202 } else {
203 TELEPHONY_LOGE("init first please!");
204 return TELEPHONY_ERR_UNINIT;
205 }
206 }
207
GetSubCallIdList(int32_t callId)208 std::vector<std::u16string> CallManagerClient::GetSubCallIdList(int32_t callId)
209 {
210 if (g_callManagerProxy != nullptr) {
211 return g_callManagerProxy->GetSubCallIdList(callId);
212 } else {
213 TELEPHONY_LOGE("init first please!");
214 std::vector<std::u16string> vec;
215 vec.clear();
216 return vec;
217 }
218 }
219
GetCallIdListForConference(int32_t callId)220 std::vector<std::u16string> CallManagerClient::GetCallIdListForConference(int32_t callId)
221 {
222 if (g_callManagerProxy != nullptr) {
223 return g_callManagerProxy->GetCallIdListForConference(callId);
224 } else {
225 TELEPHONY_LOGE("init first please!");
226 std::vector<std::u16string> vec;
227 vec.clear();
228 return vec;
229 }
230 }
231
GetCallWaiting(int32_t slotId)232 int32_t CallManagerClient::GetCallWaiting(int32_t slotId)
233 {
234 if (g_callManagerProxy != nullptr) {
235 return g_callManagerProxy->GetCallWaiting(slotId);
236 } else {
237 TELEPHONY_LOGE("init first please!");
238 return TELEPHONY_ERR_UNINIT;
239 }
240 }
241
SetCallWaiting(int32_t slotId,bool activate)242 int32_t CallManagerClient::SetCallWaiting(int32_t slotId, bool activate)
243 {
244 if (g_callManagerProxy != nullptr) {
245 return g_callManagerProxy->SetCallWaiting(slotId, activate);
246 } else {
247 TELEPHONY_LOGE("init first please!");
248 return TELEPHONY_ERR_UNINIT;
249 }
250 }
251
GetCallRestriction(int32_t slotId,CallRestrictionType type)252 int32_t CallManagerClient::GetCallRestriction(int32_t slotId, CallRestrictionType type)
253 {
254 if (g_callManagerProxy != nullptr) {
255 return g_callManagerProxy->GetCallRestriction(slotId, type);
256 } else {
257 TELEPHONY_LOGE("init first please!");
258 return TELEPHONY_ERR_UNINIT;
259 }
260 }
261
SetCallRestriction(int32_t slotId,CallRestrictionInfo & info)262 int32_t CallManagerClient::SetCallRestriction(int32_t slotId, CallRestrictionInfo &info)
263 {
264 if (g_callManagerProxy != nullptr) {
265 return g_callManagerProxy->SetCallRestriction(slotId, info);
266 } else {
267 TELEPHONY_LOGE("init first please!");
268 return TELEPHONY_ERR_UNINIT;
269 }
270 }
271
GetCallTransferInfo(int32_t slotId,CallTransferType type)272 int32_t CallManagerClient::GetCallTransferInfo(int32_t slotId, CallTransferType type)
273 {
274 if (g_callManagerProxy != nullptr) {
275 return g_callManagerProxy->GetCallTransferInfo(slotId, type);
276 } else {
277 TELEPHONY_LOGE("init first please!");
278 return TELEPHONY_ERR_UNINIT;
279 }
280 }
281
SetCallTransferInfo(int32_t slotId,CallTransferInfo & info)282 int32_t CallManagerClient::SetCallTransferInfo(int32_t slotId, CallTransferInfo &info)
283 {
284 if (g_callManagerProxy != nullptr) {
285 return g_callManagerProxy->SetCallTransferInfo(slotId, info);
286 } else {
287 TELEPHONY_LOGE("init first please!");
288 return TELEPHONY_ERR_UNINIT;
289 }
290 }
291
SetCallPreferenceMode(int32_t slotId,int32_t mode)292 int32_t CallManagerClient::SetCallPreferenceMode(int32_t slotId, int32_t mode)
293 {
294 if (g_callManagerProxy != nullptr) {
295 return g_callManagerProxy->SetCallPreferenceMode(slotId, mode);
296 } else {
297 TELEPHONY_LOGE("init first please!");
298 return TELEPHONY_ERR_UNINIT;
299 }
300 }
301
StartDtmf(int32_t callId,char str)302 int32_t CallManagerClient::StartDtmf(int32_t callId, char str)
303 {
304 if (g_callManagerProxy != nullptr) {
305 return g_callManagerProxy->StartDtmf(callId, str);
306 } else {
307 TELEPHONY_LOGE("init first please!");
308 return TELEPHONY_ERR_UNINIT;
309 }
310 }
311
StopDtmf(int32_t callId)312 int32_t CallManagerClient::StopDtmf(int32_t callId)
313 {
314 if (g_callManagerProxy != nullptr) {
315 return g_callManagerProxy->StopDtmf(callId);
316 } else {
317 TELEPHONY_LOGE("init first please!");
318 return TELEPHONY_ERR_UNINIT;
319 }
320 }
321
IsRinging()322 bool CallManagerClient::IsRinging()
323 {
324 if (g_callManagerProxy != nullptr) {
325 return g_callManagerProxy->IsRinging();
326 } else {
327 TELEPHONY_LOGE("init first please!");
328 return false;
329 }
330 }
331
HasCall()332 bool CallManagerClient::HasCall()
333 {
334 if (g_callManagerProxy != nullptr) {
335 return g_callManagerProxy->HasCall();
336 } else {
337 TELEPHONY_LOGE("init first please!");
338 return false;
339 }
340 }
341
IsNewCallAllowed()342 bool CallManagerClient::IsNewCallAllowed()
343 {
344 if (g_callManagerProxy != nullptr) {
345 return g_callManagerProxy->IsNewCallAllowed();
346 } else {
347 TELEPHONY_LOGE("init first please!");
348 return false;
349 }
350 }
351
IsInEmergencyCall()352 bool CallManagerClient::IsInEmergencyCall()
353 {
354 if (g_callManagerProxy != nullptr) {
355 return g_callManagerProxy->IsInEmergencyCall();
356 } else {
357 TELEPHONY_LOGE("init first please!");
358 return false;
359 }
360 }
361
IsEmergencyPhoneNumber(std::u16string & number,int32_t slotId,int32_t & errorCode)362 bool CallManagerClient::IsEmergencyPhoneNumber(std::u16string &number, int32_t slotId, int32_t &errorCode)
363 {
364 if (g_callManagerProxy != nullptr) {
365 return g_callManagerProxy->IsEmergencyPhoneNumber(number, slotId, errorCode);
366 } else {
367 TELEPHONY_LOGE("init first please!");
368 return false;
369 }
370 }
371
FormatPhoneNumber(std::u16string & number,std::u16string & countryCode,std::u16string & formatNumber)372 int32_t CallManagerClient::FormatPhoneNumber(
373 std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber)
374 {
375 if (g_callManagerProxy != nullptr) {
376 return g_callManagerProxy->FormatPhoneNumber(number, countryCode, formatNumber);
377 } else {
378 TELEPHONY_LOGE("init first please!");
379 return TELEPHONY_ERR_UNINIT;
380 }
381 }
382
FormatPhoneNumberToE164(std::u16string & number,std::u16string & countryCode,std::u16string & formatNumber)383 int32_t CallManagerClient::FormatPhoneNumberToE164(
384 std::u16string &number, std::u16string &countryCode, std::u16string &formatNumber)
385 {
386 if (g_callManagerProxy != nullptr) {
387 return g_callManagerProxy->FormatPhoneNumberToE164(number, countryCode, formatNumber);
388 } else {
389 TELEPHONY_LOGE("init first please!");
390 return TELEPHONY_ERR_UNINIT;
391 }
392 }
393
SetMuted(bool isMute)394 int32_t CallManagerClient::SetMuted(bool isMute)
395 {
396 if (g_callManagerProxy != nullptr) {
397 return g_callManagerProxy->SetMuted(isMute);
398 } else {
399 TELEPHONY_LOGE("init first please!");
400 return TELEPHONY_ERR_UNINIT;
401 }
402 }
403
MuteRinger()404 int32_t CallManagerClient::MuteRinger()
405 {
406 if (g_callManagerProxy != nullptr) {
407 return g_callManagerProxy->MuteRinger();
408 } else {
409 TELEPHONY_LOGE("init first please!");
410 return TELEPHONY_ERR_UNINIT;
411 }
412 }
413
SetAudioDevice(AudioDevice deviceType)414 int32_t CallManagerClient::SetAudioDevice(AudioDevice deviceType)
415 {
416 if (g_callManagerProxy != nullptr) {
417 return g_callManagerProxy->SetAudioDevice(deviceType);
418 } else {
419 TELEPHONY_LOGE("init first please!");
420 return TELEPHONY_ERR_UNINIT;
421 }
422 }
423
ControlCamera(std::u16string cameraId)424 int32_t CallManagerClient::ControlCamera(std::u16string cameraId)
425 {
426 if (g_callManagerProxy != nullptr) {
427 return g_callManagerProxy->ControlCamera(cameraId);
428 } else {
429 TELEPHONY_LOGE("init first please!");
430 return TELEPHONY_ERR_UNINIT;
431 }
432 }
433
SetPreviewWindow(VideoWindow & window)434 int32_t CallManagerClient::SetPreviewWindow(VideoWindow &window)
435 {
436 if (g_callManagerProxy != nullptr) {
437 return g_callManagerProxy->SetPreviewWindow(window);
438 } else {
439 TELEPHONY_LOGE("init first please!");
440 return TELEPHONY_ERR_UNINIT;
441 }
442 }
443
SetDisplayWindow(VideoWindow & window)444 int32_t CallManagerClient::SetDisplayWindow(VideoWindow &window)
445 {
446 if (g_callManagerProxy != nullptr) {
447 return g_callManagerProxy->SetDisplayWindow(window);
448 } else {
449 TELEPHONY_LOGE("init first please!");
450 return TELEPHONY_ERR_UNINIT;
451 }
452 }
453
SetCameraZoom(float zoomRatio)454 int32_t CallManagerClient::SetCameraZoom(float zoomRatio)
455 {
456 if (g_callManagerProxy != nullptr) {
457 return g_callManagerProxy->SetCameraZoom(zoomRatio);
458 } else {
459 TELEPHONY_LOGE("init first please!");
460 return TELEPHONY_ERR_UNINIT;
461 }
462 }
463
SetPausePicture(std::u16string path)464 int32_t CallManagerClient::SetPausePicture(std::u16string path)
465 {
466 if (g_callManagerProxy != nullptr) {
467 return g_callManagerProxy->SetPausePicture(path);
468 } else {
469 TELEPHONY_LOGE("init first please!");
470 return TELEPHONY_ERR_UNINIT;
471 }
472 }
473
SetDeviceDirection(int32_t rotation)474 int32_t CallManagerClient::SetDeviceDirection(int32_t rotation)
475 {
476 if (g_callManagerProxy != nullptr) {
477 return g_callManagerProxy->SetDeviceDirection(rotation);
478 } else {
479 TELEPHONY_LOGE("init first please!");
480 return TELEPHONY_ERR_UNINIT;
481 }
482 }
483
GetImsConfig(int32_t slotId,ImsConfigItem item)484 int32_t CallManagerClient::GetImsConfig(int32_t slotId, ImsConfigItem item)
485 {
486 if (g_callManagerProxy != nullptr) {
487 return g_callManagerProxy->GetImsConfig(slotId, item);
488 } else {
489 TELEPHONY_LOGE("init first please!");
490 return TELEPHONY_ERR_UNINIT;
491 }
492 }
493
SetImsConfig(int32_t slotId,ImsConfigItem item,std::u16string & value)494 int32_t CallManagerClient::SetImsConfig(int32_t slotId, ImsConfigItem item, std::u16string &value)
495 {
496 if (g_callManagerProxy != nullptr) {
497 return g_callManagerProxy->SetImsConfig(slotId, item, value);
498 } else {
499 TELEPHONY_LOGE("init first please!");
500 return TELEPHONY_ERR_UNINIT;
501 }
502 }
503
GetImsFeatureValue(int32_t slotId,FeatureType type)504 int32_t CallManagerClient::GetImsFeatureValue(int32_t slotId, FeatureType type)
505 {
506 if (g_callManagerProxy != nullptr) {
507 return g_callManagerProxy->GetImsFeatureValue(slotId, type);
508 } else {
509 TELEPHONY_LOGE("init first please!");
510 return TELEPHONY_ERR_UNINIT;
511 }
512 }
513
SetImsFeatureValue(int32_t slotId,FeatureType type,int32_t value)514 int32_t CallManagerClient::SetImsFeatureValue(int32_t slotId, FeatureType type, int32_t value)
515 {
516 if (g_callManagerProxy != nullptr) {
517 return g_callManagerProxy->SetImsFeatureValue(slotId, type, value);
518 } else {
519 TELEPHONY_LOGE("init first please!");
520 return TELEPHONY_ERR_UNINIT;
521 }
522 }
523
UpdateImsCallMode(int32_t callId,ImsCallMode mode)524 int32_t CallManagerClient::UpdateImsCallMode(int32_t callId, ImsCallMode mode)
525 {
526 if (g_callManagerProxy != nullptr) {
527 return g_callManagerProxy->UpdateImsCallMode(callId, mode);
528 } else {
529 TELEPHONY_LOGE("init first please!");
530 return TELEPHONY_ERR_UNINIT;
531 }
532 }
533
EnableImsSwitch(int32_t slotId)534 int32_t CallManagerClient::EnableImsSwitch(int32_t slotId)
535 {
536 if (g_callManagerProxy != nullptr) {
537 return g_callManagerProxy->EnableImsSwitch(slotId);
538 } else {
539 TELEPHONY_LOGE("init first please!");
540 return TELEPHONY_ERR_UNINIT;
541 }
542 }
543
DisableImsSwitch(int32_t slotId)544 int32_t CallManagerClient::DisableImsSwitch(int32_t slotId)
545 {
546 if (g_callManagerProxy != nullptr) {
547 return g_callManagerProxy->DisableImsSwitch(slotId);
548 } else {
549 TELEPHONY_LOGE("init first please!");
550 return TELEPHONY_ERR_UNINIT;
551 }
552 }
553
IsImsSwitchEnabled(int32_t slotId)554 int32_t CallManagerClient::IsImsSwitchEnabled(int32_t slotId)
555 {
556 if (g_callManagerProxy != nullptr) {
557 return g_callManagerProxy->IsImsSwitchEnabled(slotId);
558 } else {
559 TELEPHONY_LOGE("init first please!");
560 return TELEPHONY_ERR_UNINIT;
561 }
562 }
563
EnableLteEnhanceMode(int32_t slotId)564 int32_t CallManagerClient::EnableLteEnhanceMode(int32_t slotId)
565 {
566 if (g_callManagerProxy != nullptr) {
567 return g_callManagerProxy->EnableLteEnhanceMode(slotId);
568 } else {
569 TELEPHONY_LOGE("init first please!");
570 return TELEPHONY_ERR_UNINIT;
571 }
572 }
573
DisableLteEnhanceMode(int32_t slotId)574 int32_t CallManagerClient::DisableLteEnhanceMode(int32_t slotId)
575 {
576 if (g_callManagerProxy != nullptr) {
577 return g_callManagerProxy->DisableLteEnhanceMode(slotId);
578 } else {
579 TELEPHONY_LOGE("init first please!");
580 return TELEPHONY_ERR_UNINIT;
581 }
582 }
583
IsLteEnhanceModeEnabled(int32_t slotId)584 int32_t CallManagerClient::IsLteEnhanceModeEnabled(int32_t slotId)
585 {
586 if (g_callManagerProxy != nullptr) {
587 return g_callManagerProxy->IsLteEnhanceModeEnabled(slotId);
588 } else {
589 TELEPHONY_LOGE("init first please!");
590 return TELEPHONY_ERR_UNINIT;
591 }
592 }
593
StartRtt(int32_t callId,std::u16string & msg)594 int32_t CallManagerClient::StartRtt(int32_t callId, std::u16string &msg)
595 {
596 if (g_callManagerProxy != nullptr) {
597 return g_callManagerProxy->StartRtt(callId, msg);
598 } else {
599 TELEPHONY_LOGE("init first please!");
600 return TELEPHONY_ERR_UNINIT;
601 }
602 }
603
StopRtt(int32_t callId)604 int32_t CallManagerClient::StopRtt(int32_t callId)
605 {
606 if (g_callManagerProxy != nullptr) {
607 return g_callManagerProxy->StopRtt(callId);
608 } else {
609 TELEPHONY_LOGE("init first please!");
610 return TELEPHONY_ERR_UNINIT;
611 }
612 }
613
JoinConference(int32_t callId,std::vector<std::u16string> & numberList)614 int32_t CallManagerClient::JoinConference(int32_t callId, std::vector<std::u16string> &numberList)
615 {
616 if (g_callManagerProxy != nullptr) {
617 return g_callManagerProxy->JoinConference(callId, numberList);
618 } else {
619 TELEPHONY_LOGE("init first please!");
620 return TELEPHONY_ERR_UNINIT;
621 }
622 }
623
ReportOttCallDetailsInfo(std::vector<OttCallDetailsInfo> & ottVec)624 int32_t CallManagerClient::ReportOttCallDetailsInfo(std::vector<OttCallDetailsInfo> &ottVec)
625 {
626 if (g_callManagerProxy != nullptr) {
627 return g_callManagerProxy->ReportOttCallDetailsInfo(ottVec);
628 } else {
629 TELEPHONY_LOGE("init first please!");
630 return TELEPHONY_ERR_UNINIT;
631 }
632 }
633
ReportOttCallEventInfo(OttCallEventInfo & eventInfo)634 int32_t CallManagerClient::ReportOttCallEventInfo(OttCallEventInfo &eventInfo)
635 {
636 if (g_callManagerProxy != nullptr) {
637 return g_callManagerProxy->ReportOttCallEventInfo(eventInfo);
638 } else {
639 TELEPHONY_LOGE("init first please!");
640 return TELEPHONY_ERR_UNINIT;
641 }
642 }
643
HasVoiceCapability()644 bool CallManagerClient::HasVoiceCapability()
645 {
646 char retValue[VOICECALL_CAP_VAL_LEN + 1] = {"true"};
647 int retLen = GetParameter(KEY_VOICECALL_CAP.c_str(), "true", retValue, VOICECALL_CAP_VAL_LEN);
648 TELEPHONY_LOGI("HasVoiceCapability retValue %{public}s, retLen %{public}d", retValue, retLen);
649 if (strcmp(retValue, "false") == 0) {
650 return false;
651 }
652 return true;
653 }
654 } // namespace Telephony
655 } // namespace OHOS
656