• 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, slotId:%{public}d",
292             reqInfo->request, iter->second.c_str(), slotId);
293     } else {
294         TELEPHONY_LOGD("requestId:%{public}d", reqInfo->request);
295     }
296     HDI::Ril::V1_1::RilRadioResponseInfo responseInfo = {};
297     responseInfo.serial = reqInfo->serial;
298     responseInfo.error = (HDI::Ril::V1_1::RilErrType)reportInfo->error;
299     responseInfo.type = HDI::Ril::V1_1::RIL_RESPONSE_REQUEST;
300     if (HRIL_NEED_ACK == reportInfo->ack) {
301         ApplyRunningLock();
302         responseInfo.type = HDI::Ril::V1_1::RIL_RESPONSE_REQUEST_MUST_ACK;
303     }
304     int32_t requestId = reqInfo->request;
305     ReleaseHRilRequest(requestId, reqInfo);
306     subModules[slotId]->template ProcessResponse<T>(requestId, responseInfo, response, responseLen);
307 }
308 
309 template<typename T>
ReportNotification(std::vector<std::unique_ptr<T>> & subModules,int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)310 void HRilManager::ReportNotification(std::vector<std::unique_ptr<T>> &subModules, int32_t slotId,
311     const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
312 {
313     int32_t notifyType = HDI::Ril::V1_1::RIL_RESPONSE_NOTICE;
314     auto iter = notificationMap_.find(reportInfo->notifyId);
315     auto event = notificationEventMap_.find(reportInfo->notifyId);
316     if (iter != notificationMap_.end()) {
317         if (reportInfo->notifyId == HNOTI_NETWORK_CS_REG_STATUS_UPDATED ||
318             reportInfo->notifyId == HNOTI_NETWORK_SIGNAL_STRENGTH_UPDATED ||
319             reportInfo->notifyId == HNOTI_CALL_EMERGENCY_NUMBER_REPORT ||
320             reportInfo->notifyId == HNOTI_MODEM_DSDS_MODE_UPDATED) {
321             TELEPHONY_LOGD("notifyId:%{public}d, event:%{public}s", reportInfo->notifyId, event->second.c_str());
322         } else {
323             TELEPHONY_LOGI("notifyId:%{public}d, event:%{public}s", reportInfo->notifyId, event->second.c_str());
324         }
325         if (NEED_LOCK == iter->second) {
326             ApplyRunningLock();
327             notifyType = HDI::Ril::V1_1::RIL_RESPONSE_NOTICE_MUST_ACK;
328         }
329     }
330     subModules[slotId]->template ProcessNotify<T>(notifyType, reportInfo, response, responseLen);
331 }
332 
OnCallReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)333 void HRilManager::OnCallReport(
334     int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
335 {
336     OnReport(hrilCall_, slotId, reportInfo, response, responseLen);
337 }
338 
OnDataReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)339 void HRilManager::OnDataReport(
340     int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
341 {
342     OnReport(hrilData_, slotId, reportInfo, response, responseLen);
343 }
344 
OnModemReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)345 void HRilManager::OnModemReport(
346     int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
347 {
348     OnReport(hrilModem_, slotId, reportInfo, response, responseLen);
349 }
350 
OnNetworkReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)351 void HRilManager::OnNetworkReport(
352     int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
353 {
354     OnReport(hrilNetwork_, slotId, reportInfo, response, responseLen);
355 }
356 
OnSimReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)357 void HRilManager::OnSimReport(int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
358 {
359     OnReport(hrilSim_, slotId, reportInfo, response, responseLen);
360 }
361 
OnSmsReport(int32_t slotId,const ReportInfo * reportInfo,const uint8_t * response,size_t responseLen)362 void HRilManager::OnSmsReport(int32_t slotId, const ReportInfo *reportInfo, const uint8_t *response, size_t responseLen)
363 {
364     OnReport(hrilSms_, slotId, reportInfo, response, responseLen);
365 }
366 
HRilManager()367 HRilManager::HRilManager() : hrilSimSlotCount_(GetSimSlotCount())
368 {
369     for (int32_t slotId = HRIL_SIM_SLOT_0; slotId < hrilSimSlotCount_; slotId++) {
370         hrilCall_.push_back(std::make_unique<HRilCall>(slotId));
371         hrilModem_.push_back(std::make_unique<HRilModem>(slotId));
372         hrilNetwork_.push_back(std::make_unique<HRilNetwork>(slotId));
373         hrilSim_.push_back(std::make_unique<HRilSim>(slotId));
374         hrilSms_.push_back(std::make_unique<HRilSms>(slotId));
375         hrilData_.push_back(std::make_unique<HRilData>(slotId));
376     }
377     timerCallback_ = std::make_unique<HRilTimerCallback>();
378 }
379 
SetRilCallback(sptr<OHOS::HDI::Ril::V1_5::IRilCallback> callback)380 void HRilManager::SetRilCallback(sptr<OHOS::HDI::Ril::V1_5::IRilCallback> callback)
381 {
382     TELEPHONY_LOGI("SetRilCallback");
383     for (int32_t slotId = HRIL_SIM_SLOT_0; slotId < hrilSimSlotCount_; slotId++) {
384         hrilCall_[slotId]->SetRilCallback(callback);
385         hrilModem_[slotId]->SetRilCallback(callback);
386         hrilNetwork_[slotId]->SetRilCallback(callback);
387         hrilSim_[slotId]->SetRilCallback(callback);
388         hrilSms_[slotId]->SetRilCallback(callback);
389         hrilData_[slotId]->SetRilCallback(callback);
390         if (callback == nullptr) {
391             continue;
392         }
393         HDI::Ril::V1_1::RilRadioResponseInfo responseInfo = { 0 };
394         responseInfo.slotId = slotId;
395         responseInfo.type = HDI::Ril::V1_1::RIL_RESPONSE_NOTICE;
396         callback->RadioStateUpdated(responseInfo, hrilModem_[slotId]->GetLastRadioState());
397     }
398 }
399 
400 // Call
SetEmergencyCallList(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::EmergencyInfoList & emergencyInfoList)401 int32_t HRilManager::SetEmergencyCallList(
402     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::EmergencyInfoList &emergencyInfoList)
403 {
404     return TaskSchedule(
405         MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetEmergencyCallList, serialId, emergencyInfoList);
406 }
407 
GetEmergencyCallList(int32_t slotId,int32_t serialId)408 int32_t HRilManager::GetEmergencyCallList(int32_t slotId, int32_t serialId)
409 {
410     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetEmergencyCallList, serialId);
411 }
412 
GetCallList(int32_t slotId,int32_t serialId)413 int32_t HRilManager::GetCallList(int32_t slotId, int32_t serialId)
414 {
415     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallList, serialId);
416 }
417 
Dial(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DialInfo & dialInfo)418 int32_t HRilManager::Dial(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DialInfo &dialInfo)
419 {
420     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::Dial, serialId, dialInfo);
421 }
422 
Reject(int32_t slotId,int32_t serialId)423 int32_t HRilManager::Reject(int32_t slotId, int32_t serialId)
424 {
425     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::Reject, serialId);
426 }
427 
Hangup(int32_t slotId,int32_t serialId,int32_t gsmIndex)428 int32_t HRilManager::Hangup(int32_t slotId, int32_t serialId, int32_t gsmIndex)
429 {
430     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::Hangup, serialId, gsmIndex);
431 }
432 
Answer(int32_t slotId,int32_t serialId)433 int32_t HRilManager::Answer(int32_t slotId, int32_t serialId)
434 {
435     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::Answer, serialId);
436 }
437 
HoldCall(int32_t slotId,int32_t serialId)438 int32_t HRilManager::HoldCall(int32_t slotId, int32_t serialId)
439 {
440     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::HoldCall, serialId);
441 }
442 
UnHoldCall(int32_t slotId,int32_t serialId)443 int32_t HRilManager::UnHoldCall(int32_t slotId, int32_t serialId)
444 {
445     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::UnHoldCall, serialId);
446 }
447 
SwitchCall(int32_t slotId,int32_t serialId)448 int32_t HRilManager::SwitchCall(int32_t slotId, int32_t serialId)
449 {
450     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SwitchCall, serialId);
451 }
452 
CombineConference(int32_t slotId,int32_t serialId,int32_t callType)453 int32_t HRilManager::CombineConference(int32_t slotId, int32_t serialId, int32_t callType)
454 {
455     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::CombineConference, serialId, callType);
456 }
457 
SeparateConference(int32_t slotId,int32_t serialId,int32_t callIndex,int32_t callType)458 int32_t HRilManager::SeparateConference(int32_t slotId, int32_t serialId, int32_t callIndex, int32_t callType)
459 {
460     return TaskSchedule(
461         MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SeparateConference, serialId, callIndex, callType);
462 }
463 
GetCallWaiting(int32_t slotId,int32_t serialId)464 int32_t HRilManager::GetCallWaiting(int32_t slotId, int32_t serialId)
465 {
466     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallWaiting, serialId);
467 }
468 
SetCallWaiting(int32_t slotId,int32_t serialId,int32_t activate)469 int32_t HRilManager::SetCallWaiting(int32_t slotId, int32_t serialId, int32_t activate)
470 {
471     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetCallWaiting, serialId, activate);
472 }
473 
GetCallTransferInfo(int32_t slotId,int32_t serialId,int32_t reason)474 int32_t HRilManager::GetCallTransferInfo(int32_t slotId, int32_t serialId, int32_t reason)
475 {
476     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallTransferInfo, serialId, reason);
477 }
478 
SetCallTransferInfo(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::CallForwardSetInfo & callForwardSetInfo)479 int32_t HRilManager::SetCallTransferInfo(
480     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::CallForwardSetInfo &callForwardSetInfo)
481 {
482     return TaskSchedule(
483         MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetCallTransferInfo, serialId, callForwardSetInfo);
484 }
485 
GetCallRestriction(int32_t slotId,int32_t serialId,const std::string & fac)486 int32_t HRilManager::GetCallRestriction(int32_t slotId, int32_t serialId, const std::string &fac)
487 {
488     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallRestriction, serialId, fac);
489 }
490 
SetCallRestriction(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::CallRestrictionInfo & callRestrictionInfo)491 int32_t HRilManager::SetCallRestriction(
492     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::CallRestrictionInfo &callRestrictionInfo)
493 {
494     return TaskSchedule(
495         MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetCallRestriction, serialId, callRestrictionInfo);
496 }
497 
GetClip(int32_t slotId,int32_t serialId)498 int32_t HRilManager::GetClip(int32_t slotId, int32_t serialId)
499 {
500     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetClip, serialId);
501 }
502 
SetClip(int32_t slotId,int32_t serialId,int32_t action)503 int32_t HRilManager::SetClip(int32_t slotId, int32_t serialId, int32_t action)
504 {
505     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetClip, serialId, action);
506 }
507 
GetClir(int32_t slotId,int32_t serialId)508 int32_t HRilManager::GetClir(int32_t slotId, int32_t serialId)
509 {
510     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetClir, serialId);
511 }
512 
SetClir(int32_t slotId,int32_t serialId,int32_t action)513 int32_t HRilManager::SetClir(int32_t slotId, int32_t serialId, int32_t action)
514 {
515     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetClir, serialId, action);
516 }
517 
SetCallPreferenceMode(int32_t slotId,int32_t serialId,int32_t mode)518 int32_t HRilManager::SetCallPreferenceMode(int32_t slotId, int32_t serialId, int32_t mode)
519 {
520     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetCallPreferenceMode, serialId, mode);
521 }
522 
GetCallPreferenceMode(int32_t slotId,int32_t serialId)523 int32_t HRilManager::GetCallPreferenceMode(int32_t slotId, int32_t serialId)
524 {
525     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallPreferenceMode, serialId);
526 }
527 
SetUssd(int32_t slotId,int32_t serialId,const std::string & str)528 int32_t HRilManager::SetUssd(int32_t slotId, int32_t serialId, const std::string &str)
529 {
530     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetUssd, serialId, str);
531 }
532 
GetUssd(int32_t slotId,int32_t serialId)533 int32_t HRilManager::GetUssd(int32_t slotId, int32_t serialId)
534 {
535     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetUssd, serialId);
536 }
537 
SetMute(int32_t slotId,int32_t serialId,int32_t mute)538 int32_t HRilManager::SetMute(int32_t slotId, int32_t serialId, int32_t mute)
539 {
540     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetMute, serialId, mute);
541 }
542 
GetMute(int32_t slotId,int32_t serialId)543 int32_t HRilManager::GetMute(int32_t slotId, int32_t serialId)
544 {
545     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetMute, serialId);
546 }
547 
GetCallFailReason(int32_t slotId,int32_t serialId)548 int32_t HRilManager::GetCallFailReason(int32_t slotId, int32_t serialId)
549 {
550     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::GetCallFailReason, serialId);
551 }
552 
CallSupplement(int32_t slotId,int32_t serialId,int32_t type)553 int32_t HRilManager::CallSupplement(int32_t slotId, int32_t serialId, int32_t type)
554 {
555     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::CallSupplement, serialId, type);
556 }
557 
SendDtmf(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DtmfInfo & dtmfInfo)558 int32_t HRilManager::SendDtmf(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo)
559 {
560     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SendDtmf, serialId, dtmfInfo);
561 }
562 
StartDtmf(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DtmfInfo & dtmfInfo)563 int32_t HRilManager::StartDtmf(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo)
564 {
565     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::StartDtmf, serialId, dtmfInfo);
566 }
567 
StopDtmf(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DtmfInfo & dtmfInfo)568 int32_t HRilManager::StopDtmf(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DtmfInfo &dtmfInfo)
569 {
570     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::StopDtmf, serialId, dtmfInfo);
571 }
572 
SetBarringPassword(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SetBarringInfo & setBarringInfo)573 int32_t HRilManager::SetBarringPassword(
574     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SetBarringInfo &setBarringInfo)
575 {
576     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetBarringPassword, serialId, setBarringInfo);
577 }
578 
CloseUnFinishedUssd(int32_t slotId,int32_t serialId)579 int32_t HRilManager::CloseUnFinishedUssd(int32_t slotId, int32_t serialId)
580 {
581     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::CloseUnFinishedUssd, serialId);
582 }
583 
SetVonrSwitch(int32_t slotId,int32_t serialId,int32_t status)584 int32_t HRilManager::SetVonrSwitch(int32_t slotId, int32_t serialId, int32_t status)
585 {
586     return TaskSchedule(MODULE_HRIL_CALL, hrilCall_[slotId], &HRilCall::SetVonrSwitch, serialId, status);
587 }
588 
589 // Data
ActivatePdpContext(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataCallInfo & dataCallInfo)590 int32_t HRilManager::ActivatePdpContext(
591     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataCallInfo &dataCallInfo)
592 {
593     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::ActivatePdpContext, serialId, dataCallInfo);
594 }
595 
ActivatePdpContextWithApnTypes(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_3::DataCallInfoWithApnTypes & dataCallInfo)596 int32_t HRilManager::ActivatePdpContextWithApnTypes(
597     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_3::DataCallInfoWithApnTypes &dataCallInfo)
598 {
599     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::ActivatePdpContextWithApnTypes,
600         serialId, dataCallInfo, hrilOpsVersion_);
601 }
602 
DeactivatePdpContext(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::UniInfo & uniInfo)603 int32_t HRilManager::DeactivatePdpContext(
604     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::UniInfo &uniInfo)
605 {
606     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::DeactivatePdpContext, serialId, uniInfo);
607 }
608 
GetPdpContextList(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::UniInfo & uniInfo)609 int32_t HRilManager::GetPdpContextList(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::UniInfo &uniInfo)
610 {
611     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::GetPdpContextList, serialId, uniInfo);
612 }
613 
SetInitApnInfo(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataProfileDataInfo & dataProfileDataInfo)614 int32_t HRilManager::SetInitApnInfo(
615     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataProfileDataInfo &dataProfileDataInfo)
616 {
617     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SetInitApnInfo, serialId, dataProfileDataInfo);
618 }
619 
GetLinkBandwidthInfo(int32_t slotId,int32_t serialId,int32_t cid)620 int32_t HRilManager::GetLinkBandwidthInfo(int32_t slotId, int32_t serialId, int32_t cid)
621 {
622     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::GetLinkBandwidthInfo, serialId, cid);
623 }
624 
GetLinkCapability(int32_t slotId,int32_t serialId)625 int32_t HRilManager::GetLinkCapability(int32_t slotId, int32_t serialId)
626 {
627     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::GetLinkCapability, serialId);
628 }
629 
SetLinkBandwidthReportingRule(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataLinkBandwidthReportingRule & dataLinkBandwidthReportingRule)630 int32_t HRilManager::SetLinkBandwidthReportingRule(int32_t slotId, int32_t serialId,
631     const OHOS::HDI::Ril::V1_1::DataLinkBandwidthReportingRule &dataLinkBandwidthReportingRule)
632 {
633     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SetLinkBandwidthReportingRule, serialId,
634         dataLinkBandwidthReportingRule);
635 }
636 
SetDataPermitted(int32_t slotId,int32_t serialId,int32_t dataPermitted)637 int32_t HRilManager::SetDataPermitted(int32_t slotId, int32_t serialId, int32_t dataPermitted)
638 {
639     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SetDataPermitted, serialId, dataPermitted);
640 }
641 
SetDataProfileInfo(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataProfilesInfo & dataProfilesInfo)642 int32_t HRilManager::SetDataProfileInfo(
643     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataProfilesInfo &dataProfilesInfo)
644 {
645     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SetDataProfileInfo, serialId, dataProfilesInfo);
646 }
647 
SendDataPerformanceMode(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataPerformanceInfo & dataPerformanceInfo)648 int32_t HRilManager::SendDataPerformanceMode(
649     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataPerformanceInfo &dataPerformanceInfo)
650 {
651     return TaskSchedule(
652         MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SendDataPerformanceMode, serialId, dataPerformanceInfo);
653 }
654 
SendDataSleepMode(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::DataSleepInfo & dataSleepInfo)655 int32_t HRilManager::SendDataSleepMode(
656     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::DataSleepInfo &dataSleepInfo)
657 {
658     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SendDataSleepMode, serialId, dataSleepInfo);
659 }
660 
CleanAllConnections(int32_t slotId,int32_t serialId)661 int32_t HRilManager::CleanAllConnections(int32_t slotId, int32_t serialId)
662 {
663     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::CleanAllConnections, serialId);
664 }
665 
SendUrspDecodeResult(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_4::UePolicyDecodeResult & uePolicyDecodeResult)666 int32_t HRilManager::SendUrspDecodeResult(int32_t slotId,
667     int32_t serialId, const OHOS::HDI::Ril::V1_4::UePolicyDecodeResult &uePolicyDecodeResult)
668 {
669     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SendUrspDecodeResult,
670         serialId, uePolicyDecodeResult);
671 }
672 
SendUePolicySectionIdentifier(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_4::UePolicySectionIdentifier & uePolicySectionIdentifier)673 int32_t HRilManager::SendUePolicySectionIdentifier(int32_t slotId,
674     int32_t serialId, const OHOS::HDI::Ril::V1_4::UePolicySectionIdentifier &uePolicySectionIdentifier)
675 {
676     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SendUePolicySectionIdentifier,
677         serialId, uePolicySectionIdentifier);
678 }
679 
SendImsRsdList(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_4::ImsRsdList & imsRsdList)680 int32_t HRilManager::SendImsRsdList(int32_t slotId,
681     int32_t serialId, const OHOS::HDI::Ril::V1_4::ImsRsdList &imsRsdList)
682 {
683     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::SendImsRsdList, serialId, imsRsdList);
684 }
685 
GetNetworkSliceAllowedNssai(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_4::SyncAllowedNssaiInfo & dsyncAllowedNssaiInfo)686 int32_t HRilManager::GetNetworkSliceAllowedNssai(int32_t slotId, int32_t serialId,
687     const OHOS::HDI::Ril::V1_4::SyncAllowedNssaiInfo &dsyncAllowedNssaiInfo)
688 {
689     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::GetNetworkSliceAllowedNssai,
690         serialId, dsyncAllowedNssaiInfo);
691 }
692 
GetNetworkSliceEhplmn(int32_t slotId,int32_t serialId)693 int32_t HRilManager::GetNetworkSliceEhplmn(int32_t slotId, int32_t serialId)
694 {
695     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::GetNetworkSliceEhplmn, serialId);
696 }
697 
ActivatePdpContextWithApnTypesforSlice(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_4::DataCallInfoWithApnTypesforSlice & dataCallInfo)698 int32_t HRilManager::ActivatePdpContextWithApnTypesforSlice(
699     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_4::DataCallInfoWithApnTypesforSlice &dataCallInfo)
700 {
701     return TaskSchedule(MODULE_HRIL_DATA, hrilData_[slotId], &HRilData::ActivatePdpContextWithApnTypesforSlice,
702         serialId, dataCallInfo, hrilOpsVersion_);
703 }
704 // Modem
SetRadioState(int32_t slotId,int32_t serialId,int32_t fun,int32_t rst)705 int32_t HRilManager::SetRadioState(int32_t slotId, int32_t serialId, int32_t fun, int32_t rst)
706 {
707     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::SetRadioState, serialId, fun, rst);
708 }
709 
GetRadioState(int32_t slotId,int32_t serialId)710 int32_t HRilManager::GetRadioState(int32_t slotId, int32_t serialId)
711 {
712     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetRadioState, serialId);
713 }
714 
GetImei(int32_t slotId,int32_t serialId)715 int32_t HRilManager::GetImei(int32_t slotId, int32_t serialId)
716 {
717     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetImei, serialId);
718 }
719 
GetImeiSv(int32_t slotId,int32_t serialId)720 int32_t HRilManager::GetImeiSv(int32_t slotId, int32_t serialId)
721 {
722     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetImeiSv, serialId);
723 }
724 
GetMeid(int32_t slotId,int32_t serialId)725 int32_t HRilManager::GetMeid(int32_t slotId, int32_t serialId)
726 {
727     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetMeid, serialId);
728 }
729 
GetVoiceRadioTechnology(int32_t slotId,int32_t serialId)730 int32_t HRilManager::GetVoiceRadioTechnology(int32_t slotId, int32_t serialId)
731 {
732     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetVoiceRadioTechnology, serialId);
733 }
734 
GetBasebandVersion(int32_t slotId,int32_t serialId)735 int32_t HRilManager::GetBasebandVersion(int32_t slotId, int32_t serialId)
736 {
737     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::GetBasebandVersion, serialId);
738 }
739 
ShutDown(int32_t slotId,int32_t serialId)740 int32_t HRilManager::ShutDown(int32_t slotId, int32_t serialId)
741 {
742     return TaskSchedule(MODULE_HRIL_MODEM, hrilModem_[slotId], &HRilModem::ShutDown, serialId);
743 }
744 
GetSimIO(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimIoRequestInfo & simIO)745 int32_t HRilManager::GetSimIO(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimIoRequestInfo &simIO)
746 {
747     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetSimIO, serialId, simIO);
748 }
749 
GetSimStatus(int32_t slotId,int32_t serialId)750 int32_t HRilManager::GetSimStatus(int32_t slotId, int32_t serialId)
751 {
752     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetSimStatus, serialId);
753 }
754 
GetImsi(int32_t slotId,int32_t serialId)755 int32_t HRilManager::GetImsi(int32_t slotId, int32_t serialId)
756 {
757     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetImsi, serialId);
758 }
759 
GetSimLockStatus(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimLockInfo & simLockInfo)760 int32_t HRilManager::GetSimLockStatus(
761     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimLockInfo &simLockInfo)
762 {
763     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetSimLockStatus, serialId, simLockInfo);
764 }
765 
SetSimLock(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimLockInfo & simLockInfo)766 int32_t HRilManager::SetSimLock(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimLockInfo &simLockInfo)
767 {
768     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SetSimLock, serialId, simLockInfo);
769 }
770 
ChangeSimPassword(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimPasswordInfo & simPassword)771 int32_t HRilManager::ChangeSimPassword(
772     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimPasswordInfo &simPassword)
773 {
774     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::ChangeSimPassword, serialId, simPassword);
775 }
776 
UnlockPin(int32_t slotId,int32_t serialId,const std::string & pin)777 int32_t HRilManager::UnlockPin(int32_t slotId, int32_t serialId, const std::string &pin)
778 {
779     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockPin, serialId, pin);
780 }
781 
UnlockPuk(int32_t slotId,int32_t serialId,const std::string & puk,const std::string & pin)782 int32_t HRilManager::UnlockPuk(int32_t slotId, int32_t serialId, const std::string &puk, const std::string &pin)
783 {
784     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockPuk, serialId, puk, pin);
785 }
786 
UnlockPin2(int32_t slotId,int32_t serialId,const std::string & pin2)787 int32_t HRilManager::UnlockPin2(int32_t slotId, int32_t serialId, const std::string &pin2)
788 {
789     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockPin2, serialId, pin2);
790 }
791 
UnlockPuk2(int32_t slotId,int32_t serialId,const std::string & puk2,const std::string & pin2)792 int32_t HRilManager::UnlockPuk2(int32_t slotId, int32_t serialId, const std::string &puk2, const std::string &pin2)
793 {
794     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockPuk2, serialId, puk2, pin2);
795 }
796 
SetActiveSim(int32_t slotId,int32_t serialId,int32_t index,int32_t enable)797 int32_t HRilManager::SetActiveSim(int32_t slotId, int32_t serialId, int32_t index, int32_t enable)
798 {
799     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SetActiveSim, serialId, index, enable);
800 }
801 
SimStkSendTerminalResponse(int32_t slotId,int32_t serialId,const std::string & strCmd)802 int32_t HRilManager::SimStkSendTerminalResponse(int32_t slotId, int32_t serialId, const std::string &strCmd)
803 {
804     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimStkSendTerminalResponse, serialId, strCmd);
805 }
806 
SimStkSendEnvelope(int32_t slotId,int32_t serialId,const std::string & strCmd)807 int32_t HRilManager::SimStkSendEnvelope(int32_t slotId, int32_t serialId, const std::string &strCmd)
808 {
809     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimStkSendEnvelope, serialId, strCmd);
810 }
811 
SimStkSendCallSetupRequestResult(int32_t slotId,int32_t serialId,int32_t accept)812 int32_t HRilManager::SimStkSendCallSetupRequestResult(int32_t slotId, int32_t serialId, int32_t accept)
813 {
814     return TaskSchedule(
815         MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimStkSendCallSetupRequestResult, serialId, accept);
816 }
817 
SimStkIsReady(int32_t slotId,int32_t serialId)818 int32_t HRilManager::SimStkIsReady(int32_t slotId, int32_t serialId)
819 {
820     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimStkIsReady, serialId);
821 }
822 
GetRadioProtocol(int32_t slotId,int32_t serialId)823 int32_t HRilManager::GetRadioProtocol(int32_t slotId, int32_t serialId)
824 {
825     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetRadioProtocol, serialId);
826 }
827 
SetRadioProtocol(int32_t slotId,int32_t serialId,const HDI::Ril::V1_1::RadioProtocol & radioProtocol)828 int32_t HRilManager::SetRadioProtocol(
829     int32_t slotId, int32_t serialId, const HDI::Ril::V1_1::RadioProtocol &radioProtocol)
830 {
831     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SetRadioProtocol, serialId, radioProtocol);
832 }
833 
SimOpenLogicalChannel(int32_t slotId,int32_t serialId,const std::string & appID,int32_t p2)834 int32_t HRilManager::SimOpenLogicalChannel(int32_t slotId, int32_t serialId, const std::string &appID, int32_t p2)
835 {
836     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimOpenLogicalChannel, serialId, appID, p2);
837 }
838 
SimCloseLogicalChannel(int32_t slotId,int32_t serialId,int32_t channelId)839 int32_t HRilManager::SimCloseLogicalChannel(int32_t slotId, int32_t serialId, int32_t channelId)
840 {
841     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimCloseLogicalChannel, serialId, channelId);
842 }
843 
SimTransmitApduLogicalChannel(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo & apduSimIO)844 int32_t HRilManager::SimTransmitApduLogicalChannel(
845     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &apduSimIO)
846 {
847     return TaskSchedule(
848         MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimTransmitApduLogicalChannel, serialId, apduSimIO);
849 }
850 
SimTransmitApduBasicChannel(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo & apduSimIO)851 int32_t HRilManager::SimTransmitApduBasicChannel(
852     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &apduSimIO)
853 {
854     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimTransmitApduBasicChannel, serialId, apduSimIO);
855 }
856 
SimAuthentication(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SimAuthenticationRequestInfo & simAuthInfo)857 int32_t HRilManager::SimAuthentication(
858     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SimAuthenticationRequestInfo &simAuthInfo)
859 {
860     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SimAuthentication, serialId, simAuthInfo);
861 }
862 
UnlockSimLock(int32_t slotId,int32_t serialId,int32_t lockType,const std::string & key)863 int32_t HRilManager::UnlockSimLock(int32_t slotId, int32_t serialId, int32_t lockType, const std::string &key)
864 {
865     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::UnlockSimLock, serialId, lockType, key);
866 }
867 
SendSimMatchedOperatorInfo(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_2::NcfgOperatorInfo & ncfgOperatorInfo)868 int32_t HRilManager::SendSimMatchedOperatorInfo(
869     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_2::NcfgOperatorInfo &ncfgOperatorInfo)
870 {
871     return TaskSchedule(
872         MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SendSimMatchedOperatorInfo, serialId, ncfgOperatorInfo);
873 }
874 
GetPrimarySlot(int32_t slotId,int32_t serialId)875 int32_t HRilManager::GetPrimarySlot(int32_t slotId, int32_t serialId)
876 {
877     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::GetPrimarySlot, serialId);
878 }
879 
SetPrimarySlot(int32_t slotId,int32_t serialId)880 int32_t HRilManager::SetPrimarySlot(int32_t slotId, int32_t serialId)
881 {
882     return TaskSchedule(MODULE_HRIL_SIM, hrilSim_[slotId], &HRilSim::SetPrimarySlot, serialId);
883 }
884 
885 // Network
GetSignalStrength(int32_t slotId,int32_t serialId)886 int32_t HRilManager::GetSignalStrength(int32_t slotId, int32_t serialId)
887 {
888     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetSignalStrength, serialId);
889 }
890 
GetCsRegStatus(int32_t slotId,int32_t serialId)891 int32_t HRilManager::GetCsRegStatus(int32_t slotId, int32_t serialId)
892 {
893     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetCsRegStatus, serialId);
894 }
895 
GetPsRegStatus(int32_t slotId,int32_t serialId)896 int32_t HRilManager::GetPsRegStatus(int32_t slotId, int32_t serialId)
897 {
898     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetPsRegStatus, serialId);
899 }
900 
GetOperatorInfo(int32_t slotId,int32_t serialId)901 int32_t HRilManager::GetOperatorInfo(int32_t slotId, int32_t serialId)
902 {
903     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetOperatorInfo, serialId);
904 }
905 
GetNetworkSearchInformation(int32_t slotId,int32_t serialId)906 int32_t HRilManager::GetNetworkSearchInformation(int32_t slotId, int32_t serialId)
907 {
908     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNetworkSearchInformation, serialId);
909 }
910 
GetNetworkSelectionMode(int32_t slotId,int32_t serialId)911 int32_t HRilManager::GetNetworkSelectionMode(int32_t slotId, int32_t serialId)
912 {
913     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNetworkSelectionMode, serialId);
914 }
915 
SetNetworkSelectionMode(int32_t slotId,int32_t serialId,const HDI::Ril::V1_1::SetNetworkModeInfo & networkModeInfo)916 int32_t HRilManager::SetNetworkSelectionMode(
917     int32_t slotId, int32_t serialId, const HDI::Ril::V1_1::SetNetworkModeInfo &networkModeInfo)
918 {
919     return TaskSchedule(
920         MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetNetworkSelectionMode, serialId, networkModeInfo);
921 }
922 
GetNeighboringCellInfoList(int32_t slotId,int32_t serialId)923 int32_t HRilManager::GetNeighboringCellInfoList(int32_t slotId, int32_t serialId)
924 {
925     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNeighboringCellInfoList, serialId);
926 }
927 
GetCurrentCellInfo(int32_t slotId,int32_t serialId)928 int32_t HRilManager::GetCurrentCellInfo(int32_t slotId, int32_t serialId)
929 {
930     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetCurrentCellInfo, serialId);
931 }
932 
SetPreferredNetwork(int32_t slotId,int32_t serialId,int32_t preferredNetworkType)933 int32_t HRilManager::SetPreferredNetwork(int32_t slotId, int32_t serialId, int32_t preferredNetworkType)
934 {
935     return TaskSchedule(
936         MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetPreferredNetwork, serialId, preferredNetworkType);
937 }
938 
GetPreferredNetwork(int32_t slotId,int32_t serialId)939 int32_t HRilManager::GetPreferredNetwork(int32_t slotId, int32_t serialId)
940 {
941     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetPreferredNetwork, serialId);
942 }
943 
GetPhysicalChannelConfig(int32_t slotId,int32_t serialId)944 int32_t HRilManager::GetPhysicalChannelConfig(int32_t slotId, int32_t serialId)
945 {
946     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetPhysicalChannelConfig, serialId);
947 }
948 
SetLocateUpdates(int32_t slotId,int32_t serialId,const HDI::Ril::V1_1::RilRegNotifyMode mode)949 int32_t HRilManager::SetLocateUpdates(int32_t slotId, int32_t serialId, const HDI::Ril::V1_1::RilRegNotifyMode mode)
950 {
951     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetLocateUpdates, serialId, mode);
952 }
953 
SetNotificationFilter(int32_t slotId,int32_t serialId,int32_t newFilter)954 int32_t HRilManager::SetNotificationFilter(int32_t slotId, int32_t serialId, int32_t newFilter)
955 {
956     return TaskSchedule(
957         MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetNotificationFilter, serialId, newFilter);
958 }
959 
SetDeviceState(int32_t slotId,int32_t serialId,int32_t deviceStateType,int32_t deviceStateOn)960 int32_t HRilManager::SetDeviceState(int32_t slotId, int32_t serialId, int32_t deviceStateType, int32_t deviceStateOn)
961 {
962     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetDeviceState, serialId,
963         deviceStateType, deviceStateOn);
964 }
965 
SetNrOptionMode(int32_t slotId,int32_t serialId,int32_t mode)966 int32_t HRilManager::SetNrOptionMode(int32_t slotId, int32_t serialId, int32_t mode)
967 {
968     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::SetNrOptionMode, serialId, mode);
969 }
970 
GetNrOptionMode(int32_t slotId,int32_t serialId)971 int32_t HRilManager::GetNrOptionMode(int32_t slotId, int32_t serialId)
972 {
973     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNrOptionMode, serialId);
974 }
975 
GetRrcConnectionState(int32_t slotId,int32_t serialId)976 int32_t HRilManager::GetRrcConnectionState(int32_t slotId, int32_t serialId)
977 {
978     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetRrcConnectionState, serialId);
979 }
980 
GetNrSsbId(int32_t slotId,int32_t serialId)981 int32_t HRilManager::GetNrSsbId(int32_t slotId, int32_t serialId)
982 {
983     return TaskSchedule(MODULE_HRIL_NETWORK, hrilNetwork_[slotId], &HRilNetwork::GetNrSsbId, serialId);
984 }
985 
986 // Sms
SendGsmSms(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::GsmSmsMessageInfo & gsmSmsMessageInfo)987 int32_t HRilManager::SendGsmSms(
988     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::GsmSmsMessageInfo &gsmSmsMessageInfo)
989 {
990     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SendGsmSms, serialId, gsmSmsMessageInfo);
991 }
992 
SendCdmaSms(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SendCdmaSmsMessageInfo & cdmaSmsMessageInfo)993 int32_t HRilManager::SendCdmaSms(
994     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SendCdmaSmsMessageInfo &cdmaSmsMessageInfo)
995 {
996     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SendCdmaSms, serialId, cdmaSmsMessageInfo);
997 }
998 
AddSimMessage(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo & smsMessageIOInfo)999 int32_t HRilManager::AddSimMessage(
1000     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo &smsMessageIOInfo)
1001 {
1002     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::AddSimMessage, serialId, smsMessageIOInfo);
1003 }
1004 
DelSimMessage(int32_t slotId,int32_t serialId,int32_t index)1005 int32_t HRilManager::DelSimMessage(int32_t slotId, int32_t serialId, int32_t index)
1006 {
1007     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::DelSimMessage, serialId, index);
1008 }
1009 
UpdateSimMessage(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo & smsMessageIOInfo)1010 int32_t HRilManager::UpdateSimMessage(
1011     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo &smsMessageIOInfo)
1012 {
1013     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::UpdateSimMessage, serialId, smsMessageIOInfo);
1014 }
1015 
AddCdmaSimMessage(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo & smsMessageIOInfo)1016 int32_t HRilManager::AddCdmaSimMessage(
1017     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo &smsMessageIOInfo)
1018 {
1019     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::AddCdmaSimMessage, serialId, smsMessageIOInfo);
1020 }
1021 
DelCdmaSimMessage(int32_t slotId,int32_t serialId,int32_t index)1022 int32_t HRilManager::DelCdmaSimMessage(int32_t slotId, int32_t serialId, int32_t index)
1023 {
1024     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::DelCdmaSimMessage, serialId, index);
1025 }
1026 
UpdateCdmaSimMessage(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo & smsMessageIOInfo)1027 int32_t HRilManager::UpdateCdmaSimMessage(
1028     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::SmsMessageIOInfo &smsMessageIOInfo)
1029 {
1030     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::UpdateCdmaSimMessage, serialId, smsMessageIOInfo);
1031 }
1032 
SetSmscAddr(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::ServiceCenterAddress & serviceCenterAddress)1033 int32_t HRilManager::SetSmscAddr(
1034     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::ServiceCenterAddress &serviceCenterAddress)
1035 {
1036     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SetSmscAddr, serialId, serviceCenterAddress);
1037 }
1038 
GetSmscAddr(int32_t slotId,int32_t serialId)1039 int32_t HRilManager::GetSmscAddr(int32_t slotId, int32_t serialId)
1040 {
1041     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::GetSmscAddr, serialId);
1042 }
1043 
SetCBConfig(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::CBConfigInfo & cellBroadcastInfo)1044 int32_t HRilManager::SetCBConfig(
1045     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::CBConfigInfo &cellBroadcastInfo)
1046 {
1047     return HRilManager::TaskSchedule(
1048         MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SetCBConfig, serialId, cellBroadcastInfo);
1049 }
1050 
GetCBConfig(int32_t slotId,int32_t serialId)1051 int32_t HRilManager::GetCBConfig(int32_t slotId, int32_t serialId)
1052 {
1053     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::GetCBConfig, serialId);
1054 }
1055 
SetCdmaCBConfig(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::CdmaCBConfigInfoList & cdmaCBConfigInfoList)1056 int32_t HRilManager::SetCdmaCBConfig(
1057     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::CdmaCBConfigInfoList &cdmaCBConfigInfoList)
1058 {
1059     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SetCdmaCBConfig, serialId, cdmaCBConfigInfoList);
1060 }
1061 
GetCdmaCBConfig(int32_t slotId,int32_t serialId)1062 int32_t HRilManager::GetCdmaCBConfig(int32_t slotId, int32_t serialId)
1063 {
1064     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::GetCdmaCBConfig, serialId);
1065 }
1066 
SendSmsMoreMode(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::GsmSmsMessageInfo & gsmSmsMessageInfo)1067 int32_t HRilManager::SendSmsMoreMode(
1068     int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::GsmSmsMessageInfo &gsmSmsMessageInfo)
1069 {
1070     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SendSmsMoreMode, serialId, gsmSmsMessageInfo);
1071 }
1072 
SendSmsAck(int32_t slotId,int32_t serialId,const OHOS::HDI::Ril::V1_1::ModeData & modeData)1073 int32_t HRilManager::SendSmsAck(int32_t slotId, int32_t serialId, const OHOS::HDI::Ril::V1_1::ModeData &modeData)
1074 {
1075     return TaskSchedule(MODULE_HRIL_SMS, hrilSms_[slotId], &HRilSms::SendSmsAck, serialId, modeData);
1076 }
1077 
SendRilAck()1078 int32_t HRilManager::SendRilAck()
1079 {
1080     ReleaseRunningLock();
1081     return HRIL_ERR_SUCCESS;
1082 }
1083 
~HRilManager()1084 HRilManager::~HRilManager()
1085 {
1086     SetHrilManagerDestroy();
1087     if (timerCallback_ == nullptr || timerCallback_->event_ == nullptr ||
1088         timerCallback_->event_->IsNormalDestory()) {
1089         return;
1090     }
1091     timerCallback_->event_->SetNormalDestory(true);
1092     timerCallback_->OnTriggerEvent();
1093     if (eventLoop_ == nullptr || !eventLoop_->joinable()) {
1094         return;
1095     }
1096     eventLoop_->join();
1097     TELEPHONY_LOGI("~HRilManager end");
1098 }
1099 
SetHrilManagerDestroy()1100 void HRilManager::SetHrilManagerDestroy()
1101 {
1102     pthread_mutex_lock(&dispatchMutex);
1103     g_isHrilManagerDestory = true;
1104     pthread_mutex_unlock(&dispatchMutex);
1105 }
1106 
1107 #ifdef __cplusplus
1108 extern "C" {
1109 #endif
1110 
GetSimSlotCount()1111 int32_t GetSimSlotCount()
1112 {
1113     char simSlotCount[HRIL_SYSPARA_SIZE] = { 0 };
1114     GetParameter(HRIL_TEL_SIM_SLOT_COUNT, HRIL_DEFAULT_SLOT_COUNT, simSlotCount, HRIL_SYSPARA_SIZE);
1115     int32_t simSlotCountNumber = std::atoi(simSlotCount);
1116     char virtualModemSwitch[HRIL_SYSPARA_SIZE] = {0};
1117     GetParameter(HRIL_VIRTUAL_MODEM_SWITCH, HRIL_VIRTUAL_MODEM_DEFAULT_SWITCH, virtualModemSwitch,
1118         HRIL_SYSPARA_SIZE);
1119     if (strcmp(virtualModemSwitch, "true") == 0 && simSlotCountNumber == 0) {
1120         TELEPHONY_LOGI("virtualModemSwitch on. set simSlotCountNumber 1");
1121         simSlotCountNumber = 1;
1122     }
1123     char vSimModemCount[HRIL_SYSPARA_SIZE] = { 0 };
1124     GetParameter(HRIL_VSIM_MODEM_COUNT_STR, HRIL_DEFAULT_VSIM_MODEM_COUNT, vSimModemCount, HRIL_SYSPARA_SIZE);
1125     int32_t vSimModemCountNumber = std::atoi(vSimModemCount);
1126 	// two modem device also has 3 slot (2sim + 1vsim)
1127     if (simSlotCountNumber == DUAL_SLOT_COUNT &&
1128         (vSimModemCountNumber == MAX_SLOT_COUNT || vSimModemCountNumber == DUAL_SLOT_COUNT)) {
1129         simSlotCountNumber = MAX_SLOT_COUNT;
1130     }
1131     TELEPHONY_LOGI("GetSimSlotCount, %{public}d", simSlotCountNumber);
1132     return simSlotCountNumber;
1133 }
1134 
HRilBootUpEventLoop()1135 static void HRilBootUpEventLoop()
1136 {
1137     if (!IsHrilManagerValid() || HRilManager::GetInstance().timerCallback_ == nullptr) {
1138         return;
1139     }
1140     HRilManager::GetInstance().timerCallback_->EventLoop();
1141 }
1142 
HRilInit(void)1143 void HRilInit(void)
1144 {
1145     if (!IsHrilManagerValid()) {
1146         TELEPHONY_LOGE("HRilInit: hrilManager is invalid");
1147         return;
1148     }
1149 #ifdef ABILITY_POWER_SUPPORT
1150     if (HRilManager::GetInstance().powerInterface_ == nullptr) {
1151         HRilManager::GetInstance().powerInterface_ = IPowerInterface::Get();
1152         if (HRilManager::GetInstance().powerInterface_ == nullptr) {
1153             TELEPHONY_LOGE("failed to get power hdi interface");
1154         }
1155     }
1156 #endif
1157     if (HRilManager::GetInstance().eventLoop_ != nullptr) {
1158         TELEPHONY_LOGD("eventLoop_ has exit");
1159         return;
1160     }
1161     HRilManager::GetInstance().eventLoop_ = std::make_unique<std::thread>(HRilBootUpEventLoop);
1162     pthread_setname_np(HRilManager::GetInstance().eventLoop_.get()->native_handle(), "hril_eventLoop");
1163 }
1164 
HRilRegOps(const HRilOps * hrilOps)1165 void HRilRegOps(const HRilOps *hrilOps)
1166 {
1167     static HRilOps callBacks = { 0 };
1168     static RegisterState rilRegisterStatus = RIL_REGISTER_IS_NONE;
1169 
1170     if (hrilOps == nullptr || !IsHrilManagerValid()) {
1171         TELEPHONY_LOGE("HRilRegOps: param is nullptr");
1172         return;
1173     }
1174     if (rilRegisterStatus > RIL_REGISTER_IS_NONE) {
1175         TELEPHONY_LOGE("HRilRegOps is running!!!!");
1176         return;
1177     }
1178     rilRegisterStatus = RIL_REGISTER_IS_RUNNING;
1179     HRilManager::GetInstance().hrilOpsVersion_ = hrilOps->version;
1180     (void)memcpy_s(&callBacks, sizeof(HRilOps), hrilOps, sizeof(HRilOps));
1181     for (int32_t slotId = HRIL_SIM_SLOT_0; slotId < HRilManager::GetInstance().GetMaxSimSlotCount(); slotId++) {
1182         if (callBacks.smsOps != nullptr) {
1183             HRilManager::GetInstance().RegisterSmsFuncs(slotId, callBacks.smsOps);
1184         }
1185         if (callBacks.callOps != nullptr) {
1186             HRilManager::GetInstance().RegisterCallFuncs(slotId, callBacks.callOps);
1187         }
1188         if (callBacks.dataOps != nullptr) {
1189             HRilManager::GetInstance().RegisterDataFuncs(slotId, callBacks.dataOps);
1190         }
1191         if (callBacks.modemOps != nullptr) {
1192             HRilManager::GetInstance().RegisterModemFuncs(slotId, callBacks.modemOps);
1193         }
1194         if (callBacks.networkOps != nullptr) {
1195             HRilManager::GetInstance().RegisterNetworkFuncs(slotId, callBacks.networkOps);
1196         }
1197         if (callBacks.simOps != nullptr) {
1198             HRilManager::GetInstance().RegisterSimFuncs(slotId, callBacks.simOps);
1199         }
1200     }
1201 }
1202 
OnCallReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1203 void OnCallReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1204 {
1205     if (!IsHrilManagerValid()) {
1206         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1207         return;
1208     }
1209     HRilManager::GetInstance().OnCallReport(slotId, &reportInfo, response, responseLen);
1210 }
1211 
OnDataReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1212 void OnDataReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1213 {
1214     if (!IsHrilManagerValid()) {
1215         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1216         return;
1217     }
1218     HRilManager::GetInstance().OnDataReport(slotId, &reportInfo, response, responseLen);
1219 }
1220 
OnModemReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1221 void OnModemReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1222 {
1223     if (!IsHrilManagerValid()) {
1224         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1225         return;
1226     }
1227     HRilManager::GetInstance().OnModemReport(slotId, &reportInfo, response, responseLen);
1228 }
1229 
OnNetworkReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1230 void OnNetworkReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1231 {
1232     if (!IsHrilManagerValid()) {
1233         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1234         return;
1235     }
1236     HRilManager::GetInstance().OnNetworkReport(slotId, &reportInfo, response, responseLen);
1237 }
1238 
OnSimReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1239 void OnSimReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1240 {
1241     if (!IsHrilManagerValid()) {
1242         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1243         return;
1244     }
1245     HRilManager::GetInstance().OnSimReport(slotId, &reportInfo, response, responseLen);
1246 }
1247 
OnSmsReport(int32_t slotId,struct ReportInfo reportInfo,const uint8_t * response,size_t responseLen)1248 void OnSmsReport(int32_t slotId, struct ReportInfo reportInfo, const uint8_t *response, size_t responseLen)
1249 {
1250     if (!IsHrilManagerValid()) {
1251         TELEPHONY_LOGE("HrilManager is nullptr, id:%{public}d", slotId);
1252         return;
1253     }
1254     HRilManager::GetInstance().OnSmsReport(slotId, &reportInfo, response, responseLen);
1255 }
1256 
OnTimerCallback(HRilCallbackFun func,uint8_t * param,const struct timeval * tv)1257 void OnTimerCallback(HRilCallbackFun func, uint8_t *param, const struct timeval *tv)
1258 {
1259     if (!IsHrilManagerValid() || HRilManager::GetInstance().timerCallback_ == nullptr) {
1260         TELEPHONY_LOGE("HrilManager or timerCallback is nullptr");
1261         return;
1262     }
1263     HRilManager::GetInstance().timerCallback_->HRilSetTimerCallbackInfo(func, param, tv);
1264 }
1265 
1266 #ifdef __cplusplus
1267 }
1268 #endif
1269 } // namespace Telephony
1270 } // namespace OHOS
1271