1 /*
2 * Copyright (C) 2021 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 "tel_ril_sms.h"
17
18 #include "core_service_hisysevent.h"
19 #include "radio_event.h"
20
21 namespace OHOS {
22 namespace Telephony {
TelRilSms(int32_t slotId,sptr<HDI::Ril::V1_3::IRil> rilInterface,std::shared_ptr<ObserverHandler> observerHandler,std::shared_ptr<TelRilHandler> handler)23 TelRilSms::TelRilSms(int32_t slotId, sptr<HDI::Ril::V1_3::IRil> rilInterface,
24 std::shared_ptr<ObserverHandler> observerHandler, std::shared_ptr<TelRilHandler> handler)
25 : TelRilBase(slotId, rilInterface, observerHandler, handler)
26 {}
27
ConstructGsmSendSmsRequestLinkList(std::string & smsPdu,std::string & pdu)28 HDI::Ril::V1_1::GsmSmsMessageInfo TelRilSms::ConstructGsmSendSmsRequestLinkList(std::string &smsPdu, std::string &pdu)
29 {
30 HDI::Ril::V1_1::GsmSmsMessageInfo msg;
31 msg.smscPdu = smsPdu.empty() ? "" : smsPdu;
32 msg.pdu = pdu.empty() ? "" : pdu;
33 return msg;
34 }
35
ConstructSmsMessageIOInfoRequestLinkList(std::string & smsPdu,std::string & pdu)36 OHOS::HDI::Ril::V1_1::SmsMessageIOInfo TelRilSms::ConstructSmsMessageIOInfoRequestLinkList(
37 std::string &smsPdu, std::string &pdu)
38 {
39 OHOS::HDI::Ril::V1_1::SmsMessageIOInfo msg;
40 msg.smscPdu = smsPdu.empty() ? "" : smsPdu;
41 msg.pdu = pdu.empty() ? "" : pdu;
42 return msg;
43 }
44
SendGsmSms(std::string & smsPdu,std::string & pdu,const AppExecFwk::InnerEvent::Pointer & response)45 int32_t TelRilSms::SendGsmSms(std::string &smsPdu, std::string &pdu, const AppExecFwk::InnerEvent::Pointer &response)
46 {
47 HDI::Ril::V1_1::GsmSmsMessageInfo gsmSmsMessageInfo = ConstructGsmSendSmsRequestLinkList(smsPdu, pdu);
48 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::SendGsmSms, gsmSmsMessageInfo);
49 }
50
SendCdmaSms(std::string pdu,const AppExecFwk::InnerEvent::Pointer & response)51 int32_t TelRilSms::SendCdmaSms(std::string pdu, const AppExecFwk::InnerEvent::Pointer &response)
52 {
53 HDI::Ril::V1_1::SendCdmaSmsMessageInfo cdmaSmsMessageInfo = {};
54 cdmaSmsMessageInfo.smscPdu = pdu;
55 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::SendCdmaSms, cdmaSmsMessageInfo);
56 }
57
AddSimMessage(int32_t status,std::string smscPdu,std::string pdu,const AppExecFwk::InnerEvent::Pointer & response)58 int32_t TelRilSms::AddSimMessage(
59 int32_t status, std::string smscPdu, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response)
60 {
61 OHOS::HDI::Ril::V1_1::SmsMessageIOInfo mGsmSmsMessageInfo = ConstructSmsMessageIOInfoRequestLinkList(smscPdu, pdu);
62 mGsmSmsMessageInfo.state = status;
63 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::AddSimMessage, mGsmSmsMessageInfo);
64 }
65
DelSimMessage(int32_t gsmIndex,const AppExecFwk::InnerEvent::Pointer & response)66 int32_t TelRilSms::DelSimMessage(int32_t gsmIndex, const AppExecFwk::InnerEvent::Pointer &response)
67 {
68 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::DelSimMessage, gsmIndex);
69 }
70
UpdateSimMessage(int32_t gsmIndex,int32_t state,std::string smscPdu,std::string pdu,const AppExecFwk::InnerEvent::Pointer & response)71 int32_t TelRilSms::UpdateSimMessage(int32_t gsmIndex, int32_t state, std::string smscPdu, std::string pdu,
72 const AppExecFwk::InnerEvent::Pointer &response)
73 {
74 OHOS::HDI::Ril::V1_1::SmsMessageIOInfo smsMessageIOInfo = ConstructSmsMessageIOInfoRequestLinkList(smscPdu, pdu);
75 smsMessageIOInfo.index = gsmIndex;
76 smsMessageIOInfo.state = state;
77 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::UpdateSimMessage, smsMessageIOInfo);
78 }
79
SetSmscAddr(int32_t tosca,std::string address,const AppExecFwk::InnerEvent::Pointer & response)80 int32_t TelRilSms::SetSmscAddr(int32_t tosca, std::string address, const AppExecFwk::InnerEvent::Pointer &response)
81 {
82 OHOS::HDI::Ril::V1_1::ServiceCenterAddress serCenterAddress;
83 serCenterAddress.address = address;
84 serCenterAddress.tosca = tosca;
85 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::SetSmscAddr, serCenterAddress);
86 }
87
GetSmscAddr(const AppExecFwk::InnerEvent::Pointer & response)88 int32_t TelRilSms::GetSmscAddr(const AppExecFwk::InnerEvent::Pointer &response)
89 {
90 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::GetSmscAddr);
91 }
92
GetCdmaCBConfig(const AppExecFwk::InnerEvent::Pointer & response)93 int32_t TelRilSms::GetCdmaCBConfig(const AppExecFwk::InnerEvent::Pointer &response)
94 {
95 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::GetCdmaCBConfig);
96 }
97
SendSmsMoreMode(std::string & smscPdu,std::string & pdu,const AppExecFwk::InnerEvent::Pointer & response)98 int32_t TelRilSms::SendSmsMoreMode(
99 std::string &smscPdu, std::string &pdu, const AppExecFwk::InnerEvent::Pointer &response)
100 {
101 HDI::Ril::V1_1::GsmSmsMessageInfo gsmSmsMessageInfo = ConstructGsmSendSmsRequestLinkList(smscPdu, pdu);
102 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::SendSmsMoreMode, gsmSmsMessageInfo);
103 }
104
SendSmsAck(bool success,int32_t cause,const AppExecFwk::InnerEvent::Pointer & response)105 int32_t TelRilSms::SendSmsAck(bool success, int32_t cause, const AppExecFwk::InnerEvent::Pointer &response)
106 {
107 HDI::Ril::V1_1::ModeData mModeData;
108 mModeData.result = success;
109 mModeData.mode = cause;
110 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::SendSmsAck, mModeData);
111 }
112
SetCBConfig(int32_t mode,std::string idList,std::string dcsList,const AppExecFwk::InnerEvent::Pointer & response)113 int32_t TelRilSms::SetCBConfig(
114 int32_t mode, std::string idList, std::string dcsList, const AppExecFwk::InnerEvent::Pointer &response)
115 {
116 HDI::Ril::V1_1::CBConfigInfo cellBroadcastInfo;
117 cellBroadcastInfo.mode = mode;
118 cellBroadcastInfo.mids = idList.empty() ? "" : idList;
119 cellBroadcastInfo.dcss = dcsList.empty() ? "" : dcsList;
120 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::SetCBConfig, cellBroadcastInfo);
121 }
122
SetCdmaCBConfig(const CdmaCBConfigInfoList & cdmaCBConfigInfoList,const AppExecFwk::InnerEvent::Pointer & response)123 int32_t TelRilSms::SetCdmaCBConfig(
124 const CdmaCBConfigInfoList &cdmaCBConfigInfoList, const AppExecFwk::InnerEvent::Pointer &response)
125 {
126 HDI::Ril::V1_1::CdmaCBConfigInfoList iCdmaCBConfigInfoList;
127 iCdmaCBConfigInfoList.size = cdmaCBConfigInfoList.size;
128 for (auto &cdmaCBConfigInfo : cdmaCBConfigInfoList.list) {
129 HDI::Ril::V1_1::CdmaCBConfigInfo iCdmaCBConfigInfo = {};
130 iCdmaCBConfigInfo.service = cdmaCBConfigInfo.service;
131 iCdmaCBConfigInfo.language = cdmaCBConfigInfo.language;
132 iCdmaCBConfigInfo.checked = cdmaCBConfigInfo.checked;
133 iCdmaCBConfigInfoList.list.push_back(iCdmaCBConfigInfo);
134 }
135 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::SetCdmaCBConfig, iCdmaCBConfigInfoList);
136 }
137
GetCBConfig(const AppExecFwk::InnerEvent::Pointer & response)138 int32_t TelRilSms::GetCBConfig(const AppExecFwk::InnerEvent::Pointer &response)
139 {
140 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::GetCBConfig);
141 }
142
AddCdmaSimMessage(int32_t status,std::string & pdu,const AppExecFwk::InnerEvent::Pointer & response)143 int32_t TelRilSms::AddCdmaSimMessage(int32_t status, std::string &pdu, const AppExecFwk::InnerEvent::Pointer &response)
144 {
145 OHOS::HDI::Ril::V1_1::SmsMessageIOInfo mSmsMessageIOInfo = {};
146 mSmsMessageIOInfo.state = status;
147 mSmsMessageIOInfo.pdu = pdu;
148 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::AddCdmaSimMessage, mSmsMessageIOInfo);
149 }
150
DelCdmaSimMessage(int32_t cdmaIndex,const AppExecFwk::InnerEvent::Pointer & response)151 int32_t TelRilSms::DelCdmaSimMessage(int32_t cdmaIndex, const AppExecFwk::InnerEvent::Pointer &response)
152 {
153 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::DelCdmaSimMessage, cdmaIndex);
154 }
155
UpdateCdmaSimMessage(int32_t cdmaIndex,int32_t state,std::string pdu,const AppExecFwk::InnerEvent::Pointer & response)156 int32_t TelRilSms::UpdateCdmaSimMessage(
157 int32_t cdmaIndex, int32_t state, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response)
158 {
159 OHOS::HDI::Ril::V1_1::SmsMessageIOInfo smsMessageIOInfo = {};
160 smsMessageIOInfo.index = cdmaIndex;
161 smsMessageIOInfo.state = state;
162 smsMessageIOInfo.pdu = pdu;
163 return Request(TELEPHONY_LOG_FUNC_NAME, response, &HDI::Ril::V1_1::IRil::UpdateCdmaSimMessage, smsMessageIOInfo);
164 }
165
ConvertHexCharToInt(uint8_t ch)166 uint8_t TelRilSms::ConvertHexCharToInt(uint8_t ch)
167 {
168 if ((ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F')) {
169 return ((ch - 'A') % UPPER_CASE_LETTERS_OFFSET + DEC);
170 } else if (ch >= '0' && ch <= '9') {
171 return (ch - '0');
172 } else {
173 return INVALID_HEX_CHAR;
174 }
175 }
176
ConvertHexStringToBytes(const uint8_t * hexString,size_t length)177 uint8_t *TelRilSms::ConvertHexStringToBytes(const uint8_t *hexString, size_t length)
178 {
179 const int32_t HEX_NUM_PER_BYTE = 2;
180 const int32_t BIT_NUM_PER_HEX = 4;
181
182 if (length % HEX_NUM_PER_BYTE) {
183 return nullptr;
184 }
185 int32_t len = (int32_t)length / HEX_NUM_PER_BYTE;
186 if (len <= 0) {
187 TELEPHONY_LOGE("hexString is null");
188 return nullptr;
189 }
190 uint8_t *bytes = (uint8_t *)malloc(len * sizeof(uint8_t));
191 if (bytes == nullptr) {
192 TELEPHONY_LOGE("ConvertHexStringToBytes: cannot allocate memory for bytes string");
193 return nullptr;
194 }
195 uint8_t *hexStr = (uint8_t *)hexString;
196 size_t i = 0;
197 while (i < length) {
198 uint8_t hexCh1 = ConvertHexCharToInt(hexStr[i]);
199 uint8_t hexCh2 = ConvertHexCharToInt(hexStr[i + 1]);
200 if (hexCh1 == INVALID_HEX_CHAR || hexCh2 == INVALID_HEX_CHAR) {
201 free(bytes);
202 return nullptr;
203 }
204 bytes[i / HEX_NUM_PER_BYTE] = ((hexCh1 << BIT_NUM_PER_HEX) | hexCh2);
205 i += HEX_NUM_PER_BYTE;
206 }
207 return bytes;
208 }
209
NewSmsNotify(const HDI::Ril::V1_1::SmsMessageInfo & iSmsMessageInfo)210 int32_t TelRilSms::NewSmsNotify(const HDI::Ril::V1_1::SmsMessageInfo &iSmsMessageInfo)
211 {
212 std::shared_ptr<SmsMessageInfo> smsMessageInfo = std::make_shared<SmsMessageInfo>();
213 if (smsMessageInfo == nullptr) {
214 TELEPHONY_LOGE("ERROR : smsMessageInfo == nullptr !!!");
215 return TELEPHONY_ERR_LOCAL_PTR_NULL;
216 }
217 BuildSmsMessageInfo(smsMessageInfo, iSmsMessageInfo);
218 return Notify<SmsMessageInfo>(TELEPHONY_LOG_FUNC_NAME, smsMessageInfo, RadioEvent::RADIO_GSM_SMS);
219 }
220
NewCdmaSmsNotify(const HDI::Ril::V1_1::SmsMessageInfo & iSmsMessageInfo)221 int32_t TelRilSms::NewCdmaSmsNotify(const HDI::Ril::V1_1::SmsMessageInfo &iSmsMessageInfo)
222 {
223 std::shared_ptr<SmsMessageInfo> smsMessageInfo = std::make_shared<SmsMessageInfo>();
224 if (smsMessageInfo == nullptr) {
225 TELEPHONY_LOGE("ERROR : smsMessageInfo == nullptr !!!");
226 return TELEPHONY_ERR_LOCAL_PTR_NULL;
227 }
228 BuildSmsMessageInfo(smsMessageInfo, iSmsMessageInfo);
229 if (smsMessageInfo->pdu.empty()) {
230 TELEPHONY_LOGI("pdu is empty");
231 }
232 return Notify<SmsMessageInfo>(TELEPHONY_LOG_FUNC_NAME, smsMessageInfo, RadioEvent::RADIO_CDMA_SMS);
233 }
234
SmsStatusReportNotify(const HDI::Ril::V1_1::SmsMessageInfo & iSmsMessageInfo)235 int32_t TelRilSms::SmsStatusReportNotify(const HDI::Ril::V1_1::SmsMessageInfo &iSmsMessageInfo)
236 {
237 std::shared_ptr<SmsMessageInfo> smsMessageInfo = std::make_shared<SmsMessageInfo>();
238 if (smsMessageInfo == nullptr) {
239 TELEPHONY_LOGE("ERROR : smsMessageInfo == nullptr !!!");
240 return TELEPHONY_ERR_LOCAL_PTR_NULL;
241 }
242 BuildSmsMessageInfo(smsMessageInfo, iSmsMessageInfo);
243 return Notify<SmsMessageInfo>(TELEPHONY_LOG_FUNC_NAME, smsMessageInfo, RadioEvent::RADIO_SMS_STATUS);
244 }
245
NewSmsStoredOnSimNotify(int32_t recordNumber,int32_t indicationType)246 int32_t TelRilSms::NewSmsStoredOnSimNotify(int32_t recordNumber, int32_t indicationType)
247 {
248 TELEPHONY_LOGD("indicationType: %{public}d", indicationType);
249 return Notify<int32_t>(
250 TELEPHONY_LOG_FUNC_NAME, std::make_shared<int32_t>(recordNumber), RadioEvent::RADIO_SMS_ON_SIM);
251 }
252
CBConfigNotify(const HDI::Ril::V1_1::CBConfigReportInfo & iCellBroadConfigReportInfo)253 int32_t TelRilSms::CBConfigNotify(const HDI::Ril::V1_1::CBConfigReportInfo &iCellBroadConfigReportInfo)
254 {
255 std::shared_ptr<CBConfigReportInfo> cellBroadConfigReportInfo = std::make_shared<CBConfigReportInfo>();
256 if (cellBroadConfigReportInfo == nullptr) {
257 TELEPHONY_LOGE("ERROR : cellBroadConfigReportInfo == nullptr !!!");
258 return TELEPHONY_ERR_LOCAL_PTR_NULL;
259 }
260 BuildCBConfigReportInfo(cellBroadConfigReportInfo, iCellBroadConfigReportInfo);
261 return Notify<CBConfigReportInfo>(
262 TELEPHONY_LOG_FUNC_NAME, cellBroadConfigReportInfo, RadioEvent::RADIO_CELL_BROADCAST);
263 }
264
SendGsmSmsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo,const HDI::Ril::V1_1::SendSmsResultInfo & iSendSmsResultInfo)265 int32_t TelRilSms::SendGsmSmsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
266 const HDI::Ril::V1_1::SendSmsResultInfo &iSendSmsResultInfo)
267 {
268 return ResponseSendSms(responseInfo, iSendSmsResultInfo);
269 }
270
SendCdmaSmsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo,const HDI::Ril::V1_1::SendSmsResultInfo & iSendSmsResultInfo)271 int32_t TelRilSms::SendCdmaSmsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
272 const HDI::Ril::V1_1::SendSmsResultInfo &iSendSmsResultInfo)
273 {
274 return ResponseSendSms(responseInfo, iSendSmsResultInfo);
275 }
276
AddSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)277 int32_t TelRilSms::AddSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
278 {
279 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
280 }
281
DelSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)282 int32_t TelRilSms::DelSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
283 {
284 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
285 }
286
UpdateSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)287 int32_t TelRilSms::UpdateSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
288 {
289 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
290 }
291
SetSmscAddrResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)292 int32_t TelRilSms::SetSmscAddrResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
293 {
294 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
295 }
296
GetSmscAddrResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo,const HDI::Ril::V1_1::ServiceCenterAddress & iServiceCenterAddress)297 int32_t TelRilSms::GetSmscAddrResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
298 const HDI::Ril::V1_1::ServiceCenterAddress &iServiceCenterAddress)
299 {
300 std::shared_ptr<ServiceCenterAddress> serCenterAddress = std::make_shared<ServiceCenterAddress>();
301 if (serCenterAddress == nullptr) {
302 TELEPHONY_LOGE("ERROR : serCenterAddress == nullptr !!!");
303 return TELEPHONY_ERR_LOCAL_PTR_NULL;
304 }
305 BuildServiceCenterAddress(serCenterAddress, iServiceCenterAddress);
306 return Response<ServiceCenterAddress>(TELEPHONY_LOG_FUNC_NAME, responseInfo, serCenterAddress);
307 }
308
GetCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo,const HDI::Ril::V1_1::CBConfigInfo & iCellBroadcastInfo)309 int32_t TelRilSms::GetCBConfigResponse(
310 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::CBConfigInfo &iCellBroadcastInfo)
311 {
312 std::shared_ptr<CBConfigInfo> cellBroadcastInfo = std::make_shared<CBConfigInfo>();
313 if (cellBroadcastInfo == nullptr) {
314 TELEPHONY_LOGE("ERROR : cellBroadcastInfo == nullptr !!!");
315 return TELEPHONY_ERR_LOCAL_PTR_NULL;
316 }
317 BuildCBConfigInfo(cellBroadcastInfo, iCellBroadcastInfo);
318 return Response<CBConfigInfo>(TELEPHONY_LOG_FUNC_NAME, responseInfo, cellBroadcastInfo);
319 }
320
GetCdmaCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo,const HDI::Ril::V1_1::CdmaCBConfigInfo & iCdmaCBConfigInfo)321 int32_t TelRilSms::GetCdmaCBConfigResponse(
322 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::CdmaCBConfigInfo &iCdmaCBConfigInfo)
323 {
324 std::shared_ptr<CdmaCBConfigInfo> cdmaCBConfigInfo = std::make_shared<CdmaCBConfigInfo>();
325 if (cdmaCBConfigInfo == nullptr) {
326 TELEPHONY_LOGE("ERROR :cdmaCBConfigInfo == nullptr !!!");
327 return TELEPHONY_ERR_LOCAL_PTR_NULL;
328 }
329 BuildCdmaCBConfigInfo(cdmaCBConfigInfo, iCdmaCBConfigInfo);
330 return Response<CdmaCBConfigInfo>(TELEPHONY_LOG_FUNC_NAME, responseInfo, cdmaCBConfigInfo);
331 }
332
SendSmsMoreModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo,const HDI::Ril::V1_1::SendSmsResultInfo & iSendSmsResultInfo)333 int32_t TelRilSms::SendSmsMoreModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
334 const HDI::Ril::V1_1::SendSmsResultInfo &iSendSmsResultInfo)
335 {
336 return ResponseSendSms(responseInfo, iSendSmsResultInfo);
337 }
338
SendSmsAckResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)339 int32_t TelRilSms::SendSmsAckResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
340 {
341 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
342 }
343
SetCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)344 int32_t TelRilSms::SetCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
345 {
346 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
347 }
348
SetCdmaCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)349 int32_t TelRilSms::SetCdmaCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
350 {
351 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
352 }
353
AddCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)354 int32_t TelRilSms::AddCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
355 {
356 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
357 }
358
DelCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)359 int32_t TelRilSms::DelCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
360 {
361 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
362 }
363
UpdateCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo)364 int32_t TelRilSms::UpdateCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo)
365 {
366 return Response(TELEPHONY_LOG_FUNC_NAME, responseInfo);
367 }
368
BuildSendSmsResultInfo(std::shared_ptr<SendSmsResultInfo> sendSmsResultInfo,const HDI::Ril::V1_1::SendSmsResultInfo & iSendSmsResultInfo)369 void TelRilSms::BuildSendSmsResultInfo(
370 std::shared_ptr<SendSmsResultInfo> sendSmsResultInfo, const HDI::Ril::V1_1::SendSmsResultInfo &iSendSmsResultInfo)
371 {
372 sendSmsResultInfo->msgRef = iSendSmsResultInfo.msgRef;
373 sendSmsResultInfo->pdu = iSendSmsResultInfo.pdu;
374 sendSmsResultInfo->errCode = iSendSmsResultInfo.errCode;
375 }
376
BuildCBConfigInfo(std::shared_ptr<CBConfigInfo> cellBroadcastInfo,const HDI::Ril::V1_1::CBConfigInfo & iCellBroadcastInfo)377 void TelRilSms::BuildCBConfigInfo(
378 std::shared_ptr<CBConfigInfo> cellBroadcastInfo, const HDI::Ril::V1_1::CBConfigInfo &iCellBroadcastInfo)
379 {
380 cellBroadcastInfo->serial = iCellBroadcastInfo.serial;
381 cellBroadcastInfo->mode = iCellBroadcastInfo.mode;
382 cellBroadcastInfo->indicationType = iCellBroadcastInfo.indicationType;
383 cellBroadcastInfo->mids = iCellBroadcastInfo.mids;
384 cellBroadcastInfo->dcss = iCellBroadcastInfo.dcss;
385 }
386
BuildServiceCenterAddress(std::shared_ptr<ServiceCenterAddress> serCenterAddress,const HDI::Ril::V1_1::ServiceCenterAddress & iServiceCenterAddress)387 void TelRilSms::BuildServiceCenterAddress(std::shared_ptr<ServiceCenterAddress> serCenterAddress,
388 const HDI::Ril::V1_1::ServiceCenterAddress &iServiceCenterAddress)
389 {
390 serCenterAddress->serial = iServiceCenterAddress.serial;
391 serCenterAddress->tosca = iServiceCenterAddress.tosca;
392 serCenterAddress->address = iServiceCenterAddress.address;
393 }
394
BuildCdmaCBConfigInfo(std::shared_ptr<CdmaCBConfigInfo> cdmaCBConfigInfo,const HDI::Ril::V1_1::CdmaCBConfigInfo & iCdmaCBConfigInfo)395 void TelRilSms::BuildCdmaCBConfigInfo(
396 std::shared_ptr<CdmaCBConfigInfo> cdmaCBConfigInfo, const HDI::Ril::V1_1::CdmaCBConfigInfo &iCdmaCBConfigInfo)
397 {
398 cdmaCBConfigInfo->service = iCdmaCBConfigInfo.service;
399 cdmaCBConfigInfo->language = iCdmaCBConfigInfo.language;
400 cdmaCBConfigInfo->checked = iCdmaCBConfigInfo.checked;
401 }
402
BuildSmsMessageInfo(std::shared_ptr<SmsMessageInfo> smsMessageInfo,const HDI::Ril::V1_1::SmsMessageInfo & iSmsMessageInfo)403 void TelRilSms::BuildSmsMessageInfo(
404 std::shared_ptr<SmsMessageInfo> smsMessageInfo, const HDI::Ril::V1_1::SmsMessageInfo &iSmsMessageInfo)
405 {
406 smsMessageInfo->indicationType = iSmsMessageInfo.indicationType;
407 smsMessageInfo->size = iSmsMessageInfo.size;
408 for (auto pduInfo : iSmsMessageInfo.pdu) {
409 smsMessageInfo->pdu.push_back(pduInfo);
410 }
411 }
BuildCBConfigReportInfo(std::shared_ptr<CBConfigReportInfo> cellBroadConfigReportInfo,const HDI::Ril::V1_1::CBConfigReportInfo & iCellBroadConfigReportInfo)412 void TelRilSms::BuildCBConfigReportInfo(std::shared_ptr<CBConfigReportInfo> cellBroadConfigReportInfo,
413 const HDI::Ril::V1_1::CBConfigReportInfo &iCellBroadConfigReportInfo)
414 {
415 cellBroadConfigReportInfo->indicationType = iCellBroadConfigReportInfo.indicationType;
416 cellBroadConfigReportInfo->sn = iCellBroadConfigReportInfo.sn;
417 cellBroadConfigReportInfo->mid = iCellBroadConfigReportInfo.mid;
418 cellBroadConfigReportInfo->page = iCellBroadConfigReportInfo.page;
419 cellBroadConfigReportInfo->pages = iCellBroadConfigReportInfo.pages;
420 cellBroadConfigReportInfo->dcs = iCellBroadConfigReportInfo.dcs;
421 cellBroadConfigReportInfo->data = iCellBroadConfigReportInfo.data;
422 cellBroadConfigReportInfo->length = iCellBroadConfigReportInfo.length;
423 cellBroadConfigReportInfo->pdu = iCellBroadConfigReportInfo.pdu;
424 }
425
ResponseSendSms(const HDI::Ril::V1_1::RilRadioResponseInfo & responseInfo,const HDI::Ril::V1_1::SendSmsResultInfo & result)426 int32_t TelRilSms::ResponseSendSms(
427 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::SendSmsResultInfo &result)
428 {
429 auto getDataFunc = [&result, this](std::shared_ptr<TelRilRequest> telRilRequest) {
430 std::shared_ptr<SendSmsResultInfo> sendSmsResultInfo = std::make_shared<SendSmsResultInfo>();
431 this->BuildSendSmsResultInfo(sendSmsResultInfo, result);
432 sendSmsResultInfo->flag = telRilRequest->pointer_->GetParam();
433 return sendSmsResultInfo;
434 };
435 return Response<SendSmsResultInfo>(TELEPHONY_LOG_FUNC_NAME, responseInfo, getDataFunc);
436 }
437 } // namespace Telephony
438 } // namespace OHOS
439