159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq/* 259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * Copyright (C) 2017 The Android Open Source Project 359bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * 459bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * Licensed under the Apache License, Version 2.0 (the "License"); 559bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * you may not use this file except in compliance with the License. 659bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * You may obtain a copy of the License at 759bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * 859bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * http://www.apache.org/licenses/LICENSE-2.0 959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * 1059bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * Unless required by applicable law or agreed to in writing, software 1159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * distributed under the License is distributed on an "AS IS" BASIS, 1259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1359bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * See the License for the specific language governing permissions and 1459bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * limitations under the License. 1559bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq */ 1659bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 1787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma#include <radio_hidl_hal_utils.h> 1859bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 1959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoqusing namespace ::android::hardware::radio::V1_0; 2059bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 2159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq/* 2259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * Test IRadio.sendEnvelope() for the response returned. 2359bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq */ 2459bac4dba352336862b699e85dc71c9e7ab1f6f2ShuoqTEST_F(RadioHidlTest, sendEnvelope) { 25fcc61188827e1472965b36041c29b80cbe4079basqian int serial = GetRandomSerialNumber(); 2659bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 27fcc61188827e1472965b36041c29b80cbe4079basqian // Test with sending empty string 28fcc61188827e1472965b36041c29b80cbe4079basqian std::string content = ""; 2959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 30fcc61188827e1472965b36041c29b80cbe4079basqian radio->sendEnvelope(serial, content); 3159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 32fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(std::cv_status::no_timeout, wait()); 33fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 34fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(serial, radioRsp->rspInfo.serial); 3559bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 36fcc61188827e1472965b36041c29b80cbe4079basqian if (cardStatus.cardState == CardState::ABSENT) { 3710a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl; 382ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe ASSERT_TRUE(CheckGeneralError() || 3910a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS || 4010a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian radioRsp->rspInfo.error == RadioError::NONE); 41fcc61188827e1472965b36041c29b80cbe4079basqian } 4259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 43fcc61188827e1472965b36041c29b80cbe4079basqian // Test with sending random string 44fcc61188827e1472965b36041c29b80cbe4079basqian serial = GetRandomSerialNumber(); 45fcc61188827e1472965b36041c29b80cbe4079basqian content = "0"; 4659bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 47fcc61188827e1472965b36041c29b80cbe4079basqian radio->sendEnvelope(serial, content); 4859bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 49fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(std::cv_status::no_timeout, wait()); 50fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 51fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(serial, radioRsp->rspInfo.serial); 5259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 53fcc61188827e1472965b36041c29b80cbe4079basqian if (cardStatus.cardState == CardState::ABSENT) { 5410a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl; 552ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe ASSERT_TRUE(CheckGeneralError() || 5610a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS || 5710a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian radioRsp->rspInfo.error == RadioError::NONE); 58fcc61188827e1472965b36041c29b80cbe4079basqian } 5959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq} 6059bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 6159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq/* 6259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * Test IRadio.sendTerminalResponseToSim() for the response returned. 6359bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq */ 6459bac4dba352336862b699e85dc71c9e7ab1f6f2ShuoqTEST_F(RadioHidlTest, sendTerminalResponseToSim) { 65fcc61188827e1472965b36041c29b80cbe4079basqian int serial = GetRandomSerialNumber(); 6659bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 67fcc61188827e1472965b36041c29b80cbe4079basqian // Test with sending empty string 68fcc61188827e1472965b36041c29b80cbe4079basqian std::string commandResponse = ""; 6959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 70fcc61188827e1472965b36041c29b80cbe4079basqian radio->sendTerminalResponseToSim(serial, commandResponse); 7159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 72fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(std::cv_status::no_timeout, wait()); 73fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 74fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(serial, radioRsp->rspInfo.serial); 7559bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 76fcc61188827e1472965b36041c29b80cbe4079basqian if (cardStatus.cardState == CardState::ABSENT) { 7710a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl; 7810a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian ASSERT_TRUE(CheckGeneralError() || 7910a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS || 8010a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian radioRsp->rspInfo.error == RadioError::NONE); 81fcc61188827e1472965b36041c29b80cbe4079basqian } 8259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 83fcc61188827e1472965b36041c29b80cbe4079basqian serial = GetRandomSerialNumber(); 8459bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 85fcc61188827e1472965b36041c29b80cbe4079basqian // Test with sending random string 86fcc61188827e1472965b36041c29b80cbe4079basqian commandResponse = "0"; 8759bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 88fcc61188827e1472965b36041c29b80cbe4079basqian radio->sendTerminalResponseToSim(serial, commandResponse); 8959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 90fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(std::cv_status::no_timeout, wait()); 91fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 92fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(serial, radioRsp->rspInfo.serial); 93fcc61188827e1472965b36041c29b80cbe4079basqian 94fcc61188827e1472965b36041c29b80cbe4079basqian if (cardStatus.cardState == CardState::ABSENT) { 9510a619ab6d9c8d3b0d1a82aa96639cf1bd8029bcsqian std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl; 962ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe ASSERT_TRUE(CheckGeneralError() || 972ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS); 98fcc61188827e1472965b36041c29b80cbe4079basqian } 9959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq} 10059bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 10159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq/* 10259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * Test IRadio.handleStkCallSetupRequestFromSim() for the response returned. 10359bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq */ 10459bac4dba352336862b699e85dc71c9e7ab1f6f2ShuoqTEST_F(RadioHidlTest, handleStkCallSetupRequestFromSim) { 105fcc61188827e1472965b36041c29b80cbe4079basqian int serial = GetRandomSerialNumber(); 106fcc61188827e1472965b36041c29b80cbe4079basqian bool accept = false; 107fcc61188827e1472965b36041c29b80cbe4079basqian 108fcc61188827e1472965b36041c29b80cbe4079basqian radio->handleStkCallSetupRequestFromSim(serial, accept); 109fcc61188827e1472965b36041c29b80cbe4079basqian 110fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(std::cv_status::no_timeout, wait()); 111fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 112fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(serial, radioRsp->rspInfo.serial); 113fcc61188827e1472965b36041c29b80cbe4079basqian 114fcc61188827e1472965b36041c29b80cbe4079basqian if (cardStatus.cardState == CardState::ABSENT) { 1152ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe ASSERT_TRUE(CheckGeneralError() || 1162ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe radioRsp->rspInfo.error == RadioError::NONE || 117fcc61188827e1472965b36041c29b80cbe4079basqian radioRsp->rspInfo.error == RadioError::MODEM_ERR || 1182ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS); 119fcc61188827e1472965b36041c29b80cbe4079basqian } 12059bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq} 12159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 12259bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq/* 12359bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq * Test IRadio.reportStkServiceIsRunning() for the response returned. 12459bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq */ 12559bac4dba352336862b699e85dc71c9e7ab1f6f2ShuoqTEST_F(RadioHidlTest, reportStkServiceIsRunning) { 126fcc61188827e1472965b36041c29b80cbe4079basqian int serial = GetRandomSerialNumber(); 12759bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 128fcc61188827e1472965b36041c29b80cbe4079basqian radio->reportStkServiceIsRunning(serial); 12959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 130fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(std::cv_status::no_timeout, wait()); 131fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 132fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(serial, radioRsp->rspInfo.serial); 13359bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 134fcc61188827e1472965b36041c29b80cbe4079basqian if (cardStatus.cardState == CardState::ABSENT) { 1352ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe ASSERT_TRUE(CheckGeneralError() || 1362ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe radioRsp->rspInfo.error == RadioError::NONE); 137fcc61188827e1472965b36041c29b80cbe4079basqian } 13859bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq} 13959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 14059bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq/* 14187bde3312ab61714a3469f59084b40c46a6627deYuexi Ma * Test IRadio.sendEnvelopeWithStatus() for the response returned with empty 14287bde3312ab61714a3469f59084b40c46a6627deYuexi Ma * string. 14359bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq */ 14459bac4dba352336862b699e85dc71c9e7ab1f6f2ShuoqTEST_F(RadioHidlTest, sendEnvelopeWithStatus) { 145fcc61188827e1472965b36041c29b80cbe4079basqian int serial = GetRandomSerialNumber(); 14659bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 147fcc61188827e1472965b36041c29b80cbe4079basqian // Test with sending empty string 148fcc61188827e1472965b36041c29b80cbe4079basqian std::string contents = ""; 14959bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 150fcc61188827e1472965b36041c29b80cbe4079basqian radio->sendEnvelopeWithStatus(serial, contents); 15159bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 152fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(std::cv_status::no_timeout, wait()); 153fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 154fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(serial, radioRsp->rspInfo.serial); 15559bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 156fcc61188827e1472965b36041c29b80cbe4079basqian if (cardStatus.cardState == CardState::ABSENT) { 1572ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe ASSERT_TRUE(CheckGeneralError() || 1582ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS); 159fcc61188827e1472965b36041c29b80cbe4079basqian } 16059bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 161fcc61188827e1472965b36041c29b80cbe4079basqian // Test with sending random string 162fcc61188827e1472965b36041c29b80cbe4079basqian serial = GetRandomSerialNumber(); 163fcc61188827e1472965b36041c29b80cbe4079basqian contents = "0"; 16459bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 165fcc61188827e1472965b36041c29b80cbe4079basqian radio->sendEnvelopeWithStatus(serial, contents); 16659bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 167fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(std::cv_status::no_timeout, wait()); 168fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 169fcc61188827e1472965b36041c29b80cbe4079basqian EXPECT_EQ(serial, radioRsp->rspInfo.serial); 17059bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq 171fcc61188827e1472965b36041c29b80cbe4079basqian if (cardStatus.cardState == CardState::ABSENT) { 1722ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe ASSERT_TRUE(CheckGeneralError() || 1732ab0ec062608ea0ee03be67877ddb1d12e8eaea0Sanket Padawe radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS); 174fcc61188827e1472965b36041c29b80cbe4079basqian } 17559bac4dba352336862b699e85dc71c9e7ab1f6f2Shuoq} 176