1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <radio_hidl_hal_utils.h> 18 19 void RadioHidlTest::SetUp() { 20 radio = 21 ::testing::VtsHalHidlTargetTestBase::getService<IRadio>(hidl_string(RADIO_SERVICE_NAME)); 22 ASSERT_NE(radio, nullptr); 23 24 radioRsp = new RadioResponse(*this); 25 ASSERT_NE(radioRsp, nullptr); 26 27 count = 0; 28 29 radioInd = NULL; 30 radio->setResponseFunctions(radioRsp, radioInd); 31 32 int serial = GetRandomSerialNumber(); 33 radio->getIccCardStatus(serial); 34 EXPECT_EQ(std::cv_status::no_timeout, wait()); 35 EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type); 36 EXPECT_EQ(serial, radioRsp->rspInfo.serial); 37 EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error); 38 } 39 40 void RadioHidlTest::TearDown() {} 41 42 void RadioHidlTest::notify() { 43 std::unique_lock<std::mutex> lock(mtx); 44 count++; 45 cv.notify_one(); 46 } 47 48 std::cv_status RadioHidlTest::wait() { 49 std::unique_lock<std::mutex> lock(mtx); 50 51 std::cv_status status = std::cv_status::no_timeout; 52 auto now = std::chrono::system_clock::now(); 53 while (count == 0) { 54 status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD)); 55 if (status == std::cv_status::timeout) { 56 return status; 57 } 58 } 59 count--; 60 return status; 61 } 62 63 bool RadioHidlTest::CheckGeneralError() { 64 return (radioRsp->rspInfo.error == RadioError::RADIO_NOT_AVAILABLE || 65 radioRsp->rspInfo.error == RadioError::NO_MEMORY || 66 radioRsp->rspInfo.error == RadioError::INTERNAL_ERR || 67 radioRsp->rspInfo.error == RadioError::SYSTEM_ERR || 68 radioRsp->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED || 69 radioRsp->rspInfo.error == RadioError::CANCELLED); 70 } 71 72 bool RadioHidlTest::CheckOEMError() { 73 return (radioRsp->rspInfo.error >= RadioError::OEM_ERROR_1 && 74 radioRsp->rspInfo.error <= RadioError::OEM_ERROR_25); 75 } 76