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 24namespace OHOS { 25namespace Telephony { 26using namespace OHOS::Telephony; 27std::unique_ptr<ShortMessage> SmsGsmMessageTest::gsmMessage_ = nullptr; 28 29void 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 81void 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 113void 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 131void 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 149void 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 168void 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 187void 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 207void 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 230void 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 253void 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 273void 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 292void 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 315void 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 333void 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 349void 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 365void 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