1 /*
2 * Copyright (C) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "sms_gsm_message_test.h"
17
18 #include <iostream>
19
20 #include "access_mms_token.h"
21 #include "cdma_sms_message.h"
22 #include "gsm_cb_codec.h"
23
24 namespace OHOS {
25 namespace Telephony {
26 using namespace OHOS::Telephony;
27 std::unique_ptr<ShortMessage> SmsGsmMessageTest::gsmMessage_ = nullptr;
28
ProcessInput(int inputCMD,bool & loopFlag) const29 void SmsGsmMessageTest::ProcessInput(int inputCMD, bool &loopFlag) const
30 {
31 std::cout << "inputCMD is:" << inputCMD << std::endl;
32 switch (inputCMD) {
33 case 0x00:
34 Test7BitSubmitSms();
35 break;
36 case 0x01:
37 TestUcs2SubmitSms();
38 break;
39 case 0x02:
40 Test7BitDeliverySms();
41 break;
42 case 0x03:
43 TestUcs2DeliverySms();
44 break;
45 case 0x04:
46 TestStatusReportSms();
47 break;
48 case 0x05:
49 TestMultiPageUcs2Sms();
50 break;
51 case 0x06:
52 TestWapPushSms();
53 break;
54 case 0x07:
55 TestDataSmsDeliverySms();
56 break;
57 case 0x08:
58 TestSmsc00DeliverySms();
59 break;
60 case 0x09:
61 TestMultiPage7bitSms();
62 break;
63 case 0x0a:
64 Test7BitOtherSubmitSms();
65 break;
66 case 0x0b:
67 Test7BitDeliverySms2();
68 break;
69 case 0x0c:
70 Test7BitDeliverySms3();
71 break;
72 case 0x0d:
73 Test7BitDeliverySms4();
74 break;
75 default:
76 loopFlag = false;
77 break;
78 }
79 }
80
ProcessTest() const81 void SmsGsmMessageTest::ProcessTest() const
82 {
83 bool loopFlag = true;
84 while (loopFlag) {
85 std::cout << "\nusage:please input a cmd num:\n"
86 "0:Test7BitSubmitSms\n"
87 "1:TestUcs2SubmitSms\n"
88 "2:Test7BitDeliverySms\r\n"
89 "3:TestUcs2DeliverySms\r\n"
90 "4:TestStatusReportSms\r\n"
91 "5:TestMultiPageUcs2Sms\r\n"
92 "6:TestWapPushSms\r\n"
93 "7:TestDataSmsDeliverySms\r\n"
94 "8:TestSmsc00DeliverySms\r\n"
95 "9:TestMultiPage7bitSms\r\n"
96 "10:Test7BitOtherSubmitSms\r\n"
97 "11:Test7BitDeliverySms2\r\n"
98 "12:Test7BitDeliverySms3\r\n"
99 "13:Test7BitDeliverySms4\r\n"
100 "Other key:exit \n\n";
101
102 int inputCMD = 0;
103 std::cin >> inputCMD;
104 while (std::cin.fail()) {
105 std::cin.clear();
106 std::cin.ignore();
107 std::cin >> inputCMD;
108 }
109 ProcessInput(inputCMD, loopFlag);
110 }
111 }
112
Test7BitSubmitSms() const113 void SmsGsmMessageTest::Test7BitSubmitSms() const
114 {
115 AccessMmsToken token;
116 std::vector<unsigned char> pdu = StringUtils::HexToByteVector("21010B818176251308F4000002C130");
117 ShortMessage *message = new ShortMessage();
118 if (message == nullptr) {
119 std::cout << "message is nullptr!" << std::endl;
120 return;
121 }
122 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
123 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
124 if (gsmMessage_ == nullptr) {
125 std::cout << "Test7BitSubmitSms fail!!!" << std::endl;
126 } else {
127 std::cout << "Test7BitSubmitSms success!!!" << std::endl;
128 }
129 }
130
TestUcs2SubmitSms() const131 void SmsGsmMessageTest::TestUcs2SubmitSms() const
132 {
133 AccessMmsToken token;
134 std::vector<unsigned char> pdu = StringUtils::HexToByteVector("21020B818176251308F40008046D4B8BD5");
135 ShortMessage *message = new ShortMessage();
136 if (message == nullptr) {
137 std::cout << "message is nullptr!" << std::endl;
138 return;
139 }
140 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
141 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
142 if (gsmMessage_ == nullptr) {
143 std::cout << "TestUcs2SubmitSms fail!!!" << std::endl;
144 } else {
145 std::cout << "TestUcs2SubmitSms success!!!" << std::endl;
146 }
147 }
148
Test7BitDeliverySms() const149 void SmsGsmMessageTest::Test7BitDeliverySms() const
150 {
151 AccessMmsToken token;
152 std::vector<unsigned char> pdu =
153 StringUtils::HexToByteVector("0891683108200075F4240D91688129562983F600001240800102142302C130");
154 ShortMessage *message = new ShortMessage();
155 if (message == nullptr) {
156 std::cout << "message is nullptr!" << std::endl;
157 return;
158 }
159 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
160 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
161 if (gsmMessage_ == nullptr) {
162 std::cout << "Test7BitDeliverySms fail!!!" << std::endl;
163 } else {
164 std::cout << "Test7BitDeliverySms success!!!" << std::endl;
165 }
166 }
167
TestUcs2DeliverySms() const168 void SmsGsmMessageTest::TestUcs2DeliverySms() const
169 {
170 AccessMmsToken token;
171 std::vector<unsigned char> pdu =
172 StringUtils::HexToByteVector("0891683110206005F0240DA1688176251308F4000832500381459323044F60597D");
173 ShortMessage *message = new ShortMessage();
174 if (message == nullptr) {
175 std::cout << "message is nullptr!" << std::endl;
176 return;
177 }
178 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
179 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
180 if (gsmMessage_ == nullptr) {
181 std::cout << "TestUcs2DeliverySms fail!!!" << std::endl;
182 } else {
183 std::cout << "TestUcs2DeliverySms success!!!" << std::endl;
184 }
185 }
186
TestStatusReportSms() const187 void SmsGsmMessageTest::TestStatusReportSms() const
188 {
189 AccessMmsToken token;
190 std::vector<unsigned char> pdu =
191 StringUtils::HexToByteVector("0891683110808805F006510B818176251308F4325013113382233250131143802300");
192
193 ShortMessage *message = new ShortMessage();
194 if (message == nullptr) {
195 std::cout << "message is nullptr!" << std::endl;
196 return;
197 }
198 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
199 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
200 if (gsmMessage_ == nullptr) {
201 std::cout << "TestStatusReportSms fail!!!" << std::endl;
202 } else {
203 std::cout << "TestStatusReportSms success!!!" << std::endl;
204 }
205 }
206
TestMultiPageUcs2Sms() const207 void SmsGsmMessageTest::TestMultiPageUcs2Sms() const
208 {
209 AccessMmsToken token;
210 std::vector<unsigned char> pdu = StringUtils::HexToByteVector(
211 "0891683110205005F06005A00110F00008325052214182238C050003D3030200310030002E0063006E002F007100410053004B00380020"
212 "FF0C4EE5514D6B216708521D6263966476F851738D397528540E5F7154CD60A876846B635E384F7F752830024E2D56FD"
213 "8054901A0041005000507545723D65B04F539A8CFF0C70B951FB0020002000680074007400700073003A002F002F0075002E0031003000"
214 "3000310030002E");
215
216 ShortMessage *message = new ShortMessage();
217 if (message == nullptr) {
218 std::cout << "message is nullptr!" << std::endl;
219 return;
220 }
221 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
222 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
223 if (gsmMessage_ == nullptr) {
224 std::cout << "TestMultiPageUcs2Sms fail!!!" << std::endl;
225 } else {
226 std::cout << "TestMultiPageUcs2Sms success!!!" << std::endl;
227 }
228 }
229
TestWapPushSms() const230 void SmsGsmMessageTest::TestWapPushSms() const
231 {
232 AccessMmsToken token;
233 std::vector<unsigned char> pdu = StringUtils::HexToByteVector(
234 "0891683110205005F0640BA10156455102F1000432109261715023880605040B8423F04C06246170706C69636174696F6E2F766E642E77"
235 "61702E6D6D732D6D65737361676500B487AF848C829850765030303031365A645430008D9089178031363630373532313930382F545950"
236 "453D504C4D4E008A808E040001298D"
237 "8805810303F47B83687474703A2F2F31302E3132332E31382E38303A3138302F76564F455F3000");
238
239 ShortMessage *message = new ShortMessage();
240 if (message == nullptr) {
241 std::cout << "message is nullptr!" << std::endl;
242 return;
243 }
244 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
245 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
246 if (gsmMessage_ == nullptr) {
247 std::cout << "TestWapPushSms fail!!!" << std::endl;
248 } else {
249 std::cout << "TestWapPushSms success!!!" << std::endl;
250 }
251 }
252
TestDataSmsDeliverySms() const253 void SmsGsmMessageTest::TestDataSmsDeliverySms() const
254 {
255 AccessMmsToken token;
256 std::vector<unsigned char> pdu = StringUtils::HexToByteVector(
257 "0891683110808805F0640D91686106571209F80000327030021205231306050400640000E8329BFD06DDDF723619");
258
259 ShortMessage *message = new ShortMessage();
260 if (message == nullptr) {
261 std::cout << "message is nullptr!" << std::endl;
262 return;
263 }
264 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
265 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
266 if (gsmMessage_ == nullptr) {
267 std::cout << "TestDataSmsDeliverySms fail!!!" << std::endl;
268 } else {
269 std::cout << "TestDataSmsDeliverySms success!!!" << std::endl;
270 }
271 }
272
TestSmsc00DeliverySms() const273 void SmsGsmMessageTest::TestSmsc00DeliverySms() const
274 {
275 AccessMmsToken token;
276 std::vector<unsigned char> pdu = StringUtils::HexToByteVector("00240D91689141468496F600001270721142432302B319");
277
278 ShortMessage *message = new ShortMessage();
279 if (message == nullptr) {
280 std::cout << "message is nullptr!" << std::endl;
281 return;
282 }
283 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
284 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
285 if (gsmMessage_ == nullptr) {
286 std::cout << "TestSmsc00DeliverySms fail!!!" << std::endl;
287 } else {
288 std::cout << "TestSmsc00DeliverySms success!!!" << std::endl;
289 }
290 }
291
TestMultiPage7bitSms() const292 void SmsGsmMessageTest::TestMultiPage7bitSms() const
293 {
294 AccessMmsToken token;
295 std::vector<unsigned char> pdu = StringUtils::HexToByteVector(
296 "0891683110206005F0640DA1688176251308F4000032806190051123A00500030F020162B1582C168BC562B1582C168BC562B2198D369B"
297 "CD68B5582C269BCD62B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C16"
298 "8BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC540B1582C168BC562B1582C168BC56231D98C"
299 "469BCD66");
300
301 ShortMessage *message = new ShortMessage();
302 if (message == nullptr) {
303 std::cout << "message is nullptr!" << std::endl;
304 return;
305 }
306 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
307 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
308 if (gsmMessage_ == nullptr) {
309 std::cout << "TestMultiPage7bitSms fail!!!" << std::endl;
310 } else {
311 std::cout << "TestMultiPage7bitSms success!!!" << std::endl;
312 }
313 }
314
Test7BitOtherSubmitSms() const315 void SmsGsmMessageTest::Test7BitOtherSubmitSms() const
316 {
317 AccessMmsToken token;
318 std::vector<unsigned char> pdu = StringUtils::HexToByteVector("00010005910110F0000003E17018");
319 ShortMessage *message = new ShortMessage();
320 if (message == nullptr) {
321 std::cout << "message is nullptr!" << std::endl;
322 return;
323 }
324 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
325 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
326 if (gsmMessage_ == nullptr) {
327 std::cout << "Test7BitOtherSubmitSms fail!!!" << std::endl;
328 } else {
329 std::cout << "Test7BitOtherSubmitSms success!!!" << std::endl;
330 }
331 }
332
Test7BitDeliverySms2() const333 void SmsGsmMessageTest::Test7BitDeliverySms2() const
334 {
335 AccessMmsToken token;
336 std::vector<unsigned char> pdu = StringUtils::HexToByteVector("07915892208800F0040ED0A3F19CDD7A52A100084"
337 "24011119582235C4F60768400630073006C00200041007000704E006B2160275BC678BC70BA00340038003700330032003730025"
338 "98267097591554FFF0C8ACB806F7D6100630073006C670D52D971B17DDA003200350031003200330031003200333002");
339 ShortMessage *message = new ShortMessage();
340 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
341 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
342 if (gsmMessage_ == nullptr) {
343 std::cout << "Test7BitDeliverySms2 fail!!!" << std::endl;
344 } else {
345 std::cout << "Test7BitDeliverySms2 success!!!" << std::endl;
346 }
347 }
348
Test7BitDeliverySms3() const349 void SmsGsmMessageTest::Test7BitDeliverySms3() const
350 {
351 AccessMmsToken token;
352 std::vector<unsigned char> pdu = StringUtils::HexToByteVector("07915892208800F00410D0A3F19CDD7A52A13400084"
353 "24011119582235C4F60768400630073006C00200041007000704E006B2160275BC678BC70BA003400380037003300320037300259"
354 "8267097591554FFF0C8ACB806F7D6100630073006C670D52D971B17DDA003200350031003200330031003200333002");
355 ShortMessage *message = new ShortMessage();
356 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
357 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
358 if (gsmMessage_ == nullptr) {
359 std::cout << "Test7BitDeliverySms3 fail!!!" << std::endl;
360 } else {
361 std::cout << "Test7BitDeliverySms3 success!!!" << std::endl;
362 }
363 }
364
Test7BitDeliverySms4() const365 void SmsGsmMessageTest::Test7BitDeliverySms4() const
366 {
367 AccessMmsToken token;
368 std::vector<unsigned char> pdu = StringUtils::HexToByteVector("07915892208800F0040DD0A3F19CDD7A520100084"
369 "24011119582235C4F60768400630073006C00200041007000704E006B2160275BC678BC70BA0034003800370033003200373002"
370 "598267097591554FFF0C8ACB806F7D6100630073006C670D52D971B17DDA003200350031003200330031003200333002");
371 ShortMessage *message = new ShortMessage();
372 ShortMessage::CreateMessage(pdu, u"3gpp", *message);
373 gsmMessage_ = std::unique_ptr<ShortMessage>(message);
374 if (gsmMessage_ == nullptr) {
375 std::cout << "Test7BitDeliverySms4 fail!!!" << std::endl;
376 } else {
377 std::cout << "Test7BitDeliverySms4 success!!!" << std::endl;
378 }
379 }
380 } // namespace Telephony
381 } // namespace OHOS