Added INFO_VEHICLE_SIZE_CLASS to HAL

Bug: 374759562
Test: atest VtsHalAutomotiveVehicle_TargetTest
Change-Id: I7cf17e3664dfa31e46420a197e17fd120f335939
diff --git a/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json b/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json
index 5e78834..4d64134 100644
--- a/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json
+++ b/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json
@@ -98,6 +98,15 @@
                 "description": "Public trim name of the vehicle.\nThis property must communicate the vehicle's public trim name.\nFor example, say an OEM manufactures two different versions of a vehicle model: \"makeName modelName\" and \"makeName modelName Sport\" This property must be empty for the first vehicle (i.e. base model), and set to \"Sport\" for the second vehicle."
             },
             {
+                "name": "Vehicle Size Class.",
+                "value": 289472782,
+                "data_enums": [
+                    "VehicleSizeClass"
+                ],
+                "data_enum": "VehicleSizeClass",
+                "description": "Vehicle Size Class.\nThis property must communicate an integer array that contains the size classifications followed by the vehicle as enumerated in VehicleSizeClass.aidl. If the vehicle follows a single standard, then the array size of the property's value should be 1. If the vehicle follows multiple standards that the OEM wants to communicate, this may be communicated as additional values in the array.\nFor example, suppose a vehicle model follows the VehicleSizeClass.EU_A_SEGMENT standard in the EU and the VehicleSizeClass.JPN_KEI standard in Japan. In this scenario this property must return an intArray = [VehicleSizeClass.EU_A_SEGMENT, VehicleSizeClass.JPN_KEI]. If this vehicle only followed the VehicleSizeClass.EU_A_SEGMENT standard, then we expect intArray = [VehicleSizeClass.EU_A_SEGMENT]."
+            },
+            {
                 "name": "PERF_ODOMETER",
                 "value": 291504644,
                 "description": "Current odometer value of the vehicle"
@@ -2959,6 +2968,152 @@
         ]
     },
     {
+        "name": "VehicleSizeClass",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "EPA_TWO_SEATER",
+                "value": 256
+            },
+            {
+                "name": "EPA_MINICOMPACT",
+                "value": 257
+            },
+            {
+                "name": "EPA_SUBCOMPACT",
+                "value": 258
+            },
+            {
+                "name": "EPA_COMPACT",
+                "value": 259
+            },
+            {
+                "name": "EPA_MIDSIZE",
+                "value": 260
+            },
+            {
+                "name": "EPA_LARGE",
+                "value": 261
+            },
+            {
+                "name": "EPA_SMALL_STATION_WAGON",
+                "value": 262
+            },
+            {
+                "name": "EPA_MIDSIZE_STATION_WAGON",
+                "value": 263
+            },
+            {
+                "name": "EPA_LARGE_STATION_WAGON",
+                "value": 264
+            },
+            {
+                "name": "EPA_SMALL_PICKUP_TRUCK",
+                "value": 265
+            },
+            {
+                "name": "EPA_STANDARD_PICKUP_TRUCK",
+                "value": 266
+            },
+            {
+                "name": "EPA_VAN",
+                "value": 267
+            },
+            {
+                "name": "EPA_MINIVAN",
+                "value": 268
+            },
+            {
+                "name": "EPA_SMALL_SUV",
+                "value": 269
+            },
+            {
+                "name": "EPA_STANDARD_SUV",
+                "value": 270
+            },
+            {
+                "name": "EU_A_SEGMENT",
+                "value": 512
+            },
+            {
+                "name": "EU_B_SEGMENT",
+                "value": 513
+            },
+            {
+                "name": "EU_C_SEGMENT",
+                "value": 514
+            },
+            {
+                "name": "EU_D_SEGMENT",
+                "value": 515
+            },
+            {
+                "name": "EU_E_SEGMENT",
+                "value": 516
+            },
+            {
+                "name": "EU_F_SEGMENT",
+                "value": 517
+            },
+            {
+                "name": "EU_J_SEGMENT",
+                "value": 518
+            },
+            {
+                "name": "EU_M_SEGMENT",
+                "value": 519
+            },
+            {
+                "name": "EU_S_SEGMENT",
+                "value": 520
+            },
+            {
+                "name": "JPN_KEI",
+                "value": 768
+            },
+            {
+                "name": "JPN_SMALL_SIZE",
+                "value": 769
+            },
+            {
+                "name": "JPN_NORMAL_SIZE",
+                "value": 770
+            },
+            {
+                "name": "US_GVWR_CLASS_1_CV",
+                "value": 1024
+            },
+            {
+                "name": "US_GVWR_CLASS_2_CV",
+                "value": 1025
+            },
+            {
+                "name": "US_GVWR_CLASS_3_CV",
+                "value": 1026
+            },
+            {
+                "name": "US_GVWR_CLASS_4_CV",
+                "value": 1027
+            },
+            {
+                "name": "US_GVWR_CLASS_5_CV",
+                "value": 1028
+            },
+            {
+                "name": "US_GVWR_CLASS_6_CV",
+                "value": 1029
+            },
+            {
+                "name": "US_GVWR_CLASS_7_CV",
+                "value": 1030
+            },
+            {
+                "name": "US_GVWR_CLASS_8_CV",
+                "value": 1031
+            }
+        ]
+    },
+    {
         "name": "VehicleTurnSignal",
         "package": "android.hardware.automotive.vehicle",
         "values": [
diff --git a/automotive/vehicle/aidl/generated_lib/4/cpp/AccessForVehicleProperty.h b/automotive/vehicle/aidl/generated_lib/4/cpp/AccessForVehicleProperty.h
index f91c82c..c394fec 100644
--- a/automotive/vehicle/aidl/generated_lib/4/cpp/AccessForVehicleProperty.h
+++ b/automotive/vehicle/aidl/generated_lib/4/cpp/AccessForVehicleProperty.h
@@ -50,6 +50,7 @@
         {VehicleProperty::INFO_EXTERIOR_DIMENSIONS, VehiclePropertyAccess::READ},
         {VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS, VehiclePropertyAccess::READ},
         {VehicleProperty::INFO_MODEL_TRIM, VehiclePropertyAccess::READ},
+        {VehicleProperty::INFO_VEHICLE_SIZE_CLASS, VehiclePropertyAccess::READ},
         {VehicleProperty::PERF_ODOMETER, VehiclePropertyAccess::READ},
         {VehicleProperty::PERF_VEHICLE_SPEED, VehiclePropertyAccess::READ},
         {VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY, VehiclePropertyAccess::READ},
diff --git a/automotive/vehicle/aidl/generated_lib/4/cpp/ChangeModeForVehicleProperty.h b/automotive/vehicle/aidl/generated_lib/4/cpp/ChangeModeForVehicleProperty.h
index 22d23e0..86052f2 100644
--- a/automotive/vehicle/aidl/generated_lib/4/cpp/ChangeModeForVehicleProperty.h
+++ b/automotive/vehicle/aidl/generated_lib/4/cpp/ChangeModeForVehicleProperty.h
@@ -50,6 +50,7 @@
         {VehicleProperty::INFO_EXTERIOR_DIMENSIONS, VehiclePropertyChangeMode::STATIC},
         {VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS, VehiclePropertyChangeMode::STATIC},
         {VehicleProperty::INFO_MODEL_TRIM, VehiclePropertyChangeMode::STATIC},
+        {VehicleProperty::INFO_VEHICLE_SIZE_CLASS, VehiclePropertyChangeMode::STATIC},
         {VehicleProperty::PERF_ODOMETER, VehiclePropertyChangeMode::CONTINUOUS},
         {VehicleProperty::PERF_VEHICLE_SPEED, VehiclePropertyChangeMode::CONTINUOUS},
         {VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY, VehiclePropertyChangeMode::CONTINUOUS},
diff --git a/automotive/vehicle/aidl/generated_lib/4/cpp/VersionForVehicleProperty.h b/automotive/vehicle/aidl/generated_lib/4/cpp/VersionForVehicleProperty.h
index f5c619c..cfe31ee 100644
--- a/automotive/vehicle/aidl/generated_lib/4/cpp/VersionForVehicleProperty.h
+++ b/automotive/vehicle/aidl/generated_lib/4/cpp/VersionForVehicleProperty.h
@@ -49,6 +49,7 @@
         {VehicleProperty::INFO_EXTERIOR_DIMENSIONS, 2},
         {VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS, 2},
         {VehicleProperty::INFO_MODEL_TRIM, 4},
+        {VehicleProperty::INFO_VEHICLE_SIZE_CLASS, 4},
         {VehicleProperty::PERF_ODOMETER, 2},
         {VehicleProperty::PERF_VEHICLE_SPEED, 2},
         {VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY, 2},
diff --git a/automotive/vehicle/aidl/generated_lib/4/java/AccessForVehicleProperty.java b/automotive/vehicle/aidl/generated_lib/4/java/AccessForVehicleProperty.java
index 211300c..e66c4e4 100644
--- a/automotive/vehicle/aidl/generated_lib/4/java/AccessForVehicleProperty.java
+++ b/automotive/vehicle/aidl/generated_lib/4/java/AccessForVehicleProperty.java
@@ -43,6 +43,7 @@
         Map.entry(VehicleProperty.INFO_EXTERIOR_DIMENSIONS, VehiclePropertyAccess.READ),
         Map.entry(VehicleProperty.INFO_MULTI_EV_PORT_LOCATIONS, VehiclePropertyAccess.READ),
         Map.entry(VehicleProperty.INFO_MODEL_TRIM, VehiclePropertyAccess.READ),
+        Map.entry(VehicleProperty.INFO_VEHICLE_SIZE_CLASS, VehiclePropertyAccess.READ),
         Map.entry(VehicleProperty.PERF_ODOMETER, VehiclePropertyAccess.READ),
         Map.entry(VehicleProperty.PERF_VEHICLE_SPEED, VehiclePropertyAccess.READ),
         Map.entry(VehicleProperty.PERF_VEHICLE_SPEED_DISPLAY, VehiclePropertyAccess.READ),
diff --git a/automotive/vehicle/aidl/generated_lib/4/java/ChangeModeForVehicleProperty.java b/automotive/vehicle/aidl/generated_lib/4/java/ChangeModeForVehicleProperty.java
index b546ad1..e3948fb 100644
--- a/automotive/vehicle/aidl/generated_lib/4/java/ChangeModeForVehicleProperty.java
+++ b/automotive/vehicle/aidl/generated_lib/4/java/ChangeModeForVehicleProperty.java
@@ -43,6 +43,7 @@
         Map.entry(VehicleProperty.INFO_EXTERIOR_DIMENSIONS, VehiclePropertyChangeMode.STATIC),
         Map.entry(VehicleProperty.INFO_MULTI_EV_PORT_LOCATIONS, VehiclePropertyChangeMode.STATIC),
         Map.entry(VehicleProperty.INFO_MODEL_TRIM, VehiclePropertyChangeMode.STATIC),
+        Map.entry(VehicleProperty.INFO_VEHICLE_SIZE_CLASS, VehiclePropertyChangeMode.STATIC),
         Map.entry(VehicleProperty.PERF_ODOMETER, VehiclePropertyChangeMode.CONTINUOUS),
         Map.entry(VehicleProperty.PERF_VEHICLE_SPEED, VehiclePropertyChangeMode.CONTINUOUS),
         Map.entry(VehicleProperty.PERF_VEHICLE_SPEED_DISPLAY, VehiclePropertyChangeMode.CONTINUOUS),
diff --git a/automotive/vehicle/aidl/generated_lib/4/java/EnumForVehicleProperty.java b/automotive/vehicle/aidl/generated_lib/4/java/EnumForVehicleProperty.java
index 24cc75b..25afc09 100644
--- a/automotive/vehicle/aidl/generated_lib/4/java/EnumForVehicleProperty.java
+++ b/automotive/vehicle/aidl/generated_lib/4/java/EnumForVehicleProperty.java
@@ -36,6 +36,7 @@
         Map.entry(VehicleProperty.INFO_EV_PORT_LOCATION, List.of(PortLocationType.class)),
         Map.entry(VehicleProperty.INFO_DRIVER_SEAT, List.of(VehicleAreaSeat.class)),
         Map.entry(VehicleProperty.INFO_MULTI_EV_PORT_LOCATIONS, List.of(PortLocationType.class)),
+        Map.entry(VehicleProperty.INFO_VEHICLE_SIZE_CLASS, List.of(VehicleSizeClass.class)),
         Map.entry(VehicleProperty.ENGINE_OIL_LEVEL, List.of(VehicleOilLevel.class)),
         Map.entry(VehicleProperty.IMPACT_DETECTED, List.of(ImpactSensorLocation.class)),
         Map.entry(VehicleProperty.GEAR_SELECTION, List.of(VehicleGear.class)),
diff --git a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
index 57af04c..7a1f0e0 100644
--- a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
+++ b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
@@ -84,6 +84,7 @@
 using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyAccess;
 using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyChangeMode;
 using ::aidl::android::hardware::automotive::vehicle::VehicleSeatOccupancyState;
+using ::aidl::android::hardware::automotive::vehicle::VehicleSizeClass;
 using ::aidl::android::hardware::automotive::vehicle::VehicleTurnSignal;
 using ::aidl::android::hardware::automotive::vehicle::VehicleUnit;
 using ::aidl::android::hardware::automotive::vehicle::VehicleVendorPermission;
@@ -261,6 +262,8 @@
             std::make_unique<ConstantParser<VehicleAirbagLocation>>();
     mConstantParsersByType["ImpactSensorLocation"] =
             std::make_unique<ConstantParser<ImpactSensorLocation>>();
+    mConstantParsersByType["VehicleSizeClass"] =
+            std::make_unique<ConstantParser<VehicleSizeClass>>();
     mConstantParsersByType["EmergencyLaneKeepAssistState"] =
             std::make_unique<ConstantParser<EmergencyLaneKeepAssistState>>();
     mConstantParsersByType["CameraServiceState"] =
diff --git a/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json b/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json
index 866f351..1b3ae7a 100644
--- a/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json
+++ b/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json
@@ -106,6 +106,15 @@
             }
         },
         {
+            "property": "VehicleProperty::INFO_VEHICLE_SIZE_CLASS",
+            "defaultValue": {
+                "int32Values": [
+                    "VehicleSizeClass::EU_A_SEGMENT",
+                    "VehicleSizeClass::JPN_KEI"
+                ]
+            }
+        },
+        {
             "property": "VehicleProperty::PERF_VEHICLE_SPEED",
             "defaultValue": {
                 "floatValues": [
diff --git a/automotive/vehicle/aidl/impl/current/utils/common/include/VehicleHalTypes.h b/automotive/vehicle/aidl/impl/current/utils/common/include/VehicleHalTypes.h
index 30f14e2..4fa0a06 100644
--- a/automotive/vehicle/aidl/impl/current/utils/common/include/VehicleHalTypes.h
+++ b/automotive/vehicle/aidl/impl/current/utils/common/include/VehicleHalTypes.h
@@ -93,6 +93,7 @@
 #include <aidl/android/hardware/automotive/vehicle/VehiclePropertyStatus.h>
 #include <aidl/android/hardware/automotive/vehicle/VehiclePropertyType.h>
 #include <aidl/android/hardware/automotive/vehicle/VehicleSeatOccupancyState.h>
+#include <aidl/android/hardware/automotive/vehicle/VehicleSizeClass.h>
 #include <aidl/android/hardware/automotive/vehicle/VehicleTurnSignal.h>
 #include <aidl/android/hardware/automotive/vehicle/VehicleUnit.h>
 #include <aidl/android/hardware/automotive/vehicle/VehicleVendorPermission.h>
diff --git a/automotive/vehicle/aidl_property/aidl_api/android.hardware.automotive.vehicle.property/current/android/hardware/automotive/vehicle/VehicleProperty.aidl b/automotive/vehicle/aidl_property/aidl_api/android.hardware.automotive.vehicle.property/current/android/hardware/automotive/vehicle/VehicleProperty.aidl
index 55ce6fb..9262f32 100644
--- a/automotive/vehicle/aidl_property/aidl_api/android.hardware.automotive.vehicle.property/current/android/hardware/automotive/vehicle/VehicleProperty.aidl
+++ b/automotive/vehicle/aidl_property/aidl_api/android.hardware.automotive.vehicle.property/current/android/hardware/automotive/vehicle/VehicleProperty.aidl
@@ -49,6 +49,7 @@
   INFO_EXTERIOR_DIMENSIONS = (((0x010B + 0x10000000) + 0x01000000) + 0x00410000) /* 289472779 */,
   INFO_MULTI_EV_PORT_LOCATIONS = (((0x010C + 0x10000000) + 0x01000000) + 0x00410000) /* 289472780 */,
   INFO_MODEL_TRIM = (((0x010D + android.hardware.automotive.vehicle.VehiclePropertyGroup.SYSTEM) + android.hardware.automotive.vehicle.VehicleArea.GLOBAL) + android.hardware.automotive.vehicle.VehiclePropertyType.STRING) /* 286261517 */,
+  INFO_VEHICLE_SIZE_CLASS = (((0x010E + android.hardware.automotive.vehicle.VehiclePropertyGroup.SYSTEM) + android.hardware.automotive.vehicle.VehicleArea.GLOBAL) + android.hardware.automotive.vehicle.VehiclePropertyType.INT32_VEC) /* 289472782 */,
   PERF_ODOMETER = (((0x0204 + 0x10000000) + 0x01000000) + 0x00600000) /* 291504644 */,
   PERF_VEHICLE_SPEED = (((0x0207 + 0x10000000) + 0x01000000) + 0x00600000) /* 291504647 */,
   PERF_VEHICLE_SPEED_DISPLAY = (((0x0208 + 0x10000000) + 0x01000000) + 0x00600000) /* 291504648 */,
diff --git a/automotive/vehicle/aidl_property/aidl_api/android.hardware.automotive.vehicle.property/current/android/hardware/automotive/vehicle/VehicleSizeClass.aidl b/automotive/vehicle/aidl_property/aidl_api/android.hardware.automotive.vehicle.property/current/android/hardware/automotive/vehicle/VehicleSizeClass.aidl
new file mode 100644
index 0000000..6817124
--- /dev/null
+++ b/automotive/vehicle/aidl_property/aidl_api/android.hardware.automotive.vehicle.property/current/android/hardware/automotive/vehicle/VehicleSizeClass.aidl
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.automotive.vehicle;
+@Backing(type="int") @VintfStability
+enum VehicleSizeClass {
+  EPA_TWO_SEATER = 0x100,
+  EPA_MINICOMPACT = 0x101,
+  EPA_SUBCOMPACT = 0x102,
+  EPA_COMPACT = 0x103,
+  EPA_MIDSIZE = 0x104,
+  EPA_LARGE = 0x105,
+  EPA_SMALL_STATION_WAGON = 0x106,
+  EPA_MIDSIZE_STATION_WAGON = 0x107,
+  EPA_LARGE_STATION_WAGON = 0x108,
+  EPA_SMALL_PICKUP_TRUCK = 0x109,
+  EPA_STANDARD_PICKUP_TRUCK = 0x10A,
+  EPA_VAN = 0x10B,
+  EPA_MINIVAN = 0x10C,
+  EPA_SMALL_SUV = 0x10D,
+  EPA_STANDARD_SUV = 0x10E,
+  EU_A_SEGMENT = 0x200,
+  EU_B_SEGMENT = 0x201,
+  EU_C_SEGMENT = 0x202,
+  EU_D_SEGMENT = 0x203,
+  EU_E_SEGMENT = 0x204,
+  EU_F_SEGMENT = 0x205,
+  EU_J_SEGMENT = 0x206,
+  EU_M_SEGMENT = 0x207,
+  EU_S_SEGMENT = 0x208,
+  JPN_KEI = 0x300,
+  JPN_SMALL_SIZE = 0x301,
+  JPN_NORMAL_SIZE = 0x302,
+  US_GVWR_CLASS_1_CV = 0x400,
+  US_GVWR_CLASS_2_CV = 0x401,
+  US_GVWR_CLASS_3_CV = 0x402,
+  US_GVWR_CLASS_4_CV = 0x403,
+  US_GVWR_CLASS_5_CV = 0x404,
+  US_GVWR_CLASS_6_CV = 0x405,
+  US_GVWR_CLASS_7_CV = 0x406,
+  US_GVWR_CLASS_8_CV = 0x407,
+}
diff --git a/automotive/vehicle/aidl_property/android/hardware/automotive/vehicle/VehicleProperty.aidl b/automotive/vehicle/aidl_property/android/hardware/automotive/vehicle/VehicleProperty.aidl
index eb65d70..c9b9707 100644
--- a/automotive/vehicle/aidl_property/android/hardware/automotive/vehicle/VehicleProperty.aidl
+++ b/automotive/vehicle/aidl_property/android/hardware/automotive/vehicle/VehicleProperty.aidl
@@ -249,6 +249,28 @@
     INFO_MODEL_TRIM =
             0x010D + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL + VehiclePropertyType.STRING,
     /**
+     * Vehicle Size Class.
+     *
+     * This property must communicate an integer array that contains the size classifications
+     * followed by the vehicle as enumerated in VehicleSizeClass.aidl. If the vehicle follows a
+     * single standard, then the array size of the property's value should be 1. If the vehicle
+     * follows multiple standards that the OEM wants to communicate, this may be communicated as
+     * additional values in the array.
+     *
+     * For example, suppose a vehicle model follows the VehicleSizeClass.EU_A_SEGMENT standard in
+     * the EU and the VehicleSizeClass.JPN_KEI standard in Japan. In this scenario this property
+     * must return an intArray = [VehicleSizeClass.EU_A_SEGMENT, VehicleSizeClass.JPN_KEI]. If this
+     * vehicle only followed the VehicleSizeClass.EU_A_SEGMENT standard, then we expect intArray =
+     * [VehicleSizeClass.EU_A_SEGMENT].
+     *
+     * @change_mode VehiclePropertyChangeMode.STATIC
+     * @access VehiclePropertyAccess.READ
+     * @data_enum VehicleSizeClass
+     * @version 4
+     */
+    INFO_VEHICLE_SIZE_CLASS = 0x010E + VehiclePropertyGroup.SYSTEM + VehicleArea.GLOBAL
+            + VehiclePropertyType.INT32_VEC,
+    /**
      * Current odometer value of the vehicle
      *
      * @change_mode VehiclePropertyChangeMode.CONTINUOUS
diff --git a/automotive/vehicle/aidl_property/android/hardware/automotive/vehicle/VehicleSizeClass.aidl b/automotive/vehicle/aidl_property/android/hardware/automotive/vehicle/VehicleSizeClass.aidl
new file mode 100644
index 0000000..1915c4a
--- /dev/null
+++ b/automotive/vehicle/aidl_property/android/hardware/automotive/vehicle/VehicleSizeClass.aidl
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.automotive.vehicle;
+
+/**
+ * Used to enumerate the various size classes of vehicles.
+ *
+ * This enum can be extended in future releases to include additional values.
+ */
+@VintfStability
+@Backing(type="int")
+enum VehicleSizeClass {
+    /**
+     * Represents two-seaters as defined by the EPA standard of size classes for vehicles in the
+     * United States.
+     *
+     * The current implementation of EPA-standard enums follows the classification defined in
+     * Federal Regulation, Title 40—Protection of Environment, Section 600.315-08 "Classes of
+     * comparable automobiles".
+     */
+    EPA_TWO_SEATER = 0x100,
+    /**
+     * Represents minicompact cars as defined by the EPA standard of size classes for vehicles in
+     * the United States.
+     */
+    EPA_MINICOMPACT = 0x101,
+    /**
+     * Represents subcompact cars as defined by the EPA standard of size classes for vehicles in the
+     * United States.
+     */
+    EPA_SUBCOMPACT = 0x102,
+    /**
+     * Represents compact cars as defined by the EPA standard of size classes for vehicles in the
+     * United States.
+     */
+    EPA_COMPACT = 0x103,
+    /**
+     * Represents midsize cars as defined by the EPA standard of size classes for vehicles in the
+     * United States.
+     */
+    EPA_MIDSIZE = 0x104,
+    /**
+     * Represents large cars as defined by the EPA standard of size classes for vehicles in the
+     * United States.
+     */
+    EPA_LARGE = 0x105,
+    /**
+     * Represents small station wagons as defined by the EPA standard of size classes for vehicles
+     * in the United States.
+     */
+    EPA_SMALL_STATION_WAGON = 0x106,
+    /**
+     * Represents midsize station wagons as defined by the EPA standard of size classes for vehicles
+     * in the United States.
+     */
+    EPA_MIDSIZE_STATION_WAGON = 0x107,
+    /**
+     * Represents large station wagons as defined by the EPA standard of size classes for vehicles
+     * in the United States.
+     */
+    EPA_LARGE_STATION_WAGON = 0x108,
+    /**
+     * Represents small pickup trucks as defined by the EPA standard of size classes for vehicles
+     * in the United States.
+     */
+    EPA_SMALL_PICKUP_TRUCK = 0x109,
+    /**
+     * Represents standard pickup trucks as defined by the EPA standard of size classes for vehicles
+     * in the United States.
+     */
+    EPA_STANDARD_PICKUP_TRUCK = 0x10A,
+    /**
+     * Represents vans as defined by the EPA standard of size classes for vehicles in the United
+     * States.
+     */
+    EPA_VAN = 0x10B,
+    /**
+     * Represents minivans as defined by the EPA standard of size classes for vehicles in the United
+     * States.
+     */
+    EPA_MINIVAN = 0x10C,
+    /**
+     * Represents small sport utility vehicles (SUVs) as defined by the EPA standard of size classes
+     * for vehicles in the United States.
+     */
+    EPA_SMALL_SUV = 0x10D,
+    /**
+     * Represents standard sport utility vehicles (SUVs) as defined by the EPA standard of size
+     * classes for vehicles in the United States.
+     */
+    EPA_STANDARD_SUV = 0x10E,
+    /**
+     * Represents A-segment vehicle size class, commonly called "mini" cars or "city" cars, as
+     * classified in the EU.
+     *
+     * The current implementation of the EU Car Segment enums follows the classification first
+     * described in Case No COMP/M.1406 Hyundai / Kia Regulation (EEC) No 4064/89 Merger Procedure.
+     */
+    EU_A_SEGMENT = 0x200,
+    /**
+     * Represents B-segment vehicle size class, commonly called "small" cars, as classified in the
+     * EU.
+     */
+    EU_B_SEGMENT = 0x201,
+    /**
+     * Represents C-segment vehicle size class, commonly called "medium" cars, as classified in the
+     * EU.
+     */
+    EU_C_SEGMENT = 0x202,
+    /**
+     * Represents D-segment vehicle size class, commonly called "large" cars, as classified in the
+     * EU.
+     */
+    EU_D_SEGMENT = 0x203,
+    /**
+     * Represents E-segment vehicle size class, commonly called "executive" cars, as classified in
+     * the EU.
+     */
+    EU_E_SEGMENT = 0x204,
+    /**
+     * Represents F-segment vehicle size class, commonly called "luxury" cars, as classified in the
+     * EU.
+     */
+    EU_F_SEGMENT = 0x205,
+    /**
+     * Represents J-segment vehicle size class, commonly associated with SUVs and off-road vehicles,
+     * as classified in the EU.
+     */
+    EU_J_SEGMENT = 0x206,
+    /**
+     * Represents M-segment vehicle size class, commonly called "multi-purpose" cars, as classified
+     * in the EU.
+     */
+    EU_M_SEGMENT = 0x207,
+    /**
+     * Represents S-segment vehicle size class, commonly called "sports" cars, as classified in the
+     * EU.
+     */
+    EU_S_SEGMENT = 0x208,
+    /**
+     * Represents keijidosha or "kei" cars as defined by the Japanese standard of size classes for
+     * vehicles.
+     *
+     * The current implementation of Japan-standard enums follows the classification defined in the
+     * Japanese Government's Road Vehicle Act of 1951.
+     */
+    JPN_KEI = 0x300,
+    /**
+     * Represents small-size passenger vehicles as defined by the Japanese standard of size classes
+     * for vehicles.
+     */
+    JPN_SMALL_SIZE = 0x301,
+    /**
+     * Represents normal-size passenger vehicles as defined by the Japanese standard of size classes
+     * for vehicles.
+     */
+    JPN_NORMAL_SIZE = 0x302,
+    /**
+     * Represents Class 1 trucks following the US GVWR classification of commercial vehicles. This
+     * is classified under "Light duty" vehicles by the US Federal Highway Association.
+     */
+    US_GVWR_CLASS_1_CV = 0x400,
+    /**
+     * Represents Class 2 trucks following the US GVWR classification of commercial vehicles. This
+     * is classified under "Light duty" vehicles by the US Federal Highway Association.
+     */
+    US_GVWR_CLASS_2_CV = 0x401,
+    /**
+     * Represents Class 3 trucks following the US GVWR classification of commercial vehicles. This
+     * is classified under "Medium duty" vehicles by the US Federal Highway Association.
+     */
+    US_GVWR_CLASS_3_CV = 0x402,
+    /**
+     * Represents Class 4 trucks following the US GVWR classification of commercial vehicles. This
+     * is classified under "Medium duty" vehicles by the US Federal Highway Association.
+     */
+    US_GVWR_CLASS_4_CV = 0x403,
+    /**
+     * Represents Class 5 trucks following the US GVWR classification of commercial vehicles. This
+     * is classified under "Medium duty" vehicles by the US Federal Highway Association.
+     */
+    US_GVWR_CLASS_5_CV = 0x404,
+    /**
+     * Represents Class 6 trucks following the US GVWR classification of commercial vehicles. This
+     * is classified under "Medium duty" vehicles by the US Federal Highway Association.
+     */
+    US_GVWR_CLASS_6_CV = 0x405,
+    /**
+     * Represents Class 7 trucks following the US GVWR classification of commercial vehicles. This
+     * is classified under "Heavy duty" vehicles by the US Federal Highway Association.
+     */
+    US_GVWR_CLASS_7_CV = 0x406,
+    /**
+     * Represents Class 8 trucks following the US GVWR classification of commercial vehicles. This
+     * is classified under "Heavy duty" vehicles by the US Federal Highway Association.
+     */
+    US_GVWR_CLASS_8_CV = 0x407,
+}
diff --git a/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp b/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
index cde360d..067c030 100644
--- a/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
+++ b/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
@@ -1382,6 +1382,12 @@
                    VehicleArea::GLOBAL, VehiclePropertyType::STRING);
 }
 
+TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyInfoVehicleSizeClassConfig) {
+    verifyProperty(VehicleProperty::INFO_VEHICLE_SIZE_CLASS, VehiclePropertyAccess::READ,
+                   VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
+                   VehicleArea::GLOBAL, VehiclePropertyType::INT32_VEC);
+}
+
 bool VtsHalAutomotiveVehicleTargetTest::checkIsSupported(int32_t propertyId) {
     auto result = mVhalClient->getPropConfigs({propertyId});
     return result.ok();