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

Commit 423e648a authored by Alice Kuo's avatar Alice Kuo
Browse files

Move set member pair handle from settingLib to setting

Remove createBond from settingLib. SystemUI and Setting have the
individual settingLib instance. If we trigger pairing inside settingLib,
the action would be called twice.

Bug: 201758444
Bug: 150670922
Test: Pair the coordinated set devices, and check the set member pairing
would be done automatically without the pairing dialog

Change-Id: I289b8af857530f0fb207b777d09d94549cfdf553
parent c03b0fa0
Loading
Loading
Loading
Loading
+0 −28
Original line number Diff line number Diff line
@@ -127,9 +127,6 @@ public class BluetoothEventManager {
        addHandler(BluetoothDevice.ACTION_ACL_CONNECTED, new AclStateChangedHandler());
        addHandler(BluetoothDevice.ACTION_ACL_DISCONNECTED, new AclStateChangedHandler());

        addHandler(BluetoothCsipSetCoordinator.ACTION_CSIS_SET_MEMBER_AVAILABLE,
                new SetMemberAvailableHandler());

        registerAdapterIntentReceiver();
    }

@@ -515,29 +512,4 @@ public class BluetoothEventManager {
            dispatchAudioModeChanged();
        }
    }

    private class SetMemberAvailableHandler implements Handler {
        @Override
        public void onReceive(Context context, Intent intent, BluetoothDevice device) {
            final String action = intent.getAction();
            if (device == null) {
                Log.e(TAG, "SetMemberAvailableHandler: device is null");
                return;
            }

            if (action == null) {
                Log.e(TAG, "SetMemberAvailableHandler: action is null");
                return;
            }

            final int groupId = intent.getIntExtra(BluetoothCsipSetCoordinator.EXTRA_CSIS_GROUP_ID,
                    BluetoothCsipSetCoordinator.GROUP_ID_INVALID);
            if (groupId == BluetoothCsipSetCoordinator.GROUP_ID_INVALID) {
                Log.e(TAG, "SetMemberAvailableHandler: Invalid group id");
                return;
            }

            mDeviceManager.onSetMemberAppear(device, groupId);
        }
    }
}
+12 −10
Original line number Diff line number Diff line
@@ -340,22 +340,24 @@ public class CachedBluetoothDeviceManager {

    /**
     * Called when we found a set member of a group. The function will check the {@code groupId} if
     * it exists and if there is a ongoing pair, the device would be ignored.
     * it exists and the bond state of the device is BOND_NOE, and if there isn't any ongoing pair
     * , and then return {@code true} to pair the device automatically.
     *
     * @param device The found device
     * @param groupId The group id of the found device
     *
     * @return {@code true}, if the device should pair automatically; Otherwise, return
     * {@code false}.
     */
    public synchronized void onSetMemberAppear(BluetoothDevice device, int groupId) {
        Log.d(TAG, "onSetMemberAppear, groupId: " + groupId + " device: " + device.toString());

        if (mOngoingSetMemberPair != null) {
            Log.d(TAG, "Ongoing set memberPairing in process, drop it!");
            return;
    public synchronized boolean shouldPairByCsip(BluetoothDevice device, int groupId) {
        if (mOngoingSetMemberPair != null || device.getBondState() != BluetoothDevice.BOND_NONE
                || !mCsipDeviceManager.isExistedGroupId(groupId)) {
            return false;
        }

        if (mCsipDeviceManager.onSetMemberAppear(device, groupId)) {
        Log.d(TAG, "Bond " + device.getName() + " by CSIP");
        mOngoingSetMemberPair = device;
        }
        return true;
    }

    /**
+5 −12
Original line number Diff line number Diff line
@@ -240,22 +240,15 @@ public class CsipDeviceManager {
    }

    /**
     * Called when we found a set member of a group. The function will check bond state, and
     * the {@code groupId} if it exists, and then create the bond.
     * Check if the {@code groupId} is existed.
     *
     * @param device The found device
     * @param groupId The group id of the found device
     * @param groupId The group id
     *
     * @return {@code true}, if the we create bond with the device. Otherwise, return
     * {@code false}.
     * @return {@code true}, if we could find a device with this {@code groupId}; Otherwise,
     * return {@code false}.
     */
    public boolean onSetMemberAppear(BluetoothDevice device, int groupId) {
        if (device.getBondState() != BluetoothDevice.BOND_NONE) {
            return false;
        }

    public boolean isExistedGroupId(int groupId) {
        if (getCachedDevice(groupId) != null) {
            device.createBond(BluetoothDevice.TRANSPORT_LE);
            return true;
        }