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