1/*
2 * Copyright (c) 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 "ril_impl.h"
17
18#include <hdf_base.h>
19#include <hdf_log.h>
20
21namespace OHOS {
22namespace HDI {
23namespace Ril {
24namespace V1_3 {
25static std::mutex mutex_;
26static sptr<V1_1::IRilCallback> callback1_1_;
27static sptr<V1_2::IRilCallback> callback1_2_;
28static sptr<V1_3::IRilCallback> callback_;
29namespace {
30sptr<RilImpl::RilDeathRecipient> g_deathRecipient = nullptr;
31}
32extern "C" IRil *RilImplGetInstance(void)
33{
34    using OHOS::HDI::Ril::V1_3::RilImpl;
35    RilImpl *service = new (std::nothrow) RilImpl();
36    if (service == nullptr) {
37        return nullptr;
38    }
39    if (service->Init() != HDF_SUCCESS) {
40        delete service;
41        service = nullptr;
42        return nullptr;
43    }
44    return service;
45}
46
47// Call
48int32_t RilImpl::SetEmergencyCallList(
49    int32_t slotId, int32_t serialId, const EmergencyInfoList &emergencyInfoList)
50{
51    return TaskSchedule(&Telephony::HRilManager::SetEmergencyCallList, slotId, serialId, emergencyInfoList);
52}
53
54int32_t RilImpl::GetEmergencyCallList(int32_t slotId, int32_t serialId)
55{
56    return TaskSchedule(&Telephony::HRilManager::GetEmergencyCallList, slotId, serialId);
57}
58
59int32_t RilImpl::GetCallList(int32_t slotId, int32_t serialId)
60{
61    return TaskSchedule(&Telephony::HRilManager::GetCallList, slotId, serialId);
62}
63
64int32_t RilImpl::Dial(int32_t slotId, int32_t serialId, const DialInfo &dialInfo)
65{
66    return TaskSchedule(&Telephony::HRilManager::Dial, slotId, serialId, dialInfo);
67}
68
69int32_t RilImpl::Reject(int32_t slotId, int32_t serialId)
70{
71    return TaskSchedule(&Telephony::HRilManager::Reject, slotId, serialId);
72}
73
74int32_t RilImpl::Hangup(int32_t slotId, int32_t serialId, int32_t gsmIndex)
75{
76    return TaskSchedule(&Telephony::HRilManager::Hangup, slotId, serialId, gsmIndex);
77}
78
79int32_t RilImpl::Answer(int32_t slotId, int32_t serialId)
80{
81    return TaskSchedule(&Telephony::HRilManager::Answer, slotId, serialId);
82}
83
84int32_t RilImpl::HoldCall(int32_t slotId, int32_t serialId)
85{
86    return TaskSchedule(&Telephony::HRilManager::HoldCall, slotId, serialId);
87}
88
89int32_t RilImpl::UnHoldCall(int32_t slotId, int32_t serialId)
90{
91    return TaskSchedule(&Telephony::HRilManager::UnHoldCall, slotId, serialId);
92}
93
94int32_t RilImpl::SwitchCall(int32_t slotId, int32_t serialId)
95{
96    return TaskSchedule(&Telephony::HRilManager::SwitchCall, slotId, serialId);
97}
98
99int32_t RilImpl::CombineConference(int32_t slotId, int32_t serialId, int32_t callType)
100{
101    return TaskSchedule(&Telephony::HRilManager::CombineConference, slotId, serialId, callType);
102}
103
104int32_t RilImpl::SeparateConference(
105    int32_t slotId, int32_t serialId, int32_t callIndex, int32_t callType)
106{
107    return TaskSchedule(&Telephony::HRilManager::SeparateConference, slotId, serialId, callIndex, callType);
108}
109
110int32_t RilImpl::GetCallWaiting(int32_t slotId, int32_t serialId)
111{
112    return TaskSchedule(&Telephony::HRilManager::GetCallWaiting, slotId, serialId);
113}
114
115int32_t RilImpl::SetCallWaiting(int32_t slotId, int32_t serialId, int32_t activate)
116{
117    return TaskSchedule(&Telephony::HRilManager::SetCallWaiting, slotId, serialId, activate);
118}
119
120int32_t RilImpl::GetCallTransferInfo(int32_t slotId, int32_t serialId, int32_t reason)
121{
122    return TaskSchedule(&Telephony::HRilManager::GetCallTransferInfo, slotId, serialId, reason);
123}
124
125int32_t RilImpl::SetCallTransferInfo(
126    int32_t slotId, int32_t serialId, const CallForwardSetInfo &callForwardSetInfo)
127{
128    return TaskSchedule(&Telephony::HRilManager::SetCallTransferInfo, slotId, serialId, callForwardSetInfo);
129}
130
131int32_t RilImpl::GetCallRestriction(int32_t slotId, int32_t serialId, const std::string &fac)
132{
133    return TaskSchedule(&Telephony::HRilManager::GetCallRestriction, slotId, serialId, fac);
134}
135
136int32_t RilImpl::SetCallRestriction(
137    int32_t slotId, int32_t serialId, const CallRestrictionInfo &callRestrictionInfo)
138{
139    return TaskSchedule(&Telephony::HRilManager::SetCallRestriction, slotId, serialId, callRestrictionInfo);
140}
141
142int32_t RilImpl::GetClip(int32_t slotId, int32_t serialId)
143{
144    return TaskSchedule(&Telephony::HRilManager::GetClip, slotId, serialId);
145}
146
147int32_t RilImpl::SetClip(int32_t slotId, int32_t serialId, int32_t action)
148{
149    return TaskSchedule(&Telephony::HRilManager::SetClip, slotId, serialId, action);
150}
151
152int32_t RilImpl::GetClir(int32_t slotId, int32_t serialId)
153{
154    return TaskSchedule(&Telephony::HRilManager::GetClir, slotId, serialId);
155}
156
157int32_t RilImpl::SetClir(int32_t slotId, int32_t serialId, int32_t action)
158{
159    return TaskSchedule(&Telephony::HRilManager::SetClir, slotId, serialId, action);
160}
161
162int32_t RilImpl::SetCallPreferenceMode(int32_t slotId, int32_t serialId, int32_t mode)
163{
164    return TaskSchedule(&Telephony::HRilManager::SetCallPreferenceMode, slotId, serialId, mode);
165}
166
167int32_t RilImpl::GetCallPreferenceMode(int32_t slotId, int32_t serialId)
168{
169    return TaskSchedule(&Telephony::HRilManager::GetCallPreferenceMode, slotId, serialId);
170}
171
172int32_t RilImpl::SetUssd(int32_t slotId, int32_t serialId, const std::string &str)
173{
174    return TaskSchedule(&Telephony::HRilManager::SetUssd, slotId, serialId, str);
175}
176
177int32_t RilImpl::CloseUnFinishedUssd(int32_t slotId, int32_t serialId)
178{
179    return TaskSchedule(&Telephony::HRilManager::CloseUnFinishedUssd, slotId, serialId);
180}
181
182int32_t RilImpl::GetUssd(int32_t slotId, int32_t serialId)
183{
184    return TaskSchedule(&Telephony::HRilManager::GetUssd, slotId, serialId);
185}
186
187int32_t RilImpl::SetMute(int32_t slotId, int32_t serialId, int32_t mute)
188{
189    return TaskSchedule(&Telephony::HRilManager::SetMute, slotId, serialId, mute);
190}
191
192int32_t RilImpl::GetMute(int32_t slotId, int32_t serialId)
193{
194    return TaskSchedule(&Telephony::HRilManager::GetMute, slotId, serialId);
195}
196
197int32_t RilImpl::GetCallFailReason(int32_t slotId, int32_t serialId)
198{
199    return TaskSchedule(&Telephony::HRilManager::GetCallFailReason, slotId, serialId);
200}
201
202int32_t RilImpl::CallSupplement(int32_t slotId, int32_t serialId, int32_t type)
203{
204    return TaskSchedule(&Telephony::HRilManager::CallSupplement, slotId, serialId, type);
205}
206
207int32_t RilImpl::SendDtmf(int32_t slotId, int32_t serialId, const DtmfInfo &dtmfInfo)
208{
209    return TaskSchedule(&Telephony::HRilManager::SendDtmf, slotId, serialId, dtmfInfo);
210}
211
212int32_t RilImpl::StartDtmf(int32_t slotId, int32_t serialId, const DtmfInfo &dtmfInfo)
213{
214    return TaskSchedule(&Telephony::HRilManager::StartDtmf, slotId, serialId, dtmfInfo);
215}
216
217int32_t RilImpl::StopDtmf(int32_t slotId, int32_t serialId, const DtmfInfo &dtmfInfo)
218{
219    return TaskSchedule(&Telephony::HRilManager::StopDtmf, slotId, serialId, dtmfInfo);
220}
221
222int32_t RilImpl::SetBarringPassword(
223    int32_t slotId, int32_t serialId, const SetBarringInfo &setBarringInfo)
224{
225    return TaskSchedule(&Telephony::HRilManager::SetBarringPassword, slotId, serialId, setBarringInfo);
226}
227
228int32_t RilImpl::SetVonrSwitch(int32_t slotId, int32_t serialId, int32_t status)
229{
230    return TaskSchedule(&Telephony::HRilManager::SetVonrSwitch, slotId, serialId, status);
231}
232
233// Data
234int32_t RilImpl::ActivatePdpContext(int32_t slotId, int32_t serialId, const DataCallInfo &dataCallInfo)
235{
236    return TaskSchedule(&Telephony::HRilManager::ActivatePdpContext, slotId, serialId, dataCallInfo);
237}
238
239int32_t RilImpl::ActivatePdpContextWithApnTypes(int32_t slotId, int32_t serialId,
240    const DataCallInfoWithApnTypes &dataCallInfo)
241{
242    return TaskSchedule(&Telephony::HRilManager::ActivatePdpContextWithApnTypes, slotId, serialId, dataCallInfo);
243}
244
245int32_t RilImpl::DeactivatePdpContext(int32_t slotId, int32_t serialId, const UniInfo &uniInfo)
246{
247    return TaskSchedule(&Telephony::HRilManager::DeactivatePdpContext, slotId, serialId, uniInfo);
248}
249
250int32_t RilImpl::GetPdpContextList(int32_t slotId, int32_t serialId, const UniInfo &uniInfo)
251{
252    return TaskSchedule(&Telephony::HRilManager::GetPdpContextList, slotId, serialId, uniInfo);
253}
254
255int32_t RilImpl::SetInitApnInfo(
256    int32_t slotId, int32_t serialId, const DataProfileDataInfo &dataProfileDataInfo)
257{
258    return TaskSchedule(&Telephony::HRilManager::SetInitApnInfo, slotId, serialId, dataProfileDataInfo);
259}
260
261int32_t RilImpl::GetLinkBandwidthInfo(int32_t slotId, int32_t serialId, int32_t cid)
262{
263    return TaskSchedule(&Telephony::HRilManager::GetLinkBandwidthInfo, slotId, serialId, cid);
264}
265
266int32_t RilImpl::GetLinkCapability(int32_t slotId, int32_t serialId)
267{
268    return TaskSchedule(&Telephony::HRilManager::GetLinkCapability, slotId, serialId);
269}
270
271int32_t RilImpl::SetLinkBandwidthReportingRule(
272    int32_t slotId, int32_t serialId, const DataLinkBandwidthReportingRule &dataLinkBandwidthReportingRule)
273{
274    return TaskSchedule(
275        &Telephony::HRilManager::SetLinkBandwidthReportingRule, slotId, serialId, dataLinkBandwidthReportingRule);
276}
277
278int32_t RilImpl::SetDataPermitted(int32_t slotId, int32_t serialId, int32_t dataPermitted)
279{
280    return TaskSchedule(&Telephony::HRilManager::SetDataPermitted, slotId, serialId, dataPermitted);
281}
282
283int32_t RilImpl::SetDataProfileInfo(
284    int32_t slotId, int32_t serialId, const DataProfilesInfo &dataProfilesInfo)
285{
286    return TaskSchedule(&Telephony::HRilManager::SetDataProfileInfo, slotId, serialId, dataProfilesInfo);
287}
288
289int32_t RilImpl::SendDataPerformanceMode(
290    int32_t slotId, int32_t serialId, const DataPerformanceInfo &dataPerformanceInfo)
291{
292    return TaskSchedule(&Telephony::HRilManager::SendDataPerformanceMode, slotId, serialId, dataPerformanceInfo);
293}
294
295int32_t RilImpl::SendDataSleepMode(
296    int32_t slotId, int32_t serialId, const DataSleepInfo &dataSleepInfo)
297{
298    return TaskSchedule(&Telephony::HRilManager::SendDataSleepMode, slotId, serialId, dataSleepInfo);
299}
300
301int32_t RilImpl::CleanAllConnections(int32_t slotId, int32_t serialId)
302{
303    return TaskSchedule(&Telephony::HRilManager::CleanAllConnections, slotId, serialId);
304}
305
306// Modem
307int32_t RilImpl::SetRadioState(int32_t slotId, int32_t serialId, int32_t fun, int32_t rst)
308{
309    return TaskSchedule(&Telephony::HRilManager::SetRadioState, slotId, serialId, fun, rst);
310}
311
312int32_t RilImpl::GetRadioState(int32_t slotId, int32_t serialId)
313{
314    return TaskSchedule(&Telephony::HRilManager::GetRadioState, slotId, serialId);
315}
316
317int32_t RilImpl::GetImei(int32_t slotId, int32_t serialId)
318{
319    return TaskSchedule(&Telephony::HRilManager::GetImei, slotId, serialId);
320}
321
322int32_t RilImpl::GetImeiSv(int32_t slotId, int32_t serialId)
323{
324    return TaskSchedule(&Telephony::HRilManager::GetImeiSv, slotId, serialId);
325}
326
327int32_t RilImpl::GetMeid(int32_t slotId, int32_t serialId)
328{
329    return TaskSchedule(&Telephony::HRilManager::GetMeid, slotId, serialId);
330}
331
332int32_t RilImpl::GetVoiceRadioTechnology(int32_t slotId, int32_t serialId)
333{
334    return TaskSchedule(&Telephony::HRilManager::GetVoiceRadioTechnology, slotId, serialId);
335}
336
337int32_t RilImpl::GetBasebandVersion(int32_t slotId, int32_t serialId)
338{
339    return TaskSchedule(&Telephony::HRilManager::GetBasebandVersion, slotId, serialId);
340}
341
342int32_t RilImpl::ShutDown(int32_t slotId, int32_t serialId)
343{
344    return TaskSchedule(&Telephony::HRilManager::ShutDown, slotId, serialId);
345}
346
347// Network
348int32_t RilImpl::GetSignalStrength(int32_t slotId, int32_t serialId)
349{
350    return TaskSchedule(&Telephony::HRilManager::GetSignalStrength, slotId, serialId);
351}
352
353int32_t RilImpl::GetCsRegStatus(int32_t slotId, int32_t serialId)
354{
355    return TaskSchedule(&Telephony::HRilManager::GetCsRegStatus, slotId, serialId);
356}
357
358int32_t RilImpl::GetPsRegStatus(int32_t slotId, int32_t serialId)
359{
360    return TaskSchedule(&Telephony::HRilManager::GetPsRegStatus, slotId, serialId);
361}
362
363int32_t RilImpl::GetOperatorInfo(int32_t slotId, int32_t serialId)
364{
365    return TaskSchedule(&Telephony::HRilManager::GetOperatorInfo, slotId, serialId);
366}
367
368int32_t RilImpl::GetNetworkSearchInformation(int32_t slotId, int32_t serialId)
369{
370    return TaskSchedule(&Telephony::HRilManager::GetNetworkSearchInformation, slotId, serialId);
371}
372
373int32_t RilImpl::GetNetworkSelectionMode(int32_t slotId, int32_t serialId)
374{
375    return TaskSchedule(&Telephony::HRilManager::GetNetworkSelectionMode, slotId, serialId);
376}
377
378int32_t RilImpl::SetNetworkSelectionMode(
379    int32_t slotId, int32_t serialId, const SetNetworkModeInfo &networkModeInfo)
380{
381    return TaskSchedule(&Telephony::HRilManager::SetNetworkSelectionMode, slotId, serialId, networkModeInfo);
382}
383
384int32_t RilImpl::GetNeighboringCellInfoList(int32_t slotId, int32_t serialId)
385{
386    return TaskSchedule(&Telephony::HRilManager::GetNeighboringCellInfoList, slotId, serialId);
387}
388
389int32_t RilImpl::GetCurrentCellInfo(int32_t slotId, int32_t serialId)
390{
391    return TaskSchedule(&Telephony::HRilManager::GetCurrentCellInfo, slotId, serialId);
392}
393
394int32_t RilImpl::SetPreferredNetwork(int32_t slotId, int32_t serialId, int32_t preferredNetworkType)
395{
396    return TaskSchedule(&Telephony::HRilManager::SetPreferredNetwork, slotId, serialId, preferredNetworkType);
397}
398
399int32_t RilImpl::GetPreferredNetwork(int32_t slotId, int32_t serialId)
400{
401    return TaskSchedule(&Telephony::HRilManager::GetPreferredNetwork, slotId, serialId);
402}
403
404int32_t RilImpl::GetPhysicalChannelConfig(int32_t slotId, int32_t serialId)
405{
406    return TaskSchedule(&Telephony::HRilManager::GetPhysicalChannelConfig, slotId, serialId);
407}
408
409int32_t RilImpl::SetLocateUpdates(int32_t slotId, int32_t serialId, const RilRegNotifyMode mode)
410{
411    return TaskSchedule(&Telephony::HRilManager::SetLocateUpdates, slotId, serialId, mode);
412}
413
414int32_t RilImpl::SetNotificationFilter(int32_t slotId, int32_t serialId, int32_t newFilter)
415{
416    return TaskSchedule(&Telephony::HRilManager::SetNotificationFilter, slotId, serialId, newFilter);
417}
418
419int32_t RilImpl::SetDeviceState(
420    int32_t slotId, int32_t serialId, int32_t deviceStateType, int32_t deviceStateOn)
421{
422    return TaskSchedule(
423        &Telephony::HRilManager::SetDeviceState, slotId, serialId, deviceStateType, deviceStateOn);
424}
425
426int32_t RilImpl::SetNrOptionMode(int32_t slotId, int32_t serialId, int32_t mode)
427{
428    return TaskSchedule(&Telephony::HRilManager::SetNrOptionMode, slotId, serialId, mode);
429}
430
431int32_t RilImpl::GetNrOptionMode(int32_t slotId, int32_t serialId)
432{
433    return TaskSchedule(&Telephony::HRilManager::GetNrOptionMode, slotId, serialId);
434}
435
436int32_t RilImpl::GetRrcConnectionState(int32_t slotId, int32_t serialId)
437{
438    return TaskSchedule(&Telephony::HRilManager::GetRrcConnectionState, slotId, serialId);
439}
440
441int32_t RilImpl::GetNrSsbId(int32_t slotId, int32_t serialId)
442{
443    return TaskSchedule(&Telephony::HRilManager::GetNrSsbId, slotId, serialId);
444}
445
446int32_t RilImpl::SetCallback(const sptr<V1_1::IRilCallback> &rilCallback)
447{
448    return HDF_SUCCESS;
449}
450
451int32_t RilImpl::SetCallback1_2(const sptr<V1_2::IRilCallback> &rilCallback)
452{
453    return HDF_SUCCESS;
454}
455
456int32_t RilImpl::SetCallback1_3(const sptr<V1_3::IRilCallback> &rilCallback)
457{
458    std::lock_guard<std::mutex> lock(mutex_);
459    callback_ = rilCallback;
460    if (callback_ == nullptr) {
461        UnRegister();
462        return HDF_SUCCESS;
463    }
464    g_deathRecipient = new RilDeathRecipient(this);
465    if (g_deathRecipient == nullptr) {
466        HDF_LOGE("SetCallback1_3 fail g_deathRecipient is null");
467        return HDF_FAILURE;
468    }
469    AddRilDeathRecipient(callback_);
470    if (Telephony::HRilManager::manager_ == nullptr) {
471        HDF_LOGE("SetCallback1_3 fail manager_ is null");
472        return HDF_FAILURE;
473    }
474    Telephony::HRilManager::manager_->SetRilCallback(callback_);
475    return HDF_SUCCESS;
476}
477
478int32_t RilImpl::GetSimIO(int32_t slotId, int32_t serialId, const SimIoRequestInfo &simIO)
479{
480    return TaskSchedule(&Telephony::HRilManager::GetSimIO, slotId, serialId, simIO);
481}
482
483int32_t RilImpl::GetSimStatus(int32_t slotId, int32_t serialId)
484{
485    return TaskSchedule(&Telephony::HRilManager::GetSimStatus, slotId, serialId);
486}
487
488int32_t RilImpl::GetImsi(int32_t slotId, int32_t serialId)
489{
490    return TaskSchedule(&Telephony::HRilManager::GetImsi, slotId, serialId);
491}
492
493int32_t RilImpl::GetSimLockStatus(int32_t slotId, int32_t serialId, const SimLockInfo &simLockInfo)
494{
495    return TaskSchedule(&Telephony::HRilManager::GetSimLockStatus, slotId, serialId, simLockInfo);
496}
497
498int32_t RilImpl::SetSimLock(int32_t slotId, int32_t serialId, const SimLockInfo &simLockInfo)
499{
500    return TaskSchedule(&Telephony::HRilManager::SetSimLock, slotId, serialId, simLockInfo);
501}
502
503int32_t RilImpl::ChangeSimPassword(int32_t slotId, int32_t serialId, const SimPasswordInfo &simPassword)
504{
505    return TaskSchedule(&Telephony::HRilManager::ChangeSimPassword, slotId, serialId, simPassword);
506}
507
508int32_t RilImpl::UnlockPin(int32_t slotId, int32_t serialId, const std::string &pin)
509{
510    return TaskSchedule(&Telephony::HRilManager::UnlockPin, slotId, serialId, pin);
511}
512
513int32_t RilImpl::UnlockPuk(int32_t slotId, int32_t serialId, const std::string &puk, const std::string &pin)
514{
515    return TaskSchedule(&Telephony::HRilManager::UnlockPuk, slotId, serialId, puk, pin);
516}
517
518int32_t RilImpl::UnlockPin2(int32_t slotId, int32_t serialId, const std::string &pin2)
519{
520    return TaskSchedule(&Telephony::HRilManager::UnlockPin2, slotId, serialId, pin2);
521}
522
523int32_t RilImpl::UnlockPuk2(int32_t slotId, int32_t serialId, const std::string &puk2, const std::string &pin2)
524{
525    return TaskSchedule(&Telephony::HRilManager::UnlockPuk2, slotId, serialId, puk2, pin2);
526}
527
528int32_t RilImpl::SetActiveSim(int32_t slotId, int32_t serialId, int32_t index, int32_t enable)
529{
530    return TaskSchedule(&Telephony::HRilManager::SetActiveSim, slotId, serialId, index, enable);
531}
532
533int32_t RilImpl::SimStkSendTerminalResponse(int32_t slotId, int32_t serialId, const std::string &strCmd)
534{
535    return TaskSchedule(&Telephony::HRilManager::SimStkSendTerminalResponse, slotId, serialId, strCmd);
536}
537
538int32_t RilImpl::SimStkSendEnvelope(int32_t slotId, int32_t serialId, const std::string &strCmd)
539{
540    return TaskSchedule(&Telephony::HRilManager::SimStkSendEnvelope, slotId, serialId, strCmd);
541}
542
543int32_t RilImpl::SimStkSendCallSetupRequestResult(int32_t slotId, int32_t serialId, int32_t accept)
544{
545    return TaskSchedule(&Telephony::HRilManager::SimStkSendCallSetupRequestResult, slotId, serialId, accept);
546}
547
548int32_t RilImpl::SimStkIsReady(int32_t slotId, int32_t serialId)
549{
550    return TaskSchedule(&Telephony::HRilManager::SimStkIsReady, slotId, serialId);
551}
552
553int32_t RilImpl::GetRadioProtocol(int32_t slotId, int32_t serialId)
554{
555    return TaskSchedule(&Telephony::HRilManager::GetRadioProtocol, slotId, serialId);
556}
557
558int32_t RilImpl::SetRadioProtocol(int32_t slotId, int32_t serialId, const RadioProtocol &radioProtocol)
559{
560    return TaskSchedule(&Telephony::HRilManager::SetRadioProtocol, slotId, serialId, radioProtocol);
561}
562
563int32_t RilImpl::SimOpenLogicalChannel(int32_t slotId, int32_t serialId, const std::string &appID, int32_t p2)
564{
565    return TaskSchedule(&Telephony::HRilManager::SimOpenLogicalChannel, slotId, serialId, appID, p2);
566}
567
568int32_t RilImpl::SimCloseLogicalChannel(int32_t slotId, int32_t serialId, int32_t channelId)
569{
570    return TaskSchedule(&Telephony::HRilManager::SimCloseLogicalChannel, slotId, serialId, channelId);
571}
572
573int32_t RilImpl::SimTransmitApduLogicalChannel(int32_t slotId, int32_t serialId, const ApduSimIORequestInfo &apduSimIO)
574{
575    return TaskSchedule(&Telephony::HRilManager::SimTransmitApduLogicalChannel, slotId, serialId, apduSimIO);
576}
577
578int32_t RilImpl::SimTransmitApduBasicChannel(int32_t slotId, int32_t serialId, const ApduSimIORequestInfo &apduSimIO)
579{
580    return TaskSchedule(&Telephony::HRilManager::SimTransmitApduBasicChannel, slotId, serialId, apduSimIO);
581}
582
583int32_t RilImpl::SimAuthentication(int32_t slotId, int32_t serialId, const SimAuthenticationRequestInfo &simAuthInfo)
584{
585    return TaskSchedule(&Telephony::HRilManager::SimAuthentication, slotId, serialId, simAuthInfo);
586}
587
588int32_t RilImpl::UnlockSimLock(int32_t slotId, int32_t serialId, int32_t lockType, const std::string &key)
589{
590    return TaskSchedule(&Telephony::HRilManager::UnlockSimLock, slotId, serialId, lockType, key);
591}
592
593int32_t RilImpl::SendSimMatchedOperatorInfo(int32_t slotId, int32_t serialId, const NcfgOperatorInfo &ncfgOperatorInfo)
594{
595    return TaskSchedule(&Telephony::HRilManager::SendSimMatchedOperatorInfo, slotId, serialId, ncfgOperatorInfo);
596}
597
598// Sms
599int32_t RilImpl::SendGsmSms(int32_t slotId, int32_t serialId, const GsmSmsMessageInfo &gsmSmsMessageInfo)
600{
601    return TaskSchedule(&Telephony::HRilManager::SendGsmSms, slotId, serialId, gsmSmsMessageInfo);
602}
603
604int32_t RilImpl::SendCdmaSms(int32_t slotId, int32_t serialId, const SendCdmaSmsMessageInfo &cdmaSmsMessageInfo)
605{
606    return TaskSchedule(&Telephony::HRilManager::SendCdmaSms, slotId, serialId, cdmaSmsMessageInfo);
607}
608
609int32_t RilImpl::AddSimMessage(int32_t slotId, int32_t serialId, const SmsMessageIOInfo &smsMessageIOInfo)
610{
611    return TaskSchedule(&Telephony::HRilManager::AddSimMessage, slotId, serialId, smsMessageIOInfo);
612}
613
614int32_t RilImpl::DelSimMessage(int32_t slotId, int32_t serialId, int32_t index)
615{
616    return TaskSchedule(&Telephony::HRilManager::DelSimMessage, slotId, serialId, index);
617}
618
619int32_t RilImpl::UpdateSimMessage(int32_t slotId, int32_t serialId, const SmsMessageIOInfo &smsMessageIOInfo)
620{
621    return TaskSchedule(&Telephony::HRilManager::UpdateSimMessage, slotId, serialId, smsMessageIOInfo);
622}
623
624int32_t RilImpl::AddCdmaSimMessage(int32_t slotId, int32_t serialId, const SmsMessageIOInfo &smsMessageIOInfo)
625{
626    return TaskSchedule(&Telephony::HRilManager::AddCdmaSimMessage, slotId, serialId, smsMessageIOInfo);
627}
628
629int32_t RilImpl::DelCdmaSimMessage(int32_t slotId, int32_t serialId, int32_t index)
630{
631    return TaskSchedule(&Telephony::HRilManager::DelCdmaSimMessage, slotId, serialId, index);
632}
633
634int32_t RilImpl::UpdateCdmaSimMessage(int32_t slotId, int32_t serialId, const SmsMessageIOInfo &smsMessageIOInfo)
635{
636    return TaskSchedule(&Telephony::HRilManager::UpdateCdmaSimMessage, slotId, serialId, smsMessageIOInfo);
637}
638
639int32_t RilImpl::SetSmscAddr(int32_t slotId, int32_t serialId, const ServiceCenterAddress &serviceCenterAddress)
640{
641    return TaskSchedule(&Telephony::HRilManager::SetSmscAddr, slotId, serialId, serviceCenterAddress);
642}
643
644int32_t RilImpl::GetSmscAddr(int32_t slotId, int32_t serialId)
645{
646    return TaskSchedule(&Telephony::HRilManager::GetSmscAddr, slotId, serialId);
647}
648
649int32_t RilImpl::SetCBConfig(int32_t slotId, int32_t serialId, const CBConfigInfo &cellBroadcastInfo)
650{
651    return TaskSchedule(&Telephony::HRilManager::SetCBConfig, slotId, serialId, cellBroadcastInfo);
652}
653
654int32_t RilImpl::GetCBConfig(int32_t slotId, int32_t serialId)
655{
656    return TaskSchedule(&Telephony::HRilManager::GetCBConfig, slotId, serialId);
657}
658
659int32_t RilImpl::SetCdmaCBConfig(int32_t slotId, int32_t serialId, const CdmaCBConfigInfoList &cdmaCBConfigInfoList)
660{
661    return TaskSchedule(&Telephony::HRilManager::SetCdmaCBConfig, slotId, serialId, cdmaCBConfigInfoList);
662}
663
664int32_t RilImpl::GetCdmaCBConfig(int32_t slotId, int32_t serialId)
665{
666    return TaskSchedule(&Telephony::HRilManager::GetCdmaCBConfig, slotId, serialId);
667}
668
669int32_t RilImpl::SendSmsMoreMode(int32_t slotId, int32_t serialId, const GsmSmsMessageInfo &gsmSmsMessageInfo)
670{
671    return TaskSchedule(&Telephony::HRilManager::SendSmsMoreMode, slotId, serialId, gsmSmsMessageInfo);
672}
673
674int32_t RilImpl::SendSmsAck(int32_t slotId, int32_t serialId, const ModeData &modeData)
675{
676    return TaskSchedule(&Telephony::HRilManager::SendSmsAck, slotId, serialId, modeData);
677}
678
679int32_t RilImpl::SendRilAck()
680{
681    if (Telephony::HRilManager::manager_ == nullptr) {
682        HDF_LOGE("manager or func is null pointer");
683        return RIL_ERR_NULL_POINT;
684    }
685    return Telephony::HRilManager::manager_->SendRilAck();
686}
687
688int32_t RilImpl::AddRilDeathRecipient(const sptr<IRilCallback> &callback)
689{
690    const sptr<IRemoteObject> &remote = OHOS::HDI::hdi_objcast<IRilCallback>(callback);
691    if (!remote->AddDeathRecipient(g_deathRecipient)) {
692        HDF_LOGE("AddRilDeathRecipient fail");
693        return HDF_FAILURE;
694    }
695    return HDF_SUCCESS;
696}
697
698int32_t RilImpl::RemoveRilDeathRecipient(const sptr<IRilCallback> &callback)
699{
700    if (callback == nullptr) {
701        return HDF_FAILURE;
702    }
703    const sptr<IRemoteObject> &remote = OHOS::HDI::hdi_objcast<IRilCallback>(callback);
704    if (!remote->RemoveDeathRecipient(g_deathRecipient)) {
705        HDF_LOGI("RemoveRilDeathRecipient fail");
706        return HDF_FAILURE;
707    }
708    return HDF_SUCCESS;
709}
710
711void RilImpl::RilDeathRecipient::OnRemoteDied(const wptr<IRemoteObject> &object)
712{
713    if (rilInterfaceImpl_ == nullptr) {
714        HDF_LOGE("RilImpl::RilDeathRecipient::OnRemoteDied fail rilInterfaceImpl_ is null");
715        return;
716    }
717    rilInterfaceImpl_->UnRegister();
718}
719
720int32_t RilImpl::UnRegister()
721{
722    HDF_LOGI("UnRegister");
723    RemoveRilDeathRecipient(callback_);
724    callback_ = nullptr;
725    if (Telephony::HRilManager::manager_ == nullptr) {
726        HDF_LOGE("RilImpl::UnRegister fail manager_ is null");
727        return HDF_FAILURE;
728    }
729    Telephony::HRilManager::manager_->SetRilCallback(nullptr);
730    return HDF_SUCCESS;
731}
732
733int32_t RilImpl::Init()
734{
735    if (Telephony::HRilManager::manager_ == nullptr) {
736        HDF_LOGE("RilImpl::Init is manager_ is null");
737        return HDF_FAILURE;
738    }
739    return HDF_SUCCESS;
740}
741} // namespace V1_3
742} // namespace Ril
743} // namespace HDI
744} // namespace OHOS
745