Reset CDM if resuming from a suspended session.
Also covers any cases where the CDM was not properly stopped
prior to a start call.
Fixes: 151341433
Test: Suspend while connected to a device and verify
reconnection is successful.
Change-Id: I3b616be2eaf1006d99b6f8a0097515a63d3d5e68
diff --git a/connected-device-lib/src/com/android/car/connecteddevice/ConnectedDeviceManager.java b/connected-device-lib/src/com/android/car/connecteddevice/ConnectedDeviceManager.java
index f10bb85..f8805a1 100644
--- a/connected-device-lib/src/com/android/car/connecteddevice/ConnectedDeviceManager.java
+++ b/connected-device-lib/src/com/android/car/connecteddevice/ConnectedDeviceManager.java
@@ -107,6 +107,8 @@
private final AtomicBoolean mIsConnectingToUserDevice = new AtomicBoolean(false);
+ private final AtomicBoolean mHasStarted = new AtomicBoolean(false);
+
private final int mReconnectTimeoutSeconds;
private String mNameForAssociation;
@@ -193,8 +195,12 @@
* connections can be made using {@link #connectToActiveUserDevice()}.
*/
public void start() {
- logd(TAG, "Starting ConnectedDeviceManager.");
- EventLog.onConnectedDeviceManagerStarted();
+ if (mHasStarted.getAndSet(true)) {
+ reset();
+ } else {
+ logd(TAG, "Starting ConnectedDeviceManager.");
+ EventLog.onConnectedDeviceManagerStarted();
+ }
// TODO (b/141312136) Start central manager
mPeripheralManager.start();
connectToActiveUserDevice();