1 /*
2 * Copyright (C) 2023 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 "voip_call.h"
17
18 #include "call_control_manager.h"
19 #include "call_manager_errors.h"
20 #include "call_object_manager.h"
21 #include "telephony_log_wrapper.h"
22 #include "voip_call_connection.h"
23
24 namespace OHOS {
25 namespace Telephony {
VoIPCall(DialParaInfo & info)26 VoIPCall::VoIPCall(DialParaInfo &info) : CarrierCall(info)
27 {
28 callId_ = info.callId;
29 voipCallId_ = info.voipCallInfo.voipCallId;
30 userName_ = info.voipCallInfo.userName;
31 userProfile_.assign((info.voipCallInfo.userProfile).begin(), (info.voipCallInfo.userProfile).end());
32 abilityName_ = info.voipCallInfo.abilityName;
33 extensionId_ = info.voipCallInfo.extensionId;
34 voipBundleName_ = info.voipCallInfo.voipBundleName;
35 }
36
~VoIPCall()37 VoIPCall::~VoIPCall() {}
38
DialingProcess()39 int32_t VoIPCall::DialingProcess()
40 {
41 return TELEPHONY_SUCCESS;
42 }
43
AnswerCall(int32_t videoState)44 int32_t VoIPCall::AnswerCall(int32_t videoState)
45 {
46 TELEPHONY_LOGI("VoIPCall::AnswerCall");
47 VoipCallEventInfo voipcallInfo;
48 int32_t ret = TELEPHONY_ERROR;
49 ret = PackVoipCallInfo(voipcallInfo);
50 if (ret != TELEPHONY_SUCCESS) {
51 TELEPHONY_LOGW("PackVoipCallInfo failed!");
52 }
53 DelayedSingleton<VoipCallConnection>::GetInstance()->AnswerCall(voipcallInfo, videoState);
54 if (ret != TELEPHONY_SUCCESS) {
55 TELEPHONY_LOGE("answer call failed!");
56 return CALL_ERR_ANSWER_FAILED;
57 }
58 return TELEPHONY_SUCCESS;
59 }
60
PackVoipCallInfo(VoipCallEventInfo & voipcallInfo)61 int32_t VoIPCall::PackVoipCallInfo(VoipCallEventInfo &voipcallInfo)
62 {
63 voipcallInfo.voipCallId = voipCallId_;
64 voipcallInfo.bundleName = voipBundleName_;
65 return TELEPHONY_SUCCESS;
66 }
67
RejectCall()68 int32_t VoIPCall::RejectCall()
69 {
70 TELEPHONY_LOGI("VoIPCall::RejectCall enter");
71 VoipCallEventInfo voipcallInfo;
72 int32_t ret = TELEPHONY_ERROR;
73 ret = PackVoipCallInfo(voipcallInfo);
74 if (ret != TELEPHONY_SUCCESS) {
75 TELEPHONY_LOGW("PackVoipCallInfo failed!");
76 }
77 DelayedSingleton<VoipCallConnection>::GetInstance()->RejectCall(voipcallInfo);
78 if (ret != TELEPHONY_SUCCESS) {
79 TELEPHONY_LOGE("reject call failed!");
80 return CALL_ERR_ANSWER_FAILED;
81 }
82 return TELEPHONY_SUCCESS;
83 }
84
HangUpCall()85 int32_t VoIPCall::HangUpCall()
86 {
87 TELEPHONY_LOGI("VoIPCall::HangUpCall enter");
88 VoipCallEventInfo voipcallInfo;
89 int32_t ret = TELEPHONY_ERROR;
90 ret = PackVoipCallInfo(voipcallInfo);
91 if (ret != TELEPHONY_SUCCESS) {
92 TELEPHONY_LOGW("PackVoipCallInfo failed!");
93 }
94 voipcallInfo.errorReason = ErrorReason::USER_ANSWER_CELLULAR_FIRST;
95 DelayedSingleton<VoipCallConnection>::GetInstance()->HangUpCall(voipcallInfo);
96 if (ret != TELEPHONY_SUCCESS) {
97 TELEPHONY_LOGE("hangup call failed!");
98 return CALL_ERR_ANSWER_FAILED;
99 }
100 return TELEPHONY_SUCCESS;
101 }
102
HangUpCall(const ErrorReason & status)103 int32_t VoIPCall::HangUpCall(const ErrorReason &status)
104 {
105 TELEPHONY_LOGI("VoIPCall::dial cellularcall HangUpvoipCall enter");
106 VoipCallEventInfo voipcallInfo;
107 int32_t ret = TELEPHONY_ERROR;
108 ret = PackVoipCallInfo(voipcallInfo);
109 if (ret != TELEPHONY_SUCCESS) {
110 TELEPHONY_LOGW("PackVoipCallInfo failed!");
111 }
112 voipcallInfo.errorReason = status;
113 DelayedSingleton<VoipCallConnection>::GetInstance()->HangUpCall(voipcallInfo);
114 if (ret != TELEPHONY_SUCCESS) {
115 TELEPHONY_LOGE("hangup call failed!");
116 return CALL_ERR_ANSWER_FAILED;
117 }
118 return TELEPHONY_SUCCESS;
119 }
120
HoldCall()121 int32_t VoIPCall::HoldCall()
122 {
123 return TELEPHONY_SUCCESS;
124 }
125
UnHoldCall()126 int32_t VoIPCall::UnHoldCall()
127 {
128 return TELEPHONY_SUCCESS;
129 }
130
SwitchCall()131 int32_t VoIPCall::SwitchCall()
132 {
133 return TELEPHONY_SUCCESS;
134 }
135
SetMute(int32_t mute,int32_t slotId)136 int32_t VoIPCall::SetMute(int32_t mute, int32_t slotId)
137 {
138 return TELEPHONY_SUCCESS;
139 }
140
GetCallAttributeInfo(CallAttributeInfo & info)141 void VoIPCall::GetCallAttributeInfo(CallAttributeInfo &info)
142 {
143 GetCallAttributeCarrierInfo(info);
144 info.callId = callId_;
145 info.voipCallInfo.voipCallId = voipCallId_;
146 info.voipCallInfo.userName = userName_;
147 (info.voipCallInfo.userProfile).assign(userProfile_.begin(), userProfile_.end());
148 info.voipCallInfo.extensionId = extensionId_;
149 info.voipCallInfo.abilityName = abilityName_;
150 info.voipCallInfo.voipBundleName = voipBundleName_;
151 return;
152 }
153
CombineConference()154 int32_t VoIPCall::CombineConference()
155 {
156 return TELEPHONY_SUCCESS;
157 }
158
HandleCombineConferenceFailEvent()159 void VoIPCall::HandleCombineConferenceFailEvent()
160 {
161 return;
162 }
163
SeparateConference()164 int32_t VoIPCall::SeparateConference()
165 {
166 return TELEPHONY_SUCCESS;
167 }
168
KickOutFromConference()169 int32_t VoIPCall::KickOutFromConference()
170 {
171 return TELEPHONY_SUCCESS;
172 }
173
CanCombineConference()174 int32_t VoIPCall::CanCombineConference()
175 {
176 return TELEPHONY_SUCCESS;
177 }
178
CanSeparateConference()179 int32_t VoIPCall::CanSeparateConference()
180 {
181 return TELEPHONY_SUCCESS;
182 }
183
CanKickOutFromConference()184 int32_t VoIPCall::CanKickOutFromConference()
185 {
186 return TELEPHONY_SUCCESS;
187 }
188
GetMainCallId(int32_t & mainCallId)189 int32_t VoIPCall::GetMainCallId(int32_t &mainCallId)
190 {
191 return TELEPHONY_SUCCESS;
192 }
193
GetSubCallIdList(std::vector<std::u16string> & callIdList)194 int32_t VoIPCall::GetSubCallIdList(std::vector<std::u16string> &callIdList)
195 {
196 return TELEPHONY_SUCCESS;
197 }
198
GetCallIdListForConference(std::vector<std::u16string> & callIdList)199 int32_t VoIPCall::GetCallIdListForConference(std::vector<std::u16string> &callIdList)
200 {
201 return TELEPHONY_SUCCESS;
202 }
203
IsSupportConferenceable()204 int32_t VoIPCall::IsSupportConferenceable()
205 {
206 return TELEPHONY_SUCCESS;
207 }
208
LaunchConference()209 int32_t VoIPCall::LaunchConference()
210 {
211 return TELEPHONY_SUCCESS;
212 }
213
ExitConference()214 int32_t VoIPCall::ExitConference()
215 {
216 return TELEPHONY_SUCCESS;
217 }
218
HoldConference()219 int32_t VoIPCall::HoldConference()
220 {
221 return TELEPHONY_SUCCESS;
222 }
223
GetVoipCallId()224 std::string VoIPCall::GetVoipCallId()
225 {
226 return voipCallId_;
227 }
228 } // namespace Telephony
229 } // namespace OHOS
230