1 /*
2  * Copyright (C) 2021-2024 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 "hril_manager.h"
17 
18 #include "hril_base.h"
19 #include "hril_event_map.h"
20 #include "hril_notification.h"
21 #include "hril_request.h"
22 #include "parameter.h"
23 
24 namespace OHOS {
25 namespace Telephony {
26 constexpr const char *MODULE_HRIL_CALL = "hrilCall";
27 constexpr const char *MODULE_HRIL_DATA = "hrilData";
28 constexpr const char *MODULE_HRIL_MODEM = "hrilModem";
29 constexpr const char *MODULE_HRIL_SIM = "hrilSim";
30 constexpr const char *MODULE_HRIL_NETWORK = "hrilNetwork";
31 constexpr const char *MODULE_HRIL_SMS = "hrilSms";
32 const std::string RUNNINGLOCK_NAME = "HRilRunningLock";
33 static bool g_isHrilManagerDestory = false;
34 static pthread_mutex_t dispatchMutex = PTHREAD_MUTEX_INITIALIZER;
35 std::unordered_map<int32_t, int32_t> HRilManager::notificationMap_ = {
36 #include "hril_notification_map.h"
37 };
38 
39 #ifdef ABILITY_POWER_SUPPORT
40 constexpr int32_t RUNNINGLOCK_TIMEOUTMS_LASTING = -1;
41 using namespace OHOS::HDI::Power::V1_2;
42 #endif
43 
IsHrilManagerValid()44 static bool IsHrilManagerValid()
45 {
46     if (g_isHrilManagerDestory) {
47         return false;
48     }
49     return true;
50 }
51 
GetInstance()52 HRilManager &HRilManager::GetInstance()
53 {
54     static HRilManager hrilManager;
55     return hrilManager;
56 }
57 
GetMaxSimSlotCount()58 int32_t HRilManager::GetMaxSimSlotCount()
59 {
60     return hrilSimSlotCount_;
61 }
62 
CreateHRilRequest(int32_t serial,int32_t slotId,int32_t request)63 ReqDataInfo *HRilManager::CreateHRilRequest(int32_t serial, int32_t slotId, int32_t request)
64 {
65     ReqDataInfo *requestInfo = nullptr;
66     HRilSimSlotId simSlotId = (HRilSimSlotId)slotId;
67     requestInfo = (ReqDataInfo *)malloc(sizeof(ReqDataInfo));
68     if (requestInfo == nullptr) {
69         return nullptr;
70     }
71     requestInfo->slotId = simSlotId;
72     requestInfo->request = request;
73     requestInfo->serial = serial;
74     std::lock_guard<std::mutex> lockRequest(requestListLock_);
75     auto iter = requestList_.find(request);
76     if (iter != requestList_.end()) {
77         std::list<ReqDataInfo *> &reqDataSet = iter->second;
78         reqDataSet.push_back(requestInfo);
79         TELEPHONY_LOGD("CreateHRilRequest requestId=%{public}d, list size: %{public}zu", request, reqDataSet.size());
80     } else {
81         TELEPHONY_LOGD("CreateHRilRequest create requestList, requestId=%{public}d", request);
82         std::list<ReqDataInfo *> reqDataSet;
83         reqDataSet.push_back(requestInfo);
84         requestList_.emplace(request, reqDataSet);
85     }
86     return requestInfo;
87 }
88 
ReleaseHRilRequest(int32_t request,ReqDataInfo * requestInfo)89 void HRilManager::ReleaseHRilRequest(int32_t request, ReqDataInfo *requestInfo)
90 {
91     std::lock_guard<std::mutex> lockRequest(requestListLock_);
92     auto iter = requestList_.find(request);
93     if (iter != requestList_.end()) {
94         std::list<ReqDataInfo *> &reqDataSet = iter->second;
95         auto it = find(reqDataSet.begin(), reqDataSet.end(), requestInfo);
96         if (it != reqDataSet.end()) {
97             if (*it != nullptr) {
98                 free(*it);
99             }
100             reqDataSet.erase(it);
101         }
102     }
103 }
104 
105 template<typename ClassTypePtr, typename FuncType, typename... ParamTypes>
TaskSchedule(const std::string module,ClassTypePtr & _obj,FuncType && _func,ParamTypes &&..._args)106 inline int32_t HRilManager::TaskSchedule(
107     const std::string module, ClassTypePtr &_obj, FuncType &&_func, ParamTypes &&... _args)
108 {
109     pthread_mutex_lock(&dispatchMutex);
110     if (_func == nullptr || _obj == nullptr || g_isHrilManagerDestory) {
111         TELEPHONY_LOGE(
112             "%{public}s func or obj is null pointer or destroy %{public}d", module.c_str(), g_isHrilManagerDestory);
113         pthread_mutex_unlock(&dispatchMutex);
114         return HDF_FAILURE;
115     }
116     int32_t ret = (_obj.get()->*(_func))(std::forward<ParamTypes>(_args)...);
117     pthread_mutex_unlock(&dispatchMutex);
118     return ret;
119 }
120 
RegisterCallFuncs(int32_t slotId,const HRilCallReq * callFuncs)121 void HRilManager::RegisterCallFuncs(int32_t slotId, const HRilCallReq *callFuncs)
122 {
123     if (hrilCall_[slotId] != nullptr) {
124         hrilCall_[slotId]->RegisterCallFuncs(callFuncs);
125     }
126 }
127 
RegisterDataFuncs(int32_t slotId,const HRilDataReq * dataFuncs)128 void HRilManager::RegisterDataFuncs(int32_t slotId, const HRilDataReq *dataFuncs)
129 {
130     if (hrilData_[slotId] != nullptr) {
131         hrilData_[slotId]->RegisterDataFuncs(dataFuncs);
132     }
133 }
134 
RegisterModemFuncs(int32_t slotId,const HRilModemReq * modemFuncs)135 void HRilManager::RegisterModemFuncs(int32_t slotId, const HRilModemReq *modemFuncs)
136 {
137     if (hrilModem_[slotId] != nullptr) {
138         hrilModem_[slotId]->RegisterModemFuncs(modemFuncs);
139     }
140 }
141 
RegisterNetworkFuncs(int32_t slotId,const HRilNetworkReq * networkFuncs)142 void HRilManager::RegisterNetworkFuncs(int32_t slotId, const HRilNetworkReq *networkFuncs)
143 {
144     if (hrilNetwork_[slotId] != nullptr) {
145         hrilNetwork_[slotId]->RegisterNetworkFuncs(networkFuncs);
146     }
147 }
148 
RegisterSimFuncs(int32_t slotId,const HRilSimReq * simFuncs)149 void HRilManager::RegisterSimFuncs(int32_t slotId, const HRilSimReq *simFuncs)
150 {
151     if (hrilSim_[slotId] != nullptr) {
152         hrilSim_[slotId]->RegisterSimFuncs(simFuncs);
153     }
154 }
155 
RegisterSmsFuncs(int32_t slotId,const HRilSmsReq * smsFuncs)156 void HRilManager::RegisterSmsFuncs(int32_t slotId, const HRilSmsReq *smsFuncs)
157 {
158     if (hrilSms_[slotId] != nullptr) {
159         hrilSms_[slotId]->RegisterSmsFuncs(smsFuncs);
160     }
161 }
162 
163 #ifdef ABILITY_POWER_SUPPORT
FillRunningLockInfo(const std::string & name,int32_t timeoutMs)164 static OHOS::HDI::Power::V1_2::RunningLockInfo FillRunningLockInfo(const std::string &name, int32_t timeoutMs)
165 {
166     OHOS::HDI::Power::V1_2::RunningLockInfo filledInfo {};
167     filledInfo.name = name;
168     filledInfo.type = OHOS::HDI::Power::V1_2::RunningLockType::RUNNINGLOCK_BACKGROUND_PHONE;
169     filledInfo.timeoutMs = timeoutMs;
170     filledInfo.uid = static_cast<int32_t>(getuid());
171     filledInfo.pid = static_cast<int32_t>(getpid());
172     return filledInfo;
173 }
174 
RunningLockCallback(uint8_t * param)175 static void RunningLockCallback(uint8_t *param)
176 {
177     if (!IsHrilManagerValid() || param == nullptr) {
178         TELEPHONY_LOGE("check nullptr fail.");
179         return;
180     }
181     int serialNum = *reinterpret_cast<int *>(param);
182     delete param;
183     param = nullptr;
184     std::lock_guard<std::mutex> lockRequest(HRilManager::GetInstance().mutexRunningLock_);
185     TELEPHONY_LOGD("RunningLockCallback, serialNum:%{public}d, runningSerialNum_:%{public}d", serialNum,
186         static_cast<int>(HRilManager::GetInstance().runningSerialNum_));
187     if (HRilManager::GetInstance().powerInterface_ == nullptr ||
188         serialNum != static_cast<int>(HRilManager::GetInstance().runningSerialNum_)) {
189         return;
190     }
191     HRilManager::GetInstance().runningLockCount_ = 0;
192     OHOS::HDI::Power::V1_2::RunningLockInfo filledInfo = FillRunningLockInfo(
193         RUNNINGLOCK_NAME, RUNNINGLOCK_TIMEOUTMS_LASTING);
194     HRilManager::GetInstance().powerInterface_->UnholdRunningLock(filledInfo);
195     TELEPHONY_LOGD("RunningLockCallback, UnLock");
196 }
197 #endif
198 
ApplyRunningLock(void)199 void HRilManager::ApplyRunningLock(void)
200 {
201 #ifdef ABILITY_POWER_SUPPORT
202     if (!IsHrilManagerValid() || timerCallback_ == nullptr) {
203         TELEPHONY_LOGE("check nullptr fail.");
204         return;
205     }
206 
207     std::lock_guard<std::mutex> lockRequest(mutexRunningLock_);
208     if (powerInterface_ != nullptr) {
209         OHOS::HDI::Power::V1_2::RunningLockInfo filledInfo = FillRunningLockInfo(
210             RUNNINGLOCK_NAME, RUNNINGLOCK_TIMEOUTMS_LASTING);
211         powerInterface_->HoldRunningLock(filledInfo);
212         struct timeval tv = { 0, RUNNING_LOCK_DEFAULT_TIMEOUT_US };
213         runningLockCount_++;
214         runningSerialNum_++;
215         uint8_t *serialNum = reinterpret_cast<uint8_t *>(new int(runningSerialNum_));
216         timerCallback_->HRilSetTimerCallbackInfo(RunningLockCallback, serialNum, &tv);
217         TELEPHONY_LOGD("ApplyRunningLock, runningLockCount_:%{public}d, runningSerialNum_:%{public}d",
218             static_cast<int>(runningLockCount_), static_cast<int>(runningSerialNum_));
219     } else {
220         /* Since the power management subsystem starts slower than the RilAdapter,
221          * the wakelock needs to be recreated.
222          */
223         TELEPHONY_LOGW("The powerInterface_ is nullptr, needs to be recreated.");
224         powerInterface_ = IPowerInterface::Get();
225         if (powerInterface_ == nullptr) {
226             TELEPHONY_LOGE("failed to get power hdi interface");
227         }
228     }
229 #endif
230 }
231 
ReleaseRunningLock(void)232 void HRilManager::ReleaseRunningLock(void)
233 {
234 #ifdef ABILITY_POWER_SUPPORT
235     std::lock_guard<std::mutex> lockRequest(mutexRunningLock_);
236     TELEPHONY_LOGD("ReleaseRunningLock, runningLockCount_:%{public}d", static_cast<int>(runningLockCount_));
237     if (powerInterface_ == nullptr) {
238         TELEPHONY_LOGE("powerInterface_ is nullptr");
239         return;
240     }
241     if (runningLockCount_ > 1) {
242         runningLockCount_--;
243     } else {
244         runningLockCount_ = 0;
245         OHOS::HDI::Power::V1_2::RunningLockInfo filledInfo = FillRunningLockInfo(
246             RUNNINGLOCK_NAME, RUNNINGLOCK_TIMEOUTMS_LASTING);
247         powerInterface_->UnholdRunningLock(filledInfo);
248         TELEPHONY_LOGD("ReleaseRunningLock UnLock");
249     }
250 #endif
251 }
252 
253 template<typename T>
OnReport(std::vector<std::unique_ptr<T>> & subModules,int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)254 void HRilManager::OnReport(std::vector<std::unique_ptr<T>> &subModules, int32_t slotId, const ReportInfo *reportInfo,
255     const uint8_t *response, size_t responseLen)
256 {
257     if (reportInfo == nullptr) {
258         TELEPHONY_LOGE("OnReport reportInfo is null!!!");
259         return;
260     }
261     if (slotId < 0 || static_cast<uint32_t>(slotId) >= subModules.size()) {
262         TELEPHONY_LOGE("OnReport subModules out of bounds!!!");
263         return;
264     }
265     switch (reportInfo->type) {
266         case static_cast<int32_t>(ReportType::HRIL_RESPONSE):
267             ReportResponse(subModules, slotId, reportInfo, response, responseLen);
268             break;
269         case static_cast<int32_t>(ReportType::HRIL_NOTIFICATION):
270             ReportNotification(subModules, slotId, reportInfo, response, responseLen);
271             break;
272         default:
273             break;
274     }
275 }
276 
277 template<typename T>
ReportResponse(std::vector<std::unique_ptr<T>> & subModules,int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)278 void HRilManager::ReportResponse(std::vector<std::unique_ptr<T>> &subModules, int32_t slotId,
279     const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
280 {
281     ReqDataInfo *reqInfo = (ReqDataInfo *)reportInfo->requestInfo;
282     if (reqInfo == nullptr) {
283         TELEPHONY_LOGE("reqInfo is null!!!");
284         return;
285     }
286     auto iter = requestEventMap_.find(reqInfo->request);
287     if (iter != requestEventMap_.end()) {
288         TELEPHONY_LOGI("requestId:%{public}d, event:%{public}s", reqInfo->request, iter->second.c_str());
289     } else {
290         TELEPHONY_LOGD("requestId:%{public}d", reqInfo->request);
291     }
292     HDI::Ril::V1_1::RilRadioResponseInfo responseInfo = {};
293     responseInfo.serial = reqInfo->serial;
294     responseInfo.error = (HDI::Ril::V1_1::RilErrType)reportInfo->error;
295     responseInfo.type = HDI::Ril::V1_1::RIL_RESPONSE_REQUEST;
296     if (HRIL_NEED_ACK == reportInfo->ack) {
297         ApplyRunningLock();
298         responseInfo.type = HDI::Ril::V1_1::RIL_RESPONSE_REQUEST_MUST_ACK;
299     }
300     int32_t requestId = reqInfo->request;
301     ReleaseHRilRequest(requestId, reqInfo);
302     subModules[slotId]->template ProcessResponse<T>(requestId, responseInfo, response, responseLen);
303 }
304 
305 template<typename T>
ReportNotification(std::vector<std::unique_ptr<T>> & subModules,int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)306 void HRilManager::ReportNotification(std::vector<std::unique_ptr<T>> &subModules, int32_t slotId,
307     const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
308 {
309     int32_t notifyType = HDI::Ril::V1_1::RIL_RESPONSE_NOTICE;
310     auto iter = notificationMap_.find(reportInfo->notifyId);
311     auto event = notificationEventMap_.find(reportInfo->notifyId);
312     if (iter != notificationMap_.end()) {
313         if (reportInfo->notifyId == HNOTI_NETWORK_CS_REG_STATUS_UPDATED ||
314             reportInfo->notifyId == HNOTI_NETWORK_SIGNAL_STRENGTH_UPDATED ||
315             reportInfo->notifyId == HNOTI_CALL_EMERGENCY_NUMBER_REPORT ||
316             reportInfo->notifyId == HNOTI_MODEM_DSDS_MODE_UPDATED) {
317             TELEPHONY_LOGD("notifyId:%{public}d, event:%{public}s", reportInfo->notifyId, event->second.c_str());
318         } else {
319             TELEPHONY_LOGI("notifyId:%{public}d, event:%{public}s", reportInfo->notifyId, event->second.c_str());
320         }
321         if (NEED_LOCK == iter->second) {
322             ApplyRunningLock();
323             notifyType = HDI::Ril::V1_1::RIL_RESPONSE_NOTICE_MUST_ACK;
324         }
325     }
326     subModules[slotId]->template ProcessNotify<T>(notifyType, reportInfo, response, responseLen);
327 }
328 
OnCallReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)329 void HRilManager::OnCallReport(
330     int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
331 {
332     OnReport(hrilCall_, slotId, reportInfo, response, responseLen);
333 }
334 
OnDataReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)335 void HRilManager::OnDataReport(
336     int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
337 {
338     OnReport(hrilData_, slotId, reportInfo, response, responseLen);
339 }
340 
OnModemReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)341 void HRilManager::OnModemReport(
342     int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
343 {
344     OnReport(hrilModem_, slotId, reportInfo, response, responseLen);
345 }
346 
OnNetworkReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)347 void HRilManager::OnNetworkReport(
348     int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
349 {
350     OnReport(hrilNetwork_, slotId, reportInfo, response, responseLen);
351 }
352 
OnSimReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)353 void HRilManager::OnSimReport(int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
354 {
355     OnReport(hrilSim_, slotId, reportInfo, response, responseLen);
356 }
357 
OnSmsReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)358 void HRilManager::OnSmsReport(int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
359 {
360     OnReport(hrilSms_, slotId, reportInfo, response, responseLen);
361 }
362 
HRilManager()363 HRilManager::HRilManager() : hrilSimSlotCount_(GetSimSlotCount())
364 {
365     for (int32_t slotId = HRIL_SIM_SLOT_0; slotId < hrilSimSlotCount_; slotId++) {
366         hrilCall_.push_back(std::make_unique<HRilCall>(slotId));
367         hrilModem_.push_back(std::make_unique<HRilModem>(slotId));
368         hrilNetwork_.push_back(std::make_unique<HRilNetwork>(slotId));
369         hrilSim_.push_back(std::make_unique<HRilSim>(slotId));
370         hrilSms_.push_back(std::make_unique<HRilSms>(slotId));
371         hrilData_.push_back(std::make_unique<HRilData>(slotId));
372     }
373     timerCallback_ = std::make_unique<HRilTimerCallback>();
374 }
375 
SetRilCallback(sptr<OHOS::HDI::Ril::V1_3::IRilCallback> callback)376 void HRilManager::SetRilCallback(sptr<OHOS::HDI::Ril::V1_3::IRilCallback> callback)
377 {
378     TELEPHONY_LOGD("SetRilCallback");
379     for (int32_t slotId = HRIL_SIM_SLOT_0; slotId < hrilSimSlotCount_; slotId++) {
380         hrilCall_[slotId]->SetRilCallback(callback);
381         hrilModem_[slotId]->SetRilCallback(callback);
382         hrilNetwork_[slotId]->SetRilCallback(callback);
383         hrilSim_[slotId]->SetRilCallback(callback);
384         hrilSms_[slotId]->SetRilCallback(callback);
385         hrilData_[slotId]->SetRilCallback(callback);
386         if (callback == nullptr) {
387             continue;
388         }
389         HDI::Ril::V1_1::RilRadioResponseInfo responseInfo = { 0 };
390         responseInfo.slotId = slotId;
391         responseInfo.type = HDI::Ril::V1_1::RIL_RESPONSE_NOTICE;
392         callback->RadioStateUpdated(responseInfo, hrilModem_[slotId]->GetLastRadioState());
393     }
394 }
395 
396 // Call
SetEmergencyCallList(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::EmergencyInfoList & emergencyInfoList)397 int32_t HRilManager::SetEmergencyCallList(
398     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::EmergencyInfoList &emergencyInfoList)
399 {
400     return TaskSchedule(
401         MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetEmergencyCallList, serialId, emergencyInfoList);
402 }
403 
GetEmergencyCallList(int32_t slotId,int32_t serialId)404 int32_t HRilManager::GetEmergencyCallList(int32_t slotId, int32_t serialId)
405 {
406     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetEmergencyCallList, serialId);
407 }
408 
GetCallList(int32_t slotId,int32_t serialId)409 int32_t HRilManager::GetCallList(int32_t slotId, int32_t serialId)
410 {
411     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallList, serialId);
412 }
413 
Dial(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DialInfo & dialInfo)414 int32_t HRilManager::Dial(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DialInfo &dialInfo)
415 {
416     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::Dial, serialId, dialInfo);
417 }
418 
Reject(int32_t slotId,int32_t serialId)419 int32_t HRilManager::Reject(int32_t slotId, int32_t serialId)
420 {
421     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::Reject, serialId);
422 }
423 
Hangup(int32_t slotId,int32_t serialId,int32_t gsmIndex)424 int32_t HRilManager::Hangup(int32_t slotId, int32_t serialId, int32_t gsmIndex)
425 {
426     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::Hangup, serialId, gsmIndex);
427 }
428 
Answer(int32_t slotId,int32_t serialId)429 int32_t HRilManager::Answer(int32_t slotId, int32_t serialId)
430 {
431     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::Answer, serialId);
432 }
433 
HoldCall(int32_t slotId,int32_t serialId)434 int32_t HRilManager::HoldCall(int32_t slotId, int32_t serialId)
435 {
436     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::HoldCall, serialId);
437 }
438 
UnHoldCall(int32_t slotId,int32_t serialId)439 int32_t HRilManager::UnHoldCall(int32_t slotId, int32_t serialId)
440 {
441     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::UnHoldCall, serialId);
442 }
443 
SwitchCall(int32_t slotId,int32_t serialId)444 int32_t HRilManager::SwitchCall(int32_t slotId, int32_t serialId)
445 {
446     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SwitchCall, serialId);
447 }
448 
CombineConference(int32_t slotId,int32_t serialId,int32_t callType)449 int32_t HRilManager::CombineConference(int32_t slotId, int32_t serialId, int32_t callType)
450 {
451     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::CombineConference, serialId, callType);
452 }
453 
SeparateConference(int32_t slotId,int32_t serialId,int32_t callIndex,int32_t callType)454 int32_t HRilManager::SeparateConference(int32_t slotId, int32_t serialId, int32_t callIndex, int32_t callType)
455 {
456     return TaskSchedule(
457         MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SeparateConference, serialId, callIndex, callType);
458 }
459 
GetCallWaiting(int32_t slotId,int32_t serialId)460 int32_t HRilManager::GetCallWaiting(int32_t slotId, int32_t serialId)
461 {
462     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallWaiting, serialId);
463 }
464 
SetCallWaiting(int32_t slotId,int32_t serialId,int32_t activate)465 int32_t HRilManager::SetCallWaiting(int32_t slotId, int32_t serialId, int32_t activate)
466 {
467     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetCallWaiting, serialId, activate);
468 }
469 
GetCallTransferInfo(int32_t slotId,int32_t serialId,int32_t reason)470 int32_t HRilManager::GetCallTransferInfo(int32_t slotId, int32_t serialId, int32_t reason)
471 {
472     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallTransferInfo, serialId, reason);
473 }
474 
SetCallTransferInfo(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::CallForwardSetInfo & callForwardSetInfo)475 int32_t HRilManager::SetCallTransferInfo(
476     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::CallForwardSetInfo &callForwardSetInfo)
477 {
478     return TaskSchedule(
479         MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetCallTransferInfo, serialId, callForwardSetInfo);
480 }
481 
GetCallRestriction(int32_t slotId,int32_t serialId,const std::string & fac)482 int32_t HRilManager::GetCallRestriction(int32_t slotId, int32_t serialId, const std::string &fac)
483 {
484     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallRestriction, serialId, fac);
485 }
486 
SetCallRestriction(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::CallRestrictionInfo & callRestrictionInfo)487 int32_t HRilManager::SetCallRestriction(
488     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::CallRestrictionInfo &callRestrictionInfo)
489 {
490     return TaskSchedule(
491         MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetCallRestriction, serialId, callRestrictionInfo);
492 }
493 
GetClip(int32_t slotId,int32_t serialId)494 int32_t HRilManager::GetClip(int32_t slotId, int32_t serialId)
495 {
496     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetClip, serialId);
497 }
498 
SetClip(int32_t slotId,int32_t serialId,int32_t action)499 int32_t HRilManager::SetClip(int32_t slotId, int32_t serialId, int32_t action)
500 {
501     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetClip, serialId, action);
502 }
503 
GetClir(int32_t slotId,int32_t serialId)504 int32_t HRilManager::GetClir(int32_t slotId, int32_t serialId)
505 {
506     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetClir, serialId);
507 }
508 
SetClir(int32_t slotId,int32_t serialId,int32_t action)509 int32_t HRilManager::SetClir(int32_t slotId, int32_t serialId, int32_t action)
510 {
511     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetClir, serialId, action);
512 }
513 
SetCallPreferenceMode(int32_t slotId,int32_t serialId,int32_t mode)514 int32_t HRilManager::SetCallPreferenceMode(int32_t slotId, int32_t serialId, int32_t mode)
515 {
516     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetCallPreferenceMode, serialId, mode);
517 }
518 
GetCallPreferenceMode(int32_t slotId,int32_t serialId)519 int32_t HRilManager::GetCallPreferenceMode(int32_t slotId, int32_t serialId)
520 {
521     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallPreferenceMode, serialId);
522 }
523 
SetUssd(int32_t slotId,int32_t serialId,const std::string & str)524 int32_t HRilManager::SetUssd(int32_t slotId, int32_t serialId, const std::string &str)
525 {
526     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetUssd, serialId, str);
527 }
528 
GetUssd(int32_t slotId,int32_t serialId)529 int32_t HRilManager::GetUssd(int32_t slotId, int32_t serialId)
530 {
531     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetUssd, serialId);
532 }
533 
SetMute(int32_t slotId,int32_t serialId,int32_t mute)534 int32_t HRilManager::SetMute(int32_t slotId, int32_t serialId, int32_t mute)
535 {
536     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetMute, serialId, mute);
537 }
538 
GetMute(int32_t slotId,int32_t serialId)539 int32_t HRilManager::GetMute(int32_t slotId, int32_t serialId)
540 {
541     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetMute, serialId);
542 }
543 
GetCallFailReason(int32_t slotId,int32_t serialId)544 int32_t HRilManager::GetCallFailReason(int32_t slotId, int32_t serialId)
545 {
546     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallFailReason, serialId);
547 }
548 
CallSupplement(int32_t slotId,int32_t serialId,int32_t type)549 int32_t HRilManager::CallSupplement(int32_t slotId, int32_t serialId, int32_t type)
550 {
551     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::CallSupplement, serialId, type);
552 }
553 
SendDtmf(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DtmfInfo & dtmfInfo)554 int32_t HRilManager::SendDtmf(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo)
555 {
556     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SendDtmf, serialId, dtmfInfo);
557 }
558 
StartDtmf(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DtmfInfo & dtmfInfo)559 int32_t HRilManager::StartDtmf(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo)
560 {
561     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::StartDtmf, serialId, dtmfInfo);
562 }
563 
StopDtmf(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DtmfInfo & dtmfInfo)564 int32_t HRilManager::StopDtmf(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo)
565 {
566     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::StopDtmf, serialId, dtmfInfo);
567 }
568 
SetBarringPassword(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SetBarringInfo & setBarringInfo)569 int32_t HRilManager::SetBarringPassword(
570     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SetBarringInfo &setBarringInfo)
571 {
572     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetBarringPassword, serialId, setBarringInfo);
573 }
574 
CloseUnFinishedUssd(int32_t slotId,int32_t serialId)575 int32_t HRilManager::CloseUnFinishedUssd(int32_t slotId, int32_t serialId)
576 {
577     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::CloseUnFinishedUssd, serialId);
578 }
579 
SetVonrSwitch(int32_t slotId,int32_t serialId,int32_t status)580 int32_t HRilManager::SetVonrSwitch(int32_t slotId, int32_t serialId, int32_t status)
581 {
582     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetVonrSwitch, serialId, status);
583 }
584 
585 // Data
ActivatePdpContext(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataCallInfo & dataCallInfo)586 int32_t HRilManager::ActivatePdpContext(
587     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataCallInfo &dataCallInfo)
588 {
589     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::ActivatePdpContext, serialId, dataCallInfo);
590 }
591 
ActivatePdpContextWithApnTypes(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_3::DataCallInfoWithApnTypes & dataCallInfo)592 int32_t HRilManager::ActivatePdpContextWithApnTypes(
593     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_3::DataCallInfoWithApnTypes &dataCallInfo)
594 {
595     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::ActivatePdpContextWithApnTypes,
596         serialId, dataCallInfo);
597 }
598 
DeactivatePdpContext(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::UniInfo & uniInfo)599 int32_t HRilManager::DeactivatePdpContext(
600     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::UniInfo &uniInfo)
601 {
602     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::DeactivatePdpContext, serialId, uniInfo);
603 }
604 
GetPdpContextList(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::UniInfo & uniInfo)605 int32_t HRilManager::GetPdpContextList(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::UniInfo &uniInfo)
606 {
607     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::GetPdpContextList, serialId, uniInfo);
608 }
609 
SetInitApnInfo(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataProfileDataInfo & dataProfileDataInfo)610 int32_t HRilManager::SetInitApnInfo(
611     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataProfileDataInfo &dataProfileDataInfo)
612 {
613     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SetInitApnInfo, serialId, dataProfileDataInfo);
614 }
615 
GetLinkBandwidthInfo(int32_t slotId,int32_t serialId,int32_t cid)616 int32_t HRilManager::GetLinkBandwidthInfo(int32_t slotId, int32_t serialId, int32_t cid)
617 {
618     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::GetLinkBandwidthInfo, serialId, cid);
619 }
620 
GetLinkCapability(int32_t slotId,int32_t serialId)621 int32_t HRilManager::GetLinkCapability(int32_t slotId, int32_t serialId)
622 {
623     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::GetLinkCapability, serialId);
624 }
625 
SetLinkBandwidthReportingRule(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataLinkBandwidthReportingRule & dataLinkBandwidthReportingRule)626 int32_t HRilManager::SetLinkBandwidthReportingRule(int32_t slotId, int32_t serialId,
627     const OHOS::HDI::Ril::V1_1::DataLinkBandwidthReportingRule &dataLinkBandwidthReportingRule)
628 {
629     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SetLinkBandwidthReportingRule, serialId,
630         dataLinkBandwidthReportingRule);
631 }
632 
SetDataPermitted(int32_t slotId,int32_t serialId,int32_t dataPermitted)633 int32_t HRilManager::SetDataPermitted(int32_t slotId, int32_t serialId, int32_t dataPermitted)
634 {
635     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SetDataPermitted, serialId, dataPermitted);
636 }
637 
SetDataProfileInfo(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataProfilesInfo & dataProfilesInfo)638 int32_t HRilManager::SetDataProfileInfo(
639     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataProfilesInfo &dataProfilesInfo)
640 {
641     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SetDataProfileInfo, serialId, dataProfilesInfo);
642 }
643 
SendDataPerformanceMode(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataPerformanceInfo & dataPerformanceInfo)644 int32_t HRilManager::SendDataPerformanceMode(
645     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataPerformanceInfo &dataPerformanceInfo)
646 {
647     return TaskSchedule(
648         MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SendDataPerformanceMode, serialId, dataPerformanceInfo);
649 }
650 
SendDataSleepMode(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataSleepInfo & dataSleepInfo)651 int32_t HRilManager::SendDataSleepMode(
652     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataSleepInfo &dataSleepInfo)
653 {
654     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SendDataSleepMode, serialId, dataSleepInfo);
655 }
656 
CleanAllConnections(int32_t slotId,int32_t serialId)657 int32_t HRilManager::CleanAllConnections(int32_t slotId, int32_t serialId)
658 {
659     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::CleanAllConnections, serialId);
660 }
661 
662 // Modem
SetRadioState(int32_t slotId,int32_t serialId,int32_t fun,int32_t rst)663 int32_t HRilManager::SetRadioState(int32_t slotId, int32_t serialId, int32_t fun, int32_t rst)
664 {
665     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::SetRadioState, serialId, fun, rst);
666 }
667 
GetRadioState(int32_t slotId,int32_t serialId)668 int32_t HRilManager::GetRadioState(int32_t slotId, int32_t serialId)
669 {
670     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetRadioState, serialId);
671 }
672 
GetImei(int32_t slotId,int32_t serialId)673 int32_t HRilManager::GetImei(int32_t slotId, int32_t serialId)
674 {
675     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetImei, serialId);
676 }
677 
GetImeiSv(int32_t slotId,int32_t serialId)678 int32_t HRilManager::GetImeiSv(int32_t slotId, int32_t serialId)
679 {
680     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetImeiSv, serialId);
681 }
682 
GetMeid(int32_t slotId,int32_t serialId)683 int32_t HRilManager::GetMeid(int32_t slotId, int32_t serialId)
684 {
685     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetMeid, serialId);
686 }
687 
GetVoiceRadioTechnology(int32_t slotId,int32_t serialId)688 int32_t HRilManager::GetVoiceRadioTechnology(int32_t slotId, int32_t serialId)
689 {
690     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetVoiceRadioTechnology, serialId);
691 }
692 
GetBasebandVersion(int32_t slotId,int32_t serialId)693 int32_t HRilManager::GetBasebandVersion(int32_t slotId, int32_t serialId)
694 {
695     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetBasebandVersion, serialId);
696 }
697 
ShutDown(int32_t slotId,int32_t serialId)698 int32_t HRilManager::ShutDown(int32_t slotId, int32_t serialId)
699 {
700     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::ShutDown, serialId);
701 }
702 
GetSimIO(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimIoRequestInfo & simIO)703 int32_t HRilManager::GetSimIO(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimIoRequestInfo &simIO)
704 {
705     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetSimIO, serialId, simIO);
706 }
707 
GetSimStatus(int32_t slotId,int32_t serialId)708 int32_t HRilManager::GetSimStatus(int32_t slotId, int32_t serialId)
709 {
710     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetSimStatus, serialId);
711 }
712 
GetImsi(int32_t slotId,int32_t serialId)713 int32_t HRilManager::GetImsi(int32_t slotId, int32_t serialId)
714 {
715     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetImsi, serialId);
716 }
717 
GetSimLockStatus(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimLockInfo & simLockInfo)718 int32_t HRilManager::GetSimLockStatus(
719     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimLockInfo &simLockInfo)
720 {
721     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetSimLockStatus, serialId, simLockInfo);
722 }
723 
SetSimLock(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimLockInfo & simLockInfo)724 int32_t HRilManager::SetSimLock(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimLockInfo &simLockInfo)
725 {
726     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SetSimLock, serialId, simLockInfo);
727 }
728 
ChangeSimPassword(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimPasswordInfo & simPassword)729 int32_t HRilManager::ChangeSimPassword(
730     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimPasswordInfo &simPassword)
731 {
732     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::ChangeSimPassword, serialId, simPassword);
733 }
734 
UnlockPin(int32_t slotId,int32_t serialId,const std::string & pin)735 int32_t HRilManager::UnlockPin(int32_t slotId, int32_t serialId, const std::string &pin)
736 {
737     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockPin, serialId, pin);
738 }
739 
UnlockPuk(int32_t slotId,int32_t serialId,const std::string & puk,const std::string & pin)740 int32_t HRilManager::UnlockPuk(int32_t slotId, int32_t serialId, const std::string &puk, const std::string &pin)
741 {
742     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockPuk, serialId, puk, pin);
743 }
744 
UnlockPin2(int32_t slotId,int32_t serialId,const std::string & pin2)745 int32_t HRilManager::UnlockPin2(int32_t slotId, int32_t serialId, const std::string &pin2)
746 {
747     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockPin2, serialId, pin2);
748 }
749 
UnlockPuk2(int32_t slotId,int32_t serialId,const std::string & puk2,const std::string & pin2)750 int32_t HRilManager::UnlockPuk2(int32_t slotId, int32_t serialId, const std::string &puk2, const std::string &pin2)
751 {
752     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockPuk2, serialId, puk2, pin2);
753 }
754 
SetActiveSim(int32_t slotId,int32_t serialId,int32_t index,int32_t enable)755 int32_t HRilManager::SetActiveSim(int32_t slotId, int32_t serialId, int32_t index, int32_t enable)
756 {
757     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SetActiveSim, serialId, index, enable);
758 }
759 
SimStkSendTerminalResponse(int32_t slotId,int32_t serialId,const std::string & strCmd)760 int32_t HRilManager::SimStkSendTerminalResponse(int32_t slotId, int32_t serialId, const std::string &strCmd)
761 {
762     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimStkSendTerminalResponse, serialId, strCmd);
763 }
764 
SimStkSendEnvelope(int32_t slotId,int32_t serialId,const std::string & strCmd)765 int32_t HRilManager::SimStkSendEnvelope(int32_t slotId, int32_t serialId, const std::string &strCmd)
766 {
767     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimStkSendEnvelope, serialId, strCmd);
768 }
769 
SimStkSendCallSetupRequestResult(int32_t slotId,int32_t serialId,int32_t accept)770 int32_t HRilManager::SimStkSendCallSetupRequestResult(int32_t slotId, int32_t serialId, int32_t accept)
771 {
772     return TaskSchedule(
773         MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimStkSendCallSetupRequestResult, serialId, accept);
774 }
775 
SimStkIsReady(int32_t slotId,int32_t serialId)776 int32_t HRilManager::SimStkIsReady(int32_t slotId, int32_t serialId)
777 {
778     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimStkIsReady, serialId);
779 }
780 
GetRadioProtocol(int32_t slotId,int32_t serialId)781 int32_t HRilManager::GetRadioProtocol(int32_t slotId, int32_t serialId)
782 {
783     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetRadioProtocol, serialId);
784 }
785 
SetRadioProtocol(int32_t slotId,int32_t serialId,const HDI::Ril::V1_1::RadioProtocol & radioProtocol)786 int32_t HRilManager::SetRadioProtocol(
787     int32_t slotId, int32_t serialId, const HDI::Ril::V1_1::RadioProtocol &radioProtocol)
788 {
789     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SetRadioProtocol, serialId, radioProtocol);
790 }
791 
SimOpenLogicalChannel(int32_t slotId,int32_t serialId,const std::string & appID,int32_t p2)792 int32_t HRilManager::SimOpenLogicalChannel(int32_t slotId, int32_t serialId, const std::string &appID, int32_t p2)
793 {
794     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimOpenLogicalChannel, serialId, appID, p2);
795 }
796 
SimCloseLogicalChannel(int32_t slotId,int32_t serialId,int32_t channelId)797 int32_t HRilManager::SimCloseLogicalChannel(int32_t slotId, int32_t serialId, int32_t channelId)
798 {
799     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimCloseLogicalChannel, serialId, channelId);
800 }
801 
SimTransmitApduLogicalChannel(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo & apduSimIO)802 int32_t HRilManager::SimTransmitApduLogicalChannel(
803     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &apduSimIO)
804 {
805     return TaskSchedule(
806         MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimTransmitApduLogicalChannel, serialId, apduSimIO);
807 }
808 
SimTransmitApduBasicChannel(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo & apduSimIO)809 int32_t HRilManager::SimTransmitApduBasicChannel(
810     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &apduSimIO)
811 {
812     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimTransmitApduBasicChannel, serialId, apduSimIO);
813 }
814 
SimAuthentication(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimAuthenticationRequestInfo & simAuthInfo)815 int32_t HRilManager::SimAuthentication(
816     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimAuthenticationRequestInfo &simAuthInfo)
817 {
818     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimAuthentication, serialId, simAuthInfo);
819 }
820 
UnlockSimLock(int32_t slotId,int32_t serialId,int32_t lockType,const std::string & key)821 int32_t HRilManager::UnlockSimLock(int32_t slotId, int32_t serialId, int32_t lockType, const std::string &key)
822 {
823     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockSimLock, serialId, lockType, key);
824 }
825 
SendSimMatchedOperatorInfo(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_2::NcfgOperatorInfo & ncfgOperatorInfo)826 int32_t HRilManager::SendSimMatchedOperatorInfo(
827     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_2::NcfgOperatorInfo &ncfgOperatorInfo)
828 {
829     return TaskSchedule(
830         MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SendSimMatchedOperatorInfo, serialId, ncfgOperatorInfo);
831 }
832 
833 // Network
GetSignalStrength(int32_t slotId,int32_t serialId)834 int32_t HRilManager::GetSignalStrength(int32_t slotId, int32_t serialId)
835 {
836     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetSignalStrength, serialId);
837 }
838 
GetCsRegStatus(int32_t slotId,int32_t serialId)839 int32_t HRilManager::GetCsRegStatus(int32_t slotId, int32_t serialId)
840 {
841     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetCsRegStatus, serialId);
842 }
843 
GetPsRegStatus(int32_t slotId,int32_t serialId)844 int32_t HRilManager::GetPsRegStatus(int32_t slotId, int32_t serialId)
845 {
846     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetPsRegStatus, serialId);
847 }
848 
GetOperatorInfo(int32_t slotId,int32_t serialId)849 int32_t HRilManager::GetOperatorInfo(int32_t slotId, int32_t serialId)
850 {
851     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetOperatorInfo, serialId);
852 }
853 
GetNetworkSearchInformation(int32_t slotId,int32_t serialId)854 int32_t HRilManager::GetNetworkSearchInformation(int32_t slotId, int32_t serialId)
855 {
856     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNetworkSearchInformation, serialId);
857 }
858 
GetNetworkSelectionMode(int32_t slotId,int32_t serialId)859 int32_t HRilManager::GetNetworkSelectionMode(int32_t slotId, int32_t serialId)
860 {
861     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNetworkSelectionMode, serialId);
862 }
863 
SetNetworkSelectionMode(int32_t slotId,int32_t serialId,const HDI::Ril::V1_1::SetNetworkModeInfo & networkModeInfo)864 int32_t HRilManager::SetNetworkSelectionMode(
865     int32_t slotId, int32_t serialId, const HDI::Ril::V1_1::SetNetworkModeInfo &networkModeInfo)
866 {
867     return TaskSchedule(
868         MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetNetworkSelectionMode, serialId, networkModeInfo);
869 }
870 
GetNeighboringCellInfoList(int32_t slotId,int32_t serialId)871 int32_t HRilManager::GetNeighboringCellInfoList(int32_t slotId, int32_t serialId)
872 {
873     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNeighboringCellInfoList, serialId);
874 }
875 
GetCurrentCellInfo(int32_t slotId,int32_t serialId)876 int32_t HRilManager::GetCurrentCellInfo(int32_t slotId, int32_t serialId)
877 {
878     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetCurrentCellInfo, serialId);
879 }
880 
SetPreferredNetwork(int32_t slotId,int32_t serialId,int32_t preferredNetworkType)881 int32_t HRilManager::SetPreferredNetwork(int32_t slotId, int32_t serialId, int32_t preferredNetworkType)
882 {
883     return TaskSchedule(
884         MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetPreferredNetwork, serialId, preferredNetworkType);
885 }
886 
GetPreferredNetwork(int32_t slotId,int32_t serialId)887 int32_t HRilManager::GetPreferredNetwork(int32_t slotId, int32_t serialId)
888 {
889     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetPreferredNetwork, serialId);
890 }
891 
GetPhysicalChannelConfig(int32_t slotId,int32_t serialId)892 int32_t HRilManager::GetPhysicalChannelConfig(int32_t slotId, int32_t serialId)
893 {
894     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetPhysicalChannelConfig, serialId);
895 }
896 
SetLocateUpdates(int32_t slotId,int32_t serialId,const HDI::Ril::V1_1::RilRegNotifyMode mode)897 int32_t HRilManager::SetLocateUpdates(int32_t slotId, int32_t serialId, const HDI::Ril::V1_1::RilRegNotifyMode mode)
898 {
899     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetLocateUpdates, serialId, mode);
900 }
901 
SetNotificationFilter(int32_t slotId,int32_t serialId,int32_t newFilter)902 int32_t HRilManager::SetNotificationFilter(int32_t slotId, int32_t serialId, int32_t newFilter)
903 {
904     return TaskSchedule(
905         MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetNotificationFilter, serialId, newFilter);
906 }
907 
SetDeviceState(int32_t slotId,int32_t serialId,int32_t deviceStateType,int32_t deviceStateOn)908 int32_t HRilManager::SetDeviceState(int32_t slotId, int32_t serialId, int32_t deviceStateType, int32_t deviceStateOn)
909 {
910     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetDeviceState, serialId,
911         deviceStateType, deviceStateOn);
912 }
913 
SetNrOptionMode(int32_t slotId,int32_t serialId,int32_t mode)914 int32_t HRilManager::SetNrOptionMode(int32_t slotId, int32_t serialId, int32_t mode)
915 {
916     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetNrOptionMode, serialId, mode);
917 }
918 
GetNrOptionMode(int32_t slotId,int32_t serialId)919 int32_t HRilManager::GetNrOptionMode(int32_t slotId, int32_t serialId)
920 {
921     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNrOptionMode, serialId);
922 }
923 
GetRrcConnectionState(int32_t slotId,int32_t serialId)924 int32_t HRilManager::GetRrcConnectionState(int32_t slotId, int32_t serialId)
925 {
926     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetRrcConnectionState, serialId);
927 }
928 
GetNrSsbId(int32_t slotId,int32_t serialId)929 int32_t HRilManager::GetNrSsbId(int32_t slotId, int32_t serialId)
930 {
931     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNrSsbId, serialId);
932 }
933 
934 // Sms
SendGsmSms(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::GsmSmsMessageInfo & gsmSmsMessageInfo)935 int32_t HRilManager::SendGsmSms(
936     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::GsmSmsMessageInfo &gsmSmsMessageInfo)
937 {
938     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SendGsmSms, serialId, gsmSmsMessageInfo);
939 }
940 
SendCdmaSms(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SendCdmaSmsMessageInfo & cdmaSmsMessageInfo)941 int32_t HRilManager::SendCdmaSms(
942     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SendCdmaSmsMessageInfo &cdmaSmsMessageInfo)
943 {
944     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SendCdmaSms, serialId, cdmaSmsMessageInfo);
945 }
946 
AddSimMessage(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo & smsMessageIOInfo)947 int32_t HRilManager::AddSimMessage(
948     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo &smsMessageIOInfo)
949 {
950     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::AddSimMessage, serialId, smsMessageIOInfo);
951 }
952 
DelSimMessage(int32_t slotId,int32_t serialId,int32_t index)953 int32_t HRilManager::DelSimMessage(int32_t slotId, int32_t serialId, int32_t index)
954 {
955     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::DelSimMessage, serialId, index);
956 }
957 
UpdateSimMessage(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo & smsMessageIOInfo)958 int32_t HRilManager::UpdateSimMessage(
959     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo &smsMessageIOInfo)
960 {
961     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::UpdateSimMessage, serialId, smsMessageIOInfo);
962 }
963 
AddCdmaSimMessage(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo & smsMessageIOInfo)964 int32_t HRilManager::AddCdmaSimMessage(
965     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo &smsMessageIOInfo)
966 {
967     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::AddCdmaSimMessage, serialId, smsMessageIOInfo);
968 }
969 
DelCdmaSimMessage(int32_t slotId,int32_t serialId,int32_t index)970 int32_t HRilManager::DelCdmaSimMessage(int32_t slotId, int32_t serialId, int32_t index)
971 {
972     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::DelCdmaSimMessage, serialId, index);
973 }
974 
UpdateCdmaSimMessage(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo & smsMessageIOInfo)975 int32_t HRilManager::UpdateCdmaSimMessage(
976     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo &smsMessageIOInfo)
977 {
978     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::UpdateCdmaSimMessage, serialId, smsMessageIOInfo);
979 }
980 
SetSmscAddr(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::ServiceCenterAddress & serviceCenterAddress)981 int32_t HRilManager::SetSmscAddr(
982     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::ServiceCenterAddress &serviceCenterAddress)
983 {
984     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SetSmscAddr, serialId, serviceCenterAddress);
985 }
986 
GetSmscAddr(int32_t slotId,int32_t serialId)987 int32_t HRilManager::GetSmscAddr(int32_t slotId, int32_t serialId)
988 {
989     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::GetSmscAddr, serialId);
990 }
991 
SetCBConfig(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::CBConfigInfo & cellBroadcastInfo)992 int32_t HRilManager::SetCBConfig(
993     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::CBConfigInfo &cellBroadcastInfo)
994 {
995     return HRilManager::TaskSchedule(
996         MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SetCBConfig, serialId, cellBroadcastInfo);
997 }
998 
GetCBConfig(int32_t slotId,int32_t serialId)999 int32_t HRilManager::GetCBConfig(int32_t slotId, int32_t serialId)
1000 {
1001     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::GetCBConfig, serialId);
1002 }
1003 
SetCdmaCBConfig(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::CdmaCBConfigInfoList & cdmaCBConfigInfoList)1004 int32_t HRilManager::SetCdmaCBConfig(
1005     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::CdmaCBConfigInfoList &cdmaCBConfigInfoList)
1006 {
1007     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SetCdmaCBConfig, serialId, cdmaCBConfigInfoList);
1008 }
1009 
GetCdmaCBConfig(int32_t slotId,int32_t serialId)1010 int32_t HRilManager::GetCdmaCBConfig(int32_t slotId, int32_t serialId)
1011 {
1012     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::GetCdmaCBConfig, serialId);
1013 }
1014 
SendSmsMoreMode(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::GsmSmsMessageInfo & gsmSmsMessageInfo)1015 int32_t HRilManager::SendSmsMoreMode(
1016     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::GsmSmsMessageInfo &gsmSmsMessageInfo)
1017 {
1018     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SendSmsMoreMode, serialId, gsmSmsMessageInfo);
1019 }
1020 
SendSmsAck(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::ModeData & modeData)1021 int32_t HRilManager::SendSmsAck(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::ModeData &modeData)
1022 {
1023     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SendSmsAck, serialId, modeData);
1024 }
1025 
SendRilAck()1026 int32_t HRilManager::SendRilAck()
1027 {
1028     ReleaseRunningLock();
1029     return HRIL_ERR_SUCCESS;
1030 }
1031 
~HRilManager()1032 HRilManager::~HRilManager()
1033 {
1034     SetHrilManagerDestroy();
1035     if (timerCallback_ == nullptr || timerCallback_->event_ == nullptr ||
1036         timerCallback_->event_->IsNormalDestory()) {
1037         return;
1038     }
1039     timerCallback_->event_->SetNormalDestory(true);
1040     timerCallback_->OnTriggerEvent();
1041     if (eventLoop_ == nullptr || !eventLoop_->joinable()) {
1042         return;
1043     }
1044     eventLoop_->join();
1045     TELEPHONY_LOGI("~HRilManager end");
1046 }
1047 
SetHrilManagerDestroy()1048 void HRilManager::SetHrilManagerDestroy()
1049 {
1050     pthread_mutex_lock(&dispatchMutex);
1051     g_isHrilManagerDestory = true;
1052     pthread_mutex_unlock(&dispatchMutex);
1053 }
1054 
1055 #ifdef __cplusplus
1056 extern "C" {
1057 #endif
1058 
GetSimSlotCount()1059 int32_t GetSimSlotCount()
1060 {
1061     char simSlotCount[HRIL_SYSPARA_SIZE] = { 0 };
1062     GetParameter(HRIL_TEL_SIM_SLOT_COUNT, HRIL_DEFAULT_SLOT_COUNT, simSlotCount, HRIL_SYSPARA_SIZE);
1063     int32_t simSlotCountNumber = std::atoi(simSlotCount);
1064     char vSimModemCount[HRIL_SYSPARA_SIZE] = { 0 };
1065     GetParameter(HRIL_VSIM_MODEM_COUNT_STR, HRIL_DEFAULT_VSIM_MODEM_COUNT, vSimModemCount, HRIL_SYSPARA_SIZE);
1066     int32_t vSimModemCountNumber = std::atoi(vSimModemCount);
1067     if (simSlotCountNumber == DUAL_SLOT_COUNT && vSimModemCountNumber == MAX_SLOT_COUNT) {
1068         simSlotCountNumber = MAX_SLOT_COUNT;
1069     }
1070     TELEPHONY_LOGI("GetSimSlotCount, %{public}d", simSlotCountNumber);
1071     return simSlotCountNumber;
1072 }
1073 
HRilBootUpEventLoop()1074 static void HRilBootUpEventLoop()
1075 {
1076     if (!IsHrilManagerValid() || HRilManager::GetInstance().timerCallback_ == nullptr) {
1077         return;
1078     }
1079     HRilManager::GetInstance().timerCallback_->EventLoop();
1080 }
1081 
HRilInit(void)1082 void HRilInit(void)
1083 {
1084     if (!IsHrilManagerValid()) {
1085         TELEPHONY_LOGE("HRilInit: hrilManager is invalid");
1086         return;
1087     }
1088 #ifdef ABILITY_POWER_SUPPORT
1089     if (HRilManager::GetInstance().powerInterface_ == nullptr) {
1090         HRilManager::GetInstance().powerInterface_ = IPowerInterface::Get();
1091         if (HRilManager::GetInstance().powerInterface_ == nullptr) {
1092             TELEPHONY_LOGE("failed to get power hdi interface");
1093         }
1094     }
1095 #endif
1096     if (HRilManager::GetInstance().eventLoop_ != nullptr) {
1097         TELEPHONY_LOGD("eventLoop_ has exit");
1098         return;
1099     }
1100     HRilManager::GetInstance().eventLoop_ = std::make_unique<std::thread>(HRilBootUpEventLoop);
1101     pthread_setname_np(HRilManager::GetInstance().eventLoop_.get()->native_handle(), "hril_eventLoop");
1102 }
1103 
HRilRegOps(const HRilOps * hrilOps)1104 void HRilRegOps(const HRilOps *hrilOps)
1105 {
1106     static HRilOps callBacks = { 0 };
1107     static RegisterState rilRegisterStatus = RIL_REGISTER_IS_NONE;
1108 
1109     if (hrilOps == nullptr || !IsHrilManagerValid()) {
1110         TELEPHONY_LOGE("HRilRegOps: param is nullptr");
1111         return;
1112     }
1113     if (rilRegisterStatus > RIL_REGISTER_IS_NONE) {
1114         TELEPHONY_LOGE("HRilRegOps is running!!!!");
1115         return;
1116     }
1117     rilRegisterStatus = RIL_REGISTER_IS_RUNNING;
1118     (void)memcpy_s(&callBacks, sizeof(HRilOps), hrilOps, sizeof(HRilOps));
1119     for (int32_t slotId = HRIL_SIM_SLOT_0; slotId < HRilManager::GetInstance().GetMaxSimSlotCount(); slotId++) {
1120         if (callBacks.smsOps != nullptr) {
1121             HRilManager::GetInstance().RegisterSmsFuncs(slotId, callBacks.smsOps);
1122         }
1123         if (callBacks.callOps != nullptr) {
1124             HRilManager::GetInstance().RegisterCallFuncs(slotId, callBacks.callOps);
1125         }
1126         if (callBacks.dataOps != nullptr) {
1127             HRilManager::GetInstance().RegisterDataFuncs(slotId, callBacks.dataOps);
1128         }
1129         if (callBacks.modemOps != nullptr) {
1130             HRilManager::GetInstance().RegisterModemFuncs(slotId, callBacks.modemOps);
1131         }
1132         if (callBacks.networkOps != nullptr) {
1133             HRilManager::GetInstance().RegisterNetworkFuncs(slotId, callBacks.networkOps);
1134         }
1135         if (callBacks.simOps != nullptr) {
1136             HRilManager::GetInstance().RegisterSimFuncs(slotId, callBacks.simOps);
1137         }
1138     }
1139 }
1140 
OnCallReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1141 void OnCallReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1142 {
1143     if (!IsHrilManagerValid()) {
1144         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1145         return;
1146     }
1147     HRilManager::GetInstance().OnCallReport(slotId, &reportInfo, response, responseLen);
1148 }
1149 
OnDataReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1150 void OnDataReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1151 {
1152     if (!IsHrilManagerValid()) {
1153         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1154         return;
1155     }
1156     HRilManager::GetInstance().OnDataReport(slotId, &reportInfo, response, responseLen);
1157 }
1158 
OnModemReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1159 void OnModemReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1160 {
1161     if (!IsHrilManagerValid()) {
1162         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1163         return;
1164     }
1165     HRilManager::GetInstance().OnModemReport(slotId, &reportInfo, response, responseLen);
1166 }
1167 
OnNetworkReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1168 void OnNetworkReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1169 {
1170     if (!IsHrilManagerValid()) {
1171         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1172         return;
1173     }
1174     HRilManager::GetInstance().OnNetworkReport(slotId, &reportInfo, response, responseLen);
1175 }
1176 
OnSimReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1177 void OnSimReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1178 {
1179     if (!IsHrilManagerValid()) {
1180         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1181         return;
1182     }
1183     HRilManager::GetInstance().OnSimReport(slotId, &reportInfo, response, responseLen);
1184 }
1185 
OnSmsReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1186 void OnSmsReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1187 {
1188     if (!IsHrilManagerValid()) {
1189         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1190         return;
1191     }
1192     HRilManager::GetInstance().OnSmsReport(slotId, &reportInfo, response, responseLen);
1193 }
1194 
OnTimerCallback(HRilCallbackFun func,uint8_t * param,const struct timeval * tv)1195 void OnTimerCallback(HRilCallbackFun func, uint8_t *param, const struct timeval *tv)
1196 {
1197     if (!IsHrilManagerValid() || HRilManager::GetInstance().timerCallback_ == nullptr) {
1198         TELEPHONY_LOGE("HrilManager or timerCallback is nullptr");
1199         return;
1200     }
1201     HRilManager::GetInstance().timerCallback_->HRilSetTimerCallbackInfo(func, param, tv);
1202 }
1203 
1204 #ifdef __cplusplus
1205 }
1206 #endif
1207 } // namespace Telephony
1208 } // namespace OHOS
1209