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