1#!/usr/bin/env python3 2# 3# Copyright (C) 2016 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); you may not 6# use this file except in compliance with the License. You may obtain a copy of 7# the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14# License for the specific language governing permissions and limitations under 15# the License. 16""" 17Test script to execute Bluetooth basic functionality test cases relevant to car. 18""" 19 20import time 21 22from queue import Empty 23from acts.test_decorators import test_tracker_info 24from acts.test_utils.bt.BluetoothBaseTest import BluetoothBaseTest 25from acts.test_utils.bt.BtEnum import BluetoothScanModeType 26from acts.test_utils.bt.bt_test_utils import check_device_supported_profiles 27from acts.test_utils.bt.bt_test_utils import log_energy_info 28from acts.test_utils.bt.bt_test_utils import reset_bluetooth 29from acts.test_utils.bt.bt_test_utils import set_device_name 30from acts.test_utils.bt.bt_test_utils import set_bt_scan_mode 31from acts.test_utils.bt.bt_test_utils import setup_multiple_devices_for_bt_test 32from acts.test_utils.bt.bt_test_utils import take_btsnoop_logs 33 34 35class BtCarBasicFunctionalityTest(BluetoothBaseTest): 36 default_timeout = 10 37 scan_discovery_time = 5 38 39 def setup_class(self): 40 super().setup_class() 41 self.car_ad = self.android_devices[0] 42 43 return setup_multiple_devices_for_bt_test(self.android_devices) 44 45 @test_tracker_info(uuid='b52a032a-3438-4b84-863f-c46a969882a4') 46 @BluetoothBaseTest.bt_test_wrap 47 def test_if_support_a2dp_sink_profile(self): 48 """ Test that a single device can support A2DP SNK profile. 49 Steps 50 1. Initialize one android devices 51 2. Check devices support profiles and return a dictionary 52 3. Check the value of key 'a2dp_sink' 53 :return: test_result: bool 54 """ 55 profiles = check_device_supported_profiles(self.car_ad.droid) 56 if not profiles['a2dp_sink']: 57 self.car_ad.log.debug( 58 "Android device do not support A2DP SNK profile.") 59 return False 60 return True 61 62 @test_tracker_info(uuid='3c2cb613-6c8a-4ed7-8783-37fb47bff5f2') 63 @BluetoothBaseTest.bt_test_wrap 64 def test_if_support_hfp_client_profile(self): 65 """ Test that a single device can support HFP HF profile. 66 Steps 67 1. Initialize one android devices 68 2. Check devices support profiles and return a dictionary 69 3. Check the value of key 'hfp_client' 70 :return: test_result: bool 71 """ 72 profiles = check_device_supported_profiles(self.car_ad.droid) 73 if not profiles['hfp_client']: 74 self.car_ad.log.debug( 75 "Android device do not support HFP Client profile.") 76 return False 77 return True 78 79 @test_tracker_info(uuid='c3854e74-33da-4e4d-a9cb-4f5170ef7d10') 80 @BluetoothBaseTest.bt_test_wrap 81 def test_if_support_pbap_client_profile(self): 82 """ Test that a single device can support PBAP PCE profile. 83 Steps 84 1. Initialize one android devices 85 2. Check devices support profiles and return a dictionary 86 3. Check the value of key 'pbap_client' 87 :return: test_result: bool 88 """ 89 profiles = check_device_supported_profiles(self.car_ad.droid) 90 if not profiles['pbap_client']: 91 self.car_ad.log.debug( 92 "Android device do not support PBAP Client profile.") 93 return False 94 return True 95