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