Update the meta-google layer for sc-v2 Test: build Bug: 196133335 Change-Id: I5e87b5924635a65b9afb7aebf9c2b7922a5acc68
diff --git a/agl_services_build/CMakeLists.txt b/agl_services_build/CMakeLists.txt index a59b5ad..d5c0398 100644 --- a/agl_services_build/CMakeLists.txt +++ b/agl_services_build/CMakeLists.txt
@@ -22,6 +22,8 @@ if (CMAKE_CROSSCOMPILING) # ========== vehicle hal server build settings =================== + set(trout_ANDROID_LIBBASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/android/libbase) + set(trout_ANDROID_LIBLOG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/android/logging/liblog) set(trout_ANDROID_SYSCORE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/android/system_core) set(trout_FMTLIB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/fmtlib) set(trout_GOOGLETEST_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest)
diff --git a/agl_services_build/cmake/android.cmake b/agl_services_build/cmake/android.cmake index 367180d..ad7a8a2 100644 --- a/agl_services_build/cmake/android.cmake +++ b/agl_services_build/cmake/android.cmake
@@ -2,13 +2,25 @@ set(trout_ANDROID_SYSCORE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/android/system_core") endif() -set(_trout_ANDROID_CXX_FLAGS -Wall -Werror -Wextra -Wno-unknown-warning-option -Wno-c99-designator -std=c++17) +if(NOT trout_ANDROID_LIBBASE_DIR) + set(trout_ANDROID_LIBBASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/android/libbase") +endif() -set(trout_ANDROID_LIBLOG_DIR ${trout_ANDROID_SYSCORE_DIR}/liblog) +if(NOT trout_ANDROID_LIBLOG_DIR) + set(trout_ANDROID_LIBLOG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/android/logging/liblog") +endif() + +set(_trout_ANDROID_CXX_FLAGS + -std=c++17 + -Wall -Werror -Wextra + -Wno-unknown-warning-option + -Wno-c99-designator + -Wno-sign-compare +) + set(trout_ANDROID_LIBLOG_INCLUDE_DIR ${trout_ANDROID_LIBLOG_DIR}/include) set(trout_ANDROID_LIBLOG_LIBRARY "android_liblog") -set(trout_ANDROID_LIBBASE_DIR ${trout_ANDROID_SYSCORE_DIR}/base) set(trout_ANDROID_LIBBASE_INCLUDE_DIR ${trout_ANDROID_LIBBASE_DIR}/include) set(trout_ANDROID_LIBBASE_LIBRARY "android_libbase") @@ -23,7 +35,6 @@ if (NOT TARGET ${trout_ANDROID_LIBBASE_LIBRARY}) add_library(${trout_ANDROID_LIBBASE_LIBRARY} - ${trout_ANDROID_LIBBASE_DIR}/liblog_symbols.cpp ${trout_ANDROID_LIBBASE_DIR}/logging.cpp ${trout_ANDROID_LIBBASE_DIR}/strings.cpp ${trout_ANDROID_LIBBASE_DIR}/stringprintf.cpp @@ -76,6 +87,7 @@ ) target_link_libraries(${trout_ANDROID_LIBUTILS_LIBRARY} + ${trout_ANDROID_LIBBASE_LIBRARY} ${trout_ANDROID_LIBLOG_LIBRARY} )
diff --git a/agl_services_build/cmake/jsoncpp.cmake b/agl_services_build/cmake/jsoncpp.cmake index 7488771..95b98c7 100644 --- a/agl_services_build/cmake/jsoncpp.cmake +++ b/agl_services_build/cmake/jsoncpp.cmake
@@ -4,7 +4,7 @@ if(EXISTS "${trout_JSONCPP_ROOT_DIR}/CMakeLists.txt") set(trout_JSONCPP_INCLUDE_DIRS "${trout_JSONCPP_ROOT_DIR}/include") - set(trout_JSONCPP_LIBRARIES "jsoncpp_lib") + set(trout_JSONCPP_LIBRARIES "jsoncpp_static") if (NOT TARGET ${trout_JSONCPP_LIBRARIES}) add_subdirectory(${trout_JSONCPP_ROOT_DIR} third_party/jsoncpp) endif()
diff --git a/agl_services_build/repo_manifest.xml b/agl_services_build/repo_manifest.xml index a99e31f..f69d5ef 100644 --- a/agl_services_build/repo_manifest.xml +++ b/agl_services_build/repo_manifest.xml
@@ -4,7 +4,7 @@ fetch="sso://googleplex-android/" review="sso://googleplex-android/" /> - <default revision="rvc-dev" + <default revision="sc-v2-dev" remote="goog"/> <remote name="goog-and-upload-partner" fetch="sso://googleplex-android/" review="sso://partner-android/" /> @@ -14,12 +14,12 @@ <manifest-server url="http://android-smartsync.corp.google.com/googleplex-android.googlesource.com/manifestserver" /> - <project path="device/google/trout" name="device/google/trout" groups="device,trout,gull" remote="goog-and-upload-partner" dest-branch="master" revision="mirror-partner-master"> + <project path="device/google/trout" name="device/google/trout" groups="device,trout,gull" remote="goog-and-upload-partner" dest-branch="sc-v2-dev" revision="mirror-partner-sc-v2-dev"> <linkfile src="agl_services_build/build.sh" dest="build.sh" /> <linkfile src="agl_services_build/CMakeLists.txt" dest="CMakeLists.txt" /> <linkfile src="agl_services_build/cmake" dest="cmake" /> <linkfile src="agl_services_build/toolchain" dest="toolchain" /> - <linkfile src="hal/audiocontrol/aidl/1.0" dest="audiocontrol" /> + <linkfile src="hal/audiocontrol" dest="audiocontrol" /> <linkfile src="hal/dumpstate/1.1" dest="dumpstate_server" /> <linkfile src="hal/vehicle/2.0" dest="vehicle_hal_server" /> <linkfile src="hal/common/agl/watchdog" dest="watchdog_test_server" /> @@ -28,10 +28,12 @@ <project path="third_party/grpc-grpc" name="platform/external/grpc-grpc" groups="pdk,tradefed" /> <project path="third_party/jsoncpp" name="platform/external/jsoncpp" groups="pdk" /> <project path="third_party/protobuf" name="platform/external/protobuf" groups="pdk" /> - <project path="hardware/interfaces" name="platform/hardware/interfaces" groups="pdk" revision="229e07f9b922522e1612b6dd930919cf58c8865f"> + <project path="hardware/interfaces" name="platform/hardware/interfaces" groups="pdk"> <linkfile src="automotive/vehicle/2.0/default" dest="third_party/default_native_vehicle_hal" /> </project> <project path="third_party/android/system_core" name="platform/system/core" groups="pdk" /> + <project path="third_party/android/libbase" name="platform/system/libbase" groups="pdk" /> + <project path="third_party/android/logging" name="platform/system/logging" groups="pdk" /> <project path="third_party/cares" name="c-ares/c-ares" remote="github" groups="pdk" revision="3be1924221e1326df520f8498d704a5c4c8d0cce" /> <project path="third_party/boringssl" name="boringssl" remote="boringssl" groups="pdk" revision="0b710a305b42b67522003a314dea3e3868485665" />
diff --git a/agl_services_build/toolchain/agl_toolchain.cmake b/agl_services_build/toolchain/agl_toolchain.cmake index f104a88..57b2888 100644 --- a/agl_services_build/toolchain/agl_toolchain.cmake +++ b/agl_services_build/toolchain/agl_toolchain.cmake
@@ -5,7 +5,7 @@ # AGL sysroot precedence: environment variable TROUT_AGL_SYSROOT > LV AGL sysroot IF(DEFINED ENV{LV_BUILD_PATH}) SET(TROUT_CLANG_PATH $ENV{LV_BUILD_PATH}/tmp-glibc/sysroots-components/x86_64/clang-native) - SET(TROUT_AGL_SYSROOT $ENV{LV_BUILD_PATH}/tmp-glibc/sysroots/opsy-sa8155/) + SET(TROUT_AGL_SYSROOT $ENV{LV_BUILD_PATH}/tmp-glibc/sysroots/opsy-sa81x5/) ENDIF() IF (DEFINED ENV{TROUT_CLANG_PATH}) @@ -46,6 +46,12 @@ ${TROUT_AGL_SYSROOT}/usr/include/c++/9.3.0/aarch64-oe-linux ) +SET(CMAKE_SHARED_LINKER_FLAGS + -fuse-ld=lld + -B ${TROUT_AGL_SYSROOT}/usr/lib/aarch64-oe-linux/9.3.0 + -nodefaultlibs +) + SET(CMAKE_EXE_LINKER_FLAGS -fuse-ld=lld -B ${TROUT_AGL_SYSROOT}/usr/lib/aarch64-oe-linux/9.3.0 @@ -56,6 +62,7 @@ -lgcc_s ) STRING(REPLACE ";" " " CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") +STRING(REPLACE ";" " " CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}") SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/files/src/device/google/trout b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/files/src/device/google/trout new file mode 120000 index 0000000..077f152 --- /dev/null +++ b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/files/src/device/google/trout
@@ -0,0 +1 @@ +../../../../../../../../../ \ No newline at end of file
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/google-trout-agl-services_0.1.bb b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/google-trout-agl-services_0.1.bb index a84bb19..2bf59e1 100644 --- a/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/google-trout-agl-services_0.1.bb +++ b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/google-trout-agl-services_0.1.bb
@@ -5,6 +5,7 @@ DEPENDS += "\ google-trout-grpc-utils-native \ systemd \ + libxml2 \ " TROUT_target_install = "\
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/sources.inc b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/sources.inc index 7eb418e..1c1619c 100644 --- a/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/sources.inc +++ b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/sources.inc
@@ -9,33 +9,38 @@ BORINGSSL_REMOTE = "git://boringssl.googlesource.com" GITHUB_REMOTE = "git://github.com" +DEFAULT_REVISION = "s-car-fs-release" + FETCH_CODE_PREFIX = "src" S = "${WORKDIR}/${FETCH_CODE_PREFIX}" # Pull the source from git server remote/name to path -def trout_git_uri(d, remote, name, path, revision): +def trout_git_uri(d, remote, name, path, revision_override = ""): + revision = revision_override if revision_override else d.getVar('DEFAULT_REVISION') + return '{}/{};protocol=https;nobranch=1;' \ 'destsuffix={}/{};rev={}'.format( d.getVar(remote), name, d.getVar('FETCH_CODE_PREFIX'), path, revision) -# Non-Trout Android code revisions are matching those in Trout R QPR1 PDK -# Except hardware/interfaces (TODO: chenhaosjtuacm, 166706927) # TODO (chenhaosjtuacm): generate SRC_URI from the manifest SRC_URI = "\ - ${@trout_git_uri(d, 'ANDROID_REMOTE', 'device/google/trout', 'device/google/trout', 'rvc-qpr-dev')} \ - ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/fmtlib', 'third_party/fmtlib', 'aa6fa3aa882afe47f7af990b0c6d747a01cd6104')} \ - ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/grpc-grpc', 'third_party/grpc-grpc', '75bfcd05212333d0f4247865e3a61eaf6092d932')} \ - ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/jsoncpp', 'third_party/jsoncpp', 'ceed690fefd71a34154781da01b3bb0294a486eb')} \ - ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/protobuf', 'third_party/protobuf', '2305946dc587fb5766d207c7e3981375b2aaf5ce')} \ - ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/hardware/interfaces', 'hardware/interfaces', '229e07f9b922522e1612b6dd930919cf58c8865f')} \ - ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/system/core', 'third_party/android/system_core', 'b1ee3a99d1fc3d41606555e29da484df8a66ed71')} \ + file://${FETCH_CODE_PREFIX}/device/google/trout \ + ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/fmtlib', 'third_party/fmtlib')} \ + ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/grpc-grpc', 'third_party/grpc-grpc')} \ + ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/jsoncpp', 'third_party/jsoncpp')} \ + ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/protobuf', 'third_party/protobuf')} \ + ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/hardware/interfaces', 'hardware/interfaces')} \ + ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/system/core', 'third_party/android/system_core')} \ + ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/system/libbase', 'third_party/android/libbase')} \ + ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/system/logging', 'third_party/android/logging')} \ ${@trout_git_uri(d, 'BORINGSSL_REMOTE', 'boringssl', 'third_party/boringssl', '0b710a305b42b67522003a314dea3e3868485665')} \ ${@trout_git_uri(d, 'GITHUB_REMOTE', 'c-ares/c-ares', 'third_party/cares', '3be1924221e1326df520f8498d704a5c4c8d0cce')} \ ${@trout_git_uri(d, 'GITHUB_REMOTE', 'gflags/gflags', 'third_party/gflags', '28f50e0fed19872e0fd50dd23ce2ee8cd759338e')} \ ${@trout_git_uri(d, 'GITHUB_REMOTE', 'madler/zlib', 'third_party/zlib', 'cacf7f1d4e3d44d871b605da3b647f07d718623f')} \ + ${@trout_git_uri(d, 'GITHUB_REMOTE', 'google/googletest', 'third_party/googletest', '1fb1bb23bb8418dc73a5a9a82bbed31dc610fec7')} \ " SRC_SYMLINKS = "\ @@ -43,7 +48,7 @@ device/google/trout/agl_services_build/CMakeLists.txt:CMakeLists.txt \ device/google/trout/agl_services_build/cmake:cmake \ device/google/trout/agl_services_build/toolchain:toolchain \ - device/google/trout/hal/audiocontrol/aidl/1.0:audiocontrol \ + device/google/trout/hal/audiocontrol:audiocontrol \ device/google/trout/hal/dumpstate/1.1:dumpstate_server \ device/google/trout/hal/vehicle/2.0:vehicle_hal_server \ device/google/trout/hal/common/agl/watchdog:watchdog_test_server \
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa8155/google-overlay/etc/systemd/system/dumpstate_grpc_server.service b/agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa81x5/google-overlay/etc/systemd/system/dumpstate_grpc_server.service similarity index 100% rename from agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa8155/google-overlay/etc/systemd/system/dumpstate_grpc_server.service rename to agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa81x5/google-overlay/etc/systemd/system/dumpstate_grpc_server.service
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa8155/google-overlay/etc/systemd/system/multi-user.target.wants/dumpstate_grpc_server.service b/agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa81x5/google-overlay/etc/systemd/system/multi-user.target.wants/dumpstate_grpc_server.service similarity index 100% rename from agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa8155/google-overlay/etc/systemd/system/multi-user.target.wants/dumpstate_grpc_server.service rename to agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa81x5/google-overlay/etc/systemd/system/multi-user.target.wants/dumpstate_grpc_server.service
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa8155/google-overlay/etc/systemd/system/multi-user.target.wants/vehicle_hal_grpc_server.service b/agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa81x5/google-overlay/etc/systemd/system/multi-user.target.wants/vehicle_hal_grpc_server.service similarity index 100% rename from agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa8155/google-overlay/etc/systemd/system/multi-user.target.wants/vehicle_hal_grpc_server.service rename to agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa81x5/google-overlay/etc/systemd/system/multi-user.target.wants/vehicle_hal_grpc_server.service
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa8155/google-overlay/etc/systemd/system/vehicle_hal_grpc_server.service b/agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa81x5/google-overlay/etc/systemd/system/vehicle_hal_grpc_server.service similarity index 100% rename from agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa8155/google-overlay/etc/systemd/system/vehicle_hal_grpc_server.service rename to agl_services_build/yocto-layer/meta-google/recipes-trout/images/machine-image/sa81x5/google-overlay/etc/systemd/system/vehicle_hal_grpc_server.service
diff --git a/hal/vehicle/2.0/agl_build/CMakeLists.txt b/hal/vehicle/2.0/agl_build/CMakeLists.txt index dbf7150..0dcaa23 100644 --- a/hal/vehicle/2.0/agl_build/CMakeLists.txt +++ b/hal/vehicle/2.0/agl_build/CMakeLists.txt
@@ -1,4 +1,8 @@ -set(_trout_VHAL_CXX_FLAGS -Wall -Werror -std=c++17) +set(_trout_VHAL_CXX_FLAGS + -std=c++17 + -Wall -Werror + -Wno-reorder-init-list +) include(${trout_SRC_ROOT}/cmake/fmtlib.cmake) include(${trout_SRC_ROOT}/cmake/android.cmake) @@ -25,7 +29,7 @@ # ========== Protobuf generated code ================== -add_library(vehicle_hal_protobuf_gen +add_library(vehicle_hal_protobuf_gen STATIC ${trout_GENS_DIR}/VehicleHalProto.pb.cc ${trout_GENS_DIR}/VehicleHalProto.grpc.pb.cc ${trout_GENS_DIR}/VehicleServer.pb.cc
diff --git a/hal/vehicle/2.0/agl_build/prebuilt/include/android/hardware/automotive/vehicle/2.0/types.h b/hal/vehicle/2.0/agl_build/prebuilt/include/android/hardware/automotive/vehicle/2.0/types.h index cb9efbb..581ee6c 100644 --- a/hal/vehicle/2.0/agl_build/prebuilt/include/android/hardware/automotive/vehicle/2.0/types.h +++ b/hal/vehicle/2.0/agl_build/prebuilt/include/android/hardware/automotive/vehicle/2.0/types.h
@@ -104,8 +104,13 @@ enum class VehicleArea : int32_t; enum class VehiclePropertyGroup : int32_t; enum class VehicleProperty : int32_t; +enum class ElectronicTollCollectionCardType : int32_t; +enum class ElectronicTollCollectionCardStatus : int32_t; enum class VehicleVendorPermission : int32_t; enum class VehicleSeatOccupancyState : int32_t; +enum class EvsServiceType : int32_t; +enum class EvsServiceState : int32_t; +enum class EvsServiceRequestIndex : int32_t; enum class VehicleLightState : int32_t; enum class VehicleLightSwitch : int32_t; enum class EvConnectorType : int32_t; @@ -180,6 +185,8 @@ struct UserIdentificationAssociation; struct UserIdentificationSetAssociation; enum class RotaryInputType : int32_t; +enum class ProcessTerminationReason : int32_t; +enum class CustomInputType : int32_t; // Order of inner types was changed for forward reference support. @@ -456,6 +463,12 @@ /** * Speed of the vehicle * + * The value must be positive when the vehicle is moving forward and negative when + * the vehicle is moving backward. This value is independent of gear value + * (CURRENT_GEAR or GEAR_SELECTION), for example, if GEAR_SELECTION is GEAR_NEUTRAL, + * PERF_VEHICLE_SPEED is positive when the vehicle is moving forward, negative when moving + * backward, and zero when not moving. + * * @change_mode VehiclePropertyChangeMode:CONTINUOUS * @access VehiclePropertyAccess:READ * @unit VehicleUnit:METER_PER_SEC @@ -627,8 +640,23 @@ /** * Tire pressure * - * min/max value indicates tire pressure sensor range. Each tire will have a separate min/max - * value denoted by its areaConfig.areaId. + * Each tires is identified by its areaConfig.areaId config and their + * minFloatValue/maxFloatValue are used to store OEM recommended pressure + * range. + * The Min value in the areaConfig data represents the lower bound of + * the recommended tire pressure. + * The Max value in the areaConfig data represents the upper bound of + * the recommended tire pressure. + * For example: + * The following areaConfig indicates the recommended tire pressure + * of left_front tire is from 200.0 KILOPASCAL to 240.0 KILOPASCAL. + * .areaConfigs = { + * VehicleAreaConfig { + * .areaId = VehicleAreaWheel::LEFT_FRONT, + * .minFloatValue = 200.0, + * .maxFloatValue = 240.0, + * } + * }, * * @change_mode VehiclePropertyChangeMode:CONTINUOUS * @access VehiclePropertyAccess:READ @@ -636,6 +664,20 @@ */ TIRE_PRESSURE = 392168201 /* (0x0309 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:WHEEL) */, /** + * Critically low tire pressure + * + * This property indicates the critically low pressure threshold for each tire. + * It indicates when it is time for tires to be replaced or fixed. The value + * must be less than or equal to minFloatValue in TIRE_PRESSURE. + * Minimum and maximum property values (that is, minFloatValue, maxFloatValue) + * are not applicable to this property. + * + * @change_mode VehiclePropertyChangeMode:STATIC + * @access VehiclePropertyAccess:READ + * @unit VehicleUnit:KILOPASCAL + */ + CRITICALLY_LOW_TIRE_PRESSURE = 392168202 /* (0x030A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:WHEEL) */, + /** * Currently selected gear * * This is the gear selected by the user. @@ -673,14 +715,14 @@ * Parking brake state. * * @change_mode VehiclePropertyChangeMode:ON_CHANGE - * @access VehiclePropertyAccess:READ_WRITE + * @access VehiclePropertyAccess:READ */ PARKING_BRAKE_ON = 287310850 /* (0x0402 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */, /** * Auto-apply parking brake. * * @change_mode VehiclePropertyChangeMode:ON_CHANGE - * @access VehiclePropertyAccess:READ_WRITE + * @access VehiclePropertyAccess:READ */ PARKING_BRAKE_AUTO_APPLY = 287310851 /* (0x0403 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */, /** @@ -752,7 +794,8 @@ /* * HVAC Properties * - * Additional rules for mapping a zoned HVAC property to AreaIDs: + * Additional rules for mapping a zoned HVAC property (except + * HVAC_MAX_DEFROST_ON) to AreaIDs: * - Every seat in VehicleAreaSeat that is available in the car, must be * part of an AreaID in the AreaID array. * @@ -809,6 +852,24 @@ /** * HVAC, target temperature set. * + * The configArray is used to indicate the valid values for HVAC in Fahrenheit and Celsius. + * Android might use it in the HVAC app UI. + * The configArray is set as follows: + * configArray[0] = [the lower bound of the supported temperature in Celsius] * 10. + * configArray[1] = [the upper bound of the supported temperature in Celsius] * 10. + * configArray[2] = [the increment in Celsius] * 10. + * configArray[3] = [the lower bound of the supported temperature in Fahrenheit] * 10. + * configArray[4] = [the upper bound of the supported temperature in Fahrenheit] * 10. + * configArray[5] = [the increment in Fahrenheit] * 10. + * For example, if the vehicle supports temperature values as: + * [16.0, 16.5, 17.0 ,..., 28.0] in Celsius + * [60.5, 61.5, 62.5 ,..., 85.5] in Fahrenheit. + * The configArray should be configArray = {160, 280, 5, 605, 825, 10}. + * + * If the vehicle supports HVAC_TEMPERATURE_VALUE_SUGGESTION, the application can use + * that property to get the suggested value before setting HVAC_TEMPERATURE_SET. Otherwise, + * the application may choose the value in HVAC_TEMPERATURE_SET configArray by itself. + * * @change_mode VehiclePropertyChangeMode:ON_CHANGE * @access VehiclePropertyAccess:READ_WRITE * @unit VehicleUnit:CELSIUS @@ -849,6 +910,11 @@ * possible. Any parameters modified as a side effect of turning on/off * the MAX DEFROST parameter shall generate onPropertyEvent() callbacks to * the VHAL. + * The AreaIDs for HVAC_MAX_DEFROST_ON indicate MAX DEFROST can be controlled + * in the area. + * For example: + * areaConfig.areaId = {ROW_1_LEFT | ROW_1_RIGHT} indicates HVAC_MAX_DEFROST_ON + * only can be controlled for the front rows. * * @change_mode VehiclePropertyChangeMode:ON_CHANGE * @access VehiclePropertyAccess:READ_WRITE @@ -1063,6 +1129,45 @@ */ HVAC_ELECTRIC_DEFROSTER_ON = 320865556 /* (0x0514 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:WINDOW) */, /** + * Suggested values for setting HVAC temperature. + * + * Implement the property to help applications understand the closest supported temperature + * value in Celsius or Fahrenheit. + * + * floatValues[0] = the requested value that an application wants to set a temperature to. + * floatValues[1] = the unit for floatValues[0]. It should be one of + * {VehicleUnit:CELSIUS, VehicleUnit:FAHRENHEIT}. + * floatValues[2] = the value OEMs suggested in CELSIUS. This value is not included + * in the request. + * floatValues[3] = the value OEMs suggested in FAHRENHEIT. This value is not included + * in the request. + * + * An application calls set(VehiclePropValue propValue) with the requested value and unit for + * the value. OEMs need to return the suggested values in floatValues[2] and floatValues[3] by + * onPropertyEvent() callbacks. + * + * For example, when a user uses the voice assistant to set HVAC temperature to 66.2 in + * Fahrenheit. + * First, an application will set this property with the value + * [66.2, (float)VehicleUnit:FAHRENHEIT,0,0]. + * If OEMs suggest to set 19.0 in Celsius or 66.5 in Fahrenheit for user's request, then VHAL + * must generate a callback with property value + * [66.2, (float)VehicleUnit:FAHRENHEIT, 19.0, 66.5]. After the voice assistant gets the + * callback, it will inform the user and set HVAC temperature to the suggested value. + * + * Another example, an application receives 21 Celsius as the current temperature value by + * querying HVC_TEMPERATURE_SET. But the application wants to know what value is displayed on + * the car's UI in Fahrenheit. + * For this, the application sets the property to [21, (float)VehicleUnit:CELSIUS, 0, 0]. If + * the suggested value by the OEM for 21 Celsius is 70 Fahrenheit, then VHAL must generate a + * callback with property value [21, (float)VehicleUnit:CELSIUS, 21.0, 70.0]. + * In this case, the application can know that the value is 70.0 Fahrenheit in the car’s UI. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ_WRITE + */ + HVAC_TEMPERATURE_VALUE_SUGGESTION = 291570965 /* (0x0515 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT_VEC | VehicleArea:GLOBAL) */, + /** * Distance units for display * * Indicates which units the car is using to display distances to the user. Eg. Mile, Meter @@ -1151,6 +1256,38 @@ */ VEHICLE_SPEED_DISPLAY_UNITS = 289408517 /* (0x0605 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */, /** + * Current date and time, encoded as Unix time (in milliseconds). + * This value denotes the number of milliseconds seconds that have + * elapsed since 1/1/1970 UTC. + * + * Reading this value will give you the system’s time. This can be + * useful to synchronize other vehicle systems (dash clock etc). + * + * Writing this value will update the ‘ExternalTimeSuggestion’ + * value (if enabled). This value may be consumed by the “Time + * Detector Service”, if other sources do not have a higher + * priority. For information on how to adjust time source + * priorities see Time Detector Service documentation. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ_WRITE + * @unit VehicleUnit:MILLI_SECS + */ + EPOCH_TIME = 290457094 /* (0x0606 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT64 | VehicleArea:GLOBAL) */, + /** + * External encryption binding seed. + * + * This value is mixed with the local key storage encryption key. + * This property holds 16 bytes, and is expected to be persisted on an ECU separate from + * the IVI. The property is initially set by AAOS, who generates it using a CSRNG. + * AAOS will then read the property on subsequent boots. The binding seed is expected to be + * reliably persisted. Any loss of the seed results in a factory reset of the IVI. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ_WRITE + */ + STORAGE_ENCRYPTION_BINDING_SEED = 292554247 /* (0x0607 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BYTES | VehicleArea:GLOBAL) */, + /** * Outside temperature * * @change_mode VehiclePropertyChangeMode:CONTINUOUS @@ -1255,6 +1392,28 @@ */ HW_ROTARY_INPUT = 289475104 /* (0x0A20 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */, /** + * Defines a custom OEM partner input event. + * + * This input event must be used by OEM partners who wish to propagate events not supported + * by Android. It is composed by an array of int32 values only. + * + * The Android properties are: + * + * int32Values[0] : Input code identifying the function representing this event. Valid event + * types are defined by CustomInputType.CUSTOM_EVENT_F1 up to + * CustomInputType.CUSTOM_EVENT_F10. They represent the custom event to be + * defined by OEM partners. + * int32Values[1] : target display type defined in VehicleDisplay. Events not tied to specific + * display must be sent to VehicleDisplay#MAIN. + * int32Values[2] : repeat counter, if 0 then event is not repeated. Values 1 or above means + * how many times this event repeated. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @data_enum CustomInputType + * @access VehiclePropertyAccess:READ + */ + HW_CUSTOM_INPUT = 289475120 /* (0X0A30 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */, + /** * Most Car Cabin properties have both a POSition and MOVE parameter. These * are used to control the various movements for seats, doors, and windows * in a vehicle. @@ -2004,21 +2163,28 @@ * int32[5]: 0 // user #0 (usersInfo.existingUsers[0].userId) * int32[6]: 1 // flags of user #0 (usersInfo.existingUsers[0].flags) * - * And if the HAL want to respond with the creation of an admin user called "Admin", the + * And if the HAL want to respond with the creation of an admin user called "Owner", the * response would be: * - * int32[0]: 42 // must match the request id from the request - * int32[1]: 2 // action = InitialUserInfoResponseAction::CREATE - * int32[2]: -1 // userToSwitchOrCreate.userId (not used as user will be created) - * int32[3]: 8 // userToSwitchOrCreate.flags = ADMIN - * string: "Admin" // userNameToCreate + * int32[0]: 42 // must match the request id from the request + * int32[1]: 2 // action = InitialUserInfoResponseAction::CREATE + * int32[2]: -10000 // userToSwitchOrCreate.userId (not used as user will be created) + * int32[3]: 8 // userToSwitchOrCreate.flags = ADMIN + * string: "||Owner" // userLocales + separator + userNameToCreate + * + * Notice the string value represents multiple values, separated by ||. The first value is the + * (optional) system locales for the user to be created (in this case, it's empty, meaning it + * will use Android's default value), while the second value is the (also optional) name of the + * to user to be created (when the type of response is InitialUserInfoResponseAction:CREATE). + * For example, to create the same "Owner" user with "en-US" and "pt-BR" locales, the string + * value of the response would be "en-US,pt-BR||Owner". As such, neither the locale nor the + * name can have || on it, although a single | is fine. * * NOTE: if the HAL doesn't support user management, then it should not define this property, * which in turn would disable the other user-related properties (for example, the Android * system would never issue them and user-related requests from the HAL layer would be ignored - * by the Android System). But if it supports user management, then it must support all - * user-related properties (INITIAL_USER_INFO, SWITCH_USER, CREATE_USER, REMOVE_USER, - * and USER_IDENTIFICATION_ASSOCIATION). + * by the Android System). But if it supports user management, then it must support all core + * user-related properties (INITIAL_USER_INFO, SWITCH_USER, CREATE_USER, and REMOVE_USER). * * @change_mode VehiclePropertyChangeMode:ON_CHANGE * @access VehiclePropertyAccess:READ_WRITE @@ -2092,7 +2258,7 @@ * int32[5]: 0 // current user flags (none) * int32[6]: 3 // number of users * int32[7]: 0 // 1st user (user 0) - * int32[8]: 0 // 1st user flags (none) + * int32[8]: 1 // 1st user flags (SYSTEM) * int32[9]: 10 // 2nd user (user 10) * int32[10]: 0 // 2nd user flags (none) * int32[11]: 11 // 3rd user (user 11) @@ -2126,7 +2292,7 @@ * identified the user as A. * * The HAL makes this request by a property change event (passing a negative request id), and - * the Android system will response by issuye an ANDROID_POST_SWITCH call which the same + * the Android system will response by issue an ANDROID_POST_SWITCH call which the same * request id. * * For example, if the current foreground Android user is 10 and the HAL asked it to switch to @@ -2139,9 +2305,9 @@ * If the request succeeded and Android has 3 users (0, 10, 11), the response would be: * * int32[0]: -108 // request id - * int32[1]: 5 // messageType = SwitchUserMessageType::ANDROID_SWITCH + * int32[1]: 5 // messageType = SwitchUserMessageType::ANDROID_POST_SWITCH * int32[2]: 11 // target user id - * int32[3]: 11 // target user id flags (none) + * int32[3]: 0 // target user id flags (none) * int32[4]: 11 // current user * int32[5]: 0 // current user flags (none) * int32[6]: 3 // number of users @@ -2157,17 +2323,21 @@ * * 5.ANDROID_POST_SWITCH * --------------------- - * Called by the Android System after a request to switch a user was made + * Called by the Android System after a request to switch a user was made. * * This property is called after switch requests of any type (i.e., LEGACY_ANDROID_SWITCH, * ANDROID_SWITCH, or VEHICLE_REQUEST) and can be used to determine if the request succeeded or * failed: * - * 1. When it succeeded, it's called when the Android user is in the boot locked state and the - * value of the current and target users ids in the response are different. This would be - * equivalent to receiving an Intent.ACTION_LOCKED_BOOT_COMPLETED in an Android app. + * 1. When it succeeded, it's called when the Android user is in the unlocked state and the + * value of the current and target users ids in the response are the same. This would be + * equivalent to receiving an Intent.ACTION_USER_UNLOCKED in an Android app. * 2. When it failed it's called right away and the value of the current and target users ids - * in the response are the same. + * in the response are different (as the current user didn't change to the target). + * 3. If a new switch request is made before the HAL responded to the previous one or before + * the user was unlocked, then the ANDROID_POST_SWITCH request is not made. For example, + * the driver could accidentally switch to the wrong user which has lock credentials, then + * switch to the right one before entering the credentials. * * The HAL can update its internal state once it receives this request, but it doesn't need to * reply back to the Android System. @@ -2202,7 +2372,7 @@ * * int32[0]: 42 // request id * int32[1]: 11 // Android id of the created user - * int32[2]: 3 // Android flags (ephemeral guest) of the created user + * int32[2]: 6 // Android flags (ephemeral guest) of the created user * int32[3]: 10 // current user * int32[4]: 0 // current user flags (none) * int32[5]: 3 // number of users @@ -2211,7 +2381,7 @@ * int32[8]: 10 // 2nd user (user 10) * int32[9]: 0 // 2nd user flags (none) * int32[19]: 11 // 3rd user (user 11) - * int32[11]: 3 // 3rd user flags (ephemeral guest) + * int32[11]: 6 // 3rd user flags (ephemeral guest) * string: "ElGuesto" // name of the new user * * Then if the request succeeded, the HAL would return: @@ -2223,7 +2393,7 @@ * * int32[0]: 42 // request id * int32[1]: 2 // CreateUserStatus::FAILURE - * string: "D'OH!" // The meaning is opaque - it's passed to the caller (like Settings UI), + * string: "D'OH!" // The meaning is a blackbox - it's passed to the caller (like Settings UI), * // which in turn can take the proper action. * * @change_mode VehiclePropertyChangeMode:ON_CHANGE @@ -2264,9 +2434,13 @@ * Property used to associate (or query the association) the current user with vehicle-specific * identification mechanisms (such as key FOB). * + * This is an optional user management property - the OEM could still support user management + * without defining it. In fact, this property could be used without supporting the core + * user-related functions described on INITIAL_USER_INFO. + * * To query the association, the Android system gets the property, passing a VehiclePropValue * containing the types of associations are being queried, as defined by - * UserIdentificationGetRequest. The HAL must return right away, updating the VehiclePropValue + * UserIdentificationGetRequest. The HAL must return right away, returning a VehiclePropValue * with a UserIdentificationResponse. Notice that user identification should have already * happened while system is booting up and the VHAL implementation should only return the * already identified association (like the key FOB used to unlock the car), instead of starting @@ -2281,50 +2455,286 @@ * For example, to query if the current user (10) is associated with the FOB that unlocked the * car and a custom mechanism provided by the OEM, the request would be: * - * int32[0]: 10 (Android user id) - * int32[1]: 0 (Android user flags) - * int32[2]: 2 (number of types queried) - * int32[3]: 1 (1st type queried, UserIdentificationAssociationType::KEY_FOB) - * int32[4]: 101 (2nd type queried, UserIdentificationAssociationType::CUSTOM_1) + * int32[0]: 42 // request id + * int32[1]: 10 (Android user id) + * int32[2]: 0 (Android user flags) + * int32[3]: 2 (number of types queried) + * int32[4]: 1 (1st type queried, UserIdentificationAssociationType::KEY_FOB) + * int32[5]: 101 (2nd type queried, UserIdentificationAssociationType::CUSTOM_1) * * If the user is associated with the FOB but not with the custom mechanism, the response would * be: * - * int32[9]: 2 (number of associations in the response) - * int32[1]: 1 (1st type: UserIdentificationAssociationType::KEY_FOB) - * int32[2]: 2 (1st value: UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER) - * int32[3]: 101 (2st type: UserIdentificationAssociationType::CUSTOM_1) - * int32[4]: 4 (2nd value: UserIdentificationAssociationValue::NOT_ASSOCIATED_ANY_USER) + * int32[0]: 42 // request id + * int32[1]: 2 (number of associations in the response) + * int32[2]: 1 (1st type: UserIdentificationAssociationType::KEY_FOB) + * int32[3]: 2 (1st value: UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER) + * int32[4]: 101 (2st type: UserIdentificationAssociationType::CUSTOM_1) + * int32[5]: 4 (2nd value: UserIdentificationAssociationValue::NOT_ASSOCIATED_ANY_USER) * * Then to associate the user with the custom mechanism, a set request would be made: * - * int32[0]: 10 (Android user id) - * int32[0]: 0 (Android user flags) - * int32[1]: 1 (number of associations being set) - * int32[2]: 101 (1st type: UserIdentificationAssociationType::CUSTOM_1) - * int32[3]: 1 (1st value: UserIdentificationAssociationSETValue::ASSOCIATE_CURRENT_USER) + * int32[0]: 43 // request id + * int32[1]: 10 (Android user id) + * int32[2]: 0 (Android user flags) + * int32[3]: 1 (number of associations being set) + * int32[4]: 101 (1st type: UserIdentificationAssociationType::CUSTOM_1) + * int32[5]: 1 (1st value: UserIdentificationAssociationSetValue::ASSOCIATE_CURRENT_USER) * * If the request succeeded, the response would be simply: * - * int32[0]: 2 (number of associations in the response) - * int32[1]: 101 (1st type: UserIdentificationAssociationType::CUSTOM_1) - * int32[2]: 1 (1st value: UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER) + * int32[0]: 43 // request id + * int32[1]: 1 (number of associations in the response) + * int32[2]: 101 (1st type: UserIdentificationAssociationType::CUSTOM_1) + * int32[3]: 1 (1st value: UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER) * * Notice that the set request adds associations, but doesn't remove the existing ones. In the * example above, the end state would be 2 associations (FOB and CUSTOM_1). If we wanted to * associate the user with just CUSTOM_1 but not FOB, then the request should have been: * - * int32[0]: 10 (Android user id) - * int32[1]: 2 (number of types set) - * int32[2]: 1 (1st type: UserIdentificationAssociationType::KEY_FOB) - * int32[3]: 2 (1st value: UserIdentificationAssociationValue::DISASSOCIATE_CURRENT_USER) - * int32[3]: 101 (2nd type: UserIdentificationAssociationType::CUSTOM_1) - * int32[5]: 1 (2nd value: UserIdentificationAssociationValue::ASSOCIATE_CURRENT_USER) + * int32[0]: 43 // request id + * int32[1]: 10 (Android user id) + * int32[2]: 2 (number of types set) + * int32[3]: 1 (1st type: UserIdentificationAssociationType::KEY_FOB) + * int32[4]: 2 (1st value: UserIdentificationAssociationValue::DISASSOCIATE_CURRENT_USER) + * int32[5]: 101 (2nd type: UserIdentificationAssociationType::CUSTOM_1) + * int32[6]: 1 (2nd value: UserIdentificationAssociationValue::ASSOCIATE_CURRENT_USER) * * @change_mode VehiclePropertyChangeMode:ON_CHANGE * @access VehiclePropertyAccess:READ_WRITE */ USER_IDENTIFICATION_ASSOCIATION = 299896587 /* (0x0F0B | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */, + /** + * Enable/request an EVS service. + * + * The property provides a generalized way to trigger EVS services. VHAL + * should use this property to request Android to start or stop EVS service. + * + * int32Values[0] = a type of the EVS service. The value must be one of enums in + * EvsServiceType. + * int32Values[1] = the state of the EVS service. The value must be one of enums in + * EvsServiceState. + * + * For example, to enable rear view EVS service, android side can set the property value as + * [EvsServiceType::REAR_VIEW, EvsServiceState::ON]. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ + */ + EVS_SERVICE_REQUEST = 289476368 /* (0x0F10 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */, + /** + * Defines a request to apply power policy. + * + * VHAL sets this property to change car power policy. Car power policy service subscribes to + * this property and actually changes the power policy. + * The request is made by setting the VehiclePropValue with the ID of a power policy which is + * defined at /vendor/etc/power_policy.xml. If the given ID is not defined, car power policy + * service ignores the request and the current power policy is maintained. + * + * string: "sample_policy_id" // power policy ID + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ + */ + POWER_POLICY_REQ = 286265121 /* (0x0F21 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:STRING | VehicleArea:GLOBAL) */, + /** + * Defines a request to set the power polic group used to decide a default power policy per + * power status transition. + * + * VHAL sets this property with the ID of a power policy group in order to set the default power + * policy applied at power status transition. Power policy groups are defined at + * /vendor/etc/power_policy.xml. If the given ID is not defined, car power policy service + * ignores the request. + * Car power policy service subscribes to this property and sets the power policy group. + * The actual application of power policy takes place when the system power status changes and + * there is a valid mapped power policy for the new power status. + * + * string: "sample_policy_group_id" // power policy group ID + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ + */ + POWER_POLICY_GROUP_REQ = 286265122 /* (0x0F22 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:STRING | VehicleArea:GLOBAL) */, + /** + * Notifies the current power policy to VHAL layer. + * + * Car power policy service sets this property when the current power policy is changed. + * + * string: "sample_policy_id" // power policy ID + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ_WRITE + */ + CURRENT_POWER_POLICY = 286265123 /* (0x0F23 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:STRING | VehicleArea:GLOBAL) */, + /** + * Defines an event that car watchdog updates to tell it's alive. + * + * Car watchdog sets this property to system uptime in milliseconds at every 3 second. + * During the boot, the update may take longer time. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:WRITE + */ + WATCHDOG_ALIVE = 290459441 /* (0xF31 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT64 | VehicleArea:GLOBAL) */, + /** + * Defines a process terminated by car watchdog and the reason of termination. + * + * int32Values[0]: 1 // ProcessTerminationReason showing why a process is terminated. + * string: "/system/bin/log" // Process execution command. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:WRITE + */ + WATCHDOG_TERMINATED_PROCESS = 299896626 /* (0x0F32 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */, + /** + * Defines an event that VHAL signals to car watchdog as a heartbeat. + * + * If VHAL supports this property, VHAL should write system uptime to this property at every 3 + * second. Car watchdog subscribes to this property and checks if the property is updated at + * every 3 second. With the buffer time of 3 second, car watchdog waits for a heart beat to be + * signaled up to 6 seconds from the last heart beat. If it isn’t, car watchdog considers + * VHAL unhealthy and terminates it. + * If this property is not supported by VHAL, car watchdog doesn't check VHAL health status. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ + */ + VHAL_HEARTBEAT = 290459443 /* (0x0F33 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT64 | VehicleArea:GLOBAL) */, + /** + * Starts the ClusterUI in cluster display. + * + * int32: the type of ClusterUI to show + * 0 indicates ClusterHome, that is a home screen of cluster display, and provides + * the default UI and a kind of launcher functionality for cluster display. + * the other values are followed by OEM's definition. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ + */ + CLUSTER_SWITCH_UI = 289410868 /* (0x0F34 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */, + /** + * Changes the state of the cluster display. + * + * Bounds: the area to render the cluster Activity. + * Inset: the area which Activity should avoid from placing any important + * information. + * + * int32[0]: on/off: 0 - off, 1 - on, -1 - don't care + * int32[1]: Bounds - left: positive number - left position in pixels + * -1 - don't care (should set all Bounds fields) + * int32[2]: Bounds - top: same format with 'left' + * int32[3]: Bounds - right: same format with 'left' + * int32[4]: Bounds - bottom: same format with 'left' + * int32[5]: Inset - left: positive number - actual left inset value in pixels + * -1 - don't care (should set "don't care" all Inset fields) + * int32[6]: Inset - top: same format with 'left' + * int32[7]: Inset - right: same format with 'left' + * int32[8]: Inset - bottom: same format with 'left' + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ + */ + CLUSTER_DISPLAY_STATE = 289476405 /* (0x0F35 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */, + /** + * Reports the current display state and ClusterUI state. + * + * ClusterHome will send this message when it handles CLUSTER_SWITCH_UI, CLUSTER_DISPLAY_STATE. + * + * In addition, ClusterHome should send this message when it starts for the first time. + * When ClusterOS receives this message and if the internal expectation is different with the + * received message, then it should send CLUSTER_SWITCH_UI, CLUSTER_DISPLAY_STATE again to + * match the state. + * + * int32[0]: on/off: 0 - off, 1 - on + * int32[1]: Bounds - left + * int32[2]: Bounds - top + * int32[3]: Bounds - right + * int32[4]: Bounds - bottom + * int32[5]: Inset - left + * int32[6]: Inset - top + * int32[7]: Inset - right + * int32[8]: Inset - bottom + * int32[9]: the type of ClusterUI in the fullscreen or main screen. + * 0 indicates ClusterHome. + * the other values are followed by OEM's definition. + * int32[10]: the type of ClusterUI in sub screen if the currently two UIs are shown. + * -1 indicates the area isn't used any more. + * bytes: the array to represent the availability of ClusterUI. + * 0 indicates non-available and 1 indicates available. + * For example, let's assume a car supports 3 OEM defined ClusterUI like HOME, MAPS, CALL, + * and it only supports CALL UI only when the cellular network is available. Then, if the + * nework is avaibale, it'll send [1 1 1], and if it's out of network, it'll send [1 1 0]. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:WRITE + */ + CLUSTER_REPORT_STATE = 299896630 /* (0x0F36 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */, + /** + * Requests to change the cluster display state to show some ClusterUI. + * + * When the current display state is off and ClusterHome sends this message to ClusterOS to + * request to turn the display on to show some specific ClusterUI. + * ClusterOS should response this with CLUSTER_DISPLAY_STATE. + * + * int32: the type of ClusterUI to show + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:WRITE + */ + CLUSTER_REQUEST_DISPLAY = 289410871 /* (0x0F37 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */, + /** + * Informs the current navigation state. + * + * bytes: the serialized message of NavigationStateProto. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:WRITE + */ + CLUSTER_NAVIGATION_STATE = 292556600 /* (0x0F38 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BYTES | VehicleArea:GLOBAL) */, + /** + * Electronic Toll Collection card type. + * + * This property indicates the type of ETC card in this vehicle. + * If the head unit is aware of an ETC card attached to the vehicle, this property should + * return the type of card attached; otherwise, this property should be UNAVAILABLE. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ + * @data_enum ElectronicTollCollectionCardType + */ + ELECTRONIC_TOLL_COLLECTION_CARD_TYPE = 289410873 /* (0x0F39 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */, + /** + * Electronic Toll Collection card status. + * + * This property indicates the status of ETC card in this vehicle. + * If the head unit is aware of an ETC card attached to the vehicle, + * ELECTRONIC_TOLL_COLLECTION_CARD_TYPE gives that status of the card; otherwise, + * this property should be UNAVAILABLE. + * + * @change_mode VehiclePropertyChangeMode:ON_CHANGE + * @access VehiclePropertyAccess:READ + * @data_enum ElectronicTollCollectionCardStatus + */ + ELECTRONIC_TOLL_COLLECTION_CARD_STATUS = 289410874 /* (0x0F3A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */, +}; + +/** + * Used by ELECTRONIC_TOLL_COLLECTION_CARD_TYPE. + */ +enum class ElectronicTollCollectionCardType : int32_t { + UNKNOWN = 0, + JP_ELECTRONIC_TOLL_COLLECTION_CARD = 1, + JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2 = 2, +}; + +/** + * Used by ELECTRONIC_TOLL_COLLECTION_CARD_STATUS. + */ +enum class ElectronicTollCollectionCardStatus : int32_t { + UNKNOWN = 0, + ELECTRONIC_TOLL_COLLECTION_CARD_VALID = 1, + ELECTRONIC_TOLL_COLLECTION_CARD_INVALID = 2, + ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED = 3, }; /** @@ -2381,6 +2791,30 @@ }; /** + * Used by EVS_SERVICE_REQUEST to enumerate the service's type. + */ +enum class EvsServiceType : int32_t { + REARVIEW = 0, + SURROUNDVIEW = 1, +}; + +/** + * Used by EVS_SERVICE_REQUEST to enumerate the service's state. + */ +enum class EvsServiceState : int32_t { + OFF = 0, + ON = 1, +}; + +/** + * Index in int32VAlues for VehicleProperty#EVS_SERVICE_REQUEST property. + */ +enum class EvsServiceRequestIndex : int32_t { + TYPE = 0, + STATE = 1, +}; + +/** * Used by lights state properties to enumerate the current state of the lights. * * Most XXX_LIGHTS_STATE properties will only report ON and OFF states. Only @@ -2755,6 +3189,7 @@ US_GALLON = 66 /* 0x42 */, IMPERIAL_GALLON = 67 /* 0x43 */, NANO_SECS = 80 /* 0x50 */, + MILLI_SECS = 81 /* 0x51 */, SECS = 83 /* 0x53 */, YEAR = 89 /* 0x59 */, WATT_HOUR = 96 /* 0x60 */, @@ -3037,7 +3472,8 @@ // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue) == 8, "wrong alignment"); /** - * Time is elapsed nanoseconds since boot + * Time is elapsed nanoseconds since boot. It's equivalent to + * {@code SystemClock.elapsedRealtimeNano()}. */ int64_t timestamp __attribute__ ((aligned(8))); /** @@ -4072,6 +4508,14 @@ * Admin users have additional privileges such as permission to create other users. */ ADMIN = 8 /* 0x08 */, + /** + * Disabled users are marked for deletion. + */ + DISABLED = 16 /* 0x10 */, + /** + * Profile user is a profile of another user. + */ + PROFILE = 32 /* 0x20 */, }; /** @@ -4100,11 +4544,13 @@ */ ::android::hardware::automotive::vehicle::V2_0::UserInfo currentUser __attribute__ ((aligned(4))); /** - * Number of existing users (includes the current user). + * Number of existing users; includes the current user, recently removed users (with DISABLED + * flag), and profile users (with PROFILE flag). */ int32_t numberUsers __attribute__ ((aligned(4))); /** - * List of existing users (includes the current user). + * List of existing users; includes the current user, recently removed users (with DISABLED + * flag), and profile users (with PROFILE flag). */ ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::UserInfo> existingUsers __attribute__ ((aligned(8))); }; @@ -4215,6 +4661,11 @@ */ ::android::hardware::automotive::vehicle::V2_0::UserInfo userToSwitchOrCreate __attribute__ ((aligned(4))); /** + * System locales of the initial user (value will be passed as-is to + * android.provider.Settings.System.SYSTEM_LOCALES) + */ + ::android::hardware::hidl_string userLocales __attribute__ ((aligned(8))); + /** * Name of the user that should be created. */ ::android::hardware::hidl_string userNameToCreate __attribute__ ((aligned(8))); @@ -4223,8 +4674,9 @@ // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, requestId) == 0, "wrong offset"); // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, action) == 4, "wrong offset"); // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, userToSwitchOrCreate) == 8, "wrong offset"); -// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, userNameToCreate) == 16, "wrong offset"); -// static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse) == 32, "wrong size"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, userLocales) == 16, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, userNameToCreate) == 32, "wrong offset"); +// static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse) == 48, "wrong size"); // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse) == 8, "wrong alignment"); /** @@ -4507,6 +4959,10 @@ */ struct UserIdentificationGetRequest final { /** + * Id of the request being responded. + */ + int32_t requestId __attribute__ ((aligned(4))); + /** * Information about the current foreground Android user. */ ::android::hardware::automotive::vehicle::V2_0::UserInfo userInfo __attribute__ ((aligned(4))); @@ -4520,8 +4976,9 @@ ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType> associationTypes __attribute__ ((aligned(8))); }; -// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, userInfo) == 0, "wrong offset"); -// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, numberAssociationTypes) == 8, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, requestId) == 0, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, userInfo) == 4, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, numberAssociationTypes) == 12, "wrong offset"); // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, associationTypes) == 16, "wrong offset"); // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest) == 32, "wrong size"); // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest) == 8, "wrong alignment"); @@ -4534,6 +4991,10 @@ */ struct UserIdentificationSetRequest final { /** + * Id of the request being responded. + */ + int32_t requestId __attribute__ ((aligned(4))); + /** * Information about the current foreground Android user. */ ::android::hardware::automotive::vehicle::V2_0::UserInfo userInfo __attribute__ ((aligned(4))); @@ -4544,11 +5005,12 @@ /** * Associations being set. */ - ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue> associations __attribute__ ((aligned(8))); + ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation> associations __attribute__ ((aligned(8))); }; -// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, userInfo) == 0, "wrong offset"); -// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, numberAssociations) == 8, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, requestId) == 0, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, userInfo) == 4, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, numberAssociations) == 12, "wrong offset"); // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, associations) == 16, "wrong offset"); // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest) == 32, "wrong size"); // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest) == 8, "wrong alignment"); @@ -4561,6 +5023,10 @@ */ struct UserIdentificationResponse final { /** + * Id of the request being responded. + */ + int32_t requestId __attribute__ ((aligned(4))); + /** * Number of associations being returned. */ int32_t numberAssociation __attribute__ ((aligned(4))); @@ -4577,7 +5043,8 @@ ::android::hardware::hidl_string errorMessage __attribute__ ((aligned(8))); }; -// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse, numberAssociation) == 0, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse, requestId) == 0, "wrong offset"); +// static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse, numberAssociation) == 4, "wrong offset"); // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse, associations) == 8, "wrong offset"); // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse, errorMessage) == 24, "wrong offset"); // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse) == 40, "wrong size"); @@ -4624,6 +5091,47 @@ ROTARY_INPUT_TYPE_AUDIO_VOLUME = 1, }; +/** + * The reason why a process is terminated by car watchdog. + * This is used with WATCHDOG_TERMINATED_PROCESS property. + */ +enum class ProcessTerminationReason : int32_t { + /** + * A process doesn't respond to car watchdog within the timeout. + */ + NOT_RESPONDING = 1, + /** + * A process uses more IO operations than what is allowed. + */ + IO_OVERUSE = 2, + /** + * A process uses more memory space than what is allowed. + */ + MEMORY_OVERUSE = 3, +}; + +/** + * Input code values for HW_CUSTOM_INPUT. + */ +enum class CustomInputType : int32_t { + /** + * Ten functions representing the custom input code to be defined and implemented by OEM + * partners. + * + * OEMs need to formally contact Android team if more than 10 functions are required. + */ + CUSTOM_EVENT_F1 = 1001, + CUSTOM_EVENT_F2 = 1002, + CUSTOM_EVENT_F3 = 1003, + CUSTOM_EVENT_F4 = 1004, + CUSTOM_EVENT_F5 = 1005, + CUSTOM_EVENT_F6 = 1006, + CUSTOM_EVENT_F7 = 1007, + CUSTOM_EVENT_F8 = 1008, + CUSTOM_EVENT_F9 = 1009, + CUSTOM_EVENT_F10 = 1010, +}; + // // type declarations for package // @@ -4754,6 +5262,68 @@ template<typename> static inline std::string toString(int32_t o); +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType o); +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType o, ::std::ostream* os); +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType lhs, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType rhs) { + return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType lhs, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType rhs) { + return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs); +} +constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType e) { + v |= static_cast<int32_t>(e); + return v; +} +constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType e) { + v &= static_cast<int32_t>(e); + return v; +} + +template<typename> +static inline std::string toString(int32_t o); +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus o); +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus o, ::std::ostream* os); +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus rhs) { + return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus rhs) { + return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs); +} +constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus e) { + v |= static_cast<int32_t>(e); + return v; +} +constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus e) { + v &= static_cast<int32_t>(e); + return v; +} + +template<typename> +static inline std::string toString(int32_t o); static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission o); static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission o, ::std::ostream* os); constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission rhs) { @@ -4816,6 +5386,99 @@ template<typename> static inline std::string toString(int32_t o); +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::EvsServiceType o); +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::EvsServiceType o, ::std::ostream* os); +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType rhs) { + return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType rhs) { + return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs); +} +constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType e) { + v |= static_cast<int32_t>(e); + return v; +} +constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceType e) { + v &= static_cast<int32_t>(e); + return v; +} + +template<typename> +static inline std::string toString(int32_t o); +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::EvsServiceState o); +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::EvsServiceState o, ::std::ostream* os); +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState rhs) { + return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState rhs) { + return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs); +} +constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState e) { + v |= static_cast<int32_t>(e); + return v; +} +constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceState e) { + v &= static_cast<int32_t>(e); + return v; +} + +template<typename> +static inline std::string toString(int32_t o); +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex o); +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex o, ::std::ostream* os); +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex rhs) { + return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex rhs) { + return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs); +} +constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex e) { + v |= static_cast<int32_t>(e); + return v; +} +constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex e) { + v &= static_cast<int32_t>(e); + return v; +} + +template<typename> +static inline std::string toString(int32_t o); static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleLightState o); static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleLightState o, ::std::ostream* os); constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState rhs) { @@ -6645,6 +7308,68 @@ return v; } +template<typename> +static inline std::string toString(int32_t o); +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason o); +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason o, ::std::ostream* os); +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason lhs, const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason rhs) { + return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason lhs, const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason rhs) { + return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs); +} +constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason e) { + v |= static_cast<int32_t>(e); + return v; +} +constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::ProcessTerminationReason e) { + v &= static_cast<int32_t>(e); + return v; +} + +template<typename> +static inline std::string toString(int32_t o); +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::CustomInputType o); +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::CustomInputType o, ::std::ostream* os); +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::CustomInputType lhs, const ::android::hardware::automotive::vehicle::V2_0::CustomInputType rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::CustomInputType rhs) { + return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs)); +} +constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::CustomInputType lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::CustomInputType lhs, const ::android::hardware::automotive::vehicle::V2_0::CustomInputType rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::CustomInputType rhs) { + return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs)); +} +constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::CustomInputType lhs, const int32_t rhs) { + return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs); +} +constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::CustomInputType e) { + v |= static_cast<int32_t>(e); + return v; +} +constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::CustomInputType e) { + v &= static_cast<int32_t>(e); + return v; +} + // // type header definitions for package // @@ -7114,6 +7839,12 @@ first = false; flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE; } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE)) { + os += (first ? "" : " | "); + os += "CRITICALLY_LOW_TIRE_PRESSURE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE; + } if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::GEAR_SELECTION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::GEAR_SELECTION)) { os += (first ? "" : " | "); os += "GEAR_SELECTION"; @@ -7300,6 +8031,12 @@ first = false; flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON; } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION)) { + os += (first ? "" : " | "); + os += "HVAC_TEMPERATURE_VALUE_SUGGESTION"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION; + } if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISTANCE_DISPLAY_UNITS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISTANCE_DISPLAY_UNITS)) { os += (first ? "" : " | "); os += "DISTANCE_DISPLAY_UNITS"; @@ -7336,6 +8073,18 @@ first = false; flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS; } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EPOCH_TIME) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EPOCH_TIME)) { + os += (first ? "" : " | "); + os += "EPOCH_TIME"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EPOCH_TIME; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::STORAGE_ENCRYPTION_BINDING_SEED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::STORAGE_ENCRYPTION_BINDING_SEED)) { + os += (first ? "" : " | "); + os += "STORAGE_ENCRYPTION_BINDING_SEED"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::STORAGE_ENCRYPTION_BINDING_SEED; + } if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENV_OUTSIDE_TEMPERATURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENV_OUTSIDE_TEMPERATURE)) { os += (first ? "" : " | "); os += "ENV_OUTSIDE_TEMPERATURE"; @@ -7378,6 +8127,12 @@ first = false; flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_ROTARY_INPUT; } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_CUSTOM_INPUT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_CUSTOM_INPUT)) { + os += (first ? "" : " | "); + os += "HW_CUSTOM_INPUT"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_CUSTOM_INPUT; + } if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_POS)) { os += (first ? "" : " | "); os += "DOOR_POS"; @@ -7762,6 +8517,90 @@ first = false; flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::USER_IDENTIFICATION_ASSOCIATION; } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EVS_SERVICE_REQUEST) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EVS_SERVICE_REQUEST)) { + os += (first ? "" : " | "); + os += "EVS_SERVICE_REQUEST"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EVS_SERVICE_REQUEST; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::POWER_POLICY_REQ) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::POWER_POLICY_REQ)) { + os += (first ? "" : " | "); + os += "POWER_POLICY_REQ"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::POWER_POLICY_REQ; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::POWER_POLICY_GROUP_REQ) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::POWER_POLICY_GROUP_REQ)) { + os += (first ? "" : " | "); + os += "POWER_POLICY_GROUP_REQ"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::POWER_POLICY_GROUP_REQ; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CURRENT_POWER_POLICY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CURRENT_POWER_POLICY)) { + os += (first ? "" : " | "); + os += "CURRENT_POWER_POLICY"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CURRENT_POWER_POLICY; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WATCHDOG_ALIVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WATCHDOG_ALIVE)) { + os += (first ? "" : " | "); + os += "WATCHDOG_ALIVE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WATCHDOG_ALIVE; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WATCHDOG_TERMINATED_PROCESS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WATCHDOG_TERMINATED_PROCESS)) { + os += (first ? "" : " | "); + os += "WATCHDOG_TERMINATED_PROCESS"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WATCHDOG_TERMINATED_PROCESS; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VHAL_HEARTBEAT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VHAL_HEARTBEAT)) { + os += (first ? "" : " | "); + os += "VHAL_HEARTBEAT"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VHAL_HEARTBEAT; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_SWITCH_UI) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_SWITCH_UI)) { + os += (first ? "" : " | "); + os += "CLUSTER_SWITCH_UI"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_SWITCH_UI; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_DISPLAY_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_DISPLAY_STATE)) { + os += (first ? "" : " | "); + os += "CLUSTER_DISPLAY_STATE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_DISPLAY_STATE; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_REPORT_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_REPORT_STATE)) { + os += (first ? "" : " | "); + os += "CLUSTER_REPORT_STATE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_REPORT_STATE; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_REQUEST_DISPLAY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_REQUEST_DISPLAY)) { + os += (first ? "" : " | "); + os += "CLUSTER_REQUEST_DISPLAY"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_REQUEST_DISPLAY; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_NAVIGATION_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_NAVIGATION_STATE)) { + os += (first ? "" : " | "); + os += "CLUSTER_NAVIGATION_STATE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_NAVIGATION_STATE; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_TYPE)) { + os += (first ? "" : " | "); + os += "ELECTRONIC_TOLL_COLLECTION_CARD_TYPE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_TYPE; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_STATUS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_STATUS)) { + os += (first ? "" : " | "); + os += "ELECTRONIC_TOLL_COLLECTION_CARD_STATUS"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_STATUS; + } if (o != flipped) { os += (first ? "" : " | "); os += toHexString(o & (~flipped)); @@ -7869,6 +8708,9 @@ if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE) { return "TIRE_PRESSURE"; } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE) { + return "CRITICALLY_LOW_TIRE_PRESSURE"; + } if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::GEAR_SELECTION) { return "GEAR_SELECTION"; } @@ -7962,6 +8804,9 @@ if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON) { return "HVAC_ELECTRIC_DEFROSTER_ON"; } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_VALUE_SUGGESTION) { + return "HVAC_TEMPERATURE_VALUE_SUGGESTION"; + } if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISTANCE_DISPLAY_UNITS) { return "DISTANCE_DISPLAY_UNITS"; } @@ -7980,6 +8825,12 @@ if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS) { return "VEHICLE_SPEED_DISPLAY_UNITS"; } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EPOCH_TIME) { + return "EPOCH_TIME"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::STORAGE_ENCRYPTION_BINDING_SEED) { + return "STORAGE_ENCRYPTION_BINDING_SEED"; + } if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENV_OUTSIDE_TEMPERATURE) { return "ENV_OUTSIDE_TEMPERATURE"; } @@ -8001,6 +8852,9 @@ if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_ROTARY_INPUT) { return "HW_ROTARY_INPUT"; } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_CUSTOM_INPUT) { + return "HW_CUSTOM_INPUT"; + } if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_POS) { return "DOOR_POS"; } @@ -8193,6 +9047,48 @@ if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::USER_IDENTIFICATION_ASSOCIATION) { return "USER_IDENTIFICATION_ASSOCIATION"; } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EVS_SERVICE_REQUEST) { + return "EVS_SERVICE_REQUEST"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::POWER_POLICY_REQ) { + return "POWER_POLICY_REQ"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::POWER_POLICY_GROUP_REQ) { + return "POWER_POLICY_GROUP_REQ"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CURRENT_POWER_POLICY) { + return "CURRENT_POWER_POLICY"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WATCHDOG_ALIVE) { + return "WATCHDOG_ALIVE"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WATCHDOG_TERMINATED_PROCESS) { + return "WATCHDOG_TERMINATED_PROCESS"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VHAL_HEARTBEAT) { + return "VHAL_HEARTBEAT"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_SWITCH_UI) { + return "CLUSTER_SWITCH_UI"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_DISPLAY_STATE) { + return "CLUSTER_DISPLAY_STATE"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_REPORT_STATE) { + return "CLUSTER_REPORT_STATE"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_REQUEST_DISPLAY) { + return "CLUSTER_REQUEST_DISPLAY"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CLUSTER_NAVIGATION_STATE) { + return "CLUSTER_NAVIGATION_STATE"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_TYPE) { + return "ELECTRONIC_TOLL_COLLECTION_CARD_TYPE"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ELECTRONIC_TOLL_COLLECTION_CARD_STATUS) { + return "ELECTRONIC_TOLL_COLLECTION_CARD_STATUS"; + } std::string os; os += toHexString(static_cast<int32_t>(o)); return os; @@ -8203,6 +9099,121 @@ } template<> +inline std::string toString<::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType>(int32_t o) { + using ::android::hardware::details::toHexString; + std::string os; + ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType> flipped = 0; + bool first = true; + if ((o & ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::UNKNOWN)) { + os += (first ? "" : " | "); + os += "UNKNOWN"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::UNKNOWN; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::JP_ELECTRONIC_TOLL_COLLECTION_CARD) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::JP_ELECTRONIC_TOLL_COLLECTION_CARD)) { + os += (first ? "" : " | "); + os += "JP_ELECTRONIC_TOLL_COLLECTION_CARD"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::JP_ELECTRONIC_TOLL_COLLECTION_CARD; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2)) { + os += (first ? "" : " | "); + os += "JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2; + } + if (o != flipped) { + os += (first ? "" : " | "); + os += toHexString(o & (~flipped)); + }os += " ("; + os += toHexString(o); + os += ")"; + return os; +} + +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType o) { + using ::android::hardware::details::toHexString; + if (o == ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::UNKNOWN) { + return "UNKNOWN"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::JP_ELECTRONIC_TOLL_COLLECTION_CARD) { + return "JP_ELECTRONIC_TOLL_COLLECTION_CARD"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType::JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2) { + return "JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2"; + } + std::string os; + os += toHexString(static_cast<int32_t>(o)); + return os; +} + +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardType o, ::std::ostream* os) { + *os << toString(o); +} + +template<> +inline std::string toString<::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus>(int32_t o) { + using ::android::hardware::details::toHexString; + std::string os; + ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus> flipped = 0; + bool first = true; + if ((o & ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::UNKNOWN)) { + os += (first ? "" : " | "); + os += "UNKNOWN"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::UNKNOWN; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_VALID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_VALID)) { + os += (first ? "" : " | "); + os += "ELECTRONIC_TOLL_COLLECTION_CARD_VALID"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_VALID; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_INVALID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_INVALID)) { + os += (first ? "" : " | "); + os += "ELECTRONIC_TOLL_COLLECTION_CARD_INVALID"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_INVALID; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED)) { + os += (first ? "" : " | "); + os += "ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED; + } + if (o != flipped) { + os += (first ? "" : " | "); + os += toHexString(o & (~flipped)); + }os += " ("; + os += toHexString(o); + os += ")"; + return os; +} + +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus o) { + using ::android::hardware::details::toHexString; + if (o == ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::UNKNOWN) { + return "UNKNOWN"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_VALID) { + return "ELECTRONIC_TOLL_COLLECTION_CARD_VALID"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_INVALID) { + return "ELECTRONIC_TOLL_COLLECTION_CARD_INVALID"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus::ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED) { + return "ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED"; + } + std::string os; + os += toHexString(static_cast<int32_t>(o)); + return os; +} + +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::ElectronicTollCollectionCardStatus o, ::std::ostream* os) { + *os << toString(o); +} + +template<> inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission>(int32_t o) { using ::android::hardware::details::toHexString; std::string os; @@ -8624,6 +9635,138 @@ } template<> +inline std::string toString<::android::hardware::automotive::vehicle::V2_0::EvsServiceType>(int32_t o) { + using ::android::hardware::details::toHexString; + std::string os; + ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::EvsServiceType> flipped = 0; + bool first = true; + if ((o & ::android::hardware::automotive::vehicle::V2_0::EvsServiceType::REARVIEW) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvsServiceType::REARVIEW)) { + os += (first ? "" : " | "); + os += "REARVIEW"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::EvsServiceType::REARVIEW; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::EvsServiceType::SURROUNDVIEW) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvsServiceType::SURROUNDVIEW)) { + os += (first ? "" : " | "); + os += "SURROUNDVIEW"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::EvsServiceType::SURROUNDVIEW; + } + if (o != flipped) { + os += (first ? "" : " | "); + os += toHexString(o & (~flipped)); + }os += " ("; + os += toHexString(o); + os += ")"; + return os; +} + +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::EvsServiceType o) { + using ::android::hardware::details::toHexString; + if (o == ::android::hardware::automotive::vehicle::V2_0::EvsServiceType::REARVIEW) { + return "REARVIEW"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::EvsServiceType::SURROUNDVIEW) { + return "SURROUNDVIEW"; + } + std::string os; + os += toHexString(static_cast<int32_t>(o)); + return os; +} + +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::EvsServiceType o, ::std::ostream* os) { + *os << toString(o); +} + +template<> +inline std::string toString<::android::hardware::automotive::vehicle::V2_0::EvsServiceState>(int32_t o) { + using ::android::hardware::details::toHexString; + std::string os; + ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::EvsServiceState> flipped = 0; + bool first = true; + if ((o & ::android::hardware::automotive::vehicle::V2_0::EvsServiceState::OFF) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvsServiceState::OFF)) { + os += (first ? "" : " | "); + os += "OFF"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::EvsServiceState::OFF; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::EvsServiceState::ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvsServiceState::ON)) { + os += (first ? "" : " | "); + os += "ON"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::EvsServiceState::ON; + } + if (o != flipped) { + os += (first ? "" : " | "); + os += toHexString(o & (~flipped)); + }os += " ("; + os += toHexString(o); + os += ")"; + return os; +} + +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::EvsServiceState o) { + using ::android::hardware::details::toHexString; + if (o == ::android::hardware::automotive::vehicle::V2_0::EvsServiceState::OFF) { + return "OFF"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::EvsServiceState::ON) { + return "ON"; + } + std::string os; + os += toHexString(static_cast<int32_t>(o)); + return os; +} + +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::EvsServiceState o, ::std::ostream* os) { + *os << toString(o); +} + +template<> +inline std::string toString<::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex>(int32_t o) { + using ::android::hardware::details::toHexString; + std::string os; + ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex> flipped = 0; + bool first = true; + if ((o & ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex::TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex::TYPE)) { + os += (first ? "" : " | "); + os += "TYPE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex::TYPE; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex::STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex::STATE)) { + os += (first ? "" : " | "); + os += "STATE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex::STATE; + } + if (o != flipped) { + os += (first ? "" : " | "); + os += toHexString(o & (~flipped)); + }os += " ("; + os += toHexString(o); + os += ")"; + return os; +} + +static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex o) { + using ::android::hardware::details::toHexString; + if (o == ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex::TYPE) { + return "TYPE"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex::STATE) { + return "STATE"; + } + std::string os; + os += toHexString(static_cast<int32_t>(o)); + return os; +} + +static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::EvsServiceRequestIndex o, ::std::ostream* os) { + *os << toString(o); +} + +template<> inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleLightState>(int32_t o) { using ::android::hardware::details::toHexString; std::string os; @@ -9776,6 +10919,12 @@ first = false; flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::NANO_SECS; } + if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLI_SECS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLI_SECS)) { + os += (first ? "" : " | "); + os += "MILLI_SECS"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLI_SECS; + } if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SECS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SECS)) { os += (first ? "" : " | "); os += "SECS"; @@ -9925,6 +11074,9 @@ if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::NANO_SECS) { return "NANO_SECS"; } + if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLI_SECS) { + return "MILLI_SECS"; + } if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SECS) { return "SECS"; } @@ -13834,6 +14986,18 @@ first = false; flipped |= ::android::hardware::automotive::vehicle::V2_0::UserFlags::ADMIN; } + if ((o & ::android::hardware::automotive::vehicle::V2_0::UserFlags::DISABLED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserFlags::DISABLED)) { + os += (first ? "" : " | "); + os += "DISABLED"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::UserFlags::DISABLED; + } + if ((o & ::android::hardware::automotive::vehicle::V2_0::UserFlags::PROFILE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserFlags::PROFILE)) { + os += (first ? "" : " | "); + os += "PROFILE"; + first = false; + flipped |= ::android::hardware::automotive::vehicle::V2_0::UserFlags::PROFILE; + } if (o != flipped) { os += (first ? "" : " | "); os += toHexString(o & (~flipped)); @@ -13860,6 +15024,12 @@ if (o == ::android::hardware::automotive::vehicle::V2_0::UserFlags::ADMIN) { return "ADMIN"; } + if (o == ::android::hardware::automotive::vehicle::V2_0::UserFlags::DISABLED) { + return "DISABLED"; + } + if (o == ::android::hardware::automotive::vehicle::V2_0::UserFlags::PROFILE) { + return "PROFILE"; + } std::string os; os += toHexString(static_cast<int32_t>(o)); return os; @@ -14091,6 +15261,8 @@ os += ::android::hardware::automotive::vehicle::V2_0::toString(o.action); os += ", .userToSwitchOrCreate = "; os += ::android::hardware::automotive::vehicle::V2_0::toString(o.userToSwitchOrCreate); + os += ", .userLocales = "; + os += ::android::hardware::toString(o.userLocales); os += ", .userNameToCreate = "; os += ::android::hardware::toString(o.userNameToCreate); os += "}"; return os; @@ -14110,6 +15282,9 @@ if (lhs.userToSwitchOrCreate != rhs.userToSwitchOrCreate) { return false; } + if (lhs.userLocales != rhs.userLocales) { + return false; + } if (lhs.userNameToCreate != rhs.userNameToCreate) { return false; } @@ -14654,7 +15829,9 @@ using ::android::hardware::toString; std::string os; os += "{"; - os += ".userInfo = "; + os += ".requestId = "; + os += ::android::hardware::toString(o.requestId); + os += ", .userInfo = "; os += ::android::hardware::automotive::vehicle::V2_0::toString(o.userInfo); os += ", .numberAssociationTypes = "; os += ::android::hardware::toString(o.numberAssociationTypes); @@ -14668,6 +15845,9 @@ } static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& rhs) { + if (lhs.requestId != rhs.requestId) { + return false; + } if (lhs.userInfo != rhs.userInfo) { return false; } @@ -14688,7 +15868,9 @@ using ::android::hardware::toString; std::string os; os += "{"; - os += ".userInfo = "; + os += ".requestId = "; + os += ::android::hardware::toString(o.requestId); + os += ", .userInfo = "; os += ::android::hardware::automotive::vehicle::V2_0::toString(o.userInfo); os += ", .numberAssociations = "; os += ::android::hardware::toString(o.numberAssociations); @@ -14702,6 +15884,9 @@ } static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& rhs) { + if (lhs.requestId != rhs.requestId) { + return false; + } if (lhs.userInfo != rhs.userInfo) { return false; } @@ -14722,7 +15907,9 @@ using ::android::hardware::toString; std::string os; os += "{"; - os += ".numberAssociation = "; + os += ".requestId = "; + os += ::android::hardware::toString(o.requestId); + os += ", .numberAssociation = "; os += ::android::hardware::toString(o.numberAssociation); os += ", .associations = "; os += ::android::hardware::toString(o.associations); @@ -14736,6 +15923,9 @@ } static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& rhs) { + if (lhs.requestId != rhs.requestId) { + return false; + } if (lhs.numberAssociation != rhs.numberAssociation) { return false; }