Loading radio/1.4/vts/functional/radio_hidl_hal_api.cpp +344 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,350 @@ TEST_F(RadioHidlTest_v1_4, emergencyDial_withEmergencyRouting) { EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error); } /* * Test IRadio.startNetworkScan() for the response returned. */ TEST_F(RadioHidlTest_v1_4, startNetworkScan) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { // OPERATION_NOT_ALLOWED should not be allowed; however, some vendors do not support the // required manual GSM search functionality. This is tracked in b/112206766. ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::OPERATION_NOT_ALLOWED})); } } /* * Test IRadio.startNetworkScan() with invalid specifier. */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidArgument) { serial = GetRandomSerialNumber(); ::android::hardware::radio::V1_2::NetworkScanRequest request = {.type = ScanType::ONE_SHOT, .interval = 60}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidArgument, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid interval (lower boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidInterval1) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 4, .specifiers = {specifier}, .maxSearchTime = 60, .incrementalResults = false, .incrementalResultsPeriodicity = 1}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidInterval1, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid interval (upper boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidInterval2) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 301, .specifiers = {specifier}, .maxSearchTime = 60, .incrementalResults = false, .incrementalResultsPeriodicity = 1}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidInterval2, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid max search time (lower boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidMaxSearchTime1) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, .maxSearchTime = 59, .incrementalResults = false, .incrementalResultsPeriodicity = 1}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidMaxSearchTime1, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid max search time (upper boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidMaxSearchTime2) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, .maxSearchTime = 3601, .incrementalResults = false, .incrementalResultsPeriodicity = 1}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidMaxSearchTime2, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid periodicity (lower boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidPeriodicity1) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, .maxSearchTime = 600, .incrementalResults = false, .incrementalResultsPeriodicity = 0}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidPeriodicity1, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid periodicity (upper boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidPeriodicity2) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, .maxSearchTime = 600, .incrementalResults = false, .incrementalResultsPeriodicity = 11}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidPeriodicity2, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with valid periodicity */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_GoodRequest1) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, // Some vendor may not support max search time of 360s. // This issue is tracked in b/112205669. .maxSearchTime = 300, .incrementalResults = false, .incrementalResultsPeriodicity = 10}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_GoodRequest1, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::SIM_ABSENT})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with valid periodicity and plmns */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_GoodRequest2) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, // Some vendor may not support max search time of 360s. // This issue is tracked in b/112205669. .maxSearchTime = 300, .incrementalResults = false, .incrementalResultsPeriodicity = 10, .mccMncs = {"310410"}}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_GoodRequest2, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::SIM_ABSENT})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.setupDataCall_1_4() for the response returned. */ Loading Loading
radio/1.4/vts/functional/radio_hidl_hal_api.cpp +344 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,350 @@ TEST_F(RadioHidlTest_v1_4, emergencyDial_withEmergencyRouting) { EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error); } /* * Test IRadio.startNetworkScan() for the response returned. */ TEST_F(RadioHidlTest_v1_4, startNetworkScan) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { // OPERATION_NOT_ALLOWED should not be allowed; however, some vendors do not support the // required manual GSM search functionality. This is tracked in b/112206766. ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::OPERATION_NOT_ALLOWED})); } } /* * Test IRadio.startNetworkScan() with invalid specifier. */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidArgument) { serial = GetRandomSerialNumber(); ::android::hardware::radio::V1_2::NetworkScanRequest request = {.type = ScanType::ONE_SHOT, .interval = 60}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidArgument, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid interval (lower boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidInterval1) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 4, .specifiers = {specifier}, .maxSearchTime = 60, .incrementalResults = false, .incrementalResultsPeriodicity = 1}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidInterval1, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid interval (upper boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidInterval2) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 301, .specifiers = {specifier}, .maxSearchTime = 60, .incrementalResults = false, .incrementalResultsPeriodicity = 1}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidInterval2, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid max search time (lower boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidMaxSearchTime1) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, .maxSearchTime = 59, .incrementalResults = false, .incrementalResultsPeriodicity = 1}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidMaxSearchTime1, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid max search time (upper boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidMaxSearchTime2) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, .maxSearchTime = 3601, .incrementalResults = false, .incrementalResultsPeriodicity = 1}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidMaxSearchTime2, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid periodicity (lower boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidPeriodicity1) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, .maxSearchTime = 600, .incrementalResults = false, .incrementalResultsPeriodicity = 0}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidPeriodicity1, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with invalid periodicity (upper boundary). */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_InvalidPeriodicity2) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, .maxSearchTime = 600, .incrementalResults = false, .incrementalResultsPeriodicity = 11}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_InvalidPeriodicity2, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE( CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with valid periodicity */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_GoodRequest1) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, // Some vendor may not support max search time of 360s. // This issue is tracked in b/112205669. .maxSearchTime = 300, .incrementalResults = false, .incrementalResultsPeriodicity = 10}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_GoodRequest1, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::SIM_ABSENT})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.startNetworkScan() with valid periodicity and plmns */ TEST_F(RadioHidlTest_v1_4, startNetworkScan_GoodRequest2) { serial = GetRandomSerialNumber(); RadioAccessSpecifier specifier = {.radioAccessNetwork = RadioAccessNetworks::GERAN, .geranBands = {GeranBands::BAND_450, GeranBands::BAND_480}, .channels = {1, 2}}; ::android::hardware::radio::V1_2::NetworkScanRequest request = { .type = ScanType::ONE_SHOT, .interval = 60, .specifiers = {specifier}, // Some vendor may not support max search time of 360s. // This issue is tracked in b/112205669. .maxSearchTime = 300, .incrementalResults = false, .incrementalResultsPeriodicity = 10, .mccMncs = {"310410"}}; Return<void> res = radio_v1_4->startNetworkScan_1_4(serial, request); ASSERT_OK(res); EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_4->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_4->rspInfo.serial); ALOGI("startNetworkScan_GoodRequest2, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); if (cardStatus.base.base.cardState == CardState::ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::SIM_ABSENT})); } else if (cardStatus.base.base.cardState == CardState::PRESENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_4->rspInfo.error, {RadioError::NONE, RadioError::INVALID_ARGUMENTS})); } } /* * Test IRadio.setupDataCall_1_4() for the response returned. */ Loading