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