radio_hidl_hal_sms.cpp revision 87bde3312ab61714a3469f59084b40c46a6627de
1064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
2064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Copyright (C) 2017 The Android Open Source Project
3064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq *
4064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Licensed under the Apache License, Version 2.0 (the "License");
5064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * you may not use this file except in compliance with the License.
6064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * You may obtain a copy of the License at
7064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq *
8064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq *      http://www.apache.org/licenses/LICENSE-2.0
9064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq *
10064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Unless required by applicable law or agreed to in writing, software
11064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * distributed under the License is distributed on an "AS IS" BASIS,
12064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * See the License for the specific language governing permissions and
14064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * limitations under the License.
15064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
16064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
1787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma#include <radio_hidl_hal_utils.h>
18064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
19064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoqusing namespace ::android::hardware::radio::V1_0;
20064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
21064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
22064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendSms() for the response returned.
23064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
24064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendSms) {
2587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
2687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  GsmSmsMessage msg;
2787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.smscPdu = "";
2887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.pdu = "01000b916105770203f3000006d4f29c3e9b01";
2987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
3087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->sendSms(++serial, msg);
3187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
3287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
3387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
3487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
3587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
3687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
3787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
3887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
3987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::SYSTEM_ERR ||
4087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INVALID_STATE);
4187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    EXPECT_EQ(0, radioRsp->sendSmsResult.errorCode);
4287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
43064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
44064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
45064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
46064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendSMSExpectMore() for the response returned.
47064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
48064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendSMSExpectMore) {
4987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
5087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  GsmSmsMessage msg;
5187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.smscPdu = "";
5287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.pdu = "01000b916105770203f3000006d4f29c3e9b01";
5387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
5487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->sendSMSExpectMore(++serial, msg);
5587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
5687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // TODO(shuoq): add more test for this API when inserted sim card is
5787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // considered
5887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
5987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
6087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
6187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
6287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
6387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
6487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
6587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
6687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::SYSTEM_ERR ||
6787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INVALID_STATE);
6887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
69064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
70064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
71064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
72064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeLastIncomingGsmSms() for the response returned.
73064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
74064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeLastIncomingGsmSms) {
7587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
7687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  bool success = true;
77064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
7887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->acknowledgeLastIncomingGsmSms(
7987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      ++serial, success, SmsAcknowledgeFailCause::MEMORY_CAPACITY_EXCEEDED);
80064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
8187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
8287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
8387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
84064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
8587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
8687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    EXPECT_EQ(RadioError::INVALID_ARGUMENTS, radioRsp->rspInfo.error);
8787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
88064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
89064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
90064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
91064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeIncomingGsmSmsWithPdu() for the response returned.
92064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
93064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeIncomingGsmSmsWithPdu) {
9487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
9587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  bool success = true;
9687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  std::string ackPdu = "";
97064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
9887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->acknowledgeIncomingGsmSmsWithPdu(++serial, success, ackPdu);
99064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
10087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
10187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
10287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
103064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
10487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
10587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    // TODO(shuoq): Will add error check when we know the expected error from QC
10687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
107064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
108064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
109064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
110064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendCdmaSms() for the response returned.
111064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
112064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendCdmaSms) {
11387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
11487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
11587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsAddress
11687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsAddress cdmaSmsAddress;
11787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
11887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
11987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
12087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
12187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.digits =
12287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
12387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
12487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsSubAddress
12587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsSubaddress cdmaSmsSubaddress;
12687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
12787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.odd = false;
12887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
12987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
13087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsMessage
13187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  android::hardware::radio::V1_0::CdmaSmsMessage cdmaSmsMessage;
13287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.teleserviceId = 4098;
13387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.isServicePresent = false;
13487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.serviceCategory = 0;
13587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.address = cdmaSmsAddress;
13687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
13787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.bearerData = (std::vector<uint8_t>){
13887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
13987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
14087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->sendCdmaSms(++serial, cdmaSmsMessage);
14187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
14287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
14387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
14487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
14587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
14687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
14787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
14887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
14987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::SYSTEM_ERR ||
15087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INVALID_STATE);
15187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
152064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
153064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
154064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
155064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.acknowledgeLastIncomingCdmaSms() for the response returned.
156064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
157064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, acknowledgeLastIncomingCdmaSms) {
15887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
159064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
16087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsAck
16187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsAck cdmaSmsAck;
16287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAck.errorClass = CdmaSmsErrorClass::NO_ERROR;
16387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAck.smsCauseCode = 1;
164064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
16587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->acknowledgeLastIncomingCdmaSms(++serial, cdmaSmsAck);
166064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
16787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
16887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
16987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
170064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
17187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
17287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    EXPECT_EQ(RadioError::NO_SMS_TO_ACK, radioRsp->rspInfo.error);
17387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
174064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
175064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
176064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
177064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.sendImsSms() for the response returned.
178064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
179064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, sendImsSms) {
18087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 1;
18187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
18287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsAddress
18387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsAddress cdmaSmsAddress;
18487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
18587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
18687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
18787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
18887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.digits =
18987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
19087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
19187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsSubAddress
19287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsSubaddress cdmaSmsSubaddress;
19387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
19487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.odd = false;
19587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
19687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
19787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsMessage
19887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsMessage cdmaSmsMessage;
19987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.teleserviceId = 4098;
20087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.isServicePresent = false;
20187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.serviceCategory = 0;
20287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.address = cdmaSmsAddress;
20387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
20487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.bearerData = (std::vector<uint8_t>){
20587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
20687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
20787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Creata an ImsSmsMessage
20887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  ImsSmsMessage msg;
20987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.tech = RadioTechnologyFamily::THREE_GPP2;
21087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.retry = false;
21187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.messageRef = 0;
21287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.cdmaMessage = (std::vector<CdmaSmsMessage>){cdmaSmsMessage};
21387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  msg.gsmMessage = (std::vector<GsmSmsMessage>){};
21487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
21587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->sendImsSms(serial, msg);
21687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
21787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
21887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
21987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
22087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
22187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
22287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    EXPECT_EQ(RadioError::INVALID_ARGUMENTS, radioRsp->rspInfo.error);
22387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
224064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
225064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
226064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
227064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.getSmscAddress() for the response returned.
228064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
229064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, getSmscAddress) {
23087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
231064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
23287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->getSmscAddress(++serial);
233064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
23487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
23587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
23687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
237064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
23887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
23987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
24087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
24187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::SYSTEM_ERR ||
24287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INVALID_STATE ||
24387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INVALID_MODEM_STATE);
24487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
245064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
246064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
247064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
248064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.setSmscAddress() for the response returned.
249064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
250064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, setSmscAddress) {
25187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
25287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  hidl_string address = hidl_string("smscAddress");
253064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
25487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->setSmscAddress(++serial, address);
255064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
25687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
25787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
25887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
259064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
26087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
26187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    EXPECT_EQ(RadioError::INVALID_SMS_FORMAT, radioRsp->rspInfo.error);
26287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
263064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
264064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
265064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
266064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.writeSmsToSim() for the response returned.
267064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
268064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, writeSmsToSim) {
26987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
27087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  SmsWriteArgs smsWriteArgs;
27187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  smsWriteArgs.status = SmsWriteArgsStatus::REC_UNREAD;
27287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  smsWriteArgs.smsc = "";
27387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  smsWriteArgs.pdu = "01000b916105770203f3000006d4f29c3e9b01";
27487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
27587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->writeSmsToSim(++serial, smsWriteArgs);
27687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
27787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
27887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
27987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
28087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
28187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
28287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
28387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
28487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INVALID_MODEM_STATE ||
28587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INTERNAL_ERR);
28687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
287064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
288064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
289064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
290064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.deleteSmsOnSim() for the response returned.
291064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
292064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, deleteSmsOnSim) {
29387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
29487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int index = 1;
295064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
29687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->deleteSmsOnSim(++serial, index);
297064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
29887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
29987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
30087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
301064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
30287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
30387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    EXPECT_EQ(RadioError::INVALID_SMS_FORMAT, radioRsp->rspInfo.error);
30487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
30587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
30687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::SYSTEM_ERR);
30787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
308064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
309064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
310064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
311064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.writeSmsToRuim() for the response returned.
312064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
313064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, writeSmsToRuim) {
31487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
31587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
31687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsAddress
31787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsAddress cdmaSmsAddress;
31887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
31987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
32087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
32187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
32287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.digits =
32387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
32487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
32587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsSubAddress
32687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsSubaddress cdmaSmsSubaddress;
32787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
32887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.odd = false;
32987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
33087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
33187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsMessage
33287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsMessage cdmaSmsMessage;
33387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.teleserviceId = 4098;
33487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.isServicePresent = false;
33587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.serviceCategory = 0;
33687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.address = cdmaSmsAddress;
33787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
33887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.bearerData = (std::vector<uint8_t>){
33987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
34087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
34187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsWriteArgs
34287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsWriteArgs cdmaSmsWriteArgs;
34387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsWriteArgs.status = CdmaSmsWriteArgsStatus::REC_UNREAD;
34487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsWriteArgs.message = cdmaSmsMessage;
34587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
34687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->writeSmsToRuim(++serial, cdmaSmsWriteArgs);
34787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
34887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
34987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
35087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
35187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
35287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
35387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
35487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
35587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INVALID_MODEM_STATE ||
35687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INTERNAL_ERR);
35787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
358064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
359064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
360064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
361064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.deleteSmsOnRuim() for the response returned.
362064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
363064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, deleteSmsOnRuim) {
36487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
36587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int index = 1;
36687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
36787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsAddress
36887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsAddress cdmaSmsAddress;
36987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.digitMode = CdmaSmsDigitMode::FOUR_BIT;
37087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberMode = CdmaSmsNumberMode::NOT_DATA_NETWORK;
37187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberType = CdmaSmsNumberType::UNKNOWN;
37287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.numberPlan = CdmaSmsNumberPlan::UNKNOWN;
37387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsAddress.digits =
37487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      (std::vector<uint8_t>){11, 1, 6, 5, 10, 7, 7, 2, 10, 3, 10, 3};
37587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
37687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsSubAddress
37787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsSubaddress cdmaSmsSubaddress;
37887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.subaddressType = CdmaSmsSubaddressType::NSAP;
37987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.odd = false;
38087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsSubaddress.digits = (std::vector<uint8_t>){};
38187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
38287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsMessage
38387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsMessage cdmaSmsMessage;
38487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.teleserviceId = 4098;
38587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.isServicePresent = false;
38687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.serviceCategory = 0;
38787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.address = cdmaSmsAddress;
38887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.subAddress = cdmaSmsSubaddress;
38987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsMessage.bearerData = (std::vector<uint8_t>){
39087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma      15, 0, 3, 32, 3, 16, 1, 8, 16, 53, 76, 68, 6, 51, 106, 0};
39187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
39287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  // Create a CdmaSmsWriteArgs
39387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  CdmaSmsWriteArgs cdmaSmsWriteArgs;
39487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsWriteArgs.status = CdmaSmsWriteArgsStatus::REC_UNREAD;
39587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  cdmaSmsWriteArgs.message = cdmaSmsMessage;
39687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
39787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->deleteSmsOnRuim(++serial, index);
39887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
39987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
40087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
40187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
40287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma
40387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
40487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
40587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
40687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::SYSTEM_ERR);
40787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
408064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
409064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
410064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq/*
411064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq * Test IRadio.reportSmsMemoryStatus() for the response returned.
412064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq */
413064ee51e0793ab7c8ad8cc440843c995f145e0a4ShuoqTEST_F(RadioHidlTest, reportSmsMemoryStatus) {
41487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  int serial = 0;
41587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  bool available = true;
416064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
41787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  radio->reportSmsMemoryStatus(++serial, available);
418064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
41987bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(std::cv_status::no_timeout, wait());
42087bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
42187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  EXPECT_EQ(serial, radioRsp->rspInfo.serial);
422064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq
42387bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  if (cardStatus.cardState == CardState::ABSENT) {
42487bde3312ab61714a3469f59084b40c46a6627deYuexi Ma    ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
42587bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::MODEM_ERR ||
42687bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::SYSTEM_ERR ||
42787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma                radioRsp->rspInfo.error == RadioError::INVALID_STATE);
42887bde3312ab61714a3469f59084b40c46a6627deYuexi Ma  }
429064ee51e0793ab7c8ad8cc440843c995f145e0a4Shuoq}
430