Loading android/app/src/com/android/bluetooth/bass_client/BassClientService.java +29 −0 Original line number Diff line number Diff line Loading @@ -978,6 +978,20 @@ public class BassClientService extends ProfileService { } } private void informConnectedDeviceAboutScanOffloadStop() { for (BluetoothDevice device : getConnectedDevices()) { synchronized (mStateMachines) { BassClientStateMachine stateMachine = getOrCreateStateMachine(device); if (stateMachine == null) { Log.w(TAG, "informConnectedDeviceAboutScanOffloadStop: Can't get state " + "machine for device: " + device); continue; } stateMachine.sendMessage(BassClientStateMachine.STOP_SCAN_OFFLOAD); } } } void handleConnectionStateChanged(BluetoothDevice device, int fromState, int toState) { mHandler.post(() -> connectionStateChanged(device, fromState, toState)); } Loading Loading @@ -1339,6 +1353,7 @@ public class BassClientService extends ProfileService { public void onScanFailed(int errorCode) { Log.e(TAG, "Scan Failure:" + errorCode); informConnectedDeviceAboutScanOffloadStop(); } }; // when starting scan, clear the previously cached broadcast scan results Loading @@ -1364,6 +1379,19 @@ public class BassClientService extends ProfileService { .setServiceData(BassConstants.BAAS_UUID, serviceData, serviceDataMask).build()); } for (BluetoothDevice device : getConnectedDevices()) { synchronized (mStateMachines) { BassClientStateMachine stateMachine = getOrCreateStateMachine(device); if (stateMachine == null) { Log.w(TAG, "startSearchingForSources: Can't get state machine for " + "device: " + device); continue; } stateMachine.sendMessage(BassClientStateMachine.START_SCAN_OFFLOAD); } } scanner.startScan(filters, settings, mSearchScanCallback); sEventLogger.logd(TAG, "startSearchingForSources"); mCallbacks.notifySearchStarted(BluetoothStatusCodes.REASON_LOCAL_APP_REQUEST); Loading Loading @@ -1391,6 +1419,7 @@ public class BassClientService extends ProfileService { mCallbacks.notifySearchStopFailed(BluetoothStatusCodes.ERROR_UNKNOWN); return; } informConnectedDeviceAboutScanOffloadStop(); scanner.stopScan(mSearchScanCallback); mSearchScanCallback = null; sEventLogger.logd(TAG, "stopSearchingForSources"); Loading android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java +0 −15 Original line number Diff line number Diff line Loading @@ -470,8 +470,6 @@ public class BassClientStateMachine extends StateMachine { null); } catch (IllegalArgumentException ex) { Log.w(TAG, "registerSync:IllegalArgumentException"); Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); mPeriodicAdvCallbacksMap.remove(tempHandle); return false; } Loading Loading @@ -521,9 +519,6 @@ public class BassClientStateMachine extends StateMachine { // all sources are removed, clean up removeMessages(PSYNC_ACTIVE_TIMEOUT); mService.clearNotifiedFlags(); // trigger scan stop here Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); } } } Loading Loading @@ -731,10 +726,6 @@ public class BassClientStateMachine extends StateMachine { Log.e(TAG, "There is no valid sync handle for this Source"); } } } else if (state == BluetoothLeBroadcastReceiveState.PA_SYNC_STATE_SYNCHRONIZED || state == BluetoothLeBroadcastReceiveState.PA_SYNC_STATE_NO_PAST) { Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); } } Loading Loading @@ -1165,10 +1156,6 @@ public class BassClientStateMachine extends StateMachine { } } else { log("failed to sync to PA: " + mPASyncRetryCounter); if (!mAutoTriggered) { Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); } mAutoTriggered = false; // remove failed sync handle mPeriodicAdvCallbacksMap.remove(BassConstants.INVALID_SYNC_HANDLE); Loading Loading @@ -2003,8 +1990,6 @@ public class BassClientStateMachine extends StateMachine { case ADD_BCAST_SOURCE: if (!isSuccess(status)) { cancelActiveSync(null); Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); if (mPendingMetadata != null) { mService.getCallbacks() .notifySourceAddFailed(mDevice, mPendingMetadata, status); Loading android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java +11 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.Spy; Loading Loading @@ -395,10 +396,20 @@ public class BassClientServiceTest { */ @Test public void testStartSearchingForSources() { prepareConnectedDeviceGroup(); List<ScanFilter> scanFilters = new ArrayList<>(); assertThat(mStateMachines.size()).isEqualTo(2); for (BassClientStateMachine sm : mStateMachines.values()) { Mockito.clearInvocations(sm); } mBassClientService.startSearchingForSources(scanFilters); verify(mBluetoothLeScannerWrapper).startScan(notNull(), notNull(), notNull()); for (BassClientStateMachine sm : mStateMachines.values()) { verify(sm).sendMessage(BassClientStateMachine.START_SCAN_OFFLOAD); } } /** Loading android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientStateMachineTest.java +0 −1 Original line number Diff line number Diff line Loading @@ -794,7 +794,6 @@ public class BassClientStateMachineTest { verify(callbacks).notifySourceAdded(any(), any(), anyInt()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); assertThat(mBassClientStateMachine.mMsgWhats).contains(STOP_SCAN_OFFLOAD); // set some values for covering more lines of processPASyncState() mBassClientStateMachine.mPendingMetadata = null; Loading Loading
android/app/src/com/android/bluetooth/bass_client/BassClientService.java +29 −0 Original line number Diff line number Diff line Loading @@ -978,6 +978,20 @@ public class BassClientService extends ProfileService { } } private void informConnectedDeviceAboutScanOffloadStop() { for (BluetoothDevice device : getConnectedDevices()) { synchronized (mStateMachines) { BassClientStateMachine stateMachine = getOrCreateStateMachine(device); if (stateMachine == null) { Log.w(TAG, "informConnectedDeviceAboutScanOffloadStop: Can't get state " + "machine for device: " + device); continue; } stateMachine.sendMessage(BassClientStateMachine.STOP_SCAN_OFFLOAD); } } } void handleConnectionStateChanged(BluetoothDevice device, int fromState, int toState) { mHandler.post(() -> connectionStateChanged(device, fromState, toState)); } Loading Loading @@ -1339,6 +1353,7 @@ public class BassClientService extends ProfileService { public void onScanFailed(int errorCode) { Log.e(TAG, "Scan Failure:" + errorCode); informConnectedDeviceAboutScanOffloadStop(); } }; // when starting scan, clear the previously cached broadcast scan results Loading @@ -1364,6 +1379,19 @@ public class BassClientService extends ProfileService { .setServiceData(BassConstants.BAAS_UUID, serviceData, serviceDataMask).build()); } for (BluetoothDevice device : getConnectedDevices()) { synchronized (mStateMachines) { BassClientStateMachine stateMachine = getOrCreateStateMachine(device); if (stateMachine == null) { Log.w(TAG, "startSearchingForSources: Can't get state machine for " + "device: " + device); continue; } stateMachine.sendMessage(BassClientStateMachine.START_SCAN_OFFLOAD); } } scanner.startScan(filters, settings, mSearchScanCallback); sEventLogger.logd(TAG, "startSearchingForSources"); mCallbacks.notifySearchStarted(BluetoothStatusCodes.REASON_LOCAL_APP_REQUEST); Loading Loading @@ -1391,6 +1419,7 @@ public class BassClientService extends ProfileService { mCallbacks.notifySearchStopFailed(BluetoothStatusCodes.ERROR_UNKNOWN); return; } informConnectedDeviceAboutScanOffloadStop(); scanner.stopScan(mSearchScanCallback); mSearchScanCallback = null; sEventLogger.logd(TAG, "stopSearchingForSources"); Loading
android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java +0 −15 Original line number Diff line number Diff line Loading @@ -470,8 +470,6 @@ public class BassClientStateMachine extends StateMachine { null); } catch (IllegalArgumentException ex) { Log.w(TAG, "registerSync:IllegalArgumentException"); Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); mPeriodicAdvCallbacksMap.remove(tempHandle); return false; } Loading Loading @@ -521,9 +519,6 @@ public class BassClientStateMachine extends StateMachine { // all sources are removed, clean up removeMessages(PSYNC_ACTIVE_TIMEOUT); mService.clearNotifiedFlags(); // trigger scan stop here Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); } } } Loading Loading @@ -731,10 +726,6 @@ public class BassClientStateMachine extends StateMachine { Log.e(TAG, "There is no valid sync handle for this Source"); } } } else if (state == BluetoothLeBroadcastReceiveState.PA_SYNC_STATE_SYNCHRONIZED || state == BluetoothLeBroadcastReceiveState.PA_SYNC_STATE_NO_PAST) { Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); } } Loading Loading @@ -1165,10 +1156,6 @@ public class BassClientStateMachine extends StateMachine { } } else { log("failed to sync to PA: " + mPASyncRetryCounter); if (!mAutoTriggered) { Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); } mAutoTriggered = false; // remove failed sync handle mPeriodicAdvCallbacksMap.remove(BassConstants.INVALID_SYNC_HANDLE); Loading Loading @@ -2003,8 +1990,6 @@ public class BassClientStateMachine extends StateMachine { case ADD_BCAST_SOURCE: if (!isSuccess(status)) { cancelActiveSync(null); Message message = obtainMessage(STOP_SCAN_OFFLOAD); sendMessage(message); if (mPendingMetadata != null) { mService.getCallbacks() .notifySourceAddFailed(mDevice, mPendingMetadata, status); Loading
android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java +11 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.Spy; Loading Loading @@ -395,10 +396,20 @@ public class BassClientServiceTest { */ @Test public void testStartSearchingForSources() { prepareConnectedDeviceGroup(); List<ScanFilter> scanFilters = new ArrayList<>(); assertThat(mStateMachines.size()).isEqualTo(2); for (BassClientStateMachine sm : mStateMachines.values()) { Mockito.clearInvocations(sm); } mBassClientService.startSearchingForSources(scanFilters); verify(mBluetoothLeScannerWrapper).startScan(notNull(), notNull(), notNull()); for (BassClientStateMachine sm : mStateMachines.values()) { verify(sm).sendMessage(BassClientStateMachine.START_SCAN_OFFLOAD); } } /** Loading
android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientStateMachineTest.java +0 −1 Original line number Diff line number Diff line Loading @@ -794,7 +794,6 @@ public class BassClientStateMachineTest { verify(callbacks).notifySourceAdded(any(), any(), anyInt()); verify(callbacks).notifyReceiveStateChanged(any(), anyInt(), any()); assertThat(mBassClientStateMachine.mMsgWhats).contains(STOP_SCAN_OFFLOAD); // set some values for covering more lines of processPASyncState() mBassClientStateMachine.mPendingMetadata = null; Loading