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

Commit 4b264223 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: 87736361

parents 15438256 87736361
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);