aboutsummaryrefslogtreecommitdiff
path: root/vehicle-hal-support-lib
diff options
context:
space:
mode:
Diffstat (limited to 'vehicle-hal-support-lib')
-rw-r--r--vehicle-hal-support-lib/src/com/android/car/vehiclehal/test/MockedVehicleHal.java23
1 files changed, 21 insertions, 2 deletions
diff --git a/vehicle-hal-support-lib/src/com/android/car/vehiclehal/test/MockedVehicleHal.java b/vehicle-hal-support-lib/src/com/android/car/vehiclehal/test/MockedVehicleHal.java
index 1a5b8c6dcc..0da3565fdf 100644
--- a/vehicle-hal-support-lib/src/com/android/car/vehiclehal/test/MockedVehicleHal.java
+++ b/vehicle-hal-support-lib/src/com/android/car/vehiclehal/test/MockedVehicleHal.java
@@ -21,8 +21,6 @@ import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.fail;
-import com.google.android.collect.Lists;
-
import android.hardware.automotive.vehicle.V2_0.IVehicle;
import android.hardware.automotive.vehicle.V2_0.IVehicleCallback;
import android.hardware.automotive.vehicle.V2_0.StatusCode;
@@ -31,6 +29,9 @@ import android.hardware.automotive.vehicle.V2_0.VehiclePropConfig;
import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess;
import android.os.RemoteException;
+import android.os.SystemClock;
+
+import com.google.android.collect.Lists;
import java.util.ArrayList;
import java.util.HashMap;
@@ -74,6 +75,23 @@ public class MockedVehicleHal extends IVehicle.Stub {
addProperty(config, new StaticPropertyHandler(value));
}
+ public boolean waitForSubscriber(int propId, long timeoutMillis) {
+ long startTime = SystemClock.elapsedRealtime();
+ try {
+ synchronized (this) {
+ while (mSubscribers.get(propId) == null) {
+ long waitMillis = startTime - SystemClock.elapsedRealtime() + timeoutMillis;
+ if (waitMillis < 0) break;
+ wait(waitMillis);
+ }
+
+ return mSubscribers.get(propId) != null;
+ }
+ } catch (InterruptedException e) {
+ return false;
+ }
+ }
+
public synchronized void injectEvent(VehiclePropValue value) {
List<IVehicleCallback> callbacks = mSubscribers.get(value.prop);
assertNotNull("Injecting event failed for property: " + value.prop
@@ -156,6 +174,7 @@ public class MockedVehicleHal extends IVehicle.Stub {
if (subscribers == null) {
subscribers = new ArrayList<>();
mSubscribers.put(opt.propId, subscribers);
+ notifyAll();
}
subscribers.add(callback);
}