1e5d0e473Sopenharmony_ci/*
2e5d0e473Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License.
5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at
6e5d0e473Sopenharmony_ci *
7e5d0e473Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e5d0e473Sopenharmony_ci *
9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and
13e5d0e473Sopenharmony_ci * limitations under the License.
14e5d0e473Sopenharmony_ci */
15e5d0e473Sopenharmony_ci
16e5d0e473Sopenharmony_ci#include "sms_cb_message_test.h"
17e5d0e473Sopenharmony_ci
18e5d0e473Sopenharmony_ci#include <iostream>
19e5d0e473Sopenharmony_ci#include <vector>
20e5d0e473Sopenharmony_ci
21e5d0e473Sopenharmony_ci#include "cdma_sms_message.h"
22e5d0e473Sopenharmony_ci#include "gsm_cb_codec.h"
23e5d0e473Sopenharmony_ci
24e5d0e473Sopenharmony_cinamespace OHOS {
25e5d0e473Sopenharmony_cinamespace Telephony {
26e5d0e473Sopenharmony_civoid SmsCbMessageTest::ProcessInput(int inputCMD, bool &loopFlag) const
27e5d0e473Sopenharmony_ci{
28e5d0e473Sopenharmony_ci    std::cout << "inputCMD is:" << inputCMD << std::endl;
29e5d0e473Sopenharmony_ci    switch (inputCMD) {
30e5d0e473Sopenharmony_ci        case 0x00:
31e5d0e473Sopenharmony_ci            TestMessageBody7Bit();
32e5d0e473Sopenharmony_ci            break;
33e5d0e473Sopenharmony_ci        case 0x01:
34e5d0e473Sopenharmony_ci            TestMessageBody7BitUmts();
35e5d0e473Sopenharmony_ci            break;
36e5d0e473Sopenharmony_ci        case 0x02:
37e5d0e473Sopenharmony_ci            TestMessageBody8Bit();
38e5d0e473Sopenharmony_ci            break;
39e5d0e473Sopenharmony_ci        case 0x03:
40e5d0e473Sopenharmony_ci            TestMessageBodyUcs2();
41e5d0e473Sopenharmony_ci            break;
42e5d0e473Sopenharmony_ci        case 0x04:
43e5d0e473Sopenharmony_ci            TestMessageBodyUcs2Umts();
44e5d0e473Sopenharmony_ci            break;
45e5d0e473Sopenharmony_ci        case 0x05:
46e5d0e473Sopenharmony_ci            TestEtwsWarningType0();
47e5d0e473Sopenharmony_ci            break;
48e5d0e473Sopenharmony_ci        case 0x06:
49e5d0e473Sopenharmony_ci            TestEtwsWarningType1();
50e5d0e473Sopenharmony_ci            break;
51e5d0e473Sopenharmony_ci        case 0x07:
52e5d0e473Sopenharmony_ci            TestEtwsWarningType2();
53e5d0e473Sopenharmony_ci            break;
54e5d0e473Sopenharmony_ci        case 0x08:
55e5d0e473Sopenharmony_ci            TestEtwsWarningType3();
56e5d0e473Sopenharmony_ci            break;
57e5d0e473Sopenharmony_ci        case 0x09:
58e5d0e473Sopenharmony_ci            TestEtwsWarningType4();
59e5d0e473Sopenharmony_ci            break;
60e5d0e473Sopenharmony_ci        case 0x0A:
61e5d0e473Sopenharmony_ci            TestMessageBody7BitGs2();
62e5d0e473Sopenharmony_ci            break;
63e5d0e473Sopenharmony_ci        case 0x0B:
64e5d0e473Sopenharmony_ci            TestCdmaUserData();
65e5d0e473Sopenharmony_ci            break;
66e5d0e473Sopenharmony_ci        case 0x0C:
67e5d0e473Sopenharmony_ci            TestCdmaCmasType1();
68e5d0e473Sopenharmony_ci            break;
69e5d0e473Sopenharmony_ci        default:
70e5d0e473Sopenharmony_ci            loopFlag = false;
71e5d0e473Sopenharmony_ci            break;
72e5d0e473Sopenharmony_ci    }
73e5d0e473Sopenharmony_ci}
74e5d0e473Sopenharmony_ci
75e5d0e473Sopenharmony_civoid SmsCbMessageTest::ProcessTest() const
76e5d0e473Sopenharmony_ci{
77e5d0e473Sopenharmony_ci    bool loopFlag = true;
78e5d0e473Sopenharmony_ci    while (loopFlag) {
79e5d0e473Sopenharmony_ci        std::cout << "\n-----------start test cbmessage api--------------\n"
80e5d0e473Sopenharmony_ci                     "usage:please input a cmd num:\n"
81e5d0e473Sopenharmony_ci                     "0:TestMessageBody7Bit\n"
82e5d0e473Sopenharmony_ci                     "1:TestMessageBody7BitUmts\n"
83e5d0e473Sopenharmony_ci                     "2:TestMessageBody8Bit\r\n"
84e5d0e473Sopenharmony_ci                     "3:TestMessageBodyUcs2\r\n"
85e5d0e473Sopenharmony_ci                     "4:TestMessageBodyUcs2Umts\r\n"
86e5d0e473Sopenharmony_ci                     "5:TestEtwsWarningType0\r\n"
87e5d0e473Sopenharmony_ci                     "6:TestEtwsWarningType1\r\n"
88e5d0e473Sopenharmony_ci                     "7:TestEtwsWarningType2\r\n"
89e5d0e473Sopenharmony_ci                     "8:TestEtwsWarningType3\r\n"
90e5d0e473Sopenharmony_ci                     "9:TestEtwsWarningType4\r\n"
91e5d0e473Sopenharmony_ci                     "10:TestMessageBody7BitGs2\r\n"
92e5d0e473Sopenharmony_ci                     "11:TestCdmaUserData\r\n"
93e5d0e473Sopenharmony_ci                     "12:TestCdmaCmasType1\r\n"
94e5d0e473Sopenharmony_ci                     "Other key:exit \n"
95e5d0e473Sopenharmony_ci                  << std::endl;
96e5d0e473Sopenharmony_ci
97e5d0e473Sopenharmony_ci        int inputCMD = 0;
98e5d0e473Sopenharmony_ci        std::cin >> inputCMD;
99e5d0e473Sopenharmony_ci        while (std::cin.fail()) {
100e5d0e473Sopenharmony_ci            std::cin.clear();
101e5d0e473Sopenharmony_ci            std::cin.ignore();
102e5d0e473Sopenharmony_ci            std::cin >> inputCMD;
103e5d0e473Sopenharmony_ci        }
104e5d0e473Sopenharmony_ci        ProcessInput(inputCMD, loopFlag);
105e5d0e473Sopenharmony_ci    }
106e5d0e473Sopenharmony_ci}
107e5d0e473Sopenharmony_ci
108e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestMessageBody7Bit() const
109e5d0e473Sopenharmony_ci{
110e5d0e473Sopenharmony_ci    std::string data(
111e5d0e473Sopenharmony_ci        "C0000032401174747A0E4ACF41E8B0BCFD76E741EF39685C66B34162F93B4C1"
112e5d0e473Sopenharmony_ci        "E87E77410BD3CA7836EC2341D440ED3C321");
113e5d0e473Sopenharmony_ci
114e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
115e5d0e473Sopenharmony_ci    if (msg == nullptr) {
116e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
117e5d0e473Sopenharmony_ci    } else {
118e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
119e5d0e473Sopenharmony_ci    }
120e5d0e473Sopenharmony_ci}
121e5d0e473Sopenharmony_ci
122e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestMessageBody7BitUmts() const
123e5d0e473Sopenharmony_ci{
124e5d0e473Sopenharmony_ci    std::string data(
125e5d0e473Sopenharmony_ci        "010032C000400174747A0E4ACF41E8B0BCFD76E741EF39685C66B3C5F277983"
126e5d0e473Sopenharmony_ci        "C0ECFE9207A794E07DD84693AA8EC1EBFC96550B54D9F83C8617A9845479741"
127e5d0e473Sopenharmony_ci        "37719A0EAAB7E973D038EC060DC372791ED47ECBCB2072981E0652");
128e5d0e473Sopenharmony_ci
129e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
130e5d0e473Sopenharmony_ci    if (msg == nullptr) {
131e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
132e5d0e473Sopenharmony_ci    } else {
133e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
134e5d0e473Sopenharmony_ci    }
135e5d0e473Sopenharmony_ci}
136e5d0e473Sopenharmony_ci
137e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestMessageBody8Bit() const
138e5d0e473Sopenharmony_ci{
139e5d0e473Sopenharmony_ci    std::string data(
140e5d0e473Sopenharmony_ci        "C0000032441174686973206973206861726D6F6E79206F732063656C6C20627"
141e5d0e473Sopenharmony_ci        "26F6164636173742074657374203842697420656E636F64652064617461");
142e5d0e473Sopenharmony_ci
143e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
144e5d0e473Sopenharmony_ci    if (msg == nullptr) {
145e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
146e5d0e473Sopenharmony_ci    } else {
147e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
148e5d0e473Sopenharmony_ci    }
149e5d0e473Sopenharmony_ci}
150e5d0e473Sopenharmony_ci
151e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestMessageBodyUcs2() const
152e5d0e473Sopenharmony_ci{
153e5d0e473Sopenharmony_ci    std::string data(
154e5d0e473Sopenharmony_ci        "C00000324811006800610072006D006F006E00790020006F00730020005500"
155e5d0e473Sopenharmony_ci        "630073003200200065006E0063006F0064006500200064006100740061");
156e5d0e473Sopenharmony_ci
157e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
158e5d0e473Sopenharmony_ci    if (msg == nullptr) {
159e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
160e5d0e473Sopenharmony_ci    } else {
161e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
162e5d0e473Sopenharmony_ci    }
163e5d0e473Sopenharmony_ci}
164e5d0e473Sopenharmony_ci
165e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestMessageBodyUcs2Umts() const
166e5d0e473Sopenharmony_ci{
167e5d0e473Sopenharmony_ci    std::string data(
168e5d0e473Sopenharmony_ci        "01a41f51101102ea3030a830ea30a230e130fc30eb914d4fe130c630b930c8000"
169e5d0e473Sopenharmony_ci        "d000a3053308c306f8a669a137528306e30e130c330bb30fc30b8306730593002"
170e5d0e473Sopenharmony_ci        "000d000aff080032003000310033002f00310031002f003252ea3000370020003"
171e5d0e473Sopenharmony_ci        "10035003a00340034ff09000d000aff0830a830ea30a25e02ff09000000000000"
172e5d0e473Sopenharmony_ci        "00000000000000000000000000000000000000000000000000000000000000000"
173e5d0e473Sopenharmony_ci        "000000000000000000022");
174e5d0e473Sopenharmony_ci
175e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
176e5d0e473Sopenharmony_ci    if (msg == nullptr) {
177e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
178e5d0e473Sopenharmony_ci    } else {
179e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
180e5d0e473Sopenharmony_ci    }
181e5d0e473Sopenharmony_ci}
182e5d0e473Sopenharmony_ci
183e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestEtwsWarningType0() const
184e5d0e473Sopenharmony_ci{
185e5d0e473Sopenharmony_ci    std::string data(
186e5d0e473Sopenharmony_ci      "0000110011010D0A004800610072006D006F006E00790020004F007300200045007400"
187e5d0e473Sopenharmony_ci      "770073005700610072006E0069006E00670020004D0065007300730061006700650055"
188e5d0e473Sopenharmony_ci      "00630073003200200045006D00740073");
189e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
190e5d0e473Sopenharmony_ci    if (msg == nullptr) {
191e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
192e5d0e473Sopenharmony_ci    } else {
193e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
194e5d0e473Sopenharmony_ci    }
195e5d0e473Sopenharmony_ci}
196e5d0e473Sopenharmony_ci
197e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestEtwsWarningType1() const
198e5d0e473Sopenharmony_ci{
199e5d0e473Sopenharmony_ci    std::string data(
200e5d0e473Sopenharmony_ci      "0000110111010D0A004800610072006D006F006E00790020004F007300200045007400"
201e5d0e473Sopenharmony_ci      "770073005700610072006E0069006E00670020004D0065007300730061006700650055"
202e5d0e473Sopenharmony_ci      "00630073003200200045006D00740073");
203e5d0e473Sopenharmony_ci
204e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
205e5d0e473Sopenharmony_ci    if (msg == nullptr) {
206e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
207e5d0e473Sopenharmony_ci    } else {
208e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
209e5d0e473Sopenharmony_ci    }
210e5d0e473Sopenharmony_ci}
211e5d0e473Sopenharmony_ci
212e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestEtwsWarningType2() const
213e5d0e473Sopenharmony_ci{
214e5d0e473Sopenharmony_ci    std::string data(
215e5d0e473Sopenharmony_ci      "0000110211010D0A004800610072006D006F006E00790020004F007300200045007400"
216e5d0e473Sopenharmony_ci      "770073005700610072006E0069006E00670020004D0065007300730061006700650055"
217e5d0e473Sopenharmony_ci      "00630073003200200045006D00740073");
218e5d0e473Sopenharmony_ci
219e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
220e5d0e473Sopenharmony_ci    if (msg == nullptr) {
221e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
222e5d0e473Sopenharmony_ci    } else {
223e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
224e5d0e473Sopenharmony_ci    }
225e5d0e473Sopenharmony_ci}
226e5d0e473Sopenharmony_ci
227e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestEtwsWarningType3() const
228e5d0e473Sopenharmony_ci{
229e5d0e473Sopenharmony_ci    std::string data(
230e5d0e473Sopenharmony_ci        "0000110311010D0A5BAE57CE770C531790E85C716CBF3044573065B93067573097"
231e5d0e473Sopenharmony_ci        "07300263FA308C306B5099304830664E0B30553044FF086C178C615E81FF090000"
232e5d0e473Sopenharmony_ci        "0000000000000000000000000000000000000000");
233e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
234e5d0e473Sopenharmony_ci    if (msg == nullptr) {
235e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
236e5d0e473Sopenharmony_ci    } else {
237e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
238e5d0e473Sopenharmony_ci    }
239e5d0e473Sopenharmony_ci}
240e5d0e473Sopenharmony_ci
241e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestEtwsWarningType4() const
242e5d0e473Sopenharmony_ci{
243e5d0e473Sopenharmony_ci    std::string data(
244e5d0e473Sopenharmony_ci      "0000110411010D0A004800610072006D006F006E00790020004F007300200045007400"
245e5d0e473Sopenharmony_ci      "770073005700610072006E0069006E00670020004D0065007300730061006700650055"
246e5d0e473Sopenharmony_ci      "00630073003200200045006D00740073");
247e5d0e473Sopenharmony_ci
248e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
249e5d0e473Sopenharmony_ci    if (msg == nullptr) {
250e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
251e5d0e473Sopenharmony_ci    } else {
252e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
253e5d0e473Sopenharmony_ci    }
254e5d0e473Sopenharmony_ci}
255e5d0e473Sopenharmony_ci
256e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestMessageBody7BitGs2() const
257e5d0e473Sopenharmony_ci{
258e5d0e473Sopenharmony_ci    std::string data(
259e5d0e473Sopenharmony_ci        "80000032401174747A0E4ACF41E8B0BCFD76E741EF39685C66B34162F93B4C1"
260e5d0e473Sopenharmony_ci        "E87E77410BD3CA7836EC2341D440ED3C321");
261e5d0e473Sopenharmony_ci
262e5d0e473Sopenharmony_ci    std::shared_ptr<GsmCbCodec> msg = GsmCbCodec::CreateCbMessage(data);
263e5d0e473Sopenharmony_ci    if (msg == nullptr) {
264e5d0e473Sopenharmony_ci        std::cout << "CreateCbMessage fail." << std::endl;
265e5d0e473Sopenharmony_ci    } else {
266e5d0e473Sopenharmony_ci        std::cout << "msginfo: " << msg->ToString() << std::endl;
267e5d0e473Sopenharmony_ci    }
268e5d0e473Sopenharmony_ci}
269e5d0e473Sopenharmony_ci
270e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestCdmaUserData() const
271e5d0e473Sopenharmony_ci{
272e5d0e473Sopenharmony_ci    std::string pdu = "0101020004081300031008d00106102c2870e1420801c00c01c0";
273e5d0e473Sopenharmony_ci    std::shared_ptr<CdmaSmsMessage> message = CdmaSmsMessage::CreateMessage(pdu);
274e5d0e473Sopenharmony_ci    if (message == nullptr) {
275e5d0e473Sopenharmony_ci        std::cout << "message is nullptr!" << std::endl;
276e5d0e473Sopenharmony_ci        return;
277e5d0e473Sopenharmony_ci    }
278e5d0e473Sopenharmony_ci    std::cout << message->GetCbInfo() << std::endl;
279e5d0e473Sopenharmony_ci}
280e5d0e473Sopenharmony_ci
281e5d0e473Sopenharmony_civoid SmsCbMessageTest::TestCdmaCmasType1() const
282e5d0e473Sopenharmony_ci{
283e5d0e473Sopenharmony_ci    std::string pdu = "0101021000081500031008d001080100000800c1E1000801c00c01c0";
284e5d0e473Sopenharmony_ci    std::shared_ptr<CdmaSmsMessage> message = CdmaSmsMessage::CreateMessage(pdu);
285e5d0e473Sopenharmony_ci    if (message == nullptr) {
286e5d0e473Sopenharmony_ci        std::cout << "message is nullptr!" << std::endl;
287e5d0e473Sopenharmony_ci        return;
288e5d0e473Sopenharmony_ci    }
289e5d0e473Sopenharmony_ci    std::cout << message->GetCbInfo() << std::endl;
290e5d0e473Sopenharmony_ci}
291e5d0e473Sopenharmony_ci} // namespace Telephony
292e5d0e473Sopenharmony_ci} // namespace OHOS