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