Expose LE advertiser address for easier PTS tests (6/6)
This patchset adds a hidden method getOwnAddress, that lets app with
BLUETOOTH_PRIVILEGED permission to lear their own addreess. This is done
exclusively for PTS tests.
Bug: 35147497
Test: manual
Change-Id: I5f345a7003b604dd9214ccbd8302dec99afabe9a
diff --git a/acts/tests/google/ble/bt5/Bt5ScanTest.py b/acts/tests/google/ble/bt5/Bt5ScanTest.py
index c67a04a..3d71ebc 100644
--- a/acts/tests/google/ble/bt5/Bt5ScanTest.py
+++ b/acts/tests/google/ble/bt5/Bt5ScanTest.py
@@ -34,6 +34,8 @@
from acts.test_utils.bt.bt_test_utils import generate_ble_scan_objects
from acts.test_utils.bt.bt_test_utils import reset_bluetooth
from acts.test_utils.bt.bt_test_utils import scan_result
+from acts.test_utils.bt.bt_test_utils import advertising_set_on_own_address_read
+from acts.test_utils.bt.bt_test_utils import advertising_set_started
from acts import signals
@@ -372,3 +374,60 @@
self.adv_ad.droid.bleAdvSetStopAdvertisingSet(adv_callback)
return True
+
+ @BluetoothBaseTest.bt_test_wrap
+ def test_get_own_address(self):
+ """Test obtaining own address for PTS.
+
+ Steps:
+ 1. Start advertising set dut1
+ 2. Grab address
+ 3. Stop advertising
+
+ Expected Result:
+ Callback with address is received.
+
+ Returns:
+ Pass if True
+ Fail if False
+
+ TAGS: LE Advertising Extension, BT5, LE, Advertising
+ Priority: 1
+ """
+ adv_callback = self.adv_ad.droid.bleAdvSetGenCallback()
+ self.adv_ad.droid.bleAdvSetStartAdvertisingSet(
+ {"connectable": False,
+ "anonymous": True,
+ "legacyMode": False,
+ "primaryPhy": "PHY_LE_1M",
+ "secondaryPhy": "PHY_LE_2M",
+ "interval": 320}, self.big_adv_data, None, None, None, 0, 0,
+ adv_callback)
+
+ set_id = -1
+
+ try:
+ evt = self.adv_ad.ed.pop_event(
+ advertising_set_started.format(adv_callback), self.default_timeout)
+ self.log.info("data: " + str(evt['data']))
+ set_id = evt['data']['setId']
+ except Empty:
+ self.log.error("did not receive the set started event!")
+ self.adv_ad.droid.bleAdvSetStopAdvertisingSet(adv_callback)
+ return False
+
+ self.adv_ad.droid.bleAdvSetGetOwnAddress(set_id)
+
+ try:
+ evt = self.adv_ad.ed.pop_event(
+ advertising_set_on_own_address_read.format(set_id), self.default_timeout)
+ address = evt['data']['address']
+ self.log.info("Advertiser address is: " + str(address))
+ except Empty:
+ self.log.error("onOwnAddressRead not received.")
+ self.adv_ad.droid.bleAdvSetStopAdvertisingSet(adv_callback)
+ return False
+
+
+ self.adv_ad.droid.bleAdvSetStopAdvertisingSet(adv_callback)
+ return True