Skip to content

Commit 70eb051

Browse files
committed
Add ability to use SDL listener if BT device==null
1 parent 89cb67f commit 70eb051

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public class SdlDeviceListener {
6161

6262
private final WeakReference<Context> contextWeakReference;
6363
private final Callback callback;
64-
private final BluetoothDevice connectedDevice;
64+
private BluetoothDevice connectedDevice;
6565
private MultiplexBluetoothTransport bluetoothTransport;
6666
private TransportHandler bluetoothHandler;
6767
private Handler timeoutHandler;
@@ -87,24 +87,21 @@ public SdlDeviceListener(Context context, BluetoothDevice device, Callback callb
8787
public void start() {
8888
if (connectedDevice == null) {
8989
DebugTool.logInfo(TAG, ": No supplied bluetooth device");
90-
if (callback != null) {
91-
callback.onTransportError(null);
92-
}
93-
return;
94-
}
95-
96-
if (hasSDLConnected(contextWeakReference.get(), connectedDevice.getAddress())) {
90+
} else if (hasSDLConnected(contextWeakReference.get(), connectedDevice.getAddress())) {
9791
DebugTool.logInfo(TAG, ": Confirmed SDL device, should start router service");
9892
//This device has connected to SDL previously, it is ok to start the RS right now
9993
callback.onTransportConnected(contextWeakReference.get(), connectedDevice);
10094
return;
10195
}
96+
10297
synchronized (RUNNING_LOCK) {
10398
isRunning = true;
10499
// set timeout = if first time seeing BT device, 30s, if not 15s
105-
int timeout = isFirstStatusCheck(connectedDevice.getAddress()) ? 30000 : 15000;
100+
int timeout = connectedDevice != null && isFirstStatusCheck(connectedDevice.getAddress()) ? 30000 : 15000;
106101
//Set our preference as false for this device for now
107-
setSDLConnectedStatus(contextWeakReference.get(), connectedDevice.getAddress(), false);
102+
if(connectedDevice != null) {
103+
setSDLConnectedStatus(contextWeakReference.get(), connectedDevice.getAddress(), false);
104+
}
108105
bluetoothHandler = new TransportHandler(this);
109106
bluetoothTransport = new MultiplexBluetoothTransport(bluetoothHandler);
110107
bluetoothTransport.start();
@@ -155,6 +152,9 @@ public void handleMessage(@NonNull Message msg) {
155152
case SdlRouterService.MESSAGE_STATE_CHANGE:
156153
switch (msg.arg1) {
157154
case MultiplexBaseTransport.STATE_CONNECTED:
155+
if(sdlListener.connectedDevice == null) {
156+
sdlListener.connectedDevice = sdlListener.bluetoothTransport.getConnectedDevice();
157+
}
158158
sdlListener.setSDLConnectedStatus(sdlListener.contextWeakReference.get(), sdlListener.connectedDevice.getAddress(), true);
159159
boolean keepConnectionOpen = sdlListener.callback.onTransportConnected(sdlListener.contextWeakReference.get(), sdlListener.connectedDevice);
160160
if (!keepConnectionOpen) {

0 commit comments

Comments
 (0)