blob: 1976b0f2e4a59ff3592ee58562f21b124cd31a0b [file] [log] [blame]
#!/usr/bin/env python3.4
#
# Copyright 2018 - The Android Open Source Project
8
# 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
import acts.test_utils.power.PowerWiFiBaseTest as PWBT
from acts import utils
from acts.test_utils.wifi import wifi_test_utils as wutils
class PowerCoexBaseTest(PBtBT.PowerBTBaseTest, PWBT.PowerWiFiBaseTest):
"""Base class for BT power related tests.
Inherited from the PowerBaseTest class
"""
def coex_test_phone_setup(self, Screen_status, WiFi_status, WiFi_band,
BT_status, BLE_status, Cellular_status,
Celluar_band):
"""Setup the phone in desired state for coex tests.
Args:
Screen_status: 'ON' or 'OFF'
WiFi_status: 'ON', 'Connected', 'Disconnected', or 'OFF'
WiFi_band: '2g', '5g' or None, the band of AP
BT_status: 'ON' or 'OFF'
BLE_status: 'ON' or 'OFF'
Cellular_status: 'ON' or 'OFF'
Celluar_band: 'Verizon', 'Tmobile', or 'ATT' for live network,
actual band for callbox setup; 'None' when celluar is OFF
"""
# Setup WiFi
if WiFi_status is 'ON':
wutils.wifi_toggle_state(self.dut, True)
elif WiFi_status is 'Connected':
self.setup_ap_connection(self.main_network[WiFi_band])
elif WiFi_status is 'Disconnected':
self.setup_ap_connection(
self.main_network[WiFi_band], connect=False)
# Setup BT/BLE
self.phone_setup_for_BT(BT_status, BLE_status, Screen_status)
# Setup Cellular
if Cellular_status is 'ON':
self.dut.droid.connectivityToggleAirplaneMode(False)
utils.set_mobile_data_always_on(self.dut, True)
def coex_scan_setup(self, WiFi_scan, BLE_scan_mode, wifi_scan_command):
"""Setup for scan activities on WiFi, BT/BLE, and cellular.
Args:
WiFi_scan: 'ON', 'OFF' or 'PNO'
BLE_scan_mode: 'balanced', 'opportunistic', 'low_power', or 'low_latency'
"""
if WiFi_scan is 'ON':
self.dut.adb.shell(wifi_scan_command)
if WiFi_scan is 'PNO':
self.log.info(
'Set attenuation so device loses connection to trigger PNO scans'
)
# Set to maximum attenuation 95 dB to cut down connection
[self.attenuators[i].set_atten(95) for i in range(self.num_atten)]
if BLE_scan_mode is not None:
self.start_pmc_ble_scan(BLE_scan_mode, self.mon_info.offset,
self.mon_info.duration)