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