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_base.h"
17
18 #include <securec.h>
19
20 #include "audio_control_manager.h"
21 #include "bluetooth_call_manager.h"
22 #include "call_manager_errors.h"
23 #include "cellular_call_connection.h"
24 #include "common_type.h"
25 #include "ffrt.h"
26 #include "telephony_log_wrapper.h"
27 #include "voip_call.h"
28 #include "voip_call_connection.h"
29 #include "call_manager_info.h"
30
31 namespace OHOS {
32 namespace Telephony {
CallBase(DialParaInfo & info)33 CallBase::CallBase(DialParaInfo &info)
34 : callId_(info.callId), callType_(info.callType), videoState_(info.videoState), accountNumber_(info.number),
35 bundleName_(info.bundleName), callRunningState_(CallRunningState::CALL_RUNNING_STATE_CREATE),
36 conferenceState_(TelConferenceState::TEL_CONFERENCE_IDLE), startTime_(0),
37 direction_(CallDirection::CALL_DIRECTION_IN), policyFlag_(0), callState_(info.callState), autoAnswerState_(false),
38 canUnHoldState_(true), canSwitchCallState_(true), answerVideoState_(0), isSpeakerphoneOn_(false),
39 callEndedType_(CallEndedType::UNKNOWN), callBeginTime_(0), callCreateTime_(0), callEndTime_(0), ringBeginTime_(0),
40 ringEndTime_(0), answerType_(CallAnswerType::CALL_ANSWER_MISSED), accountId_(info.accountId),
41 crsType_(info.crsType), originalCallType_(info.originalCallType), isMuted_(false), numberLocation_("default"),
42 blockReason_(0), isEccContact_(false), celiaCallType_(-1)
43 {
44 (void)memset_s(&contactInfo_, sizeof(ContactInfo), 0, sizeof(ContactInfo));
45 (void)memset_s(&numberMarkInfo_, sizeof(NumberMarkInfo), 0, sizeof(NumberMarkInfo));
46 }
47
CallBase(DialParaInfo & info,AppExecFwk::PacMap & extras)48 CallBase::CallBase(DialParaInfo &info, AppExecFwk::PacMap &extras)
49 : callId_(info.callId), callType_(info.callType), videoState_(info.videoState), accountNumber_(info.number),
50 bundleName_(info.bundleName), callRunningState_(CallRunningState::CALL_RUNNING_STATE_CREATE),
51 conferenceState_(TelConferenceState::TEL_CONFERENCE_IDLE), startTime_(0),
52 direction_(CallDirection::CALL_DIRECTION_OUT), policyFlag_(0), callState_(info.callState),
53 autoAnswerState_(false), canUnHoldState_(true), canSwitchCallState_(true), answerVideoState_(0),
54 isSpeakerphoneOn_(false), callEndedType_(CallEndedType::UNKNOWN), callBeginTime_(0), callCreateTime_(0),
55 callEndTime_(0), ringBeginTime_(0), ringEndTime_(0), answerType_(CallAnswerType::CALL_ANSWER_MISSED),
56 accountId_(info.accountId), crsType_(info.crsType), originalCallType_(info.originalCallType), isMuted_(false),
57 numberLocation_("default"), blockReason_(0), isEccContact_(false), celiaCallType_(-1)
58 {
59 (void)memset_s(&contactInfo_, sizeof(ContactInfo), 0, sizeof(ContactInfo));
60 (void)memset_s(&numberMarkInfo_, sizeof(NumberMarkInfo), 0, sizeof(NumberMarkInfo));
61 }
62
~CallBase()63 CallBase::~CallBase() {}
64
DialCallBase()65 int32_t CallBase::DialCallBase()
66 {
67 std::lock_guard<std::mutex> lock(mutex_);
68 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_CONNECTING;
69 TELEPHONY_LOGI("start to set audio");
70 // Set audio, set hands-free
71 ffrt::submit([=]() { HangUpVoipCall(); });
72 return TELEPHONY_SUCCESS;
73 }
74
HangUpVoipCall()75 void CallBase::HangUpVoipCall()
76 {
77 std::vector<CallAttributeInfo> callAttributeInfo = CallObjectManager::GetAllCallInfoList();
78 std::vector<CallAttributeInfo>::iterator it = callAttributeInfo.begin();
79 while (it != callAttributeInfo.end()) {
80 CallAttributeInfo callinfo = (*it);
81 TelCallState callState = callinfo.callState;
82 ++it;
83 if (callinfo.callType == CallType::TYPE_VOIP) {
84 sptr<CallBase> tempCall = CallObjectManager::GetOneCallObject(callinfo.callId);
85 sptr<VoIPCall> call = static_cast<VoIPCall *>(static_cast<void *>(tempCall.GetRefPtr()));
86 if (call == nullptr) {
87 TELEPHONY_LOGE("the call object is nullptr, callId:%{public}d", callinfo.callId);
88 break;
89 }
90 call->HangUpCall(ErrorReason::CELLULAR_CALL_EXISTS);
91 }
92 }
93 }
94
IncomingCallBase()95 int32_t CallBase::IncomingCallBase()
96 {
97 std::lock_guard<std::mutex> lock(mutex_);
98 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_RINGING;
99 return TELEPHONY_SUCCESS;
100 }
101
AnswerCallBase()102 int32_t CallBase::AnswerCallBase()
103 {
104 if (!IsCurrentRinging()) {
105 TELEPHONY_LOGW("the device is currently not ringing");
106 return CALL_ERR_PHONE_ANSWER_IS_BUSY;
107 }
108 return TELEPHONY_SUCCESS;
109 }
110
RejectCallBase()111 int32_t CallBase::RejectCallBase()
112 {
113 answerType_ = CallAnswerType::CALL_ANSWER_REJECT;
114 return TELEPHONY_SUCCESS;
115 }
116
GetCallAttributeBaseInfo(CallAttributeInfo & info)117 void CallBase::GetCallAttributeBaseInfo(CallAttributeInfo &info)
118 {
119 std::lock_guard<std::mutex> lock(mutex_);
120 (void)memset_s(info.accountNumber, kMaxNumberLen, 0, kMaxNumberLen);
121 if (accountNumber_.length() > static_cast<size_t>(kMaxNumberLen)) {
122 TELEPHONY_LOGE("Number out of limit!");
123 return;
124 }
125 if (memcpy_s(info.accountNumber, kMaxNumberLen, accountNumber_.c_str(), accountNumber_.length()) == 0) {
126 info.speakerphoneOn = isSpeakerphoneOn_;
127 info.videoState = videoState_;
128 info.startTime = startTime_;
129 info.callType = callType_;
130 info.callId = callId_;
131 info.callState = callState_;
132 info.conferenceState = conferenceState_;
133 info.callBeginTime = callBeginTime_;
134 info.callCreateTime = callCreateTime_;
135 info.callEndTime = callEndTime_;
136 info.ringBeginTime = ringBeginTime_;
137 info.ringEndTime = ringEndTime_;
138 info.callDirection = direction_;
139 info.answerType = answerType_;
140 info.accountId = accountId_;
141 info.crsType = crsType_;
142 info.originalCallType = originalCallType_;
143 info.isEccContact = isEccContact_;
144 info.celiaCallType = celiaCallType_;
145 if (memset_s(info.numberLocation, kMaxNumberLen, 0, kMaxNumberLen) != EOK) {
146 TELEPHONY_LOGE("memset_s numberLocation fail");
147 return;
148 }
149 if (memcpy_s(info.numberLocation, kMaxNumberLen, numberLocation_.c_str(), numberLocation_.length()) != EOK) {
150 TELEPHONY_LOGE("memcpy_s numberLocation fail");
151 return;
152 }
153 info.numberMarkInfo = numberMarkInfo_;
154 info.blockReason = blockReason_;
155 if (bundleName_.length() > static_cast<size_t>(kMaxBundleNameLen)) {
156 TELEPHONY_LOGE("Number out of limit!");
157 return;
158 }
159 errno_t result = memcpy_s(info.bundleName, kMaxBundleNameLen, bundleName_.c_str(), bundleName_.length());
160 if (result != EOK) {
161 TELEPHONY_LOGE("memcpy_s failed!");
162 }
163 }
164 }
165
GetCallID()166 int32_t CallBase::GetCallID()
167 {
168 std::lock_guard<std::mutex> lock(mutex_);
169 return callId_;
170 }
171
GetCallType()172 CallType CallBase::GetCallType()
173 {
174 return callType_;
175 }
176
GetCallRunningState()177 CallRunningState CallBase::GetCallRunningState()
178 {
179 std::lock_guard<std::mutex> lock(mutex_);
180 return callRunningState_;
181 }
182
183 // transfer from external call state to callmanager local state
SetTelCallState(TelCallState nextState)184 int32_t CallBase::SetTelCallState(TelCallState nextState)
185 {
186 std::lock_guard<std::mutex> lock(mutex_);
187 if (callRunningState_ != CallRunningState::CALL_RUNNING_STATE_CREATE && callState_ == nextState &&
188 nextState != TelCallState::CALL_STATUS_DIALING) {
189 TELEPHONY_LOGI("Call state duplication %{public}d", nextState);
190 return CALL_ERR_NOT_NEW_STATE;
191 }
192 callState_ = nextState;
193 switch (nextState) {
194 case TelCallState::CALL_STATUS_DIALING:
195 StateChangesToDialing();
196 break;
197 case TelCallState::CALL_STATUS_INCOMING:
198 StateChangesToIncoming();
199 break;
200 case TelCallState::CALL_STATUS_WAITING:
201 StateChangesToWaiting();
202 break;
203 case TelCallState::CALL_STATUS_ACTIVE:
204 StateChangesToActive();
205 break;
206 case TelCallState::CALL_STATUS_HOLDING:
207 StateChangesToHolding();
208 break;
209 case TelCallState::CALL_STATUS_DISCONNECTED:
210 StateChangesToDisconnected();
211 break;
212 case TelCallState::CALL_STATUS_DISCONNECTING:
213 StateChangesToDisconnecting();
214 break;
215 case TelCallState::CALL_STATUS_ALERTING:
216 StateChangesToAlerting();
217 break;
218 default:
219 break;
220 }
221 return TELEPHONY_SUCCESS;
222 }
223
StateChangesToDialing()224 void CallBase::StateChangesToDialing()
225 {
226 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_DIALING;
227 }
228
StateChangesToIncoming()229 void CallBase::StateChangesToIncoming()
230 {
231 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_RINGING;
232 ringBeginTime_ = time(nullptr);
233 }
234
StateChangesToWaiting()235 void CallBase::StateChangesToWaiting()
236 {
237 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_RINGING;
238 ringBeginTime_ = time(nullptr);
239 }
240
StateChangesToActive()241 void CallBase::StateChangesToActive()
242 {
243 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_ACTIVE;
244 if (callBeginTime_ == 0) {
245 callBeginTime_ = ringEndTime_ = time(nullptr);
246 startTime_ = callBeginTime_;
247 answerType_ = CallAnswerType::CALL_ANSWER_ACTIVED;
248 }
249 }
250
StateChangesToHolding()251 void CallBase::StateChangesToHolding()
252 {
253 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_HOLD;
254 if (conferenceState_ == TelConferenceState::TEL_CONFERENCE_ACTIVE) {
255 conferenceState_ = TelConferenceState::TEL_CONFERENCE_DISCONNECTED;
256 }
257 }
258
StateChangesToDisconnected()259 void CallBase::StateChangesToDisconnected()
260 {
261 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_ENDED;
262 if (conferenceState_ == TelConferenceState::TEL_CONFERENCE_DISCONNECTING ||
263 conferenceState_ == TelConferenceState::TEL_CONFERENCE_ACTIVE) {
264 conferenceState_ = TelConferenceState::TEL_CONFERENCE_DISCONNECTED;
265 }
266 callEndTime_ = time(nullptr);
267 if (ringEndTime_ == 0) {
268 ringEndTime_ = time(nullptr);
269 }
270 }
271
StateChangesToDisconnecting()272 void CallBase::StateChangesToDisconnecting()
273 {
274 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_ENDING;
275 if (conferenceState_ == TelConferenceState::TEL_CONFERENCE_ACTIVE) {
276 conferenceState_ = TelConferenceState::TEL_CONFERENCE_DISCONNECTING;
277 }
278 if (ringEndTime_ == 0) {
279 ringEndTime_ = time(nullptr);
280 }
281 }
282
StateChangesToAlerting()283 void CallBase::StateChangesToAlerting()
284 {
285 callRunningState_ = CallRunningState::CALL_RUNNING_STATE_DIALING;
286 ringBeginTime_ = time(nullptr);
287 }
288
GetTelCallState()289 TelCallState CallBase::GetTelCallState()
290 {
291 std::lock_guard<std::mutex> lock(mutex_);
292 return callState_;
293 }
294
SetAutoAnswerState(bool flag)295 void CallBase::SetAutoAnswerState(bool flag)
296 {
297 std::lock_guard<std::mutex> lock(mutex_);
298 autoAnswerState_ = flag;
299 TELEPHONY_LOGI("NeedAutoAnswer:%{public}d", autoAnswerState_);
300 }
301
GetAutoAnswerState()302 bool CallBase::GetAutoAnswerState()
303 {
304 std::lock_guard<std::mutex> lock(mutex_);
305 return autoAnswerState_;
306 }
307
SetAnswerVideoState(int32_t videoState)308 void CallBase::SetAnswerVideoState(int32_t videoState)
309 {
310 std::lock_guard<std::mutex> lock(mutex_);
311 answerVideoState_ = videoState;
312 TELEPHONY_LOGI("set answer video state :%{public}d", answerVideoState_);
313 }
314
GetAnswerVideoState()315 int32_t CallBase::GetAnswerVideoState()
316 {
317 std::lock_guard<std::mutex> lock(mutex_);
318 return answerVideoState_;
319 }
320
SetCanUnHoldState(bool flag)321 void CallBase::SetCanUnHoldState(bool flag)
322 {
323 std::lock_guard<std::mutex> lock(mutex_);
324 canUnHoldState_ = flag;
325 TELEPHONY_LOGI("CanUnHoldState:%{public}d", canUnHoldState_);
326 }
327
GetCanUnHoldState()328 bool CallBase::GetCanUnHoldState()
329 {
330 std::lock_guard<std::mutex> lock(mutex_);
331 TELEPHONY_LOGI("CanUnHoldState:%{public}d", canUnHoldState_);
332 return canUnHoldState_;
333 }
334
SetCanSwitchCallState(bool flag)335 void CallBase::SetCanSwitchCallState(bool flag)
336 {
337 std::lock_guard<std::mutex> lock(mutex_);
338 canSwitchCallState_ = flag;
339 TELEPHONY_LOGI("CanSwitchCallState:%{public}d", canSwitchCallState_);
340 }
341
GetCanSwitchCallState()342 bool CallBase::GetCanSwitchCallState()
343 {
344 std::lock_guard<std::mutex> lock(mutex_);
345 TELEPHONY_LOGI("CanSwitchCallState:%{public}d", canSwitchCallState_);
346 return canSwitchCallState_;
347 }
348
SetTelConferenceState(TelConferenceState state)349 void CallBase::SetTelConferenceState(TelConferenceState state)
350 {
351 std::lock_guard<std::mutex> lock(mutex_);
352 conferenceState_ = state;
353 TELEPHONY_LOGI("SetTelConferenceState, callId:%{public}d, state:%{public}d", callId_, state);
354 }
355
GetTelConferenceState()356 TelConferenceState CallBase::GetTelConferenceState()
357 {
358 std::lock_guard<std::mutex> lock(mutex_);
359 return conferenceState_;
360 }
361
GetVideoStateType()362 VideoStateType CallBase::GetVideoStateType()
363 {
364 std::lock_guard<std::mutex> lock(mutex_);
365 return videoState_;
366 }
367
SetVideoStateType(VideoStateType mediaType)368 void CallBase::SetVideoStateType(VideoStateType mediaType)
369 {
370 std::lock_guard<std::mutex> lock(mutex_);
371 videoState_ = mediaType;
372 }
373
GetCrsType()374 int32_t CallBase::GetCrsType()
375 {
376 std::lock_guard<std::mutex> lock(mutex_);
377 return crsType_;
378 }
379
SetCrsType(int32_t crsType)380 void CallBase::SetCrsType(int32_t crsType)
381 {
382 std::lock_guard<std::mutex> lock(mutex_);
383 crsType_ = crsType;
384 }
385
GetOriginalCallType()386 int32_t CallBase::GetOriginalCallType()
387 {
388 std::lock_guard<std::mutex> lock(mutex_);
389 return originalCallType_;
390 }
391
SetOriginalCallType(int32_t originalCallType)392 void CallBase::SetOriginalCallType(int32_t originalCallType)
393 {
394 std::lock_guard<std::mutex> lock(mutex_);
395 originalCallType_ = originalCallType;
396 }
397
SetIsEccContact(bool isEccContact)398 void CallBase::SetIsEccContact(bool isEccContact)
399 {
400 std::lock_guard<std::mutex> lock(mutex_);
401 isEccContact_ = isEccContact;
402 }
403
SetNumberLocation(std::string numberLocation)404 void CallBase::SetNumberLocation(std::string numberLocation)
405 {
406 std::lock_guard<std::mutex> lock(mutex_);
407 numberLocation_ = numberLocation;
408 }
409
GetAccountId()410 int32_t CallBase::GetAccountId()
411 {
412 return accountId_;
413 }
414
GetNumberLocation()415 std::string CallBase::GetNumberLocation()
416 {
417 std::lock_guard<std::mutex> lock(mutex_);
418 return numberLocation_;
419 }
420
SetPolicyFlag(PolicyFlag flag)421 void CallBase::SetPolicyFlag(PolicyFlag flag)
422 {
423 std::lock_guard<std::mutex> lock(mutex_);
424 policyFlag_ |= flag;
425 }
426
GetPolicyFlag()427 uint64_t CallBase::GetPolicyFlag()
428 {
429 std::lock_guard<std::mutex> lock(mutex_);
430 return policyFlag_;
431 }
432
GetCallerInfo()433 ContactInfo CallBase::GetCallerInfo()
434 {
435 std::lock_guard<std::mutex> lock(mutex_);
436 return contactInfo_;
437 }
438
SetCallerInfo(const ContactInfo & info)439 void CallBase::SetCallerInfo(const ContactInfo &info)
440 {
441 std::lock_guard<std::mutex> lock(mutex_);
442 contactInfo_ = info;
443 }
444
GetNumberMarkInfo()445 NumberMarkInfo CallBase::GetNumberMarkInfo()
446 {
447 std::lock_guard<std::mutex> lock(mutex_);
448 return numberMarkInfo_;
449 }
450
SetNumberMarkInfo(const NumberMarkInfo & numberMarkInfo)451 void CallBase::SetNumberMarkInfo(const NumberMarkInfo &numberMarkInfo)
452 {
453 std::lock_guard<std::mutex> lock(mutex_);
454 numberMarkInfo_ = numberMarkInfo;
455 }
456
SetBlockReason(const int32_t & blockReason)457 void CallBase::SetBlockReason(const int32_t &blockReason)
458 {
459 std::lock_guard<std::mutex> lock(mutex_);
460 blockReason_ = blockReason;
461 }
462
SetCallRunningState(CallRunningState callRunningState)463 void CallBase::SetCallRunningState(CallRunningState callRunningState)
464 {
465 std::lock_guard<std::mutex> lock(mutex_);
466 callRunningState_ = callRunningState;
467 }
468
SetStartTime(int64_t startTime)469 void CallBase::SetStartTime(int64_t startTime)
470 {
471 std::lock_guard<std::mutex> lock(mutex_);
472 startTime_ = startTime;
473 }
474
SetCallBeginTime(time_t callBeginTime)475 void CallBase::SetCallBeginTime(time_t callBeginTime)
476 {
477 std::lock_guard<std::mutex> lock(mutex_);
478 callBeginTime_ = callBeginTime;
479 }
480
SetCallCreateTime(time_t callCreateTime)481 void CallBase::SetCallCreateTime(time_t callCreateTime)
482 {
483 std::lock_guard<std::mutex> lock(mutex_);
484 callCreateTime_ = callCreateTime;
485 }
486
SetCallEndTime(time_t callEndTime)487 void CallBase::SetCallEndTime(time_t callEndTime)
488 {
489 std::lock_guard<std::mutex> lock(mutex_);
490 callEndTime_ = callEndTime;
491 }
492
SetRingBeginTime(time_t ringBeginTime)493 void CallBase::SetRingBeginTime(time_t ringBeginTime)
494 {
495 std::lock_guard<std::mutex> lock(mutex_);
496 ringBeginTime_ = ringBeginTime;
497 }
498
SetRingEndTime(time_t ringEndTime)499 void CallBase::SetRingEndTime(time_t ringEndTime)
500 {
501 std::lock_guard<std::mutex> lock(mutex_);
502 ringEndTime_ = ringEndTime;
503 }
504
SetAnswerType(CallAnswerType answerType)505 void CallBase::SetAnswerType(CallAnswerType answerType)
506 {
507 std::lock_guard<std::mutex> lock(mutex_);
508 answerType_ = answerType;
509 }
510
GetCallEndedType()511 CallEndedType CallBase::GetCallEndedType()
512 {
513 std::lock_guard<std::mutex> lock(mutex_);
514 return callEndedType_;
515 }
516
SetCallEndedType(CallEndedType callEndedType)517 int32_t CallBase::SetCallEndedType(CallEndedType callEndedType)
518 {
519 std::lock_guard<std::mutex> lock(mutex_);
520 callEndedType_ = callEndedType;
521 return TELEPHONY_SUCCESS;
522 }
523
SetCallId(int32_t callId)524 void CallBase::SetCallId(int32_t callId)
525 {
526 std::lock_guard<std::mutex> lock(mutex_);
527 callId_ = callId;
528 }
529
SetCeliaCallType(int32_t celiaCallType)530 void CallBase::SetCeliaCallType(int32_t celiaCallType)
531 {
532 std::lock_guard<std::mutex> lock(mutex_);
533 celiaCallType_ = celiaCallType;
534 }
535
CheckVoicemailNumber(std::string phoneNumber)536 bool CallBase::CheckVoicemailNumber(std::string phoneNumber)
537 {
538 return false;
539 }
540
IsSpeakerphoneEnabled()541 bool CallBase::IsSpeakerphoneEnabled()
542 {
543 std::shared_ptr<BluetoothCallManager> bluetoothCallManager = std::make_shared<BluetoothCallManager>();
544 // Gets whether the device can be started from the configuration
545 if (bluetoothCallManager->IsBtAvailble()) {
546 return false;
547 }
548 return true;
549 }
550
IsCurrentRinging()551 bool CallBase::IsCurrentRinging()
552 {
553 std::lock_guard<std::mutex> lock(mutex_);
554 return (callRunningState_ == CallRunningState::CALL_RUNNING_STATE_RINGING) ? true : false;
555 }
556
GetAccountNumber()557 std::string CallBase::GetAccountNumber()
558 {
559 return accountNumber_;
560 }
561
SetAccountNumber(const std::string accountNumber)562 void CallBase::SetAccountNumber(const std::string accountNumber)
563 {
564 accountNumber_ = accountNumber;
565 }
566
SetSpeakerphoneOn(bool speakerphoneOn)567 int32_t CallBase::SetSpeakerphoneOn(bool speakerphoneOn)
568 {
569 isSpeakerphoneOn_ = speakerphoneOn;
570 return TELEPHONY_SUCCESS;
571 }
572
IsSpeakerphoneOn()573 bool CallBase::IsSpeakerphoneOn()
574 {
575 return isSpeakerphoneOn_;
576 }
577
IsAliveState()578 bool CallBase::IsAliveState()
579 {
580 return !(callState_ == TelCallState::CALL_STATUS_IDLE || callState_ == TelCallState::CALL_STATUS_DISCONNECTED ||
581 callState_ == TelCallState::CALL_STATUS_DISCONNECTING);
582 }
583
SetBundleName(const char * bundleName)584 void CallBase::SetBundleName(const char *bundleName)
585 {
586 bundleName_ = bundleName;
587 }
588
SetCallType(CallType callType)589 void CallBase::SetCallType(CallType callType)
590 {
591 callType_ = callType;
592 }
593
SetMicPhoneState(bool isMuted)594 int32_t CallBase::SetMicPhoneState(bool isMuted)
595 {
596 isMuted_ = isMuted;
597 return TELEPHONY_SUCCESS;
598 }
599
IsMuted()600 bool CallBase::IsMuted()
601 {
602 return isMuted_;
603 }
604 } // namespace Telephony
605 } // namespace OHOS
606