summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsairam <ganeshganesh@google.com>2019-09-23 18:01:04 -0700
committersairam <ganeshganesh@google.com>2019-10-08 16:33:12 -0700
commita84fe764575b6c2d909e23a8beda367e805cd871 (patch)
treedf733a023660d97e9cda0a13a0e32703124f4eb5
parent1474db31caf7612b9772b70b711ff82f8af8b257 (diff)
downloadplatform_tools_test_connectivity-a84fe764575b6c2d909e23a8beda367e805cd871.tar.gz
platform_tools_test_connectivity-a84fe764575b6c2d909e23a8beda367e805cd871.tar.bz2
platform_tools_test_connectivity-a84fe764575b6c2d909e23a8beda367e805cd871.zip
Add a common controller for Headsets.
This CL adds support to control various headsets like android device/pixel buds/headset connected to relay. Bug: None Change-Id: I9f6c38c22c283c9fb769f9a7fe21e9d922658d0f
-rw-r--r--acts/framework/acts/test_utils/abstract_devices/bluetooth_handsfree_abstract_device.py61
-rw-r--r--acts/framework/acts/test_utils/bt/bt_test_utils.py1
-rw-r--r--acts/framework/acts/test_utils/bt/simulated_carkit_device.py4
3 files changed, 63 insertions, 3 deletions
diff --git a/acts/framework/acts/test_utils/abstract_devices/bluetooth_handsfree_abstract_device.py b/acts/framework/acts/test_utils/abstract_devices/bluetooth_handsfree_abstract_device.py
index 669ab0c259..bf4d549c5a 100644
--- a/acts/framework/acts/test_utils/abstract_devices/bluetooth_handsfree_abstract_device.py
+++ b/acts/framework/acts/test_utils/abstract_devices/bluetooth_handsfree_abstract_device.py
@@ -100,7 +100,7 @@ class BluetoothHandsfreeAbstractDevice:
class PixelBudsBluetoothHandsfreeAbstractDevice(
- BluetoothHandsfreeAbstractDevice):
+ BluetoothHandsfreeAbstractDevice):
CMD_EVENT = 'EvtHex'
@@ -250,6 +250,62 @@ class JaybirdX3EarbudsBluetoothHandsfreeAbstractDevice(
return self.jaybird_controller.press_volume_up()
+class AndroidHeadsetBluetoothHandsfreeAbstractDevice(
+ BluetoothHandsfreeAbstractDevice):
+
+ def __init__(self, ad_controller):
+ self.ad_controller = ad_controller
+
+ @property
+ def mac_address(self):
+ return self.ad_controller.droid.bluetoothGetLocalAddress()
+
+ def accept_call(self):
+ return self.ad_controller.droid.telecomAcceptRingingCall(None)
+
+ def end_call(self):
+ return self.ad_controller.droid.telecomEndCall()
+
+ def enter_pairing_mode(self):
+ self.ad_controller.droid.bluetoothStartPairingHelper(True)
+ return self.ad_controller.droid.bluetoothMakeDiscoverable()
+
+ def next_track(self):
+ return (self.ad_controller.droid.
+ bluetoothMediaPassthrough("skipNext"))
+
+ def pause(self):
+ return self.ad_controller.droid.bluetoothMediaPassthrough("pause")
+
+ def play(self):
+ return self.ad_controller.droid.bluetoothMediaPassthrough("play")
+
+ def power_off(self):
+ return self.ad_controller.droid.bluetoothToggleState(False)
+
+ def power_on(self):
+ return self.ad_controller.droid.bluetoothToggleState(True)
+
+ def previous_track(self):
+ return (self.ad_controller.droid.
+ bluetoothMediaPassthrough("skipPrev"))
+
+ def reject_call(self):
+ return self.ad_controller.droid.telecomCallDisconnect(
+ self.ad_controller.droid.telecomCallGetCallIds()[0])
+
+ def volume_down(self):
+ target_step = self.ad_controller.droid.getMediaVolume() - 1
+ target_step = max(target_step, 0)
+ return self.ad_controller.droid.setMediaVolume(target_step)
+
+ def volume_up(self):
+ target_step = self.ad_controller.droid.getMediaVolume() + 1
+ max_step = self.ad_controller.droid.getMaxMediaVolume()
+ target_step = min(target_step, max_step)
+ return self.ad_controller.droid.setMediaVolume(target_step)
+
+
class BluetoothHandsfreeAbstractDeviceFactory:
"""Generates a BluetoothHandsfreeAbstractDevice for any device controller.
"""
@@ -257,7 +313,8 @@ class BluetoothHandsfreeAbstractDeviceFactory:
_controller_abstract_devices = {
'EarstudioReceiver': EarstudioReceiverBluetoothHandsfreeAbstractDevice,
'JaybirdX3Earbuds': JaybirdX3EarbudsBluetoothHandsfreeAbstractDevice,
- 'ParentDevice': PixelBudsBluetoothHandsfreeAbstractDevice
+ 'ParentDevice': PixelBudsBluetoothHandsfreeAbstractDevice,
+ 'AndroidDevice': AndroidHeadsetBluetoothHandsfreeAbstractDevice
}
def generate(self, controller):
diff --git a/acts/framework/acts/test_utils/bt/bt_test_utils.py b/acts/framework/acts/test_utils/bt/bt_test_utils.py
index 0409d91f39..57992eb19f 100644
--- a/acts/framework/acts/test_utils/bt/bt_test_utils.py
+++ b/acts/framework/acts/test_utils/bt/bt_test_utils.py
@@ -1603,4 +1603,3 @@ def write_read_verify_data(client_ad, server_ad, msg, binary=False):
log.error("Mismatch! Read: {}, Expected: {}".format(read_msg, msg))
return False
return True
-
diff --git a/acts/framework/acts/test_utils/bt/simulated_carkit_device.py b/acts/framework/acts/test_utils/bt/simulated_carkit_device.py
index 7279fe619c..84fcc5ea79 100644
--- a/acts/framework/acts/test_utils/bt/simulated_carkit_device.py
+++ b/acts/framework/acts/test_utils/bt/simulated_carkit_device.py
@@ -19,6 +19,10 @@ from acts import asserts
from acts.controllers import android_device
from acts.test_utils.bt.bt_test_utils import bluetooth_enabled_check
+# TODO: This class to be deprecated for
+# ../acts/test_utils/abstract_devices/bluetooth_handsfree_abstract_device.py
+
+
class SimulatedCarkitDevice():
def __init__(self, serial):
self.ad = android_device.create(serial)[0]