aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2016-10-12 00:57:31 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-10-12 00:57:31 +0000
commitbbdfa549e69e702096f217260a096299a656f9a8 (patch)
tree0ef5e8402d1e1e604980a0fcace3baf1d54541b4
parenta88b3e7249d13e7d3dc04289d2e129694cfab8c4 (diff)
parent5f537ee9564869b5c281abcf885553de6d42a148 (diff)
downloadCar-bbdfa549e69e702096f217260a096299a656f9a8.tar.gz
Merge "Handle all zone types properly in CarPopertyUtils." into nyc-car-dev
-rw-r--r--car-lib/api/system-current.txt1
-rw-r--r--car-lib/src/android/car/VehicleAreaType.java18
-rw-r--r--car-lib/src/android/car/hardware/CarPropertyConfig.java5
-rw-r--r--libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetworkConsts.java81
-rwxr-xr-xlibvehiclenetwork/tool/vehiclehal_code_gen.py28
-rw-r--r--service/src/com/android/car/hal/CarPropertyUtils.java30
6 files changed, 149 insertions, 14 deletions
diff --git a/car-lib/api/system-current.txt b/car-lib/api/system-current.txt
index d853ec2c77..3b4013a306 100644
--- a/car-lib/api/system-current.txt
+++ b/car-lib/api/system-current.txt
@@ -90,6 +90,7 @@ package android.car {
public final class VehicleAreaType {
field public static final int VEHICLE_AREA_TYPE_DOOR = 4; // 0x4
+ field public static final int VEHICLE_AREA_TYPE_MIRROR = 5; // 0x5
field public static final int VEHICLE_AREA_TYPE_NONE = 0; // 0x0
field public static final int VEHICLE_AREA_TYPE_SEAT = 3; // 0x3
field public static final int VEHICLE_AREA_TYPE_WINDOW = 2; // 0x2
diff --git a/car-lib/src/android/car/VehicleAreaType.java b/car-lib/src/android/car/VehicleAreaType.java
index 1cc25a10ae..f4b5b91455 100644
--- a/car-lib/src/android/car/VehicleAreaType.java
+++ b/car-lib/src/android/car/VehicleAreaType.java
@@ -15,8 +15,12 @@
*/
package android.car;
+import android.annotation.IntDef;
import android.annotation.SystemApi;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* Represents vehicle area such as window, door, seat, zone, etc.
* See also {@link android.car.VehicleDoor}, {@link android.car.VehicleSeat},
@@ -33,6 +37,18 @@ public final class VehicleAreaType {
public static final int VEHICLE_AREA_TYPE_WINDOW = 2;
public static final int VEHICLE_AREA_TYPE_SEAT = 3;
public static final int VEHICLE_AREA_TYPE_DOOR = 4;
-
+ public static final int VEHICLE_AREA_TYPE_MIRROR = 5;
private VehicleAreaType() {}
+
+ /** @hide */
+ @IntDef({
+ VEHICLE_AREA_TYPE_NONE,
+ VEHICLE_AREA_TYPE_ZONE,
+ VEHICLE_AREA_TYPE_WINDOW,
+ VEHICLE_AREA_TYPE_SEAT,
+ VEHICLE_AREA_TYPE_DOOR,
+ VEHICLE_AREA_TYPE_MIRROR
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface VehicleAreaTypeValue {}
}
diff --git a/car-lib/src/android/car/hardware/CarPropertyConfig.java b/car-lib/src/android/car/hardware/CarPropertyConfig.java
index a93f2bcc57..36a3858bd0 100644
--- a/car-lib/src/android/car/hardware/CarPropertyConfig.java
+++ b/car-lib/src/android/car/hardware/CarPropertyConfig.java
@@ -18,6 +18,7 @@ package android.car.hardware;
import android.annotation.Nullable;
import android.annotation.SystemApi;
+import android.car.VehicleAreaType;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.SparseArray;
@@ -52,11 +53,11 @@ public class CarPropertyConfig<T> implements Parcelable {
public int getPropertyId() { return mPropertyId; }
public Class<T> getPropertyType() { return mType; }
- public int getAreaType() { return mAreaType; }
+ public @VehicleAreaType.VehicleAreaTypeValue int getAreaType() { return mAreaType; }
/** Returns true if this property doesn't hold car area-specific configuration */
public boolean isGlobalProperty() {
- return mAreaType == 0;
+ return mAreaType == VehicleAreaType.VEHICLE_AREA_TYPE_NONE;
}
public int getAreaCount() {
diff --git a/libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetworkConsts.java b/libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetworkConsts.java
index b0cd19bdbd..047b3ab419 100644
--- a/libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetworkConsts.java
+++ b/libvehiclenetwork/java/src/com/android/car/vehiclenetwork/VehicleNetworkConsts.java
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-//Autogenerated from vehicle.h using libvehiclenetwork/tool/vehicle_code_gen.py.
-//Do not modify manually.
+// Autogenerated from vehicle.h using
+// libvehiclenetwork/tool/vehiclehal_code_gen.py.
+// Do not modify manually.
package com.android.car.vehiclenetwork;
@@ -219,6 +220,7 @@ default: return VehicleValueType.VEHICLE_VALUE_TYPE_SHOUD_NOT_USE;
public static String getVehiclePropertyName(int property) {
switch (property) {
+case VEHICLE_PROPERTY_INVALID: return "VEHICLE_PROPERTY_INVALID";
case VEHICLE_PROPERTY_INFO_VIN: return "VEHICLE_PROPERTY_INFO_VIN";
case VEHICLE_PROPERTY_INFO_MAKE: return "VEHICLE_PROPERTY_INFO_MAKE";
case VEHICLE_PROPERTY_INFO_MODEL: return "VEHICLE_PROPERTY_INFO_MODEL";
@@ -511,6 +513,61 @@ default: return null;
}
}
+public static int getVehicleZoneType(int property) {
+switch (property) {
+case VEHICLE_PROPERTY_HVAC_FAN_SPEED: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_FAN_DIRECTION: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_TEMPERATURE_CURRENT: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_DEFROSTER: return VehicleZoneType.VEHICLE_ZONE_TYPE_WINDOW ;
+case VEHICLE_PROPERTY_HVAC_AC_ON: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_MAX_AC_ON: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_MAX_DEFROST_ON: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_RECIRC_ON: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_DUAL_ON: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_AUTO_ON: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_SEAT_TEMPERATURE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_HVAC_ACTUAL_FAN_SPEED_RPM: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_POWER_ON: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_HVAC_FAN_DIRECTION_AVAILABLE: return VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE ;
+case VEHICLE_PROPERTY_DOOR_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_DOOR ;
+case VEHICLE_PROPERTY_DOOR_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_DOOR ;
+case VEHICLE_PROPERTY_DOOR_LOCK: return VehicleZoneType.VEHICLE_ZONE_TYPE_DOOR ;
+case VEHICLE_PROPERTY_MIRROR_Z_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_MIRROR ;
+case VEHICLE_PROPERTY_MIRROR_Z_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_MIRROR ;
+case VEHICLE_PROPERTY_MIRROR_Y_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_MIRROR ;
+case VEHICLE_PROPERTY_MIRROR_Y_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_MIRROR ;
+case VEHICLE_PROPERTY_SEAT_MEMORY_SELECT: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_MEMORY_SET: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_BELT_BUCKLED: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_BELT_HEIGHT_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_BELT_HEIGHT_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_FORE_AFT_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_FORE_AFT_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_1_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_1_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_2_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_BACKREST_ANGLE_2_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_HEIGHT_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_HEIGHT_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_DEPTH_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_DEPTH_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_TILT_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_TILT_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_LUMBAR_FORE_AFT_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_LUMBAR_FORE_AFT_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_LUMBAR_SIDE_SUPPORT_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_LUMBAR_SIDE_SUPPORT_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_HEADREST_HEIGHT_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_HEADREST_HEIGHT_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_HEADREST_ANGLE_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_HEADREST_ANGLE_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_HEADREST_FORE_AFT_POS: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+case VEHICLE_PROPERTY_SEAT_HEADREST_FORE_AFT_MOVE: return VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT ;
+default: return VehicleZoneType.VEHICLE_ZONE_TYPE_NONE;
+}
+}
+
@@ -1231,6 +1288,26 @@ default: return "UNKNOWN";
}
}
+public static class VehicleZoneType {
+public static final int VEHICLE_ZONE_TYPE_NONE = 0x00;
+public static final int VEHICLE_ZONE_TYPE_ZONE = 0x01;
+public static final int VEHICLE_ZONE_TYPE_SEAT = 0x02;
+public static final int VEHICLE_ZONE_TYPE_DOOR = 0x04;
+public static final int VEHICLE_ZONE_TYPE_WINDOW = 0x10;
+public static final int VEHICLE_ZONE_TYPE_MIRROR = 0x20;
+public static String enumToString(int v) {
+switch(v) {
+case VEHICLE_ZONE_TYPE_NONE: return "VEHICLE_ZONE_TYPE_NONE";
+case VEHICLE_ZONE_TYPE_ZONE: return "VEHICLE_ZONE_TYPE_ZONE";
+case VEHICLE_ZONE_TYPE_SEAT: return "VEHICLE_ZONE_TYPE_SEAT";
+case VEHICLE_ZONE_TYPE_DOOR: return "VEHICLE_ZONE_TYPE_DOOR";
+case VEHICLE_ZONE_TYPE_WINDOW: return "VEHICLE_ZONE_TYPE_WINDOW";
+case VEHICLE_ZONE_TYPE_MIRROR: return "VEHICLE_ZONE_TYPE_MIRROR";
+default: return "UNKNOWN";
+}
+}
+}
+
public static class VehicleBoolean {
public static final int VEHICLE_FALSE = 0x00;
public static final int VEHICLE_TRUE = 0x01;
diff --git a/libvehiclenetwork/tool/vehiclehal_code_gen.py b/libvehiclenetwork/tool/vehiclehal_code_gen.py
index dfabd7dccd..e208e8c69b 100755
--- a/libvehiclenetwork/tool/vehiclehal_code_gen.py
+++ b/libvehiclenetwork/tool/vehiclehal_code_gen.py
@@ -37,8 +37,9 @@ JAVA_HEADER = \
* limitations under the License.
*/
-//Autogenerated from vehicle.h using libvehiclenetwork/tool/vehicle_code_gen.py.
-//Do not modify manually.
+// Autogenerated from vehicle.h using
+// libvehiclenetwork/tool/vehiclehal_code_gen.py.
+// Do not modify manually.
package com.android.car.vehiclenetwork;
@@ -50,7 +51,7 @@ JAVA_TRAIL = \
}
"""
-RE_PROPERTY_PATTERN = r'/\*\*(.*?)\*/\n\#define\s+VEHICLE_PROPERTY_(\S+)\s+(\(0x\S+\))'
+RE_PROPERTY_PATTERN = r'/\*\*((.(?!\/\/===))*?)\*/\n\#define\s+VEHICLE_PROPERTY_(\S+)\s+(\(0x\S+\))'
RE_ENUM_PATTERN = r'enum\s+(\S+)\s+\{\S*(.*?)\}'
RE_ENUM_ENTRY_PATTERN = r'(\S+)\s*=\s*(.*?)[,\n]'
RE_AUDIO_EXT_ROUTING_PATTERN = r'\n\#define\s+VEHICLE_PROPERTY_AUDIO_EXT_ROUTING_SOURCE_(\S+)\s+\"(\S+)\"'
@@ -64,6 +65,7 @@ class PropertyInfo(object):
self.access = ""
self.unit = ""
self.startEnd = 0 # _START/END property
+ self.zoneType = ""
def __str__(self):
r = ["value:" + self.value]
@@ -163,6 +165,18 @@ switch (property) {"""
}
}
"""
+ #now implement getVehicleZoneType
+ print \
+"""public static int getVehicleZoneType(int property) {
+switch (property) {"""
+ for p in props:
+ if p.zoneType != "":
+ print "case " + p.name + ": return VehicleZoneType." + p.zoneType + " ;"
+ print \
+"""default: return VehicleZoneType.VEHICLE_ZONE_TYPE_NONE;
+}
+}
+"""
def printEnum(e):
print "public static class " + toJavaStyleName(e.name) + " {"
@@ -208,8 +222,8 @@ def main(argv):
property_re = re.compile(RE_PROPERTY_PATTERN, re.MULTILINE | re.DOTALL)
for match in property_re.finditer(text):
words = match.group(1).split()
- name = "VEHICLE_PROPERTY_" + match.group(2)
- value = match.group(3)
+ name = "VEHICLE_PROPERTY_" + match.group(3)
+ value = match.group(4)
if (value[0] == "(" and value[-1] == ")"):
value = value[1:-1]
prop = PropertyInfo(value, name)
@@ -227,6 +241,9 @@ def main(argv):
elif words[i] == "@unit":
i += 1
prop.unit = words[i]
+ elif words[i] == "@zone_type":
+ i += 1
+ prop.zoneType = words[i]
elif words[i] == "@range_start" or words[i] == "@range_end":
prop.startEnd = 1
i += 1
@@ -272,4 +289,3 @@ def main(argv):
if __name__ == '__main__':
main(sys.argv)
-
diff --git a/service/src/com/android/car/hal/CarPropertyUtils.java b/service/src/com/android/car/hal/CarPropertyUtils.java
index 849417e3bd..cb3df3eb71 100644
--- a/service/src/com/android/car/hal/CarPropertyUtils.java
+++ b/service/src/com/android/car/hal/CarPropertyUtils.java
@@ -35,6 +35,12 @@ import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleValueTy
import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleValueType.VEHICLE_VALUE_TYPE_ZONED_INT32_VEC2;
import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleValueType.VEHICLE_VALUE_TYPE_ZONED_INT32_VEC3;
import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleValueType.VEHICLE_VALUE_TYPE_ZONED_INT32_VEC4;
+import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleZoneType.VEHICLE_ZONE_TYPE_NONE;
+import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleZoneType.VEHICLE_ZONE_TYPE_ZONE;
+import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleZoneType.VEHICLE_ZONE_TYPE_SEAT;
+import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleZoneType.VEHICLE_ZONE_TYPE_DOOR;
+import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleZoneType.VEHICLE_ZONE_TYPE_WINDOW;
+import static com.android.car.vehiclenetwork.VehicleNetworkConsts.VehicleZoneType.VEHICLE_ZONE_TYPE_MIRROR;
import static com.android.car.vehiclenetwork.VehiclePropValueUtil.getVectorValueType;
import static java.lang.Integer.toHexString;
@@ -45,6 +51,7 @@ import android.car.hardware.CarPropertyValue;
import com.google.protobuf.ByteString;
+import com.android.car.vehiclenetwork.VehicleNetworkConsts;
import com.android.car.vehiclenetwork.VehicleNetworkProto.VehiclePropConfig;
import com.android.car.vehiclenetwork.VehicleNetworkProto.VehiclePropValue;
@@ -135,9 +142,7 @@ import java.util.List;
static CarPropertyConfig<?> toCarPropertyConfig(VehiclePropConfig p, int propertyId) {
int[] areas = VehicleZoneUtil.listAllZones(p.getZones());
- // TODO: handle other vehicle area types.
- int areaType = areas.length == 0
- ? VehicleAreaType.VEHICLE_AREA_TYPE_NONE : VehicleAreaType.VEHICLE_AREA_TYPE_ZONE;
+ int areaType = getVehicleAreaType(VehicleNetworkConsts.getVehicleZoneType(propertyId));
Class<?> clazz = getJavaClass(p.getValueType());
if (clazz == Boolean.class || clazz == byte[].class || clazz == String.class) {
@@ -167,6 +172,25 @@ import java.util.List;
}
}
+ private static @VehicleAreaType.VehicleAreaTypeValue int getVehicleAreaType(int zoneType) {
+ switch (zoneType) {
+ case VEHICLE_ZONE_TYPE_NONE:
+ return VehicleAreaType.VEHICLE_AREA_TYPE_NONE;
+ case VEHICLE_ZONE_TYPE_ZONE:
+ return VehicleAreaType.VEHICLE_AREA_TYPE_ZONE;
+ case VEHICLE_ZONE_TYPE_SEAT:
+ return VehicleAreaType.VEHICLE_AREA_TYPE_SEAT;
+ case VEHICLE_ZONE_TYPE_DOOR:
+ return VehicleAreaType.VEHICLE_AREA_TYPE_DOOR;
+ case VEHICLE_ZONE_TYPE_WINDOW:
+ return VehicleAreaType.VEHICLE_AREA_TYPE_WINDOW;
+ case VEHICLE_ZONE_TYPE_MIRROR:
+ return VehicleAreaType.VEHICLE_AREA_TYPE_MIRROR;
+ default:
+ throw new RuntimeException("Unsupported zone type " + zoneType);
+ }
+ }
+
private static Class<?> getJavaClass(int halType) {
switch (halType) {
case VEHICLE_VALUE_TYPE_BOOLEAN: