19823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq/* 29823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Copyright (C) 2017 The Android Open Source Project 39823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * 49823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Licensed under the Apache License, Version 2.0 (the "License"); 59823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * you may not use this file except in compliance with the License. 69823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * You may obtain a copy of the License at 79823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * 89823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * http://www.apache.org/licenses/LICENSE-2.0 99823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * 109823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * Unless required by applicable law or agreed to in writing, software 119823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * distributed under the License is distributed on an "AS IS" BASIS, 129823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * See the License for the specific language governing permissions and 149823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq * limitations under the License. 159823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq */ 169823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq 1787bde3312ab61714a3469f59084b40c46a6627deYuexi Ma#include <sap_hidl_hal_utils.h> 189823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq 199823fcd865d0af53daf5d3137e98f2dec0c888bfShuoqvoid SapHidlTest::SetUp() { 2021b0a0ad2555d3cf5231864a474399fdb00992b2Zhuoyao Zhang sap = ::testing::VtsHalHidlTargetTestBase::getService<ISap>( 2121b0a0ad2555d3cf5231864a474399fdb00992b2Zhuoyao Zhang SapHidlEnvironment::Instance()->getServiceName<ISap>(hidl_string(SAP_SERVICE_NAME))); 2242c66f700aedb76506f0cd9f7e3be1316bdc7846sqian ASSERT_NE(sap, nullptr); 239823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq 2442c66f700aedb76506f0cd9f7e3be1316bdc7846sqian sapCb = new SapCallback(*this); 2542c66f700aedb76506f0cd9f7e3be1316bdc7846sqian ASSERT_NE(sapCb, nullptr); 269823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq 2742c66f700aedb76506f0cd9f7e3be1316bdc7846sqian count = 0; 289823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq 2942c66f700aedb76506f0cd9f7e3be1316bdc7846sqian sap->setCallback(sapCb); 309823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq} 319823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq 3287bde3312ab61714a3469f59084b40c46a6627deYuexi Mavoid SapHidlTest::TearDown() {} 339823fcd865d0af53daf5d3137e98f2dec0c888bfShuoq 34788eb8083059ff0dca686734ceebf942042c4893sqianvoid SapHidlTest::notify(int receivedToken) { 3542c66f700aedb76506f0cd9f7e3be1316bdc7846sqian std::unique_lock<std::mutex> lock(mtx); 3642c66f700aedb76506f0cd9f7e3be1316bdc7846sqian count++; 37788eb8083059ff0dca686734ceebf942042c4893sqian if (token == receivedToken) { 38788eb8083059ff0dca686734ceebf942042c4893sqian cv.notify_one(); 39788eb8083059ff0dca686734ceebf942042c4893sqian } 40a8616ddf0f430f900ba5669ffe9471f99977ad59sqian} 4142c66f700aedb76506f0cd9f7e3be1316bdc7846sqian 42a8616ddf0f430f900ba5669ffe9471f99977ad59sqianstd::cv_status SapHidlTest::wait() { 43a8616ddf0f430f900ba5669ffe9471f99977ad59sqian std::unique_lock<std::mutex> lock(mtx); 4442c66f700aedb76506f0cd9f7e3be1316bdc7846sqian 45a8616ddf0f430f900ba5669ffe9471f99977ad59sqian std::cv_status status = std::cv_status::no_timeout; 46a8616ddf0f430f900ba5669ffe9471f99977ad59sqian auto now = std::chrono::system_clock::now(); 47a8616ddf0f430f900ba5669ffe9471f99977ad59sqian while (count == 0) { 48a8616ddf0f430f900ba5669ffe9471f99977ad59sqian status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD)); 49a8616ddf0f430f900ba5669ffe9471f99977ad59sqian if (status == std::cv_status::timeout) { 50a8616ddf0f430f900ba5669ffe9471f99977ad59sqian return status; 5142c66f700aedb76506f0cd9f7e3be1316bdc7846sqian } 52a8616ddf0f430f900ba5669ffe9471f99977ad59sqian } 53a8616ddf0f430f900ba5669ffe9471f99977ad59sqian count--; 54a8616ddf0f430f900ba5669ffe9471f99977ad59sqian return status; 5521b0a0ad2555d3cf5231864a474399fdb00992b2Zhuoyao Zhang} 56