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

Commit 6ae3eac9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "le_audio: Create descriptor for added from storage device" am:...

Merge "le_audio: Create descriptor for added from storage device" am: 87736361 am: 4b264223 am: 91422fc0

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/2411578



Change-Id: I93d208a7e2d91218975a73e63b986e543fb86de8
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 639feacd 91422fc0
Loading
Loading
Loading
Loading
+35 −13
Original line number Diff line number Diff line
@@ -448,6 +448,27 @@ public class LeAudioService extends ProfileService {
        return mVolumeControlService.getAudioDeviceGroupVolume(groupId);
    }

    LeAudioDeviceDescriptor createDeviceDescriptor(BluetoothDevice device) {
        LeAudioDeviceDescriptor descriptor = mDeviceDescriptors.get(device);
        if (descriptor == null) {

            // Limit the maximum number of devices to avoid DoS attack
            if (mDeviceDescriptors.size() >= MAX_LE_AUDIO_DEVICES) {
                Log.e(TAG, "Maximum number of LeAudio state machines reached: "
                        + MAX_LE_AUDIO_DEVICES);
                return null;
            }

            mDeviceDescriptors.put(device, new LeAudioDeviceDescriptor());
            descriptor = mDeviceDescriptors.get(device);
            Log.d(TAG, "Created descriptor for device: " + device);
        } else {
            Log.w(TAG, "Device: " + device + ", already exists");
        }

        return descriptor;
    }

    public boolean connect(BluetoothDevice device) {
        if (DBG) {
            Log.d(TAG, "connect(): " + device);
@@ -464,19 +485,10 @@ public class LeAudioService extends ProfileService {
        }

        synchronized (mGroupLock) {
            LeAudioDeviceDescriptor descriptor = mDeviceDescriptors.get(device);
            if (descriptor == null) {

                // Limit the maximum number of devices to avoid DoS attack
                if (mDeviceDescriptors.size() >= MAX_LE_AUDIO_DEVICES) {
                    Log.e(TAG, "Maximum number of LeAudio state machines reached: "
                            + MAX_LE_AUDIO_DEVICES);
            if (createDeviceDescriptor(device) == null) {
                return false;
            }

                mDeviceDescriptors.put(device, new LeAudioDeviceDescriptor());
            }

            LeAudioStateMachine sm = getOrCreateStateMachine(device);
            if (sm == null) {
                Log.e(TAG, "Ignored connect request for " + device + " : no state machine");
@@ -2183,9 +2195,19 @@ public class LeAudioService extends ProfileService {

            LeAudioDeviceDescriptor deviceDescriptor = getDeviceDescriptor(device);
            if (deviceDescriptor == null) {
                Log.e(TAG, "handleGroupNodeAdded: No valid descriptor for device: " + device);
                deviceDescriptor = createDeviceDescriptor(device);
                if (deviceDescriptor == null) {
                    Log.e(TAG, "handleGroupNodeAdded: Can't create descriptor for added from"
                            + " storage device: " + device);
                    return;
                }

                LeAudioStateMachine sm = getOrCreateStateMachine(device);
                if (getOrCreateStateMachine(device) == null) {
                    Log.e(TAG, "Can't get state machine for device: " + device);
                    return;
                }
            }
            deviceDescriptor.mGroupId = groupId;

            LeAudioGroupDescriptor descriptor = mGroupDescriptors.get(groupId);