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 #include "cellular_call_stub.h"
17 #include "call_manager_errors.h"
18 #include "telephony_log_wrapper.h"
19 #include "emergency_utils.h"
20 #include "ipc_skeleton.h"
21 #include "i_call_status_callback.h"
22
23 namespace OHOS {
24 namespace Telephony {
25 const int32_t MAX_SIZE = 10;
26 const int32_t MAX_ECC_SIZE = 1000;
27
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)28 int32_t CellularCallStub::OnRemoteRequest(
29 uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option)
30 {
31 std::u16string myDescriptor = CellularCallStub::GetDescriptor();
32 std::u16string remoteDescriptor = data.ReadInterfaceToken();
33 if (myDescriptor != remoteDescriptor) {
34 TELEPHONY_LOGE("descriptor checked fail");
35 return TELEPHONY_ERR_DESCRIPTOR_MISMATCH;
36 }
37
38 auto itFunc = requestFuncMap_.find(static_cast<OperationType>(code));
39 if (itFunc != requestFuncMap_.end()) {
40 auto requestFunc = itFunc->second;
41 if (requestFunc != nullptr) {
42 return (this->*requestFunc)(data, reply);
43 }
44 }
45 TELEPHONY_LOGI("CellularCallStub::OnRemoteRequest, default case, need check.");
46 return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
47 }
48
CellularCallStub()49 CellularCallStub::CellularCallStub()
50 {
51 TELEPHONY_LOGI("CellularCallStub::CellularCallStub");
52 requestFuncMap_[OperationType::DIAL] = &CellularCallStub::OnDialInner;
53 requestFuncMap_[OperationType::HANG_UP] = &CellularCallStub::OnHangUpInner;
54 requestFuncMap_[OperationType::REJECT] = &CellularCallStub::OnRejectInner;
55 requestFuncMap_[OperationType::ANSWER] = &CellularCallStub::OnAnswerInner;
56 requestFuncMap_[OperationType::EMERGENCY_CALL] = &CellularCallStub::OnIsEmergencyPhoneNumberInner;
57 requestFuncMap_[OperationType::SET_EMERGENCY_CALL_LIST] = &CellularCallStub::OnSetEmergencyCallList;
58 requestFuncMap_[OperationType::HOLD_CALL] = &CellularCallStub::OnHoldCallInner;
59 requestFuncMap_[OperationType::UN_HOLD_CALL] = &CellularCallStub::OnUnHoldCallInner;
60 requestFuncMap_[OperationType::SWITCH_CALL] = &CellularCallStub::OnSwitchCallInner;
61 requestFuncMap_[OperationType::COMBINE_CONFERENCE] = &CellularCallStub::OnCombineConferenceInner;
62 requestFuncMap_[OperationType::SEPARATE_CONFERENCE] = &CellularCallStub::OnSeparateConferenceInner;
63 requestFuncMap_[OperationType::INVITE_TO_CONFERENCE] = &CellularCallStub::OnInviteToConferenceInner;
64 requestFuncMap_[OperationType::KICK_OUT_CONFERENCE] = &CellularCallStub::OnKickOutFromConferenceInner;
65 requestFuncMap_[OperationType::HANG_UP_ALL_CONNECTION] = &CellularCallStub::OnHangUpAllConnectionInner;
66 requestFuncMap_[OperationType::UPDATE_CALL_MEDIA_MODE] = &CellularCallStub::OnUpdateCallMediaModeInner;
67 requestFuncMap_[OperationType::REGISTER_CALLBACK] = &CellularCallStub::OnRegisterCallBackInner;
68 requestFuncMap_[OperationType::UNREGISTER_CALLBACK] = &CellularCallStub::OnUnRegisterCallBackInner;
69 requestFuncMap_[OperationType::START_DTMF] = &CellularCallStub::OnStartDtmfInner;
70 requestFuncMap_[OperationType::STOP_DTMF] = &CellularCallStub::OnStopDtmfInner;
71 requestFuncMap_[OperationType::SEND_DTMF] = &CellularCallStub::OnSendDtmfInner;
72 requestFuncMap_[OperationType::START_RTT] = &CellularCallStub::OnStartRttInner;
73 requestFuncMap_[OperationType::STOP_RTT] = &CellularCallStub::OnStopRttInner;
74 requestFuncMap_[OperationType::SET_CALL_TRANSFER] = &CellularCallStub::OnSetCallTransferInner;
75 requestFuncMap_[OperationType::GET_CALL_TRANSFER] = &CellularCallStub::OnGetCallTransferInner;
76 requestFuncMap_[OperationType::SET_CALL_WAITING] = &CellularCallStub::OnSetCallWaitingInner;
77 requestFuncMap_[OperationType::GET_CALL_WAITING] = &CellularCallStub::OnGetCallWaitingInner;
78 requestFuncMap_[OperationType::SET_CALL_RESTRICTION] = &CellularCallStub::OnSetCallRestrictionInner;
79 requestFuncMap_[OperationType::GET_CALL_RESTRICTION] = &CellularCallStub::OnGetCallRestrictionInner;
80 requestFuncMap_[OperationType::SET_DOMAIN_PREFERENCE_MODE] = &CellularCallStub::OnSetDomainPreferenceModeInner;
81 requestFuncMap_[OperationType::GET_DOMAIN_PREFERENCE_MODE] = &CellularCallStub::OnGetDomainPreferenceModeInner;
82 requestFuncMap_[OperationType::SET_IMS_SWITCH_STATUS] = &CellularCallStub::OnSetImsSwitchStatusInner;
83 requestFuncMap_[OperationType::GET_IMS_SWITCH_STATUS] = &CellularCallStub::OnGetImsSwitchStatusInner;
84 requestFuncMap_[OperationType::SET_IMS_CONFIG_STRING] = &CellularCallStub::OnSetImsConfigStringInner;
85 requestFuncMap_[OperationType::SET_IMS_CONFIG_INT] = &CellularCallStub::OnSetImsConfigIntInner;
86 requestFuncMap_[OperationType::GET_IMS_CONFIG] = &CellularCallStub::OnGetImsConfigInner;
87 requestFuncMap_[OperationType::SET_IMS_FEATURE] = &CellularCallStub::OnSetImsFeatureValueInner;
88 requestFuncMap_[OperationType::GET_IMS_FEATURE] = &CellularCallStub::OnGetImsFeatureValueInner;
89 requestFuncMap_[OperationType::CTRL_CAMERA] = &CellularCallStub::OnCtrlCameraInner;
90 requestFuncMap_[OperationType::SET_PREVIEW_WINDOW] = &CellularCallStub::OnSetPreviewWindowInner;
91 requestFuncMap_[OperationType::SET_DISPLAY_WINDOW] = &CellularCallStub::OnSetDisplayWindowInner;
92 requestFuncMap_[OperationType::SET_CAMERA_ZOOM] = &CellularCallStub::OnSetCameraZoomInner;
93 requestFuncMap_[OperationType::SET_PAUSE_IMAGE] = &CellularCallStub::OnSetPauseImageInner;
94 requestFuncMap_[OperationType::SET_DEVICE_DIRECTION] = &CellularCallStub::OnSetDeviceDirectionInner;
95 requestFuncMap_[OperationType::SET_MUTE] = &CellularCallStub::OnSetMuteInner;
96 requestFuncMap_[OperationType::GET_MUTE] = &CellularCallStub::OnGetMuteInner;
97 }
98
~CellularCallStub()99 CellularCallStub::~CellularCallStub()
100 {
101 TELEPHONY_LOGI("CellularCallStub::~CellularCallStub");
102 requestFuncMap_.clear();
103 }
104
OnDialInner(MessageParcel & data,MessageParcel & reply)105 int32_t CellularCallStub::OnDialInner(MessageParcel &data, MessageParcel &reply)
106 {
107 TELEPHONY_LOGI("CellularCallStub::OnDialInner entry");
108 int32_t size = data.ReadInt32();
109 size = ((size > MAX_SIZE) ? 0 : size);
110 if (size <= 0) {
111 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
112 return TELEPHONY_ERR_FAIL;
113 }
114 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
115 if (pCallInfo == nullptr) {
116 TELEPHONY_LOGE("OnDialInner return, pCallInfo is nullptr.");
117 return TELEPHONY_ERR_ARGUMENT_INVALID;
118 }
119
120 reply.WriteInt32(Dial(*pCallInfo));
121 return TELEPHONY_SUCCESS;
122 }
123
OnHangUpInner(MessageParcel & data,MessageParcel & reply)124 int32_t CellularCallStub::OnHangUpInner(MessageParcel &data, MessageParcel &reply)
125 {
126 TELEPHONY_LOGI("CellularCallStub::OnHangUpInner entry");
127 int32_t size = data.ReadInt32();
128 size = ((size > MAX_SIZE) ? 0 : size);
129 if (size <= 0) {
130 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
131 return TELEPHONY_ERR_FAIL;
132 }
133 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
134 if (pCallInfo == nullptr) {
135 TELEPHONY_LOGE("OnHangUpInner return, pCallInfo is nullptr.");
136 return TELEPHONY_ERR_ARGUMENT_INVALID;
137 }
138 auto type = static_cast<CallSupplementType>(data.ReadInt32());
139
140 reply.WriteInt32(HangUp(*pCallInfo, type));
141 return TELEPHONY_SUCCESS;
142 }
143
OnRejectInner(MessageParcel & data,MessageParcel & reply)144 int32_t CellularCallStub::OnRejectInner(MessageParcel &data, MessageParcel &reply)
145 {
146 TELEPHONY_LOGI("CellularCallStub::OnRejectInner entry");
147 int32_t size = data.ReadInt32();
148 size = ((size > MAX_SIZE) ? 0 : size);
149 if (size <= 0) {
150 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
151 return TELEPHONY_ERR_FAIL;
152 }
153 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
154 if (pCallInfo == nullptr) {
155 TELEPHONY_LOGE("OnRejectInner return, pCallInfo is nullptr.");
156 return TELEPHONY_ERR_ARGUMENT_INVALID;
157 }
158
159 reply.WriteInt32(Reject(*pCallInfo));
160 return TELEPHONY_SUCCESS;
161 }
162
OnAnswerInner(MessageParcel & data,MessageParcel & reply)163 int32_t CellularCallStub::OnAnswerInner(MessageParcel &data, MessageParcel &reply)
164 {
165 TELEPHONY_LOGI("CellularCallStub::OnAnswerInner entry");
166 int32_t size = data.ReadInt32();
167 size = ((size > MAX_SIZE) ? 0 : size);
168 if (size <= 0) {
169 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
170 return TELEPHONY_ERR_FAIL;
171 }
172 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
173 if (pCallInfo == nullptr) {
174 TELEPHONY_LOGE("OnAnswerInner return, pCallInfo is nullptr.");
175 return TELEPHONY_ERR_ARGUMENT_INVALID;
176 }
177
178 reply.WriteInt32(Answer(*pCallInfo));
179 return TELEPHONY_SUCCESS;
180 }
181
OnIsEmergencyPhoneNumberInner(MessageParcel & data,MessageParcel & reply)182 int32_t CellularCallStub::OnIsEmergencyPhoneNumberInner(MessageParcel &data, MessageParcel &reply)
183 {
184 TELEPHONY_LOGI("CellularCallStub::OnIsEmergencyPhoneNumberInner entry.");
185 int32_t size = data.ReadInt32();
186 size = ((size > MAX_SIZE) ? 0 : size);
187 if (size <= 0) {
188 TELEPHONY_LOGE("CellularCallStub::OnIsEmergencyPhoneNumberInner data size error");
189 return TELEPHONY_ERR_FAIL;
190 }
191 int32_t slotId = data.ReadInt32();
192 std::string phoneNum = data.ReadString();
193 bool enabled = false;
194 int32_t ret = IsEmergencyPhoneNumber(slotId, phoneNum, enabled);
195 if (!reply.WriteInt32(ret)) {
196 TELEPHONY_LOGE("fail to write ret");
197 return TELEPHONY_ERR_WRITE_DATA_FAIL;
198 }
199 if (ret != TELEPHONY_SUCCESS) {
200 return ret;
201 }
202 if (!reply.WriteBool(enabled)) {
203 TELEPHONY_LOGE("fail to write enabled");
204 return TELEPHONY_ERR_WRITE_DATA_FAIL;
205 }
206 return TELEPHONY_SUCCESS;
207 }
208
OnSetEmergencyCallList(MessageParcel & data,MessageParcel & reply)209 int32_t CellularCallStub::OnSetEmergencyCallList(MessageParcel &data, MessageParcel &reply)
210 {
211 TELEPHONY_LOGI("CellularCallStub::OnSetEmergencyCallList entry.");
212 int32_t size = data.ReadInt32();
213 size = ((size > MAX_SIZE) ? 0 : size);
214 if (size <= 0) {
215 TELEPHONY_LOGE("CellularCallStub::OnSetEmergencyCallList data size error");
216 return TELEPHONY_ERR_FAIL;
217 }
218 int32_t slotId = data.ReadInt32();
219 int32_t len = data.ReadInt32();
220 if (len <= 0 || len >= MAX_ECC_SIZE) {
221 TELEPHONY_LOGE("CellularCallStub::OnSetEmergencyCallList ecc size error");
222 return TELEPHONY_ERR_FAIL;
223 }
224 std::vector<EmergencyCall> eccVec;
225 for (int i = 0; i < len; i++) {
226 auto value = reinterpret_cast<const EmergencyCall *>(data.ReadRawData(sizeof(EmergencyCall)));
227 if (value == nullptr) {
228 TELEPHONY_LOGE("CellularCallStub::OnSetEmergencyCallList call data error");
229 return TELEPHONY_ERR_LOCAL_PTR_NULL;
230 }
231 eccVec.push_back(*value);
232 }
233 for (auto ecc : eccVec) {
234 TELEPHONY_LOGE("OnSetEmergencyCallList, data: eccNum %{public}s mcc %{public}s",
235 ecc.eccNum.c_str(), ecc.mcc.c_str());
236 }
237 reply.WriteInt32(SetEmergencyCallList(slotId, eccVec));
238 return TELEPHONY_SUCCESS;
239 }
240
OnRegisterCallBackInner(MessageParcel & data,MessageParcel & reply)241 int32_t CellularCallStub::OnRegisterCallBackInner(MessageParcel &data, MessageParcel &reply)
242 {
243 TELEPHONY_LOGI("CellularCallStub::OnRegisterCallBackInner entry.");
244 int32_t size = data.ReadInt32();
245 size = ((size > MAX_SIZE) ? 0 : size);
246 if (size <= 0) {
247 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
248 return TELEPHONY_ERR_FAIL;
249 }
250
251 int32_t result = TELEPHONY_ERR_LOCAL_PTR_NULL;
252 auto remote = data.ReadRemoteObject();
253 if (remote == nullptr) {
254 TELEPHONY_LOGE("CellularCallStub::OnRegisterCallBackInner return, remote is nullptr.");
255 reply.WriteInt32(result);
256 return result;
257 }
258 result = RegisterCallManagerCallBack(iface_cast<ICallStatusCallback>(remote));
259
260 reply.WriteInt32(result);
261 return TELEPHONY_SUCCESS;
262 }
263
OnUnRegisterCallBackInner(MessageParcel & data,MessageParcel & reply)264 int32_t CellularCallStub::OnUnRegisterCallBackInner(MessageParcel &data, MessageParcel &reply)
265 {
266 TELEPHONY_LOGI("CellularCallStub::OnUnRegisterCallBackInner entry.");
267 int32_t size = data.ReadInt32();
268 size = ((size > MAX_SIZE) ? 0 : size);
269 if (size <= 0) {
270 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
271 return TELEPHONY_ERR_FAIL;
272 }
273 int32_t result = UnRegisterCallManagerCallBack();
274
275 reply.WriteInt32(result);
276 return result;
277 }
278
OnHoldCallInner(MessageParcel & data,MessageParcel & reply)279 int32_t CellularCallStub::OnHoldCallInner(MessageParcel &data, MessageParcel &reply)
280 {
281 TELEPHONY_LOGI("CellularCallStub::OnHoldCallInner entry");
282 int32_t size = data.ReadInt32();
283 size = ((size > MAX_SIZE) ? 0 : size);
284 if (size <= 0) {
285 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
286 return TELEPHONY_ERR_FAIL;
287 }
288 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
289 if (pCallInfo == nullptr) {
290 TELEPHONY_LOGE("OnHoldCallInner return, pCallInfo is nullptr.");
291 return TELEPHONY_ERR_ARGUMENT_INVALID;
292 }
293
294 reply.WriteInt32(HoldCall(*pCallInfo));
295 return TELEPHONY_SUCCESS;
296 }
297
OnUnHoldCallInner(MessageParcel & data,MessageParcel & reply)298 int32_t CellularCallStub::OnUnHoldCallInner(MessageParcel &data, MessageParcel &reply)
299 {
300 TELEPHONY_LOGI("CellularCallStub::OnUnHoldCallInner entry");
301 int32_t size = data.ReadInt32();
302 size = ((size > MAX_SIZE) ? 0 : size);
303 if (size <= 0) {
304 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
305 return TELEPHONY_ERR_FAIL;
306 }
307 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
308 if (pCallInfo == nullptr) {
309 TELEPHONY_LOGE("OnUnHoldCallInner return, pCallInfo is nullptr.");
310 return TELEPHONY_ERR_ARGUMENT_INVALID;
311 }
312
313 reply.WriteInt32(UnHoldCall(*pCallInfo));
314 return TELEPHONY_SUCCESS;
315 }
316
OnSwitchCallInner(MessageParcel & data,MessageParcel & reply)317 int32_t CellularCallStub::OnSwitchCallInner(MessageParcel &data, MessageParcel &reply)
318 {
319 TELEPHONY_LOGI("CellularCallStub::OnSwitchCallInner entry");
320 int32_t size = data.ReadInt32();
321 size = ((size > MAX_SIZE) ? 0 : size);
322 if (size <= 0) {
323 TELEPHONY_LOGE("CellularCallStub::OnRemoteRequest data size error");
324 return TELEPHONY_ERR_FAIL;
325 }
326 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
327 if (pCallInfo == nullptr) {
328 TELEPHONY_LOGE("OnSwitchCallInner return, pCallInfo is nullptr.");
329 return TELEPHONY_ERR_ARGUMENT_INVALID;
330 }
331
332 reply.WriteInt32(SwitchCall(*pCallInfo));
333 return TELEPHONY_SUCCESS;
334 }
335
OnCombineConferenceInner(MessageParcel & data,MessageParcel & reply)336 int32_t CellularCallStub::OnCombineConferenceInner(MessageParcel &data, MessageParcel &reply)
337 {
338 TELEPHONY_LOGI("CellularCallStub::OnCombineConferenceInner entry");
339 int32_t size = data.ReadInt32();
340 size = ((size > MAX_SIZE) ? 0 : size);
341 if (size <= 0) {
342 TELEPHONY_LOGE("CellularCallStub::OnCombineConferenceInner data size error");
343 return TELEPHONY_ERR_FAIL;
344 }
345 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
346 if (pCallInfo == nullptr) {
347 TELEPHONY_LOGE("OnCombineConferenceInner return, pCallInfo is nullptr.");
348 return TELEPHONY_ERR_ARGUMENT_INVALID;
349 }
350
351 reply.WriteInt32(CombineConference(*pCallInfo));
352 return TELEPHONY_SUCCESS;
353 }
354
OnSeparateConferenceInner(MessageParcel & data,MessageParcel & reply)355 int32_t CellularCallStub::OnSeparateConferenceInner(MessageParcel &data, MessageParcel &reply)
356 {
357 TELEPHONY_LOGI("CellularCallStub::OnSeparateConferenceInner entry");
358 int32_t size = data.ReadInt32();
359 size = ((size > MAX_SIZE) ? 0 : size);
360 if (size <= 0) {
361 TELEPHONY_LOGE("CellularCallStub::OnSeparateConferenceInner data size error");
362 return TELEPHONY_ERR_FAIL;
363 }
364
365 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
366 if (pCallInfo == nullptr) {
367 TELEPHONY_LOGE("OnSeparateConferenceInner return, pCallInfo is nullptr.");
368 return TELEPHONY_ERR_ARGUMENT_INVALID;
369 }
370
371 reply.WriteInt32(SeparateConference(*pCallInfo));
372 return TELEPHONY_SUCCESS;
373 }
374
OnInviteToConferenceInner(MessageParcel & data,MessageParcel & reply)375 int32_t CellularCallStub::OnInviteToConferenceInner(MessageParcel &data, MessageParcel &reply)
376 {
377 TELEPHONY_LOGI("CellularCallStub::OnInviteToConferenceInner entry");
378 int32_t size = data.ReadInt32();
379 size = ((size > MAX_SIZE) ? 0 : size);
380 if (size <= 0) {
381 TELEPHONY_LOGE("CellularCallStub::OnInviteToConferenceInner data size error");
382 return TELEPHONY_ERR_FAIL;
383 }
384
385 int32_t slotId = data.ReadInt32();
386 std::vector<std::string> numberList;
387 bool bRead = data.ReadStringVector(&numberList);
388 if (!bRead) {
389 TELEPHONY_LOGE("InviteToConferenceInner return, read fail.");
390 return TELEPHONY_ERR_ARGUMENT_INVALID;
391 }
392 reply.WriteInt32(InviteToConference(slotId, numberList));
393 return TELEPHONY_SUCCESS;
394 }
395
OnKickOutFromConferenceInner(MessageParcel & data,MessageParcel & reply)396 int32_t CellularCallStub::OnKickOutFromConferenceInner(MessageParcel &data, MessageParcel &reply)
397 {
398 TELEPHONY_LOGI("CellularCallStub::OnKickOutFromConferenceInner entry");
399 int32_t size = data.ReadInt32();
400 size = ((size > MAX_SIZE) ? 0 : size);
401 if (size <= 0) {
402 TELEPHONY_LOGE("CellularCallStub::OnKickOutFromConferenceInner data size error");
403 return TELEPHONY_ERR_FAIL;
404 }
405
406 int32_t slotId = data.ReadInt32();
407 std::vector<std::string> numberList;
408 bool bRead = data.ReadStringVector(&numberList);
409 if (!bRead) {
410 TELEPHONY_LOGE("OnKickOutFromConferenceInner return, read fail.");
411 return TELEPHONY_ERR_ARGUMENT_INVALID;
412 }
413 reply.WriteInt32(KickOutFromConference(slotId, numberList));
414 return TELEPHONY_SUCCESS;
415 }
416
OnHangUpAllConnectionInner(MessageParcel & data,MessageParcel & reply)417 int32_t CellularCallStub::OnHangUpAllConnectionInner(MessageParcel &data, MessageParcel &reply)
418 {
419 TELEPHONY_LOGI("CellularCallStub::OnHangUpAllConnectionInner entry");
420 int32_t size = data.ReadInt32();
421 size = ((size > MAX_SIZE) ? 0 : size);
422 if (size <= 0) {
423 TELEPHONY_LOGE("OnHangUpAllConnectionInner data size error");
424 return TELEPHONY_ERR_FAIL;
425 }
426
427 reply.WriteInt32(HangUpAllConnection());
428 return TELEPHONY_SUCCESS;
429 }
430
OnUpdateCallMediaModeInner(MessageParcel & data,MessageParcel & reply)431 int32_t CellularCallStub::OnUpdateCallMediaModeInner(MessageParcel &data, MessageParcel &reply)
432 {
433 TELEPHONY_LOGI("CellularCallStub::OnUpdateCallMediaModeInner entry");
434 int32_t size = data.ReadInt32();
435 size = ((size > MAX_SIZE) ? 0 : size);
436 if (size <= 0) {
437 TELEPHONY_LOGE("OnUpdateCallMediaModeInner data size error");
438 return TELEPHONY_ERR_FAIL;
439 }
440 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
441 if (pCallInfo == nullptr) {
442 TELEPHONY_LOGE("OnUpdateCallMediaModeInner return, pCallInfo is nullptr.");
443 return TELEPHONY_ERR_ARGUMENT_INVALID;
444 }
445 auto mode = static_cast<ImsCallMode>(data.ReadInt32());
446
447 reply.WriteInt32(UpdateImsCallMode(*pCallInfo, mode));
448 return TELEPHONY_SUCCESS;
449 }
450
OnStartDtmfInner(MessageParcel & data,MessageParcel & reply)451 int32_t CellularCallStub::OnStartDtmfInner(MessageParcel &data, MessageParcel &reply)
452 {
453 TELEPHONY_LOGI("CellularCallStub::OnStartDtmfInner entry");
454 int32_t size = data.ReadInt32();
455 size = ((size > MAX_SIZE) ? 0 : size);
456 if (size <= 0) {
457 TELEPHONY_LOGE("CellularCallStub::OnStartDtmfInner data size error");
458 return TELEPHONY_ERR_FAIL;
459 }
460
461 char pDtmf = data.ReadInt8();
462 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
463 if (pCallInfo == nullptr) {
464 TELEPHONY_LOGE("OnStartDtmfInner return, pCallInfo is nullptr.");
465 return TELEPHONY_ERR_ARGUMENT_INVALID;
466 }
467
468 reply.WriteInt32(StartDtmf(pDtmf, *pCallInfo));
469 return TELEPHONY_SUCCESS;
470 }
471
OnStopDtmfInner(MessageParcel & data,MessageParcel & reply)472 int32_t CellularCallStub::OnStopDtmfInner(MessageParcel &data, MessageParcel &reply)
473 {
474 TELEPHONY_LOGI("CellularCallStub::OnStopDtmfInner entry");
475 int32_t size = data.ReadInt32();
476 size = ((size > MAX_SIZE) ? 0 : size);
477 if (size <= 0) {
478 TELEPHONY_LOGE("CellularCallStub::OnStopDtmfInner data size error");
479 return TELEPHONY_ERR_FAIL;
480 }
481
482 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
483 if (pCallInfo == nullptr) {
484 TELEPHONY_LOGE("OnStopDtmfInner return, pCallInfo is nullptr.");
485 return TELEPHONY_ERR_ARGUMENT_INVALID;
486 }
487
488 reply.WriteInt32(StopDtmf(*pCallInfo));
489 return TELEPHONY_SUCCESS;
490 }
491
OnSendDtmfInner(MessageParcel & data,MessageParcel & reply)492 int32_t CellularCallStub::OnSendDtmfInner(MessageParcel &data, MessageParcel &reply)
493 {
494 TELEPHONY_LOGI("CellularCallStub::OnSendDtmfInner entry");
495 int32_t size = data.ReadInt32();
496 size = ((size > MAX_SIZE) ? 0 : size);
497 if (size <= 0) {
498 TELEPHONY_LOGE("CellularCallStub::OnSendDtmfInner data size error");
499 return TELEPHONY_ERR_FAIL;
500 }
501
502 char pDtmf = data.ReadInt8();
503 auto pCallInfo = (CellularCallInfo *)data.ReadRawData(sizeof(CellularCallInfo));
504 if (pCallInfo == nullptr) {
505 TELEPHONY_LOGE("OnSendDtmfInner return, pCallInfo is nullptr.");
506 return TELEPHONY_ERR_ARGUMENT_INVALID;
507 }
508
509 reply.WriteInt32(SendDtmf(pDtmf, *pCallInfo));
510 return TELEPHONY_SUCCESS;
511 }
512
OnStartRttInner(MessageParcel & data,MessageParcel & reply)513 int32_t CellularCallStub::OnStartRttInner(MessageParcel &data, MessageParcel &reply)
514 {
515 TELEPHONY_LOGI("CellularCallStub::OnStartRttInner entry");
516 int32_t size = data.ReadInt32();
517 size = ((size > MAX_SIZE) ? 0 : size);
518 if (size <= 0) {
519 TELEPHONY_LOGE("CellularCallStub::OnStartRttInner data size error");
520 return TELEPHONY_ERR_FAIL;
521 }
522 int32_t slotId = data.ReadInt32();
523 std::string msg = data.ReadString();
524
525 reply.WriteInt32(StartRtt(slotId, msg));
526 return TELEPHONY_SUCCESS;
527 }
528
OnStopRttInner(MessageParcel & data,MessageParcel & reply)529 int32_t CellularCallStub::OnStopRttInner(MessageParcel &data, MessageParcel &reply)
530 {
531 TELEPHONY_LOGI("CellularCallStub::OnStopRttInner entry");
532 int32_t size = data.ReadInt32();
533 size = ((size > MAX_SIZE) ? 0 : size);
534 if (size <= 0) {
535 TELEPHONY_LOGE("CellularCallStub::OnStopRttInner data size error");
536 return TELEPHONY_ERR_FAIL;
537 }
538 int32_t slotId = data.ReadInt32();
539
540 reply.WriteInt32(StopRtt(slotId));
541 return TELEPHONY_SUCCESS;
542 }
543
OnSetCallTransferInner(MessageParcel & data,MessageParcel & reply)544 int32_t CellularCallStub::OnSetCallTransferInner(MessageParcel &data, MessageParcel &reply)
545 {
546 TELEPHONY_LOGI("CellularCallStub::OnSetCallTransferInner entry");
547 int32_t size = data.ReadInt32();
548 size = ((size > MAX_SIZE) ? 0 : size);
549 if (size <= 0) {
550 TELEPHONY_LOGE("CellularCallStub::OnSetCallTransferInner data size error");
551 return TELEPHONY_ERR_FAIL;
552 }
553 int32_t slotId = data.ReadInt32();
554 auto pCTInfo = (CallTransferInfo *)data.ReadRawData(sizeof(CallTransferInfo));
555 if (pCTInfo == nullptr) {
556 TELEPHONY_LOGE("OnSetCallTransferInner return, pCTInfo is nullptr.");
557 return TELEPHONY_ERR_ARGUMENT_INVALID;
558 }
559
560 reply.WriteInt32(SetCallTransferInfo(slotId, *pCTInfo));
561 return TELEPHONY_SUCCESS;
562 }
563
OnGetCallTransferInner(MessageParcel & data,MessageParcel & reply)564 int32_t CellularCallStub::OnGetCallTransferInner(MessageParcel &data, MessageParcel &reply)
565 {
566 TELEPHONY_LOGI("CellularCallStub::OnGetCallTransferInner entry");
567 int32_t size = data.ReadInt32();
568 size = ((size > MAX_SIZE) ? 0 : size);
569 if (size <= 0) {
570 TELEPHONY_LOGE("CellularCallStub::OnGetCallTransferInner data size error");
571 return TELEPHONY_ERR_FAIL;
572 }
573 int32_t slotId = data.ReadInt32();
574 auto type = static_cast<CallTransferType>(data.ReadInt32());
575
576 reply.WriteInt32(GetCallTransferInfo(slotId, type));
577 return TELEPHONY_SUCCESS;
578 }
579
OnSetCallWaitingInner(MessageParcel & data,MessageParcel & reply)580 int32_t CellularCallStub::OnSetCallWaitingInner(MessageParcel &data, MessageParcel &reply)
581 {
582 TELEPHONY_LOGI("CellularCallStub::OnSetCallWaitingInner entry");
583 int32_t size = data.ReadInt32();
584 size = ((size > MAX_SIZE) ? 0 : size);
585 if (size <= 0) {
586 TELEPHONY_LOGE("CellularCallStub::OnSetCallWaitingInner data size error");
587 return TELEPHONY_ERR_FAIL;
588 }
589 int32_t slotId = data.ReadInt32();
590 bool enable = data.ReadBool();
591
592 reply.WriteInt32(SetCallWaiting(slotId, enable));
593 return TELEPHONY_SUCCESS;
594 }
595
OnGetCallWaitingInner(MessageParcel & data,MessageParcel & reply)596 int32_t CellularCallStub::OnGetCallWaitingInner(MessageParcel &data, MessageParcel &reply)
597 {
598 TELEPHONY_LOGI("CellularCallStub::OnGetCallWaitingInner entry");
599 int32_t size = data.ReadInt32();
600 size = ((size > MAX_SIZE) ? 0 : size);
601 if (size <= 0) {
602 TELEPHONY_LOGE("CellularCallStub::OnGetCallWaitingInner data size error");
603 return TELEPHONY_ERR_FAIL;
604 }
605 int32_t slotId = data.ReadInt32();
606 TELEPHONY_LOGI("CellularCallStub::OnGetCallWaitingInner data.ReadInt32()");
607 reply.WriteInt32(GetCallWaiting(slotId));
608 return TELEPHONY_SUCCESS;
609 }
610
OnSetCallRestrictionInner(MessageParcel & data,MessageParcel & reply)611 int32_t CellularCallStub::OnSetCallRestrictionInner(MessageParcel &data, MessageParcel &reply)
612 {
613 TELEPHONY_LOGI("CellularCallStub::OnSetCallRestrictionInner entry");
614 int32_t size = data.ReadInt32();
615 size = ((size > MAX_SIZE) ? 0 : size);
616 if (size <= 0) {
617 TELEPHONY_LOGE("CellularCallStub::OnSetCallRestrictionInner data size error");
618 return TELEPHONY_ERR_FAIL;
619 }
620 int32_t slotId = data.ReadInt32();
621 auto pCRInfo = (CallRestrictionInfo *)data.ReadRawData(sizeof(CallRestrictionInfo));
622 if (pCRInfo == nullptr) {
623 TELEPHONY_LOGE("OnSetCallRestrictionInner return, pCRInfo is nullptr.");
624 return TELEPHONY_ERR_ARGUMENT_INVALID;
625 }
626
627 reply.WriteInt32(SetCallRestriction(slotId, *pCRInfo));
628 return TELEPHONY_SUCCESS;
629 }
630
OnGetCallRestrictionInner(MessageParcel & data,MessageParcel & reply)631 int32_t CellularCallStub::OnGetCallRestrictionInner(MessageParcel &data, MessageParcel &reply)
632 {
633 TELEPHONY_LOGI("CellularCallStub::OnGetCallRestrictionInner entry");
634 int32_t size = data.ReadInt32();
635 size = ((size > MAX_SIZE) ? 0 : size);
636 if (size <= 0) {
637 TELEPHONY_LOGE("CellularCallStub::OnGetCallRestrictionInner data size error");
638 return TELEPHONY_ERR_FAIL;
639 }
640 int32_t slotId = data.ReadInt32();
641 auto facType = static_cast<CallRestrictionType>(data.ReadInt32());
642
643 reply.WriteInt32(GetCallRestriction(slotId, facType));
644 return TELEPHONY_SUCCESS;
645 }
646
OnSetDomainPreferenceModeInner(MessageParcel & data,MessageParcel & reply)647 int32_t CellularCallStub::OnSetDomainPreferenceModeInner(MessageParcel &data, MessageParcel &reply)
648 {
649 TELEPHONY_LOGI("CellularCallStub::OnSetDomainPreferenceModeInner entry");
650 int32_t size = data.ReadInt32();
651 size = ((size > MAX_SIZE) ? 0 : size);
652 if (size <= 0) {
653 TELEPHONY_LOGE("CellularCallStub::OnSetDomainPreferenceModeInner data size error");
654 return TELEPHONY_ERR_FAIL;
655 }
656 int32_t slotId = data.ReadInt32();
657 int32_t mode = data.ReadInt32();
658
659 reply.WriteInt32(SetDomainPreferenceMode(slotId, mode));
660 return TELEPHONY_SUCCESS;
661 }
662
OnGetDomainPreferenceModeInner(MessageParcel & data,MessageParcel & reply)663 int32_t CellularCallStub::OnGetDomainPreferenceModeInner(MessageParcel &data, MessageParcel &reply)
664 {
665 TELEPHONY_LOGI("CellularCallStub::OnGetDomainPreferenceModeInner entry");
666 int32_t size = data.ReadInt32();
667 size = ((size > MAX_SIZE) ? 0 : size);
668 if (size <= 0) {
669 TELEPHONY_LOGE("CellularCallStub::OnGetDomainPreferenceModeInner data size error");
670 return TELEPHONY_ERR_FAIL;
671 }
672 int32_t slotId = data.ReadInt32();
673
674 reply.WriteInt32(GetDomainPreferenceMode(slotId));
675 return TELEPHONY_SUCCESS;
676 }
677
OnSetImsSwitchStatusInner(MessageParcel & data,MessageParcel & reply)678 int32_t CellularCallStub::OnSetImsSwitchStatusInner(MessageParcel &data, MessageParcel &reply)
679 {
680 TELEPHONY_LOGI("CellularCallStub::OnSetImsSwitchStatusInner entry");
681 int32_t size = data.ReadInt32();
682 size = ((size > MAX_SIZE) ? 0 : size);
683 if (size <= 0) {
684 TELEPHONY_LOGE("CellularCallStub::OnSetImsSwitchStatusInner data size error");
685 return TELEPHONY_ERR_FAIL;
686 }
687 int32_t slotId = data.ReadInt32();
688 bool active = data.ReadBool();
689
690 reply.WriteInt32(SetImsSwitchStatus(slotId, active));
691 return TELEPHONY_SUCCESS;
692 }
693
OnGetImsSwitchStatusInner(MessageParcel & data,MessageParcel & reply)694 int32_t CellularCallStub::OnGetImsSwitchStatusInner(MessageParcel &data, MessageParcel &reply)
695 {
696 TELEPHONY_LOGI("CellularCallStub::OnGetImsSwitchStatusInner entry");
697 int32_t size = data.ReadInt32();
698 size = ((size > MAX_SIZE) ? 0 : size);
699 if (size <= 0) {
700 TELEPHONY_LOGE("CellularCallStub::OnGetImsSwitchStatusInner data size error");
701 return TELEPHONY_ERR_FAIL;
702 }
703 int32_t slotId = data.ReadInt32();
704 bool enabled;
705 int32_t result = GetImsSwitchStatus(slotId, enabled);
706 reply.WriteBool(enabled);
707 reply.WriteInt32(result);
708 return TELEPHONY_SUCCESS;
709 }
710
OnSetImsConfigStringInner(MessageParcel & data,MessageParcel & reply)711 int32_t CellularCallStub::OnSetImsConfigStringInner(MessageParcel &data, MessageParcel &reply)
712 {
713 TELEPHONY_LOGI("CellularCallStub::OnSetImsConfigStringInner entry");
714 int32_t size = data.ReadInt32();
715 size = ((size > MAX_SIZE) ? 0 : size);
716 if (size <= 0) {
717 TELEPHONY_LOGE("CellularCallStub::OnSetImsConfigStringInner data size error");
718 return TELEPHONY_ERR_FAIL;
719 }
720 int32_t slotId = data.ReadInt32();
721 auto item = static_cast<ImsConfigItem>(data.ReadInt32());
722 std::string value = data.ReadString();
723
724 reply.WriteInt32(SetImsConfig(slotId, item, value));
725 return TELEPHONY_SUCCESS;
726 }
727
OnSetImsConfigIntInner(MessageParcel & data,MessageParcel & reply)728 int32_t CellularCallStub::OnSetImsConfigIntInner(MessageParcel &data, MessageParcel &reply)
729 {
730 TELEPHONY_LOGI("CellularCallStub::OnSetImsConfigIntInner entry");
731 int32_t size = data.ReadInt32();
732 size = ((size > MAX_SIZE) ? 0 : size);
733 if (size <= 0) {
734 TELEPHONY_LOGE("CellularCallStub::OnSetImsConfigIntInner data size error");
735 return TELEPHONY_ERR_FAIL;
736 }
737 int32_t slotId = data.ReadInt32();
738 auto item = static_cast<ImsConfigItem>(data.ReadInt32());
739 int32_t value = data.ReadInt32();
740
741 reply.WriteInt32(SetImsConfig(slotId, item, value));
742 return TELEPHONY_SUCCESS;
743 }
744
OnGetImsConfigInner(MessageParcel & data,MessageParcel & reply)745 int32_t CellularCallStub::OnGetImsConfigInner(MessageParcel &data, MessageParcel &reply)
746 {
747 TELEPHONY_LOGI("CellularCallStub::OnGetImsConfigInner entry");
748 int32_t size = data.ReadInt32();
749 size = ((size > MAX_SIZE) ? 0 : size);
750 if (size <= 0) {
751 TELEPHONY_LOGE("CellularCallStub::OnGetImsConfigInner data size error");
752 return TELEPHONY_ERR_FAIL;
753 }
754 int32_t slotId = data.ReadInt32();
755 auto item = static_cast<ImsConfigItem>(data.ReadInt32());
756
757 reply.WriteInt32(GetImsConfig(slotId, item));
758 return TELEPHONY_SUCCESS;
759 }
760
OnSetImsFeatureValueInner(MessageParcel & data,MessageParcel & reply)761 int32_t CellularCallStub::OnSetImsFeatureValueInner(MessageParcel &data, MessageParcel &reply)
762 {
763 TELEPHONY_LOGI("CellularCallStub::OnSetImsFeatureValueInner entry");
764 int32_t size = data.ReadInt32();
765 size = ((size > MAX_SIZE) ? 0 : size);
766 if (size <= 0) {
767 TELEPHONY_LOGE("CellularCallStub::OnSetImsFeatureValueInner data size error");
768 return TELEPHONY_ERR_FAIL;
769 }
770 int32_t slotId = data.ReadInt32();
771 auto type = static_cast<FeatureType>(data.ReadInt32());
772 int32_t value = data.ReadInt32();
773
774 reply.WriteInt32(SetImsFeatureValue(slotId, type, value));
775 return TELEPHONY_SUCCESS;
776 }
777
OnGetImsFeatureValueInner(MessageParcel & data,MessageParcel & reply)778 int32_t CellularCallStub::OnGetImsFeatureValueInner(MessageParcel &data, MessageParcel &reply)
779 {
780 TELEPHONY_LOGI("CellularCallStub::OnGetImsFeatureValueInner entry");
781 int32_t size = data.ReadInt32();
782 size = ((size > MAX_SIZE) ? 0 : size);
783 if (size <= 0) {
784 TELEPHONY_LOGE("CellularCallStub::OnGetImsFeatureValueInner data size error");
785 return TELEPHONY_ERR_FAIL;
786 }
787 int32_t slotId = data.ReadInt32();
788 auto type = static_cast<FeatureType>(data.ReadInt32());
789
790 reply.WriteInt32(GetImsFeatureValue(slotId, type));
791 return TELEPHONY_SUCCESS;
792 }
793
OnCtrlCameraInner(MessageParcel & data,MessageParcel & reply)794 int32_t CellularCallStub::OnCtrlCameraInner(MessageParcel &data, MessageParcel &reply)
795 {
796 TELEPHONY_LOGI("CellularCallStub::OnCtrlCameraInner entry");
797 int32_t size = data.ReadInt32();
798 size = ((size > MAX_SIZE) ? 0 : size);
799 if (size <= 0) {
800 TELEPHONY_LOGE("CellularCallStub::OnCtrlCameraInner data size error");
801 return TELEPHONY_ERR_FAIL;
802 }
803 std::u16string cameraId = data.ReadString16();
804 auto callingPid = IPCSkeleton::GetCallingPid();
805 auto callingUid = IPCSkeleton::GetCallingUid();
806
807 reply.WriteInt32(CtrlCamera(cameraId, callingUid, callingPid));
808 return TELEPHONY_SUCCESS;
809 }
810
OnSetPreviewWindowInner(MessageParcel & data,MessageParcel & reply)811 int32_t CellularCallStub::OnSetPreviewWindowInner(MessageParcel &data, MessageParcel &reply)
812 {
813 TELEPHONY_LOGI("CellularCallStub::OnSetPreviewWindowInner entry");
814 int32_t size = data.ReadInt32();
815 size = ((size > MAX_SIZE) ? 0 : size);
816 if (size <= 0) {
817 TELEPHONY_LOGE("CellularCallStub::OnSetPreviewWindowInner data size error");
818 return TELEPHONY_ERR_FAIL;
819 }
820 int32_t x = data.ReadInt32();
821 int32_t y = data.ReadInt32();
822 int32_t z = data.ReadInt32();
823 int32_t width = data.ReadInt32();
824 int32_t height = data.ReadInt32();
825
826 reply.WriteInt32(SetPreviewWindow(x, y, z, width, height));
827 return TELEPHONY_SUCCESS;
828 }
829
OnSetDisplayWindowInner(MessageParcel & data,MessageParcel & reply)830 int32_t CellularCallStub::OnSetDisplayWindowInner(MessageParcel &data, MessageParcel &reply)
831 {
832 TELEPHONY_LOGI("CellularCallStub::OnSetDisplayWindowInner entry");
833 int32_t size = data.ReadInt32();
834 size = ((size > MAX_SIZE) ? 0 : size);
835 if (size <= 0) {
836 TELEPHONY_LOGE("CellularCallStub::OnSetDisplayWindowInner data size error");
837 return TELEPHONY_ERR_FAIL;
838 }
839 int32_t x = data.ReadInt32();
840 int32_t y = data.ReadInt32();
841 int32_t z = data.ReadInt32();
842 int32_t width = data.ReadInt32();
843 int32_t height = data.ReadInt32();
844
845 reply.WriteInt32(SetDisplayWindow(x, y, z, width, height));
846 return TELEPHONY_SUCCESS;
847 }
848
OnSetCameraZoomInner(MessageParcel & data,MessageParcel & reply)849 int32_t CellularCallStub::OnSetCameraZoomInner(MessageParcel &data, MessageParcel &reply)
850 {
851 TELEPHONY_LOGI("CellularCallStub::OnSetCameraZoomInner entry");
852 int32_t size = data.ReadInt32();
853 size = ((size > MAX_SIZE) ? 0 : size);
854 if (size <= 0) {
855 TELEPHONY_LOGE("CellularCallStub::OnSetCameraZoomInner data size error");
856 return TELEPHONY_ERR_FAIL;
857 }
858 float zoomRatio = data.ReadFloat();
859
860 reply.WriteInt32(SetCameraZoom(zoomRatio));
861 return TELEPHONY_SUCCESS;
862 }
863
OnSetPauseImageInner(MessageParcel & data,MessageParcel & reply)864 int32_t CellularCallStub::OnSetPauseImageInner(MessageParcel &data, MessageParcel &reply)
865 {
866 TELEPHONY_LOGI("CellularCallStub::OnSetPauseImageInner entry");
867 int32_t size = data.ReadInt32();
868 size = ((size > MAX_SIZE) ? 0 : size);
869 if (size <= 0) {
870 TELEPHONY_LOGE("CellularCallStub::OnSetPauseImageInner data size error");
871 return TELEPHONY_ERR_FAIL;
872 }
873 std::u16string imagePath = data.ReadString16();
874
875 reply.WriteInt32(SetPauseImage(imagePath));
876 return TELEPHONY_SUCCESS;
877 }
878
OnSetDeviceDirectionInner(MessageParcel & data,MessageParcel & reply)879 int32_t CellularCallStub::OnSetDeviceDirectionInner(MessageParcel &data, MessageParcel &reply)
880 {
881 TELEPHONY_LOGI("CellularCallStub::OnSetDeviceDirectionInner entry");
882 int32_t size = data.ReadInt32();
883 size = ((size > MAX_SIZE) ? 0 : size);
884 if (size <= 0) {
885 TELEPHONY_LOGE("CellularCallStub::OnSetDeviceDirectionInner data size error");
886 return TELEPHONY_ERR_FAIL;
887 }
888 int32_t rotation = data.ReadInt32();
889
890 reply.WriteInt32(SetDeviceDirection(rotation));
891 return TELEPHONY_SUCCESS;
892 }
893
OnSetMuteInner(MessageParcel & data,MessageParcel & reply)894 int32_t CellularCallStub::OnSetMuteInner(MessageParcel &data, MessageParcel &reply)
895 {
896 TELEPHONY_LOGI("CellularCallStub::OnSetMuteInner entry");
897 int32_t size = data.ReadInt32();
898 size = ((size > MAX_SIZE) ? 0 : size);
899 if (size <= 0) {
900 TELEPHONY_LOGE("CellularCallStub::OnSetMuteInner data size error");
901 return TELEPHONY_ERR_FAIL;
902 }
903 int32_t slotId = data.ReadInt32();
904 int32_t mute = data.ReadInt32();
905
906 reply.WriteInt32(SetMute(slotId, mute));
907 return TELEPHONY_SUCCESS;
908 }
909
OnGetMuteInner(MessageParcel & data,MessageParcel & reply)910 int32_t CellularCallStub::OnGetMuteInner(MessageParcel &data, MessageParcel &reply)
911 {
912 TELEPHONY_LOGI("CellularCallStub::OnGetMuteInner entry");
913 int32_t size = data.ReadInt32();
914 size = ((size > MAX_SIZE) ? 0 : size);
915 if (size <= 0) {
916 TELEPHONY_LOGE("CellularCallStub::OnGetMuteInner data size error");
917 return TELEPHONY_ERR_FAIL;
918 }
919 int32_t slotId = data.ReadInt32();
920
921 reply.WriteInt32(GetMute(slotId));
922 return TELEPHONY_SUCCESS;
923 }
924 } // namespace Telephony
925 } // namespace OHOS
926