Loading android/app/src/com/android/bluetooth/le_audio/LeAudioService.java +33 −1 Original line number Diff line number Diff line Loading @@ -203,6 +203,7 @@ public class LeAudioService extends ProfileService { private static class LeAudioDeviceDescriptor { LeAudioDeviceDescriptor(boolean isInbandRingtonEnabled) { mAclConnected = false; mStateMachine = null; mGroupId = LE_AUDIO_GROUP_ID_INVALID; mSinkAudioLocation = BluetoothLeAudio.AUDIO_LOCATION_INVALID; Loading @@ -210,6 +211,7 @@ public class LeAudioService extends ProfileService { mDevInbandRingtoneEnabled = isInbandRingtonEnabled; } public boolean mAclConnected; public LeAudioStateMachine mStateMachine; public Integer mGroupId; public Integer mSinkAudioLocation; Loading Loading @@ -1277,12 +1279,37 @@ public class LeAudioService extends ProfileService { return false; } if (allLeAudioDevicesConnected()) { Log.d(TAG, "isScannerNeeded: all devices connected, scanner not needed"); return false; } if (DBG) { Log.d(TAG, "isScannerNeeded: true"); } return true; } boolean allLeAudioDevicesConnected() { synchronized (mGroupLock) { for (Map.Entry<BluetoothDevice, LeAudioDeviceDescriptor> deviceEntry : mDeviceDescriptors.entrySet()) { LeAudioDeviceDescriptor deviceDescriptor = deviceEntry.getValue(); if (deviceDescriptor.mStateMachine == null) { /* Lack of state machine means device is not connected */ return false; } if (!deviceDescriptor.mStateMachine.isConnected() || !deviceDescriptor.mAclConnected) { return false; } } } return true; } private class AudioServerScanCallback extends ScanCallback { int mMaxScanRetires = 10; int mScanRetries = 0; Loading Loading @@ -2062,6 +2089,7 @@ public class LeAudioService extends ProfileService { switch (stackEvent.valueInt1) { case LeAudioStackEvent.CONNECTION_STATE_DISCONNECTING: case LeAudioStackEvent.CONNECTION_STATE_DISCONNECTED: deviceDescriptor.mAclConnected = false; startAudioServersBackgroundScan(/* retry = */ false); boolean disconnectDueToUnbond = Loading @@ -2080,6 +2108,7 @@ public class LeAudioService extends ProfileService { break; case LeAudioStackEvent.CONNECTION_STATE_CONNECTED: case LeAudioStackEvent.CONNECTION_STATE_CONNECTING: deviceDescriptor.mAclConnected = true; if (descriptor != null && Objects.equals( descriptor.mLostLeadDeviceWhileStreaming, Loading @@ -2098,6 +2127,7 @@ public class LeAudioService extends ProfileService { switch (stackEvent.valueInt1) { case LeAudioStackEvent.CONNECTION_STATE_CONNECTED: case LeAudioStackEvent.CONNECTION_STATE_CONNECTING: deviceDescriptor.mAclConnected = true; sm = getOrCreateStateMachine(device); /* Incoming connection try to connect other devices from the group */ connectSet(device); Loading Loading @@ -4121,7 +4151,8 @@ public class LeAudioService extends ProfileService { } else { ProfileService.println(sb, "state machine is null"); } ProfileService.println( sb, " mAclConnected: " + deviceDescriptor.mAclConnected); ProfileService.println(sb, " mDevInbandRingtoneEnabled: " + deviceDescriptor.mDevInbandRingtoneEnabled); ProfileService.println(sb, " mSinkAudioLocation: " Loading @@ -4141,6 +4172,7 @@ public class LeAudioService extends ProfileService { } deviceDescriptor.mStateMachine.dump(sb); ProfileService.println(sb, " mAclConnected: " + deviceDescriptor.mAclConnected); ProfileService.println(sb, " mDevInbandRingtoneEnabled: " + deviceDescriptor.mDevInbandRingtoneEnabled); ProfileService.println(sb, " mSinkAudioLocation: " Loading Loading
android/app/src/com/android/bluetooth/le_audio/LeAudioService.java +33 −1 Original line number Diff line number Diff line Loading @@ -203,6 +203,7 @@ public class LeAudioService extends ProfileService { private static class LeAudioDeviceDescriptor { LeAudioDeviceDescriptor(boolean isInbandRingtonEnabled) { mAclConnected = false; mStateMachine = null; mGroupId = LE_AUDIO_GROUP_ID_INVALID; mSinkAudioLocation = BluetoothLeAudio.AUDIO_LOCATION_INVALID; Loading @@ -210,6 +211,7 @@ public class LeAudioService extends ProfileService { mDevInbandRingtoneEnabled = isInbandRingtonEnabled; } public boolean mAclConnected; public LeAudioStateMachine mStateMachine; public Integer mGroupId; public Integer mSinkAudioLocation; Loading Loading @@ -1277,12 +1279,37 @@ public class LeAudioService extends ProfileService { return false; } if (allLeAudioDevicesConnected()) { Log.d(TAG, "isScannerNeeded: all devices connected, scanner not needed"); return false; } if (DBG) { Log.d(TAG, "isScannerNeeded: true"); } return true; } boolean allLeAudioDevicesConnected() { synchronized (mGroupLock) { for (Map.Entry<BluetoothDevice, LeAudioDeviceDescriptor> deviceEntry : mDeviceDescriptors.entrySet()) { LeAudioDeviceDescriptor deviceDescriptor = deviceEntry.getValue(); if (deviceDescriptor.mStateMachine == null) { /* Lack of state machine means device is not connected */ return false; } if (!deviceDescriptor.mStateMachine.isConnected() || !deviceDescriptor.mAclConnected) { return false; } } } return true; } private class AudioServerScanCallback extends ScanCallback { int mMaxScanRetires = 10; int mScanRetries = 0; Loading Loading @@ -2062,6 +2089,7 @@ public class LeAudioService extends ProfileService { switch (stackEvent.valueInt1) { case LeAudioStackEvent.CONNECTION_STATE_DISCONNECTING: case LeAudioStackEvent.CONNECTION_STATE_DISCONNECTED: deviceDescriptor.mAclConnected = false; startAudioServersBackgroundScan(/* retry = */ false); boolean disconnectDueToUnbond = Loading @@ -2080,6 +2108,7 @@ public class LeAudioService extends ProfileService { break; case LeAudioStackEvent.CONNECTION_STATE_CONNECTED: case LeAudioStackEvent.CONNECTION_STATE_CONNECTING: deviceDescriptor.mAclConnected = true; if (descriptor != null && Objects.equals( descriptor.mLostLeadDeviceWhileStreaming, Loading @@ -2098,6 +2127,7 @@ public class LeAudioService extends ProfileService { switch (stackEvent.valueInt1) { case LeAudioStackEvent.CONNECTION_STATE_CONNECTED: case LeAudioStackEvent.CONNECTION_STATE_CONNECTING: deviceDescriptor.mAclConnected = true; sm = getOrCreateStateMachine(device); /* Incoming connection try to connect other devices from the group */ connectSet(device); Loading Loading @@ -4121,7 +4151,8 @@ public class LeAudioService extends ProfileService { } else { ProfileService.println(sb, "state machine is null"); } ProfileService.println( sb, " mAclConnected: " + deviceDescriptor.mAclConnected); ProfileService.println(sb, " mDevInbandRingtoneEnabled: " + deviceDescriptor.mDevInbandRingtoneEnabled); ProfileService.println(sb, " mSinkAudioLocation: " Loading @@ -4141,6 +4172,7 @@ public class LeAudioService extends ProfileService { } deviceDescriptor.mStateMachine.dump(sb); ProfileService.println(sb, " mAclConnected: " + deviceDescriptor.mAclConnected); ProfileService.println(sb, " mDevInbandRingtoneEnabled: " + deviceDescriptor.mDevInbandRingtoneEnabled); ProfileService.println(sb, " mSinkAudioLocation: " Loading