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