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 "ott_call_connection.h"
17
18 #include "call_manager_errors.h"
19 #include "telephony_log_wrapper.h"
20
21 #include "call_ability_report_proxy.h"
22
23 namespace OHOS {
24 namespace Telephony {
Answer(const OttCallRequestInfo & requestInfo)25 int32_t OTTCallConnection::Answer(const OttCallRequestInfo &requestInfo)
26 {
27 AppExecFwk::PacMap info;
28 PackCellularCallInfo(requestInfo, info);
29 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
30 OttCallRequestId::OTT_REQUEST_ANSWER, info);
31 }
32
HangUp(const OttCallRequestInfo & requestInfo)33 int32_t OTTCallConnection::HangUp(const OttCallRequestInfo &requestInfo)
34 {
35 AppExecFwk::PacMap info;
36 PackCellularCallInfo(requestInfo, info);
37 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
38 OttCallRequestId::OTT_REQUEST_HANG_UP, info);
39 }
40
Reject(const OttCallRequestInfo & requestInfo)41 int32_t OTTCallConnection::Reject(const OttCallRequestInfo &requestInfo)
42 {
43 AppExecFwk::PacMap info;
44 PackCellularCallInfo(requestInfo, info);
45 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
46 OttCallRequestId::OTT_REQUEST_REJECT, info);
47 }
48
HoldCall(const OttCallRequestInfo & requestInfo)49 int32_t OTTCallConnection::HoldCall(const OttCallRequestInfo &requestInfo)
50 {
51 AppExecFwk::PacMap info;
52 PackCellularCallInfo(requestInfo, info);
53 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
54 OttCallRequestId::OTT_REQUEST_HOLD, info);
55 }
56
UnHoldCall(const OttCallRequestInfo & requestInfo)57 int32_t OTTCallConnection::UnHoldCall(const OttCallRequestInfo &requestInfo)
58 {
59 AppExecFwk::PacMap info;
60 PackCellularCallInfo(requestInfo, info);
61 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
62 OttCallRequestId::OTT_REQUEST_UN_HOLD, info);
63 }
64
SwitchCall(const OttCallRequestInfo & requestInfo)65 int32_t OTTCallConnection::SwitchCall(const OttCallRequestInfo &requestInfo)
66 {
67 AppExecFwk::PacMap info;
68 PackCellularCallInfo(requestInfo, info);
69 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
70 OttCallRequestId::OTT_REQUEST_SWITCH, info);
71 }
72
CombineConference(const OttCallRequestInfo & requestInfo)73 int32_t OTTCallConnection::CombineConference(const OttCallRequestInfo &requestInfo)
74 {
75 AppExecFwk::PacMap info;
76 PackCellularCallInfo(requestInfo, info);
77 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
78 OttCallRequestId::OTT_REQUEST_COMBINE_CONFERENCE, info);
79 }
80
SeparateConference(const OttCallRequestInfo & requestInfo)81 int32_t OTTCallConnection::SeparateConference(const OttCallRequestInfo &requestInfo)
82 {
83 AppExecFwk::PacMap info;
84 PackCellularCallInfo(requestInfo, info);
85 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
86 OttCallRequestId::OTT_REQUEST_SEPARATE_CONFERENCE, info);
87 }
88
KickOutFromConference(const OttCallRequestInfo & requestInfo)89 int32_t OTTCallConnection::KickOutFromConference(const OttCallRequestInfo &requestInfo)
90 {
91 AppExecFwk::PacMap info;
92 PackCellularCallInfo(requestInfo, info);
93 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
94 OttCallRequestId::OTT_REQUEST_KICK_OUT_CONFERENCE, info);
95 }
96
InviteToConference(const OttCallRequestInfo & requestInfo,const std::vector<std::string> & numberList)97 int32_t OTTCallConnection::InviteToConference(
98 const OttCallRequestInfo &requestInfo, const std::vector<std::string> &numberList)
99 {
100 if (numberList.empty()) {
101 TELEPHONY_LOGE("numberList is empty!");
102 return TELEPHONY_ERR_ARGUMENT_INVALID;
103 }
104 AppExecFwk::PacMap info;
105 std::vector<std::string> list = numberList;
106 PackCellularCallInfo(requestInfo, info);
107 info.PutIntValue("listCnt", list.size());
108 std::vector<std::string>::iterator it = list.begin();
109 for (; it != list.end(); ++it) {
110 if (!(*it).empty()) {
111 info.PutStringValue("number", *it);
112 }
113 }
114 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
115 OttCallRequestId::OTT_REQUEST_INVITE_TO_CONFERENCE, info);
116 }
117
UpdateImsCallMode(const OttCallRequestInfo & requestInfo,ImsCallMode mode)118 int32_t OTTCallConnection::UpdateImsCallMode(const OttCallRequestInfo &requestInfo, ImsCallMode mode)
119 {
120 AppExecFwk::PacMap info;
121 PackCellularCallInfo(requestInfo, info);
122 info.PutIntValue("callMediaMode", mode);
123 return DelayedSingleton<CallAbilityReportProxy>::GetInstance()->OttCallRequest(
124 OttCallRequestId::OTT_REQUEST_UPDATE_CALL_MEDIA_MODE, info);
125 }
126
PackCellularCallInfo(const OttCallRequestInfo & requestInfo,AppExecFwk::PacMap & info)127 void OTTCallConnection::PackCellularCallInfo(const OttCallRequestInfo &requestInfo, AppExecFwk::PacMap &info)
128 {
129 std::string number(requestInfo.phoneNum);
130 std::string name(requestInfo.bundleName);
131 info.PutStringValue("phoneNum", number);
132 info.PutStringValue("bundleName", name);
133 info.PutIntValue("videoState", static_cast<int32_t>(requestInfo.videoState));
134 }
135 } // namespace Telephony
136 } // namespace OHOS