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

Commit 399c36ba authored by Alice Kuo's avatar Alice Kuo
Browse files

csip: Expose an extra data with intent and store in CachedBluetoothDevice

Bug: 178981521
Bug: 150670922
Test: Discover and pair with the CSIP supported device, and check the
pairing string in the dialog

Merged-In: I3e99c59e0cb974409291e1b4c28393106784e133
Change-Id: I3e99c59e0cb974409291e1b4c28393106784e133
parent f6641012
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8712,6 +8712,7 @@ package android.bluetooth {
    field public static final String EXTRA_BOND_STATE = "android.bluetooth.device.extra.BOND_STATE";
    field public static final String EXTRA_CLASS = "android.bluetooth.device.extra.CLASS";
    field public static final String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
    field public static final String EXTRA_IS_COORDINATED_SET_MEMBER = "android.bluetooth.extra.IS_COORDINATED_SET_MEMBER";
    field public static final String EXTRA_NAME = "android.bluetooth.device.extra.NAME";
    field public static final String EXTRA_PAIRING_KEY = "android.bluetooth.device.extra.PAIRING_KEY";
    field public static final String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT";
+10 −1
Original line number Diff line number Diff line
@@ -106,7 +106,7 @@ public final class BluetoothDevice implements Parcelable {
     * <p>Sent when a remote device is found during discovery.
     * <p>Always contains the extra fields {@link #EXTRA_DEVICE} and {@link
     * #EXTRA_CLASS}. Can contain the extra fields {@link #EXTRA_NAME} and/or
     * {@link #EXTRA_RSSI} if they are available.
     * {@link #EXTRA_RSSI} and/or {@link #EXTRA_IS_COORDINATED_SET_MEMBER} if they are available.
     * <p>Requires {@link android.Manifest.permission#BLUETOOTH} and
     * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION} to receive.
     */
@@ -256,6 +256,15 @@ public final class BluetoothDevice implements Parcelable {
     */
    public static final String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI";

    /**
    * Used as an bool extra field in {@link #ACTION_FOUND} intents.
    * It contains the information if device is discovered as member of a coordinated set or not.
    * Pairing with device that belongs to a set would trigger pairing with the rest of set members.
    * See Bluetooth CSIP specification for more details.
    */
    public static final String EXTRA_IS_COORDINATED_SET_MEMBER =
            "android.bluetooth.extra.IS_COORDINATED_SET_MEMBER";

    /**
     * Used as a Parcelable {@link BluetoothClass} extra field in {@link
     * #ACTION_FOUND} and {@link #ACTION_CLASS_CHANGED} intents.
+3 −0
Original line number Diff line number Diff line
@@ -293,6 +293,8 @@ public class BluetoothEventManager {
                BluetoothDevice device) {
            short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE);
            String name = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
            final boolean isCoordinatedSetMember =
                    intent.getBooleanExtra(BluetoothDevice.EXTRA_IS_COORDINATED_SET_MEMBER, false);
            // TODO Pick up UUID. They should be available for 2.1 devices.
            // Skip for now, there's a bluez problem and we are not getting uuids even for 2.1.
            CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device);
@@ -307,6 +309,7 @@ public class BluetoothEventManager {
            }
            cachedDevice.setRssi(rssi);
            cachedDevice.setJustDiscovered(true);
            cachedDevice.setIsCoordinatedSetMember(isCoordinatedSetMember);
        }
    }

+20 −0
Original line number Diff line number Diff line
@@ -80,6 +80,8 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>

    boolean mJustDiscovered;

    boolean mIsCoordinatedSetMember = false;

    private final Collection<Callback> mCallbacks = new CopyOnWriteArrayList<>();

    /**
@@ -297,6 +299,24 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
        return mHiSyncId != BluetoothHearingAid.HI_SYNC_ID_INVALID;
    }

    /**
     * Mark the discovered device as member of coordinated set.
     *
     * @param isCoordinatedSetMember {@code true}, if the device is a member of a coordinated set.
     */
    public void setIsCoordinatedSetMember(boolean isCoordinatedSetMember) {
        mIsCoordinatedSetMember = isCoordinatedSetMember;
    }

    /**
     * Check if the device is a CSIP member device.
     *
     * @return {@code true}, if this device supports CSIP, otherwise returns {@code false}.
     */
    public boolean isCoordinatedSetMemberDevice() {
        return mIsCoordinatedSetMember;
    }

    void onBondingDockConnect() {
        // Attempt to connect if UUIDs are available. Otherwise,
        // we will connect when the ACTION_UUID intent arrives.