1 /*
2  * Copyright (C) 2021-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 #ifndef CELLULAR_CALL_STUB_H
17 #define CELLULAR_CALL_STUB_H
18 
19 #include <map>
20 
21 #include "cellular_call_data_struct.h"
22 #include "cellular_call_interface.h"
23 #include "cellular_call_ipc_interface_code.h"
24 #include "iremote_stub.h"
25 #include "telephony_log_wrapper.h"
26 
27 namespace OHOS {
28 namespace Telephony {
29 class CellularCallStub : public IRemoteStub<CellularCallInterface> {
30 public:
31     /**
32      * CellularCallStub Constructors
33      */
34     CellularCallStub();
35 
36     /**
37      * ~CellularCallStub Destructor
38      */
39     virtual ~CellularCallStub();
40 
41     /**
42      * OnRemoteRequest
43      *
44      * @param code
45      * @param data
46      * @param reply
47      * @param option
48      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
49      */
50     virtual int32_t OnRemoteRequest(
51         uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override;
52 
53 private:
54     /**
55      * On Dial Inner
56      *
57      * @param data send data
58      * @param reply Received data
59      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
60      */
61     int32_t OnDialInner(MessageParcel &data, MessageParcel &reply);
62 
63     /**
64      * On HangUp Inner
65      *
66      * @param data send data
67      * @param reply Received data
68      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
69      */
70     int32_t OnHangUpInner(MessageParcel &data, MessageParcel &reply);
71 
72     /**
73      * On Reject Inner
74      *
75      * @param data send data
76      * @param reply Received data
77      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
78      */
79     int32_t OnRejectInner(MessageParcel &data, MessageParcel &reply);
80 
81     /**
82      * On Answer Inner
83      *
84      * @param data send data
85      * @param reply Received data
86      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
87      */
88     int32_t OnAnswerInner(MessageParcel &data, MessageParcel &reply);
89 
90     /**
91      * On Is Emergency Call Inner
92      *
93      * @param data  send data
94      * @param reply Received data
95      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
96      */
97     int32_t OnIsEmergencyPhoneNumberInner(MessageParcel &data, MessageParcel &reply);
98 
99     /**
100      * On HoldCall Inner
101      *
102      * @param data send data
103      * @param reply Received data
104      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
105      */
106     int32_t OnHoldCallInner(MessageParcel &data, MessageParcel &reply);
107 
108     /**
109      * On UnHoldCall Inner
110      *
111      * @param data send data
112      * @param reply Received data
113      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
114      */
115     int32_t OnUnHoldCallInner(MessageParcel &data, MessageParcel &reply);
116 
117     /**
118      * On SwitchCall Inner
119      *
120      * @param data send data
121      * @param reply Received data
122      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
123      */
124     int32_t OnSwitchCallInner(MessageParcel &data, MessageParcel &reply);
125 
126     /**
127      * On CombineConference Inner
128      *
129      * @param data send data
130      * @param reply Received data
131      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
132      */
133     int32_t OnCombineConferenceInner(MessageParcel &data, MessageParcel &reply);
134 
135     /**
136      * On SeparateConference Inner
137      *
138      * @param data send data
139      * @param reply Received data
140      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
141      */
142     int32_t OnSeparateConferenceInner(MessageParcel &data, MessageParcel &reply);
143 
144     /**
145      * On InviteToConference Inner
146      *
147      * @param data send data
148      * @param reply Received data
149      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
150      */
151     int32_t OnInviteToConferenceInner(MessageParcel &data, MessageParcel &reply);
152 
153     /**
154      * On KickOutFromConference Inner
155      *
156      * @param data send data
157      * @param reply Received data
158      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
159      */
160     int32_t OnKickOutFromConferenceInner(MessageParcel &data, MessageParcel &reply);
161 
162     /**
163      * On HangUpAllConnection Inner
164      *
165      * @param data send data
166      * @param reply Received data
167      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
168      */
169     int32_t OnHangUpAllConnectionInner(MessageParcel &data, MessageParcel &reply);
170 
171     int32_t OnSetReadyToCallInner(MessageParcel &data, MessageParcel &reply);
172 
173     /**
174      * On SendUpdateCallMediaModeRequest Inner
175      *
176      * @param data send data
177      * @param reply Received data
178      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
179      */
180     int32_t OnSendUpdateCallMediaModeRequestInner(MessageParcel &data, MessageParcel &reply);
181 
182     /**
183      * On SendUpdateCallMediaModeResponse Inner
184      *
185      * @param data send data
186      * @param reply Received data
187      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
188      */
189     int32_t OnSendUpdateCallMediaModeResponseInner(MessageParcel &data, MessageParcel &reply);
190 
191     /**
192      * On Cancel Call Upgrade Inner
193      *
194      * @param data send data
195      * @param reply Received data
196      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
197      */
198     int32_t OnCancelCallUpgradeInner(MessageParcel &data, MessageParcel &reply);
199 
200     /**
201      * On Request Camera Capabilities Inner
202      *
203      * @param data send data
204      * @param reply Received data
205      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
206      */
207     int32_t OnRequestCameraCapabilitiesInner(MessageParcel &data, MessageParcel &reply);
208 
209     /**
210      * On Register Call Back Inner
211      *
212      * @param data send data
213      * @param reply Received data
214      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
215      */
216     int32_t OnRegisterCallBackInner(MessageParcel &data, MessageParcel &reply);
217 
218     /**
219      * On UnRegister Call Back Inner
220      *
221      * @param data send data
222      * @param reply Received data
223      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
224      */
225     int32_t OnUnRegisterCallBackInner(MessageParcel &data, MessageParcel &reply);
226 
227     /**
228      * On start Dtmf Inner
229      *
230      * @param data send data
231      * @param reply Received data
232      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
233      */
234     int32_t OnStartDtmfInner(MessageParcel &data, MessageParcel &reply);
235 
236     /**
237      * On stop Dtmf Inner
238      *
239      * @param data send data
240      * @param reply Received data
241      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
242      */
243     int32_t OnStopDtmfInner(MessageParcel &data, MessageParcel &reply);
244 
245     int32_t OnPostDialProceedInner(MessageParcel &data, MessageParcel &reply);
246 
247     /**
248      * On send Dtmf Inner
249      *
250      * @param data send data
251      * @param reply Received data
252      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
253      */
254     int32_t OnSendDtmfInner(MessageParcel &data, MessageParcel &reply);
255 
256     /**
257      * On start Rtt Inner
258      *
259      * @param data send data
260      * @param reply Received data
261      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
262      */
263     int32_t OnStartRttInner(MessageParcel &data, MessageParcel &reply);
264 
265     /**
266      * On stop Rtt Inner
267      *
268      * @param data send data
269      * @param reply Received data
270      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
271      */
272     int32_t OnStopRttInner(MessageParcel &data, MessageParcel &reply);
273 
274     /**
275      * On Set Call Transfer Inner
276      *
277      * @param data send data
278      * @param reply Received data
279      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
280      */
281     int32_t OnSetCallTransferInner(MessageParcel &data, MessageParcel &reply);
282 
283     /**
284      * confirm whether IMS can set call transfer time.
285      *
286      * @param data send data
287      * @param reply Received data
288      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
289      */
290     int32_t OnCanSetCallTransferTimeInner(MessageParcel &data, MessageParcel &reply);
291 
292     /**
293      * On Inquire Call Transfer Inner
294      *
295      * @param data send data
296      * @param reply Received data
297      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
298      */
299     int32_t OnGetCallTransferInner(MessageParcel &data, MessageParcel &reply);
300 
301     /**
302      * On Set Call Waiting
303      *
304      * @param data  send data
305      * @param reply Received data
306      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
307      */
308     int32_t OnSetCallWaitingInner(MessageParcel &data, MessageParcel &reply);
309 
310     /**
311      * On Inquire Call Waiting
312      *
313      * @param data  send data
314      * @param reply Received data
315      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
316      */
317     int32_t OnGetCallWaitingInner(MessageParcel &data, MessageParcel &reply);
318 
319     /**
320      * On Set Call Restriction
321      *
322      * @param data send data
323      * @param reply Received data
324      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
325      */
326     int32_t OnSetCallRestrictionInner(MessageParcel &data, MessageParcel &reply);
327 
328     /**
329      * On Get Call Restriction
330      *
331      * @param data send data
332      * @param reply Received data
333      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
334      */
335     int32_t OnGetCallRestrictionInner(MessageParcel &data, MessageParcel &reply);
336 
337     /**
338      * On Set Call Restriction Password
339      *
340      * @param data send data
341      * @param reply Received data
342      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
343      */
344     int32_t OnSetCallRestrictionPasswordInner(MessageParcel &data, MessageParcel &reply);
345 
346     /**
347      * On Set Domain Preference Mode
348      *
349      * @param data send data
350      * @param reply Received data
351      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
352      */
353     int32_t OnSetDomainPreferenceModeInner(MessageParcel &data, MessageParcel &reply);
354 
355     /**
356      * On Get Domain Preference Mode
357      *
358      * @param data send data
359      * @param reply Received data
360      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
361      */
362     int32_t OnGetDomainPreferenceModeInner(MessageParcel &data, MessageParcel &reply);
363 
364     /**
365      * On Set Ims Switch Status
366      *
367      * @param data send data
368      * @param reply Received data
369      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
370      */
371     int32_t OnSetImsSwitchStatusInner(MessageParcel &data, MessageParcel &reply);
372 
373     /**
374      * On Get Ims Switch Status
375      *
376      * @param data send data
377      * @param reply Received data
378      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
379      */
380     int32_t OnGetImsSwitchStatusInner(MessageParcel &data, MessageParcel &reply);
381 
382     /**
383      * On Set VoNR Switch Status
384      *
385      * @param data send data
386      * @param reply received data
387      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
388      */
389     int32_t OnSetVoNRStateInner(MessageParcel &data, MessageParcel &reply);
390 
391     /**
392      * On Get VoNR Switch Status
393      *
394      * @param data send data
395      * @param reply received data
396      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
397      */
398     int32_t OnGetVoNRStateInner(MessageParcel &data, MessageParcel &reply);
399 
400     /**
401      * On SetImsConfigStringInner
402      *
403      * @param data send data
404      * @param reply Received data
405      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
406      */
407     int32_t OnSetImsConfigStringInner(MessageParcel &data, MessageParcel &reply);
408 
409     /**
410      * On SetImsConfigIntInner
411      *
412      * @param data send data
413      * @param reply Received data
414      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
415      */
416     int32_t OnSetImsConfigIntInner(MessageParcel &data, MessageParcel &reply);
417 
418     /**
419      * On GetImsConfigInner
420      *
421      * @param data send data
422      * @param reply Received data
423      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
424      */
425     int32_t OnGetImsConfigInner(MessageParcel &data, MessageParcel &reply);
426 
427     /**
428      * On SetImsFeatureValueInner
429      *
430      * @param data send data
431      * @param reply Received data
432      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
433      */
434     int32_t OnSetImsFeatureValueInner(MessageParcel &data, MessageParcel &reply);
435 
436     /**
437      * On GetImsFeatureValueInner
438      *
439      * @param data send data
440      * @param reply Received data
441      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
442      */
443     int32_t OnGetImsFeatureValueInner(MessageParcel &data, MessageParcel &reply);
444 
445     /**
446      * On Control Camera Inner
447      *
448      * @param data send data
449      * @param reply Received data
450      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
451      */
452     int32_t OnControlCameraInner(MessageParcel &data, MessageParcel &reply);
453 
454     /**
455      * On Set Preview Window Inner
456      *
457      * @param data send data
458      * @param reply Received data
459      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
460      */
461     int32_t OnSetPreviewWindowInner(MessageParcel &data, MessageParcel &reply);
462 
463     /**
464      * On Set Display Window Inner
465      *
466      * @param data send data
467      * @param reply Received data
468      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
469      */
470     int32_t OnSetDisplayWindowInner(MessageParcel &data, MessageParcel &reply);
471 
472     /**
473      * On Set Camera Zoom Inner
474      *
475      * @param data send data
476      * @param reply Received data
477      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
478      */
479     int32_t OnSetCameraZoomInner(MessageParcel &data, MessageParcel &reply);
480 
481     /**
482      * On Set Pause Picture Inner
483      *
484      * @param data send data
485      * @param reply Received data
486      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
487      */
488     int32_t OnSetPausePictureInner(MessageParcel &data, MessageParcel &reply);
489 
490     /**
491      * On Set Device Direction Inner
492      *
493      * @param data send data
494      * @param reply Received data
495      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
496      */
497     int32_t OnSetDeviceDirectionInner(MessageParcel &data, MessageParcel &reply);
498 
499     /**
500      * On Set Mute Inner
501      *
502      * @param data send data
503      * @param reply Received data
504      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
505      */
506     int32_t OnSetMuteInner(MessageParcel &data, MessageParcel &reply);
507 
508     /**
509      * On Get Mute Inner
510      *
511      * @param data send data
512      * @param reply Received data
513      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
514      */
515     int32_t OnGetMuteInner(MessageParcel &data, MessageParcel &reply);
516 
517     /**
518      * Close Unfinished ussd
519      *
520      * @brief Close Unfinished ussd function for the current account
521      * @param slotId[in], The slot id
522      * @return Returns 0 on success, others on failure.
523      */
524     int32_t OnCloseUnFinishedUssdInner(MessageParcel &data, MessageParcel &reply);
525 
526     /**
527      * @brief clear all call if cellular call service restart
528      *
529      * @param infos[in] the call detail info vector which contains phone number, call type, slot id .etc
530      * @return Returns TELEPHONY_SUCCESS on success, others on failure.
531      */
532     int32_t OnClearAllCallsInner(MessageParcel &data, MessageParcel &reply);
533 
534     int32_t OnSetEmergencyCallList(MessageParcel &data, MessageParcel &reply);
535 
536 private:
537     using RequestFuncType = std::function<int32_t(MessageParcel &data, MessageParcel &reply)>;
538     std::map<CellularCallInterfaceCode, RequestFuncType> requestFuncMap_;
539     void InitFuncMap();
540     void InitDialFuncMap();
541     void InitDtmfFuncMap();
542     void InitConfigFuncMap();
543     void InitVideoFuncMap();
544     void InitSupplementFuncMap();
545 };
546 } // namespace Telephony
547 } // namespace OHOS
548 
549 #endif // CELLULAR_CALL_STUB_H
550