aboutsummaryrefslogtreecommitdiff
path: root/car-lib
diff options
context:
space:
mode:
authorAsaf Rosenfeld <asafro@google.com>2017-03-04 06:44:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-03-04 06:44:15 +0000
commit8b1d4ed9d5c8b835ca46622fcd9be17549abfd14 (patch)
tree6f0653ebb70733dc4c2fcd25c06ab3c4b26934d1 /car-lib
parenteb4f7b6c84d4cc7343c13a77a42b26fbcb1a5b91 (diff)
parent25a8740a92afac3ef63ce118c5d4ccf9202e6e24 (diff)
downloadCar-8b1d4ed9d5c8b835ca46622fcd9be17549abfd14.tar.gz
Merge "Integrate routing manager: * subscriptions request from the HAL and Subscribers Manager reach publishers. * data from Publishers Manager and HAL reach subscribers."
Diffstat (limited to 'car-lib')
-rw-r--r--car-lib/src/android/car/vms/IVmsSubscriberService.aidl29
-rw-r--r--car-lib/src/android/car/vms/VmsPublisherClientService.java3
-rw-r--r--car-lib/src/android/car/vms/VmsSubscriberManager.java31
3 files changed, 49 insertions, 14 deletions
diff --git a/car-lib/src/android/car/vms/IVmsSubscriberService.aidl b/car-lib/src/android/car/vms/IVmsSubscriberService.aidl
index 21af78c04a..9cb0e79f75 100644
--- a/car-lib/src/android/car/vms/IVmsSubscriberService.aidl
+++ b/car-lib/src/android/car/vms/IVmsSubscriberService.aidl
@@ -24,23 +24,32 @@ import android.car.vms.VmsProperty;
*/
interface IVmsSubscriberService {
/**
- * Subscribes the listener to receive messages from layer/version. If silent is true, the
- * service will not send subscription notifications to publishers (i.e. this is a passive
- * subscriber). Note that removeOnVmsMessageReceivedListener does not require the parameter
- * silent because the service keeps track of silent subscribes and it will not generate
- * unsubscribe events in this scenario.
+ * Subscribes the listener to receive messages from layer/version.
*/
void addOnVmsMessageReceivedListener(
- int layer,
- int version,
in IOnVmsMessageReceivedListener listener,
- boolean silent) = 0;
+ int layer,
+ int version) = 0;
+
+ /**
+ * Subscribes the listener to receive messages from all published layer/version. The
+ * service will not send any subscription notifications to publishers (i.e. this is a passive
+ * subscriber).
+ */
+ void addOnVmsMessageReceivedPassiveListener(in IOnVmsMessageReceivedListener listener) = 1;
/**
   * Tells the VmsSubscriberService a client unsubscribes to layer messages.
   */
void removeOnVmsMessageReceivedListener(
+ in IOnVmsMessageReceivedListener listener,
int layer,
- int version,
- in IOnVmsMessageReceivedListener listener) = 1;
+ int version) = 2;
+
+ /**
+    * Tells the VmsSubscriberService a passive client unsubscribes. This will not unsubscribe
+ * the listener from any specific layer it has subscribed to.
+    */
+ void removeOnVmsMessageReceivedPassiveListener(
+ in IOnVmsMessageReceivedListener listener) = 3;
}
diff --git a/car-lib/src/android/car/vms/VmsPublisherClientService.java b/car-lib/src/android/car/vms/VmsPublisherClientService.java
index 092b397a59..4dc49977dc 100644
--- a/car-lib/src/android/car/vms/VmsPublisherClientService.java
+++ b/car-lib/src/android/car/vms/VmsPublisherClientService.java
@@ -94,6 +94,9 @@ public abstract class VmsPublisherClientService extends Service {
* @return if the call to the method VmsPublisherService.publish was successful.
*/
public final boolean publish(int layerId, int layerVersion, byte[] payload) {
+ if (DBG) {
+ Log.d(TAG, "Publishing for layer ID: " + layerId + " Version: " + layerVersion);
+ }
if (mVmsPublisherService == null) {
throw new IllegalStateException("VmsPublisherService not set.");
}
diff --git a/car-lib/src/android/car/vms/VmsSubscriberManager.java b/car-lib/src/android/car/vms/VmsSubscriberManager.java
index 0fb32d66e4..87486a46dc 100644
--- a/car-lib/src/android/car/vms/VmsSubscriberManager.java
+++ b/car-lib/src/android/car/vms/VmsSubscriberManager.java
@@ -151,7 +151,7 @@ public final class VmsSubscriberManager implements CarManagerBase {
* it only listens passively.
* @throws IllegalStateException if the listener was not set via {@link #setListener}.
*/
- public void subscribe(int layer, int version, boolean silentSubscribe)
+ public void subscribe(int layer, int version)
throws CarNotConnectedException {
if (DBG) {
Log.d(TAG, "Subscribing to layer: " + layer + ", version: " + version);
@@ -166,8 +166,31 @@ public final class VmsSubscriberManager implements CarManagerBase {
throw new IllegalStateException("Listener was not set.");
}
try {
- mVmsSubscriberService.addOnVmsMessageReceivedListener(layer, version, mIListener,
- silentSubscribe);
+ mVmsSubscriberService.addOnVmsMessageReceivedListener(mIListener, layer, version);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Could not connect: ", e);
+ throw new CarNotConnectedException(e);
+ } catch (IllegalStateException ex) {
+ Car.checkCarNotConnectedExceptionFromCarService(ex);
+ }
+ }
+
+ public void subscribeAll()
+ throws CarNotConnectedException {
+ if (DBG) {
+ Log.d(TAG, "Subscribing passively to all data messages");
+ }
+ OnVmsMessageReceivedListener listener;
+ synchronized (mListenerLock) {
+ listener = mListener;
+ }
+ if (listener == null) {
+ Log.w(TAG, "subscribe: listener was not set, " +
+ "setListener must be called first.");
+ throw new IllegalStateException("Listener was not set.");
+ }
+ try {
+ mVmsSubscriberService.addOnVmsMessageReceivedPassiveListener(mIListener);
} catch (RemoteException e) {
Log.e(TAG, "Could not connect: ", e);
throw new CarNotConnectedException(e);
@@ -197,7 +220,7 @@ public final class VmsSubscriberManager implements CarManagerBase {
throw new IllegalStateException("Listener was not set.");
}
try {
- mVmsSubscriberService.removeOnVmsMessageReceivedListener(layer, version, mIListener);
+ mVmsSubscriberService.removeOnVmsMessageReceivedListener(mIListener, layer, version);
} catch (RemoteException e) {
Log.e(TAG, "Failed to unregister subscriber", e);
// ignore