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