diff options
author | Asaf Rosenfeld <asafro@google.com> | 2017-03-04 06:44:15 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-03-04 06:44:15 +0000 |
commit | 8b1d4ed9d5c8b835ca46622fcd9be17549abfd14 (patch) | |
tree | 6f0653ebb70733dc4c2fcd25c06ab3c4b26934d1 /car-lib | |
parent | eb4f7b6c84d4cc7343c13a77a42b26fbcb1a5b91 (diff) | |
parent | 25a8740a92afac3ef63ce118c5d4ccf9202e6e24 (diff) | |
download | Car-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')
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 |