summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Kast <julian@livio.com>2021-05-24 12:20:37 -0400
committerJulian Kast <julian@livio.com>2021-05-24 12:20:37 -0400
commitf2b533b6c02f5003aea8c41ff0fd462e634072c1 (patch)
tree8f069df3b1d99f08098227ccf37491c2eadc37bb
parent76cbf367bab51ffae4a44e516c507f81762772f2 (diff)
parentad5fc1e980ff6c051daf747ec0319239d3aa2115 (diff)
downloadsdl_android-f2b533b6c02f5003aea8c41ff0fd462e634072c1.tar.gz
Merge branch 'develop' into bugfix/issue_1676
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java12
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java13
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java20
-rw-r--r--base/src/main/java/com/smartdevicelink/exception/SdlException.java1
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java7
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java4
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java6
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java12
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java12
-rw-r--r--base/src/main/java/com/smartdevicelink/transport/SiphonServer.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/util/FileUtls.java2
12 files changed, 54 insertions, 39 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
index 6f02088cc..fba01a561 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java
@@ -77,7 +77,8 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport {
Handler timeOutHandler;
Runnable socketRunnable;
boolean keepSocketAlive = true;
-
+ BluetoothDevice connectedDevice;
+
/**
* Constructor. Prepares a new BluetoothChat session.
*
@@ -113,6 +114,14 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport {
}
/**
+ * A method to retrieve the currently connected bluetooth device
+ * @return the connected bluetooth device if connected, null otherwise.
+ */
+ public BluetoothDevice getConnectedDevice(){
+ return connectedDevice;
+ }
+
+ /**
* Start the chat service. Specifically start AcceptThread to begin a
* session in listening (server) mode. Called by the Activity onResume()
*/
@@ -225,6 +234,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport {
//Store a static name of the device that is connected.
if (device != null) {
+ connectedDevice = device;
connectedDeviceName = device.getName();
connectedDeviceAddress = device.getAddress();
if (connectedDeviceAddress != null) {
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
index 605200ce5..c86cb6d94 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java
@@ -275,9 +275,16 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver {
DebugTool.logInfo(TAG, ": This app's package: " + myPackage);
DebugTool.logInfo(TAG, ": Router service app's package: " + routerServicePackage);
if (myPackage != null && myPackage.equalsIgnoreCase(routerServicePackage)) {
- SdlDeviceListener sdlDeviceListener = getSdlDeviceListener(context, device);
- if (!sdlDeviceListener.isRunning()) {
- sdlDeviceListener.start();
+ //If the device is not null the listener should start as well as the
+ //case where this app was installed after BT connected and is the
+ //only SDL app installed on the device. (Rare corner case)
+ if(device != null || sdlAppInfoList.size() == 1) {
+ SdlDeviceListener sdlDeviceListener = getSdlDeviceListener(context, device);
+ if (!sdlDeviceListener.isRunning()) {
+ sdlDeviceListener.start();
+ }
+ } else {
+ DebugTool.logInfo(TAG, "Not starting device listener, bluetooth device is null and other SDL apps installed.");
}
} else {
DebugTool.logInfo(TAG, ": Not the app to start the router service nor device listener");
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java
index 251eb130f..23cdd9857 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java
@@ -61,7 +61,7 @@ public class SdlDeviceListener {
private final WeakReference<Context> contextWeakReference;
private final Callback callback;
- private final BluetoothDevice connectedDevice;
+ private BluetoothDevice connectedDevice;
private MultiplexBluetoothTransport bluetoothTransport;
private TransportHandler bluetoothHandler;
private Handler timeoutHandler;
@@ -87,24 +87,21 @@ public class SdlDeviceListener {
public void start() {
if (connectedDevice == null) {
DebugTool.logInfo(TAG, ": No supplied bluetooth device");
- if (callback != null) {
- callback.onTransportError(null);
- }
- return;
- }
-
- if (hasSDLConnected(contextWeakReference.get(), connectedDevice.getAddress())) {
+ } else if (hasSDLConnected(contextWeakReference.get(), connectedDevice.getAddress())) {
DebugTool.logInfo(TAG, ": Confirmed SDL device, should start router service");
//This device has connected to SDL previously, it is ok to start the RS right now
callback.onTransportConnected(contextWeakReference.get(), connectedDevice);
return;
}
+
synchronized (RUNNING_LOCK) {
isRunning = true;
// set timeout = if first time seeing BT device, 30s, if not 15s
- int timeout = isFirstStatusCheck(connectedDevice.getAddress()) ? 30000 : 15000;
+ int timeout = connectedDevice != null && isFirstStatusCheck(connectedDevice.getAddress()) ? 30000 : 15000;
//Set our preference as false for this device for now
- setSDLConnectedStatus(contextWeakReference.get(), connectedDevice.getAddress(), false);
+ if(connectedDevice != null) {
+ setSDLConnectedStatus(contextWeakReference.get(), connectedDevice.getAddress(), false);
+ }
bluetoothHandler = new TransportHandler(this);
bluetoothTransport = new MultiplexBluetoothTransport(bluetoothHandler);
bluetoothTransport.start();
@@ -155,6 +152,9 @@ public class SdlDeviceListener {
case SdlRouterService.MESSAGE_STATE_CHANGE:
switch (msg.arg1) {
case MultiplexBaseTransport.STATE_CONNECTED:
+ if(sdlListener.connectedDevice == null) {
+ sdlListener.connectedDevice = sdlListener.bluetoothTransport.getConnectedDevice();
+ }
sdlListener.setSDLConnectedStatus(sdlListener.contextWeakReference.get(), sdlListener.connectedDevice.getAddress(), true);
boolean keepConnectionOpen = sdlListener.callback.onTransportConnected(sdlListener.contextWeakReference.get(), sdlListener.connectedDevice);
if (!keepConnectionOpen) {
diff --git a/base/src/main/java/com/smartdevicelink/exception/SdlException.java b/base/src/main/java/com/smartdevicelink/exception/SdlException.java
index e55c80334..e6afa1c88 100644
--- a/base/src/main/java/com/smartdevicelink/exception/SdlException.java
+++ b/base/src/main/java/com/smartdevicelink/exception/SdlException.java
@@ -71,7 +71,6 @@ public class SdlException extends Exception {
}
if (detail != null) {
ret += "\nnested: " + detail.toString();
- detail.printStackTrace();
}
return ret;
}
diff --git a/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java b/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java
index 24b0d8455..db775e10e 100644
--- a/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java
@@ -205,7 +205,7 @@ abstract class BaseSdlManager {
try {
DebugTool.logInfo(TAG, response.serializeJSON().toString());
} catch (JSONException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG, "Error attempting to serialize ChangeRegistrationResponse", e);
}
// go through and change sdlManager properties that were changed via the LCU update
diff --git a/base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java b/base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java
index 820311a58..4a9b785c6 100644
--- a/base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java
+++ b/base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java
@@ -43,6 +43,7 @@ import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.rpc.PutFile;
import com.smartdevicelink.proxy.rpc.PutFileResponse;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCResponseListener;
+import com.smartdevicelink.util.DebugTool;
import java.io.IOException;
import java.io.InputStream;
@@ -221,7 +222,7 @@ class UploadFileOperation extends Task {
try {
this.inputStream.close();
} catch (IOException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to close input stream", e);
}
}
@@ -330,7 +331,7 @@ class UploadFileOperation extends Task {
try {
bytesRead = inputStream.read(buffer, 0, size);
} catch (IOException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to read from input stream", e);
}
if (bytesRead > 0) {
@@ -365,7 +366,7 @@ class UploadFileOperation extends Task {
try {
size = inputStream.available();
} catch (IOException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error trying to get input stream size", e);
}
}
return size;
diff --git a/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java b/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java
index 57cf59ff8..71cd38096 100644
--- a/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java
@@ -146,7 +146,7 @@ abstract class BaseLifecycleManager {
try {
session.startSession();
} catch (SdlException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to start session", e);
}
}
@@ -851,7 +851,7 @@ abstract class BaseLifecycleManager {
session.sendMessage(pm);
} catch (OutOfMemoryError e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to send RPC message.", e);
}
}
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
index f39423b1a..3c409059a 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
@@ -1275,7 +1275,7 @@ abstract class BaseMenuManager extends BaseSubManager {
try {
DebugTool.logInfo(TAG, "Main Menu response: " + response.serializeJSON().toString());
} catch (JSONException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to serialize JSON of RPC response", e);
}
} else {
DebugTool.logError(TAG, "Result: " + response.getResultCode() + " Info: " + response.getInfo());
@@ -1313,7 +1313,7 @@ abstract class BaseMenuManager extends BaseSubManager {
try {
DebugTool.logInfo(TAG, "Sub Menu response: " + response.serializeJSON().toString());
} catch (JSONException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to serialize JSON of RPC response", e);
}
} else {
DebugTool.logError(TAG, "Failed to send sub menu commands: " + response.getInfo());
@@ -1365,7 +1365,7 @@ abstract class BaseMenuManager extends BaseSubManager {
try {
DebugTool.logInfo(TAG, "Dynamic Sub Menu response: " + response.serializeJSON().toString());
} catch (JSONException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to serialize JSON of RPC response", e);
}
} else {
DebugTool.logError(TAG, "Result: " + response.getResultCode() + " Info: " + response.getInfo());
diff --git a/base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java b/base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java
index c0dd495dd..1db39f2e9 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java
@@ -50,6 +50,8 @@ import java.util.List;
import java.util.Set;
public class RPCStruct implements Cloneable {
+ private static final String TAG = "RPCStruct";
+
public static final String KEY_BULK_DATA = "bulkData";
public static final String KEY_PROTECTED = "protected";
@@ -268,7 +270,7 @@ public class RPCStruct implements Cloneable {
return customObject;
} catch (Exception e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to format an object from a Hashtable", e);
}
} else if (obj instanceof List<?>) {
List<?> list = (List<?>) obj;
@@ -300,7 +302,7 @@ public class RPCStruct implements Cloneable {
}
newList.add(customObject);
} catch (Exception e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to format object from list of Hashtables", e);
return null;
}
}
@@ -334,15 +336,15 @@ public class RPCStruct implements Cloneable {
try {
valueForString = tClass.getDeclaredMethod("valueForString", String.class);
} catch (NoSuchMethodException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to find valueForString method in class", e);
}
if (valueForString != null) {
try {
return valueForString.invoke(null, (String) s);
} catch (IllegalAccessException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Illegal access while using reflection to get enum from string", e);
} catch (InvocationTargetException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to use method from reflection to get enum from string", e);
}
}
return null;
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
index c07c4e2e0..ebe24268a 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java
@@ -179,11 +179,9 @@ public class OnSystemRequest extends RPCNotification {
tempBody = getBody(httpJson);
tempHeaders = getHeaders(httpJson);
} catch (JSONException e) {
- DebugTool.logError(TAG, "HTTPRequest in bulk data was malformed.");
- e.printStackTrace();
+ DebugTool.logError(TAG, "HTTPRequest in bulk data was malformed.", e);
} catch (NullPointerException e) {
- DebugTool.logError(TAG, "Invalid HTTPRequest object in bulk data.");
- e.printStackTrace();
+ DebugTool.logError(TAG, "Invalid HTTPRequest object in bulk data.", e);
}
} else if (RequestType.HTTP.equals(this.getRequestType())) {
tempHeaders = new Headers();
@@ -209,8 +207,7 @@ public class OnSystemRequest extends RPCNotification {
try {
result = httpJson.getString(KEY_BODY);
} catch (JSONException e) {
- DebugTool.logError(TAG, KEY_BODY + " key doesn't exist in bulk data.");
- e.printStackTrace();
+ DebugTool.logError(TAG, KEY_BODY + " key doesn't exist in bulk data.", e);
}
return result;
@@ -224,8 +221,7 @@ public class OnSystemRequest extends RPCNotification {
Hashtable<String, Object> httpHeadersHash = JsonRPCMarshaller.deserializeJSONObject(httpHeadersJson);
result = new Headers(httpHeadersHash);
} catch (JSONException e) {
- DebugTool.logError(TAG, KEY_HEADERS + " key doesn't exist in bulk data.");
- e.printStackTrace();
+ DebugTool.logError(TAG, KEY_HEADERS + " key doesn't exist in bulk data.", e);
}
return result;
diff --git a/base/src/main/java/com/smartdevicelink/transport/SiphonServer.java b/base/src/main/java/com/smartdevicelink/transport/SiphonServer.java
index cd22abc04..39871b777 100644
--- a/base/src/main/java/com/smartdevicelink/transport/SiphonServer.java
+++ b/base/src/main/java/com/smartdevicelink/transport/SiphonServer.java
@@ -107,7 +107,7 @@ public class SiphonServer {
try {
SiphonServer.closeServer();
} catch (IOException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error while trying to close siphon server", e);
}
return m_listenPort;
diff --git a/base/src/main/java/com/smartdevicelink/util/FileUtls.java b/base/src/main/java/com/smartdevicelink/util/FileUtls.java
index 449fc6ea9..747052415 100644
--- a/base/src/main/java/com/smartdevicelink/util/FileUtls.java
+++ b/base/src/main/java/com/smartdevicelink/util/FileUtls.java
@@ -74,7 +74,7 @@ public class FileUtls {
try {
return Files.readAllBytes(file.toPath());
} catch (IOException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error trying to get file data", e);
}
}
}