blob: 9f1718b1a088716f9ad2bb5fa11ce3531e0d4763 [file] [log] [blame]
Sarah Chind2a41192021-12-21 11:34:00 -08001/*
2 * Copyright (C) 2021 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <aidl/android/hardware/radio/config/IRadioConfig.h>
18#include <android-base/logging.h>
19#include <android/binder_manager.h>
20
21#include "radio_messaging_utils.h"
22
23#define ASSERT_OK(ret) ASSERT_TRUE(ret.isOk())
24
25void RadioMessagingTest::SetUp() {
26 std::string serviceName = GetParam();
27
28 if (!isServiceValidForDeviceConfiguration(serviceName)) {
29 ALOGI("Skipped the test due to device configuration.");
30 GTEST_SKIP();
31 }
32
33 radio_messaging = IRadioMessaging::fromBinder(
34 ndk::SpAIBinder(AServiceManager_waitForService(GetParam().c_str())));
35 ASSERT_NE(nullptr, radio_messaging.get());
36
37 radioRsp_messaging = ndk::SharedRefBase::make<RadioMessagingResponse>(*this);
38 ASSERT_NE(nullptr, radioRsp_messaging.get());
39
40 count_ = 0;
41
42 radioInd_messaging = ndk::SharedRefBase::make<RadioMessagingIndication>(*this);
43 ASSERT_NE(nullptr, radioInd_messaging.get());
44
45 radio_messaging->setResponseFunctions(radioRsp_messaging, radioInd_messaging);
46
Sarah Chin91997ac2021-12-29 00:35:12 -080047 // Assert IRadioSim exists and SIM is present before testing
48 radio_sim = sim::IRadioSim::fromBinder(ndk::SpAIBinder(
49 AServiceManager_waitForService("android.hardware.radio.sim.IRadioSim/slot1")));
50 ASSERT_NE(nullptr, radio_sim.get());
51 updateSimCardStatus();
52 EXPECT_EQ(CardStatus::STATE_PRESENT, cardStatus.cardState);
53
Sarah Chind2a41192021-12-21 11:34:00 -080054 // Assert IRadioConfig exists before testing
Sarah Chin91997ac2021-12-29 00:35:12 -080055 radio_config = config::IRadioConfig::fromBinder(ndk::SpAIBinder(
56 AServiceManager_waitForService("android.hardware.radio.config.IRadioConfig/default")));
57 ASSERT_NE(nullptr, radio_config.get());
Sarah Chind2a41192021-12-21 11:34:00 -080058}
59
60/*
61 * Test IRadioMessaging.sendSms() for the response returned.
62 */
63TEST_P(RadioMessagingTest, sendSms) {
64 LOG(DEBUG) << "sendSms";
65 serial = GetRandomSerialNumber();
66 GsmSmsMessage msg;
67 msg.smscPdu = "";
68 msg.pdu = "01000b916105770203f3000006d4f29c3e9b01";
69
70 radio_messaging->sendSms(serial, msg);
71
72 EXPECT_EQ(std::cv_status::no_timeout, wait());
73 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
74 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
75
76 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
77 ASSERT_TRUE(CheckAnyOfErrors(
78 radioRsp_messaging->rspInfo.error,
79 {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
80 CHECK_GENERAL_ERROR));
81 EXPECT_EQ(0, radioRsp_messaging->sendSmsResult.errorCode);
82 }
83 LOG(DEBUG) << "sendSms finished";
84}
85
86/*
87 * Test IRadioMessaging.sendSmsExpectMore() for the response returned.
88 */
89TEST_P(RadioMessagingTest, sendSmsExpectMore) {
90 LOG(DEBUG) << "sendSmsExpectMore";
91 serial = GetRandomSerialNumber();
92 GsmSmsMessage msg;
93 msg.smscPdu = "";
94 msg.pdu = "01000b916105770203f3000006d4f29c3e9b01";
95
96 radio_messaging->sendSmsExpectMore(serial, msg);
97
98 EXPECT_EQ(std::cv_status::no_timeout, wait());
99 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
100 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
101
102 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
103 ASSERT_TRUE(CheckAnyOfErrors(
104 radioRsp_messaging->rspInfo.error,
105 {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
106 CHECK_GENERAL_ERROR));
107 }
108 LOG(DEBUG) << "sendSmsExpectMore finished";
109}
110
111/*
112 * Test IRadioMessaging.sendCdmaSms() for the response returned.
113 */
114TEST_P(RadioMessagingTest, sendCdmaSms) {
115 LOG(DEBUG) << "sendCdmaSms";
116 serial = GetRandomSerialNumber();
117
118 // Create a CdmaSmsAddress
119 CdmaSmsAddress cdmaSmsAddress;
120 cdmaSmsAddress.digitMode = CdmaSmsAddress::DIGIT_MODE_FOUR_BIT;
121 cdmaSmsAddress.isNumberModeDataNetwork = false;
122 cdmaSmsAddress.numberType = CdmaSmsAddress::NUMBER_TYPE_UNKNOWN;
123 cdmaSmsAddress.numberPlan = CdmaSmsAddress::NUMBER_PLAN_UNKNOWN;
124 cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
125
126 // Create a CdmaSmsSubAddress
127 CdmaSmsSubaddress cdmaSmsSubaddress;
128 cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddress::SUBADDRESS_TYPE_NSAP;
129 cdmaSmsSubaddress.odd = false;
130 cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
131
132 // Create a CdmaSmsMessage
133 CdmaSmsMessage cdmaSmsMessage;
134 cdmaSmsMessage.teleserviceId = 4098;
135 cdmaSmsMessage.isServicePresent = false;
136 cdmaSmsMessage.serviceCategory = 0;
137 cdmaSmsMessage.address = cdmaSmsAddress;
138 cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
139 cdmaSmsMessage.bearerData =
140 (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
141
142 radio_messaging->sendCdmaSms(serial, cdmaSmsMessage);
143
144 EXPECT_EQ(std::cv_status::no_timeout, wait());
145 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
146 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
147
148 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
149 ASSERT_TRUE(CheckAnyOfErrors(
150 radioRsp_messaging->rspInfo.error,
151 {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
152 CHECK_GENERAL_ERROR));
153 }
154 LOG(DEBUG) << "sendCdmaSms finished";
155}
156
157/*
158 * Test IRadioMessaging.sendCdmaSmsExpectMore() for the response returned.
159 */
160TEST_P(RadioMessagingTest, sendCdmaSmsExpectMore) {
161 serial = GetRandomSerialNumber();
162
163 // Create a CdmaSmsAddress
164 CdmaSmsAddress cdmaSmsAddress;
165 cdmaSmsAddress.digitMode = CdmaSmsAddress::DIGIT_MODE_FOUR_BIT;
166 cdmaSmsAddress.isNumberModeDataNetwork = false;
167 cdmaSmsAddress.numberType = CdmaSmsAddress::NUMBER_TYPE_UNKNOWN;
168 cdmaSmsAddress.numberPlan = CdmaSmsAddress::NUMBER_PLAN_UNKNOWN;
169 cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
170
171 // Create a CdmaSmsSubAddress
172 CdmaSmsSubaddress cdmaSmsSubaddress;
173 cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddress::SUBADDRESS_TYPE_NSAP;
174 cdmaSmsSubaddress.odd = false;
175 cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
176
177 // Create a CdmaSmsMessage
178 CdmaSmsMessage cdmaSmsMessage;
179 cdmaSmsMessage.teleserviceId = 4098;
180 cdmaSmsMessage.isServicePresent = false;
181 cdmaSmsMessage.serviceCategory = 0;
182 cdmaSmsMessage.address = cdmaSmsAddress;
183 cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
184 cdmaSmsMessage.bearerData =
185 (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
186
187 radio_messaging->sendCdmaSmsExpectMore(serial, cdmaSmsMessage);
188
189 EXPECT_EQ(std::cv_status::no_timeout, wait());
190 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
191 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
192
193 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
194 ASSERT_TRUE(CheckAnyOfErrors(
195 radioRsp_messaging->rspInfo.error,
196 {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE, RadioError::SIM_ABSENT},
197 CHECK_GENERAL_ERROR));
198 }
199}
Sarah Chin52de0ad2022-01-28 01:02:16 -0800200
201/*
202 * Test IRadioMessaging.setGsmBroadcastConfig() for the response returned.
203 */
204TEST_P(RadioMessagingTest, setGsmBroadcastConfig) {
205 LOG(DEBUG) << "setGsmBroadcastConfig";
206 serial = GetRandomSerialNumber();
207
208 // Create GsmBroadcastSmsConfigInfo #1
209 GsmBroadcastSmsConfigInfo gbSmsConfig1;
210 gbSmsConfig1.fromServiceId = 4352;
211 gbSmsConfig1.toServiceId = 4354;
212 gbSmsConfig1.fromCodeScheme = 0;
213 gbSmsConfig1.toCodeScheme = 255;
214 gbSmsConfig1.selected = true;
215
216 // Create GsmBroadcastSmsConfigInfo #2
217 GsmBroadcastSmsConfigInfo gbSmsConfig2;
218 gbSmsConfig2.fromServiceId = 4356;
219 gbSmsConfig2.toServiceId = 4356;
220 gbSmsConfig2.fromCodeScheme = 0;
221 gbSmsConfig2.toCodeScheme = 255;
222 gbSmsConfig2.selected = true;
223
224 // Create GsmBroadcastSmsConfigInfo #3
225 GsmBroadcastSmsConfigInfo gbSmsConfig3;
226 gbSmsConfig3.fromServiceId = 4370;
227 gbSmsConfig3.toServiceId = 4379;
228 gbSmsConfig3.fromCodeScheme = 0;
229 gbSmsConfig3.toCodeScheme = 255;
230 gbSmsConfig3.selected = true;
231
232 // Create GsmBroadcastSmsConfigInfo #4
233 GsmBroadcastSmsConfigInfo gbSmsConfig4;
234 gbSmsConfig4.fromServiceId = 4383;
235 gbSmsConfig4.toServiceId = 4391;
236 gbSmsConfig4.fromCodeScheme = 0;
237 gbSmsConfig4.toCodeScheme = 255;
238 gbSmsConfig4.selected = true;
239
240 // Create GsmBroadcastSmsConfigInfo #5
241 GsmBroadcastSmsConfigInfo gbSmsConfig5;
242 gbSmsConfig5.fromServiceId = 4392;
243 gbSmsConfig5.toServiceId = 4392;
244 gbSmsConfig5.fromCodeScheme = 0;
245 gbSmsConfig5.toCodeScheme = 255;
246 gbSmsConfig5.selected = true;
247
248 std::vector<GsmBroadcastSmsConfigInfo> gsmBroadcastSmsConfigsInfoList = {
249 gbSmsConfig1, gbSmsConfig2, gbSmsConfig3, gbSmsConfig4, gbSmsConfig5};
250
251 radio_messaging->setGsmBroadcastConfig(serial, gsmBroadcastSmsConfigsInfoList);
252
253 EXPECT_EQ(std::cv_status::no_timeout, wait());
254 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
255 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
256
257 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
258 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
259 {RadioError::NONE, RadioError::INVALID_ARGUMENTS,
260 RadioError::INVALID_MODEM_STATE, RadioError::INVALID_STATE},
261 CHECK_GENERAL_ERROR));
262 }
263 LOG(DEBUG) << "setGsmBroadcastConfig finished";
264}
265
266/*
267 * Test IRadioMessaging.getGsmBroadcastConfig() for the response returned.
268 */
269TEST_P(RadioMessagingTest, getGsmBroadcastConfig) {
270 LOG(DEBUG) << "getGsmBroadcastConfig";
271 serial = GetRandomSerialNumber();
272
273 radio_messaging->getGsmBroadcastConfig(serial);
274
275 EXPECT_EQ(std::cv_status::no_timeout, wait());
276 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
277 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
278
279 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
280 ASSERT_TRUE(CheckAnyOfErrors(
281 radioRsp_messaging->rspInfo.error,
282 {RadioError::NONE, RadioError::INVALID_MODEM_STATE, RadioError::INVALID_STATE},
283 CHECK_GENERAL_ERROR));
284 }
285 LOG(DEBUG) << "getGsmBroadcastConfig finished";
286}
287
288/*
289 * Test IRadioMessaging.setCdmaBroadcastConfig() for the response returned.
290 */
291TEST_P(RadioMessagingTest, setCdmaBroadcastConfig) {
292 LOG(DEBUG) << "setCdmaBroadcastConfig";
293 serial = GetRandomSerialNumber();
294
295 CdmaBroadcastSmsConfigInfo cbSmsConfig;
296 cbSmsConfig.serviceCategory = 4096;
297 cbSmsConfig.language = 1;
298 cbSmsConfig.selected = true;
299
300 std::vector<CdmaBroadcastSmsConfigInfo> cdmaBroadcastSmsConfigInfoList = {cbSmsConfig};
301
302 radio_messaging->setCdmaBroadcastConfig(serial, cdmaBroadcastSmsConfigInfoList);
303
304 EXPECT_EQ(std::cv_status::no_timeout, wait());
305 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
306 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
307
308 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
309 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
310 {RadioError::NONE, RadioError::INVALID_MODEM_STATE},
311 CHECK_GENERAL_ERROR));
312 }
313 LOG(DEBUG) << "setCdmaBroadcastConfig finished";
314}
315
316/*
317 * Test IRadioMessaging.getCdmaBroadcastConfig() for the response returned.
318 */
319TEST_P(RadioMessagingTest, getCdmaBroadcastConfig) {
320 LOG(DEBUG) << "getCdmaBroadcastConfig";
321 serial = GetRandomSerialNumber();
322
323 radio_messaging->getCdmaBroadcastConfig(serial);
324
325 EXPECT_EQ(std::cv_status::no_timeout, wait());
326 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
327 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
328
329 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
330 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error, {RadioError::NONE},
331 CHECK_GENERAL_ERROR));
332 }
333 LOG(DEBUG) << "getCdmaBroadcastConfig finished";
334}
335
336/*
337 * Test IRadioMessaging.setCdmaBroadcastActivation() for the response returned.
338 */
339TEST_P(RadioMessagingTest, setCdmaBroadcastActivation) {
340 LOG(DEBUG) << "setCdmaBroadcastActivation";
341 serial = GetRandomSerialNumber();
342 bool activate = false;
343
344 radio_messaging->setCdmaBroadcastActivation(serial, activate);
345
346 EXPECT_EQ(std::cv_status::no_timeout, wait());
347 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
348 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
349
350 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
351 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
352 {RadioError::NONE, RadioError::INVALID_ARGUMENTS},
353 CHECK_GENERAL_ERROR));
354 }
355 LOG(DEBUG) << "setCdmaBroadcastActivation finished";
356}
357
358/*
359 * Test IRadioMessaging.setGsmBroadcastActivation() for the response returned.
360 */
361TEST_P(RadioMessagingTest, setGsmBroadcastActivation) {
362 LOG(DEBUG) << "setGsmBroadcastActivation";
363 serial = GetRandomSerialNumber();
364 bool activate = false;
365
366 radio_messaging->setGsmBroadcastActivation(serial, activate);
367
368 EXPECT_EQ(std::cv_status::no_timeout, wait());
369 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
370 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
371
372 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
373 ASSERT_TRUE(CheckAnyOfErrors(
374 radioRsp_messaging->rspInfo.error,
375 {RadioError::NONE, RadioError::INVALID_ARGUMENTS, RadioError::INVALID_MODEM_STATE,
376 RadioError::INVALID_STATE, RadioError::OPERATION_NOT_ALLOWED},
377 CHECK_GENERAL_ERROR));
378 }
379 LOG(DEBUG) << "setGsmBroadcastActivation finished";
380}
381
382/*
383 * Test IRadioMessaging.acknowledgeLastIncomingGsmSms() for the response returned.
384 */
385TEST_P(RadioMessagingTest, acknowledgeLastIncomingGsmSms) {
386 LOG(DEBUG) << "acknowledgeLastIncomingGsmSms";
387 serial = GetRandomSerialNumber();
388 bool success = true;
389
390 radio_messaging->acknowledgeLastIncomingGsmSms(
391 serial, success, SmsAcknowledgeFailCause::MEMORY_CAPACITY_EXCEEDED);
392
393 EXPECT_EQ(std::cv_status::no_timeout, wait());
394 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
395 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
396
397 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
398 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
399 {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE},
400 CHECK_GENERAL_ERROR));
401 }
402 LOG(DEBUG) << "acknowledgeLastIncomingGsmSms finished";
403}
404
405/*
406 * Test IRadioMessaging.acknowledgeIncomingGsmSmsWithPdu() for the response returned.
407 */
408TEST_P(RadioMessagingTest, acknowledgeIncomingGsmSmsWithPdu) {
409 LOG(DEBUG) << "acknowledgeIncomingGsmSmsWithPdu";
410 serial = GetRandomSerialNumber();
411 bool success = true;
412 std::string ackPdu = "";
413
414 radio_messaging->acknowledgeIncomingGsmSmsWithPdu(serial, success, ackPdu);
415
416 EXPECT_EQ(std::cv_status::no_timeout, wait());
417 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
418 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
419
420 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
Sarah Chinf746a912022-01-28 15:54:36 -0800421 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
422 {RadioError::INVALID_ARGUMENTS, RadioError::NO_SMS_TO_ACK},
423 CHECK_GENERAL_ERROR));
Sarah Chin52de0ad2022-01-28 01:02:16 -0800424 }
425 LOG(DEBUG) << "acknowledgeIncomingGsmSmsWithPdu finished";
426}
427
428/*
429 * Test IRadioMessaging.acknowledgeLastIncomingCdmaSms() for the response returned.
430 */
431TEST_P(RadioMessagingTest, acknowledgeLastIncomingCdmaSms) {
432 LOG(DEBUG) << "acknowledgeLastIncomingCdmaSms";
433 serial = GetRandomSerialNumber();
434
435 // Create a CdmaSmsAck
436 CdmaSmsAck cdmaSmsAck;
437 cdmaSmsAck.errorClass = false;
438 cdmaSmsAck.smsCauseCode = 1;
439
440 radio_messaging->acknowledgeLastIncomingCdmaSms(serial, cdmaSmsAck);
441
442 EXPECT_EQ(std::cv_status::no_timeout, wait());
443 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
444 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
445
446 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
447 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
448 {RadioError::INVALID_ARGUMENTS, RadioError::NO_SMS_TO_ACK},
449 CHECK_GENERAL_ERROR));
450 }
451 LOG(DEBUG) << "acknowledgeLastIncomingCdmaSms finished";
452}
453
454/*
455 * Test IRadioMessaging.sendImsSms() for the response returned.
456 */
457TEST_P(RadioMessagingTest, sendImsSms) {
458 LOG(DEBUG) << "sendImsSms";
459 serial = GetRandomSerialNumber();
460
461 // Create a CdmaSmsAddress
462 CdmaSmsAddress cdmaSmsAddress;
463 cdmaSmsAddress.digitMode = CdmaSmsAddress::DIGIT_MODE_FOUR_BIT;
464 cdmaSmsAddress.isNumberModeDataNetwork = false;
465 cdmaSmsAddress.numberType = CdmaSmsAddress::NUMBER_TYPE_UNKNOWN;
466 cdmaSmsAddress.numberPlan = CdmaSmsAddress::NUMBER_PLAN_UNKNOWN;
467 cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
468
469 // Create a CdmaSmsSubAddress
470 CdmaSmsSubaddress cdmaSmsSubaddress;
471 cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddress::SUBADDRESS_TYPE_NSAP;
472 cdmaSmsSubaddress.odd = false;
473 cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
474
475 // Create a CdmaSmsMessage
476 CdmaSmsMessage cdmaSmsMessage;
477 cdmaSmsMessage.teleserviceId = 4098;
478 cdmaSmsMessage.isServicePresent = false;
479 cdmaSmsMessage.serviceCategory = 0;
480 cdmaSmsMessage.address = cdmaSmsAddress;
481 cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
482 cdmaSmsMessage.bearerData =
483 (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
484
485 // Creata an ImsSmsMessage
486 ImsSmsMessage msg;
487 msg.tech = RadioTechnologyFamily::THREE_GPP2;
488 msg.retry = false;
489 msg.messageRef = 0;
490 msg.cdmaMessage = (std::vector<CdmaSmsMessage>){cdmaSmsMessage};
491 msg.gsmMessage = (std::vector<GsmSmsMessage>){};
492
493 radio_messaging->sendImsSms(serial, msg);
494
495 EXPECT_EQ(std::cv_status::no_timeout, wait());
496 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
497 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
498
499 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
500 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
501 {RadioError::INVALID_ARGUMENTS}, CHECK_GENERAL_ERROR));
502 }
503 LOG(DEBUG) << "sendImsSms finished";
504}
505
506/*
507 * Test IRadioMessaging.getSmscAddress() for the response returned.
508 */
509TEST_P(RadioMessagingTest, getSmscAddress) {
510 LOG(DEBUG) << "getSmscAddress";
511 serial = GetRandomSerialNumber();
512
513 radio_messaging->getSmscAddress(serial);
514
515 EXPECT_EQ(std::cv_status::no_timeout, wait());
516 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
517 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
518
519 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
520 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
521 {RadioError::INVALID_MODEM_STATE, RadioError::INVALID_STATE,
522 RadioError::SIM_ABSENT},
523 CHECK_GENERAL_ERROR));
524 }
525 LOG(DEBUG) << "getSmscAddress finished";
526}
527
528/*
529 * Test IRadioMessaging.setSmscAddress() for the response returned.
530 */
531TEST_P(RadioMessagingTest, setSmscAddress) {
532 LOG(DEBUG) << "setSmscAddress";
533 serial = GetRandomSerialNumber();
534 std::string address = std::string("smscAddress");
535
536 radio_messaging->setSmscAddress(serial, address);
537
538 EXPECT_EQ(std::cv_status::no_timeout, wait());
539 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
540 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
541
542 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
543 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
544 {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_SMS_FORMAT,
545 RadioError::SIM_ABSENT},
546 CHECK_GENERAL_ERROR));
547 }
548 LOG(DEBUG) << "setSmscAddress finished";
549}
550
551/*
552 * Test IRadioMessaging.writeSmsToSim() for the response returned.
553 */
554TEST_P(RadioMessagingTest, writeSmsToSim) {
555 LOG(DEBUG) << "writeSmsToSim";
556 serial = GetRandomSerialNumber();
557 SmsWriteArgs smsWriteArgs;
558 smsWriteArgs.status = SmsWriteArgs::STATUS_REC_UNREAD;
559 smsWriteArgs.smsc = "";
560 smsWriteArgs.pdu = "01000b916105770203f3000006d4f29c3e9b01";
561
562 radio_messaging->writeSmsToSim(serial, smsWriteArgs);
563
564 EXPECT_EQ(std::cv_status::no_timeout, wait());
565 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
566 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
567
568 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
569 ASSERT_TRUE(CheckAnyOfErrors(
570 radioRsp_messaging->rspInfo.error,
571 {RadioError::NONE, RadioError::ENCODING_ERR, RadioError::INVALID_ARGUMENTS,
572 RadioError::INVALID_SMSC_ADDRESS, RadioError::MODEM_ERR,
573 RadioError::NETWORK_NOT_READY, RadioError::NO_RESOURCES, RadioError::SIM_ABSENT},
574 CHECK_GENERAL_ERROR));
575 }
576 LOG(DEBUG) << "writeSmsToSim finished";
577}
578
579/*
580 * Test IRadioMessaging.deleteSmsOnSim() for the response returned.
581 */
582TEST_P(RadioMessagingTest, deleteSmsOnSim) {
583 LOG(DEBUG) << "deleteSmsOnSim";
584 serial = GetRandomSerialNumber();
585 int index = 1;
586
587 radio_messaging->deleteSmsOnSim(serial, index);
588
589 EXPECT_EQ(std::cv_status::no_timeout, wait());
590 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
591 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
592
593 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
594 ASSERT_TRUE(CheckAnyOfErrors(
595 radioRsp_messaging->rspInfo.error,
596 {RadioError::NONE, RadioError::ENCODING_ERR, RadioError::INVALID_ARGUMENTS,
597 RadioError::INVALID_MODEM_STATE, RadioError::NO_SUCH_ENTRY, RadioError::MODEM_ERR,
598 RadioError::SIM_ABSENT},
599 CHECK_GENERAL_ERROR));
600 }
601 LOG(DEBUG) << "deleteSmsOnSim finished";
602}
603
604/*
605 * Test IRadioMessaging.writeSmsToRuim() for the response returned.
606 */
607TEST_P(RadioMessagingTest, writeSmsToRuim) {
608 LOG(DEBUG) << "writeSmsToRuim";
609 serial = GetRandomSerialNumber();
610
611 // Create a CdmaSmsAddress
612 CdmaSmsAddress cdmaSmsAddress;
613 cdmaSmsAddress.digitMode = CdmaSmsAddress::DIGIT_MODE_FOUR_BIT;
614 cdmaSmsAddress.isNumberModeDataNetwork = false;
615 cdmaSmsAddress.numberType = CdmaSmsAddress::NUMBER_TYPE_UNKNOWN;
616 cdmaSmsAddress.numberPlan = CdmaSmsAddress::NUMBER_PLAN_UNKNOWN;
617 cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
618
619 // Create a CdmaSmsSubAddress
620 CdmaSmsSubaddress cdmaSmsSubaddress;
621 cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddress::SUBADDRESS_TYPE_NSAP;
622 cdmaSmsSubaddress.odd = false;
623 cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
624
625 // Create a CdmaSmsMessage
626 CdmaSmsMessage cdmaSmsMessage;
627 cdmaSmsMessage.teleserviceId = 4098;
628 cdmaSmsMessage.isServicePresent = false;
629 cdmaSmsMessage.serviceCategory = 0;
630 cdmaSmsMessage.address = cdmaSmsAddress;
631 cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
632 cdmaSmsMessage.bearerData =
633 (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
634
635 // Create a CdmaSmsWriteArgs
636 CdmaSmsWriteArgs cdmaSmsWriteArgs;
637 cdmaSmsWriteArgs.status = CdmaSmsWriteArgs::STATUS_REC_UNREAD;
638 cdmaSmsWriteArgs.message = cdmaSmsMessage;
639
640 radio_messaging->writeSmsToRuim(serial, cdmaSmsWriteArgs);
641
642 EXPECT_EQ(std::cv_status::no_timeout, wait());
643 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
644 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
645
646 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
647 ASSERT_TRUE(CheckAnyOfErrors(
648 radioRsp_messaging->rspInfo.error,
649 {RadioError::NONE, RadioError::INVALID_ARGUMENTS, RadioError::INVALID_SMS_FORMAT,
650 RadioError::INVALID_SMSC_ADDRESS, RadioError::INVALID_STATE, RadioError::MODEM_ERR,
651 RadioError::NO_SUCH_ENTRY, RadioError::SIM_ABSENT},
652 CHECK_GENERAL_ERROR));
653 }
654 LOG(DEBUG) << "writeSmsToRuim finished";
655}
656
657/*
658 * Test IRadioMessaging.deleteSmsOnRuim() for the response returned.
659 */
660TEST_P(RadioMessagingTest, deleteSmsOnRuim) {
661 LOG(DEBUG) << "deleteSmsOnRuim";
662 serial = GetRandomSerialNumber();
663 int index = 1;
664
665 // Create a CdmaSmsAddress
666 CdmaSmsAddress cdmaSmsAddress;
667 cdmaSmsAddress.digitMode = CdmaSmsAddress::DIGIT_MODE_FOUR_BIT;
668 cdmaSmsAddress.isNumberModeDataNetwork = false;
669 cdmaSmsAddress.numberType = CdmaSmsAddress::NUMBER_TYPE_UNKNOWN;
670 cdmaSmsAddress.numberPlan = CdmaSmsAddress::NUMBER_PLAN_UNKNOWN;
671 cdmaSmsAddress.digits = (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
672
673 // Create a CdmaSmsSubAddress
674 CdmaSmsSubaddress cdmaSmsSubaddress;
675 cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddress::SUBADDRESS_TYPE_NSAP;
676 cdmaSmsSubaddress.odd = false;
677 cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
678
679 // Create a CdmaSmsMessage
680 CdmaSmsMessage cdmaSmsMessage;
681 cdmaSmsMessage.teleserviceId = 4098;
682 cdmaSmsMessage.isServicePresent = false;
683 cdmaSmsMessage.serviceCategory = 0;
684 cdmaSmsMessage.address = cdmaSmsAddress;
685 cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
686 cdmaSmsMessage.bearerData =
687 (std::vector<uint8_t>){15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
688
689 // Create a CdmaSmsWriteArgs
690 CdmaSmsWriteArgs cdmaSmsWriteArgs;
691 cdmaSmsWriteArgs.status = CdmaSmsWriteArgs::STATUS_REC_UNREAD;
692 cdmaSmsWriteArgs.message = cdmaSmsMessage;
693
694 radio_messaging->deleteSmsOnRuim(serial, index);
695
696 EXPECT_EQ(std::cv_status::no_timeout, wait());
697 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
698 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
699
700 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
701 ASSERT_TRUE(CheckAnyOfErrors(
702 radioRsp_messaging->rspInfo.error,
703 {RadioError::NONE, RadioError::INVALID_ARGUMENTS, RadioError::INVALID_MODEM_STATE,
704 RadioError::MODEM_ERR, RadioError::NO_SUCH_ENTRY, RadioError::SIM_ABSENT},
705 CHECK_GENERAL_ERROR));
706 }
707 LOG(DEBUG) << "deleteSmsOnRuim finished";
708}
709
710/*
711 * Test IRadioMessaging.reportSmsMemoryStatus() for the response returned.
712 */
713TEST_P(RadioMessagingTest, reportSmsMemoryStatus) {
714 LOG(DEBUG) << "reportSmsMemoryStatus";
715 serial = GetRandomSerialNumber();
716 bool available = true;
717
718 radio_messaging->reportSmsMemoryStatus(serial, available);
719
720 EXPECT_EQ(std::cv_status::no_timeout, wait());
721 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_messaging->rspInfo.type);
722 EXPECT_EQ(serial, radioRsp_messaging->rspInfo.serial);
723
724 if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
725 ASSERT_TRUE(CheckAnyOfErrors(radioRsp_messaging->rspInfo.error,
726 {RadioError::INVALID_ARGUMENTS, RadioError::INVALID_STATE,
727 RadioError::MODEM_ERR, RadioError::SIM_ABSENT},
728 CHECK_GENERAL_ERROR));
729 }
730 LOG(DEBUG) << "reportSmsMemoryStatus finished";
731}