@@ -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