diff --git a/radio/1.6/vts/functional/Android.bp b/radio/1.6/vts/functional/Android.bp index 65b0dd03ba..2bc6af31f6 100644 --- a/radio/1.6/vts/functional/Android.bp +++ b/radio/1.6/vts/functional/Android.bp @@ -28,6 +28,7 @@ cc_test { defaults: ["VtsHalTargetTestDefaults"], srcs: [ "radio_hidl_hal_api.cpp", + "radio_hidl_hal_misc.cpp", "radio_hidl_hal_test.cpp", "radio_response.cpp", "radio_indication.cpp", diff --git a/radio/1.6/vts/functional/radio_hidl_hal_misc.cpp b/radio/1.6/vts/functional/radio_hidl_hal_misc.cpp new file mode 100644 index 0000000000..422244178c --- /dev/null +++ b/radio/1.6/vts/functional/radio_hidl_hal_misc.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include +#include + +/* + * Test IRadio.getAvailableNetworks() for the response returned. + */ +TEST_P(RadioHidlTest_v1_6, getAvailableNetworks) { + LOG(DEBUG) << "getAvailableNetworks"; + serial = GetRandomSerialNumber(); + + radio_v1_6->getAvailableNetworks(serial); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(serial, radioRsp_v1_6->rspInfo_v1_0.serial); + ASSERT_TRUE(radioRsp_v1_6->rspInfo_v1_0.type == RadioResponseType::SOLICITED || + radioRsp_v1_6->rspInfo_v1_0.type == RadioResponseType::SOLICITED_ACK_EXP); + + if (cardStatus.base.base.base.cardState == CardState::ABSENT) { + ASSERT_TRUE(CheckAnyOfErrors( + radioRsp_v1_6->rspInfo_v1_0.error, + {::android::hardware::radio::V1_0::RadioError::NONE, + ::android::hardware::radio::V1_0::RadioError::CANCELLED, + ::android::hardware::radio::V1_0::RadioError::DEVICE_IN_USE, + ::android::hardware::radio::V1_0::RadioError::MODEM_ERR, + ::android::hardware::radio::V1_0::RadioError::OPERATION_NOT_ALLOWED}, + CHECK_GENERAL_ERROR)); + } else if (radioRsp_v1_6->rspInfo_v1_0.error == + ::android::hardware::radio::V1_0::RadioError::NONE) { + static const std::regex kOperatorNumericRe("^[0-9]{5,6}$"); + for (OperatorInfo info : radioRsp_v1_6->networkInfos) { + if (info.operatorNumeric != nullptr) { + ASSERT_TRUE( + std::regex_match(std::string(info.operatorNumeric), kOperatorNumericRe)); + } + } + } + + LOG(DEBUG) << "getAvailableNetworks finished"; +} diff --git a/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h b/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h index 950d82a8f1..3185f98364 100644 --- a/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h +++ b/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h @@ -60,6 +60,7 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon public: hidl_vec radioBandModes; + hidl_vec networkInfos; ::android::hardware::radio::V1_0::RadioResponseInfo rspInfo_v1_0; ::android::hardware::radio::V1_6::RadioResponseInfo rspInfo; diff --git a/radio/1.6/vts/functional/radio_response.cpp b/radio/1.6/vts/functional/radio_response.cpp index 942964bd8c..6e7b86f5dd 100644 --- a/radio/1.6/vts/functional/radio_response.cpp +++ b/radio/1.6/vts/functional/radio_response.cpp @@ -274,8 +274,11 @@ Return RadioResponse_v1_6::setNetworkSelectionModeManualResponse( } Return RadioResponse_v1_6::getAvailableNetworksResponse( - const ::android::hardware::radio::V1_0::RadioResponseInfo& /*info*/, - const ::android::hardware::hidl_vec& /*networkInfos*/) { + const ::android::hardware::radio::V1_0::RadioResponseInfo& info, + const ::android::hardware::hidl_vec& networkInfos) { + rspInfo_v1_0 = info; + this->networkInfos = networkInfos; + parent_v1_6.notify(info.serial); return Void(); }