#!/usr/bin/env python3.4 # # Copyright 2018 - 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. import acts.test_utils.power.PowerBTBaseTest as PBtBT from acts.test_decorators import test_tracker_info class PowerBTscanTest(PBtBT.PowerBTBaseTest): def ble_scan_base_func(self): """Base function to start a generic BLE scan and measures the power Steps: 1. Sets the phone in airplane mode, disables gestures and location 2. Turns ON/OFF BT, BLE and screen according to test conditions 3. Sends the adb shell command to PMC to start scan 4. Measures the power consumption 5. Asserts pass/fail criteria based on measured power """ # Decode the test params from test name attrs = ['screen_status', 'bt_status', 'ble_status', 'scan_mode'] indices = [2, 4, 6, -1] self.decode_test_configs(attrs, indices) if self.test_configs.scan_mode == 'lowpower': scan_mode = 'low_power' elif self.test_configs.scan_mode == 'lowlatency': scan_mode = 'low_latency' else: scan_mode = self.test_configs.scan_mode self.phone_setup_for_BT(self.test_configs.bt_status, self.test_configs.ble_status, self.test_configs.screen_status) self.start_pmc_ble_scan(scan_mode, self.mon_info.offset, self.mon_info.duration) self.measure_power_and_validate() # Test Cases: BLE Scans + Filtered scans @test_tracker_info(uuid='e9a36161-1d0c-4b9a-8bd8-80fef8cdfe28') def test_screen_ON_bt_ON_ble_ON_default_scan_balanced(self): self.ble_scan_base_func() @test_tracker_info(uuid='5fa61bf4-5f04-40bf-af52-6644b534d02e') def test_screen_OFF_bt_ON_ble_ON_filter_scan_opportunistic(self): self.ble_scan_base_func() @test_tracker_info(uuid='512b6cde-be83-43b0-b799-761380ba69ff') def test_screen_OFF_bt_ON_ble_ON_filter_scan_lowpower(self): self.ble_scan_base_func() @test_tracker_info(uuid='3a526838-ae7b-4cdb-bc29-89a5503d2306') def test_screen_OFF_bt_ON_ble_ON_filter_scan_balanced(self): self.ble_scan_base_func() @test_tracker_info(uuid='03a57cfd-4269-4a09-8544-84f878d2e801') def test_screen_OFF_bt_ON_ble_ON_filter_scan_lowlatency(self): self.ble_scan_base_func() # Test Cases: Background scans @test_tracker_info(uuid='20145317-e362-4bfd-9860-4ceddf764784') def test_screen_ON_bt_OFF_ble_ON_background_scan_lowlatency(self): self.ble_scan_base_func() @test_tracker_info(uuid='00a53dc3-2c33-43c4-b356-dba93249b823') def test_screen_ON_bt_OFF_ble_ON_background_scan_lowpower(self): self.ble_scan_base_func() @test_tracker_info(uuid='b7185d64-631f-4b18-8d0b-4e14b80db375') def test_screen_OFF_bt_OFF_ble_ON_background_scan_lowlatency(self): self.ble_scan_base_func() @test_tracker_info(uuid='93eb05da-a577-409c-8208-6af1899a10c2') def test_screen_OFF_bt_OFF_ble_ON_background_scan_lowpower(self): self.ble_scan_base_func()