Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d424d09f authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Expose LE advertiser address for easier PTS tests (1/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: Iaf0f2fe0613de44b8430ac25e691d66a4ad44f8d
parent d5411a83
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ interface IBluetoothGatt {
                                in IAdvertisingSetCallback callback);
    void stopAdvertisingSet(in IAdvertisingSetCallback callback);

    void getOwnAddress(in int advertiserId);
    void enableAdvertisingSet(in int advertiserId, in boolean enable, in int duration, in int maxExtAdvEvents);
    void setAdvertisingData(in int advertiserId, in AdvertiseData data);
    void setScanResponseData(in int advertiserId, in AdvertiseData data);
+17 −1
Original line number Diff line number Diff line
@@ -181,7 +181,23 @@ public final class AdvertisingSet {
    }

    /**
     * Returns advertiserId associated with thsi advertising set.
     * Returns address associated with this advertising set.
     * This method is exposed only for Bluetooth PTS tests, no app or system service
     * should ever use it.
     *
     * This method requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED} permission.
     * @hide
     */
    public void getOwnAddress(){
        try {
            gatt.getOwnAddress(this.advertiserId);
        } catch (RemoteException e) {
            Log.e(TAG, "remote exception - ", e);
        }
    }

    /**
     * Returns advertiserId associated with this advertising set.
     *
     * @hide
     */
+11 −0
Original line number Diff line number Diff line
@@ -143,4 +143,15 @@ public abstract class AdvertisingSetCallback {
     */
    public void onPeriodicAdvertisingEnabled(AdvertisingSet advertisingSet, boolean enable,
                                            int status) {}

    /**
     * Callback triggered in response to {@link AdvertisingSet#getOwnAddress()}
     * indicating result of the operation.
     *
     * @param advertisingSet The advertising set.
     * @param addressType type of address.
     * @param address advertising set bluetooth address.
     * @hide
     */
    public void onOwnAddressRead(AdvertisingSet advertisingSet, int addressType, String address) {}
}
 No newline at end of file
+11 −0
Original line number Diff line number Diff line
@@ -544,6 +544,17 @@ public final class BluetoothLeAdvertiser {
                });
            }

            @Override
            public void onOwnAddressRead(int advertiserId, int addressType, String address) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        AdvertisingSet advertisingSet = mAdvertisingSets.get(advertiserId);
                        callback.onOwnAddressRead(advertisingSet, addressType, address);
                    }
                });
            }

            @Override
            public void onAdvertisingSetStopped(int advertiserId) {
                handler.post(new Runnable() {
+1 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ package android.bluetooth.le;
 */
oneway interface IAdvertisingSetCallback {
  void onAdvertisingSetStarted(in int advertiserId, in int tx_power, in int status);
  void onOwnAddressRead(in int advertiserId, in int addressType, in String address);
  void onAdvertisingSetStopped(in int advertiserId);
  void onAdvertisingEnabled(in int advertiserId, in boolean enable, in int status);
  void onAdvertisingDataSet(in int advertiserId, in int status);