1 /*
2  * Copyright (C) 2021-2022 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 #ifndef OHOS_HRIL_CALL_H
17 #define OHOS_HRIL_CALL_H
18 
19 #include "hril_base.h"
20 
21 namespace OHOS {
22 namespace Telephony {
23 class HRilCall : public HRilBase {
24 public:
25     HRilCall(int32_t slotId);
26     virtual ~HRilCall();
27 
28     bool IsCallRespOrNotify(uint32_t code);
29 
30     void RegisterCallFuncs(const HRilCallReq *callFuncs);
31 
32     int32_t GetCallList(int32_t serialId);
33     int32_t Dial(int32_t serialId, const OHOS::HDI::Ril::V1_1::DialInfo &dialInfo);
34     int32_t Reject(int32_t serialId);
35     int32_t Hangup(int32_t serialId, int32_t gsmIndex);
36     int32_t Answer(int32_t serialId);
37     int32_t HoldCall(int32_t serialId);
38     int32_t UnHoldCall(int32_t serialId);
39     int32_t SwitchCall(int32_t serialId);
40     int32_t CombineConference(int32_t serialId, int32_t callType);
41     int32_t SeparateConference(int32_t serialId, int32_t callIndex, int32_t callType);
42     int32_t GetCallWaiting(int32_t serialId);
43     int32_t SetCallWaiting(int32_t serialId, int32_t activate);
44     int32_t GetCallTransferInfo(int32_t serialId, int32_t reason);
45     int32_t SetCallTransferInfo(int32_t serialId, const OHOS::HDI::Ril::V1_1::CallForwardSetInfo &callForwardSetInfo);
46     int32_t GetCallRestriction(int32_t serialId, const std::string &fac);
47     int32_t SetCallRestriction(int32_t serialId, const OHOS::HDI::Ril::V1_1::CallRestrictionInfo &callRestrictionInfo);
48     int32_t GetClip(int32_t serialId);
49     int32_t SetClip(int32_t serialId, int32_t action);
50     int32_t GetClir(int32_t serialId);
51     int32_t SetClir(int32_t serialId, int32_t action);
52     int32_t GetCallPreferenceMode(int32_t serialId);
53     int32_t SetCallPreferenceMode(int32_t serialId, int32_t mode);
54     int32_t SetUssd(int32_t serialId, const std::string &str);
55     int32_t GetUssd(int32_t serialId);
56     int32_t SetMute(int32_t serialId, int32_t mute);
57     int32_t GetMute(int32_t serialId);
58     int32_t GetCallFailReason(int32_t serialId);
59     int32_t CallSupplement(int32_t serialId, int32_t type);
60     int32_t SetBarringPassword(int32_t serialId, const OHOS::HDI::Ril::V1_1::SetBarringInfo &setBarringInfo);
61     int32_t StartDtmf(int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo);
62     int32_t SendDtmf(int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo);
63     int32_t StopDtmf(int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo);
64     int32_t GetEmergencyCallList(int32_t serialId);
65     int32_t SetEmergencyCallList(int32_t serialId, const OHOS::HDI::Ril::V1_1::EmergencyInfoList &emergencyInfoList);
66     int32_t CloseUnFinishedUssd(int32_t serialId);
67     bool IsCallResponse(uint32_t code);
68     bool IsCallNotification(uint32_t code);
69     int32_t SetVonrSwitch(int32_t serialId, int32_t status);
70 
71     int32_t GetCallListResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
72         const void *response, size_t responseLen);
73     int32_t DialResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const void *response,
74         size_t responseLen);
75     int32_t HangupResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
76         const void *response, size_t responseLen);
77     int32_t RejectResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
78         const void *response, size_t responseLen);
79     int32_t HoldCallResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
80         const void *response, size_t responseLen);
81     int32_t UnHoldCallResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
82         const void *response, size_t responseLen);
83     int32_t SwitchCallResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
84         const void *response, size_t responseLen);
85     int32_t GetLastCallErrorCodeResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
86         const void *response, size_t responseLen);
87     int32_t AnswerResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
88         const void *response, size_t responseLen);
89     int32_t GetClipResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
90         const void *response, size_t responseLen);
91     int32_t SetClipResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
92         const void *response, size_t responseLen);
93     int32_t CombineConferenceResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
94         const void *response, size_t responseLen);
95     int32_t SeparateConferenceResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
96         const void *response, size_t responseLen);
97     int32_t CallSupplementResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
98         const void *response, size_t responseLen);
99     int32_t GetCallWaitingResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
100         const void *response, size_t responseLen);
101     int32_t SetCallWaitingResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
102         const void *response, size_t responseLen);
103     int32_t GetCallTransferInfoResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
104         const void *response, size_t responseLen);
105     int32_t SetCallTransferInfoResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
106         const void *response, size_t responseLen);
107     int32_t GetCallRestrictionResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
108         const void *response, size_t responseLen);
109     int32_t SetCallRestrictionResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
110         const void *response, size_t responseLen);
111     int32_t GetClirResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
112         const void *response, size_t responseLen);
113     int32_t SetClirResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
114         const void *response, size_t responseLen);
115     int32_t StartDtmfResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
116         const void *response, size_t responseLen);
117     int32_t SendDtmfResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
118         const void *response, size_t responseLen);
119     int32_t StopDtmfResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
120         const void *response, size_t responseLen);
121     int32_t GetCallPreferenceModeResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
122         const void *response, size_t responseLen);
123     int32_t SetCallPreferenceModeResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
124         const void *response, size_t responseLen);
125     int32_t SetUssdResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
126         const void *response, size_t responseLen);
127     int32_t GetUssdResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
128         const void *response, size_t responseLen);
129     int32_t SetMuteResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
130         const void *response, size_t responseLen);
131     int32_t GetMuteResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
132         const void *response, size_t responseLen);
133     int32_t GetEmergencyCallListResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
134         const void *response, size_t responseLen);
135     int32_t GetCallFailReasonResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
136         const void *response, size_t responseLen);
137     int32_t SetEmergencyCallListResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
138         const void *response, size_t responseLen);
139     int32_t SetBarringPasswordResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
140         const void *response, size_t responseLen);
141     int32_t CloseUnFinishedUssdResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
142         const void *response, size_t responseLen);
143     int32_t SetVonrSwitchResponse(int32_t requestNum, HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
144         const void *response, size_t responseLen);
145 
146     int32_t CallStateUpdated(int32_t notifyType, HRilErrNumber error, const void *response, size_t responseLen);
147     int32_t CallUssdNotice(int32_t notifyType, HRilErrNumber error, const void *response, size_t responseLen);
148     int32_t CallRingbackVoiceNotice(int32_t notifyType, HRilErrNumber error, const void *response, size_t responseLen);
149     int32_t CallSrvccStatusNotice(int32_t notifyType, HRilErrNumber error, const void *response, size_t responseLen);
150     int32_t CallEmergencyNotice(int32_t notifyType, HRilErrNumber error, const void *response, size_t responseLen);
151     int32_t CallSsNotice(int32_t notifyType, HRilErrNumber error, const void *response, size_t responseLen);
152     int32_t CallRsrvccStatusNotify(int32_t notifyType, HRilErrNumber error, const void *response, size_t responseLen);
153     void BuildICallList(
154         HDI::Ril::V1_1::CallInfoList &callInfoList, const void *response, size_t responseLen);
155     void BuildIEmergencyCallList(
156         HDI::Ril::V1_1::EmergencyInfoList &emergencyCallInfoList, const void *response, size_t responseLen);
157     void BuildICallForwardQueryInfoList(HDI::Ril::V1_1::CallForwardQueryInfoList &cFQueryList,
158         HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const void *response, size_t responseLen);
159 
160 private:
161     void CopyToHRilEmergencyInfoArray(
162         HRilEmergencyInfo *emergencyInfoCalls, std::vector<HDI::Ril::V1_1::EmergencyCall> calls);
163     void AddCallNotificationToMap();
164     void AddCallBasicResponseToMap();
165     void AddCallSupplementResponseToMap();
166     void AddCallAdditionalResponseToMap();
167 
168 private:
169     const HRilCallReq *callFuncs_ = nullptr;
170 };
171 } // namespace Telephony
172 } // namespace OHOS
173 #endif // OHOS_HRIL_CALL_H
174