14547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
24547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Copyright (C) 2017 The Android Open Source Project
34547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran *
44547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Licensed under the Apache License, Version 2.0 (the "License");
54547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * you may not use this file except in compliance with the License.
64547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * You may obtain a copy of the License at
74547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran *
84547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran *      http://www.apache.org/licenses/LICENSE-2.0
94547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran *
104547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Unless required by applicable law or agreed to in writing, software
114547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * distributed under the License is distributed on an "AS IS" BASIS,
124547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * See the License for the specific language governing permissions and
144547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * limitations under the License.
154547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
164547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
174547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran#include <radio_hidl_hal_utils_v1_2.h>
184547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran#include <vector>
194547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
204547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran#define ASSERT_OK(ret) ASSERT_TRUE(ret.isOk())
214547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
224547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
234547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() for the response returned.
244547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
254547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan) {
26788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
274547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
284547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
294547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
304547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
314547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
324547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
3379bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
3479bafb943bb53e48351cd159724164c7526976c4sqian        .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}};
354547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
364547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
374547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
384547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
394547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
404547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
414547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
424547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan, rspInfo.error = %s\n", toString(radioRsp_v1_2->rspInfo.error).c_str());
4379bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
44d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::SIM_ABSENT}));
4579bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
46d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
474547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
484547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
494547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
504547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
514547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with invalid specifier.
524547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
534547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_InvalidArgument) {
54788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
554547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
5679bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {.type = ScanType::ONE_SHOT,
5779bafb943bb53e48351cd159724164c7526976c4sqian                                                                    .interval = 60};
584547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
594547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
604547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
614547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
624547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
634547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
644547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
654547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidArgument, rspInfo.error = %s\n",
664547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
6779bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
687fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
69d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
7079bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
717fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(
72d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie            CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
734547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
744547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
754547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
764547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
774547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with invalid interval (lower boundary).
784547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
794547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_InvalidInterval1) {
80788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
814547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
824547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
834547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
844547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
854547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
864547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
8779bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
884547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .type = ScanType::ONE_SHOT,
894547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .interval = 4,
904547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .specifiers = {specifier},
914547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .maxSearchTime = 60,
924547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResults = false,
934547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResultsPeriodicity = 1};
944547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
954547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
964547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
974547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
984547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
994547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
1004547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1014547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidInterval1, rspInfo.error = %s\n",
1024547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
10379bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
104d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
105d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
10679bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
1077fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(
108d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie            CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
1094547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
1104547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
1114547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1124547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
1134547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with invalid interval (upper boundary).
1144547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
1154547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_InvalidInterval2) {
116788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
1174547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1184547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
1194547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
1204547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
1214547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
1224547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
12379bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
1244547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .type = ScanType::ONE_SHOT,
1254547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .interval = 301,
1264547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .specifiers = {specifier},
1274547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .maxSearchTime = 60,
1284547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResults = false,
1294547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResultsPeriodicity = 1};
1304547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1314547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
1324547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
1334547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
1344547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
1354547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
1364547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1374547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidInterval2, rspInfo.error = %s\n",
1384547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
13979bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
140d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
141d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
14279bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
1437fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(
144d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie            CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
1454547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
1464547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
1474547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1484547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
1494547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with invalid max search time (lower boundary).
1504547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
1514547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_InvalidMaxSearchTime1) {
152788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
1534547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1544547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
1554547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
1564547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
1574547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
1584547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
15979bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
1604547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .type = ScanType::ONE_SHOT,
1614547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .interval = 60,
1624547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .specifiers = {specifier},
1634547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .maxSearchTime = 59,
1644547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResults = false,
1654547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResultsPeriodicity = 1};
1664547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1674547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
1684547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
1694547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
1704547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
1714547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
1724547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1734547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidMaxSearchTime1, rspInfo.error = %s\n",
1744547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
17579bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
176d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
177d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
17879bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
1797fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(
180d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie            CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
1814547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
1824547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
1834547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1844547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
1854547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with invalid max search time (upper boundary).
1864547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
1874547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_InvalidMaxSearchTime2) {
188788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
1894547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
1904547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
1914547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
1924547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
1934547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
1944547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
19579bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
1964547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .type = ScanType::ONE_SHOT,
1974547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .interval = 60,
1984547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .specifiers = {specifier},
1994547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .maxSearchTime = 3601,
2004547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResults = false,
2014547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResultsPeriodicity = 1};
2024547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2034547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
2044547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
2054547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
2064547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
2074547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
2084547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2094547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidMaxSearchTime2, rspInfo.error = %s\n",
2104547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
21179bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
212d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
213d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
21479bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
2157fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(
216d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie            CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
2174547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
2184547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
2194547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2204547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
2214547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with invalid periodicity (lower boundary).
2224547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
2234547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_InvalidPeriodicity1) {
224788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
2254547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2264547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
2274547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
2284547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
2294547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
2304547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
23179bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
2324547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .type = ScanType::ONE_SHOT,
2334547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .interval = 60,
2344547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .specifiers = {specifier},
2354547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .maxSearchTime = 600,
2364547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResults = false,
2374547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResultsPeriodicity = 0};
2384547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2394547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
2404547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
2414547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
2424547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
2434547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
2444547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2454547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidPeriodicity1, rspInfo.error = %s\n",
2464547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
24779bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
248d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
249d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
25079bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
2517fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(
252d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie            CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
2534547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
2544547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
2554547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2564547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
2574547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with invalid periodicity (upper boundary).
2584547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
2594547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_InvalidPeriodicity2) {
260788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
2614547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2624547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
2634547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
2644547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
2654547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
2664547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
26779bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
2684547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .type = ScanType::ONE_SHOT,
2694547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .interval = 60,
2704547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .specifiers = {specifier},
2714547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .maxSearchTime = 600,
2724547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResults = false,
2734547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResultsPeriodicity = 11};
2744547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2754547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
2764547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
2774547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
2784547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
2794547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
2804547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2814547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidPeriodicity2, rspInfo.error = %s\n",
2824547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
28379bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
284d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
285d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
28679bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
2877fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(
288d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie            CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
2894547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
2904547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
2914547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2924547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
2934547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with valid periodicity
2944547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
2954547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_GoodRequest1) {
296788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
2974547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
2984547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
2994547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
3004547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
3014547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
3024547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
30379bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
3044547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .type = ScanType::ONE_SHOT,
3054547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .interval = 60,
3064547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .specifiers = {specifier},
3074547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .maxSearchTime = 600,
3084547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResults = false,
3094547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResultsPeriodicity = 10};
3104547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
3114547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
3124547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
3134547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
3144547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
3154547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
3164547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
3174547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidArgument, rspInfo.error = %s\n",
3184547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
31979bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
3207fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
321d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::NONE, RadioError::SIM_ABSENT}));
32279bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
323d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
3244547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
3254547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
3264547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
3274547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran/*
3284547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran * Test IRadio.startNetworkScan() with valid periodicity and plmns
3294547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran */
3304547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj SasindranTEST_F(RadioHidlTest_v1_2, startNetworkScan_GoodRequest2) {
331788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
3324547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
3334547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    RadioAccessSpecifier specifier = {
3344547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .radioAccessNetwork = RadioAccessNetworks::GERAN,
3354547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480},
3364547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .channels = {1,2}};
3374547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
33879bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::NetworkScanRequest request = {
3394547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .type = ScanType::ONE_SHOT,
3404547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .interval = 60,
3414547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .specifiers = {specifier},
3424547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .maxSearchTime = 600,
3434547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResults = false,
3444547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .incrementalResultsPeriodicity = 10,
3454547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran        .mccMncs = {"310410"}};
3464547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
3474547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    Return<void> res = radio_v1_2->startNetworkScan_1_2(serial, request);
3484547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ASSERT_OK(res);
3494547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(std::cv_status::no_timeout, wait());
3504547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
3514547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
3524547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran
3534547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    ALOGI("startNetworkScan_InvalidArgument, rspInfo.error = %s\n",
3544547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran          toString(radioRsp_v1_2->rspInfo.error).c_str());
35579bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
3567fe9365e6fb10533d75000eddd5287ca6408f897sqian        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
357d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie                                     {RadioError::NONE, RadioError::SIM_ABSENT}));
35879bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
359d19ee31e6c9ed0fb9154fd426a08ad41459f1958Cassie        ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
3604547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran    }
3614547419e6c0615b06b5b74832f24ca4027fe8e75Sooraj Sasindran}
3628bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
3638bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
3648bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setIndicationFilter_1_2()
3658bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
3668bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setIndicationFilter_1_2) {
367788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
3688bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
36979bafb943bb53e48351cd159724164c7526976c4sqian    Return<void> res = radio_v1_2->setIndicationFilter_1_2(
37079bafb943bb53e48351cd159724164c7526976c4sqian        serial, static_cast<int>(::android::hardware::radio::V1_2::IndicationFilter::ALL));
3718bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
3728bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
3738bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
3748bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
3758bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
3768bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setIndicationFilter_1_2, rspInfo.error = %s\n",
3778bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
3788bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
3798bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
3808bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
3818bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
3828bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setSignalStrengthReportingCriteria() with invalid hysteresisDb
3838bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
3848bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_invalidHysteresisDb) {
385788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
3868bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
3878bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    Return<void> res = radio_v1_2->setSignalStrengthReportingCriteria(
3888bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach        serial, 5000,
3898bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach        10,  // hysteresisDb too large given threshold list deltas
39079bafb943bb53e48351cd159724164c7526976c4sqian        {-109, -103, -97, -89}, ::android::hardware::radio::V1_2::AccessNetwork::GERAN);
3918bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
3928bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
3938bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
3948bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
3958bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
3968bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setSignalStrengthReportingCriteria_invalidHysteresisDb, rspInfo.error = %s\n",
3978bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
3988bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
3998bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
4008bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4018bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
4028bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setSignalStrengthReportingCriteria() with empty parameters
4038bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
4048bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_EmptyParams) {
405788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
4068bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
40779bafb943bb53e48351cd159724164c7526976c4sqian    Return<void> res = radio_v1_2->setSignalStrengthReportingCriteria(
40879bafb943bb53e48351cd159724164c7526976c4sqian        serial, 0, 0, {}, ::android::hardware::radio::V1_2::AccessNetwork::GERAN);
4098bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
4108bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
4118bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
4128bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
4138bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4148bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setSignalStrengthReportingCriteria_EmptyParams, rspInfo.error = %s\n",
4158bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
4168bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
4178bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
4188bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4198bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
4208bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setSignalStrengthReportingCriteria() for GERAN
4218bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
4228bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_Geran) {
423788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
4248bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4258bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    Return<void> res = radio_v1_2->setSignalStrengthReportingCriteria(
42679bafb943bb53e48351cd159724164c7526976c4sqian        serial, 5000, 2, {-109, -103, -97, -89},
42779bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::AccessNetwork::GERAN);
4288bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
4298bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
4308bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
4318bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
4328bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4338bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setSignalStrengthReportingCriteria_Geran, rspInfo.error = %s\n",
4348bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
4358bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
4368bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
4378bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4388bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
4398bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setSignalStrengthReportingCriteria() for UTRAN
4408bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
4418bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_Utran) {
442788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
4438bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4448bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    Return<void> res = radio_v1_2->setSignalStrengthReportingCriteria(
44579bafb943bb53e48351cd159724164c7526976c4sqian        serial, 5000, 2, {-110, -97, -73, -49, -25},
44679bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::AccessNetwork::UTRAN);
4478bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
4488bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
4498bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
4508bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
4518bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4528bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setSignalStrengthReportingCriteria_Utran, rspInfo.error = %s\n",
4538bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
4548bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
4558bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
4568bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4578bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
4588bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setSignalStrengthReportingCriteria() for EUTRAN
4598bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
4608bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_Eutran) {
461788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
4628bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4638bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    Return<void> res = radio_v1_2->setSignalStrengthReportingCriteria(
46479bafb943bb53e48351cd159724164c7526976c4sqian        serial, 5000, 2, {-140, -128, -118, -108, -98, -44},
46579bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::AccessNetwork::EUTRAN);
4668bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
4678bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
4688bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
4698bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
4708bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4718bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setSignalStrengthReportingCriteria_Eutran, rspInfo.error = %s\n",
4728bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
4738bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
4748bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
4758bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4768bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
4778bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setSignalStrengthReportingCriteria() for CDMA2000
4788bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
4798bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setSignalStrengthReportingCriteria_Cdma2000) {
480788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
4818bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4828bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    Return<void> res = radio_v1_2->setSignalStrengthReportingCriteria(
48379bafb943bb53e48351cd159724164c7526976c4sqian        serial, 5000, 2, {-105, -90, -75, -65},
48479bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::AccessNetwork::CDMA2000);
4858bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
4868bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
4878bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
4888bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
4898bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4908bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setSignalStrengthReportingCriteria_Cdma2000, rspInfo.error = %s\n",
4918bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
4928bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
4938bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
4948bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
4958bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
4968bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setLinkCapacityReportingCriteria() invalid hysteresisDlKbps
4978bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
4988bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setLinkCapacityReportingCriteria_invalidHysteresisDlKbps) {
499788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
5008bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5018bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    Return<void> res = radio_v1_2->setLinkCapacityReportingCriteria(
5028bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach        serial, 5000,
5038bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach        5000,  // hysteresisDlKbps too big for thresholds delta
50479bafb943bb53e48351cd159724164c7526976c4sqian        100, {1000, 5000, 10000, 20000}, {500, 1000, 5000, 10000},
50579bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::AccessNetwork::GERAN);
5068bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
5078bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
5088bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
5098bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
5108bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5118bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setLinkCapacityReportingCriteria_invalidHysteresisDlKbps, rspInfo.error = %s\n",
5128bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
5138bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
5148bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
5158bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5168bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
5178bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setLinkCapacityReportingCriteria() invalid hysteresisUlKbps
5188bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
5198bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setLinkCapacityReportingCriteria_invalidHysteresisUlKbps) {
520788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
5218bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5228bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    Return<void> res = radio_v1_2->setLinkCapacityReportingCriteria(
5238bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach        serial, 5000, 500,
5248bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach        1000,  // hysteresisUlKbps too big for thresholds delta
52579bafb943bb53e48351cd159724164c7526976c4sqian        {1000, 5000, 10000, 20000}, {500, 1000, 5000, 10000},
52679bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::AccessNetwork::GERAN);
5278bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
5288bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
5298bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
5308bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
5318bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5328bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setLinkCapacityReportingCriteria_invalidHysteresisUlKbps, rspInfo.error = %s\n",
5338bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
5348bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::INVALID_ARGUMENTS}));
5358bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
5368bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5378bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
5388bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setLinkCapacityReportingCriteria() empty params
5398bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
5408bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setLinkCapacityReportingCriteria_emptyParams) {
541788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
5428bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
54379bafb943bb53e48351cd159724164c7526976c4sqian    Return<void> res = radio_v1_2->setLinkCapacityReportingCriteria(
54479bafb943bb53e48351cd159724164c7526976c4sqian        serial, 0, 0, 0, {}, {}, ::android::hardware::radio::V1_2::AccessNetwork::GERAN);
5458bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
5468bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
5478bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
5488bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
5498bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5508bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setLinkCapacityReportingCriteria_emptyParams, rspInfo.error = %s\n",
5518bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
5528bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
5538bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
5548bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5558bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach/*
5568bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach * Test IRadio.setLinkCapacityReportingCriteria() GERAN
5578bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach */
5588bdc4e04e21f3fa41109878e45006c00897b9ef8Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, setLinkCapacityReportingCriteria_Geran) {
559788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
5608bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5618bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    Return<void> res = radio_v1_2->setLinkCapacityReportingCriteria(
5628bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach        serial, 5000, 500, 100, {1000, 5000, 10000, 20000}, {500, 1000, 5000, 10000},
56379bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::AccessNetwork::GERAN);
5648bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_OK(res);
5658bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
5668bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
5678bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
5688bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach
5698bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ALOGI("setLinkCapacityReportingCriteria_invalidHysteresisUlKbps, rspInfo.error = %s\n",
5708bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
5718bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error, {RadioError::NONE}));
5728bdc4e04e21f3fa41109878e45006c00897b9ef8Eric Schwarzenbach}
573ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
574ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu/*
575ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu * Test IRadio.setupDataCall_1_2() for the response returned.
576ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu */
577ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack YuTEST_F(RadioHidlTest_v1_2, setupDataCall_1_2) {
578788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
579ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
58079bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::AccessNetwork accessNetwork =
58179bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::AccessNetwork::EUTRAN;
582ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
583ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    DataProfileInfo dataProfileInfo;
584ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    memset(&dataProfileInfo, 0, sizeof(dataProfileInfo));
585ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.profileId = DataProfileId::IMS;
586ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.apn = hidl_string("VZWIMS");
587ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.protocol = hidl_string("IPV4V6");
588ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.roamingProtocol = hidl_string("IPV6");
589ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.authType = ApnAuthType::NO_PAP_NO_CHAP;
590ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.user = "";
591ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.password = "";
592ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.type = DataProfileInfoType::THREE_GPP2;
593ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.maxConnsTime = 300;
594ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.maxConns = 20;
595ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.waitTime = 0;
596ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.enabled = true;
597ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.supportedApnTypesBitmap = 320;
598ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.bearerBitmap = 161543;
599ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.mtu = 0;
600ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.mvnoType = MvnoType::NONE;
601ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    dataProfileInfo.mvnoMatchData = hidl_string();
602ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
603ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    bool modemCognitive = false;
604ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    bool roamingAllowed = false;
605ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    bool isRoaming = false;
606ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
60779bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::DataRequestReason reason =
60879bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::DataRequestReason::NORMAL;
609ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    std::vector<hidl_string> addresses = {""};
610ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    std::vector<hidl_string> dnses = {""};
611ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
612ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    Return<void> res = radio_v1_2->setupDataCall_1_2(serial, accessNetwork, dataProfileInfo,
613ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu                                                     modemCognitive, roamingAllowed, isRoaming,
614ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu                                                     reason, addresses, dnses);
615ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    ASSERT_OK(res);
616ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
617ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    EXPECT_EQ(std::cv_status::no_timeout, wait());
618ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
619ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
620ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
62179bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
622ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu        ASSERT_TRUE(CheckAnyOfErrors(
623ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu            radioRsp_v1_2->rspInfo.error,
624ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu            {RadioError::SIM_ABSENT, RadioError::RADIO_NOT_AVAILABLE, RadioError::INVALID_ARGUMENTS,
625ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu             RadioError::OP_NOT_ALLOWED_BEFORE_REG_TO_NW, RadioError::REQUEST_NOT_SUPPORTED}));
62679bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
627ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu        ASSERT_TRUE(CheckAnyOfErrors(
628ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu            radioRsp_v1_2->rspInfo.error,
629ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu            {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INVALID_ARGUMENTS,
630ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu             RadioError::OP_NOT_ALLOWED_BEFORE_REG_TO_NW, RadioError::REQUEST_NOT_SUPPORTED}));
631ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    }
632ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu}
633ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
634ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu/*
635ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu * Test IRadio.deactivateDataCall_1_2() for the response returned.
636ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu */
637ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack YuTEST_F(RadioHidlTest_v1_2, deactivateDataCall_1_2) {
638788eb8083059ff0dca686734ceebf942042c4893sqian    serial = GetRandomSerialNumber();
639ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    int cid = 1;
64079bafb943bb53e48351cd159724164c7526976c4sqian    ::android::hardware::radio::V1_2::DataRequestReason reason =
64179bafb943bb53e48351cd159724164c7526976c4sqian        ::android::hardware::radio::V1_2::DataRequestReason::NORMAL;
642ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
643ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    Return<void> res = radio_v1_2->deactivateDataCall_1_2(serial, cid, reason);
644ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    ASSERT_OK(res);
645ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
646ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    EXPECT_EQ(std::cv_status::no_timeout, wait());
647ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
648ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
649ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu
65079bafb943bb53e48351cd159724164c7526976c4sqian    if (cardStatus.base.cardState == CardState::ABSENT) {
651ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu        ASSERT_TRUE(CheckAnyOfErrors(
652ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu            radioRsp_v1_2->rspInfo.error,
653ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu            {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INVALID_CALL_ID,
654ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu             RadioError::INVALID_STATE, RadioError::INVALID_ARGUMENTS,
655ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu             RadioError::REQUEST_NOT_SUPPORTED, RadioError::CANCELLED, RadioError::SIM_ABSENT}));
65679bafb943bb53e48351cd159724164c7526976c4sqian    } else if (cardStatus.base.cardState == CardState::PRESENT) {
657ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu        ASSERT_TRUE(CheckAnyOfErrors(
658ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu            radioRsp_v1_2->rspInfo.error,
659ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu            {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INVALID_CALL_ID,
660ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu             RadioError::INVALID_STATE, RadioError::INVALID_ARGUMENTS,
661ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu             RadioError::REQUEST_NOT_SUPPORTED, RadioError::CANCELLED}));
662ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu    }
663ac1844fac42a6e31028dc01eb60ebe0e56c5c4dbJack Yu}
66465a3ad31b80a9459339fa2793310e24eb77f7861Cassie
66565a3ad31b80a9459339fa2793310e24eb77f7861Cassie/*
66665a3ad31b80a9459339fa2793310e24eb77f7861Cassie * Test IRadio.getCellInfoList() for the response returned.
66765a3ad31b80a9459339fa2793310e24eb77f7861Cassie */
66865a3ad31b80a9459339fa2793310e24eb77f7861CassieTEST_F(RadioHidlTest_v1_2, getCellInfoList_1_2) {
66965a3ad31b80a9459339fa2793310e24eb77f7861Cassie    int serial = GetRandomSerialNumber();
67065a3ad31b80a9459339fa2793310e24eb77f7861Cassie
67165a3ad31b80a9459339fa2793310e24eb77f7861Cassie    Return<void> res = radio_v1_2->getCellInfoList(serial);
67265a3ad31b80a9459339fa2793310e24eb77f7861Cassie    ASSERT_OK(res);
67365a3ad31b80a9459339fa2793310e24eb77f7861Cassie    EXPECT_EQ(std::cv_status::no_timeout, wait());
67465a3ad31b80a9459339fa2793310e24eb77f7861Cassie    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
67565a3ad31b80a9459339fa2793310e24eb77f7861Cassie    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
67665a3ad31b80a9459339fa2793310e24eb77f7861Cassie
67765a3ad31b80a9459339fa2793310e24eb77f7861Cassie    ALOGI("getCellInfoList_1_2, rspInfo.error = %s\n",
67865a3ad31b80a9459339fa2793310e24eb77f7861Cassie          toString(radioRsp_v1_2->rspInfo.error).c_str());
67965a3ad31b80a9459339fa2793310e24eb77f7861Cassie    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
68065a3ad31b80a9459339fa2793310e24eb77f7861Cassie                                 {RadioError::NONE, RadioError::NO_NETWORK_FOUND}));
68165a3ad31b80a9459339fa2793310e24eb77f7861Cassie}
68274befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach
68374befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach/*
68474befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach * Test IRadio.getVoiceRegistrationState() for the response returned.
68574befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach */
68674befb69b9c532e5be77a1a64eb38713b8d51118Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, getVoiceRegistrationState) {
68774befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    int serial = GetRandomSerialNumber();
68874befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach
68974befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    Return<void> res = radio_v1_2->getVoiceRegistrationState(serial);
69074befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    ASSERT_OK(res);
69174befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
69274befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
69374befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
69474befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach
69574befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    ALOGI("getVoiceRegistrationStateResponse_1_2, rspInfo.error = %s\n",
69674befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
69774befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
69874befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach                                 {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE}));
69974befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach}
70074befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach
70174befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach/*
70274befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach * Test IRadio.getDataRegistrationState() for the response returned.
70374befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach */
70474befb69b9c532e5be77a1a64eb38713b8d51118Eric SchwarzenbachTEST_F(RadioHidlTest_v1_2, getDataRegistrationState) {
70574befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    int serial = GetRandomSerialNumber();
70674befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach
70774befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    Return<void> res = radio_v1_2->getDataRegistrationState(serial);
70874befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    ASSERT_OK(res);
70974befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    EXPECT_EQ(std::cv_status::no_timeout, wait());
71074befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
71174befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
71274befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach
71374befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    ALOGI("getVoiceRegistrationStateResponse_1_2, rspInfo.error = %s\n",
71474befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach          toString(radioRsp_v1_2->rspInfo.error).c_str());
71574befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach    ASSERT_TRUE(CheckAnyOfErrors(
71674befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach        radioRsp_v1_2->rspInfo.error,
71774befb69b9c532e5be77a1a64eb38713b8d51118Eric Schwarzenbach        {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::NOT_PROVISIONED}));
7188e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold}
7198e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold
7208e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold/*
7218e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold * Test IRadio.getAvailableBandModes() for the response returned.
7228e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold */
7238e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan HaroldTEST_F(RadioHidlTest_v1_2, getAvailableBandModes) {
7248e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    int serial = GetRandomSerialNumber();
7258e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold
7268e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    Return<void> res = radio_v1_2->getAvailableBandModes(serial);
7278e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    ASSERT_OK(res);
7288e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    EXPECT_EQ(std::cv_status::no_timeout, wait());
7298e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_2->rspInfo.type);
7308e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    EXPECT_EQ(serial, radioRsp_v1_2->rspInfo.serial);
7318e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    ALOGI("getAvailableBandModes, rspInfo.error = %s\n",
7328e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold          toString(radioRsp_v1_2->rspInfo.error).c_str());
7338e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    ASSERT_TRUE(
7348e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold        CheckAnyOfErrors(radioRsp_v1_2->rspInfo.error,
7358e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold                         {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::MODEM_ERR,
7368e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold                          RadioError::INTERNAL_ERR,
7378e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold                          // If REQUEST_NOT_SUPPORTED is returned, then it should also be returned
7388e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold                          // for setRandMode().
7398e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold                          RadioError::REQUEST_NOT_SUPPORTED}));
7408e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    bool hasUnspecifiedBandMode = false;
7418e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    if (radioRsp_v1_2->rspInfo.error == RadioError::NONE) {
7428e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold        for (const RadioBandMode& mode : radioRsp_v1_2->radioBandModes) {
7438e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold            // Automatic mode selection must be supported
7448e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold            if (mode == RadioBandMode::BAND_MODE_UNSPECIFIED) hasUnspecifiedBandMode = true;
7458e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold        }
7468e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold        ASSERT_TRUE(hasUnspecifiedBandMode);
7478e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold    }
7488e7fc9f4f5c8c79f4bbc3aea8a6cdae449597157Nathan Harold}
749