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