summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2018-11-16 11:20:48 -0500
committerJoey Grover <joeygrover@gmail.com>2018-11-16 11:20:48 -0500
commitc31b1ee44b193194c461352fef16c63010444b59 (patch)
tree5efbda42e59800aa245fd1b14e63f6b14631fd6d
parent93981e813c2ad540a3651949f48ca875f718ec2a (diff)
downloadsdl_android-c31b1ee44b193194c461352fef16c63010444b59.tar.gz
Fix #925
Also update the gradle file to next hotfix version
-rw-r--r--sdl_android/build.gradle4
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java67
2 files changed, 53 insertions, 18 deletions
diff --git a/sdl_android/build.gradle b/sdl_android/build.gradle
index cf30f790f..da605fe69 100644
--- a/sdl_android/build.gradle
+++ b/sdl_android/build.gradle
@@ -5,8 +5,8 @@ android {
defaultConfig {
minSdkVersion 8
targetSdkVersion 26
- versionCode 9
- versionName "4.7.1"
+ versionCode 10
+ versionName "4.7.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
resValue "string", "SDL_LIB_VERSION", '\"' + versionName + '\"'
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java b/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java
index 1a88fb1b1..0bc55f347 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java
@@ -59,6 +59,7 @@ import com.smartdevicelink.transport.utl.TransportRecord;
import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
@@ -74,6 +75,9 @@ public class TransportBroker {
private static final int MAX_MESSAGING_VERSION = 2;
private static final int MIN_MESSAGING_VERSION = 1;
+ /** Version of the router service that supports the new additional transports (USB and TCP) */
+ private static final int RS_MULTI_TRANSPORT_SUPPORT = 8;
+
private final String WHERE_TO_REPLY_PREFIX = "com.sdl.android.";
private String appId = null;
private String whereToReply = null;
@@ -217,20 +221,16 @@ public class TransportBroker {
// yay! we have been registered. Now what?
broker.registeredWithRouterService = true;
if (bundle != null) {
- if (bundle.containsKey(TransportConstants.HARDWARE_CONNECTED)) {
- if (bundle.containsKey(TransportConstants.CONNECTED_DEVICE_STRING_EXTRA_NAME)) {
- //Keep track if we actually get this
- }
- //broker.onHardwareConnected(TransportType.valueOf(bundle.getString(TransportConstants.HARDWARE_CONNECTED)));
- }
- if (bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) {
- ArrayList<TransportRecord> transports = bundle.getParcelableArrayList(TransportConstants.CURRENT_HARDWARE_CONNECTED);
- broker.onHardwareConnected(transports);
- }
if (bundle.containsKey(TransportConstants.ROUTER_SERVICE_VERSION)) {
broker.routerServiceVersion = bundle.getInt(TransportConstants.ROUTER_SERVICE_VERSION);
}
+
+ if (bundle.containsKey(TransportConstants.HARDWARE_CONNECTED) || bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) {
+ //A connection is already available
+ handleConnectionEvent(bundle, broker);
+ }
+
}
break;
case TransportConstants.REGISTRATION_RESPONSE_DENIED_LEGACY_MODE_ENABLED:
@@ -330,12 +330,8 @@ public class TransportBroker {
}
if (bundle.containsKey(TransportConstants.HARDWARE_CONNECTED) || bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) {
- //broker.onHardwareConnected(TransportType.valueOf(bundle.getString(TransportConstants.HARDWARE_CONNECTED)));
-
- if (bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) {
- ArrayList<TransportRecord> transports = bundle.getParcelableArrayList(TransportConstants.CURRENT_HARDWARE_CONNECTED);
- broker.onHardwareConnected(transports);
- }
+ //This is a connection event
+ handleConnectionEvent(bundle,broker);
break;
}
break;
@@ -344,6 +340,45 @@ public class TransportBroker {
}
}
+
+ /**
+ * Handle a potential connection event. This will adapt legacy router service implementaions
+ * into the new multiple transport scheme.
+ * @param bundle the received bundle from the router service
+ * @param broker reference to the transport broker that this handler exists
+ * @return if a connection event was triggered in the supplied broker
+ */
+ private boolean handleConnectionEvent(Bundle bundle, TransportBroker broker){
+ if (broker.routerServiceVersion < RS_MULTI_TRANSPORT_SUPPORT) {
+ //Previous versions of the router service only supports a single
+ //transport, so this will be the only extra received
+ if (bundle.containsKey(TransportConstants.HARDWARE_CONNECTED)) {
+ String transportName = "";
+ if (bundle.containsKey(TransportConstants.CONNECTED_DEVICE_STRING_EXTRA_NAME)) {
+ //Keep track if we actually get this
+ transportName = bundle.getString(TransportConstants.CONNECTED_DEVICE_STRING_EXTRA_NAME);
+ }
+ TransportType transportType = TransportType.valueOf(bundle.getString(TransportConstants.HARDWARE_CONNECTED));
+ if(transportType == null){
+ transportType = TransportType.BLUETOOTH;
+ }
+ TransportRecord record = new TransportRecord(transportType,transportName);
+
+ broker.onHardwareConnected(Collections.singletonList(record));
+ return true;
+ }
+ } else{
+ //Router service supports multiple transport
+
+ if (bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) {
+ ArrayList<TransportRecord> transports = bundle.getParcelableArrayList(TransportConstants.CURRENT_HARDWARE_CONNECTED);
+ broker.onHardwareConnected(transports);
+ return true;
+ }
+ }
+ return false;
+ }
+
}