• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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