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

Commit a98ebb03 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "[le audio] use broadcastId instead of Sid to check for local broadcast" into main

parents a5df47c6 e8218e30
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -3102,7 +3102,7 @@ public class BassClientService extends ProfileService {
        return stateMachine.getMaximumSourceCapacity();
    }

    private boolean isLocalBroadcast(int sourceAdvertisingSid) {
    private boolean isLocalBroadcast(int broadcastId) {
        LeAudioService leAudioService = mServiceFactory.getLeAudioService();
        if (leAudioService == null) {
            return false;
@@ -3112,7 +3112,7 @@ public class BassClientService extends ProfileService {
                leAudioService.getAllBroadcastMetadata().stream()
                        .anyMatch(
                                meta -> {
                                    return meta.getSourceAdvertisingSid() == sourceAdvertisingSid;
                                    return meta.getBroadcastId() == broadcastId;
                                });
        log("isLocalBroadcast=" + wasFound);
        return wasFound;
@@ -3123,7 +3123,7 @@ public class BassClientService extends ProfileService {
            return false;
        }

        return isLocalBroadcast(metaData.getSourceAdvertisingSid());
        return isLocalBroadcast(metaData.getBroadcastId());
    }

    boolean isLocalBroadcast(BluetoothLeBroadcastReceiveState receiveState) {
@@ -3131,7 +3131,7 @@ public class BassClientService extends ProfileService {
            return false;
        }

        return isLocalBroadcast(receiveState.getSourceAdvertisingSid());
        return isLocalBroadcast(receiveState.getBroadcastId());
    }

    static void log(String msg) {
+41 −0
Original line number Diff line number Diff line
@@ -6471,4 +6471,45 @@ public class BassClientServiceTest {
            }
        }
    }

    @Test
    public void testIsLocalBroadacst() {
        int broadcastId = 12345;

        BluetoothLeBroadcastMetadata metadata = createBroadcastMetadata(broadcastId);
        BluetoothLeBroadcastReceiveState receiveState =
                new BluetoothLeBroadcastReceiveState(
                        TEST_SOURCE_ID,
                        metadata.getSourceAddressType(),
                        metadata.getSourceDevice(),
                        metadata.getSourceAdvertisingSid(),
                        metadata.getBroadcastId(),
                        BluetoothLeBroadcastReceiveState.PA_SYNC_STATE_SYNCHRONIZED,
                        BluetoothLeBroadcastReceiveState.BIG_ENCRYPTION_STATE_NOT_ENCRYPTED,
                        null,
                        metadata.getSubgroups().size(),
                        // Bis sync states
                        metadata.getSubgroups().stream()
                                .map(e -> (long) 0x00000001)
                                .collect(Collectors.toList()),
                        metadata.getSubgroups().stream()
                                .map(e -> e.getContentMetadata())
                                .collect(Collectors.toList()));

        /* External broadcast check */
        doReturn(new ArrayList<BluetoothLeBroadcastMetadata>())
                .when(mLeAudioService)
                .getAllBroadcastMetadata();

        assertThat(mBassClientService.isLocalBroadcast(metadata)).isFalse();
        assertThat(mBassClientService.isLocalBroadcast(receiveState)).isFalse();

        /* Local broadcast check */
        doReturn(new ArrayList<BluetoothLeBroadcastMetadata>(Arrays.asList(metadata)))
                .when(mLeAudioService)
                .getAllBroadcastMetadata();

        assertThat(mBassClientService.isLocalBroadcast(metadata)).isTrue();
        assertThat(mBassClientService.isLocalBroadcast(receiveState)).isTrue();
    }
}