More details in Hal with sensor pipeline improvements for batching
- updated CarSensorEvent to use int array instead of byte as most
use cases involve int value manipulations.
- removed unused sensor types in CarSensorManager. They can brought back
later as necessary.
- CarSensorManager subscription works for several sensors.
bug: 22701368
Change-Id: I2fb8901fe5266693aeae5f1b3f2b3adb75056a93
(cherry picked from commit d68bc574a27aee0fb6750ed301d247645d7bbb1e)
diff --git a/service/src/com/android/car/DrivingStatePolicy.java b/service/src/com/android/car/DrivingStatePolicy.java
index de91318..107b228 100644
--- a/service/src/com/android/car/DrivingStatePolicy.java
+++ b/service/src/com/android/car/DrivingStatePolicy.java
@@ -24,9 +24,11 @@
import android.support.car.ICarSensorEventListener;
import android.util.Log;
-import com.android.car.hal.SensorHalBase.SensorListener;
+import com.android.car.hal.SensorHalServiceBase.SensorListener;
import java.io.PrintWriter;
+import java.util.List;
+
/**
* Logical sensor implementing driving state policy. This policy sets only two states:
@@ -47,8 +49,10 @@
private final ICarSensorEventListener mICarSensorEventListener =
new ICarSensorEventListener.Stub() {
@Override
- public void onSensorChanged(CarSensorEvent event) {
- handleSensorEvent(event);
+ public void onSensorChanged(List<CarSensorEvent> events) {
+ for (CarSensorEvent event: events) {
+ handleSensorEvent(event);
+ }
}
};
@@ -118,7 +122,7 @@
@Override
public synchronized boolean requestSensorStart(int sensorType, int rate) {
mStarted = true;
- mSensorListener.onSensorData(createEvent(mDringState));
+ mSensorListener.onSensorEvent(createEvent(mDringState));
return true;
}
@@ -149,7 +153,7 @@
int drivingState = recalcDrivingStateLocked();
if (drivingState != mDringState && mSensorListener != null) {
mDringState = drivingState;
- mSensorListener.onSensorData(createEvent(mDringState));
+ mSensorListener.onSensorEvent(createEvent(mDringState));
}
break;
default:
@@ -184,24 +188,24 @@
}
private boolean isParkingBrakeApplied(CarSensorEvent event) {
- return event.byteValues[0] == 1;
+ return event.intValues[0] == 1;
}
private boolean isGearInParkingOrNeutral(CarSensorEvent event) {
- byte gear = event.byteValues[0];
- return (gear == ((byte) CarSensorEvent.GEAR_NEUTRAL & 0xff)) ||
- (gear == ((byte) CarSensorEvent.GEAR_PARK & 0xff));
+ int gear = event.intValues[0];
+ return (gear == CarSensorEvent.GEAR_NEUTRAL) ||
+ (gear == CarSensorEvent.GEAR_PARK);
}
private boolean isGearInParking(CarSensorEvent event) {
- byte gear = event.byteValues[0];
- return gear == ((byte) CarSensorEvent.GEAR_PARK & 0xff);
+ int gear = event.intValues[0];
+ return gear == CarSensorEvent.GEAR_PARK;
}
private CarSensorEvent createEvent(int drivingState) {
CarSensorEvent event = new CarSensorEvent(CarSensorManager.SENSOR_TYPE_DRIVING_STATUS,
SystemClock.elapsedRealtimeNanos(), 0, 1);
- event.byteValues[0] = (byte) (drivingState & 0xff);
+ event.intValues[0] = drivingState;
return event;
}
}