blob: 0ef622c648367c8c359ac6ca9667310751ad65a6 [file] [log] [blame]
#!/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()