Merge "Minor edits for BT related utils and Enums" am: 9133fbd925 am: c11d573822
am: 9412f4bc1e

Change-Id: I451abe2a0407e03bb98036a6225e95aaffe8223a
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 bf4d549..1f13d26 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
@@ -29,8 +29,8 @@
          NotImplementedError: if controller is missing one or more methods.
     """
     ctlr_methods = inspect.getmembers(controller, predicate=callable)
-    reqd_methods = inspect.getmembers(abstract_device_class,
-                                      predicate=inspect.ismethod)
+    reqd_methods = inspect.getmembers(
+        abstract_device_class, predicate=inspect.ismethod)
     expected_func_names = {method[0] for method in reqd_methods}
     controller_func_names = {method[0] for method in ctlr_methods}
 
@@ -47,8 +47,7 @@
         if inspect.signature(controller_func) != required_signature:
             raise NotImplementedError(
                 'Method {} must have the signature {}{}.'.format(
-                    controller_func.__qualname__,
-                    controller_func.__name__,
+                    controller_func.__qualname__, controller_func.__name__,
                     required_signature))
 
 
@@ -58,6 +57,7 @@
     Desired controller classes should have a corresponding Bluetooth handsfree
     abstract device class defined in this module.
     """
+
     @property
     def mac_address(self):
         raise NotImplementedError
@@ -115,7 +115,8 @@
         return self.pixel_buds_controller.bluetooth_address
 
     def accept_call(self):
-        return self.pixel_buds_controller.cmd(self.format_cmd('EventUsrAnswer'))
+        return self.pixel_buds_controller.cmd(
+            self.format_cmd('EventUsrAnswer'))
 
     def end_call(self):
         return self.pixel_buds_controller.cmd(
@@ -147,7 +148,8 @@
             self.format_cmd('EventUsrAvrcpSkipBackward'))
 
     def reject_call(self):
-        return self.pixel_buds_controller.cmd(self.format_cmd('EventUsrReject'))
+        return self.pixel_buds_controller.cmd(
+            self.format_cmd('EventUsrReject'))
 
     def volume_down(self):
         return self.pixel_buds_controller.volume('Down')
@@ -158,7 +160,6 @@
 
 class EarstudioReceiverBluetoothHandsfreeAbstractDevice(
         BluetoothHandsfreeAbstractDevice):
-
     def __init__(self, earstudio_controller):
         self.earstudio_controller = earstudio_controller
 
@@ -205,7 +206,6 @@
 
 class JaybirdX3EarbudsBluetoothHandsfreeAbstractDevice(
         BluetoothHandsfreeAbstractDevice):
-
     def __init__(self, jaybird_controller):
         self.jaybird_controller = jaybird_controller
 
@@ -252,7 +252,6 @@
 
 class AndroidHeadsetBluetoothHandsfreeAbstractDevice(
         BluetoothHandsfreeAbstractDevice):
-
     def __init__(self, ad_controller):
         self.ad_controller = ad_controller
 
@@ -271,8 +270,7 @@
         return self.ad_controller.droid.bluetoothMakeDiscoverable()
 
     def next_track(self):
-        return (self.ad_controller.droid.
-                bluetoothMediaPassthrough("skipNext"))
+        return (self.ad_controller.droid.bluetoothMediaPassthrough("skipNext"))
 
     def pause(self):
         return self.ad_controller.droid.bluetoothMediaPassthrough("pause")
@@ -287,13 +285,15 @@
         return self.ad_controller.droid.bluetoothToggleState(True)
 
     def previous_track(self):
-        return (self.ad_controller.droid.
-                bluetoothMediaPassthrough("skipPrev"))
+        return (self.ad_controller.droid.bluetoothMediaPassthrough("skipPrev"))
 
     def reject_call(self):
         return self.ad_controller.droid.telecomCallDisconnect(
             self.ad_controller.droid.telecomCallGetCallIds()[0])
 
+    def reset(self):
+        return self.ad_controller.droid.bluetoothFactoryReset()
+
     def volume_down(self):
         target_step = self.ad_controller.droid.getMediaVolume() - 1
         target_step = max(target_step, 0)
diff --git a/acts/framework/acts/test_utils/bt/BtEnum.py b/acts/framework/acts/test_utils/bt/BtEnum.py
index a2010d0..b9fe6e2 100644
--- a/acts/framework/acts/test_utils/bt/BtEnum.py
+++ b/acts/framework/acts/test_utils/bt/BtEnum.py
@@ -103,3 +103,11 @@
     PRIORITY_ON = 100
     PRIORITY_OFF = 0
     PRIORITY_UNDEFINED = -1
+
+class BluetoothA2dpCodecType(Enum):
+    SBC = 0
+    AAC = 1
+    APTX = 2
+    APTX_HD = 3
+    LDAC = 4
+    MAX = 5
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 57992eb..f13002e 100644
--- a/acts/framework/acts/test_utils/bt/bt_test_utils.py
+++ b/acts/framework/acts/test_utils/bt/bt_test_utils.py
@@ -226,6 +226,7 @@
         bonded_info = android.droid.bluetoothGetBondedDevices()
         if headset.mac_address not in [info["address"] for info in bonded_info]:
             # Use SL4A to pair and connect with headset.
+            headset.enter_pairing_mode()
             android.droid.bluetoothDiscoverAndBond(headset.mac_address)
         else:  # Device is bonded but not connected
             android.droid.bluetoothConnectBonded(headset.mac_address)