Merge "Fix test run for GSI" into main
diff --git a/audio/aidl/Android.bp b/audio/aidl/Android.bp
index 89d186c..3963ce3 100644
--- a/audio/aidl/Android.bp
+++ b/audio/aidl/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/TEST_MAPPING b/audio/aidl/TEST_MAPPING
index b5fcd86..e325001 100644
--- a/audio/aidl/TEST_MAPPING
+++ b/audio/aidl/TEST_MAPPING
@@ -4,9 +4,15 @@
       "name": "VtsHalAudioCoreTargetTest"
     },
     {
+      "name": "audioeffect_tests"
+    },
+    {
       "name": "audio_policy_config_xml_converter_tests"
     },
     {
+      "name": "trackplayerbase_tests"
+    },
+    {
       "name": "VtsHalAudioEffectFactoryTargetTest"
     },
     {
@@ -60,15 +66,9 @@
       "name": "audiorecord_tests"
     },
     {
-      "name": "audioeffect_tests"
-    },
-    {
       "name": "audiorouting_tests"
     },
     {
-      "name": "trackplayerbase_tests"
-    },
-    {
       "name": "audiosystem_tests"
     },
     {
diff --git a/audio/aidl/common/Android.bp b/audio/aidl/common/Android.bp
index 85ece3b..5c0c685 100644
--- a/audio/aidl/common/Android.bp
+++ b/audio/aidl/common/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/Android.bp b/audio/aidl/default/Android.bp
index fe386a2..8c6c537 100644
--- a/audio/aidl/default/Android.bp
+++ b/audio/aidl/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/Configuration.cpp b/audio/aidl/default/Configuration.cpp
index 2a8e58f..54e2d18 100644
--- a/audio/aidl/default/Configuration.cpp
+++ b/audio/aidl/default/Configuration.cpp
@@ -110,6 +110,9 @@
     AudioPortConfig config;
     config.id = id;
     config.portId = portId;
+    config.format = AudioFormatDescription{};
+    config.channelMask = AudioChannelLayout{};
+    config.sampleRate = Int{.value = 0};
     config.gain = AudioGainConfig();
     config.flags = isInput ? AudioIoFlags::make<AudioIoFlags::Tag::input>(flags)
                            : AudioIoFlags::make<AudioIoFlags::Tag::output>(flags);
diff --git a/audio/aidl/default/EffectConfig.cpp b/audio/aidl/default/EffectConfig.cpp
index 1cc4897..a1fbefa 100644
--- a/audio/aidl/default/EffectConfig.cpp
+++ b/audio/aidl/default/EffectConfig.cpp
@@ -93,7 +93,7 @@
 }
 
 bool EffectConfig::resolveLibrary(const std::string& path, std::string* resolvedPath) {
-    if (__builtin_available(android AAPEXSUPPORT_API, *)) {
+    if constexpr (__ANDROID_VENDOR_API__ >= 202404) {
         AApexInfo *apexInfo;
         if (AApexInfo_create(&apexInfo) == AAPEXINFO_OK) {
             std::string apexName(AApexInfo_getName(apexInfo));
diff --git a/audio/aidl/default/EffectContext.cpp b/audio/aidl/default/EffectContext.cpp
index 2e12918..9575790 100644
--- a/audio/aidl/default/EffectContext.cpp
+++ b/audio/aidl/default/EffectContext.cpp
@@ -22,6 +22,7 @@
 using aidl::android::hardware::audio::common::getChannelCount;
 using aidl::android::hardware::audio::common::getFrameSizeInBytes;
 using aidl::android::hardware::audio::effect::IEffect;
+using aidl::android::hardware::audio::effect::kReopenSupportedVersion;
 using aidl::android::media::audio::common::PcmType;
 using ::android::hardware::EventFlag;
 
@@ -40,19 +41,22 @@
     mOutputMQ = std::make_shared<DataMQ>(outBufferSizeInFloat);
 
     if (!mStatusMQ->isValid() || !mInputMQ->isValid() || !mOutputMQ->isValid()) {
-        LOG(ERROR) << __func__ << " created invalid FMQ";
+        LOG(ERROR) << __func__ << " created invalid FMQ, statusMQ: " << mStatusMQ->isValid()
+                   << " inputMQ: " << mInputMQ->isValid() << " outputMQ: " << mOutputMQ->isValid();
     }
 
     ::android::status_t status =
             EventFlag::createEventFlag(mStatusMQ->getEventFlagWord(), &mEfGroup);
     LOG_ALWAYS_FATAL_IF(status != ::android::OK || !mEfGroup, " create EventFlagGroup failed ");
-    mWorkBuffer.reserve(std::max(inBufferSizeInFloat, outBufferSizeInFloat));
+    mWorkBuffer.resize(std::max(inBufferSizeInFloat, outBufferSizeInFloat));
 }
 
 // reset buffer status by abandon input data in FMQ
 void EffectContext::resetBuffer() {
     auto buffer = static_cast<float*>(mWorkBuffer.data());
-    std::vector<IEffect::Status> status(mStatusMQ->availableToRead());
+    if (mStatusMQ) {
+        std::vector<IEffect::Status> status(mStatusMQ->availableToRead());
+    }
     if (mInputMQ) {
         mInputMQ->read(buffer, mInputMQ->availableToRead());
     }
@@ -71,7 +75,7 @@
 }
 
 void EffectContext::dupeFmq(IEffect::OpenEffectReturn* effectRet) {
-    if (effectRet) {
+    if (effectRet && mStatusMQ && mInputMQ && mOutputMQ) {
         effectRet->statusMQ = mStatusMQ->dupeDesc();
         effectRet->inputDataMQ = mInputMQ->dupeDesc();
         effectRet->outputDataMQ = mOutputMQ->dupeDesc();
@@ -82,6 +86,10 @@
     return static_cast<float*>(mWorkBuffer.data());
 }
 
+size_t EffectContext::getWorkBufferSize() const {
+    return mWorkBuffer.size();
+}
+
 std::shared_ptr<EffectContext::StatusMQ> EffectContext::getStatusFmq() const {
     return mStatusMQ;
 }
@@ -187,25 +195,37 @@
 }
 
 RetCode EffectContext::updateIOFrameSize(const Parameter::Common& common) {
-    const auto iFrameSize = ::aidl::android::hardware::audio::common::getFrameSizeInBytes(
+    const auto prevInputFrameSize = mInputFrameSize;
+    const auto prevOutputFrameSize = mOutputFrameSize;
+    mInputFrameSize = ::aidl::android::hardware::audio::common::getFrameSizeInBytes(
             common.input.base.format, common.input.base.channelMask);
-    const auto oFrameSize = ::aidl::android::hardware::audio::common::getFrameSizeInBytes(
+    mOutputFrameSize = ::aidl::android::hardware::audio::common::getFrameSizeInBytes(
             common.output.base.format, common.output.base.channelMask);
 
+    // workBuffer and data MQ not allocated yet, no need to update
+    if (mWorkBuffer.size() == 0 || !mInputMQ || !mOutputMQ) {
+        return RetCode::SUCCESS;
+    }
+    // IEffect::reopen introduced in android.hardware.audio.effect-V2
+    if (mVersion < kReopenSupportedVersion) {
+        LOG(WARNING) << __func__ << " skipped for HAL version " << mVersion;
+        return RetCode::SUCCESS;
+    }
     bool needUpdateMq = false;
-    if (mInputMQ &&
-        (mInputFrameSize != iFrameSize || mCommon.input.frameCount != common.input.frameCount)) {
+    if (mInputFrameSize != prevInputFrameSize ||
+        mCommon.input.frameCount != common.input.frameCount) {
         mInputMQ.reset();
         needUpdateMq = true;
     }
-    if (mOutputMQ &&
-        (mOutputFrameSize != oFrameSize || mCommon.output.frameCount != common.output.frameCount)) {
+    if (mOutputFrameSize != prevOutputFrameSize ||
+        mCommon.output.frameCount != common.output.frameCount) {
         mOutputMQ.reset();
         needUpdateMq = true;
     }
-    mInputFrameSize = iFrameSize;
-    mOutputFrameSize = oFrameSize;
+
     if (needUpdateMq) {
+        mWorkBuffer.resize(std::max(common.input.frameCount * mInputFrameSize / sizeof(float),
+                                    common.output.frameCount * mOutputFrameSize / sizeof(float)));
         return notifyDataMqUpdate();
     }
     return RetCode::SUCCESS;
diff --git a/audio/aidl/default/EffectImpl.cpp b/audio/aidl/default/EffectImpl.cpp
index b76269a..4d7b980 100644
--- a/audio/aidl/default/EffectImpl.cpp
+++ b/audio/aidl/default/EffectImpl.cpp
@@ -15,7 +15,9 @@
  */
 
 #include <memory>
+#define ATRACE_TAG ATRACE_TAG_AUDIO
 #define LOG_TAG "AHAL_EffectImpl"
+#include <utils/Trace.h>
 #include "effect-impl/EffectImpl.h"
 #include "effect-impl/EffectTypes.h"
 #include "include/effect-impl/EffectTypes.h"
@@ -47,10 +49,16 @@
     RETURN_IF(common.input.base.format.pcm != common.output.base.format.pcm ||
                       common.input.base.format.pcm != PcmType::FLOAT_32_BIT,
               EX_ILLEGAL_ARGUMENT, "dataMustBe32BitsFloat");
+
     std::lock_guard lg(mImplMutex);
     RETURN_OK_IF(mState != State::INIT);
     mImplContext = createContext(common);
     RETURN_IF(!mImplContext, EX_NULL_POINTER, "nullContext");
+
+    int version = 0;
+    RETURN_IF(!getInterfaceVersion(&version).isOk(), EX_UNSUPPORTED_OPERATION,
+              "FailedToGetInterfaceVersion");
+    mImplContext->setVersion(version);
     mEventFlag = mImplContext->getStatusEventFlag();
 
     if (specific.has_value()) {
@@ -298,6 +306,7 @@
 }
 
 void EffectImpl::process() {
+    ATRACE_CALL();
     /**
      * wait for the EventFlag without lock, it's ok because the mEfGroup pointer will not change
      * in the life cycle of workerThread (threadLoop).
@@ -327,7 +336,9 @@
             return;
         }
 
-        auto processSamples = inputMQ->availableToRead();
+        assert(mImplContext->getWorkBufferSize() >=
+               std::max(inputMQ->availableToRead(), outputMQ->availableToWrite()));
+        auto processSamples = std::min(inputMQ->availableToRead(), outputMQ->availableToWrite());
         if (processSamples) {
             inputMQ->read(buffer, processSamples);
             IEffect::Status status = effectProcessImpl(buffer, buffer, processSamples);
diff --git a/audio/aidl/default/EffectMain.cpp b/audio/aidl/default/EffectMain.cpp
index ac178b6..a300cfd 100644
--- a/audio/aidl/default/EffectMain.cpp
+++ b/audio/aidl/default/EffectMain.cpp
@@ -29,7 +29,7 @@
 static const char* kDefaultConfigName = "audio_effects_config.xml";
 
 static inline std::string config_file_path() {
-    if (__builtin_available(android AAPEXSUPPORT_API, *)) {
+    if constexpr (__ANDROID_VENDOR_API__ >= 202404) {
         AApexInfo *apexInfo;
         if (AApexInfo_create(&apexInfo) == AAPEXINFO_OK) {
             std::string apexName(AApexInfo_getName(apexInfo));
diff --git a/audio/aidl/default/Stream.cpp b/audio/aidl/default/Stream.cpp
index cf0870e..807348f 100644
--- a/audio/aidl/default/Stream.cpp
+++ b/audio/aidl/default/Stream.cpp
@@ -16,14 +16,14 @@
 
 #include <pthread.h>
 
+#define ATRACE_TAG ATRACE_TAG_AUDIO
 #define LOG_TAG "AHAL_Stream"
+#include <Utils.h>
 #include <android-base/logging.h>
 #include <android/binder_ibinder_platform.h>
 #include <utils/SystemClock.h>
+#include <utils/Trace.h>
 
-#include <Utils.h>
-
-#include "core-impl/Module.h"
 #include "core-impl/Stream.h"
 
 using aidl::android::hardware::audio::common::AudioOffloadMetadata;
@@ -312,6 +312,7 @@
 }
 
 bool StreamInWorkerLogic::read(size_t clientSize, StreamDescriptor::Reply* reply) {
+    ATRACE_CALL();
     StreamContext::DataMQ* const dataMQ = mContext->getDataMQ();
     const size_t byteCount = std::min({clientSize, dataMQ->availableToWrite(), mDataBufferSize});
     const bool isConnected = mIsConnected;
@@ -583,6 +584,7 @@
 }
 
 bool StreamOutWorkerLogic::write(size_t clientSize, StreamDescriptor::Reply* reply) {
+    ATRACE_CALL();
     StreamContext::DataMQ* const dataMQ = mContext->getDataMQ();
     const size_t readByteCount = dataMQ->availableToRead();
     const size_t frameSize = mContext->getFrameSize();
diff --git a/audio/aidl/default/acousticEchoCanceler/Android.bp b/audio/aidl/default/acousticEchoCanceler/Android.bp
index d0404cd..46930e0 100644
--- a/audio/aidl/default/acousticEchoCanceler/Android.bp
+++ b/audio/aidl/default/acousticEchoCanceler/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/apex/com.android.hardware.audio/Android.bp b/audio/aidl/default/apex/com.android.hardware.audio/Android.bp
index da84412..2ece7a1 100644
--- a/audio/aidl/default/apex/com.android.hardware.audio/Android.bp
+++ b/audio/aidl/default/apex/com.android.hardware.audio/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -37,6 +38,7 @@
         "libpreprocessingaidl",
         "libpresetreverbsw",
         "libreverbaidl",
+        "libspatializersw",
         "libvirtualizersw",
         "libvisualizeraidl",
         "libvolumesw",
diff --git a/audio/aidl/default/automaticGainControlV1/Android.bp b/audio/aidl/default/automaticGainControlV1/Android.bp
index 7b753eb..2fea719 100644
--- a/audio/aidl/default/automaticGainControlV1/Android.bp
+++ b/audio/aidl/default/automaticGainControlV1/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/automaticGainControlV2/Android.bp b/audio/aidl/default/automaticGainControlV2/Android.bp
index ea05152..dda4e51 100644
--- a/audio/aidl/default/automaticGainControlV2/Android.bp
+++ b/audio/aidl/default/automaticGainControlV2/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/bassboost/Android.bp b/audio/aidl/default/bassboost/Android.bp
index 8f53eae..42223b4 100644
--- a/audio/aidl/default/bassboost/Android.bp
+++ b/audio/aidl/default/bassboost/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/bluetooth/ModuleBluetooth.cpp b/audio/aidl/default/bluetooth/ModuleBluetooth.cpp
index 9084b30..ac375a0 100644
--- a/audio/aidl/default/bluetooth/ModuleBluetooth.cpp
+++ b/audio/aidl/default/bluetooth/ModuleBluetooth.cpp
@@ -299,7 +299,13 @@
                         : std::shared_ptr<BluetoothAudioPortAidl>(
                                   std::make_shared<BluetoothAudioPortAidlOut>());
     const auto& devicePort = audioPort.ext.get<AudioPortExt::device>();
-    if (const auto device = devicePort.device.type; !proxy.ptr->registerPort(device)) {
+    const auto device = devicePort.device.type;
+    bool registrationSuccess = false;
+    for (int i = 0; i < kCreateProxyRetries && !registrationSuccess; ++i) {
+        registrationSuccess = proxy.ptr->registerPort(device);
+        usleep(kCreateProxyRetrySleepMs * 1000);
+    }
+    if (!registrationSuccess) {
         LOG(ERROR) << __func__ << ": failed to register BT port for " << device.toString();
         return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE);
     }
diff --git a/audio/aidl/default/bluetooth/StreamBluetooth.cpp b/audio/aidl/default/bluetooth/StreamBluetooth.cpp
index a73af1b..77e48df 100644
--- a/audio/aidl/default/bluetooth/StreamBluetooth.cpp
+++ b/audio/aidl/default/bluetooth/StreamBluetooth.cpp
@@ -16,12 +16,13 @@
 
 #include <algorithm>
 
+#define ATRACE_TAG ATRACE_TAG_AUDIO
 #define LOG_TAG "AHAL_StreamBluetooth"
 #include <Utils.h>
 #include <android-base/logging.h>
 #include <audio_utils/clock.h>
+#include <utils/Trace.h>
 
-#include "BluetoothAudioSession.h"
 #include "core-impl/StreamBluetooth.h"
 
 using aidl::android::hardware::audio::common::frameCountFromDurationUs;
@@ -109,13 +110,10 @@
     }
     const size_t fc = std::min(frameCount, mPreferredFrameCount);
     const size_t bytesToTransfer = fc * mFrameSizeBytes;
-    if (mIsInput) {
-        const size_t totalRead = mBtDeviceProxy->readData(buffer, bytesToTransfer);
-        *actualFrameCount = std::max(*actualFrameCount, totalRead / mFrameSizeBytes);
-    } else {
-        const size_t totalWrite = mBtDeviceProxy->writeData(buffer, bytesToTransfer);
-        *actualFrameCount = std::max(*actualFrameCount, totalWrite / mFrameSizeBytes);
-    }
+    const size_t bytesTransferred = mIsInput ? mBtDeviceProxy->readData(buffer, bytesToTransfer)
+                                             : mBtDeviceProxy->writeData(buffer, bytesToTransfer);
+    *actualFrameCount = bytesTransferred / mFrameSizeBytes;
+    ATRACE_INT("BTdropped", bytesToTransfer - bytesTransferred);
     PresentationPosition presentation_position;
     if (!mBtDeviceProxy->getPresentationPosition(presentation_position)) {
         presentation_position.remoteDeviceAudioDelayNanos =
diff --git a/audio/aidl/default/config/audioPolicy/Android.bp b/audio/aidl/default/config/audioPolicy/Android.bp
index 6d8a148..baa3762 100644
--- a/audio/aidl/default/config/audioPolicy/Android.bp
+++ b/audio/aidl/default/config/audioPolicy/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/config/audioPolicy/engine/Android.bp b/audio/aidl/default/config/audioPolicy/engine/Android.bp
index b2a7310..5d62bd6 100644
--- a/audio/aidl/default/config/audioPolicy/engine/Android.bp
+++ b/audio/aidl/default/config/audioPolicy/engine/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/downmix/Android.bp b/audio/aidl/default/downmix/Android.bp
index 8657283..e5e8405 100644
--- a/audio/aidl/default/downmix/Android.bp
+++ b/audio/aidl/default/downmix/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/dynamicProcessing/Android.bp b/audio/aidl/default/dynamicProcessing/Android.bp
index c0a648d..ccd1aa0 100644
--- a/audio/aidl/default/dynamicProcessing/Android.bp
+++ b/audio/aidl/default/dynamicProcessing/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/envReverb/Android.bp b/audio/aidl/default/envReverb/Android.bp
index 23495f1..70da2bd 100644
--- a/audio/aidl/default/envReverb/Android.bp
+++ b/audio/aidl/default/envReverb/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/equalizer/Android.bp b/audio/aidl/default/equalizer/Android.bp
index 1d29d40..da2663c 100644
--- a/audio/aidl/default/equalizer/Android.bp
+++ b/audio/aidl/default/equalizer/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/extension/Android.bp b/audio/aidl/default/extension/Android.bp
index 2b21e3e..79fd857 100644
--- a/audio/aidl/default/extension/Android.bp
+++ b/audio/aidl/default/extension/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/hapticGenerator/Android.bp b/audio/aidl/default/hapticGenerator/Android.bp
index 8fb9a3d..fdd4fc7 100644
--- a/audio/aidl/default/hapticGenerator/Android.bp
+++ b/audio/aidl/default/hapticGenerator/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/include/core-impl/ModuleBluetooth.h b/audio/aidl/default/include/core-impl/ModuleBluetooth.h
index 9451411..4e68d72 100644
--- a/audio/aidl/default/include/core-impl/ModuleBluetooth.h
+++ b/audio/aidl/default/include/core-impl/ModuleBluetooth.h
@@ -85,6 +85,8 @@
     ndk::ScopedAStatus findOrCreateProxy(
             const ::aidl::android::media::audio::common::AudioPort& audioPort, CachedProxy& proxy);
 
+    static constexpr int kCreateProxyRetries = 5;
+    static constexpr int kCreateProxyRetrySleepMs = 75;
     ChildInterface<BluetoothA2dp> mBluetoothA2dp;
     ChildInterface<BluetoothLe> mBluetoothLe;
     std::map<int32_t /*instantiated device port ID*/, CachedProxy> mProxies;
diff --git a/audio/aidl/default/include/effect-impl/EffectContext.h b/audio/aidl/default/include/effect-impl/EffectContext.h
index 24f3b5d..275378e 100644
--- a/audio/aidl/default/include/effect-impl/EffectContext.h
+++ b/audio/aidl/default/include/effect-impl/EffectContext.h
@@ -44,11 +44,13 @@
         }
     }
 
+    void setVersion(int version) { mVersion = version; }
     std::shared_ptr<StatusMQ> getStatusFmq() const;
     std::shared_ptr<DataMQ> getInputDataFmq() const;
     std::shared_ptr<DataMQ> getOutputDataFmq() const;
 
     float* getWorkBuffer();
+    size_t getWorkBufferSize() const;
 
     // reset buffer status by abandon input data in FMQ
     void resetBuffer();
@@ -81,10 +83,11 @@
     virtual ::android::hardware::EventFlag* getStatusEventFlag();
 
   protected:
-    size_t mInputFrameSize;
-    size_t mOutputFrameSize;
-    size_t mInputChannelCount;
-    size_t mOutputChannelCount;
+    int mVersion = 0;
+    size_t mInputFrameSize = 0;
+    size_t mOutputFrameSize = 0;
+    size_t mInputChannelCount = 0;
+    size_t mOutputChannelCount = 0;
     Parameter::Common mCommon = {};
     std::vector<aidl::android::media::audio::common::AudioDeviceDescription> mOutputDevice = {};
     aidl::android::media::audio::common::AudioMode mMode =
@@ -97,13 +100,13 @@
 
   private:
     // fmq and buffers
-    std::shared_ptr<StatusMQ> mStatusMQ;
-    std::shared_ptr<DataMQ> mInputMQ;
-    std::shared_ptr<DataMQ> mOutputMQ;
+    std::shared_ptr<StatusMQ> mStatusMQ = nullptr;
+    std::shared_ptr<DataMQ> mInputMQ = nullptr;
+    std::shared_ptr<DataMQ> mOutputMQ = nullptr;
     // std::shared_ptr<IEffect::OpenEffectReturn> mRet;
     // work buffer set by effect instances, the access and update are in same thread
-    std::vector<float> mWorkBuffer;
+    std::vector<float> mWorkBuffer = {};
 
-    ::android::hardware::EventFlag* mEfGroup;
+    ::android::hardware::EventFlag* mEfGroup = nullptr;
 };
 }  // namespace aidl::android::hardware::audio::effect
diff --git a/audio/aidl/default/loudnessEnhancer/Android.bp b/audio/aidl/default/loudnessEnhancer/Android.bp
index cd44b50..4b30484 100644
--- a/audio/aidl/default/loudnessEnhancer/Android.bp
+++ b/audio/aidl/default/loudnessEnhancer/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/noiseSuppression/Android.bp b/audio/aidl/default/noiseSuppression/Android.bp
index 5729571..66fe427 100644
--- a/audio/aidl/default/noiseSuppression/Android.bp
+++ b/audio/aidl/default/noiseSuppression/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/presetReverb/Android.bp b/audio/aidl/default/presetReverb/Android.bp
index 2a2ae75..15b4632 100644
--- a/audio/aidl/default/presetReverb/Android.bp
+++ b/audio/aidl/default/presetReverb/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/spatializer/Android.bp b/audio/aidl/default/spatializer/Android.bp
index 05ed365..2c229fe 100644
--- a/audio/aidl/default/spatializer/Android.bp
+++ b/audio/aidl/default/spatializer/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -34,6 +35,6 @@
     ],
     relative_install_path: "soundfx",
     visibility: [
-        "//hardware/interfaces/audio/aidl/default",
+        "//hardware/interfaces/audio/aidl/default:__subpackages__",
     ],
 }
diff --git a/audio/aidl/default/spatializer/SpatializerSw.cpp b/audio/aidl/default/spatializer/SpatializerSw.cpp
index 6d3c4bd..ef86ddb 100644
--- a/audio/aidl/default/spatializer/SpatializerSw.cpp
+++ b/audio/aidl/default/spatializer/SpatializerSw.cpp
@@ -108,6 +108,8 @@
 
 ndk::ScopedAStatus SpatializerSw::getParameterSpecific(const Parameter::Id& id,
                                                        Parameter::Specific* specific) {
+    RETURN_IF(!mContext, EX_NULL_POINTER, "nullContext");
+
     auto tag = id.getTag();
     RETURN_IF(Parameter::Id::spatializerTag != tag, EX_ILLEGAL_ARGUMENT, "wrongIdTag");
     auto spatializerId = id.get<Parameter::Id::spatializerTag>();
diff --git a/audio/aidl/default/virtualizer/Android.bp b/audio/aidl/default/virtualizer/Android.bp
index 5d59f7c..91d2abb 100644
--- a/audio/aidl/default/virtualizer/Android.bp
+++ b/audio/aidl/default/virtualizer/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/visualizer/Android.bp b/audio/aidl/default/visualizer/Android.bp
index 68f7177..af8f574 100644
--- a/audio/aidl/default/visualizer/Android.bp
+++ b/audio/aidl/default/visualizer/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/default/volume/Android.bp b/audio/aidl/default/volume/Android.bp
index 8d5401a..a424f7e 100644
--- a/audio/aidl/default/volume/Android.bp
+++ b/audio/aidl/default/volume/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/sounddose/vts/Android.bp b/audio/aidl/sounddose/vts/Android.bp
index 88be968..b852287 100644
--- a/audio/aidl/sounddose/vts/Android.bp
+++ b/audio/aidl/sounddose/vts/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/aidl/vts/Android.bp b/audio/aidl/vts/Android.bp
index 85319ec..5218fdd 100644
--- a/audio/aidl/vts/Android.bp
+++ b/audio/aidl/vts/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -90,6 +91,12 @@
     name: "VtsHalBassBoostTargetTest",
     defaults: ["VtsHalAudioEffectTargetTestDefaults"],
     srcs: ["VtsHalBassBoostTargetTest.cpp"],
+    cflags: [
+        "-Wno-error=unused-parameter",
+    ],
+    static_libs: [
+        "libpffft",
+    ],
 }
 
 cc_test {
diff --git a/audio/aidl/vts/VtsHalAudioEffectFactoryTargetTest.cpp b/audio/aidl/vts/VtsHalAudioEffectFactoryTargetTest.cpp
index adf1da7..4e86ec3 100644
--- a/audio/aidl/vts/VtsHalAudioEffectFactoryTargetTest.cpp
+++ b/audio/aidl/vts/VtsHalAudioEffectFactoryTargetTest.cpp
@@ -296,6 +296,25 @@
             [&](const auto& proc) { return processingSet.find(proc) != processingSet.end(); }));
 }
 
+// Make sure all effect instances have same HAL version number as IFactory.
+TEST_P(EffectFactoryTest, VersionNumberForAllEffectsEqualsToIFactory) {
+    std::vector<Descriptor> descs;
+    EXPECT_IS_OK(mEffectFactory->queryEffects(std::nullopt, std::nullopt, std::nullopt, &descs));
+    EXPECT_NE(descs.size(), 0UL);
+
+    std::vector<std::shared_ptr<IEffect>> effects = createWithDescs(descs);
+    int factoryVersion = 0;
+    EXPECT_IS_OK(mEffectFactory->getInterfaceVersion(&factoryVersion));
+
+    for (const auto& effect : effects) {
+        int effectVersion = 0;
+        EXPECT_NE(nullptr, effect);
+        EXPECT_IS_OK(effect->getInterfaceVersion(&effectVersion));
+        EXPECT_EQ(factoryVersion, effectVersion);
+    }
+    ASSERT_NO_FATAL_FAILURE(destroyEffects(effects));
+}
+
 INSTANTIATE_TEST_SUITE_P(EffectFactoryTest, EffectFactoryTest,
                          testing::ValuesIn(android::getAidlHalInstanceNames(IFactory::descriptor)),
                          android::PrintInstanceNameToString);
diff --git a/audio/aidl/vts/VtsHalAudioEffectTargetTest.cpp b/audio/aidl/vts/VtsHalAudioEffectTargetTest.cpp
index 1e6a49f..5479825 100644
--- a/audio/aidl/vts/VtsHalAudioEffectTargetTest.cpp
+++ b/audio/aidl/vts/VtsHalAudioEffectTargetTest.cpp
@@ -608,8 +608,11 @@
     ASSERT_NO_FATAL_FAILURE(destroy(mFactory, mEffect));
 }
 
-// Verify Parameters kept after reset.
-TEST_P(AudioEffectTest, SetCommonParameterAndReopen) {
+/**
+ * Verify DataMqUpdateEventFlag after common parameter setting.
+ * verify reopen sequence.
+ */
+TEST_P(AudioEffectDataPathTest, SetCommonParameterAndReopen) {
     ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor));
 
     Parameter::Common common = EffectHelper::createParamCommon(
diff --git a/audio/aidl/vts/VtsHalBassBoostTargetTest.cpp b/audio/aidl/vts/VtsHalBassBoostTargetTest.cpp
index 135940d..b54b442 100644
--- a/audio/aidl/vts/VtsHalBassBoostTargetTest.cpp
+++ b/audio/aidl/vts/VtsHalBassBoostTargetTest.cpp
@@ -14,13 +14,17 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "VtsHalBassBoostTest"
-#include <android-base/logging.h>
+#include <limits.h>
 
+#define LOG_TAG "VtsHalBassBoostTest"
+#include <aidl/Vintf.h>
+#include <android-base/logging.h>
 #include "EffectHelper.h"
+#include "pffft.hpp"
 
 using namespace android;
 
+using aidl::android::hardware::audio::common::getChannelCount;
 using aidl::android::hardware::audio::effect::BassBoost;
 using aidl::android::hardware::audio::effect::Capability;
 using aidl::android::hardware::audio::effect::Descriptor;
@@ -30,13 +34,11 @@
 using aidl::android::hardware::audio::effect::Parameter;
 using aidl::android::hardware::audio::effect::Range;
 using android::hardware::audio::common::testing::detail::TestExecutionTracer;
-/**
- * Here we focus on specific parameter checking, general IEffect interfaces testing performed in
- * VtsAudioEffectTargetTest.
- */
-enum ParamName { PARAM_INSTANCE_NAME, PARAM_STRENGTH };
-using BassBoostParamTestParam = std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>;
 
+// minimal HAL interface version to run bassboost data path test
+constexpr int32_t kMinDataTestHalVersion = 2;
+static const std::vector<int32_t> kLayouts = {AudioChannelLayout::LAYOUT_STEREO,
+                                              AudioChannelLayout::LAYOUT_MONO};
 /*
  * Testing parameter range, assuming the parameter supported by effect is in this range.
  * Parameter should be within the valid range defined in the documentation,
@@ -44,29 +46,29 @@
  * otherwise expect EX_ILLEGAL_ARGUMENT.
  */
 
-class BassBoostParamTest : public ::testing::TestWithParam<BassBoostParamTestParam>,
-                           public EffectHelper {
+class BassBoostEffectHelper : public EffectHelper {
   public:
-    BassBoostParamTest() : mParamStrength(std::get<PARAM_STRENGTH>(GetParam())) {
-        std::tie(mFactory, mDescriptor) = std::get<PARAM_INSTANCE_NAME>(GetParam());
-    }
-
-    void SetUp() override {
+    void SetUpBassBoost(int32_t layout = AudioChannelLayout::LAYOUT_STEREO) {
         ASSERT_NE(nullptr, mFactory);
         ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor));
+        setFrameCounts(layout);
+
+        AudioChannelLayout channelLayout =
+                AudioChannelLayout::make<AudioChannelLayout::layoutMask>(layout);
 
         Parameter::Specific specific = getDefaultParamSpecific();
         Parameter::Common common = EffectHelper::createParamCommon(
-                0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */,
-                kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */);
-        IEffect::OpenEffectReturn ret;
-        ASSERT_NO_FATAL_FAILURE(open(mEffect, common, specific, &ret, EX_NONE));
+                0 /* session */, 1 /* ioHandle */, kSamplingFrequency /* iSampleRate */,
+                kSamplingFrequency /* oSampleRate */, mInputFrameCount /* iFrameCount */,
+                mOutputFrameCount /* oFrameCount */, channelLayout, channelLayout);
+        ASSERT_NO_FATAL_FAILURE(open(mEffect, common, specific, &mOpenEffectReturn, EX_NONE));
         ASSERT_NE(nullptr, mEffect);
     }
 
-    void TearDown() override {
+    void TearDownBassBoost() {
         ASSERT_NO_FATAL_FAILURE(close(mEffect));
         ASSERT_NO_FATAL_FAILURE(destroy(mFactory, mEffect));
+        mOpenEffectReturn = IEffect::OpenEffectReturn{};
     }
 
     Parameter::Specific getDefaultParamSpecific() {
@@ -76,58 +78,214 @@
         return specific;
     }
 
-    static const long kInputFrameCount = 0x100, kOutputFrameCount = 0x100;
-    std::shared_ptr<IFactory> mFactory;
-    std::shared_ptr<IEffect> mEffect;
-    Descriptor mDescriptor;
-    int mParamStrength = 0;
+    void setFrameCounts(int32_t inputBufferLayout) {
+        int channelCount = getChannelCount(
+                AudioChannelLayout::make<AudioChannelLayout::layoutMask>(inputBufferLayout));
+        mInputFrameCount = kInputSize / channelCount;
+        mOutputFrameCount = kInputSize / channelCount;
+    }
 
-    void SetAndGetBassBoostParameters() {
-        for (auto& it : mTags) {
-            auto& tag = it.first;
-            auto& bb = it.second;
+    Parameter createBassBoostParam(int strength) {
+        return Parameter::make<Parameter::specific>(
+                Parameter::Specific::make<Parameter::Specific::bassBoost>(
+                        BassBoost::make<BassBoost::strengthPm>(strength)));
+    }
 
-            // validate parameter
-            Descriptor desc;
-            ASSERT_STATUS(EX_NONE, mEffect->getDescriptor(&desc));
-            const bool valid = isParameterValid<BassBoost, Range::bassBoost>(it.second, desc);
-            const binder_exception_t expected = valid ? EX_NONE : EX_ILLEGAL_ARGUMENT;
+    bool isStrengthValid(int strength) {
+        auto bb = BassBoost::make<BassBoost::strengthPm>(strength);
+        return isParameterValid<BassBoost, Range::bassBoost>(bb, mDescriptor);
+    }
 
-            // set parameter
-            Parameter expectParam;
-            Parameter::Specific specific;
-            specific.set<Parameter::Specific::bassBoost>(bb);
-            expectParam.set<Parameter::specific>(specific);
-            EXPECT_STATUS(expected, mEffect->setParameter(expectParam)) << expectParam.toString();
+    void setAndVerifyParameters(int strength, binder_exception_t expected) {
+        auto expectedParam = createBassBoostParam(strength);
+        EXPECT_STATUS(expected, mEffect->setParameter(expectedParam)) << expectedParam.toString();
 
-            // only get if parameter in range and set success
-            if (expected == EX_NONE) {
-                Parameter getParam;
-                Parameter::Id id;
-                BassBoost::Id bbId;
-                bbId.set<BassBoost::Id::commonTag>(tag);
-                id.set<Parameter::Id::bassBoostTag>(bbId);
-                // if set success, then get should match
-                EXPECT_STATUS(expected, mEffect->getParameter(id, &getParam));
-                EXPECT_EQ(expectParam, getParam);
-            }
+        if (expected == EX_NONE) {
+            auto bbId = BassBoost::Id::make<BassBoost::Id::commonTag>(
+                    BassBoost::Tag(BassBoost::strengthPm));
+            auto id = Parameter::Id::make<Parameter::Id::bassBoostTag>(bbId);
+            // get parameter
+            Parameter getParam;
+            // if set success, then get should match
+            EXPECT_STATUS(expected, mEffect->getParameter(id, &getParam));
+            EXPECT_EQ(expectedParam, getParam) << "\nexpectedParam:" << expectedParam.toString()
+                                               << "\ngetParam:" << getParam.toString();
         }
     }
 
-    void addStrengthParam(int strength) {
-        BassBoost bb;
-        bb.set<BassBoost::strengthPm>(strength);
-        mTags.push_back({BassBoost::strengthPm, bb});
+    static constexpr int kSamplingFrequency = 44100;
+    static constexpr int kDurationMilliSec = 2000;
+    static constexpr int kInputSize = kSamplingFrequency * kDurationMilliSec / 1000;
+    long mInputFrameCount, mOutputFrameCount;
+    std::shared_ptr<IFactory> mFactory;
+    Descriptor mDescriptor;
+    std::shared_ptr<IEffect> mEffect;
+    IEffect::OpenEffectReturn mOpenEffectReturn;
+};
+
+/**
+ * Here we focus on specific parameter checking, general IEffect interfaces testing performed in
+ * VtsAudioEffectTargetTest.
+ */
+enum ParamName { PARAM_INSTANCE_NAME, PARAM_STRENGTH };
+using BassBoostParamTestParam = std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>;
+
+class BassBoostParamTest : public ::testing::TestWithParam<BassBoostParamTestParam>,
+                           public BassBoostEffectHelper {
+  public:
+    BassBoostParamTest() : mParamStrength(std::get<PARAM_STRENGTH>(GetParam())) {
+        std::tie(mFactory, mDescriptor) = std::get<PARAM_INSTANCE_NAME>(GetParam());
     }
 
-  private:
-    std::vector<std::pair<BassBoost::Tag, BassBoost>> mTags;
-    void CleanUp() { mTags.clear(); }
+    void SetUp() override { ASSERT_NO_FATAL_FAILURE(SetUpBassBoost()); }
+    void TearDown() override { TearDownBassBoost(); }
+
+    int mParamStrength = 0;
 };
 
 TEST_P(BassBoostParamTest, SetAndGetStrength) {
-    EXPECT_NO_FATAL_FAILURE(addStrengthParam(mParamStrength));
-    SetAndGetBassBoostParameters();
+    if (isStrengthValid(mParamStrength)) {
+        ASSERT_NO_FATAL_FAILURE(setAndVerifyParameters(mParamStrength, EX_NONE));
+    } else {
+        ASSERT_NO_FATAL_FAILURE(setAndVerifyParameters(mParamStrength, EX_ILLEGAL_ARGUMENT));
+    }
+}
+
+enum DataParamName { DATA_INSTANCE_NAME, DATA_LAYOUT };
+
+using BassBoostDataTestParam =
+        std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int32_t>;
+
+class BassBoostDataTest : public ::testing::TestWithParam<BassBoostDataTestParam>,
+                          public BassBoostEffectHelper {
+  public:
+    BassBoostDataTest() : mChannelLayout(std::get<DATA_LAYOUT>(GetParam())) {
+        std::tie(mFactory, mDescriptor) = std::get<DATA_INSTANCE_NAME>(GetParam());
+        mStrengthValues = getTestValueSet<BassBoost, int, Range::bassBoost, BassBoost::strengthPm>(
+                {std::get<DATA_INSTANCE_NAME>(GetParam())}, expandTestValueBasic<int>);
+    }
+
+    void SetUp() override {
+        ASSERT_NO_FATAL_FAILURE(SetUpBassBoost(mChannelLayout));
+        if (int32_t version;
+            mEffect->getInterfaceVersion(&version).isOk() && version < kMinDataTestHalVersion) {
+            GTEST_SKIP() << "Skipping the data test for version: " << version << "\n";
+        }
+    }
+
+    void TearDown() override { TearDownBassBoost(); }
+
+    // Find FFT bin indices for testFrequencies and get bin center frequencies
+    void roundToFreqCenteredToFftBin(std::vector<int>& testFrequencies,
+                                     std::vector<int>& binOffsets) {
+        for (size_t i = 0; i < testFrequencies.size(); i++) {
+            binOffsets[i] = std::round(testFrequencies[i] / kBinWidth);
+            testFrequencies[i] = std::round(binOffsets[i] * kBinWidth);
+        }
+    }
+
+    // Generate multitone input between -1 to +1 using testFrequencies
+    void generateMultiTone(const std::vector<int>& testFrequencies, std::vector<float>& input) {
+        for (auto i = 0; i < kInputSize; i++) {
+            input[i] = 0;
+
+            for (size_t j = 0; j < testFrequencies.size(); j++) {
+                input[i] += sin(2 * M_PI * testFrequencies[j] * i / kSamplingFrequency);
+            }
+            input[i] /= testFrequencies.size();
+        }
+    }
+
+    // Use FFT transform to convert the buffer to frequency domain
+    // Compute its magnitude at binOffsets
+    std::vector<float> calculateMagnitude(const std::vector<float>& buffer,
+                                          const std::vector<int>& binOffsets) {
+        std::vector<float> fftInput(kNPointFFT);
+        PFFFT_Setup* inputHandle = pffft_new_setup(kNPointFFT, PFFFT_REAL);
+        pffft_transform_ordered(inputHandle, buffer.data(), fftInput.data(), nullptr,
+                                PFFFT_FORWARD);
+        pffft_destroy_setup(inputHandle);
+        std::vector<float> bufferMag(binOffsets.size());
+        for (size_t i = 0; i < binOffsets.size(); i++) {
+            size_t k = binOffsets[i];
+            bufferMag[i] = sqrt((fftInput[k * 2] * fftInput[k * 2]) +
+                                (fftInput[k * 2 + 1] * fftInput[k * 2 + 1]));
+        }
+
+        return bufferMag;
+    }
+
+    // Calculate gain difference between low frequency and high frequency magnitude
+    float calculateGainDiff(const std::vector<float>& inputMag,
+                            const std::vector<float>& outputMag) {
+        std::vector<float> gains(inputMag.size());
+
+        for (size_t i = 0; i < inputMag.size(); i++) {
+            gains[i] = 20 * log10(outputMag[i] / inputMag[i]);
+        }
+
+        return gains[0] - gains[1];
+    }
+
+    static constexpr int kNPointFFT = 32768;
+    static constexpr float kBinWidth = (float)kSamplingFrequency / kNPointFFT;
+    std::set<int> mStrengthValues;
+    int32_t mChannelLayout;
+};
+
+TEST_P(BassBoostDataTest, IncreasingStrength) {
+    // Frequencies to generate multitone input
+    std::vector<int> testFrequencies = {100, 1000};
+
+    // FFT bin indices for testFrequencies
+    std::vector<int> binOffsets(testFrequencies.size());
+
+    std::vector<float> input(kInputSize);
+    std::vector<float> baseOutput(kInputSize);
+
+    std::vector<float> inputMag(testFrequencies.size());
+    float prevGain = -100;
+
+    roundToFreqCenteredToFftBin(testFrequencies, binOffsets);
+
+    generateMultiTone(testFrequencies, input);
+
+    inputMag = calculateMagnitude(input, binOffsets);
+
+    if (isStrengthValid(0)) {
+        ASSERT_NO_FATAL_FAILURE(setAndVerifyParameters(0, EX_NONE));
+    } else {
+        GTEST_SKIP() << "Strength not supported, skipping the test\n";
+    }
+
+    ASSERT_NO_FATAL_FAILURE(
+            processAndWriteToOutput(input, baseOutput, mEffect, &mOpenEffectReturn));
+
+    std::vector<float> baseMag(testFrequencies.size());
+    baseMag = calculateMagnitude(baseOutput, binOffsets);
+    float baseDiff = calculateGainDiff(inputMag, baseMag);
+
+    for (int strength : mStrengthValues) {
+        // Skipping the further steps for invalid strength values
+        if (!isStrengthValid(strength)) {
+            continue;
+        }
+
+        ASSERT_NO_FATAL_FAILURE(setAndVerifyParameters(strength, EX_NONE));
+
+        std::vector<float> output(kInputSize);
+        std::vector<float> outputMag(testFrequencies.size());
+
+        ASSERT_NO_FATAL_FAILURE(
+                processAndWriteToOutput(input, output, mEffect, &mOpenEffectReturn));
+
+        outputMag = calculateMagnitude(output, binOffsets);
+        float diff = calculateGainDiff(inputMag, outputMag);
+
+        ASSERT_GT(diff, prevGain);
+        ASSERT_GT(diff, baseDiff);
+        prevGain = diff;
+    }
 }
 
 std::vector<std::pair<std::shared_ptr<IFactory>, Descriptor>> kDescPair;
@@ -150,6 +308,22 @@
 
 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BassBoostParamTest);
 
+INSTANTIATE_TEST_SUITE_P(
+        BassBoostTest, BassBoostDataTest,
+        ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
+                                   IFactory::descriptor, getEffectTypeUuidBassBoost())),
+                           testing::ValuesIn(kLayouts)),
+        [](const testing::TestParamInfo<BassBoostDataTest::ParamType>& info) {
+            auto descriptor = std::get<DATA_INSTANCE_NAME>(info.param).second;
+            std::string layout = std::to_string(std::get<DATA_LAYOUT>(info.param));
+            std::string name = getPrefix(descriptor) + "_layout_" + layout;
+            std::replace_if(
+                    name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
+            return name;
+        });
+
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BassBoostDataTest);
+
 int main(int argc, char** argv) {
     ::testing::InitGoogleTest(&argc, argv);
     ::testing::UnitTest::GetInstance()->listeners().Append(new TestExecutionTracer());
diff --git a/audio/common/2.0/Android.bp b/audio/common/2.0/Android.bp
index f27eb93..450e04f 100644
--- a/audio/common/2.0/Android.bp
+++ b/audio/common/2.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/4.0/Android.bp b/audio/common/4.0/Android.bp
index ea88b06..8a0fe72 100644
--- a/audio/common/4.0/Android.bp
+++ b/audio/common/4.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/5.0/Android.bp b/audio/common/5.0/Android.bp
index a6bb331..02f66a3 100644
--- a/audio/common/5.0/Android.bp
+++ b/audio/common/5.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/6.0/Android.bp b/audio/common/6.0/Android.bp
index 91721fc..fd4a1f5 100644
--- a/audio/common/6.0/Android.bp
+++ b/audio/common/6.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/7.0/Android.bp b/audio/common/7.0/Android.bp
index 2f7665e..5ef59ad 100644
--- a/audio/common/7.0/Android.bp
+++ b/audio/common/7.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/7.0/example/Android.bp b/audio/common/7.0/example/Android.bp
index a85e4fa..1d54697 100644
--- a/audio/common/7.0/example/Android.bp
+++ b/audio/common/7.0/example/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/7.1/Android.bp b/audio/common/7.1/Android.bp
index a257510..57ce2d7 100644
--- a/audio/common/7.1/Android.bp
+++ b/audio/common/7.1/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/all-versions/default/Android.bp b/audio/common/all-versions/default/Android.bp
index 9543674..2fcc3c4 100644
--- a/audio/common/all-versions/default/Android.bp
+++ b/audio/common/all-versions/default/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/all-versions/default/service/Android.bp b/audio/common/all-versions/default/service/Android.bp
index d513062..e2e0a93 100644
--- a/audio/common/all-versions/default/service/Android.bp
+++ b/audio/common/all-versions/default/service/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/all-versions/test/utility/Android.bp b/audio/common/all-versions/test/utility/Android.bp
index c6a3963..7fd3688 100644
--- a/audio/common/all-versions/test/utility/Android.bp
+++ b/audio/common/all-versions/test/utility/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/common/all-versions/util/Android.bp b/audio/common/all-versions/util/Android.bp
index 91de6ec..f9ada08 100644
--- a/audio/common/all-versions/util/Android.bp
+++ b/audio/common/all-versions/util/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/core/all-versions/default/Android.bp b/audio/core/all-versions/default/Android.bp
index 3536561..c55eef4 100644
--- a/audio/core/all-versions/default/Android.bp
+++ b/audio/core/all-versions/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/core/all-versions/default/util/Android.bp b/audio/core/all-versions/default/util/Android.bp
index b96f2d2..08ddb59 100644
--- a/audio/core/all-versions/default/util/Android.bp
+++ b/audio/core/all-versions/default/util/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/core/all-versions/vts/functional/Android.bp b/audio/core/all-versions/vts/functional/Android.bp
index 9d93bb0..9e398e4 100644
--- a/audio/core/all-versions/vts/functional/Android.bp
+++ b/audio/core/all-versions/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/2.0/Android.bp b/audio/effect/2.0/Android.bp
index f2f5124..c236c16 100644
--- a/audio/effect/2.0/Android.bp
+++ b/audio/effect/2.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/2.0/xml/Android.bp b/audio/effect/2.0/xml/Android.bp
index d015639..cddcfe9 100644
--- a/audio/effect/2.0/xml/Android.bp
+++ b/audio/effect/2.0/xml/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/4.0/Android.bp b/audio/effect/4.0/Android.bp
index 1eb754a..cae91c1 100644
--- a/audio/effect/4.0/Android.bp
+++ b/audio/effect/4.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/4.0/xml/Android.bp b/audio/effect/4.0/xml/Android.bp
index bdffe60..a45eecc 100644
--- a/audio/effect/4.0/xml/Android.bp
+++ b/audio/effect/4.0/xml/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/5.0/Android.bp b/audio/effect/5.0/Android.bp
index 126964c..ef3a28b 100644
--- a/audio/effect/5.0/Android.bp
+++ b/audio/effect/5.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/5.0/xml/Android.bp b/audio/effect/5.0/xml/Android.bp
index ed12e38..7a0b958 100644
--- a/audio/effect/5.0/xml/Android.bp
+++ b/audio/effect/5.0/xml/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/6.0/Android.bp b/audio/effect/6.0/Android.bp
index 8d15d09..8c52ebc 100644
--- a/audio/effect/6.0/Android.bp
+++ b/audio/effect/6.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/6.0/xml/Android.bp b/audio/effect/6.0/xml/Android.bp
index f139341..9e1533c 100644
--- a/audio/effect/6.0/xml/Android.bp
+++ b/audio/effect/6.0/xml/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/7.0/Android.bp b/audio/effect/7.0/Android.bp
index 7399cdb..248655e 100644
--- a/audio/effect/7.0/Android.bp
+++ b/audio/effect/7.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/7.0/xml/Android.bp b/audio/effect/7.0/xml/Android.bp
index 978e434..82ed18b 100644
--- a/audio/effect/7.0/xml/Android.bp
+++ b/audio/effect/7.0/xml/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/all-versions/default/Android.bp b/audio/effect/all-versions/default/Android.bp
index a3c3ed6..cea085c 100644
--- a/audio/effect/all-versions/default/Android.bp
+++ b/audio/effect/all-versions/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/all-versions/default/util/Android.bp b/audio/effect/all-versions/default/util/Android.bp
index 143094d..53dd9ac 100644
--- a/audio/effect/all-versions/default/util/Android.bp
+++ b/audio/effect/all-versions/default/util/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/effect/all-versions/vts/functional/Android.bp b/audio/effect/all-versions/vts/functional/Android.bp
index 3b15ed4..4c07aad 100644
--- a/audio/effect/all-versions/vts/functional/Android.bp
+++ b/audio/effect/all-versions/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/policy/1.0/vts/functional/Android.bp b/audio/policy/1.0/vts/functional/Android.bp
index cccb2fc..b32c223 100644
--- a/audio/policy/1.0/vts/functional/Android.bp
+++ b/audio/policy/1.0/vts/functional/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/policy/1.0/xml/Android.bp b/audio/policy/1.0/xml/Android.bp
index 403278c..d644570 100644
--- a/audio/policy/1.0/xml/Android.bp
+++ b/audio/policy/1.0/xml/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/audio/policy/1.0/xml/pfw_schemas/Android.bp b/audio/policy/1.0/xml/pfw_schemas/Android.bp
index 225c065..18284e9 100644
--- a/audio/policy/1.0/xml/pfw_schemas/Android.bp
+++ b/audio/policy/1.0/xml/pfw_schemas/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/automotive/vehicle/aidl/emu_metadata/Android.bp b/automotive/vehicle/aidl/emu_metadata/Android.bp
new file mode 100644
index 0000000..64f895f
--- /dev/null
+++ b/automotive/vehicle/aidl/emu_metadata/Android.bp
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+filegroup {
+    name: "android.hardware.automotive.vehicle-types-meta",
+    srcs: [
+        "android.hardware.automotive.vehicle-types-meta.json",
+    ],
+}
diff --git a/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json b/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json
index 6d856a8..7be9e86 100644
--- a/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json
+++ b/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json
@@ -1,4603 +1,2429 @@
 [
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleOilLevel",
-    "values": [
-      {
-        "name": "CRITICALLY_LOW",
-        "value": 0
-      },
-      {
-        "name": "LOW",
-        "value": 1
-      },
-      {
-        "name": "NORMAL",
-        "value": 2
-      },
-      {
-        "name": "HIGH",
-        "value": 3
-      },
-      {
-        "name": "ERROR",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "LocationCharacterization",
-    "values": [
-      {
-        "name": "PRIOR_LOCATIONS",
-        "value": 1
-      },
-      {
-        "name": "GYROSCOPE_FUSION",
-        "value": 2
-      },
-      {
-        "name": "ACCELEROMETER_FUSION",
-        "value": 4
-      },
-      {
-        "name": "COMPASS_FUSION",
-        "value": 8
-      },
-      {
-        "name": "WHEEL_SPEED_FUSION",
-        "value": 16
-      },
-      {
-        "name": "STEERING_ANGLE_FUSION",
-        "value": 32
-      },
-      {
-        "name": "CAR_SPEED_FUSION",
-        "value": 64
-      },
-      {
-        "name": "DEAD_RECKONED",
-        "value": 128
-      },
-      {
-        "name": "RAW_GNSS_ONLY",
-        "value": 256
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleDisplay",
-    "values": [
-      {
-        "name": "MAIN",
-        "value": 0
-      },
-      {
-        "name": "INSTRUMENT_CLUSTER",
-        "value": 1
-      },
-      {
-        "name": "HUD",
-        "value": 2
-      },
-      {
-        "name": "INPUT",
-        "value": 3
-      },
-      {
-        "name": "AUXILIARY",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "CruiseControlState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "ENABLED",
-        "value": 1
-      },
-      {
-        "name": "ACTIVATED",
-        "value": 2
-      },
-      {
-        "name": "USER_OVERRIDE",
-        "value": 3
-      },
-      {
-        "name": "SUSPENDED",
-        "value": 4
-      },
-      {
-        "name": "FORCED_DEACTIVATION_WARNING",
-        "value": 5
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "HandsOnDetectionWarning",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "NO_WARNING",
-        "value": 1
-      },
-      {
-        "name": "WARNING",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleAreaWindow",
-    "values": [
-      {
-        "name": "FRONT_WINDSHIELD",
-        "value": 1
-      },
-      {
-        "name": "REAR_WINDSHIELD",
-        "value": 2
-      },
-      {
-        "name": "ROW_1_LEFT",
-        "value": 16
-      },
-      {
-        "name": "ROW_1_RIGHT",
-        "value": 64
-      },
-      {
-        "name": "ROW_2_LEFT",
-        "value": 256
-      },
-      {
-        "name": "ROW_2_RIGHT",
-        "value": 1024
-      },
-      {
-        "name": "ROW_3_LEFT",
-        "value": 4096
-      },
-      {
-        "name": "ROW_3_RIGHT",
-        "value": 16384
-      },
-      {
-        "name": "ROOF_TOP_1",
-        "value": 65536
-      },
-      {
-        "name": "ROOF_TOP_2",
-        "value": 131072
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsAvailabilityStateIntegerValuesIndex",
-    "values": [
-      {
-        "name": "MESSAGE_TYPE",
-        "value": 0
-      },
-      {
-        "name": "SEQUENCE_NUMBER",
-        "value": 1
-      },
-      {
-        "name": "NUMBER_OF_ASSOCIATED_LAYERS",
-        "value": 2
-      },
-      {
-        "name": "LAYERS_START",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleLightSwitch",
-    "values": [
-      {
-        "name": "OFF",
-        "value": 0
-      },
-      {
-        "name": "ON",
-        "value": 1
-      },
-      {
-        "name": "DAYTIME_RUNNING",
-        "value": 2
-      },
-      {
-        "name": "AUTOMATIC",
-        "value": 256
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "Obd2IgnitionMonitorKind",
-    "values": [
-      {
-        "name": "SPARK",
-        "value": 0
-      },
-      {
-        "name": "COMPRESSION",
-        "value": 1
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleHwMotionButtonStateFlag",
-    "values": [
-      {
-        "name": "BUTTON_PRIMARY",
-        "value": 1
-      },
-      {
-        "name": "BUTTON_SECONDARY",
-        "value": 2
-      },
-      {
-        "name": "BUTTON_TERTIARY",
-        "value": 4
-      },
-      {
-        "name": "BUTTON_BACK",
-        "value": 8
-      },
-      {
-        "name": "BUTTON_FORWARD",
-        "value": 16
-      },
-      {
-        "name": "BUTTON_STYLUS_PRIMARY",
-        "value": 32
-      },
-      {
-        "name": "BUTTON_STYLUS_SECONDARY",
-        "value": 64
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehiclePropertyType",
-    "values": [
-      {
-        "name": "STRING",
-        "value": 1048576
-      },
-      {
-        "name": "BOOLEAN",
-        "value": 2097152
-      },
-      {
-        "name": "INT32",
-        "value": 4194304
-      },
-      {
-        "name": "INT32_VEC",
-        "value": 4259840
-      },
-      {
-        "name": "INT64",
-        "value": 5242880
-      },
-      {
-        "name": "INT64_VEC",
-        "value": 5308416
-      },
-      {
-        "name": "FLOAT",
-        "value": 6291456
-      },
-      {
-        "name": "FLOAT_VEC",
-        "value": 6356992
-      },
-      {
-        "name": "BYTES",
-        "value": 7340032
-      },
-      {
-        "name": "MIXED",
-        "value": 14680064
-      },
-      {
-        "name": "MASK",
-        "value": 16711680
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleAreaDoor",
-    "values": [
-      {
-        "name": "ROW_1_LEFT",
-        "value": 1
-      },
-      {
-        "name": "ROW_1_RIGHT",
-        "value": 4
-      },
-      {
-        "name": "ROW_2_LEFT",
-        "value": 16
-      },
-      {
-        "name": "ROW_2_RIGHT",
-        "value": 64
-      },
-      {
-        "name": "ROW_3_LEFT",
-        "value": 256
-      },
-      {
-        "name": "ROW_3_RIGHT",
-        "value": 1024
-      },
-      {
-        "name": "HOOD",
-        "value": 268435456
-      },
-      {
-        "name": "REAR",
-        "value": 536870912
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleApPowerBootupReason",
-    "values": [
-      {
-        "name": "USER_POWER_ON",
-        "value": 0
-      },
-      {
-        "name": "SYSTEM_USER_DETECTION",
-        "value": 1
-      },
-      {
-        "name": "SYSTEM_REMOTE_ACCESS",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "EmergencyLaneKeepAssistState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "ENABLED",
-        "value": 1
-      },
-      {
-        "name": "WARNING_LEFT",
-        "value": 2
-      },
-      {
-        "name": "WARNING_RIGHT",
-        "value": 3
-      },
-      {
-        "name": "ACTIVATED_STEER_LEFT",
-        "value": 4
-      },
-      {
-        "name": "ACTIVATED_STEER_RIGHT",
-        "value": 5
-      },
-      {
-        "name": "USER_OVERRIDE",
-        "value": 6
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "EvConnectorType",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "IEC_TYPE_1_AC",
-        "value": 1
-      },
-      {
-        "name": "IEC_TYPE_2_AC",
-        "value": 2
-      },
-      {
-        "name": "IEC_TYPE_3_AC",
-        "value": 3
-      },
-      {
-        "name": "IEC_TYPE_4_DC",
-        "value": 4
-      },
-      {
-        "name": "IEC_TYPE_1_CCS_DC",
-        "value": 5
-      },
-      {
-        "name": "IEC_TYPE_2_CCS_DC",
-        "value": 6
-      },
-      {
-        "name": "TESLA_ROADSTER",
-        "value": 7
-      },
-      {
-        "name": "TESLA_HPWC",
-        "value": 8
-      },
-      {
-        "name": "TESLA_SUPERCHARGER",
-        "value": 9
-      },
-      {
-        "name": "GBT_AC",
-        "value": 10
-      },
-      {
-        "name": "GBT_DC",
-        "value": 11
-      },
-      {
-        "name": "OTHER",
-        "value": 101
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "UserIdentificationAssociationType",
-    "values": [
-      {
-        "name": "INVALID",
-        "value": 0
-      },
-      {
-        "name": "KEY_FOB",
-        "value": 1
-      },
-      {
-        "name": "CUSTOM_1",
-        "value": 101
-      },
-      {
-        "name": "CUSTOM_2",
-        "value": 102
-      },
-      {
-        "name": "CUSTOM_3",
-        "value": 103
-      },
-      {
-        "name": "CUSTOM_4",
-        "value": 104
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleHvacFanDirection",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "FACE",
-        "value": 1
-      },
-      {
-        "name": "FLOOR",
-        "value": 2
-      },
-      {
-        "name": "FACE_AND_FLOOR",
-        "value": 3
-      },
-      {
-        "name": "DEFROST",
-        "value": 4
-      },
-      {
-        "name": "DEFROST_AND_FLOOR",
-        "value": 6
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleAreaWheel",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "LEFT_FRONT",
-        "value": 1
-      },
-      {
-        "name": "RIGHT_FRONT",
-        "value": 2
-      },
-      {
-        "name": "LEFT_REAR",
-        "value": 4
-      },
-      {
-        "name": "RIGHT_REAR",
-        "value": 8
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "InitialUserInfoRequestType",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "FIRST_BOOT",
-        "value": 1
-      },
-      {
-        "name": "FIRST_BOOT_AFTER_OTA",
-        "value": 2
-      },
-      {
-        "name": "COLD_BOOT",
-        "value": 3
-      },
-      {
-        "name": "RESUME",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "HandsOnDetectionDriverState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "HANDS_ON",
-        "value": 1
-      },
-      {
-        "name": "HANDS_OFF",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "CruiseControlCommand",
-    "values": [
-      {
-        "name": "ACTIVATE",
-        "value": 1
-      },
-      {
-        "name": "SUSPEND",
-        "value": 2
-      },
-      {
-        "name": "INCREASE_TARGET_SPEED",
-        "value": 3
-      },
-      {
-        "name": "DECREASE_TARGET_SPEED",
-        "value": 4
-      },
-      {
-        "name": "INCREASE_TARGET_TIME_GAP",
-        "value": 5
-      },
-      {
-        "name": "DECREASE_TARGET_TIME_GAP",
-        "value": 6
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "WindshieldWipersSwitch",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "OFF",
-        "value": 1
-      },
-      {
-        "name": "MIST",
-        "value": 2
-      },
-      {
-        "name": "INTERMITTENT_LEVEL_1",
-        "value": 3
-      },
-      {
-        "name": "INTERMITTENT_LEVEL_2",
-        "value": 4
-      },
-      {
-        "name": "INTERMITTENT_LEVEL_3",
-        "value": 5
-      },
-      {
-        "name": "INTERMITTENT_LEVEL_4",
-        "value": 6
-      },
-      {
-        "name": "INTERMITTENT_LEVEL_5",
-        "value": 7
-      },
-      {
-        "name": "CONTINUOUS_LEVEL_1",
-        "value": 8
-      },
-      {
-        "name": "CONTINUOUS_LEVEL_2",
-        "value": 9
-      },
-      {
-        "name": "CONTINUOUS_LEVEL_3",
-        "value": 10
-      },
-      {
-        "name": "CONTINUOUS_LEVEL_4",
-        "value": 11
-      },
-      {
-        "name": "CONTINUOUS_LEVEL_5",
-        "value": 12
-      },
-      {
-        "name": "AUTO",
-        "value": 13
-      },
-      {
-        "name": "SERVICE",
-        "value": 14
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleHwMotionToolType",
-    "values": [
-      {
-        "name": "TOOL_TYPE_UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "TOOL_TYPE_FINGER",
-        "value": 1
-      },
-      {
-        "name": "TOOL_TYPE_STYLUS",
-        "value": 2
-      },
-      {
-        "name": "TOOL_TYPE_MOUSE",
-        "value": 3
-      },
-      {
-        "name": "TOOL_TYPE_ERASER",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "SwitchUserStatus",
-    "values": [
-      {
-        "name": "SUCCESS",
-        "value": 1
-      },
-      {
-        "name": "FAILURE",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "EvsServiceType",
-    "values": [
-      {
-        "name": "REARVIEW",
-        "value": 0
-      },
-      {
-        "name": "SURROUNDVIEW",
-        "value": 1
-      },
-      {
-        "name": "FRONTVIEW",
-        "value": 2
-      },
-      {
-        "name": "LEFTVIEW",
-        "value": 3
-      },
-      {
-        "name": "RIGHTVIEW",
-        "value": 4
-      },
-      {
-        "name": "DRIVERVIEW",
-        "value": 5
-      },
-      {
-        "name": "FRONTPASSENGERSVIEW",
-        "value": 6
-      },
-      {
-        "name": "REARPASSENGERSVIEW",
-        "value": 7
-      },
-      {
-        "name": "USER_DEFINED",
-        "value": 1000
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "UserIdentificationAssociationValue",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 1
-      },
-      {
-        "name": "ASSOCIATED_CURRENT_USER",
-        "value": 2
-      },
-      {
-        "name": "ASSOCIATED_ANOTHER_USER",
-        "value": 3
-      },
-      {
-        "name": "NOT_ASSOCIATED_ANY_USER",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "ErrorState",
-    "values": [
-      {
-        "name": "OTHER_ERROR_STATE",
-        "value": -1
-      },
-      {
-        "name": "NOT_AVAILABLE_DISABLED",
-        "value": -2
-      },
-      {
-        "name": "NOT_AVAILABLE_SPEED_LOW",
-        "value": -3
-      },
-      {
-        "name": "NOT_AVAILABLE_SPEED_HIGH",
-        "value": -4
-      },
-      {
-        "name": "NOT_AVAILABLE_POOR_VISIBILITY",
-        "value": -5
-      },
-      {
-        "name": "NOT_AVAILABLE_SAFETY",
-        "value": -6
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleIgnitionState",
-    "values": [
-      {
-        "name": "UNDEFINED",
-        "value": 0
-      },
-      {
-        "name": "LOCK",
-        "value": 1
-      },
-      {
-        "name": "OFF",
-        "value": 2
-      },
-      {
-        "name": "ACC",
-        "value": 3
-      },
-      {
-        "name": "ON",
-        "value": 4
-      },
-      {
-        "name": "START",
-        "value": 5
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleAreaSeat",
-    "values": [
-      {
-        "name": "ROW_1_LEFT",
-        "value": 1
-      },
-      {
-        "name": "ROW_1_CENTER",
-        "value": 2
-      },
-      {
-        "name": "ROW_1_RIGHT",
-        "value": 4
-      },
-      {
-        "name": "ROW_2_LEFT",
-        "value": 16
-      },
-      {
-        "name": "ROW_2_CENTER",
-        "value": 32
-      },
-      {
-        "name": "ROW_2_RIGHT",
-        "value": 64
-      },
-      {
-        "name": "ROW_3_LEFT",
-        "value": 256
-      },
-      {
-        "name": "ROW_3_CENTER",
-        "value": 512
-      },
-      {
-        "name": "ROW_3_RIGHT",
-        "value": 1024
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "EvsServiceRequestIndex",
-    "values": [
-      {
-        "name": "TYPE",
-        "value": 0
-      },
-      {
-        "name": "STATE",
-        "value": 1
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "LaneDepartureWarningState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "NO_WARNING",
-        "value": 1
-      },
-      {
-        "name": "WARNING_LEFT",
-        "value": 2
-      },
-      {
-        "name": "WARNING_RIGHT",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "Obd2SparkIgnitionMonitors",
-    "values": []
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "CreateUserStatus",
-    "values": [
-      {
-        "name": "SUCCESS",
-        "value": 1
-      },
-      {
-        "name": "FAILURE",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehiclePropertyGroup",
-    "values": [
-      {
-        "name": "SYSTEM",
-        "value": 268435456
-      },
-      {
-        "name": "VENDOR",
-        "value": 536870912
-      },
-      {
-        "name": "MASK",
-        "value": 4026531840
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleVendorPermission",
-    "values": [
-      {
-        "name": "PERMISSION_DEFAULT",
-        "value": 0
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_WINDOW",
-        "value": 1
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_WINDOW",
-        "value": 2
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_DOOR",
-        "value": 3
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_DOOR",
-        "value": 4
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_SEAT",
-        "value": 5
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_SEAT",
-        "value": 6
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_MIRROR",
-        "value": 7
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_MIRROR",
-        "value": 8
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_INFO",
-        "value": 9
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_INFO",
-        "value": 10
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_ENGINE",
-        "value": 11
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_ENGINE",
-        "value": 12
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_HVAC",
-        "value": 13
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_HVAC",
-        "value": 14
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_LIGHT",
-        "value": 15
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_LIGHT",
-        "value": 16
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_1",
-        "value": 65536
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_1",
-        "value": 69632
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_2",
-        "value": 131072
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_2",
-        "value": 135168
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_3",
-        "value": 196608
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_3",
-        "value": 200704
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_4",
-        "value": 262144
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_4",
-        "value": 266240
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_5",
-        "value": 327680
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_5",
-        "value": 331776
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_6",
-        "value": 393216
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_6",
-        "value": 397312
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_7",
-        "value": 458752
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_7",
-        "value": 462848
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_8",
-        "value": 524288
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_8",
-        "value": 528384
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_9",
-        "value": 589824
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_9",
-        "value": 593920
-      },
-      {
-        "name": "PERMISSION_SET_VENDOR_CATEGORY_10",
-        "value": 655360
-      },
-      {
-        "name": "PERMISSION_GET_VENDOR_CATEGORY_10",
-        "value": 659456
-      },
-      {
-        "name": "PERMISSION_NOT_ACCESSIBLE",
-        "value": 4026531840
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsOfferingMessageIntegerValuesIndex",
-    "values": [
-      {
-        "name": "MESSAGE_TYPE",
-        "value": 0
-      },
-      {
-        "name": "PUBLISHER_ID",
-        "value": 1
-      },
-      {
-        "name": "NUMBER_OF_OFFERS",
-        "value": 2
-      },
-      {
-        "name": "OFFERING_START",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsBaseMessageIntegerValuesIndex",
-    "values": [
-      {
-        "name": "MESSAGE_TYPE",
-        "value": 0
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "Obd2CompressionIgnitionMonitors",
-    "values": []
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "LaneKeepAssistState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "ENABLED",
-        "value": 1
-      },
-      {
-        "name": "ACTIVATED_STEER_LEFT",
-        "value": 2
-      },
-      {
-        "name": "ACTIVATED_STEER_RIGHT",
-        "value": 3
-      },
-      {
-        "name": "USER_OVERRIDE",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleHwMotionInputAction",
-    "values": [
-      {
-        "name": "ACTION_DOWN",
-        "value": 0
-      },
-      {
-        "name": "ACTION_UP",
-        "value": 1
-      },
-      {
-        "name": "ACTION_MOVE",
-        "value": 2
-      },
-      {
-        "name": "ACTION_CANCEL",
-        "value": 3
-      },
-      {
-        "name": "ACTION_OUTSIDE",
-        "value": 4
-      },
-      {
-        "name": "ACTION_POINTER_DOWN",
-        "value": 5
-      },
-      {
-        "name": "ACTION_POINTER_UP",
-        "value": 6
-      },
-      {
-        "name": "ACTION_HOVER_MOVE",
-        "value": 7
-      },
-      {
-        "name": "ACTION_SCROLL",
-        "value": 8
-      },
-      {
-        "name": "ACTION_HOVER_ENTER",
-        "value": 9
-      },
-      {
-        "name": "ACTION_HOVER_EXIT",
-        "value": 10
-      },
-      {
-        "name": "ACTION_BUTTON_PRESS",
-        "value": 11
-      },
-      {
-        "name": "ACTION_BUTTON_RELEASE",
-        "value": 12
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleApPowerStateConfigFlag",
-    "values": [
-      {
-        "name": "ENABLE_DEEP_SLEEP_FLAG",
-        "value": 1
-      },
-      {
-        "name": "CONFIG_SUPPORT_TIMER_POWER_ON_FLAG",
-        "value": 2
-      },
-      {
-        "name": "ENABLE_HIBERNATION_FLAG",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "Obd2SecondaryAirStatus",
-    "values": [
-      {
-        "name": "UPSTREAM",
-        "value": 1
-      },
-      {
-        "name": "DOWNSTREAM_OF_CATALYCIC_CONVERTER",
-        "value": 2
-      },
-      {
-        "name": "FROM_OUTSIDE_OR_OFF",
-        "value": 4
-      },
-      {
-        "name": "PUMP_ON_FOR_DIAGNOSTICS",
-        "value": 8
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsPublisherInformationIntegerValuesIndex",
-    "values": [
-      {
-        "name": "MESSAGE_TYPE",
-        "value": 0
-      },
-      {
-        "name": "PUBLISHER_ID",
-        "value": 1
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleApPowerStateReq",
-    "values": [
-      {
-        "name": "ON",
-        "value": 0
-      },
-      {
-        "name": "SHUTDOWN_PREPARE",
-        "value": 1
-      },
-      {
-        "name": "CANCEL_SHUTDOWN",
-        "value": 2
-      },
-      {
-        "name": "FINISHED",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "WindshieldWipersState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "OFF",
-        "value": 1
-      },
-      {
-        "name": "ON",
-        "value": 2
-      },
-      {
-        "name": "SERVICE",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "LaneCenteringAssistState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "ENABLED",
-        "value": 1
-      },
-      {
-        "name": "ACTIVATION_REQUESTED",
-        "value": 2
-      },
-      {
-        "name": "ACTIVATED",
-        "value": 3
-      },
-      {
-        "name": "USER_OVERRIDE",
-        "value": 4
-      },
-      {
-        "name": "FORCED_DEACTIVATION_WARNING",
-        "value": 5
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "UserIdentificationAssociationSetValue",
-    "values": [
-      {
-        "name": "INVALID",
-        "value": 0
-      },
-      {
-        "name": "ASSOCIATE_CURRENT_USER",
-        "value": 1
-      },
-      {
-        "name": "DISASSOCIATE_CURRENT_USER",
-        "value": 2
-      },
-      {
-        "name": "DISASSOCIATE_ALL_USERS",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "Obd2CommonIgnitionMonitors",
-    "values": []
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleHwMotionInputSource",
-    "values": [
-      {
-        "name": "SOURCE_UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "SOURCE_KEYBOARD",
-        "value": 1
-      },
-      {
-        "name": "SOURCE_DPAD",
-        "value": 2
-      },
-      {
-        "name": "SOURCE_GAMEPAD",
-        "value": 3
-      },
-      {
-        "name": "SOURCE_TOUCHSCREEN",
-        "value": 4
-      },
-      {
-        "name": "SOURCE_MOUSE",
-        "value": 5
-      },
-      {
-        "name": "SOURCE_STYLUS",
-        "value": 6
-      },
-      {
-        "name": "SOURCE_BLUETOOTH_STYLUS",
-        "value": 7
-      },
-      {
-        "name": "SOURCE_TRACKBALL",
-        "value": 8
-      },
-      {
-        "name": "SOURCE_MOUSE_RELATIVE",
-        "value": 9
-      },
-      {
-        "name": "SOURCE_TOUCHPAD",
-        "value": 10
-      },
-      {
-        "name": "SOURCE_TOUCH_NAVIGATION",
-        "value": 11
-      },
-      {
-        "name": "SOURCE_ROTARY_ENCODER",
-        "value": 12
-      },
-      {
-        "name": "SOURCE_JOYSTICK",
-        "value": 13
-      },
-      {
-        "name": "SOURCE_HDMI",
-        "value": 14
-      },
-      {
-        "name": "SOURCE_SENSOR",
-        "value": 15
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "ForwardCollisionWarningState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "NO_WARNING",
-        "value": 1
-      },
-      {
-        "name": "WARNING",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleArea",
-    "values": [
-      {
-        "name": "GLOBAL",
-        "value": 16777216
-      },
-      {
-        "name": "WINDOW",
-        "value": 50331648
-      },
-      {
-        "name": "MIRROR",
-        "value": 67108864
-      },
-      {
-        "name": "SEAT",
-        "value": 83886080
-      },
-      {
-        "name": "DOOR",
-        "value": 100663296
-      },
-      {
-        "name": "WHEEL",
-        "value": 117440512
-      },
-      {
-        "name": "MASK",
-        "value": 251658240
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "PortLocationType",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "FRONT_LEFT",
-        "value": 1
-      },
-      {
-        "name": "FRONT_RIGHT",
-        "value": 2
-      },
-      {
-        "name": "REAR_RIGHT",
-        "value": 3
-      },
-      {
-        "name": "REAR_LEFT",
-        "value": 4
-      },
-      {
-        "name": "FRONT",
-        "value": 5
-      },
-      {
-        "name": "REAR",
-        "value": 6
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "InitialUserInfoResponseAction",
-    "values": [
-      {
-        "name": "DEFAULT",
-        "value": 0
-      },
-      {
-        "name": "SWITCH",
-        "value": 1
-      },
-      {
-        "name": "CREATE",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsSubscriptionsStateIntegerValuesIndex",
-    "values": [
-      {
-        "name": "MESSAGE_TYPE",
-        "value": 0
-      },
-      {
-        "name": "SEQUENCE_NUMBER",
-        "value": 1
-      },
-      {
-        "name": "NUMBER_OF_LAYERS",
-        "value": 2
-      },
-      {
-        "name": "NUMBER_OF_ASSOCIATED_LAYERS",
-        "value": 3
-      },
-      {
-        "name": "SUBSCRIPTIONS_START",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "CruiseControlType",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "STANDARD",
-        "value": 1
-      },
-      {
-        "name": "ADAPTIVE",
-        "value": 2
-      },
-      {
-        "name": "PREDICTIVE",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "DiagnosticFloatSensorIndex",
-    "values": [
-      {
-        "name": "CALCULATED_ENGINE_LOAD",
-        "value": 0
-      },
-      {
-        "name": "ENGINE_COOLANT_TEMPERATURE",
-        "value": 1
-      },
-      {
-        "name": "SHORT_TERM_FUEL_TRIM_BANK1",
-        "value": 2
-      },
-      {
-        "name": "LONG_TERM_FUEL_TRIM_BANK1",
-        "value": 3
-      },
-      {
-        "name": "SHORT_TERM_FUEL_TRIM_BANK2",
-        "value": 4
-      },
-      {
-        "name": "LONG_TERM_FUEL_TRIM_BANK2",
-        "value": 5
-      },
-      {
-        "name": "FUEL_PRESSURE",
-        "value": 6
-      },
-      {
-        "name": "INTAKE_MANIFOLD_ABSOLUTE_PRESSURE",
-        "value": 7
-      },
-      {
-        "name": "ENGINE_RPM",
-        "value": 8
-      },
-      {
-        "name": "VEHICLE_SPEED",
-        "value": 9
-      },
-      {
-        "name": "TIMING_ADVANCE",
-        "value": 10
-      },
-      {
-        "name": "MAF_AIR_FLOW_RATE",
-        "value": 11
-      },
-      {
-        "name": "THROTTLE_POSITION",
-        "value": 12
-      },
-      {
-        "name": "OXYGEN_SENSOR1_VOLTAGE",
-        "value": 13
-      },
-      {
-        "name": "OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM",
-        "value": 14
-      },
-      {
-        "name": "OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 15
-      },
-      {
-        "name": "OXYGEN_SENSOR2_VOLTAGE",
-        "value": 16
-      },
-      {
-        "name": "OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM",
-        "value": 17
-      },
-      {
-        "name": "OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 18
-      },
-      {
-        "name": "OXYGEN_SENSOR3_VOLTAGE",
-        "value": 19
-      },
-      {
-        "name": "OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM",
-        "value": 20
-      },
-      {
-        "name": "OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 21
-      },
-      {
-        "name": "OXYGEN_SENSOR4_VOLTAGE",
-        "value": 22
-      },
-      {
-        "name": "OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM",
-        "value": 23
-      },
-      {
-        "name": "OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 24
-      },
-      {
-        "name": "OXYGEN_SENSOR5_VOLTAGE",
-        "value": 25
-      },
-      {
-        "name": "OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM",
-        "value": 26
-      },
-      {
-        "name": "OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 27
-      },
-      {
-        "name": "OXYGEN_SENSOR6_VOLTAGE",
-        "value": 28
-      },
-      {
-        "name": "OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM",
-        "value": 29
-      },
-      {
-        "name": "OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 30
-      },
-      {
-        "name": "OXYGEN_SENSOR7_VOLTAGE",
-        "value": 31
-      },
-      {
-        "name": "OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM",
-        "value": 32
-      },
-      {
-        "name": "OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 33
-      },
-      {
-        "name": "OXYGEN_SENSOR8_VOLTAGE",
-        "value": 34
-      },
-      {
-        "name": "OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM",
-        "value": 35
-      },
-      {
-        "name": "OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 36
-      },
-      {
-        "name": "FUEL_RAIL_PRESSURE",
-        "value": 37
-      },
-      {
-        "name": "FUEL_RAIL_GAUGE_PRESSURE",
-        "value": 38
-      },
-      {
-        "name": "COMMANDED_EXHAUST_GAS_RECIRCULATION",
-        "value": 39
-      },
-      {
-        "name": "EXHAUST_GAS_RECIRCULATION_ERROR",
-        "value": 40
-      },
-      {
-        "name": "COMMANDED_EVAPORATIVE_PURGE",
-        "value": 41
-      },
-      {
-        "name": "FUEL_TANK_LEVEL_INPUT",
-        "value": 42
-      },
-      {
-        "name": "EVAPORATION_SYSTEM_VAPOR_PRESSURE",
-        "value": 43
-      },
-      {
-        "name": "CATALYST_TEMPERATURE_BANK1_SENSOR1",
-        "value": 44
-      },
-      {
-        "name": "CATALYST_TEMPERATURE_BANK2_SENSOR1",
-        "value": 45
-      },
-      {
-        "name": "CATALYST_TEMPERATURE_BANK1_SENSOR2",
-        "value": 46
-      },
-      {
-        "name": "CATALYST_TEMPERATURE_BANK2_SENSOR2",
-        "value": 47
-      },
-      {
-        "name": "ABSOLUTE_LOAD_VALUE",
-        "value": 48
-      },
-      {
-        "name": "FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO",
-        "value": 49
-      },
-      {
-        "name": "RELATIVE_THROTTLE_POSITION",
-        "value": 50
-      },
-      {
-        "name": "ABSOLUTE_THROTTLE_POSITION_B",
-        "value": 51
-      },
-      {
-        "name": "ABSOLUTE_THROTTLE_POSITION_C",
-        "value": 52
-      },
-      {
-        "name": "ACCELERATOR_PEDAL_POSITION_D",
-        "value": 53
-      },
-      {
-        "name": "ACCELERATOR_PEDAL_POSITION_E",
-        "value": 54
-      },
-      {
-        "name": "ACCELERATOR_PEDAL_POSITION_F",
-        "value": 55
-      },
-      {
-        "name": "COMMANDED_THROTTLE_ACTUATOR",
-        "value": 56
-      },
-      {
-        "name": "ETHANOL_FUEL_PERCENTAGE",
-        "value": 57
-      },
-      {
-        "name": "ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE",
-        "value": 58
-      },
-      {
-        "name": "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1",
-        "value": 59
-      },
-      {
-        "name": "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2",
-        "value": 60
-      },
-      {
-        "name": "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3",
-        "value": 61
-      },
-      {
-        "name": "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4",
-        "value": 62
-      },
-      {
-        "name": "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1",
-        "value": 63
-      },
-      {
-        "name": "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2",
-        "value": 64
-      },
-      {
-        "name": "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3",
-        "value": 65
-      },
-      {
-        "name": "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4",
-        "value": 66
-      },
-      {
-        "name": "RELATIVE_ACCELERATOR_PEDAL_POSITION",
-        "value": 67
-      },
-      {
-        "name": "HYBRID_BATTERY_PACK_REMAINING_LIFE",
-        "value": 68
-      },
-      {
-        "name": "FUEL_INJECTION_TIMING",
-        "value": 69
-      },
-      {
-        "name": "ENGINE_FUEL_RATE",
-        "value": 70
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "GsrComplianceRequirementType",
-    "values": [
-      {
-        "name": "GSR_COMPLIANCE_NOT_REQUIRED",
-        "value": 0
-      },
-      {
-        "name": "GSR_COMPLIANCE_REQUIRED_V1",
-        "value": 1
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleLightState",
-    "values": [
-      {
-        "name": "OFF",
-        "value": 0
-      },
-      {
-        "name": "ON",
-        "value": 1
-      },
-      {
-        "name": "DAYTIME_RUNNING",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsMessageWithLayerIntegerValuesIndex",
-    "values": [
-      {
-        "name": "MESSAGE_TYPE",
-        "value": 0
-      },
-      {
-        "name": "LAYER_TYPE",
-        "value": 1
-      },
-      {
-        "name": "LAYER_SUBTYPE",
-        "value": 2
-      },
-      {
-        "name": "LAYER_VERSION",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "EvRegenerativeBrakingState",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "DISABLED",
-        "value": 1
-      },
-      {
-        "name": "PARTIALLY_ENABLED",
-        "value": 2
-      },
-      {
-        "name": "FULLY_ENABLED",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleApPowerStateReqIndex",
-    "values": [
-      {
-        "name": "STATE",
-        "value": 0
-      },
-      {
-        "name": "ADDITIONAL",
-        "value": 1
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "RotaryInputType",
-    "values": [
-      {
-        "name": "ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION",
-        "value": 0
-      },
-      {
-        "name": "ROTARY_INPUT_TYPE_AUDIO_VOLUME",
-        "value": 1
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsMessageType",
-    "values": [
-      {
-        "name": "SUBSCRIBE",
-        "value": 1
-      },
-      {
-        "name": "SUBSCRIBE_TO_PUBLISHER",
-        "value": 2
-      },
-      {
-        "name": "UNSUBSCRIBE",
-        "value": 3
-      },
-      {
-        "name": "UNSUBSCRIBE_TO_PUBLISHER",
-        "value": 4
-      },
-      {
-        "name": "OFFERING",
-        "value": 5
-      },
-      {
-        "name": "AVAILABILITY_REQUEST",
-        "value": 6
-      },
-      {
-        "name": "SUBSCRIPTIONS_REQUEST",
-        "value": 7
-      },
-      {
-        "name": "AVAILABILITY_RESPONSE",
-        "value": 8
-      },
-      {
-        "name": "AVAILABILITY_CHANGE",
-        "value": 9
-      },
-      {
-        "name": "SUBSCRIPTIONS_RESPONSE",
-        "value": 10
-      },
-      {
-        "name": "SUBSCRIPTIONS_CHANGE",
-        "value": 11
-      },
-      {
-        "name": "DATA",
-        "value": 12
-      },
-      {
-        "name": "PUBLISHER_ID_REQUEST",
-        "value": 13
-      },
-      {
-        "name": "PUBLISHER_ID_RESPONSE",
-        "value": 14
-      },
-      {
-        "name": "PUBLISHER_INFORMATION_REQUEST",
-        "value": 15
-      },
-      {
-        "name": "PUBLISHER_INFORMATION_RESPONSE",
-        "value": 16
-      },
-      {
-        "name": "START_SESSION",
-        "value": 17
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "FuelType",
-    "values": [
-      {
-        "name": "FUEL_TYPE_UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "FUEL_TYPE_UNLEADED",
-        "value": 1
-      },
-      {
-        "name": "FUEL_TYPE_LEADED",
-        "value": 2
-      },
-      {
-        "name": "FUEL_TYPE_DIESEL_1",
-        "value": 3
-      },
-      {
-        "name": "FUEL_TYPE_DIESEL_2",
-        "value": 4
-      },
-      {
-        "name": "FUEL_TYPE_BIODIESEL",
-        "value": 5
-      },
-      {
-        "name": "FUEL_TYPE_E85",
-        "value": 6
-      },
-      {
-        "name": "FUEL_TYPE_LPG",
-        "value": 7
-      },
-      {
-        "name": "FUEL_TYPE_CNG",
-        "value": 8
-      },
-      {
-        "name": "FUEL_TYPE_LNG",
-        "value": 9
-      },
-      {
-        "name": "FUEL_TYPE_ELECTRIC",
-        "value": 10
-      },
-      {
-        "name": "FUEL_TYPE_HYDROGEN",
-        "value": 11
-      },
-      {
-        "name": "FUEL_TYPE_OTHER",
-        "value": 12
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleSeatOccupancyState",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "VACANT",
-        "value": 1
-      },
-      {
-        "name": "OCCUPIED",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "EvStoppingMode",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "CREEP",
-        "value": 1
-      },
-      {
-        "name": "ROLL",
-        "value": 2
-      },
-      {
-        "name": "HOLD",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "AutomaticEmergencyBrakingState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "ENABLED",
-        "value": 1
-      },
-      {
-        "name": "ACTIVATED",
-        "value": 2
-      },
-      {
-        "name": "USER_OVERRIDE",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleApPowerStateReport",
-    "values": [
-      {
-        "name": "WAIT_FOR_VHAL",
-        "value": 1
-      },
-      {
-        "name": "DEEP_SLEEP_ENTRY",
-        "value": 2
-      },
-      {
-        "name": "DEEP_SLEEP_EXIT",
-        "value": 3
-      },
-      {
-        "name": "SHUTDOWN_POSTPONE",
-        "value": 4
-      },
-      {
-        "name": "SHUTDOWN_START",
-        "value": 5
-      },
-      {
-        "name": "ON",
-        "value": 6
-      },
-      {
-        "name": "SHUTDOWN_PREPARE",
-        "value": 7
-      },
-      {
-        "name": "SHUTDOWN_CANCELLED",
-        "value": 8
-      },
-      {
-        "name": "HIBERNATION_ENTRY",
-        "value": 9
-      },
-      {
-        "name": "HIBERNATION_EXIT",
-        "value": 10
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "SwitchUserMessageType",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "LEGACY_ANDROID_SWITCH",
-        "value": 1
-      },
-      {
-        "name": "ANDROID_SWITCH",
-        "value": 2
-      },
-      {
-        "name": "VEHICLE_RESPONSE",
-        "value": 3
-      },
-      {
-        "name": "VEHICLE_REQUEST",
-        "value": 4
-      },
-      {
-        "name": "ANDROID_POST_SWITCH",
-        "value": 5
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleAreaMirror",
-    "values": [
-      {
-        "name": "DRIVER_LEFT",
-        "value": 1
-      },
-      {
-        "name": "DRIVER_RIGHT",
-        "value": 2
-      },
-      {
-        "name": "DRIVER_CENTER",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "TrailerState",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "NOT_PRESENT",
-        "value": 1
-      },
-      {
-        "name": "PRESENT",
-        "value": 2
-      },
-      {
-        "name": "ERROR",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "EvsServiceState",
-    "values": [
-      {
-        "name": "OFF",
-        "value": 0
-      },
-      {
-        "name": "ON",
-        "value": 1
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleHwKeyInputAction",
-    "values": [
-      {
-        "name": "ACTION_DOWN",
-        "value": 0
-      },
-      {
-        "name": "ACTION_UP",
-        "value": 1
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "BlindSpotWarningState",
-    "values": [
-      {
-        "name": "OTHER",
-        "value": 0
-      },
-      {
-        "name": "NO_WARNING",
-        "value": 1
-      },
-      {
-        "name": "WARNING",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleGear",
-    "values": [
-      {
-        "name": "GEAR_UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "GEAR_NEUTRAL",
-        "value": 1
-      },
-      {
-        "name": "GEAR_REVERSE",
-        "value": 2
-      },
-      {
-        "name": "GEAR_PARK",
-        "value": 4
-      },
-      {
-        "name": "GEAR_DRIVE",
-        "value": 8
-      },
-      {
-        "name": "GEAR_1",
-        "value": 16
-      },
-      {
-        "name": "GEAR_2",
-        "value": 32
-      },
-      {
-        "name": "GEAR_3",
-        "value": 64
-      },
-      {
-        "name": "GEAR_4",
-        "value": 128
-      },
-      {
-        "name": "GEAR_5",
-        "value": 256
-      },
-      {
-        "name": "GEAR_6",
-        "value": 512
-      },
-      {
-        "name": "GEAR_7",
-        "value": 1024
-      },
-      {
-        "name": "GEAR_8",
-        "value": 2048
-      },
-      {
-        "name": "GEAR_9",
-        "value": 4096
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsStartSessionMessageIntegerValuesIndex",
-    "values": [
-      {
-        "name": "MESSAGE_TYPE",
-        "value": 0
-      },
-      {
-        "name": "SERVICE_ID",
-        "value": 1
-      },
-      {
-        "name": "CLIENT_ID",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "Obd2FuelSystemStatus",
-    "values": [
-      {
-        "name": "OPEN_INSUFFICIENT_ENGINE_TEMPERATURE",
-        "value": 1
-      },
-      {
-        "name": "CLOSED_LOOP",
-        "value": 2
-      },
-      {
-        "name": "OPEN_ENGINE_LOAD_OR_DECELERATION",
-        "value": 4
-      },
-      {
-        "name": "OPEN_SYSTEM_FAILURE",
-        "value": 8
-      },
-      {
-        "name": "CLOSED_LOOP_BUT_FEEDBACK_FAULT",
-        "value": 16
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "ElectronicTollCollectionCardStatus",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "ELECTRONIC_TOLL_COLLECTION_CARD_VALID",
-        "value": 1
-      },
-      {
-        "name": "ELECTRONIC_TOLL_COLLECTION_CARD_INVALID",
-        "value": 2
-      },
-      {
-        "name": "ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleApPowerStateShutdownParam",
-    "values": [
-      {
-        "name": "SHUTDOWN_IMMEDIATELY",
-        "value": 1
-      },
-      {
-        "name": "CAN_SLEEP",
-        "value": 2
-      },
-      {
-        "name": "SHUTDOWN_ONLY",
-        "value": 3
-      },
-      {
-        "name": "SLEEP_IMMEDIATELY",
-        "value": 4
-      },
-      {
-        "name": "HIBERNATE_IMMEDIATELY",
-        "value": 5
-      },
-      {
-        "name": "CAN_HIBERNATE",
-        "value": 6
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "CustomInputType",
-    "values": [
-      {
-        "name": "CUSTOM_EVENT_F1",
-        "value": 1001
-      },
-      {
-        "name": "CUSTOM_EVENT_F2",
-        "value": 1002
-      },
-      {
-        "name": "CUSTOM_EVENT_F3",
-        "value": 1003
-      },
-      {
-        "name": "CUSTOM_EVENT_F4",
-        "value": 1004
-      },
-      {
-        "name": "CUSTOM_EVENT_F5",
-        "value": 1005
-      },
-      {
-        "name": "CUSTOM_EVENT_F6",
-        "value": 1006
-      },
-      {
-        "name": "CUSTOM_EVENT_F7",
-        "value": 1007
-      },
-      {
-        "name": "CUSTOM_EVENT_F8",
-        "value": 1008
-      },
-      {
-        "name": "CUSTOM_EVENT_F9",
-        "value": 1009
-      },
-      {
-        "name": "CUSTOM_EVENT_F10",
-        "value": 1010
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleTurnSignal",
-    "values": [
-      {
-        "name": "NONE",
-        "value": 0
-      },
-      {
-        "name": "RIGHT",
-        "value": 1
-      },
-      {
-        "name": "LEFT",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "ElectronicTollCollectionCardType",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "JP_ELECTRONIC_TOLL_COLLECTION_CARD",
-        "value": 1
-      },
-      {
-        "name": "JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleProperty",
-    "values": [
-      {
-        "name": "Undefined property.",
-        "value": 0
-      },
-      {
-        "name": "VIN of vehicle",
-        "value": 286261504,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Manufacturer of vehicle",
-        "value": 286261505,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Model of vehicle",
-        "value": 286261506,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Model year of vehicle.",
-        "value": 289407235,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:YEAR"
-      },
-      {
-        "name": "Fuel capacity of the vehicle in milliliters",
-        "value": 291504388,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:MILLILITER"
-      },
-      {
-        "name": "List of fuels the vehicle may use.",
-        "value": 289472773,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "FuelType"
-      },
-      {
-        "name": "Nominal battery capacity for EV or hybrid vehicle",
-        "value": 291504390,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:WH"
-      },
-      {
-        "name": "List of connectors this EV may use",
-        "value": 289472775,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "data_enum": "EvConnectorType",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Fuel door location",
-        "value": 289407240,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "data_enum": "PortLocationType",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "EV port location",
-        "value": 289407241,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "PortLocationType"
-      },
-      {
-        "name": "INFO_DRIVER_SEAT",
-        "value": 356516106,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "data_enum": "VehicleAreaSeat",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Exterior dimensions of vehicle.",
-        "value": 289472779,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:MILLIMETER"
-      },
-      {
-        "name": "Multiple EV port locations",
-        "value": 289472780,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "PortLocationType"
-      },
-      {
-        "name": "Current odometer value of the vehicle",
-        "value": 291504644,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:KILOMETER"
-      },
-      {
-        "name": "Speed of the vehicle",
-        "value": 291504647,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:METER_PER_SEC"
-      },
-      {
-        "name": "Speed of the vehicle for displays",
-        "value": 291504648,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:METER_PER_SEC"
-      },
-      {
-        "name": "Front bicycle model steering angle for vehicle",
-        "value": 291504649,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:DEGREES"
-      },
-      {
-        "name": "Rear bicycle model steering angle for vehicle",
-        "value": 291504656,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:DEGREES"
-      },
-      {
-        "name": "Temperature of engine coolant",
-        "value": 291504897,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:CELSIUS"
-      },
-      {
-        "name": "Engine oil level",
-        "value": 289407747,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleOilLevel"
-      },
-      {
-        "name": "Temperature of engine oil",
-        "value": 291504900,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:CELSIUS"
-      },
-      {
-        "name": "Engine rpm",
-        "value": 291504901,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:RPM"
-      },
-      {
-        "name": "Reports wheel ticks",
-        "value": 290521862,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "FUEL_LEVEL",
-        "value": 291504903,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:MILLILITER"
-      },
-      {
-        "name": "Fuel door open",
-        "value": 287310600,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Battery level for EV or hybrid vehicle",
-        "value": 291504905,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:WH"
-      },
-      {
-        "name": "Current battery capacity for EV or hybrid vehicle",
-        "value": 291504909,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:WH"
-      },
-      {
-        "name": "EV charge port open",
-        "value": 287310602,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "EV charge port connected",
-        "value": 287310603,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "EV instantaneous charge rate in milliwatts",
-        "value": 291504908,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:MW"
-      },
-      {
-        "name": "Range remaining",
-        "value": 291504904,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "unit": "VehicleUnit:METER"
-      },
-      {
-        "name": "Tire pressure",
-        "value": 392168201,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:KILOPASCAL"
-      },
-      {
-        "name": "Critically low tire pressure",
-        "value": 392168202,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:KILOPASCAL"
-      },
-      {
-        "name": "Represents feature for engine idle automatic stop.",
-        "value": 287310624,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Currently selected gear",
-        "value": 289408000,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleGear"
-      },
-      {
-        "name": "CURRENT_GEAR",
-        "value": 289408001,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleGear"
-      },
-      {
-        "name": "Parking brake state.",
-        "value": 287310850,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "PARKING_BRAKE_AUTO_APPLY",
-        "value": 287310851,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Regenerative braking level of a electronic vehicle",
-        "value": 289408012,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Warning for fuel low level.",
-        "value": 287310853,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Night mode",
-        "value": 287310855,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "State of the vehicles turn signals",
-        "value": 289408008,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleTurnSignal"
-      },
-      {
-        "name": "Represents ignition state",
-        "value": 289408009,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleIgnitionState"
-      },
-      {
-        "name": "ABS is active",
-        "value": 287310858,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Traction Control is active",
-        "value": 287310859,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Represents property for the current stopping mode of the vehicle.",
-        "value": 289408013,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "EvStoppingMode"
-      },
-      {
-        "name": "HVAC Properties",
-        "value": 356517120,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Fan direction setting",
-        "value": 356517121,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleHvacFanDirection"
-      },
-      {
-        "name": "HVAC current temperature.",
-        "value": 358614274,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:CELSIUS"
-      },
-      {
-        "name": "HVAC_TEMPERATURE_SET",
-        "value": 358614275,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "unit": "VehicleUnit:CELSIUS"
-      },
-      {
-        "name": "HVAC_DEFROSTER",
-        "value": 320865540,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HVAC_AC_ON",
-        "value": 354419973,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "config_flags": "Supported"
-      },
-      {
-        "name": "HVAC_MAX_AC_ON",
-        "value": 354419974,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HVAC_MAX_DEFROST_ON",
-        "value": 354419975,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HVAC_RECIRC_ON",
-        "value": 354419976,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Enable temperature coupling between areas.",
-        "value": 354419977,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HVAC_AUTO_ON",
-        "value": 354419978,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HVAC_SEAT_TEMPERATURE",
-        "value": 356517131,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Side Mirror Heat",
-        "value": 339739916,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HVAC_STEERING_WHEEL_HEAT",
-        "value": 289408269,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Temperature units for display",
-        "value": 289408270,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleUnit"
-      },
-      {
-        "name": "Actual fan speed",
-        "value": 356517135,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "HVAC_POWER_ON",
-        "value": 354419984,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Fan Positions Available",
-        "value": 356582673,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleHvacFanDirection"
-      },
-      {
-        "name": "HVAC_AUTO_RECIRC_ON",
-        "value": 354419986,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat ventilation",
-        "value": 356517139,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HVAC_ELECTRIC_DEFROSTER_ON",
-        "value": 320865556,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Suggested values for setting HVAC temperature.",
-        "value": 291570965,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Distance units for display",
-        "value": 289408512,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleUnit"
-      },
-      {
-        "name": "Fuel volume units for display",
-        "value": 289408513,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleUnit"
-      },
-      {
-        "name": "Tire pressure units for display",
-        "value": 289408514,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleUnit"
-      },
-      {
-        "name": "EV battery units for display",
-        "value": 289408515,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleUnit"
-      },
-      {
-        "name": "Fuel consumption units for display",
-        "value": 287311364,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Speed units for display",
-        "value": 289408517,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "ANDROID_EPOCH_TIME",
-        "value": 290457094,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE",
-        "unit": "VehicleUnit:MILLI_SECS"
-      },
-      {
-        "name": "External encryption binding seed.",
-        "value": 292554247,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Outside temperature",
-        "value": 291505923,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:CELSIUS"
-      },
-      {
-        "name": "Property to control power state of application processor",
-        "value": 289475072,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Property to report power state of application processor",
-        "value": 289475073,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "AP_POWER_BOOTUP_REASON",
-        "value": 289409538,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Property to represent brightness of the display.",
-        "value": 289409539,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Property to represent brightness of the displays which are controlled separately.",
-        "value": 289475076,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HW_KEY_INPUT",
-        "value": 289475088,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "config_flags": ""
-      },
-      {
-        "name": "HW_KEY_INPUT_V2",
-        "value": 367004177,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "config_flags": ""
-      },
-      {
-        "name": "HW_MOTION_INPUT",
-        "value": 367004178,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "config_flags": ""
-      },
-      {
-        "name": "HW_ROTARY_INPUT",
-        "value": 289475104,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "data_enum": "RotaryInputType",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Defines a custom OEM partner input event.",
-        "value": 289475120,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "data_enum": "CustomInputType",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "DOOR_POS",
-        "value": 373295872,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Door move",
-        "value": 373295873,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Door lock",
-        "value": 371198722,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Door child lock feature enabled",
-        "value": 371198723,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Mirror Z Position",
-        "value": 339741504,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Mirror Z Move",
-        "value": 339741505,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Mirror Y Position",
-        "value": 339741506,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Mirror Y Move",
-        "value": 339741507,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Mirror Lock",
-        "value": 287312708,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Mirror Fold",
-        "value": 287312709,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Represents property for Mirror Auto Fold feature.",
-        "value": 337644358,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Represents property for Mirror Auto Tilt feature.",
-        "value": 337644359,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat memory select",
-        "value": 356518784,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "Seat memory set",
-        "value": 356518785,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "Seatbelt buckled",
-        "value": 354421634,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seatbelt height position",
-        "value": 356518787,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seatbelt height move",
-        "value": 356518788,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_FORE_AFT_POS",
-        "value": 356518789,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_FORE_AFT_MOVE",
-        "value": 356518790,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat backrest angle 1 position",
-        "value": 356518791,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat backrest angle 1 move",
-        "value": 356518792,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat backrest angle 2 position",
-        "value": 356518793,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat backrest angle 2 move",
-        "value": 356518794,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat height position",
-        "value": 356518795,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat height move",
-        "value": 356518796,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat depth position",
-        "value": 356518797,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat depth move",
-        "value": 356518798,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat tilt position",
-        "value": 356518799,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat tilt move",
-        "value": 356518800,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_LUMBAR_FORE_AFT_POS",
-        "value": 356518801,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_LUMBAR_FORE_AFT_MOVE",
-        "value": 356518802,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Lumbar side support position",
-        "value": 356518803,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Lumbar side support move",
-        "value": 356518804,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_HEADREST_HEIGHT_POS",
-        "value": 289409941,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Headrest height position",
-        "value": 356518820,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Headrest height move",
-        "value": 356518806,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Headrest angle position",
-        "value": 356518807,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Headrest angle move",
-        "value": 356518808,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_HEADREST_FORE_AFT_POS",
-        "value": 356518809,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_HEADREST_FORE_AFT_MOVE",
-        "value": 356518810,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Represents property for the seat footwell lights state.",
-        "value": 356518811,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Represents property for the seat footwell lights switch.",
-        "value": 356518812,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Represents property for Seat easy access feature.",
-        "value": 354421661,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_AIRBAG_ENABLED",
-        "value": 354421662,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_CUSHION_SIDE_SUPPORT_POS",
-        "value": 356518815,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Represents property for movement direction and speed of seat cushion side support.",
-        "value": 356518816,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_LUMBAR_VERTICAL_POS",
-        "value": 356518817,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Represents property for vertical movement direction and speed of seat lumbar support.",
-        "value": 356518818,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "SEAT_WALK_IN_POS",
-        "value": 356518819,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Seat Occupancy",
-        "value": 356518832,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleSeatOccupancyState"
-      },
-      {
-        "name": "Window Position",
-        "value": 322964416,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Window Move",
-        "value": 322964417,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Window Lock",
-        "value": 320867268,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "WINDSHIELD_WIPERS_PERIOD",
-        "value": 322964421,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:MILLI_SECS"
-      },
-      {
-        "name": "Windshield wipers state.",
-        "value": 322964422,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "WindshieldWipersState"
-      },
-      {
-        "name": "Windshield wipers switch.",
-        "value": 322964423,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "WindshieldWipersSwitch"
-      },
-      {
-        "name": "Steering wheel depth position",
-        "value": 289410016,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Steering wheel depth movement",
-        "value": 289410017,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Steering wheel height position",
-        "value": 289410018,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Steering wheel height movement",
-        "value": 289410019,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Steering wheel theft lock feature enabled",
-        "value": 287312868,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Steering wheel locked",
-        "value": 287312869,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Steering wheel easy access feature enabled",
-        "value": 287312870,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Property that represents the current position of the glove box door.",
-        "value": 356518896,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Lock or unlock the glove box.",
-        "value": 354421745,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "VEHICLE_MAP_SERVICE",
-        "value": 299895808,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Characterization of inputs used for computing location.",
-        "value": 289410064,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "OBD2 Live Sensor Data",
-        "value": 299896064,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "OBD2 Freeze Frame Sensor Data",
-        "value": 299896065,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "OBD2 Freeze Frame Information",
-        "value": 299896066,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "OBD2 Freeze Frame Clear",
-        "value": 299896067,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "Headlights State",
-        "value": 289410560,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "High beam lights state",
-        "value": 289410561,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Fog light state",
-        "value": 289410562,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Hazard light status",
-        "value": 289410563,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Headlight switch",
-        "value": 289410576,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "High beam light switch",
-        "value": 289410577,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Fog light switch",
-        "value": 289410578,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Hazard light switch",
-        "value": 289410579,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Cabin lights",
-        "value": 289410817,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Cabin lights switch",
-        "value": 289410818,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Reading lights",
-        "value": 356519683,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Reading lights switch",
-        "value": 356519684,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Steering wheel lights state",
-        "value": 289410828,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Steering wheel lights switch",
-        "value": 289410829,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Support customize permissions for vendor properties",
-        "value": 287313669,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Allow disabling optional featurs from vhal.",
-        "value": 286265094,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Defines the initial Android user to be used during initialization.",
-        "value": 299896583,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Defines a request to switch the foreground Android user.",
-        "value": 299896584,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Called by the Android System after an Android user was created.",
-        "value": 299896585,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Called by the Android System after an Android user was removed.",
-        "value": 299896586,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "USER_IDENTIFICATION_ASSOCIATION",
-        "value": 299896587,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "EVS_SERVICE_REQUEST",
-        "value": 289476368,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Defines a request to apply power policy.",
-        "value": 286265121,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "POWER_POLICY_GROUP_REQ",
-        "value": 286265122,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Notifies the current power policy to VHAL layer.",
-        "value": 286265123,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "WATCHDOG_ALIVE",
-        "value": 290459441,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "Defines a process terminated by car watchdog and the reason of termination.",
-        "value": 299896626,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "Defines an event that VHAL signals to car watchdog as a heartbeat.",
-        "value": 290459443,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Starts the ClusterUI in cluster display.",
-        "value": 289410868,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Changes the state of the cluster display.",
-        "value": 289476405,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Reports the current display state and ClusterUI state.",
-        "value": 299896630,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "Requests to change the cluster display state to show some ClusterUI.",
-        "value": 289410871,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "Informs the current navigation state.",
-        "value": 292556600,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE"
-      },
-      {
-        "name": "Electronic Toll Collection card type.",
-        "value": 289410873,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ElectronicTollCollectionCardType"
-      },
-      {
-        "name": "Electronic Toll Collection card status.",
-        "value": 289410874,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ElectronicTollCollectionCardStatus"
-      },
-      {
-        "name": "Front fog lights state",
-        "value": 289410875,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Front fog lights switch",
-        "value": 289410876,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Rear fog lights state",
-        "value": 289410877,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "VehicleLightState"
-      },
-      {
-        "name": "Rear fog lights switch",
-        "value": 289410878,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "VehicleLightSwitch"
-      },
-      {
-        "name": "Indicates the maximum current draw threshold for charging set by the user",
-        "value": 291508031,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "unit": "VehicleUnit:AMPERE"
-      },
-      {
-        "name": "Indicates the maximum charge percent threshold set by the user",
-        "value": 291508032,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Charging state of the car",
-        "value": 289410881,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "EvChargeState"
-      },
-      {
-        "name": "Start or stop charging the EV battery",
-        "value": 287313730,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Estimated charge time remaining in seconds",
-        "value": 289410883,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:SECS"
-      },
-      {
-        "name": "EV_REGENERATIVE_BRAKING_STATE",
-        "value": 289410884,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "EvRegenerativeBrakingState"
-      },
-      {
-        "name": "Indicates if there is a trailer present or not.",
-        "value": 289410885,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "TrailerState"
-      },
-      {
-        "name": "VEHICLE_CURB_WEIGHT",
-        "value": 289410886,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:KILOGRAM"
-      },
-      {
-        "name": "GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
-        "value": 289410887,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "GsrComplianceRequirementType"
-      },
-      {
-        "name": "SUPPORTED_PROPERTY_IDS",
-        "value": 289476424,
-        "change_mode": "VehiclePropertyChangeMode:STATIC",
-        "access": "VehiclePropertyAccess:READ"
-      },
-      {
-        "name": "Request the head unit to be shutdown.",
-        "value": 289410889,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE",
-        "data_enum": "VehicleApPowerStateShutdownParam"
-      },
-      {
-        "name": "Whether the vehicle is currently in use.",
-        "value": 287313738,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "Start of ADAS Properties",
-        "value": 287313920,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "AUTOMATIC_EMERGENCY_BRAKING_STATE",
-        "value": 289411073,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "FORWARD_COLLISION_WARNING_ENABLED",
-        "value": 287313922,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "FORWARD_COLLISION_WARNING_STATE",
-        "value": 289411075,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "BLIND_SPOT_WARNING_ENABLED",
-        "value": 287313924,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "BLIND_SPOT_WARNING_STATE",
-        "value": 339742725,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "LANE_DEPARTURE_WARNING_ENABLED",
-        "value": 287313926,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "LANE_DEPARTURE_WARNING_STATE",
-        "value": 289411079,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "LANE_KEEP_ASSIST_ENABLED",
-        "value": 287313928,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "LANE_KEEP_ASSIST_STATE",
-        "value": 289411081,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "LANE_CENTERING_ASSIST_ENABLED",
-        "value": 287313930,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "LANE_CENTERING_ASSIST_COMMAND",
-        "value": 289411083,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE",
-        "data_enum": "LaneCenteringAssistCommand"
-      },
-      {
-        "name": "LANE_CENTERING_ASSIST_STATE",
-        "value": 289411084,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "EMERGENCY_LANE_KEEP_ASSIST_ENABLED",
-        "value": 287313933
-      },
-      {
-        "name": "EMERGENCY_LANE_KEEP_ASSIST_STATE",
-        "value": 289411086,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "CRUISE_CONTROL_ENABLED",
-        "value": 287313935,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "CRUISE_CONTROL_TYPE",
-        "value": 289411088,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "CRUISE_CONTROL_STATE",
-        "value": 289411089,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "CRUISE_CONTROL_COMMAND",
-        "value": 289411090,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:WRITE",
-        "data_enum": "CruiseControlCommand"
-      },
-      {
-        "name": "CRUISE_CONTROL_TARGET_SPEED",
-        "value": 291508243,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:METER_PER_SEC"
-      },
-      {
-        "name": "ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP",
-        "value": 289411092,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE",
-        "unit": "VehicleUnit:MILLI_SECS"
-      },
-      {
-        "name": "ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE",
-        "value": 289411093,
-        "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
-        "access": "VehiclePropertyAccess:READ",
-        "unit": "VehicleUnit:MILLIMETER"
-      },
-      {
-        "name": "HANDS_ON_DETECTION_ENABLED",
-        "value": 287313942,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ_WRITE"
-      },
-      {
-        "name": "HANDS_ON_DETECTION_DRIVER_STATE",
-        "value": 289411095,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      },
-      {
-        "name": "HANDS_ON_DETECTION_WARNING",
-        "value": 289411096,
-        "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
-        "access": "VehiclePropertyAccess:READ",
-        "data_enum": "ErrorState"
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "DiagnosticIntegerSensorIndex",
-    "values": [
-      {
-        "name": "FUEL_SYSTEM_STATUS",
-        "value": 0
-      },
-      {
-        "name": "MALFUNCTION_INDICATOR_LIGHT_ON",
-        "value": 1
-      },
-      {
-        "name": "IGNITION_MONITORS_SUPPORTED",
-        "value": 2
-      },
-      {
-        "name": "IGNITION_SPECIFIC_MONITORS",
-        "value": 3
-      },
-      {
-        "name": "INTAKE_AIR_TEMPERATURE",
-        "value": 4
-      },
-      {
-        "name": "COMMANDED_SECONDARY_AIR_STATUS",
-        "value": 5
-      },
-      {
-        "name": "NUM_OXYGEN_SENSORS_PRESENT",
-        "value": 6
-      },
-      {
-        "name": "RUNTIME_SINCE_ENGINE_START",
-        "value": 7
-      },
-      {
-        "name": "DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON",
-        "value": 8
-      },
-      {
-        "name": "WARMUPS_SINCE_CODES_CLEARED",
-        "value": 9
-      },
-      {
-        "name": "DISTANCE_TRAVELED_SINCE_CODES_CLEARED",
-        "value": 10
-      },
-      {
-        "name": "ABSOLUTE_BAROMETRIC_PRESSURE",
-        "value": 11
-      },
-      {
-        "name": "CONTROL_MODULE_VOLTAGE",
-        "value": 12
-      },
-      {
-        "name": "AMBIENT_AIR_TEMPERATURE",
-        "value": 13
-      },
-      {
-        "name": "TIME_WITH_MALFUNCTION_LIGHT_ON",
-        "value": 14
-      },
-      {
-        "name": "TIME_SINCE_TROUBLE_CODES_CLEARED",
-        "value": 15
-      },
-      {
-        "name": "MAX_FUEL_AIR_EQUIVALENCE_RATIO",
-        "value": 16
-      },
-      {
-        "name": "MAX_OXYGEN_SENSOR_VOLTAGE",
-        "value": 17
-      },
-      {
-        "name": "MAX_OXYGEN_SENSOR_CURRENT",
-        "value": 18
-      },
-      {
-        "name": "MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE",
-        "value": 19
-      },
-      {
-        "name": "MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR",
-        "value": 20
-      },
-      {
-        "name": "FUEL_TYPE",
-        "value": 21
-      },
-      {
-        "name": "FUEL_RAIL_ABSOLUTE_PRESSURE",
-        "value": 22
-      },
-      {
-        "name": "ENGINE_OIL_TEMPERATURE",
-        "value": 23
-      },
-      {
-        "name": "DRIVER_DEMAND_PERCENT_TORQUE",
-        "value": 24
-      },
-      {
-        "name": "ENGINE_ACTUAL_PERCENT_TORQUE",
-        "value": 25
-      },
-      {
-        "name": "ENGINE_REFERENCE_PERCENT_TORQUE",
-        "value": 26
-      },
-      {
-        "name": "ENGINE_PERCENT_TORQUE_DATA_IDLE",
-        "value": 27
-      },
-      {
-        "name": "ENGINE_PERCENT_TORQUE_DATA_POINT1",
-        "value": 28
-      },
-      {
-        "name": "ENGINE_PERCENT_TORQUE_DATA_POINT2",
-        "value": 29
-      },
-      {
-        "name": "ENGINE_PERCENT_TORQUE_DATA_POINT3",
-        "value": 30
-      },
-      {
-        "name": "ENGINE_PERCENT_TORQUE_DATA_POINT4",
-        "value": 31
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VehicleUnit",
-    "values": [
-      {
-        "name": "SHOULD_NOT_USE",
-        "value": 0
-      },
-      {
-        "name": "METER_PER_SEC",
-        "value": 1
-      },
-      {
-        "name": "RPM",
-        "value": 2
-      },
-      {
-        "name": "HERTZ",
-        "value": 3
-      },
-      {
-        "name": "PERCENTILE",
-        "value": 16
-      },
-      {
-        "name": "MILLIMETER",
-        "value": 32
-      },
-      {
-        "name": "METER",
-        "value": 33
-      },
-      {
-        "name": "KILOMETER",
-        "value": 35
-      },
-      {
-        "name": "MILE",
-        "value": 36
-      },
-      {
-        "name": "CELSIUS",
-        "value": 48
-      },
-      {
-        "name": "FAHRENHEIT",
-        "value": 49
-      },
-      {
-        "name": "KELVIN",
-        "value": 50
-      },
-      {
-        "name": "MILLILITER",
-        "value": 64
-      },
-      {
-        "name": "LITER",
-        "value": 65
-      },
-      {
-        "name": "GALLON",
-        "value": 66
-      },
-      {
-        "name": "US_GALLON",
-        "value": 66
-      },
-      {
-        "name": "IMPERIAL_GALLON",
-        "value": 67
-      },
-      {
-        "name": "NANO_SECS",
-        "value": 80
-      },
-      {
-        "name": "MILLI_SECS",
-        "value": 81
-      },
-      {
-        "name": "SECS",
-        "value": 83
-      },
-      {
-        "name": "YEAR",
-        "value": 89
-      },
-      {
-        "name": "WATT_HOUR",
-        "value": 96
-      },
-      {
-        "name": "MILLIAMPERE",
-        "value": 97
-      },
-      {
-        "name": "MILLIVOLT",
-        "value": 98
-      },
-      {
-        "name": "MILLIWATTS",
-        "value": 99
-      },
-      {
-        "name": "AMPERE_HOURS",
-        "value": 100
-      },
-      {
-        "name": "KILOWATT_HOUR",
-        "value": 101
-      },
-      {
-        "name": "AMPERE",
-        "value": 102
-      },
-      {
-        "name": "KILOPASCAL",
-        "value": 112
-      },
-      {
-        "name": "PSI",
-        "value": 113
-      },
-      {
-        "name": "BAR",
-        "value": 114
-      },
-      {
-        "name": "DEGREES",
-        "value": 128
-      },
-      {
-        "name": "MILES_PER_HOUR",
-        "value": 144
-      },
-      {
-        "name": "KILOMETERS_PER_HOUR",
-        "value": 145
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "LaneCenteringAssistCommand",
-    "values": [
-      {
-        "name": "ACTIVATE",
-        "value": 1
-      },
-      {
-        "name": "DEACTIVATE",
-        "value": 2
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "Obd2FuelType",
-    "values": [
-      {
-        "name": "NOT_AVAILABLE",
-        "value": 0
-      },
-      {
-        "name": "GASOLINE",
-        "value": 1
-      },
-      {
-        "name": "METHANOL",
-        "value": 2
-      },
-      {
-        "name": "ETHANOL",
-        "value": 3
-      },
-      {
-        "name": "DIESEL",
-        "value": 4
-      },
-      {
-        "name": "LPG",
-        "value": 5
-      },
-      {
-        "name": "CNG",
-        "value": 6
-      },
-      {
-        "name": "PROPANE",
-        "value": 7
-      },
-      {
-        "name": "ELECTRIC",
-        "value": 8
-      },
-      {
-        "name": "BIFUEL_RUNNING_GASOLINE",
-        "value": 9
-      },
-      {
-        "name": "BIFUEL_RUNNING_METHANOL",
-        "value": 10
-      },
-      {
-        "name": "BIFUEL_RUNNING_ETHANOL",
-        "value": 11
-      },
-      {
-        "name": "BIFUEL_RUNNING_LPG",
-        "value": 12
-      },
-      {
-        "name": "BIFUEL_RUNNING_CNG",
-        "value": 13
-      },
-      {
-        "name": "BIFUEL_RUNNING_PROPANE",
-        "value": 14
-      },
-      {
-        "name": "BIFUEL_RUNNING_ELECTRIC",
-        "value": 15
-      },
-      {
-        "name": "BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION",
-        "value": 16
-      },
-      {
-        "name": "HYBRID_GASOLINE",
-        "value": 17
-      },
-      {
-        "name": "HYBRID_ETHANOL",
-        "value": 18
-      },
-      {
-        "name": "HYBRID_DIESEL",
-        "value": 19
-      },
-      {
-        "name": "HYBRID_ELECTRIC",
-        "value": 20
-      },
-      {
-        "name": "HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION",
-        "value": 21
-      },
-      {
-        "name": "HYBRID_REGENERATIVE",
-        "value": 22
-      },
-      {
-        "name": "BIFUEL_RUNNING_DIESEL",
-        "value": 23
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "ProcessTerminationReason",
-    "values": [
-      {
-        "name": "NOT_RESPONDING",
-        "value": 1
-      },
-      {
-        "name": "IO_OVERUSE",
-        "value": 2
-      },
-      {
-        "name": "MEMORY_OVERUSE",
-        "value": 3
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "VmsMessageWithLayerAndPublisherIdIntegerValuesIndex",
-    "values": [
-      {
-        "name": "MESSAGE_TYPE",
-        "value": 0
-      },
-      {
-        "name": "LAYER_TYPE",
-        "value": 1
-      },
-      {
-        "name": "LAYER_SUBTYPE",
-        "value": 2
-      },
-      {
-        "name": "LAYER_VERSION",
-        "value": 3
-      },
-      {
-        "name": "PUBLISHER_ID",
-        "value": 4
-      }
-    ]
-  },
-  {
-    "package": "android.hardware.automotive.vehicle",
-    "name": "EvChargeState",
-    "values": [
-      {
-        "name": "UNKNOWN",
-        "value": 0
-      },
-      {
-        "name": "CHARGING",
-        "value": 1
-      },
-      {
-        "name": "FULLY_CHARGED",
-        "value": 2
-      },
-      {
-        "name": "NOT_CHARGING",
-        "value": 3
-      },
-      {
-        "name": "ERROR",
-        "value": 4
-      }
-    ]
-  }
+    {
+        "name": "VehicleProperty",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "VIN of vehicle",
+                "value": 286261504
+            },
+            {
+                "name": "Manufacturer of vehicle",
+                "value": 286261505
+            },
+            {
+                "name": "Model of vehicle",
+                "value": 286261506
+            },
+            {
+                "name": "Model year of vehicle.",
+                "value": 289407235
+            },
+            {
+                "name": "INFO_FUEL_CAPACITY",
+                "value": 291504388
+            },
+            {
+                "name": "INFO_FUEL_TYPE",
+                "value": 289472773,
+                "data_enums": [
+                    "FuelType"
+                ],
+                "data_enum": "FuelType"
+            },
+            {
+                "name": "INFO_EV_BATTERY_CAPACITY",
+                "value": 291504390
+            },
+            {
+                "name": "INFO_EV_CONNECTOR_TYPE",
+                "value": 289472775,
+                "data_enums": [
+                    "EvConnectorType"
+                ],
+                "data_enum": "EvConnectorType"
+            },
+            {
+                "name": "Fuel door location",
+                "value": 289407240,
+                "data_enums": [
+                    "PortLocationType"
+                ],
+                "data_enum": "PortLocationType"
+            },
+            {
+                "name": "EV port location",
+                "value": 289407241,
+                "data_enums": [
+                    "PortLocationType"
+                ],
+                "data_enum": "PortLocationType"
+            },
+            {
+                "name": "INFO_DRIVER_SEAT",
+                "value": 356516106,
+                "data_enums": [
+                    "VehicleAreaSeat"
+                ],
+                "data_enum": "VehicleAreaSeat"
+            },
+            {
+                "name": "INFO_EXTERIOR_DIMENSIONS",
+                "value": 289472779
+            },
+            {
+                "name": "Multiple EV port locations",
+                "value": 289472780,
+                "data_enums": [
+                    "PortLocationType"
+                ],
+                "data_enum": "PortLocationType"
+            },
+            {
+                "name": "PERF_ODOMETER",
+                "value": 291504644
+            },
+            {
+                "name": "Speed of the vehicle",
+                "value": 291504647
+            },
+            {
+                "name": "PERF_VEHICLE_SPEED_DISPLAY",
+                "value": 291504648
+            },
+            {
+                "name": "PERF_STEERING_ANGLE",
+                "value": 291504649
+            },
+            {
+                "name": "PERF_REAR_STEERING_ANGLE",
+                "value": 291504656
+            },
+            {
+                "name": "Temperature of engine coolant",
+                "value": 291504897
+            },
+            {
+                "name": "Engine oil level",
+                "value": 289407747,
+                "data_enums": [
+                    "VehicleOilLevel"
+                ],
+                "data_enum": "VehicleOilLevel"
+            },
+            {
+                "name": "Temperature of engine oil",
+                "value": 291504900
+            },
+            {
+                "name": "Engine rpm",
+                "value": 291504901
+            },
+            {
+                "name": "Reports wheel ticks",
+                "value": 290521862
+            },
+            {
+                "name": "FUEL_LEVEL",
+                "value": 291504903
+            },
+            {
+                "name": "Fuel door open",
+                "value": 287310600
+            },
+            {
+                "name": "EV_BATTERY_LEVEL",
+                "value": 291504905
+            },
+            {
+                "name": "EV_CURRENT_BATTERY_CAPACITY",
+                "value": 291504909
+            },
+            {
+                "name": "EV charge port open",
+                "value": 287310602
+            },
+            {
+                "name": "EV charge port connected",
+                "value": 287310603
+            },
+            {
+                "name": "EV_BATTERY_INSTANTANEOUS_CHARGE_RATE",
+                "value": 291504908
+            },
+            {
+                "name": "Range remaining",
+                "value": 291504904
+            },
+            {
+                "name": "Tire pressure",
+                "value": 392168201
+            },
+            {
+                "name": "Critically low tire pressure",
+                "value": 392168202
+            },
+            {
+                "name": "ENGINE_IDLE_AUTO_STOP_ENABLED",
+                "value": 287310624
+            },
+            {
+                "name": "Currently selected gear",
+                "value": 289408000,
+                "data_enums": [
+                    "VehicleGear"
+                ],
+                "data_enum": "VehicleGear"
+            },
+            {
+                "name": "CURRENT_GEAR",
+                "value": 289408001,
+                "data_enums": [
+                    "VehicleGear"
+                ],
+                "data_enum": "VehicleGear"
+            },
+            {
+                "name": "Parking brake state.",
+                "value": 287310850
+            },
+            {
+                "name": "Auto-apply parking brake.",
+                "value": 287310851
+            },
+            {
+                "name": "EV_BRAKE_REGENERATION_LEVEL",
+                "value": 289408012
+            },
+            {
+                "name": "Warning for fuel low level.",
+                "value": 287310853
+            },
+            {
+                "name": "Night mode",
+                "value": 287310855
+            },
+            {
+                "name": "TURN_SIGNAL_STATE",
+                "value": 289408008,
+                "data_enums": [
+                    "VehicleTurnSignal"
+                ],
+                "data_enum": "VehicleTurnSignal"
+            },
+            {
+                "name": "Represents ignition state",
+                "value": 289408009,
+                "data_enums": [
+                    "VehicleIgnitionState"
+                ],
+                "data_enum": "VehicleIgnitionState"
+            },
+            {
+                "name": "ABS is active",
+                "value": 287310858
+            },
+            {
+                "name": "Traction Control is active",
+                "value": 287310859
+            },
+            {
+                "name": "EV_STOPPING_MODE",
+                "value": 289408013,
+                "data_enums": [
+                    "EvStoppingMode"
+                ],
+                "data_enum": "EvStoppingMode"
+            },
+            {
+                "name": "HVAC Properties",
+                "value": 356517120
+            },
+            {
+                "name": "Fan direction setting",
+                "value": 356517121,
+                "data_enums": [
+                    "VehicleHvacFanDirection"
+                ],
+                "data_enum": "VehicleHvacFanDirection"
+            },
+            {
+                "name": "HVAC current temperature.",
+                "value": 358614274
+            },
+            {
+                "name": "HVAC, target temperature set.",
+                "value": 358614275
+            },
+            {
+                "name": "HVAC_DEFROSTER",
+                "value": 320865540
+            },
+            {
+                "name": "HVAC_AC_ON",
+                "value": 354419973
+            },
+            {
+                "name": "On\/off max AC",
+                "value": 354419974
+            },
+            {
+                "name": "On\/off max defrost",
+                "value": 354419975
+            },
+            {
+                "name": "Recirculation on\/off",
+                "value": 354419976
+            },
+            {
+                "name": "HVAC_DUAL_ON",
+                "value": 354419977
+            },
+            {
+                "name": "HVAC_AUTO_ON",
+                "value": 354419978
+            },
+            {
+                "name": "Seat heating\/cooling",
+                "value": 356517131
+            },
+            {
+                "name": "Side Mirror Heat",
+                "value": 339739916
+            },
+            {
+                "name": "Steering Wheel Heating\/Cooling",
+                "value": 289408269
+            },
+            {
+                "name": "Temperature units for display",
+                "value": 289408270,
+                "data_enums": [
+                    "VehicleUnit"
+                ],
+                "data_enum": "VehicleUnit"
+            },
+            {
+                "name": "Actual fan speed",
+                "value": 356517135
+            },
+            {
+                "name": "HVAC_POWER_ON",
+                "value": 354419984
+            },
+            {
+                "name": "Fan Positions Available",
+                "value": 356582673,
+                "data_enums": [
+                    "VehicleHvacFanDirection"
+                ],
+                "data_enum": "VehicleHvacFanDirection"
+            },
+            {
+                "name": "Automatic recirculation on\/off",
+                "value": 354419986
+            },
+            {
+                "name": "Seat ventilation",
+                "value": 356517139
+            },
+            {
+                "name": "Electric defrosters' status",
+                "value": 320865556
+            },
+            {
+                "name": "HVAC_TEMPERATURE_VALUE_SUGGESTION",
+                "value": 291570965
+            },
+            {
+                "name": "Distance units for display",
+                "value": 289408512,
+                "data_enums": [
+                    "VehicleUnit"
+                ],
+                "data_enum": "VehicleUnit"
+            },
+            {
+                "name": "Fuel volume units for display",
+                "value": 289408513,
+                "data_enums": [
+                    "VehicleUnit"
+                ],
+                "data_enum": "VehicleUnit"
+            },
+            {
+                "name": "TIRE_PRESSURE_DISPLAY_UNITS",
+                "value": 289408514,
+                "data_enums": [
+                    "VehicleUnit"
+                ],
+                "data_enum": "VehicleUnit"
+            },
+            {
+                "name": "EV battery units for display",
+                "value": 289408515,
+                "data_enums": [
+                    "VehicleUnit"
+                ],
+                "data_enum": "VehicleUnit"
+            },
+            {
+                "name": "FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME",
+                "value": 287311364
+            },
+            {
+                "name": "Speed units for display",
+                "value": 289408517
+            },
+            {
+                "name": "EXTERNAL_CAR_TIME",
+                "value": 290457096
+            },
+            {
+                "name": "ANDROID_EPOCH_TIME",
+                "value": 290457094
+            },
+            {
+                "name": "STORAGE_ENCRYPTION_BINDING_SEED",
+                "value": 292554247
+            },
+            {
+                "name": "Outside temperature",
+                "value": 291505923
+            },
+            {
+                "name": "AP_POWER_STATE_REQ",
+                "value": 289475072
+            },
+            {
+                "name": "AP_POWER_STATE_REPORT",
+                "value": 289475073
+            },
+            {
+                "name": "AP_POWER_BOOTUP_REASON",
+                "value": 289409538
+            },
+            {
+                "name": "DISPLAY_BRIGHTNESS",
+                "value": 289409539
+            },
+            {
+                "name": "PER_DISPLAY_BRIGHTNESS",
+                "value": 289475076
+            },
+            {
+                "name": "HW_KEY_INPUT",
+                "value": 289475088
+            },
+            {
+                "name": "HW_KEY_INPUT_V2",
+                "value": 367004177
+            },
+            {
+                "name": "HW_MOTION_INPUT",
+                "value": 367004178
+            },
+            {
+                "name": "HW_ROTARY_INPUT",
+                "value": 289475104,
+                "data_enums": [
+                    "RotaryInputType"
+                ],
+                "data_enum": "RotaryInputType"
+            },
+            {
+                "name": "HW_CUSTOM_INPUT",
+                "value": 289475120,
+                "data_enums": [
+                    "CustomInputType"
+                ],
+                "data_enum": "CustomInputType"
+            },
+            {
+                "name": "Door position",
+                "value": 373295872
+            },
+            {
+                "name": "Door move",
+                "value": 373295873
+            },
+            {
+                "name": "Door lock",
+                "value": 371198722
+            },
+            {
+                "name": "DOOR_CHILD_LOCK_ENABLED",
+                "value": 371198723
+            },
+            {
+                "name": "Mirror Z Position",
+                "value": 339741504
+            },
+            {
+                "name": "Mirror Z Move",
+                "value": 339741505
+            },
+            {
+                "name": "Mirror Y Position",
+                "value": 339741506
+            },
+            {
+                "name": "Mirror Y Move",
+                "value": 339741507
+            },
+            {
+                "name": "Mirror Lock",
+                "value": 287312708
+            },
+            {
+                "name": "Mirror Fold",
+                "value": 287312709
+            },
+            {
+                "name": "MIRROR_AUTO_FOLD_ENABLED",
+                "value": 337644358
+            },
+            {
+                "name": "MIRROR_AUTO_TILT_ENABLED",
+                "value": 337644359
+            },
+            {
+                "name": "Seat memory select",
+                "value": 356518784
+            },
+            {
+                "name": "Seat memory set",
+                "value": 356518785
+            },
+            {
+                "name": "Seatbelt buckled",
+                "value": 354421634
+            },
+            {
+                "name": "Seatbelt height position",
+                "value": 356518787
+            },
+            {
+                "name": "Seatbelt height move",
+                "value": 356518788
+            },
+            {
+                "name": "Seat fore\/aft position",
+                "value": 356518789
+            },
+            {
+                "name": "Seat fore\/aft move",
+                "value": 356518790
+            },
+            {
+                "name": "Seat backrest angle 1 position",
+                "value": 356518791
+            },
+            {
+                "name": "Seat backrest angle 1 move",
+                "value": 356518792
+            },
+            {
+                "name": "Seat backrest angle 2 position",
+                "value": 356518793
+            },
+            {
+                "name": "Seat backrest angle 2 move",
+                "value": 356518794
+            },
+            {
+                "name": "Seat height position",
+                "value": 356518795
+            },
+            {
+                "name": "Seat height move",
+                "value": 356518796
+            },
+            {
+                "name": "Seat depth position",
+                "value": 356518797
+            },
+            {
+                "name": "Seat depth move",
+                "value": 356518798
+            },
+            {
+                "name": "Seat tilt position",
+                "value": 356518799
+            },
+            {
+                "name": "Seat tilt move",
+                "value": 356518800
+            },
+            {
+                "name": "Lumber fore\/aft position",
+                "value": 356518801
+            },
+            {
+                "name": "Lumbar fore\/aft move",
+                "value": 356518802
+            },
+            {
+                "name": "Lumbar side support position",
+                "value": 356518803
+            },
+            {
+                "name": "Lumbar side support move",
+                "value": 356518804
+            },
+            {
+                "name": "SEAT_HEADREST_HEIGHT_POS",
+                "value": 289409941
+            },
+            {
+                "name": "Headrest height position",
+                "value": 356518820
+            },
+            {
+                "name": "Headrest height move",
+                "value": 356518806
+            },
+            {
+                "name": "Headrest angle position",
+                "value": 356518807
+            },
+            {
+                "name": "Headrest angle move",
+                "value": 356518808
+            },
+            {
+                "name": "Headrest fore\/aft position",
+                "value": 356518809
+            },
+            {
+                "name": "Headrest fore\/aft move",
+                "value": 356518810
+            },
+            {
+                "name": "SEAT_FOOTWELL_LIGHTS_STATE",
+                "value": 356518811,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "SEAT_FOOTWELL_LIGHTS_SWITCH",
+                "value": 356518812,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "SEAT_EASY_ACCESS_ENABLED",
+                "value": 354421661
+            },
+            {
+                "name": "SEAT_AIRBAG_ENABLED",
+                "value": 354421662
+            },
+            {
+                "name": "SEAT_CUSHION_SIDE_SUPPORT_POS",
+                "value": 356518815
+            },
+            {
+                "name": "SEAT_CUSHION_SIDE_SUPPORT_MOVE",
+                "value": 356518816
+            },
+            {
+                "name": "SEAT_LUMBAR_VERTICAL_POS",
+                "value": 356518817
+            },
+            {
+                "name": "SEAT_LUMBAR_VERTICAL_MOVE",
+                "value": 356518818
+            },
+            {
+                "name": "SEAT_WALK_IN_POS",
+                "value": 356518819
+            },
+            {
+                "name": "Seat Occupancy",
+                "value": 356518832,
+                "data_enums": [
+                    "VehicleSeatOccupancyState"
+                ],
+                "data_enum": "VehicleSeatOccupancyState"
+            },
+            {
+                "name": "Window Position",
+                "value": 322964416
+            },
+            {
+                "name": "Window Move",
+                "value": 322964417
+            },
+            {
+                "name": "Window Lock",
+                "value": 320867268
+            },
+            {
+                "name": "WINDSHIELD_WIPERS_PERIOD",
+                "value": 322964421
+            },
+            {
+                "name": "Windshield wipers state.",
+                "value": 322964422,
+                "data_enums": [
+                    "WindshieldWipersState"
+                ],
+                "data_enum": "WindshieldWipersState"
+            },
+            {
+                "name": "Windshield wipers switch.",
+                "value": 322964423,
+                "data_enums": [
+                    "WindshieldWipersSwitch"
+                ],
+                "data_enum": "WindshieldWipersSwitch"
+            },
+            {
+                "name": "Steering wheel depth position",
+                "value": 289410016
+            },
+            {
+                "name": "Steering wheel depth movement",
+                "value": 289410017
+            },
+            {
+                "name": "Steering wheel height position",
+                "value": 289410018
+            },
+            {
+                "name": "Steering wheel height movement",
+                "value": 289410019
+            },
+            {
+                "name": "STEERING_WHEEL_THEFT_LOCK_ENABLED",
+                "value": 287312868
+            },
+            {
+                "name": "Steering wheel locked",
+                "value": 287312869
+            },
+            {
+                "name": "STEERING_WHEEL_EASY_ACCESS_ENABLED",
+                "value": 287312870
+            },
+            {
+                "name": "GLOVE_BOX_DOOR_POS",
+                "value": 356518896
+            },
+            {
+                "name": "Lock or unlock the glove box.",
+                "value": 354421745
+            },
+            {
+                "name": "VEHICLE_MAP_SERVICE",
+                "value": 299895808
+            },
+            {
+                "name": "LOCATION_CHARACTERIZATION",
+                "value": 289410064
+            },
+            {
+                "name": "OBD2 Live Sensor Data",
+                "value": 299896064
+            },
+            {
+                "name": "OBD2 Freeze Frame Sensor Data",
+                "value": 299896065
+            },
+            {
+                "name": "OBD2 Freeze Frame Information",
+                "value": 299896066
+            },
+            {
+                "name": "OBD2 Freeze Frame Clear",
+                "value": 299896067
+            },
+            {
+                "name": "Headlights State",
+                "value": 289410560,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "High beam lights state",
+                "value": 289410561,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "Fog light state",
+                "value": 289410562,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "Hazard light status",
+                "value": 289410563,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "Headlight switch",
+                "value": 289410576,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "High beam light switch",
+                "value": 289410577,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "Fog light switch",
+                "value": 289410578,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "Hazard light switch",
+                "value": 289410579,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "Cabin lights",
+                "value": 289410817,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "Cabin lights switch",
+                "value": 289410818,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "Reading lights",
+                "value": 356519683,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "Reading lights switch",
+                "value": 356519684,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "Steering wheel lights state",
+                "value": 289410828,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "Steering wheel lights switch",
+                "value": 289410829,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "SUPPORT_CUSTOMIZE_VENDOR_PERMISSION",
+                "value": 287313669
+            },
+            {
+                "name": "DISABLED_OPTIONAL_FEATURES",
+                "value": 286265094
+            },
+            {
+                "name": "INITIAL_USER_INFO",
+                "value": 299896583
+            },
+            {
+                "name": "SWITCH_USER",
+                "value": 299896584
+            },
+            {
+                "name": "CREATE_USER",
+                "value": 299896585
+            },
+            {
+                "name": "REMOVE_USER",
+                "value": 299896586
+            },
+            {
+                "name": "USER_IDENTIFICATION_ASSOCIATION",
+                "value": 299896587
+            },
+            {
+                "name": "Enable\/request an EVS service.",
+                "value": 289476368
+            },
+            {
+                "name": "POWER_POLICY_REQ",
+                "value": 286265121
+            },
+            {
+                "name": "POWER_POLICY_GROUP_REQ",
+                "value": 286265122
+            },
+            {
+                "name": "CURRENT_POWER_POLICY",
+                "value": 286265123
+            },
+            {
+                "name": "WATCHDOG_ALIVE",
+                "value": 290459441
+            },
+            {
+                "name": "WATCHDOG_TERMINATED_PROCESS",
+                "value": 299896626
+            },
+            {
+                "name": "VHAL_HEARTBEAT",
+                "value": 290459443
+            },
+            {
+                "name": "CLUSTER_SWITCH_UI",
+                "value": 289410868
+            },
+            {
+                "name": "CLUSTER_DISPLAY_STATE",
+                "value": 289476405
+            },
+            {
+                "name": "CLUSTER_REPORT_STATE",
+                "value": 299896630
+            },
+            {
+                "name": "CLUSTER_REQUEST_DISPLAY",
+                "value": 289410871
+            },
+            {
+                "name": "CLUSTER_NAVIGATION_STATE",
+                "value": 292556600
+            },
+            {
+                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_TYPE",
+                "value": 289410873,
+                "data_enums": [
+                    "ElectronicTollCollectionCardType"
+                ],
+                "data_enum": "ElectronicTollCollectionCardType"
+            },
+            {
+                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_STATUS",
+                "value": 289410874,
+                "data_enums": [
+                    "ElectronicTollCollectionCardStatus"
+                ],
+                "data_enum": "ElectronicTollCollectionCardStatus"
+            },
+            {
+                "name": "Front fog lights state",
+                "value": 289410875,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "Front fog lights switch",
+                "value": 289410876,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "Rear fog lights state",
+                "value": 289410877,
+                "data_enums": [
+                    "VehicleLightState"
+                ],
+                "data_enum": "VehicleLightState"
+            },
+            {
+                "name": "Rear fog lights switch",
+                "value": 289410878,
+                "data_enums": [
+                    "VehicleLightSwitch"
+                ],
+                "data_enum": "VehicleLightSwitch"
+            },
+            {
+                "name": "EV_CHARGE_CURRENT_DRAW_LIMIT",
+                "value": 291508031
+            },
+            {
+                "name": "EV_CHARGE_PERCENT_LIMIT",
+                "value": 291508032
+            },
+            {
+                "name": "Charging state of the car",
+                "value": 289410881,
+                "data_enums": [
+                    "EvChargeState"
+                ],
+                "data_enum": "EvChargeState"
+            },
+            {
+                "name": "EV_CHARGE_SWITCH",
+                "value": 287313730
+            },
+            {
+                "name": "EV_CHARGE_TIME_REMAINING",
+                "value": 289410883
+            },
+            {
+                "name": "EV_REGENERATIVE_BRAKING_STATE",
+                "value": 289410884,
+                "data_enums": [
+                    "EvRegenerativeBrakingState"
+                ],
+                "data_enum": "EvRegenerativeBrakingState"
+            },
+            {
+                "name": "TRAILER_PRESENT",
+                "value": 289410885,
+                "data_enums": [
+                    "TrailerState"
+                ],
+                "data_enum": "TrailerState"
+            },
+            {
+                "name": "Vehicle’s curb weight",
+                "value": 289410886
+            },
+            {
+                "name": "GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
+                "value": 289410887,
+                "data_enums": [
+                    "GsrComplianceRequirementType"
+                ],
+                "data_enum": "GsrComplianceRequirementType"
+            },
+            {
+                "name": "SUPPORTED_PROPERTY_IDS",
+                "value": 289476424
+            },
+            {
+                "name": "SHUTDOWN_REQUEST",
+                "value": 289410889,
+                "data_enums": [
+                    "VehicleApPowerStateShutdownParam"
+                ],
+                "data_enum": "VehicleApPowerStateShutdownParam"
+            },
+            {
+                "name": "VEHICLE_IN_USE",
+                "value": 287313738
+            },
+            {
+                "name": "AUTOMATIC_EMERGENCY_BRAKING_ENABLED",
+                "value": 287313920
+            },
+            {
+                "name": "AUTOMATIC_EMERGENCY_BRAKING_STATE",
+                "value": 289411073,
+                "data_enums": [
+                    "AutomaticEmergencyBrakingState",
+                    "ErrorState"
+                ],
+                "data_enum": "AutomaticEmergencyBrakingState"
+            },
+            {
+                "name": "FORWARD_COLLISION_WARNING_ENABLED",
+                "value": 287313922
+            },
+            {
+                "name": "FORWARD_COLLISION_WARNING_STATE",
+                "value": 289411075,
+                "data_enums": [
+                    "ForwardCollisionWarningState",
+                    "ErrorState"
+                ],
+                "data_enum": "ForwardCollisionWarningState"
+            },
+            {
+                "name": "BLIND_SPOT_WARNING_ENABLED",
+                "value": 287313924
+            },
+            {
+                "name": "BLIND_SPOT_WARNING_STATE",
+                "value": 339742725,
+                "data_enums": [
+                    "BlindSpotWarningState",
+                    "ErrorState"
+                ],
+                "data_enum": "BlindSpotWarningState"
+            },
+            {
+                "name": "LANE_DEPARTURE_WARNING_ENABLED",
+                "value": 287313926
+            },
+            {
+                "name": "LANE_DEPARTURE_WARNING_STATE",
+                "value": 289411079,
+                "data_enums": [
+                    "LaneDepartureWarningState",
+                    "ErrorState"
+                ],
+                "data_enum": "LaneDepartureWarningState"
+            },
+            {
+                "name": "LANE_KEEP_ASSIST_ENABLED",
+                "value": 287313928
+            },
+            {
+                "name": "Lane Keep Assist (LKA) state.",
+                "value": 289411081,
+                "data_enums": [
+                    "LaneKeepAssistState",
+                    "ErrorState"
+                ],
+                "data_enum": "LaneKeepAssistState"
+            },
+            {
+                "name": "LANE_CENTERING_ASSIST_ENABLED",
+                "value": 287313930
+            },
+            {
+                "name": "LANE_CENTERING_ASSIST_COMMAND",
+                "value": 289411083,
+                "data_enums": [
+                    "LaneCenteringAssistCommand"
+                ],
+                "data_enum": "LaneCenteringAssistCommand"
+            },
+            {
+                "name": "LANE_CENTERING_ASSIST_STATE",
+                "value": 289411084,
+                "data_enums": [
+                    "LaneCenteringAssistState",
+                    "ErrorState"
+                ],
+                "data_enum": "LaneCenteringAssistState"
+            },
+            {
+                "name": "EMERGENCY_LANE_KEEP_ASSIST_ENABLED",
+                "value": 287313933
+            },
+            {
+                "name": "EMERGENCY_LANE_KEEP_ASSIST_STATE",
+                "value": 289411086,
+                "data_enums": [
+                    "EmergencyLaneKeepAssistState",
+                    "ErrorState"
+                ],
+                "data_enum": "EmergencyLaneKeepAssistState"
+            },
+            {
+                "name": "CRUISE_CONTROL_ENABLED",
+                "value": 287313935
+            },
+            {
+                "name": "CRUISE_CONTROL_TYPE",
+                "value": 289411088,
+                "data_enums": [
+                    "CruiseControlType",
+                    "ErrorState"
+                ],
+                "data_enum": "CruiseControlType"
+            },
+            {
+                "name": "CRUISE_CONTROL_STATE",
+                "value": 289411089,
+                "data_enums": [
+                    "CruiseControlState",
+                    "ErrorState"
+                ],
+                "data_enum": "CruiseControlState"
+            },
+            {
+                "name": "CRUISE_CONTROL_COMMAND",
+                "value": 289411090,
+                "data_enums": [
+                    "CruiseControlCommand"
+                ],
+                "data_enum": "CruiseControlCommand"
+            },
+            {
+                "name": "CRUISE_CONTROL_TARGET_SPEED",
+                "value": 291508243
+            },
+            {
+                "name": "ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP",
+                "value": 289411092
+            },
+            {
+                "name": "ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE",
+                "value": 289411093
+            },
+            {
+                "name": "HANDS_ON_DETECTION_ENABLED",
+                "value": 287313942
+            },
+            {
+                "name": "HANDS_ON_DETECTION_DRIVER_STATE",
+                "value": 289411095,
+                "data_enums": [
+                    "HandsOnDetectionDriverState",
+                    "ErrorState"
+                ],
+                "data_enum": "HandsOnDetectionDriverState"
+            },
+            {
+                "name": "HANDS_ON_DETECTION_WARNING",
+                "value": 289411096,
+                "data_enums": [
+                    "HandsOnDetectionWarning",
+                    "ErrorState"
+                ],
+                "data_enum": "HandsOnDetectionWarning"
+            }
+        ]
+    },
+    {
+        "name": "VehicleGear",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "GEAR_UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "GEAR_NEUTRAL",
+                "value": 1
+            },
+            {
+                "name": "GEAR_REVERSE",
+                "value": 2
+            },
+            {
+                "name": "GEAR_PARK",
+                "value": 4
+            },
+            {
+                "name": "GEAR_DRIVE",
+                "value": 8
+            },
+            {
+                "name": "GEAR_1",
+                "value": 16
+            },
+            {
+                "name": "GEAR_2",
+                "value": 32
+            },
+            {
+                "name": "GEAR_3",
+                "value": 64
+            },
+            {
+                "name": "GEAR_4",
+                "value": 128
+            },
+            {
+                "name": "GEAR_5",
+                "value": 256
+            },
+            {
+                "name": "GEAR_6",
+                "value": 512
+            },
+            {
+                "name": "GEAR_7",
+                "value": 1024
+            },
+            {
+                "name": "GEAR_8",
+                "value": 2048
+            },
+            {
+                "name": "GEAR_9",
+                "value": 4096
+            }
+        ]
+    },
+    {
+        "name": "LaneDepartureWarningState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "NO_WARNING",
+                "value": 1
+            },
+            {
+                "name": "WARNING_LEFT",
+                "value": 2
+            },
+            {
+                "name": "WARNING_RIGHT",
+                "value": 3
+            }
+        ]
+    },
+    {
+        "name": "HandsOnDetectionWarning",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "NO_WARNING",
+                "value": 1
+            },
+            {
+                "name": "WARNING",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "ElectronicTollCollectionCardType",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "JP_ELECTRONIC_TOLL_COLLECTION_CARD",
+                "value": 1
+            },
+            {
+                "name": "JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "VehicleApPowerStateShutdownParam",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "SHUTDOWN_IMMEDIATELY",
+                "value": 1
+            },
+            {
+                "name": "CAN_SLEEP",
+                "value": 2
+            },
+            {
+                "name": "SHUTDOWN_ONLY",
+                "value": 3
+            },
+            {
+                "name": "SLEEP_IMMEDIATELY",
+                "value": 4
+            },
+            {
+                "name": "HIBERNATE_IMMEDIATELY",
+                "value": 5
+            },
+            {
+                "name": "CAN_HIBERNATE",
+                "value": 6
+            }
+        ]
+    },
+    {
+        "name": "AutomaticEmergencyBrakingState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "ENABLED",
+                "value": 1
+            },
+            {
+                "name": "ACTIVATED",
+                "value": 2
+            },
+            {
+                "name": "USER_OVERRIDE",
+                "value": 3
+            }
+        ]
+    },
+    {
+        "name": "CruiseControlType",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "STANDARD",
+                "value": 1
+            },
+            {
+                "name": "ADAPTIVE",
+                "value": 2
+            },
+            {
+                "name": "PREDICTIVE",
+                "value": 3
+            }
+        ]
+    },
+    {
+        "name": "VehicleTurnSignal",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "NONE",
+                "value": 0
+            },
+            {
+                "name": "RIGHT",
+                "value": 1
+            },
+            {
+                "name": "LEFT",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "RotaryInputType",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION",
+                "value": 0
+            },
+            {
+                "name": "ROTARY_INPUT_TYPE_AUDIO_VOLUME",
+                "value": 1
+            }
+        ]
+    },
+    {
+        "name": "EvStoppingMode",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "CREEP",
+                "value": 1
+            },
+            {
+                "name": "ROLL",
+                "value": 2
+            },
+            {
+                "name": "HOLD",
+                "value": 3
+            }
+        ]
+    },
+    {
+        "name": "VehicleLightState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OFF",
+                "value": 0
+            },
+            {
+                "name": "ON",
+                "value": 1
+            },
+            {
+                "name": "DAYTIME_RUNNING",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "FuelType",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "FUEL_TYPE_UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "FUEL_TYPE_UNLEADED",
+                "value": 1
+            },
+            {
+                "name": "FUEL_TYPE_LEADED",
+                "value": 2
+            },
+            {
+                "name": "FUEL_TYPE_DIESEL_1",
+                "value": 3
+            },
+            {
+                "name": "FUEL_TYPE_DIESEL_2",
+                "value": 4
+            },
+            {
+                "name": "FUEL_TYPE_BIODIESEL",
+                "value": 5
+            },
+            {
+                "name": "FUEL_TYPE_E85",
+                "value": 6
+            },
+            {
+                "name": "FUEL_TYPE_LPG",
+                "value": 7
+            },
+            {
+                "name": "FUEL_TYPE_CNG",
+                "value": 8
+            },
+            {
+                "name": "FUEL_TYPE_LNG",
+                "value": 9
+            },
+            {
+                "name": "FUEL_TYPE_ELECTRIC",
+                "value": 10
+            },
+            {
+                "name": "FUEL_TYPE_HYDROGEN",
+                "value": 11
+            },
+            {
+                "name": "FUEL_TYPE_OTHER",
+                "value": 12
+            }
+        ]
+    },
+    {
+        "name": "LaneKeepAssistState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "ENABLED",
+                "value": 1
+            },
+            {
+                "name": "ACTIVATED_STEER_LEFT",
+                "value": 2
+            },
+            {
+                "name": "ACTIVATED_STEER_RIGHT",
+                "value": 3
+            },
+            {
+                "name": "USER_OVERRIDE",
+                "value": 4
+            }
+        ]
+    },
+    {
+        "name": "VehicleIgnitionState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNDEFINED",
+                "value": 0
+            },
+            {
+                "name": "LOCK",
+                "value": 1
+            },
+            {
+                "name": "OFF",
+                "value": 2
+            },
+            {
+                "name": "ACC",
+                "value": 3
+            },
+            {
+                "name": "ON",
+                "value": 4
+            },
+            {
+                "name": "START",
+                "value": 5
+            }
+        ]
+    },
+    {
+        "name": "EvConnectorType",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "IEC_TYPE_1_AC",
+                "value": 1
+            },
+            {
+                "name": "IEC_TYPE_2_AC",
+                "value": 2
+            },
+            {
+                "name": "IEC_TYPE_3_AC",
+                "value": 3
+            },
+            {
+                "name": "IEC_TYPE_4_DC",
+                "value": 4
+            },
+            {
+                "name": "IEC_TYPE_1_CCS_DC",
+                "value": 5
+            },
+            {
+                "name": "IEC_TYPE_2_CCS_DC",
+                "value": 6
+            },
+            {
+                "name": "TESLA_ROADSTER",
+                "value": 7
+            },
+            {
+                "name": "TESLA_HPWC",
+                "value": 8
+            },
+            {
+                "name": "TESLA_SUPERCHARGER",
+                "value": 9
+            },
+            {
+                "name": "GBT_AC",
+                "value": 10
+            },
+            {
+                "name": "GBT_DC",
+                "value": 11
+            },
+            {
+                "name": "OTHER",
+                "value": 101
+            }
+        ]
+    },
+    {
+        "name": "TrailerState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "NOT_PRESENT",
+                "value": 1
+            },
+            {
+                "name": "PRESENT",
+                "value": 2
+            },
+            {
+                "name": "ERROR",
+                "value": 3
+            }
+        ]
+    },
+    {
+        "name": "CustomInputType",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "CUSTOM_EVENT_F1",
+                "value": 1001
+            },
+            {
+                "name": "CUSTOM_EVENT_F2",
+                "value": 1002
+            },
+            {
+                "name": "CUSTOM_EVENT_F3",
+                "value": 1003
+            },
+            {
+                "name": "CUSTOM_EVENT_F4",
+                "value": 1004
+            },
+            {
+                "name": "CUSTOM_EVENT_F5",
+                "value": 1005
+            },
+            {
+                "name": "CUSTOM_EVENT_F6",
+                "value": 1006
+            },
+            {
+                "name": "CUSTOM_EVENT_F7",
+                "value": 1007
+            },
+            {
+                "name": "CUSTOM_EVENT_F8",
+                "value": 1008
+            },
+            {
+                "name": "CUSTOM_EVENT_F9",
+                "value": 1009
+            },
+            {
+                "name": "CUSTOM_EVENT_F10",
+                "value": 1010
+            }
+        ]
+    },
+    {
+        "name": "ElectronicTollCollectionCardStatus",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_VALID",
+                "value": 1
+            },
+            {
+                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_INVALID",
+                "value": 2
+            },
+            {
+                "name": "ELECTRONIC_TOLL_COLLECTION_CARD_NOT_INSERTED",
+                "value": 3
+            }
+        ]
+    },
+    {
+        "name": "VehicleAreaSeat",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "ROW_1_LEFT",
+                "value": 1
+            },
+            {
+                "name": "ROW_1_CENTER",
+                "value": 2
+            },
+            {
+                "name": "ROW_1_RIGHT",
+                "value": 4
+            },
+            {
+                "name": "ROW_2_LEFT",
+                "value": 16
+            },
+            {
+                "name": "ROW_2_CENTER",
+                "value": 32
+            },
+            {
+                "name": "ROW_2_RIGHT",
+                "value": 64
+            },
+            {
+                "name": "ROW_3_LEFT",
+                "value": 256
+            },
+            {
+                "name": "ROW_3_CENTER",
+                "value": 512
+            },
+            {
+                "name": "ROW_3_RIGHT",
+                "value": 1024
+            }
+        ]
+    },
+    {
+        "name": "VehicleLightSwitch",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OFF",
+                "value": 0
+            },
+            {
+                "name": "ON",
+                "value": 1
+            },
+            {
+                "name": "DAYTIME_RUNNING",
+                "value": 2
+            },
+            {
+                "name": "AUTOMATIC",
+                "value": 256
+            }
+        ]
+    },
+    {
+        "name": "WindshieldWipersSwitch",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "OFF",
+                "value": 1
+            },
+            {
+                "name": "MIST",
+                "value": 2
+            },
+            {
+                "name": "INTERMITTENT_LEVEL_1",
+                "value": 3
+            },
+            {
+                "name": "INTERMITTENT_LEVEL_2",
+                "value": 4
+            },
+            {
+                "name": "INTERMITTENT_LEVEL_3",
+                "value": 5
+            },
+            {
+                "name": "INTERMITTENT_LEVEL_4",
+                "value": 6
+            },
+            {
+                "name": "INTERMITTENT_LEVEL_5",
+                "value": 7
+            },
+            {
+                "name": "CONTINUOUS_LEVEL_1",
+                "value": 8
+            },
+            {
+                "name": "CONTINUOUS_LEVEL_2",
+                "value": 9
+            },
+            {
+                "name": "CONTINUOUS_LEVEL_3",
+                "value": 10
+            },
+            {
+                "name": "CONTINUOUS_LEVEL_4",
+                "value": 11
+            },
+            {
+                "name": "CONTINUOUS_LEVEL_5",
+                "value": 12
+            },
+            {
+                "name": "AUTO",
+                "value": 13
+            },
+            {
+                "name": "SERVICE",
+                "value": 14
+            }
+        ]
+    },
+    {
+        "name": "LaneCenteringAssistCommand",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "ACTIVATE",
+                "value": 1
+            },
+            {
+                "name": "DEACTIVATE",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "HandsOnDetectionDriverState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "HANDS_ON",
+                "value": 1
+            },
+            {
+                "name": "HANDS_OFF",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "VehicleSeatOccupancyState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "VACANT",
+                "value": 1
+            },
+            {
+                "name": "OCCUPIED",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "ErrorState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER_ERROR_STATE",
+                "value": -1
+            },
+            {
+                "name": "NOT_AVAILABLE_DISABLED",
+                "value": -2
+            },
+            {
+                "name": "NOT_AVAILABLE_SPEED_LOW",
+                "value": -3
+            },
+            {
+                "name": "NOT_AVAILABLE_SPEED_HIGH",
+                "value": -4
+            },
+            {
+                "name": "NOT_AVAILABLE_POOR_VISIBILITY",
+                "value": -5
+            },
+            {
+                "name": "NOT_AVAILABLE_SAFETY",
+                "value": -6
+            }
+        ]
+    },
+    {
+        "name": "BlindSpotWarningState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "NO_WARNING",
+                "value": 1
+            },
+            {
+                "name": "WARNING",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "EmergencyLaneKeepAssistState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "ENABLED",
+                "value": 1
+            },
+            {
+                "name": "WARNING_LEFT",
+                "value": 2
+            },
+            {
+                "name": "WARNING_RIGHT",
+                "value": 3
+            },
+            {
+                "name": "ACTIVATED_STEER_LEFT",
+                "value": 4
+            },
+            {
+                "name": "ACTIVATED_STEER_RIGHT",
+                "value": 5
+            },
+            {
+                "name": "USER_OVERRIDE",
+                "value": 6
+            }
+        ]
+    },
+    {
+        "name": "WindshieldWipersState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "OFF",
+                "value": 1
+            },
+            {
+                "name": "ON",
+                "value": 2
+            },
+            {
+                "name": "SERVICE",
+                "value": 3
+            }
+        ]
+    },
+    {
+        "name": "VehicleOilLevel",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "CRITICALLY_LOW",
+                "value": 0
+            },
+            {
+                "name": "LOW",
+                "value": 1
+            },
+            {
+                "name": "NORMAL",
+                "value": 2
+            },
+            {
+                "name": "HIGH",
+                "value": 3
+            },
+            {
+                "name": "ERROR",
+                "value": 4
+            }
+        ]
+    },
+    {
+        "name": "ForwardCollisionWarningState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "NO_WARNING",
+                "value": 1
+            },
+            {
+                "name": "WARNING",
+                "value": 2
+            }
+        ]
+    },
+    {
+        "name": "VehicleUnit",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "SHOULD_NOT_USE",
+                "value": 0
+            },
+            {
+                "name": "METER_PER_SEC",
+                "value": 1
+            },
+            {
+                "name": "RPM",
+                "value": 2
+            },
+            {
+                "name": "HERTZ",
+                "value": 3
+            },
+            {
+                "name": "PERCENTILE",
+                "value": 16
+            },
+            {
+                "name": "MILLIMETER",
+                "value": 32
+            },
+            {
+                "name": "METER",
+                "value": 33
+            },
+            {
+                "name": "KILOMETER",
+                "value": 35
+            },
+            {
+                "name": "MILE",
+                "value": 36
+            },
+            {
+                "name": "CELSIUS",
+                "value": 48
+            },
+            {
+                "name": "FAHRENHEIT",
+                "value": 49
+            },
+            {
+                "name": "KELVIN",
+                "value": 50
+            },
+            {
+                "name": "MILLILITER",
+                "value": 64
+            },
+            {
+                "name": "LITER",
+                "value": 65
+            },
+            {
+                "name": "GALLON",
+                "value": 66
+            },
+            {
+                "name": "US_GALLON",
+                "value": 66
+            },
+            {
+                "name": "IMPERIAL_GALLON",
+                "value": 67
+            },
+            {
+                "name": "NANO_SECS",
+                "value": 80
+            },
+            {
+                "name": "MILLI_SECS",
+                "value": 81
+            },
+            {
+                "name": "SECS",
+                "value": 83
+            },
+            {
+                "name": "YEAR",
+                "value": 89
+            },
+            {
+                "name": "WATT_HOUR",
+                "value": 96
+            },
+            {
+                "name": "MILLIAMPERE",
+                "value": 97
+            },
+            {
+                "name": "MILLIVOLT",
+                "value": 98
+            },
+            {
+                "name": "MILLIWATTS",
+                "value": 99
+            },
+            {
+                "name": "AMPERE_HOURS",
+                "value": 100
+            },
+            {
+                "name": "KILOWATT_HOUR",
+                "value": 101
+            },
+            {
+                "name": "AMPERE",
+                "value": 102
+            },
+            {
+                "name": "KILOPASCAL",
+                "value": 112
+            },
+            {
+                "name": "PSI",
+                "value": 113
+            },
+            {
+                "name": "BAR",
+                "value": 114
+            },
+            {
+                "name": "DEGREES",
+                "value": 128
+            },
+            {
+                "name": "MILES_PER_HOUR",
+                "value": 144
+            },
+            {
+                "name": "KILOMETERS_PER_HOUR",
+                "value": 145
+            }
+        ]
+    },
+    {
+        "name": "VehicleHvacFanDirection",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "FACE",
+                "value": 1
+            },
+            {
+                "name": "FLOOR",
+                "value": 2
+            },
+            {
+                "name": "FACE_AND_FLOOR",
+                "value": 3
+            },
+            {
+                "name": "DEFROST",
+                "value": 4
+            },
+            {
+                "name": "DEFROST_AND_FLOOR",
+                "value": 6
+            }
+        ]
+    },
+    {
+        "name": "EvChargeState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "CHARGING",
+                "value": 1
+            },
+            {
+                "name": "FULLY_CHARGED",
+                "value": 2
+            },
+            {
+                "name": "NOT_CHARGING",
+                "value": 3
+            },
+            {
+                "name": "ERROR",
+                "value": 4
+            }
+        ]
+    },
+    {
+        "name": "GsrComplianceRequirementType",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "GSR_COMPLIANCE_NOT_REQUIRED",
+                "value": 0
+            },
+            {
+                "name": "GSR_COMPLIANCE_REQUIRED_V1",
+                "value": 1
+            }
+        ]
+    },
+    {
+        "name": "CruiseControlCommand",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "ACTIVATE",
+                "value": 1
+            },
+            {
+                "name": "SUSPEND",
+                "value": 2
+            },
+            {
+                "name": "INCREASE_TARGET_SPEED",
+                "value": 3
+            },
+            {
+                "name": "DECREASE_TARGET_SPEED",
+                "value": 4
+            },
+            {
+                "name": "INCREASE_TARGET_TIME_GAP",
+                "value": 5
+            },
+            {
+                "name": "DECREASE_TARGET_TIME_GAP",
+                "value": 6
+            }
+        ]
+    },
+    {
+        "name": "EvRegenerativeBrakingState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "DISABLED",
+                "value": 1
+            },
+            {
+                "name": "PARTIALLY_ENABLED",
+                "value": 2
+            },
+            {
+                "name": "FULLY_ENABLED",
+                "value": 3
+            }
+        ]
+    },
+    {
+        "name": "PortLocationType",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "UNKNOWN",
+                "value": 0
+            },
+            {
+                "name": "FRONT_LEFT",
+                "value": 1
+            },
+            {
+                "name": "FRONT_RIGHT",
+                "value": 2
+            },
+            {
+                "name": "REAR_RIGHT",
+                "value": 3
+            },
+            {
+                "name": "REAR_LEFT",
+                "value": 4
+            },
+            {
+                "name": "FRONT",
+                "value": 5
+            },
+            {
+                "name": "REAR",
+                "value": 6
+            }
+        ]
+    },
+    {
+        "name": "LaneCenteringAssistState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "ENABLED",
+                "value": 1
+            },
+            {
+                "name": "ACTIVATION_REQUESTED",
+                "value": 2
+            },
+            {
+                "name": "ACTIVATED",
+                "value": 3
+            },
+            {
+                "name": "USER_OVERRIDE",
+                "value": 4
+            },
+            {
+                "name": "FORCED_DEACTIVATION_WARNING",
+                "value": 5
+            }
+        ]
+    },
+    {
+        "name": "CruiseControlState",
+        "package": "android.hardware.automotive.vehicle",
+        "values": [
+            {
+                "name": "OTHER",
+                "value": 0
+            },
+            {
+                "name": "ENABLED",
+                "value": 1
+            },
+            {
+                "name": "ACTIVATED",
+                "value": 2
+            },
+            {
+                "name": "USER_OVERRIDE",
+                "value": 3
+            },
+            {
+                "name": "SUSPENDED",
+                "value": 4
+            },
+            {
+                "name": "FORCED_DEACTIVATION_WARNING",
+                "value": 5
+            }
+        ]
+    }
 ]
\ No newline at end of file
diff --git a/automotive/vehicle/aidl/emu_metadata/generate_emulator_metadata.py b/automotive/vehicle/aidl/emu_metadata/generate_emulator_metadata.py
deleted file mode 100755
index 5706571..0000000
--- a/automotive/vehicle/aidl/emu_metadata/generate_emulator_metadata.py
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/python3
-
-#
-# Script for generation of VHAL properties metadata .json from AIDL interface
-#
-# This metadata is used to display human property names, names of enum
-# data types for their values, change and access modes and other information,
-# available from AIDL block comments, but not at runtime.
-#
-# Usage example:
-#  ./emu_metadata/generate_emulator_metadata.py android/hardware/automotive/vehicle $OUT/android.hardware.automotive.vehicle-types-meta.json
-#  (Note, that the resulting file has to match a '*types-meta.json' pattern to be parsed by the emulator).
-#
-
-import json
-import os
-import re
-import sys
-
-from pathlib import Path
-
-RE_PACKAGE = re.compile(r"\npackage\s([\.a-z0-9]*);")
-RE_IMPORT = re.compile(r"\nimport\s([\.a-zA-Z0-9]*);")
-RE_ENUM = re.compile(r"\s*enum\s+(\w*) {\n(.*)}", re.MULTILINE | re.DOTALL)
-RE_COMMENT = re.compile(r"(?:(?:\/\*\*)((?:.|\n)*?)(?:\*\/))?(?:\n|^)\s*(\w*)(?:\s+=\s*)?((?:[\.\-a-zA-Z0-9]|\s|\+|)*),",
-                        re.DOTALL)
-RE_BLOCK_COMMENT_TITLE = re.compile("^(?:\s|\*)*((?:\w|\s|\.)*)\n(?:\s|\*)*(?:\n|$)")
-RE_BLOCK_COMMENT_ANNOTATION = re.compile("^(?:\s|\*)*@(\w*)\s+((?:[\w:\.])*)", re.MULTILINE)
-RE_HEX_NUMBER = re.compile("([\.\-0-9A-Za-z]+)")
-
-
-class JEnum:
-    def __init__(self, package, name):
-        self.package = package
-        self.name = name
-        self.values = []
-
-class Enum:
-    def __init__(self, package, name, text, imports):
-        self.text = text
-        self.parsed = False
-        self.imports = imports
-        self.jenum = JEnum(package, name)
-
-    def parse(self, enums):
-        if self.parsed:
-            return
-        for dep in self.imports:
-            enums[dep].parse(enums)
-        print("Parsing " + self.jenum.name)
-        matches = RE_COMMENT.findall(self.text)
-        defaultValue = 0
-        for match in matches:
-            value = dict()
-            value['name'] = match[1]
-            value['value'] = self.calculateValue(match[2], defaultValue, enums)
-            defaultValue = value['value'] + 1
-            if self.jenum.name == "VehicleProperty":
-                block_comment = match[0]
-                self.parseBlockComment(value, block_comment)
-            self.jenum.values.append(value)
-        self.parsed = True
-        self.text = None
-
-    def get_value(self, value_name):
-        for value in self.jenum.values:
-            if value['name'] == value_name:
-                return value['value']
-        raise Exception("Cannot decode value: " + self.jenum.package + " : " + value_name)
-
-    def calculateValue(self, expression, default_value, enums):
-        numbers = RE_HEX_NUMBER.findall(expression)
-        if len(numbers) == 0:
-            return default_value
-        result = 0
-        base = 10
-        if numbers[0].lower().startswith("0x"):
-            base = 16
-        for number in numbers:
-            if '.' in number:
-                package, val_name = number.split('.')
-                for dep in self.imports:
-                    if package in dep:
-                        result += enums[dep].get_value(val_name)
-            else:
-                result += int(number, base)
-        return result
-
-    def parseBlockComment(self, value, blockComment):
-        titles = RE_BLOCK_COMMENT_TITLE.findall(blockComment)
-        for title in titles:
-            value['name'] = title
-            break
-        annots_res = RE_BLOCK_COMMENT_ANNOTATION.findall(blockComment)
-        for annot in annots_res:
-            value[annot[0]] = annot[1].replace(".", ":")
-
-class Converter:
-    # Only addition is supported for now, but that covers all existing properties except
-    # OBD diagnostics, which use bitwise shifts
-    def convert(self, input):
-        text = Path(input).read_text()
-        matches = RE_ENUM.findall(text)
-        package = RE_PACKAGE.findall(text)[0]
-        imports = RE_IMPORT.findall(text)
-        enums = []
-        for match in matches:
-            enum = Enum(package, match[0], match[1], imports)
-            enums.append(enum)
-        return enums
-
-
-def main():
-    if (len(sys.argv) != 3):
-        print("Usage: ", sys.argv[0], " INPUT_PATH OUTPUT")
-        sys.exit(1)
-    aidl_path = sys.argv[1]
-    out_path = sys.argv[2]
-    enums_dict = dict()
-    for file in os.listdir(aidl_path):
-        enums = Converter().convert(os.path.join(aidl_path, file))
-        for enum in enums:
-            enums_dict[enum.jenum.package + "." + enum.jenum.name] = enum
-
-    result = []
-    for enum_name, enum in enums_dict.items():
-        enum.parse(enums_dict)
-        result.append(enum.jenum.__dict__)
-
-    json_result = json.dumps(result, default=None, indent=2)
-    with open(out_path, 'w') as f:
-        f.write(json_result)
-
-
-if __name__ == "__main__":
-    main()
diff --git a/automotive/vehicle/aidl/impl/vhal/Android.bp b/automotive/vehicle/aidl/impl/vhal/Android.bp
index 4feea79..b88c3fd 100644
--- a/automotive/vehicle/aidl/impl/vhal/Android.bp
+++ b/automotive/vehicle/aidl/impl/vhal/Android.bp
@@ -55,6 +55,10 @@
         "src/ConnectedClient.cpp",
         "src/DefaultVehicleHal.cpp",
         "src/SubscriptionManager.cpp",
+        // A target to check whether the file
+        // android.hardware.automotive.vehicle-types-meta.json needs update.
+        // The output is just an empty cpp file and not actually used.
+        ":check_generated_enum_metadata_json",
     ],
     static_libs: [
         "VehicleHalUtils",
diff --git a/automotive/vehicle/aidl_property/Android.bp b/automotive/vehicle/aidl_property/Android.bp
index 580be68..8e6a4b5 100644
--- a/automotive/vehicle/aidl_property/Android.bp
+++ b/automotive/vehicle/aidl_property/Android.bp
@@ -57,5 +57,11 @@
         },
 
     ],
+}
 
+filegroup {
+    name: "android.hardware.automotive.vehicle.property-files",
+    srcs: [
+        "android/hardware/automotive/vehicle/*.aidl",
+    ],
 }
diff --git a/automotive/vehicle/tools/generate_emu_metadata/Android.bp b/automotive/vehicle/tools/generate_emu_metadata/Android.bp
new file mode 100644
index 0000000..4cb6d3b
--- /dev/null
+++ b/automotive/vehicle/tools/generate_emu_metadata/Android.bp
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+java_binary_host {
+    name: "EnumMetadataGenerator",
+    srcs: ["src/**/*.java"],
+    manifest: "manifest.txt",
+    static_libs: [
+        "javaparser",
+        "javaparser-symbol-solver",
+        "json-prebuilt",
+        "androidx.annotation_annotation",
+    ],
+}
+
+// A rule to convert VHAL property AIDL files to java files.
+gensrcs {
+    name: "gen_vehicle_property_java_file",
+    srcs: [
+        ":android.hardware.automotive.vehicle.property-files",
+    ],
+    tools: ["aidl"],
+    cmd: "$(location aidl) --lang=java --structured --stability=vintf $(in) -I hardware/interfaces/automotive/vehicle/aidl_property --out $(genDir)/hardware/interfaces/automotive/vehicle/aidl_property",
+    output_extension: "java",
+}
+
+// A target to check whether android.hardware.automotive.vehicle-types-meta.json
+// needs to be updated. The output is just an empty cpp file to be included
+// in the higher-level build target.
+// It will generate generated.json at output directory based on VHAL property
+// java files and check it against
+// android.hardware.automotive.vehicle-types-meta.json. If not the same, the
+// build will fail.
+genrule {
+    name: "check_generated_enum_metadata_json",
+    tools: ["EnumMetadataGenerator"],
+    srcs: [
+        ":android.hardware.automotive.vehicle-types-meta",
+        ":gen_vehicle_property_java_file",
+    ],
+    cmd: "$(location EnumMetadataGenerator) --check_against $(location :android.hardware.automotive.vehicle-types-meta) --output_empty_file $(out) --output_json $(genDir)/generate_enum_metadata.json --input_files $(locations :gen_vehicle_property_java_file)",
+    out: ["generate_enum_metadata_checked.cpp"],
+}
diff --git a/automotive/vehicle/tools/generate_emu_metadata/manifest.txt b/automotive/vehicle/tools/generate_emu_metadata/manifest.txt
new file mode 100644
index 0000000..07696da
--- /dev/null
+++ b/automotive/vehicle/tools/generate_emu_metadata/manifest.txt
@@ -0,0 +1 @@
+Main-Class: com.android.car.tool.EmuMetadataGenerator
diff --git a/automotive/vehicle/tools/generate_emu_metadata/src/com/android/car/tool/EmuMetadataGenerator.java b/automotive/vehicle/tools/generate_emu_metadata/src/com/android/car/tool/EmuMetadataGenerator.java
new file mode 100644
index 0000000..8e12f67
--- /dev/null
+++ b/automotive/vehicle/tools/generate_emu_metadata/src/com/android/car/tool/EmuMetadataGenerator.java
@@ -0,0 +1,403 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.tool;
+
+import com.github.javaparser.StaticJavaParser;
+import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.body.AnnotationDeclaration;
+import com.github.javaparser.ast.body.FieldDeclaration;
+import com.github.javaparser.ast.body.VariableDeclarator;
+import com.github.javaparser.ast.comments.Comment;
+import com.github.javaparser.ast.expr.AnnotationExpr;
+import com.github.javaparser.ast.expr.ArrayInitializerExpr;
+import com.github.javaparser.ast.expr.Expression;
+import com.github.javaparser.ast.expr.NormalAnnotationExpr;
+import com.github.javaparser.ast.expr.SingleMemberAnnotationExpr;
+import com.github.javaparser.ast.expr.UnaryExpr;
+import com.github.javaparser.ast.type.ClassOrInterfaceType;
+import com.github.javaparser.javadoc.Javadoc;
+import com.github.javaparser.javadoc.JavadocBlockTag;
+import com.github.javaparser.javadoc.description.JavadocDescription;
+import com.github.javaparser.javadoc.description.JavadocDescriptionElement;
+import com.github.javaparser.javadoc.description.JavadocInlineTag;
+import com.github.javaparser.resolution.declarations.ResolvedFieldDeclaration;
+import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration;
+import com.github.javaparser.symbolsolver.JavaSymbolSolver;
+import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserFieldDeclaration;
+import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
+import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
+import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver;
+import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+public final class EmuMetadataGenerator {
+    private static final String DEFAULT_PACKAGE_NAME = "android.hardware.automotive.vehicle";
+    private static final String INPUT_DIR_OPTION = "--input_dir";
+    private static final String INPUT_FILES_OPTION = "--input_files";
+    private static final String PACKAGE_NAME_OPTION = "--package_name";
+    private static final String OUTPUT_JSON_OPTION = "--output_json";
+    private static final String OUTPUT_EMPTY_FILE_OPTION = "--output_empty_file";
+    private static final String CHECK_AGAINST_OPTION = "--check_against";
+    private static final String USAGE = "EnumMetadataGenerator " + INPUT_DIR_OPTION
+            + " [path_to_aidl_gen_dir] " + INPUT_FILES_OPTION + " [input_files] "
+            + PACKAGE_NAME_OPTION + " [package_name] " + OUTPUT_JSON_OPTION + " [output_json] "
+            + OUTPUT_EMPTY_FILE_OPTION + " [output_header_file] " + CHECK_AGAINST_OPTION
+            + " [json_file_to_check_against]\n"
+            + "Parses the VHAL property AIDL interface generated Java files to a json file to be"
+            + " used by emulator\n"
+            + "Options: \n" + INPUT_DIR_OPTION
+            + ": the path to a directory containing AIDL interface Java files, "
+            + "either this or input_files must be specified\n" + INPUT_FILES_OPTION
+            + ": one or more Java files, this is used to decide the input "
+            + "directory\n" + PACKAGE_NAME_OPTION
+            + ": the optional package name for the interface, by default is " + DEFAULT_PACKAGE_NAME
+            + "\n" + OUTPUT_JSON_OPTION + ": The output JSON file\n" + OUTPUT_EMPTY_FILE_OPTION
+            + ": Only used for check_mode, this file will be created if "
+            + "check  passed\n" + CHECK_AGAINST_OPTION
+            + ": An optional JSON file to check against. If specified, the "
+            + "generated output file will be checked against this file, if they are not the same, "
+            + "the script will fail, otherwise, the output_empty_file will be created\n"
+            + "For example: \n"
+            + "EnumMetadataGenerator --input_dir out/soong/.intermediates/hardware/"
+            + "interfaces/automotive/vehicle/aidl_property/android.hardware.automotive.vehicle."
+            + "property-V3-java-source/gen/ --package_name android.hardware.automotive.vehicle "
+            + "--output_json /tmp/android.hardware.automotive.vehicle-types-meta.json";
+    private static final String VEHICLE_PROPERTY_FILE = "VehicleProperty.java";
+    private static final String CHECK_FILE_PATH =
+            "${ANDROID_BUILD_TOP}/hardware/interfaces/automotive/vehicle/aidl/emu_metadata/"
+            + "android.hardware.automotive.vehicle-types-meta.json";
+
+    // Emulator can display at least this many characters before cutting characters.
+    private static final int MAX_PROPERTY_NAME_LENGTH = 30;
+
+    /**
+     * Parses the enum field declaration as an int value.
+     */
+    private static int parseIntEnumField(FieldDeclaration fieldDecl) {
+        VariableDeclarator valueDecl = fieldDecl.getVariables().get(0);
+        Expression expr = valueDecl.getInitializer().get();
+        if (expr.isIntegerLiteralExpr()) {
+            return expr.asIntegerLiteralExpr().asInt();
+        }
+        // For case like -123
+        if (expr.isUnaryExpr() && expr.asUnaryExpr().getOperator() == UnaryExpr.Operator.MINUS) {
+            return -expr.asUnaryExpr().getExpression().asIntegerLiteralExpr().asInt();
+        }
+        System.out.println("Unsupported expression: " + expr);
+        System.exit(1);
+        return 0;
+    }
+
+    private static boolean isPublicAndStatic(FieldDeclaration fieldDecl) {
+        return fieldDecl.isPublic() && fieldDecl.isStatic();
+    }
+
+    private static String getFieldName(FieldDeclaration fieldDecl) {
+        VariableDeclarator valueDecl = fieldDecl.getVariables().get(0);
+        return valueDecl.getName().asString();
+    }
+
+    private static class Enum {
+        Enum(String name, String packageName) {
+            this.name = name;
+            this.packageName = packageName;
+        }
+
+        public String name;
+        public String packageName;
+        public final List<ValueField> valueFields = new ArrayList<>();
+    }
+
+    private static class ValueField {
+        public String name;
+        public Integer value;
+        public final List<String> dataEnums = new ArrayList<>();
+
+        ValueField(String name, Integer value) {
+            this.name = name;
+            this.value = value;
+        }
+    }
+
+    private static Enum parseEnumInterface(
+            String inputDir, String dirName, String packageName, String enumName) throws Exception {
+        Enum enumIntf = new Enum(enumName, packageName);
+        CompilationUnit cu = StaticJavaParser.parse(new File(
+                inputDir + File.separator + dirName + File.separator + enumName + ".java"));
+        AnnotationDeclaration vehiclePropertyIdsClass =
+                cu.getAnnotationDeclarationByName(enumName).get();
+
+        List<FieldDeclaration> variables = vehiclePropertyIdsClass.findAll(FieldDeclaration.class);
+        for (int i = 0; i < variables.size(); i++) {
+            FieldDeclaration propertyDef = variables.get(i).asFieldDeclaration();
+            if (!isPublicAndStatic(propertyDef)) {
+                continue;
+            }
+            ValueField field =
+                    new ValueField(getFieldName(propertyDef), parseIntEnumField(propertyDef));
+            enumIntf.valueFields.add(field);
+        }
+        return enumIntf;
+    }
+
+    // A hacky way to make the key in-order in the JSON object.
+    private static final class OrderedJSONObject extends JSONObject {
+        OrderedJSONObject() {
+            try {
+                Field map = JSONObject.class.getDeclaredField("nameValuePairs");
+                map.setAccessible(true);
+                map.set(this, new LinkedHashMap<>());
+                map.setAccessible(false);
+            } catch (IllegalAccessException | NoSuchFieldException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    private static String readFileContent(String fileName) throws Exception {
+        StringBuffer contentBuffer = new StringBuffer();
+        int bufferSize = 1024;
+        try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
+            char buffer[] = new char[bufferSize];
+            while (true) {
+                int read = reader.read(buffer, 0, bufferSize);
+                if (read == -1) {
+                    break;
+                }
+                contentBuffer.append(buffer, 0, read);
+            }
+        }
+        return contentBuffer.toString();
+    }
+
+    private static final class Args {
+        public final String inputDir;
+        public final String pkgName;
+        public final String pkgDir;
+        public final String output;
+        public final String checkFile;
+        public final String outputEmptyFile;
+
+        public Args(String[] args) throws IllegalArgumentException {
+            Map<String, List<String>> valuesByKey = new LinkedHashMap<>();
+            String key = null;
+            for (int i = 0; i < args.length; i++) {
+                String arg = args[i];
+                if (arg.startsWith("--")) {
+                    key = arg;
+                    continue;
+                }
+                if (key == null) {
+                    throw new IllegalArgumentException("Missing key for value: " + arg);
+                }
+                if (valuesByKey.get(key) == null) {
+                    valuesByKey.put(key, new ArrayList<>());
+                }
+                valuesByKey.get(key).add(arg);
+            }
+            String pkgName;
+            List<String> values = valuesByKey.get(PACKAGE_NAME_OPTION);
+            if (values == null) {
+                pkgName = DEFAULT_PACKAGE_NAME;
+            } else {
+                pkgName = values.get(0);
+            }
+            String pkgDir = pkgName.replace(".", File.separator);
+            this.pkgName = pkgName;
+            this.pkgDir = pkgDir;
+            String inputDir;
+            values = valuesByKey.get(INPUT_DIR_OPTION);
+            if (values == null) {
+                List<String> inputFiles = valuesByKey.get(INPUT_FILES_OPTION);
+                if (inputFiles == null) {
+                    throw new IllegalArgumentException("Either " + INPUT_DIR_OPTION + " or "
+                            + INPUT_FILES_OPTION + " must be specified");
+                }
+                inputDir = new File(inputFiles.get(0)).getParent().replace(pkgDir, "");
+            } else {
+                inputDir = values.get(0);
+            }
+            this.inputDir = inputDir;
+            values = valuesByKey.get(OUTPUT_JSON_OPTION);
+            if (values == null) {
+                throw new IllegalArgumentException(OUTPUT_JSON_OPTION + " must be specified");
+            }
+            this.output = values.get(0);
+            values = valuesByKey.get(CHECK_AGAINST_OPTION);
+            if (values != null) {
+                this.checkFile = values.get(0);
+            } else {
+                this.checkFile = null;
+            }
+            values = valuesByKey.get(OUTPUT_EMPTY_FILE_OPTION);
+            if (values != null) {
+                this.outputEmptyFile = values.get(0);
+            } else {
+                this.outputEmptyFile = null;
+            }
+        }
+    }
+
+    /**
+     * Main function.
+     */
+    public static void main(final String[] args) throws Exception {
+        Args parsedArgs;
+        try {
+            parsedArgs = new Args(args);
+        } catch (IllegalArgumentException e) {
+            System.out.println("Invalid arguments: " + e.getMessage());
+            System.out.println(USAGE);
+            System.exit(1);
+            // Never reach here.
+            return;
+        }
+
+        TypeSolver typeSolver = new CombinedTypeSolver(
+                new ReflectionTypeSolver(), new JavaParserTypeSolver(parsedArgs.inputDir));
+        StaticJavaParser.getConfiguration().setSymbolResolver(new JavaSymbolSolver(typeSolver));
+
+        Enum vehicleProperty = new Enum("VehicleProperty", parsedArgs.pkgName);
+        CompilationUnit cu = StaticJavaParser.parse(new File(parsedArgs.inputDir + File.separator
+                + parsedArgs.pkgDir + File.separator + VEHICLE_PROPERTY_FILE));
+        AnnotationDeclaration vehiclePropertyIdsClass =
+                cu.getAnnotationDeclarationByName("VehicleProperty").get();
+
+        Set<String> dataEnumTypes = new HashSet<>();
+        List<FieldDeclaration> variables = vehiclePropertyIdsClass.findAll(FieldDeclaration.class);
+        for (int i = 0; i < variables.size(); i++) {
+            FieldDeclaration propertyDef = variables.get(i).asFieldDeclaration();
+            if (!isPublicAndStatic(propertyDef)) {
+                continue;
+            }
+            String propertyName = getFieldName(propertyDef);
+            if (propertyName.equals("INVALID")) {
+                continue;
+            }
+
+            Optional<Comment> maybeComment = propertyDef.getComment();
+            if (!maybeComment.isPresent()) {
+                System.out.println("missing comment for property: " + propertyName);
+                System.exit(1);
+            }
+            Javadoc doc = maybeComment.get().asJavadocComment().parse();
+
+            int propertyId = parseIntEnumField(propertyDef);
+            // We use the first paragraph as the property's name
+            String propertyDescription = doc.getDescription().toText().split("\n\n")[0];
+            String name = propertyDescription;
+            if (propertyDescription.indexOf("\n") != -1
+                    || propertyDescription.length() > MAX_PROPERTY_NAME_LENGTH) {
+                // The description is too long, we just use the property name.
+                name = propertyName;
+            }
+            ValueField field = new ValueField(name, propertyId);
+
+            List<JavadocBlockTag> blockTags = doc.getBlockTags();
+            List<Integer> dataEnums = new ArrayList<>();
+            for (int j = 0; j < blockTags.size(); j++) {
+                String commentTagName = blockTags.get(j).getTagName();
+                String commentTagContent = blockTags.get(j).getContent().toText();
+                if (!commentTagName.equals("data_enum")) {
+                    continue;
+                }
+                field.dataEnums.add(commentTagContent);
+                dataEnumTypes.add(commentTagContent);
+            }
+
+            vehicleProperty.valueFields.add(field);
+        }
+
+        List<Enum> enumTypes = new ArrayList<>();
+        enumTypes.add(vehicleProperty);
+
+        for (String dataEnumType : dataEnumTypes) {
+            Enum dataEnum = parseEnumInterface(
+                    parsedArgs.inputDir, parsedArgs.pkgDir, parsedArgs.pkgName, dataEnumType);
+            enumTypes.add(dataEnum);
+        }
+
+        // Output enumTypes as JSON to output.
+        JSONArray jsonEnums = new JSONArray();
+        for (int i = 0; i < enumTypes.size(); i++) {
+            Enum enumType = enumTypes.get(i);
+
+            JSONObject jsonEnum = new OrderedJSONObject();
+            jsonEnum.put("name", enumType.name);
+            jsonEnum.put("package", enumType.packageName);
+            JSONArray values = new JSONArray();
+            jsonEnum.put("values", values);
+
+            for (int j = 0; j < enumType.valueFields.size(); j++) {
+                ValueField valueField = enumType.valueFields.get(j);
+                JSONObject jsonValueField = new OrderedJSONObject();
+                jsonValueField.put("name", valueField.name);
+                jsonValueField.put("value", valueField.value);
+                if (!valueField.dataEnums.isEmpty()) {
+                    JSONArray jsonDataEnums = new JSONArray();
+                    for (String dataEnum : valueField.dataEnums) {
+                        jsonDataEnums.put(dataEnum);
+                    }
+                    jsonValueField.put("data_enums", jsonDataEnums);
+                    // To be backward compatible with older format where data_enum is a single
+                    // entry.
+                    jsonValueField.put("data_enum", valueField.dataEnums.get(0));
+                }
+                values.put(jsonValueField);
+            }
+
+            jsonEnums.put(jsonEnum);
+        }
+
+        try (FileOutputStream outputStream = new FileOutputStream(parsedArgs.output)) {
+            outputStream.write(jsonEnums.toString(4).getBytes());
+        }
+        System.out.println("Input at folder: " + parsedArgs.inputDir
+                + " successfully parsed. Output at: " + parsedArgs.output);
+
+        if (parsedArgs.checkFile != null) {
+            String checkFileContent = readFileContent(parsedArgs.checkFile);
+            String generatedFileContent = readFileContent(parsedArgs.output);
+            String generatedFilePath = new File(parsedArgs.output).getAbsolutePath();
+            if (!checkFileContent.equals(generatedFileContent)) {
+                System.out.println("The file: " + CHECK_FILE_PATH + " needs to be updated, run: "
+                        + "\n\ncp " + generatedFilePath + " " + CHECK_FILE_PATH + "\n");
+                System.exit(1);
+            }
+
+            if (parsedArgs.outputEmptyFile != null) {
+                try (FileOutputStream outputStream =
+                                new FileOutputStream(parsedArgs.outputEmptyFile)) {
+                    // Do nothing, just create the file.
+                }
+            }
+        }
+    }
+}
diff --git a/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp b/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
index 910ae7c..e40ac90 100644
--- a/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
+++ b/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
@@ -25,6 +25,7 @@
 #include <android-base/stringprintf.h>
 #include <android-base/thread_annotations.h>
 #include <android/binder_process.h>
+#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
 #include <gtest/gtest.h>
 #include <hidl/GtestPrinter.h>
 #include <hidl/ServiceManagement.h>
@@ -34,20 +35,22 @@
 
 #include <chrono>
 #include <mutex>
+#include <thread>
 #include <unordered_map>
 #include <unordered_set>
 #include <vector>
 
 using ::aidl::android::hardware::automotive::vehicle::IVehicle;
-using ::aidl::android::hardware::automotive::vehicle::StatusCode;
 using ::aidl::android::hardware::automotive::vehicle::SubscribeOptions;
 using ::aidl::android::hardware::automotive::vehicle::VehicleArea;
 using ::aidl::android::hardware::automotive::vehicle::VehicleProperty;
 using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyAccess;
 using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyChangeMode;
 using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyGroup;
+using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyStatus;
 using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyType;
 using ::android::getAidlHalInstanceNames;
+using ::android::uptimeMillis;
 using ::android::base::ScopedLockAssertion;
 using ::android::base::StringPrintf;
 using ::android::frameworks::automotive::vhal::ErrorCode;
@@ -56,11 +59,14 @@
 using ::android::frameworks::automotive::vhal::IHalPropValue;
 using ::android::frameworks::automotive::vhal::ISubscriptionCallback;
 using ::android::frameworks::automotive::vhal::IVhalClient;
+using ::android::frameworks::automotive::vhal::VhalClientResult;
 using ::android::hardware::getAllHalInstanceNames;
 using ::android::hardware::Sanitize;
 using ::android::hardware::automotive::vehicle::toInt;
 
 constexpr int32_t kInvalidProp = 0x31600207;
+// The timeout for retrying getting prop value after setting prop value.
+constexpr int64_t kRetryGetPropAfterSetPropTimeoutMillis = 10'000;
 
 struct ServiceDescriptor {
     std::string name;
@@ -117,6 +123,10 @@
 class VtsHalAutomotiveVehicleTargetTest : public testing::TestWithParam<ServiceDescriptor> {
   protected:
     bool checkIsSupported(int32_t propertyId);
+    VehiclePropertyStatus getStatus(const IHalPropValue& halPropValue);
+    bool isUnavailable(const VhalClientResult<std::unique_ptr<IHalPropValue>>& result);
+    bool isResultOkayWithValue(const VhalClientResult<std::unique_ptr<IHalPropValue>>& result,
+                               int32_t value);
 
   public:
     void verifyProperty(VehicleProperty propId, VehiclePropertyAccess access,
@@ -230,6 +240,41 @@
             "Expect failure to get property for invalid prop: %" PRId32, kInvalidProp);
 }
 
+VehiclePropertyStatus VtsHalAutomotiveVehicleTargetTest::getStatus(
+        const IHalPropValue& halPropValue) {
+    if (mVhalClient->isAidlVhal()) {
+        return reinterpret_cast<
+                       const aidl::android::hardware::automotive::vehicle::VehiclePropValue*>(
+                       halPropValue.toVehiclePropValue())
+                ->status;
+    }
+    return static_cast<VehiclePropertyStatus>(
+            reinterpret_cast<const android::hardware::automotive::vehicle::V2_0::VehiclePropValue*>(
+                    halPropValue.toVehiclePropValue())
+                    ->status);
+}
+
+bool VtsHalAutomotiveVehicleTargetTest::isResultOkayWithValue(
+        const VhalClientResult<std::unique_ptr<IHalPropValue>>& result, int32_t value) {
+    return result.ok() && result.value() != nullptr &&
+           getStatus(*(result.value())) == VehiclePropertyStatus::AVAILABLE &&
+           result.value()->getInt32Values().size() == 1 &&
+           result.value()->getInt32Values()[0] == value;
+}
+
+bool VtsHalAutomotiveVehicleTargetTest::isUnavailable(
+        const VhalClientResult<std::unique_ptr<IHalPropValue>>& result) {
+    if (!result.ok()) {
+        return result.error().code() == ErrorCode::NOT_AVAILABLE_FROM_VHAL;
+    }
+    if (result.value() != nullptr &&
+        getStatus(*(result.value())) == VehiclePropertyStatus::UNAVAILABLE) {
+        return true;
+    }
+
+    return false;
+}
+
 // Test set() on read_write properties.
 TEST_P(VtsHalAutomotiveVehicleTargetTest, setProp) {
     ALOGD("VtsHalAutomotiveVehicleTargetTest::setProp");
@@ -257,6 +302,14 @@
             auto propToGet = mVhalClient->createHalPropValue(propId);
             auto getValueResult = mVhalClient->getValueSync(*propToGet);
 
+            if (isUnavailable(getValueResult)) {
+                ALOGW("getProperty for %" PRId32
+                      " returns NOT_AVAILABLE, "
+                      "skip testing setProp",
+                      propId);
+                return;
+            }
+
             ASSERT_TRUE(getValueResult.ok())
                     << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s",
                                     propId, getValueResult.error().message().c_str());
@@ -269,17 +322,48 @@
                     "Expect exactly 1 int value for boolean property: %" PRId32 ", got %zu", propId,
                     intValueSize);
 
-            int setValue = value.getInt32Values()[0] == 1 ? 0 : 1;
+            int32_t setValue = value.getInt32Values()[0] == 1 ? 0 : 1;
             auto propToSet = mVhalClient->createHalPropValue(propId);
             propToSet->setInt32Values({setValue});
             auto setValueResult = mVhalClient->setValueSync(*propToSet);
 
+            if (!setValueResult.ok() &&
+                setValueResult.error().code() == ErrorCode::NOT_AVAILABLE_FROM_VHAL) {
+                ALOGW("setProperty for %" PRId32
+                      " returns NOT_AVAILABLE, "
+                      "skip verifying getProperty returns the same value",
+                      propId);
+                return;
+            }
+
             ASSERT_TRUE(setValueResult.ok())
                     << StringPrintf("Failed to set value for property: %" PRId32 ", error: %s",
                                     propId, setValueResult.error().message().c_str());
+            // Retry getting the value until we pass the timeout. getValue might not return
+            // the expected value immediately since setValue is async.
+            auto timeoutMillis = uptimeMillis() + kRetryGetPropAfterSetPropTimeoutMillis;
 
-            // check set success
-            getValueResult = mVhalClient->getValueSync(*propToGet);
+            while (true) {
+                getValueResult = mVhalClient->getValueSync(*propToGet);
+                if (isResultOkayWithValue(getValueResult, setValue)) {
+                    break;
+                }
+                if (uptimeMillis() >= timeoutMillis) {
+                    // Reach timeout, the following assert should fail.
+                    break;
+                }
+                // Sleep for 100ms between each getValueSync retry.
+                std::this_thread::sleep_for(std::chrono::milliseconds(100));
+            }
+
+            if (isUnavailable(getValueResult)) {
+                ALOGW("getProperty for %" PRId32
+                      " returns NOT_AVAILABLE, "
+                      "skip verifying the return value",
+                      propId);
+                return;
+            }
+
             ASSERT_TRUE(getValueResult.ok())
                     << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s",
                                     propId, getValueResult.error().message().c_str());
@@ -900,7 +984,8 @@
                 .isAidlService = true,
         });
     }
-    for (std::string name : getAllHalInstanceNames(IVehicle::descriptor)) {
+    for (std::string name : getAllHalInstanceNames(
+                 android::hardware::automotive::vehicle::V2_0::IVehicle::descriptor)) {
         descriptors.push_back({
                 .name = name,
                 .isAidlService = false,
diff --git a/bluetooth/audio/aidl/default/A2dpOffloadAudioProvider.cpp b/bluetooth/audio/aidl/default/A2dpOffloadAudioProvider.cpp
index c7761c5..1eb6a6d 100644
--- a/bluetooth/audio/aidl/default/A2dpOffloadAudioProvider.cpp
+++ b/bluetooth/audio/aidl/default/A2dpOffloadAudioProvider.cpp
@@ -120,6 +120,12 @@
 ndk::ScopedAStatus A2dpOffloadAudioProvider::parseA2dpConfiguration(
     const CodecId& codec_id, const std::vector<uint8_t>& configuration,
     CodecParameters* codec_parameters, A2dpStatus* _aidl_return) {
+  if (!kEnableA2dpCodecExtensibility) {
+    // parseA2dpConfiguration must not be implemented if A2dp codec
+    // extensibility is not supported.
+    return ndk::ScopedAStatus::fromStatus(STATUS_UNKNOWN_TRANSACTION);
+  }
+
   auto codec = codec_factory_.GetCodec(codec_id);
   if (!codec) {
     LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_)
@@ -136,6 +142,12 @@
     const std::vector<A2dpRemoteCapabilities>& remote_a2dp_capabilities,
     const A2dpConfigurationHint& hint,
     std::optional<audio::A2dpConfiguration>* _aidl_return) {
+  if (!kEnableA2dpCodecExtensibility) {
+    // getA2dpConfiguration must not be implemented if A2dp codec
+    // extensibility is not supported.
+    return ndk::ScopedAStatus::fromStatus(STATUS_UNKNOWN_TRANSACTION);
+  }
+
   *_aidl_return = std::nullopt;
   A2dpConfiguration avdtp_configuration;
 
diff --git a/bluetooth/audio/aidl/default/BluetoothAudioProvider.h b/bluetooth/audio/aidl/default/BluetoothAudioProvider.h
index 2c21440..866eaeb 100644
--- a/bluetooth/audio/aidl/default/BluetoothAudioProvider.h
+++ b/bluetooth/audio/aidl/default/BluetoothAudioProvider.h
@@ -35,6 +35,23 @@
 namespace bluetooth {
 namespace audio {
 
+/// Enable flag for the reference implementation for A2dp Codec
+/// Extensibility.
+///
+/// A2dp Codec extensibility cannot be enabled until the following
+/// requirements are fulfilled.
+///
+///  1. The Bluetooth controller must support the HCI Requirements
+///     v1.04 or later, and must support the vendor HCI command
+///     A2DP Offload Start (v2), A2DP Offload Stop (v2) as indicated
+///     by the field a2dp_offload_v2 of the vendor capabilities.
+///
+///  2. The implementation of the provider must be completed with
+///     DSP configuration for streaming.
+enum : bool {
+  kEnableA2dpCodecExtensibility = false,
+};
+
 class BluetoothAudioProvider : public BnBluetoothAudioProvider {
  public:
   BluetoothAudioProvider();
diff --git a/bluetooth/audio/aidl/default/BluetoothAudioProviderFactory.cpp b/bluetooth/audio/aidl/default/BluetoothAudioProviderFactory.cpp
index c7c6e6d..584640b 100644
--- a/bluetooth/audio/aidl/default/BluetoothAudioProviderFactory.cpp
+++ b/bluetooth/audio/aidl/default/BluetoothAudioProviderFactory.cpp
@@ -159,6 +159,12 @@
 
   if (session_type == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH ||
       session_type == SessionType::A2DP_HARDWARE_OFFLOAD_DECODING_DATAPATH) {
+    if (!kEnableA2dpCodecExtensibility) {
+      // Implementing getProviderInfo equates supporting
+      // A2dp codec extensibility.
+      return ndk::ScopedAStatus::fromStatus(STATUS_UNKNOWN_TRANSACTION);
+    }
+
     auto& provider_info = _aidl_return->emplace();
 
     provider_info.name = a2dp_offload_codec_factory_.name;
diff --git a/bluetooth/audio/flags/Android.bp b/bluetooth/audio/flags/Android.bp
index 0d18a4d..c3c8cf5 100644
--- a/bluetooth/audio/flags/Android.bp
+++ b/bluetooth/audio/flags/Android.bp
@@ -1,6 +1,7 @@
 aconfig_declarations {
     name: "btaudiohal_flags",
     package: "com.android.btaudio.hal.flags",
+    container: "system",
     srcs: ["btaudiohal.aconfig"],
 }
 
diff --git a/bluetooth/audio/flags/btaudiohal.aconfig b/bluetooth/audio/flags/btaudiohal.aconfig
index 763777e..4c1500a 100644
--- a/bluetooth/audio/flags/btaudiohal.aconfig
+++ b/bluetooth/audio/flags/btaudiohal.aconfig
@@ -1,4 +1,5 @@
 package: "com.android.btaudio.hal.flags"
+container: "system"
 
 flag {
     name: "dsa_lea"
diff --git a/bluetooth/finder/aidl/vts/VtsHalBluetoothFinderTargetTest.cpp b/bluetooth/finder/aidl/vts/VtsHalBluetoothFinderTargetTest.cpp
index be07a7d..fee9e242 100644
--- a/bluetooth/finder/aidl/vts/VtsHalBluetoothFinderTargetTest.cpp
+++ b/bluetooth/finder/aidl/vts/VtsHalBluetoothFinderTargetTest.cpp
@@ -18,6 +18,7 @@
 #include <aidl/Vintf.h>
 #include <aidl/android/hardware/bluetooth/finder/IBluetoothFinder.h>
 #include <android-base/logging.h>
+#include <android-base/properties.h>
 #include <android/binder_manager.h>
 #include <android/binder_process.h>
 #include <binder/IServiceManager.h>
@@ -71,6 +72,12 @@
   return bluetooth_finder->getPoweredOffFinderMode(status);
 }
 
+TEST_P(BluetoothFinderTest, PropertyIsSet) {
+  ASSERT_EQ(
+      android::base::GetProperty("ro.bluetooth.finder.supported", "false"),
+      "true");
+}
+
 TEST_P(BluetoothFinderTest, SendEidsSingle) {
   ScopedAStatus status = sendEids(1);
   ASSERT_TRUE(status.isOk());
diff --git a/bluetooth/lmp_event/aidl/default/src/main.rs b/bluetooth/lmp_event/aidl/default/src/main.rs
index dfb097f..b24164e 100644
--- a/bluetooth/lmp_event/aidl/default/src/main.rs
+++ b/bluetooth/lmp_event/aidl/default/src/main.rs
@@ -21,7 +21,7 @@
 };
 
 use binder::BinderFeatures;
-use log::{info, Level};
+use log::{info, LevelFilter};
 
 mod lmp_event;
 
@@ -30,7 +30,7 @@
 fn main() {
     info!("{LOG_TAG}: starting service");
     let logger_success = logger::init(
-        logger::Config::default().with_tag_on_device(LOG_TAG).with_min_level(Level::Trace)
+        logger::Config::default().with_tag_on_device(LOG_TAG).with_max_level(LevelFilter::Trace)
     );
     if !logger_success {
         panic!("{LOG_TAG}: Failed to start logger");
diff --git a/camera/common/1.0/Android.bp b/camera/common/1.0/Android.bp
index 3eb12b9..5952ac8 100644
--- a/camera/common/1.0/Android.bp
+++ b/camera/common/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/common/aidl/Android.bp b/camera/common/aidl/Android.bp
index 4ffcfd9..8f7d19d 100644
--- a/camera/common/aidl/Android.bp
+++ b/camera/common/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -22,7 +23,7 @@
         },
         rust: {
             enabled: true,
-        }
+        },
     },
     versions_with_info: [
         {
diff --git a/camera/common/default/Android.bp b/camera/common/default/Android.bp
index e8c8f9d..a60e7f0 100644
--- a/camera/common/default/Android.bp
+++ b/camera/common/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/1.0/Android.bp b/camera/device/1.0/Android.bp
index 6947779..e3a85e0 100644
--- a/camera/device/1.0/Android.bp
+++ b/camera/device/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/1.0/default/Android.bp b/camera/device/1.0/default/Android.bp
index 9ff6480..af7b139 100644
--- a/camera/device/1.0/default/Android.bp
+++ b/camera/device/1.0/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.2/Android.bp b/camera/device/3.2/Android.bp
index c80538c..afeba17 100644
--- a/camera/device/3.2/Android.bp
+++ b/camera/device/3.2/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.2/default/Android.bp b/camera/device/3.2/default/Android.bp
index a196291..a9176ba 100644
--- a/camera/device/3.2/default/Android.bp
+++ b/camera/device/3.2/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.3/Android.bp b/camera/device/3.3/Android.bp
index f5e51d6..becc67e 100644
--- a/camera/device/3.3/Android.bp
+++ b/camera/device/3.3/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.3/default/Android.bp b/camera/device/3.3/default/Android.bp
index cc0dd39..5bc2b51 100644
--- a/camera/device/3.3/default/Android.bp
+++ b/camera/device/3.3/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.4/Android.bp b/camera/device/3.4/Android.bp
index 2a6faab..bde7c9f 100644
--- a/camera/device/3.4/Android.bp
+++ b/camera/device/3.4/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.4/default/Android.bp b/camera/device/3.4/default/Android.bp
index 9f0c777..49147de 100644
--- a/camera/device/3.4/default/Android.bp
+++ b/camera/device/3.4/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.5/Android.bp b/camera/device/3.5/Android.bp
index f29f936..6e23ee0 100644
--- a/camera/device/3.5/Android.bp
+++ b/camera/device/3.5/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.5/default/Android.bp b/camera/device/3.5/default/Android.bp
index 9d27b32..d7568cd 100644
--- a/camera/device/3.5/default/Android.bp
+++ b/camera/device/3.5/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.6/Android.bp b/camera/device/3.6/Android.bp
index ff37ca3..4fb56cf 100644
--- a/camera/device/3.6/Android.bp
+++ b/camera/device/3.6/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.6/default/Android.bp b/camera/device/3.6/default/Android.bp
index 89ee145..c42e42e 100644
--- a/camera/device/3.6/default/Android.bp
+++ b/camera/device/3.6/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/3.7/Android.bp b/camera/device/3.7/Android.bp
index be08e91..4312c04 100644
--- a/camera/device/3.7/Android.bp
+++ b/camera/device/3.7/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/aidl/Android.bp b/camera/device/aidl/Android.bp
index 43a3934..5c8ed7e 100644
--- a/camera/device/aidl/Android.bp
+++ b/camera/device/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/device/default/Android.bp b/camera/device/default/Android.bp
index b577597..afe06c1 100644
--- a/camera/device/default/Android.bp
+++ b/camera/device/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/metadata/3.2/Android.bp b/camera/metadata/3.2/Android.bp
index ec8107e..4602923 100644
--- a/camera/metadata/3.2/Android.bp
+++ b/camera/metadata/3.2/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/metadata/3.3/Android.bp b/camera/metadata/3.3/Android.bp
index 4bed25b..ba0ec80 100644
--- a/camera/metadata/3.3/Android.bp
+++ b/camera/metadata/3.3/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/metadata/3.4/Android.bp b/camera/metadata/3.4/Android.bp
index fdddfdf..893a6aa 100644
--- a/camera/metadata/3.4/Android.bp
+++ b/camera/metadata/3.4/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/metadata/3.5/Android.bp b/camera/metadata/3.5/Android.bp
index 9349d54..df4dddd 100644
--- a/camera/metadata/3.5/Android.bp
+++ b/camera/metadata/3.5/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/metadata/3.6/Android.bp b/camera/metadata/3.6/Android.bp
index 9e2b8a3..40f22fd 100644
--- a/camera/metadata/3.6/Android.bp
+++ b/camera/metadata/3.6/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/metadata/3.7/Android.bp b/camera/metadata/3.7/Android.bp
index 14981b8..70a9d56 100644
--- a/camera/metadata/3.7/Android.bp
+++ b/camera/metadata/3.7/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/metadata/aidl/Android.bp b/camera/metadata/aidl/Android.bp
index 5872a86..b0b98d1 100644
--- a/camera/metadata/aidl/Android.bp
+++ b/camera/metadata/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/2.4/Android.bp b/camera/provider/2.4/Android.bp
index a4c0dd2..fbdc763 100644
--- a/camera/provider/2.4/Android.bp
+++ b/camera/provider/2.4/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/2.4/default/Android.bp b/camera/provider/2.4/default/Android.bp
index bccd6cb..db4453d 100644
--- a/camera/provider/2.4/default/Android.bp
+++ b/camera/provider/2.4/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/2.4/vts/functional/Android.bp b/camera/provider/2.4/vts/functional/Android.bp
index 85e69eb..4e59d28 100644
--- a/camera/provider/2.4/vts/functional/Android.bp
+++ b/camera/provider/2.4/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/2.5/Android.bp b/camera/provider/2.5/Android.bp
index e14c0a8..e082442 100644
--- a/camera/provider/2.5/Android.bp
+++ b/camera/provider/2.5/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/2.5/default/Android.bp b/camera/provider/2.5/default/Android.bp
index 2fcb35a..ae0c2f9 100644
--- a/camera/provider/2.5/default/Android.bp
+++ b/camera/provider/2.5/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -84,7 +85,7 @@
     header_libs: [
         "camera.device@3.4-external-impl_headers",
         "camera.device@3.5-external-impl_headers",
-        "camera.device@3.6-external-impl_headers"
+        "camera.device@3.6-external-impl_headers",
     ],
     export_include_dirs: ["."],
 }
@@ -121,7 +122,7 @@
     ],
     header_libs: [
         "camera.device@3.4-impl_headers",
-        "camera.device@3.5-impl_headers"
+        "camera.device@3.5-impl_headers",
     ],
 }
 
diff --git a/camera/provider/2.6/Android.bp b/camera/provider/2.6/Android.bp
index f402a56..9e4a4d6 100644
--- a/camera/provider/2.6/Android.bp
+++ b/camera/provider/2.6/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/2.7/Android.bp b/camera/provider/2.7/Android.bp
index ba59b38..d4369fa 100644
--- a/camera/provider/2.7/Android.bp
+++ b/camera/provider/2.7/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/2.7/default/Android.bp b/camera/provider/2.7/default/Android.bp
index bd5da2d..8d7cd72 100644
--- a/camera/provider/2.7/default/Android.bp
+++ b/camera/provider/2.7/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/aidl/Android.bp b/camera/provider/aidl/Android.bp
index 35ec976..9ced969 100644
--- a/camera/provider/aidl/Android.bp
+++ b/camera/provider/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/aidl/vts/Android.bp b/camera/provider/aidl/vts/Android.bp
index 59f6c66..6f7e73b 100644
--- a/camera/provider/aidl/vts/Android.bp
+++ b/camera/provider/aidl/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/camera/provider/aidl/vts/camera_aidl_test.cpp b/camera/provider/aidl/vts/camera_aidl_test.cpp
index bb21620..2d344e9 100644
--- a/camera/provider/aidl/vts/camera_aidl_test.cpp
+++ b/camera/provider/aidl/vts/camera_aidl_test.cpp
@@ -2286,18 +2286,20 @@
         ASSERT_NE(0u, outputPreviewStreams.size());
 
         // Combine valid and invalid stream use cases
-        std::vector<int64_t> useCases(kMandatoryUseCases);
-        useCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW + 1);
+        std::vector<int64_t> testedUseCases;
+        testedUseCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW + 1);
 
         std::vector<int64_t> supportedUseCases;
         if (threshold.format == static_cast<int32_t>(PixelFormat::RAW16)) {
             // If the format is RAW16, supported use case is only CROPPED_RAW.
             // All others are unsupported for this format.
-            useCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW);
+            testedUseCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW);
             supportedUseCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW);
             supportedUseCases.push_back(ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT);
         } else {
             camera_metadata_ro_entry entry;
+            testedUseCases.insert(testedUseCases.end(), kMandatoryUseCases.begin(),
+                                  kMandatoryUseCases.end());
             auto retcode = find_camera_metadata_ro_entry(
                     staticMeta, ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES, &entry);
             if ((0 == retcode) && (entry.count > 0)) {
@@ -2338,7 +2340,7 @@
         ASSERT_TRUE(ret.isOk());
         config.sessionParams = req;
 
-        for (int64_t useCase : useCases) {
+        for (int64_t useCase : testedUseCases) {
             bool useCaseSupported = std::find(supportedUseCases.begin(), supportedUseCases.end(),
                                               useCase) != supportedUseCases.end();
 
diff --git a/camera/provider/default/Android.bp b/camera/provider/default/Android.bp
index ed45cbe..9d70c92 100644
--- a/camera/provider/default/Android.bp
+++ b/camera/provider/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_camera_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/compatibility_matrices/Android.bp b/compatibility_matrices/Android.bp
index eefca39..dd502ba 100644
--- a/compatibility_matrices/Android.bp
+++ b/compatibility_matrices/Android.bp
@@ -22,18 +22,6 @@
 }
 
 vintf_compatibility_matrix {
-    name: "framework_compatibility_matrix.4.xml",
-    stem: "compatibility_matrix.4.xml",
-    srcs: [
-        "compatibility_matrix.4.xml",
-    ],
-    kernel_configs: [
-        "kernel_config_q_4.14",
-        "kernel_config_q_4.19",
-    ],
-}
-
-vintf_compatibility_matrix {
     name: "framework_compatibility_matrix.5.xml",
     stem: "compatibility_matrix.5.xml",
     srcs: [
diff --git a/compatibility_matrices/Android.mk b/compatibility_matrices/Android.mk
index 72ead58..639abf9 100644
--- a/compatibility_matrices/Android.mk
+++ b/compatibility_matrices/Android.mk
@@ -101,7 +101,6 @@
 endif # DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE
 
 my_system_matrix_deps := \
-    framework_compatibility_matrix.4.xml \
     framework_compatibility_matrix.5.xml \
     framework_compatibility_matrix.6.xml \
     framework_compatibility_matrix.7.xml \
@@ -112,7 +111,8 @@
 # interfaces (in the `next` release configuration).
 ifeq ($(RELEASE_AIDL_USE_UNFROZEN),true)
 my_system_matrix_deps += \
-    framework_compatibility_matrix.202404.xml
+    framework_compatibility_matrix.202404.xml \
+
 endif
 
 my_framework_matrix_deps += \
diff --git a/compatibility_matrices/bump.py b/compatibility_matrices/bump.py
index 88b7a42..a5a453b 100755
--- a/compatibility_matrices/bump.py
+++ b/compatibility_matrices/bump.py
@@ -16,8 +16,6 @@
 #
 """
 Creates the next compatibility matrix.
-
-Requires libvintf Level.h to be updated before executing this script.
 """
 
 import argparse
@@ -44,44 +42,33 @@
         self.top = pathlib.Path(os.environ["ANDROID_BUILD_TOP"])
         self.interfaces_dir = self.top / "hardware/interfaces"
 
-        self.current_level = cmdline_args.current
+        self.current_level = cmdline_args.current_level
+        self.current_letter = cmdline_args.current_letter
         self.current_module_name = f"framework_compatibility_matrix.{self.current_level}.xml"
         self.current_xml = self.interfaces_dir / f"compatibility_matrices/compatibility_matrix.{self.current_level}.xml"
+        self.device_module_name = "framework_compatibility_matrix.device.xml"
 
-        self.next_level = cmdline_args.next
+        self.next_level = cmdline_args.next_level
+        self.next_letter = cmdline_args.next_letter
         self.next_module_name = f"framework_compatibility_matrix.{self.next_level}.xml"
         self.next_xml = self.interfaces_dir / f"compatibility_matrices/compatibility_matrix.{self.next_level}.xml"
 
-        self.level_to_letter = self.get_level_to_letter_mapping()
-        print("Found level mapping in libvintf Level.h:", self.level_to_letter)
-
     def run(self):
         self.bump_kernel_configs()
         self.copy_matrix()
         self.edit_android_bp()
         self.edit_android_mk()
 
-    def get_level_to_letter_mapping(self):
-        levels_file = self.top / "system/libvintf/include/vintf/Level.h"
-        with open(levels_file) as f:
-            lines = f.readlines()
-            pairs = [
-                line.split("=", maxsplit=2) for line in lines if "=" in line
-            ]
-            return {
-                level.strip().removesuffix(","): letter.strip()
-                for letter, level in pairs
-            }
-
     def bump_kernel_configs(self):
         check_call([
             self.top / "kernel/configs/tools/bump.py",
-            self.level_to_letter[self.current_level].lower(),
-            self.level_to_letter[self.next_level].lower(),
+            self.current_letter,
+            self.next_letter,
         ])
 
     def copy_matrix(self):
-        shutil.copyfile(self.current_xml, self.next_xml)
+        with open(self.current_xml) as f_current, open(self.next_xml, "w") as f_next:
+            f_next.write(f_current.read().replace(f"level=\"{self.current_level}\"", f"level=\"{self.next_level}\""))
 
     def edit_android_bp(self):
         android_bp = self.interfaces_dir / "compatibility_matrices/Android.bp"
@@ -100,7 +87,7 @@
         next_kernel_configs = check_output(
             """grep -rh name: | sed -E 's/^.*"(.*)".*/\\1/g'""",
             cwd=self.top / "kernel/configs" /
-            self.level_to_letter[self.next_level].lower(),
+            self.next_letter,
             text=True,
             shell=True,
         ).splitlines()
@@ -124,31 +111,38 @@
 
     def edit_android_mk(self):
         android_mk = self.interfaces_dir / "compatibility_matrices/Android.mk"
+        lines = []
         with open(android_mk) as f:
             if self.next_module_name in f.read():
                 return
             f.seek(0)
-            lines = f.readlines()
-        current_module_line_number = None
-        for line_number, line in enumerate(lines):
-            if self.current_module_name in line:
-                current_module_line_number = line_number
-                break
-        assert current_module_line_number is not None
-        lines.insert(current_module_line_number + 1,
-                     f"    {self.next_module_name} \\\n")
+            for line in f:
+              if f"    {self.device_module_name} \\\n" in line:
+                  lines.append(f"    {self.current_module_name} \\\n")
+
+              if self.current_module_name in line:
+                  lines.append(f"    {self.next_module_name} \\\n")
+              else:
+                  lines.append(line)
+
         with open(android_mk, "w") as f:
             f.write("".join(lines))
 
 
 def main():
     parser = argparse.ArgumentParser(description=__doc__)
-    parser.add_argument("current",
+    parser.add_argument("current_level",
                         type=str,
                         help="VINTF level of the current version (e.g. 9)")
-    parser.add_argument("next",
+    parser.add_argument("next_level",
                         type=str,
                         help="VINTF level of the next version (e.g. 10)")
+    parser.add_argument("current_letter",
+                        type=str,
+                        help="Letter of the API level of the current version (e.g. v)")
+    parser.add_argument("next_letter",
+                        type=str,
+                        help="Letter of the API level of the next version (e.g. w)")
     cmdline_args = parser.parse_args()
 
     Bump(cmdline_args).run()
diff --git a/compatibility_matrices/compatibility_matrix.202404.xml b/compatibility_matrices/compatibility_matrix.202404.xml
index 490498e..b34011e 100644
--- a/compatibility_matrices/compatibility_matrix.202404.xml
+++ b/compatibility_matrices/compatibility_matrix.202404.xml
@@ -343,25 +343,6 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl">
-        <name>android.hardware.media.c2</name>
-        <version>1.0-2</version>
-        <interface>
-            <name>IComponentStore</name>
-            <instance>software</instance>
-            <regex-instance>default[0-9]*</regex-instance>
-            <regex-instance>vendor[0-9]*_software</regex-instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.media.c2</name>
-        <version>1.0</version>
-        <interface>
-            <name>IConfigurable</name>
-            <instance>default</instance>
-            <instance>software</instance>
-        </interface>
-    </hal>
     <hal format="aidl">
         <name>android.hardware.media.c2</name>
         <version>1</version>
diff --git a/compatibility_matrices/compatibility_matrix.4.xml b/compatibility_matrices/compatibility_matrix.4.xml
deleted file mode 100644
index 952f53d..0000000
--- a/compatibility_matrices/compatibility_matrix.4.xml
+++ /dev/null
@@ -1,525 +0,0 @@
-<compatibility-matrix version="1.0" type="framework" level="4">
-    <hal format="hidl">
-        <name>android.hardware.atrace</name>
-        <version>1.0</version>
-        <interface>
-            <name>IAtraceDevice</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.audio</name>
-        <version>5.0</version>
-        <interface>
-            <name>IDevicesFactory</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.audio.effect</name>
-        <version>5.0</version>
-        <interface>
-            <name>IEffectsFactory</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.authsecret</name>
-        <version>1.0</version>
-        <interface>
-            <name>IAuthSecret</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.automotive.audiocontrol</name>
-        <version>1.0</version>
-        <interface>
-            <name>IAudioControl</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.automotive.evs</name>
-        <version>1.0</version>
-        <interface>
-            <name>IEvsEnumerator</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.automotive.vehicle</name>
-        <version>2.0</version>
-        <interface>
-            <name>IVehicle</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.biometrics.face</name>
-        <version>1.0</version>
-        <interface>
-            <name>IBiometricsFace</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.biometrics.fingerprint</name>
-        <version>2.1</version>
-        <interface>
-            <name>IBiometricsFingerprint</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.bluetooth</name>
-        <version>1.0</version>
-        <interface>
-            <name>IBluetoothHci</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.bluetooth.audio</name>
-        <version>2.0</version>
-        <interface>
-            <name>IBluetoothAudioProvidersFactory</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.boot</name>
-        <version>1.0</version>
-        <interface>
-            <name>IBootControl</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.broadcastradio</name>
-        <version>1.0-1</version>
-        <interface>
-            <name>IBroadcastRadioFactory</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.broadcastradio</name>
-        <version>2.0</version>
-        <interface>
-            <name>IBroadcastRadio</name>
-            <regex-instance>.*</regex-instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.camera.provider</name>
-        <version>2.4-5</version>
-        <interface>
-            <name>ICameraProvider</name>
-            <regex-instance>[^/]+/[0-9]+</regex-instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.cas</name>
-        <version>1.1</version>
-        <interface>
-            <name>IMediaCasService</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.configstore</name>
-        <version>1.1</version>
-        <interface>
-            <name>ISurfaceFlingerConfigs</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.confirmationui</name>
-        <version>1.0</version>
-        <interface>
-            <name>IConfirmationUI</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.contexthub</name>
-        <version>1.0</version>
-        <interface>
-            <name>IContexthub</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.drm</name>
-        <version>1.0-2</version>
-        <interface>
-            <name>ICryptoFactory</name>
-            <regex-instance>.*</regex-instance>
-        </interface>
-        <interface>
-            <name>IDrmFactory</name>
-            <regex-instance>.*</regex-instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.dumpstate</name>
-        <version>1.0</version>
-        <interface>
-            <name>IDumpstateDevice</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.gatekeeper</name>
-        <version>1.0</version>
-        <interface>
-            <name>IGatekeeper</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.gnss</name>
-        <version>2.0</version>
-        <interface>
-            <name>IGnss</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <!-- Either the AIDL or the HIDL allocator HAL must exist on the device.
-         If the HIDL composer HAL exists, it must be at least version 2.0.
-         See DeviceManifestTest.GrallocHal -->
-    <hal format="hidl">
-        <name>android.hardware.graphics.allocator</name>
-        <version>2.0</version>
-        <version>3.0</version>
-        <interface>
-            <name>IAllocator</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.graphics.composer</name>
-        <version>2.1-3</version>
-        <interface>
-            <name>IComposer</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.graphics.mapper</name>
-        <version>2.1</version>
-        <version>3.0</version>
-        <interface>
-            <name>IMapper</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <!-- Either the AIDL or the HIDL health HAL must exist on the device.
-         If the HIDL health HAL exists, it must be at least version 2.0.
-         See DeviceManifestTest.HealthHal -->
-    <hal format="hidl">
-        <name>android.hardware.health</name>
-        <version>2.0</version>
-        <interface>
-            <name>IHealth</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.health.storage</name>
-        <version>1.0</version>
-        <interface>
-            <name>IStorage</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.ir</name>
-        <version>1.0</version>
-        <interface>
-            <name>IConsumerIr</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.input.classifier</name>
-        <version>1.0</version>
-        <interface>
-            <name>IInputClassifier</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.keymaster</name>
-        <version>3.0</version>
-        <version>4.0</version>
-        <interface>
-            <name>IKeymasterDevice</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.keymaster</name>
-        <version>4.0</version>
-        <interface>
-            <name>IKeymasterDevice</name>
-            <instance>strongbox</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.light</name>
-        <version>2.0</version>
-        <interface>
-            <name>ILight</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.media.c2</name>
-        <version>1.0</version>
-        <interface>
-            <name>IComponentStore</name>
-            <instance>software</instance>
-            <regex-instance>default[0-9]*</regex-instance>
-            <regex-instance>vendor[0-9]*_software</regex-instance>
-        </interface>
-        <interface>
-            <name>IConfigurable</name>
-            <instance>default</instance>
-            <instance>software</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.media.omx</name>
-        <version>1.0</version>
-        <interface>
-            <name>IOmx</name>
-            <instance>default</instance>
-        </interface>
-        <interface>
-            <name>IOmxStore</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.memtrack</name>
-        <version>1.0</version>
-        <interface>
-            <name>IMemtrack</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.neuralnetworks</name>
-        <version>1.0-2</version>
-        <interface>
-            <name>IDevice</name>
-            <regex-instance>.*</regex-instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.nfc</name>
-        <version>1.2</version>
-        <interface>
-            <name>INfc</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.oemlock</name>
-        <version>1.0</version>
-        <interface>
-            <name>IOemLock</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.power</name>
-        <version>1.0-3</version>
-        <interface>
-            <name>IPower</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.power.stats</name>
-        <version>1.0</version>
-        <interface>
-            <name>IPowerStats</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.radio</name>
-        <version>1.4</version>
-        <interface>
-            <name>IRadio</name>
-            <instance>slot1</instance>
-            <instance>slot2</instance>
-            <instance>slot3</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.radio</name>
-        <version>1.2</version>
-        <interface>
-            <name>ISap</name>
-            <instance>slot1</instance>
-            <instance>slot2</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.radio.config</name>
-        <!--
-        Note: Devices launching with target-level 4, if implementing the
-        radio config HAL, must provide an implementation of 1.1 IRadioConfig
-        that can handle version 1.2 of IRadioConfigResponse and
-        IRadioConfigIndication.
-        -->
-        <version>1.1</version>
-        <interface>
-            <name>IRadioConfig</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.renderscript</name>
-        <version>1.0</version>
-        <interface>
-            <name>IDevice</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.secure_element</name>
-        <version>1.0</version>
-        <interface>
-            <name>ISecureElement</name>
-            <regex-instance>eSE[1-9][0-9]*</regex-instance>
-            <regex-instance>SIM[1-9][0-9]*</regex-instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.sensors</name>
-        <version>1.0</version>
-        <version>2.0</version>
-        <interface>
-            <name>ISensors</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.soundtrigger</name>
-        <version>2.0-2</version>
-        <interface>
-            <name>ISoundTriggerHw</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.tetheroffload.config</name>
-        <version>1.0</version>
-        <interface>
-            <name>IOffloadConfig</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.tetheroffload.control</name>
-        <version>1.0</version>
-        <interface>
-            <name>IOffloadControl</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.thermal</name>
-        <version>2.0</version>
-        <interface>
-            <name>IThermal</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.tv.cec</name>
-        <version>1.0</version>
-        <interface>
-            <name>IHdmiCec</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.tv.input</name>
-        <version>1.0</version>
-        <interface>
-            <name>ITvInput</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.usb</name>
-        <version>1.0-2</version>
-        <interface>
-            <name>IUsb</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.usb.gadget</name>
-        <version>1.0</version>
-        <interface>
-            <name>IUsbGadget</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.vibrator</name>
-        <version>1.0-3</version>
-        <interface>
-            <name>IVibrator</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.vr</name>
-        <version>1.0</version>
-        <interface>
-            <name>IVr</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.weaver</name>
-        <version>1.0</version>
-        <interface>
-            <name>IWeaver</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.wifi</name>
-        <version>1.0-3</version>
-        <interface>
-            <name>IWifi</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.wifi.hostapd</name>
-        <version>1.0-1</version>
-        <interface>
-            <name>IHostapd</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.wifi.supplicant</name>
-        <version>1.0-2</version>
-        <interface>
-            <name>ISupplicant</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-</compatibility-matrix>
diff --git a/compatibility_matrices/exclude/fcm_exclude.cpp b/compatibility_matrices/exclude/fcm_exclude.cpp
index 2cb4ffa..72ead0c 100644
--- a/compatibility_matrices/exclude/fcm_exclude.cpp
+++ b/compatibility_matrices/exclude/fcm_exclude.cpp
@@ -84,6 +84,26 @@
             "android.hardware.thermal@1.0",
             "android.hardware.thermal@1.1",
             "android.hardware.wifi.offload@1.0",
+
+            // b/279809679 for HALS deprecated in Q
+            "android.hardware.audio.effect@5.0",
+            "android.hardware.audio@5.0",
+            "android.hardware.boot@1.0",
+            "android.hardware.configstore@1.1",
+            "android.hardware.drm@1.0",
+            "android.hardware.drm@1.1",
+            "android.hardware.drm@1.2",
+            "android.hardware.dumpstate@1.0",
+            "android.hardware.health@2.0",
+            "android.hardware.light@2.0",
+            "android.hardware.power@1.0",
+            "android.hardware.power@1.1",
+            "android.hardware.power@1.2",
+            "android.hardware.power@1.3",
+            "android.hardware.vibrator@1.0",
+            "android.hardware.vibrator@1.1",
+            "android.hardware.vibrator@1.2",
+            "android.hardware.vibrator@1.3",
     };
 
     auto package_has_prefix = [&](const std::string& prefix) {
diff --git a/contexthub/aidl/Android.bp b/contexthub/aidl/Android.bp
index a0315d0..ad4e4f6 100644
--- a/contexthub/aidl/Android.bp
+++ b/contexthub/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_context_hub",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/contexthub/aidl/default/Android.bp b/contexthub/aidl/default/Android.bp
index d293e30..8d85f80 100644
--- a/contexthub/aidl/default/Android.bp
+++ b/contexthub/aidl/default/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_context_hub",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/contexthub/aidl/vts/Android.bp b/contexthub/aidl/vts/Android.bp
index 1534b40..509ae5e 100644
--- a/contexthub/aidl/vts/Android.bp
+++ b/contexthub/aidl/vts/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_context_hub",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/2.0/Android.bp b/graphics/allocator/2.0/Android.bp
index 40db81d..36158e9 100644
--- a/graphics/allocator/2.0/Android.bp
+++ b/graphics/allocator/2.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/2.0/default/Android.bp b/graphics/allocator/2.0/default/Android.bp
index 4d17dc3..2ca9c86 100644
--- a/graphics/allocator/2.0/default/Android.bp
+++ b/graphics/allocator/2.0/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/2.0/utils/gralloc1-adapter/Android.bp b/graphics/allocator/2.0/utils/gralloc1-adapter/Android.bp
index bc42099..1ef32ef 100644
--- a/graphics/allocator/2.0/utils/gralloc1-adapter/Android.bp
+++ b/graphics/allocator/2.0/utils/gralloc1-adapter/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -11,9 +12,15 @@
     name: "libgralloc1-adapter",
     defaults: ["hidl_defaults"],
     vendor: true,
-    srcs: ["gralloc1-adapter.cpp", "Gralloc1On0Adapter.cpp"],
+    srcs: [
+        "gralloc1-adapter.cpp",
+        "Gralloc1On0Adapter.cpp",
+    ],
     include_dirs: ["system/core/libsync/include"],
     export_include_dirs: ["."],
     whole_static_libs: ["libgrallocusage"],
-    shared_libs: ["libhardware", "liblog"],
+    shared_libs: [
+        "libhardware",
+        "liblog",
+    ],
 }
diff --git a/graphics/allocator/2.0/utils/hal/Android.bp b/graphics/allocator/2.0/utils/hal/Android.bp
index 6bb9a0f..a2ddafd 100644
--- a/graphics/allocator/2.0/utils/hal/Android.bp
+++ b/graphics/allocator/2.0/utils/hal/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/2.0/utils/passthrough/Android.bp b/graphics/allocator/2.0/utils/passthrough/Android.bp
index f5ac5a6..fe00518 100644
--- a/graphics/allocator/2.0/utils/passthrough/Android.bp
+++ b/graphics/allocator/2.0/utils/passthrough/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/3.0/Android.bp b/graphics/allocator/3.0/Android.bp
index 800632c..0100f6f 100644
--- a/graphics/allocator/3.0/Android.bp
+++ b/graphics/allocator/3.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/4.0/Android.bp b/graphics/allocator/4.0/Android.bp
index 5c5fb37..5d7a4a9 100644
--- a/graphics/allocator/4.0/Android.bp
+++ b/graphics/allocator/4.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/aidl/Android.bp b/graphics/allocator/aidl/Android.bp
index a3a2c55..188b14e 100644
--- a/graphics/allocator/aidl/Android.bp
+++ b/graphics/allocator/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/aidl/vts/Android.bp b/graphics/allocator/aidl/vts/Android.bp
index 630ab2a..b2ed821 100644
--- a/graphics/allocator/aidl/vts/Android.bp
+++ b/graphics/allocator/aidl/vts/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/allocator/aidl/vts/VtsHalGraphicsAllocatorAidl_TargetTest.cpp b/graphics/allocator/aidl/vts/VtsHalGraphicsAllocatorAidl_TargetTest.cpp
index 4778020..0430ea7 100644
--- a/graphics/allocator/aidl/vts/VtsHalGraphicsAllocatorAidl_TargetTest.cpp
+++ b/graphics/allocator/aidl/vts/VtsHalGraphicsAllocatorAidl_TargetTest.cpp
@@ -144,7 +144,8 @@
             auto status = mAllocator->getIMapperLibrarySuffix(&mapperSuffix);
             ASSERT_TRUE(status.isOk());
             std::string lib_name = "mapper." + mapperSuffix + ".so";
-            void* so = android_load_sphal_library(lib_name.c_str(), RTLD_LOCAL | RTLD_NOW);
+            void* so = AServiceManager_openDeclaredPassthroughHal("mapper", mapperSuffix.c_str(),
+                                                                  RTLD_LOCAL | RTLD_NOW);
             ASSERT_NE(nullptr, so) << "Failed to load " << lib_name;
             auto loadIMapper = (AIMapper_loadIMapperFn)dlsym(so, "AIMapper_loadIMapper");
             ASSERT_NE(nullptr, loadIMapper) << "AIMapper_locaIMapper missing from " << lib_name;
diff --git a/graphics/bufferqueue/1.0/Android.bp b/graphics/bufferqueue/1.0/Android.bp
index 82c71f1..fe46b5e 100644
--- a/graphics/bufferqueue/1.0/Android.bp
+++ b/graphics/bufferqueue/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/bufferqueue/2.0/Android.bp b/graphics/bufferqueue/2.0/Android.bp
index 3067e24..c2b0985 100644
--- a/graphics/bufferqueue/2.0/Android.bp
+++ b/graphics/bufferqueue/2.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/common/1.0/Android.bp b/graphics/common/1.0/Android.bp
index 3288583..786953b 100644
--- a/graphics/common/1.0/Android.bp
+++ b/graphics/common/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/common/1.1/Android.bp b/graphics/common/1.1/Android.bp
index 5d07eae..d857f80 100644
--- a/graphics/common/1.1/Android.bp
+++ b/graphics/common/1.1/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/common/1.2/Android.bp b/graphics/common/1.2/Android.bp
index 4aa4af5..17d0c20 100644
--- a/graphics/common/1.2/Android.bp
+++ b/graphics/common/1.2/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/common/aidl/Android.bp b/graphics/common/aidl/Android.bp
index 02334e8..c9fbf16 100644
--- a/graphics/common/aidl/Android.bp
+++ b/graphics/common/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/Android.bp b/graphics/composer/2.1/Android.bp
index 2e41208..3c3575d 100644
--- a/graphics/composer/2.1/Android.bp
+++ b/graphics/composer/2.1/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/default/Android.bp b/graphics/composer/2.1/default/Android.bp
index 96fea4e..91d9b0d 100644
--- a/graphics/composer/2.1/default/Android.bp
+++ b/graphics/composer/2.1/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/utils/command-buffer/Android.bp b/graphics/composer/2.1/utils/command-buffer/Android.bp
index 07dea31..224cea5 100644
--- a/graphics/composer/2.1/utils/command-buffer/Android.bp
+++ b/graphics/composer/2.1/utils/command-buffer/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/utils/hal/Android.bp b/graphics/composer/2.1/utils/hal/Android.bp
index 874be84..9622c58 100644
--- a/graphics/composer/2.1/utils/hal/Android.bp
+++ b/graphics/composer/2.1/utils/hal/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/utils/hwc2on1adapter/Android.bp b/graphics/composer/2.1/utils/hwc2on1adapter/Android.bp
index 3527cca..fd00297 100644
--- a/graphics/composer/2.1/utils/hwc2on1adapter/Android.bp
+++ b/graphics/composer/2.1/utils/hwc2on1adapter/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/utils/hwc2onfbadapter/Android.bp b/graphics/composer/2.1/utils/hwc2onfbadapter/Android.bp
index d613ba9..ecf6201 100644
--- a/graphics/composer/2.1/utils/hwc2onfbadapter/Android.bp
+++ b/graphics/composer/2.1/utils/hwc2onfbadapter/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/utils/passthrough/Android.bp b/graphics/composer/2.1/utils/passthrough/Android.bp
index 67f5163..7bc32c0 100644
--- a/graphics/composer/2.1/utils/passthrough/Android.bp
+++ b/graphics/composer/2.1/utils/passthrough/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/utils/resources/Android.bp b/graphics/composer/2.1/utils/resources/Android.bp
index 9eb23fa..8705dee 100644
--- a/graphics/composer/2.1/utils/resources/Android.bp
+++ b/graphics/composer/2.1/utils/resources/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/utils/vts/Android.bp b/graphics/composer/2.1/utils/vts/Android.bp
index 7b6a0e6..c457df2 100644
--- a/graphics/composer/2.1/utils/vts/Android.bp
+++ b/graphics/composer/2.1/utils/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.1/vts/functional/Android.bp b/graphics/composer/2.1/vts/functional/Android.bp
index 0f6d7e8..62dfda3 100644
--- a/graphics/composer/2.1/vts/functional/Android.bp
+++ b/graphics/composer/2.1/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.2/Android.bp b/graphics/composer/2.2/Android.bp
index e44a236..1f28ea3 100644
--- a/graphics/composer/2.2/Android.bp
+++ b/graphics/composer/2.2/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.2/utils/command-buffer/Android.bp b/graphics/composer/2.2/utils/command-buffer/Android.bp
index d55145e..eae2242 100644
--- a/graphics/composer/2.2/utils/command-buffer/Android.bp
+++ b/graphics/composer/2.2/utils/command-buffer/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.2/utils/hal/Android.bp b/graphics/composer/2.2/utils/hal/Android.bp
index 4e028e0..9194aa1 100644
--- a/graphics/composer/2.2/utils/hal/Android.bp
+++ b/graphics/composer/2.2/utils/hal/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.2/utils/passthrough/Android.bp b/graphics/composer/2.2/utils/passthrough/Android.bp
index b700344..10e0b73 100644
--- a/graphics/composer/2.2/utils/passthrough/Android.bp
+++ b/graphics/composer/2.2/utils/passthrough/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.2/utils/resources/Android.bp b/graphics/composer/2.2/utils/resources/Android.bp
index 9e45ef2..d1bf8c5 100644
--- a/graphics/composer/2.2/utils/resources/Android.bp
+++ b/graphics/composer/2.2/utils/resources/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.2/utils/vts/Android.bp b/graphics/composer/2.2/utils/vts/Android.bp
index d11592f..6647bf3 100644
--- a/graphics/composer/2.2/utils/vts/Android.bp
+++ b/graphics/composer/2.2/utils/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.2/vts/functional/Android.bp b/graphics/composer/2.2/vts/functional/Android.bp
index 3476376..fc89763 100644
--- a/graphics/composer/2.2/vts/functional/Android.bp
+++ b/graphics/composer/2.2/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.3/Android.bp b/graphics/composer/2.3/Android.bp
index 3c52b6f..47a0965 100644
--- a/graphics/composer/2.3/Android.bp
+++ b/graphics/composer/2.3/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.3/default/Android.bp b/graphics/composer/2.3/default/Android.bp
index f801fba..bffe632 100644
--- a/graphics/composer/2.3/default/Android.bp
+++ b/graphics/composer/2.3/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.3/utils/command-buffer/Android.bp b/graphics/composer/2.3/utils/command-buffer/Android.bp
index ca7d136..1694509 100644
--- a/graphics/composer/2.3/utils/command-buffer/Android.bp
+++ b/graphics/composer/2.3/utils/command-buffer/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.3/utils/hal/Android.bp b/graphics/composer/2.3/utils/hal/Android.bp
index b475757..eb854c3 100644
--- a/graphics/composer/2.3/utils/hal/Android.bp
+++ b/graphics/composer/2.3/utils/hal/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.3/utils/passthrough/Android.bp b/graphics/composer/2.3/utils/passthrough/Android.bp
index 68b706c..7bf54e5 100644
--- a/graphics/composer/2.3/utils/passthrough/Android.bp
+++ b/graphics/composer/2.3/utils/passthrough/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.3/utils/vts/Android.bp b/graphics/composer/2.3/utils/vts/Android.bp
index b372804..dd56633 100644
--- a/graphics/composer/2.3/utils/vts/Android.bp
+++ b/graphics/composer/2.3/utils/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.3/vts/functional/Android.bp b/graphics/composer/2.3/vts/functional/Android.bp
index 13f2b11..e0c1d4e 100644
--- a/graphics/composer/2.3/vts/functional/Android.bp
+++ b/graphics/composer/2.3/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.4/Android.bp b/graphics/composer/2.4/Android.bp
index e6b238b..748faf6 100644
--- a/graphics/composer/2.4/Android.bp
+++ b/graphics/composer/2.4/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.4/default/Android.bp b/graphics/composer/2.4/default/Android.bp
index 7a91ec1..a9b6d4e 100644
--- a/graphics/composer/2.4/default/Android.bp
+++ b/graphics/composer/2.4/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.4/utils/command-buffer/Android.bp b/graphics/composer/2.4/utils/command-buffer/Android.bp
index c966fc4..608b004 100644
--- a/graphics/composer/2.4/utils/command-buffer/Android.bp
+++ b/graphics/composer/2.4/utils/command-buffer/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.4/utils/hal/Android.bp b/graphics/composer/2.4/utils/hal/Android.bp
index abf8e04..c90a79d 100644
--- a/graphics/composer/2.4/utils/hal/Android.bp
+++ b/graphics/composer/2.4/utils/hal/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.4/utils/passthrough/Android.bp b/graphics/composer/2.4/utils/passthrough/Android.bp
index a851c0a..867f8cb 100644
--- a/graphics/composer/2.4/utils/passthrough/Android.bp
+++ b/graphics/composer/2.4/utils/passthrough/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.4/utils/vts/Android.bp b/graphics/composer/2.4/utils/vts/Android.bp
index d2b2ffa..3a80c9a 100644
--- a/graphics/composer/2.4/utils/vts/Android.bp
+++ b/graphics/composer/2.4/utils/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/2.4/vts/functional/Android.bp b/graphics/composer/2.4/vts/functional/Android.bp
index b4ab259..637482d 100644
--- a/graphics/composer/2.4/vts/functional/Android.bp
+++ b/graphics/composer/2.4/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/aidl/Android.bp b/graphics/composer/aidl/Android.bp
index 40448ec..5e4c23e 100644
--- a/graphics/composer/aidl/Android.bp
+++ b/graphics/composer/aidl/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/composer/aidl/vts/Android.bp b/graphics/composer/aidl/vts/Android.bp
index 60360fd..5bae7b5 100644
--- a/graphics/composer/aidl/vts/Android.bp
+++ b/graphics/composer/aidl/vts/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.0/Android.bp b/graphics/mapper/2.0/Android.bp
index 6c3ef54..81040ab 100644
--- a/graphics/mapper/2.0/Android.bp
+++ b/graphics/mapper/2.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.0/default/Android.bp b/graphics/mapper/2.0/default/Android.bp
index fffea3b..337e29e 100644
--- a/graphics/mapper/2.0/default/Android.bp
+++ b/graphics/mapper/2.0/default/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -29,7 +30,7 @@
     relative_install_path: "hw",
     srcs: ["passthrough.cpp"],
     header_libs: [
-        "android.hardware.graphics.mapper@2.0-passthrough"
+        "android.hardware.graphics.mapper@2.0-passthrough",
     ],
     shared_libs: [
         "android.hardware.graphics.mapper@2.0",
diff --git a/graphics/mapper/2.0/utils/hal/Android.bp b/graphics/mapper/2.0/utils/hal/Android.bp
index f5d4506..c4a0b11 100644
--- a/graphics/mapper/2.0/utils/hal/Android.bp
+++ b/graphics/mapper/2.0/utils/hal/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.0/utils/passthrough/Android.bp b/graphics/mapper/2.0/utils/passthrough/Android.bp
index 23450fb..257eab9 100644
--- a/graphics/mapper/2.0/utils/passthrough/Android.bp
+++ b/graphics/mapper/2.0/utils/passthrough/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.0/utils/vts/Android.bp b/graphics/mapper/2.0/utils/vts/Android.bp
index 03f925d..4fb78db 100644
--- a/graphics/mapper/2.0/utils/vts/Android.bp
+++ b/graphics/mapper/2.0/utils/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.0/vts/functional/Android.bp b/graphics/mapper/2.0/vts/functional/Android.bp
index 43e6156..01bb615 100644
--- a/graphics/mapper/2.0/vts/functional/Android.bp
+++ b/graphics/mapper/2.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -33,5 +34,8 @@
         "android.hardware.graphics.mapper@2.0",
         "android.hardware.graphics.mapper@2.0-vts",
     ],
-    test_suites: ["general-tests", "vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
 }
diff --git a/graphics/mapper/2.1/Android.bp b/graphics/mapper/2.1/Android.bp
index cc74156..1308a6c 100644
--- a/graphics/mapper/2.1/Android.bp
+++ b/graphics/mapper/2.1/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.1/default/Android.bp b/graphics/mapper/2.1/default/Android.bp
index 4f080c4..8dfdbbd 100644
--- a/graphics/mapper/2.1/default/Android.bp
+++ b/graphics/mapper/2.1/default/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.1/utils/hal/Android.bp b/graphics/mapper/2.1/utils/hal/Android.bp
index aff497c..47f7971 100644
--- a/graphics/mapper/2.1/utils/hal/Android.bp
+++ b/graphics/mapper/2.1/utils/hal/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.1/utils/passthrough/Android.bp b/graphics/mapper/2.1/utils/passthrough/Android.bp
index d46041b..ddfc57d 100644
--- a/graphics/mapper/2.1/utils/passthrough/Android.bp
+++ b/graphics/mapper/2.1/utils/passthrough/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/2.1/utils/vts/Android.bp b/graphics/mapper/2.1/utils/vts/Android.bp
index 5c67df9..a095733 100644
--- a/graphics/mapper/2.1/utils/vts/Android.bp
+++ b/graphics/mapper/2.1/utils/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -25,7 +26,10 @@
 
 cc_library_static {
     name: "android.hardware.graphics.mapper@2.1-vts",
-    defaults: ["hidl_defaults", "VtsHalTargetTestDefaults"],
+    defaults: [
+        "hidl_defaults",
+        "VtsHalTargetTestDefaults",
+    ],
     srcs: ["MapperVts.cpp"],
     cflags: [
         "-O0",
diff --git a/graphics/mapper/2.1/vts/functional/Android.bp b/graphics/mapper/2.1/vts/functional/Android.bp
index 7bbc9a4..acfd52a 100644
--- a/graphics/mapper/2.1/vts/functional/Android.bp
+++ b/graphics/mapper/2.1/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -35,5 +36,8 @@
         "android.hardware.graphics.mapper@2.0-vts",
         "android.hardware.graphics.mapper@2.1-vts",
     ],
-    test_suites: ["general-tests", "vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
 }
diff --git a/graphics/mapper/3.0/Android.bp b/graphics/mapper/3.0/Android.bp
index 88992a3..b49806f 100644
--- a/graphics/mapper/3.0/Android.bp
+++ b/graphics/mapper/3.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/3.0/utils/vts/Android.bp b/graphics/mapper/3.0/utils/vts/Android.bp
index c0d56de..d4b8035 100644
--- a/graphics/mapper/3.0/utils/vts/Android.bp
+++ b/graphics/mapper/3.0/utils/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/3.0/vts/functional/Android.bp b/graphics/mapper/3.0/vts/functional/Android.bp
index e837027..57cd09b 100644
--- a/graphics/mapper/3.0/vts/functional/Android.bp
+++ b/graphics/mapper/3.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -35,5 +36,8 @@
         "android.hardware.graphics.mapper@3.0",
         "android.hardware.graphics.mapper@3.0-vts",
     ],
-    test_suites: ["general-tests", "vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
 }
diff --git a/graphics/mapper/4.0/Android.bp b/graphics/mapper/4.0/Android.bp
index 0cffce4..c07f73c 100644
--- a/graphics/mapper/4.0/Android.bp
+++ b/graphics/mapper/4.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/4.0/utils/vts/Android.bp b/graphics/mapper/4.0/utils/vts/Android.bp
index 51e871b..013dbc5 100644
--- a/graphics/mapper/4.0/utils/vts/Android.bp
+++ b/graphics/mapper/4.0/utils/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/4.0/vts/functional/Android.bp b/graphics/mapper/4.0/vts/functional/Android.bp
index 6208ae9..181408b 100644
--- a/graphics/mapper/4.0/vts/functional/Android.bp
+++ b/graphics/mapper/4.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/stable-c/Android.bp b/graphics/mapper/stable-c/Android.bp
index 1d01a02..40486fd 100644
--- a/graphics/mapper/stable-c/Android.bp
+++ b/graphics/mapper/stable-c/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_core_graphics_stack",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/graphics/mapper/stable-c/vts/VtsHalGraphicsMapperStableC_TargetTest.cpp b/graphics/mapper/stable-c/vts/VtsHalGraphicsMapperStableC_TargetTest.cpp
index b329de2..1e0c427 100644
--- a/graphics/mapper/stable-c/vts/VtsHalGraphicsMapperStableC_TargetTest.cpp
+++ b/graphics/mapper/stable-c/vts/VtsHalGraphicsMapperStableC_TargetTest.cpp
@@ -166,7 +166,8 @@
         auto status = mAllocator->getIMapperLibrarySuffix(&mapperSuffix);
         ASSERT_TRUE(status.isOk()) << "Failed to get IMapper library suffix";
         std::string lib_name = "mapper." + mapperSuffix + ".so";
-        void* so = android_load_sphal_library(lib_name.c_str(), RTLD_LOCAL | RTLD_NOW);
+        void* so = AServiceManager_openDeclaredPassthroughHal("mapper", mapperSuffix.c_str(),
+                                                              RTLD_LOCAL | RTLD_NOW);
         ASSERT_NE(nullptr, so) << "Failed to load " << lib_name;
         mIMapperLoader = (AIMapper_loadIMapperFn)dlsym(so, "AIMapper_loadIMapper");
         ASSERT_NE(nullptr, mIMapperLoader) << "AIMapper_locaIMapper missing from " << lib_name;
diff --git a/input/classifier/1.0/default/Android.bp b/input/classifier/1.0/default/Android.bp
index 8ab2ba8..264292b 100644
--- a/input/classifier/1.0/default/Android.bp
+++ b/input/classifier/1.0/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_input_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/input/classifier/1.0/vts/functional/Android.bp b/input/classifier/1.0/vts/functional/Android.bp
index 22346ed..dcf68b9 100644
--- a/input/classifier/1.0/vts/functional/Android.bp
+++ b/input/classifier/1.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_input_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/input/common/1.0/Android.bp b/input/common/1.0/Android.bp
index ed0ab98..ffa3441 100644
--- a/input/common/1.0/Android.bp
+++ b/input/common/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_input_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/input/common/aidl/Android.bp b/input/common/aidl/Android.bp
index 95a14b2..5a1614b 100644
--- a/input/common/aidl/Android.bp
+++ b/input/common/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_input_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/input/processor/aidl/Android.bp b/input/processor/aidl/Android.bp
index f1a73d2..68adf32 100644
--- a/input/processor/aidl/Android.bp
+++ b/input/processor/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_input_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/input/processor/aidl/default/Android.bp b/input/processor/aidl/default/Android.bp
index bdd27e2..f5163a7 100644
--- a/input/processor/aidl/default/Android.bp
+++ b/input/processor/aidl/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_input_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/keymaster/4.0/vts/functional/HmacKeySharingTest.cpp b/keymaster/4.0/vts/functional/HmacKeySharingTest.cpp
index 1bff076..a076438 100644
--- a/keymaster/4.0/vts/functional/HmacKeySharingTest.cpp
+++ b/keymaster/4.0/vts/functional/HmacKeySharingTest.cpp
@@ -51,7 +51,7 @@
     };
 
     using KeymasterVec = std::vector<sp<IKeymasterDevice>>;
-    using ByteString = std::basic_string<uint8_t>;
+    using ByteString = std::vector<uint8_t>;
     // using NonceVec = std::vector<HidlBuf>;
 
     GetParamsResult getHmacSharingParameters(IKeymasterDevice& keymaster) {
@@ -98,7 +98,7 @@
     std::vector<ByteString> copyNonces(const hidl_vec<HmacSharingParameters>& paramsVec) {
         std::vector<ByteString> nonces;
         for (auto& param : paramsVec) {
-            nonces.emplace_back(param.nonce.data(), param.nonce.size());
+            nonces.emplace_back(param.nonce.data(), param.nonce.data() + param.nonce.size());
         }
         return nonces;
     }
diff --git a/light/aidl/default/main.rs b/light/aidl/default/main.rs
index 8f32470..b5452d6 100644
--- a/light/aidl/default/main.rs
+++ b/light/aidl/default/main.rs
@@ -23,11 +23,11 @@
 
 const LOG_TAG: &str = "lights_service_example_rust";
 
-use log::Level;
+use log::LevelFilter;
 
 fn main() {
     let logger_success = logger::init(
-        logger::Config::default().with_tag_on_device(LOG_TAG).with_min_level(Level::Trace),
+        logger::Config::default().with_tag_on_device(LOG_TAG).with_max_level(LevelFilter::Trace),
     );
     if !logger_success {
         panic!("{LOG_TAG}: Failed to start logger.");
diff --git a/media/bufferpool/1.0/Android.bp b/media/bufferpool/1.0/Android.bp
index 175b8a5..60bcf7b 100644
--- a/media/bufferpool/1.0/Android.bp
+++ b/media/bufferpool/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/media/bufferpool/2.0/Android.bp b/media/bufferpool/2.0/Android.bp
index 56597db..fd6f08b 100644
--- a/media/bufferpool/2.0/Android.bp
+++ b/media/bufferpool/2.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/media/bufferpool/aidl/Android.bp b/media/bufferpool/aidl/Android.bp
index 9dcc90e..010c7cd 100644
--- a/media/bufferpool/aidl/Android.bp
+++ b/media/bufferpool/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/media/bufferpool/aidl/default/Android.bp b/media/bufferpool/aidl/default/Android.bp
index 4d12d63..72cd903 100644
--- a/media/bufferpool/aidl/default/Android.bp
+++ b/media/bufferpool/aidl/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "frameworks_av_license"
diff --git a/media/bufferpool/aidl/default/tests/Android.bp b/media/bufferpool/aidl/default/tests/Android.bp
index 487ed4c..46aa4da 100644
--- a/media/bufferpool/aidl/default/tests/Android.bp
+++ b/media/bufferpool/aidl/default/tests/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "frameworks_av_license"
@@ -42,7 +43,7 @@
     ],
     static_libs: [
         "libaidlcommonsupport",
-        "libstagefright_aidl_bufferpool2"
+        "libstagefright_aidl_bufferpool2",
     ],
     compile_multilib: "both",
 }
@@ -66,7 +67,7 @@
     ],
     static_libs: [
         "libaidlcommonsupport",
-        "libstagefright_aidl_bufferpool2"
+        "libstagefright_aidl_bufferpool2",
     ],
     compile_multilib: "both",
 }
@@ -90,7 +91,7 @@
     ],
     static_libs: [
         "libaidlcommonsupport",
-        "libstagefright_aidl_bufferpool2"
+        "libstagefright_aidl_bufferpool2",
     ],
     compile_multilib: "both",
 }
diff --git a/media/omx/1.0/vts/functional/audio/Android.bp b/media/omx/1.0/vts/functional/audio/Android.bp
index a2733c9..1be82f8 100644
--- a/media/omx/1.0/vts/functional/audio/Android.bp
+++ b/media/omx/1.0/vts/functional/audio/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/media/omx/1.0/vts/functional/common/Android.bp b/media/omx/1.0/vts/functional/common/Android.bp
index 12b6fb2..7c23d61 100644
--- a/media/omx/1.0/vts/functional/common/Android.bp
+++ b/media/omx/1.0/vts/functional/common/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/media/omx/1.0/vts/functional/component/Android.bp b/media/omx/1.0/vts/functional/component/Android.bp
index 7b8ec9d..fddbb8e 100644
--- a/media/omx/1.0/vts/functional/component/Android.bp
+++ b/media/omx/1.0/vts/functional/component/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/media/omx/1.0/vts/functional/store/Android.bp b/media/omx/1.0/vts/functional/store/Android.bp
index b34fff1..ebe4293 100644
--- a/media/omx/1.0/vts/functional/store/Android.bp
+++ b/media/omx/1.0/vts/functional/store/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/media/omx/1.0/vts/functional/video/Android.bp b/media/omx/1.0/vts/functional/video/Android.bp
index 5454f16..0eac78e 100644
--- a/media/omx/1.0/vts/functional/video/Android.bp
+++ b/media/omx/1.0/vts/functional/video/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_media_codec_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/nfc/1.0/vts/functional/Android.bp b/nfc/1.0/vts/functional/Android.bp
index 0d3f0c9..2e9a6fa 100644
--- a/nfc/1.0/vts/functional/Android.bp
+++ b/nfc/1.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_nfc",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -30,5 +31,8 @@
     static_libs: [
         "android.hardware.nfc@1.0",
     ],
-    test_suites: ["general-tests", "vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
 }
diff --git a/nfc/1.1/vts/functional/Android.bp b/nfc/1.1/vts/functional/Android.bp
index 4439531..cffe84a 100644
--- a/nfc/1.1/vts/functional/Android.bp
+++ b/nfc/1.1/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_nfc",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -31,5 +32,8 @@
         "android.hardware.nfc@1.0",
         "android.hardware.nfc@1.1",
     ],
-    test_suites: ["general-tests", "vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
 }
diff --git a/nfc/1.2/vts/functional/Android.bp b/nfc/1.2/vts/functional/Android.bp
index ff7bd3a..394dc26 100644
--- a/nfc/1.2/vts/functional/Android.bp
+++ b/nfc/1.2/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_nfc",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -32,5 +33,8 @@
         "android.hardware.nfc@1.1",
         "android.hardware.nfc@1.2",
     ],
-    test_suites: ["general-tests", "vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
 }
diff --git a/nfc/aidl/Android.bp b/nfc/aidl/Android.bp
index dae9f29..ae68f17 100644
--- a/nfc/aidl/Android.bp
+++ b/nfc/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_fwk_nfc",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -34,7 +35,7 @@
             sdk_version: "module_current",
             enabled: false,
         },
-	ndk: {
+        ndk: {
             enabled: true,
             apex_available: [
                 "//apex_available:platform",
diff --git a/nfc/aidl/default/Android.bp b/nfc/aidl/default/Android.bp
index 6daebe5..0cda51d 100644
--- a/nfc/aidl/default/Android.bp
+++ b/nfc/aidl/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_fwk_nfc",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/nfc/aidl/vts/functional/Android.bp b/nfc/aidl/vts/functional/Android.bp
index 99eecd0..0dab2d8 100644
--- a/nfc/aidl/vts/functional/Android.bp
+++ b/nfc/aidl/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_nfc",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/aidl/Android.bp b/radio/aidl/Android.bp
index 09f845b..7e95054 100644
--- a/radio/aidl/Android.bp
+++ b/radio/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/aidl/compat/libradiocompat/Android.bp b/radio/aidl/compat/libradiocompat/Android.bp
index 5cf1378..c2f8a79 100644
--- a/radio/aidl/compat/libradiocompat/Android.bp
+++ b/radio/aidl/compat/libradiocompat/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/aidl/compat/service/Android.bp b/radio/aidl/compat/service/Android.bp
index dff0182..2f7116d 100644
--- a/radio/aidl/compat/service/Android.bp
+++ b/radio/aidl/compat/service/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/aidl/vts/Android.bp b/radio/aidl/vts/Android.bp
index e79d3c0..99047af 100644
--- a/radio/aidl/vts/Android.bp
+++ b/radio/aidl/vts/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.0/Android.bp b/radio/config/1.0/Android.bp
index 9e317b3..98be5a7 100644
--- a/radio/config/1.0/Android.bp
+++ b/radio/config/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.0/default/Android.bp b/radio/config/1.0/default/Android.bp
index e221ceb..ed12108 100644
--- a/radio/config/1.0/default/Android.bp
+++ b/radio/config/1.0/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.0/vts/functional/Android.bp b/radio/config/1.0/vts/functional/Android.bp
index 36aecff..e28eb43 100644
--- a/radio/config/1.0/vts/functional/Android.bp
+++ b/radio/config/1.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.1/Android.bp b/radio/config/1.1/Android.bp
index b1705f9..8aa8a4d 100644
--- a/radio/config/1.1/Android.bp
+++ b/radio/config/1.1/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.1/vts/functional/Android.bp b/radio/config/1.1/vts/functional/Android.bp
index 9037b79..87bcaa9 100644
--- a/radio/config/1.1/vts/functional/Android.bp
+++ b/radio/config/1.1/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.2/Android.bp b/radio/config/1.2/Android.bp
index 3327af4..e58ac0b 100644
--- a/radio/config/1.2/Android.bp
+++ b/radio/config/1.2/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.2/vts/functional/Android.bp b/radio/config/1.2/vts/functional/Android.bp
index 1a15d3f..5ebb222 100644
--- a/radio/config/1.2/vts/functional/Android.bp
+++ b/radio/config/1.2/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.3/Android.bp b/radio/config/1.3/Android.bp
index dc0d82c..c39984c 100644
--- a/radio/config/1.3/Android.bp
+++ b/radio/config/1.3/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/radio/config/1.3/vts/functional/Android.bp b/radio/config/1.3/vts/functional/Android.bp
index 20c480f..738d5d3 100644
--- a/radio/config/1.3/vts/functional/Android.bp
+++ b/radio/config/1.3/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -50,7 +51,7 @@
 cc_library_static {
     name: "RadioConfigVtsTestResponse",
     defaults: ["VtsHalTargetTestDefaults"],
-    srcs : [
+    srcs: [
         "radio_config_response.cpp",
         "radio_config_hidl_hal_test.cpp",
     ],
diff --git a/radio/deprecated/1.0/Android.bp b/radio/deprecated/1.0/Android.bp
index 53f6da5..a607644 100644
--- a/radio/deprecated/1.0/Android.bp
+++ b/radio/deprecated/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_telephony",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/security/authgraph/default/src/main.rs b/security/authgraph/default/src/main.rs
index ced7567..65ced75 100644
--- a/security/authgraph/default/src/main.rs
+++ b/security/authgraph/default/src/main.rs
@@ -50,8 +50,8 @@
     android_logger::init_once(
         android_logger::Config::default()
             .with_tag("authgraph-hal-nonsecure")
-            .with_min_level(log::Level::Info)
-            .with_log_id(android_logger::LogId::System),
+            .with_max_level(log::LevelFilter::Info)
+            .with_log_buffer(android_logger::LogId::System),
     );
     // Redirect panic messages to logcat.
     std::panic::set_hook(Box::new(|panic_info| {
diff --git a/security/keymint/aidl/vts/functional/KeyMintTest.cpp b/security/keymint/aidl/vts/functional/KeyMintTest.cpp
index e098aca..0b7627c 100644
--- a/security/keymint/aidl/vts/functional/KeyMintTest.cpp
+++ b/security/keymint/aidl/vts/functional/KeyMintTest.cpp
@@ -1064,32 +1064,53 @@
 TEST_P(NewKeyGenerationTest, RsaWithSpecifiedValidity) {
     vector<uint8_t> key_blob;
     vector<KeyCharacteristics> key_characteristics;
-    ASSERT_EQ(ErrorCode::OK,
-              GenerateKey(AuthorizationSetBuilder()
-                                  .RsaSigningKey(2048, 65537)
-                                  .Digest(Digest::NONE)
-                                  .Padding(PaddingMode::NONE)
-                                  .Authorization(TAG_CERTIFICATE_NOT_BEFORE,
-                                                 1183806000000 /* 2007-07-07T11:00:00Z */)
-                                  .Authorization(TAG_CERTIFICATE_NOT_AFTER,
-                                                 1916049600000 /* 2030-09-19T12:00:00Z */),
-                          &key_blob, &key_characteristics));
-    ASSERT_GT(cert_chain_.size(), 0);
+    vector<uint64_t> test_vector_not_before_millis = {
+            458046000000,    /* 1984-07-07T11:00:00Z */
+            1183806000000,   /* 2007-07-07T11:00:00Z */
+            1924991999000,   /* 2030-12-31T23:59:59Z */
+            3723753599000,   /* 2087-12-31T23:59:59Z */
+            26223868799000,  /* 2800-12-31T23:59:59Z */
+            45157996799000,  /* 3400-12-31T23:59:59Z */
+            60719587199000,  /* 3894-02-15T23:59:59Z */
+            95302051199000,  /* 4989-12-31T23:59:59Z */
+            86182012799000,  /* 4700-12-31T23:59:59Z */
+            111427574399000, /* 5500-12-31T23:59:59Z */
+            136988668799000, /* 6310-12-31T23:59:59Z */
+            139828895999000, /* 6400-12-31T23:59:59Z */
+            169839503999000, /* 7351-12-31T23:59:59Z */
+            171385804799000, /* 7400-12-31T23:59:59Z */
+            190320019199000, /* 8000-12-31T23:59:59Z */
+            193475692799000, /* 8100-12-31T23:59:59Z */
+            242515209599000, /* 9654-12-31T23:59:59Z */
+            250219065599000, /* 9899-02-15T23:59:59Z */
+    };
+    for (auto notBefore : test_vector_not_before_millis) {
+        uint64_t notAfter = notBefore + 378691200000 /* 12 years milliseconds*/;
+        ASSERT_EQ(ErrorCode::OK,
+                  GenerateKey(AuthorizationSetBuilder()
+                                      .RsaSigningKey(2048, 65537)
+                                      .Digest(Digest::NONE)
+                                      .Padding(PaddingMode::NONE)
+                                      .Authorization(TAG_CERTIFICATE_NOT_BEFORE, notBefore)
+                                      .Authorization(TAG_CERTIFICATE_NOT_AFTER, notAfter),
+                              &key_blob, &key_characteristics));
+        ASSERT_GT(cert_chain_.size(), 0);
 
-    X509_Ptr cert(parse_cert_blob(cert_chain_[0].encodedCertificate));
-    ASSERT_TRUE(!!cert.get());
+        X509_Ptr cert(parse_cert_blob(cert_chain_[0].encodedCertificate));
+        ASSERT_TRUE(!!cert.get());
 
-    const ASN1_TIME* not_before = X509_get0_notBefore(cert.get());
-    ASSERT_NE(not_before, nullptr);
-    time_t not_before_time;
-    ASSERT_EQ(ASN1_TIME_to_time_t(not_before, &not_before_time), 1);
-    EXPECT_EQ(not_before_time, 1183806000);
+        const ASN1_TIME* not_before = X509_get0_notBefore(cert.get());
+        ASSERT_NE(not_before, nullptr);
+        time_t not_before_time;
+        ASSERT_EQ(ASN1_TIME_to_time_t(not_before, &not_before_time), 1);
+        EXPECT_EQ(not_before_time, (notBefore / 1000));
 
-    const ASN1_TIME* not_after = X509_get0_notAfter(cert.get());
-    ASSERT_NE(not_after, nullptr);
-    time_t not_after_time;
-    ASSERT_EQ(ASN1_TIME_to_time_t(not_after, &not_after_time), 1);
-    EXPECT_EQ(not_after_time, 1916049600);
+        const ASN1_TIME* not_after = X509_get0_notAfter(cert.get());
+        ASSERT_NE(not_after, nullptr);
+        time_t not_after_time;
+        ASSERT_EQ(ASN1_TIME_to_time_t(not_after, &not_after_time), 1);
+        EXPECT_EQ(not_after_time, (notAfter / 1000));
+    }
 }
 
 /*
diff --git a/security/keymint/support/remote_prov_utils_test.cpp b/security/keymint/support/remote_prov_utils_test.cpp
index 630f7bb..89469f1 100644
--- a/security/keymint/support/remote_prov_utils_test.cpp
+++ b/security/keymint/support/remote_prov_utils_test.cpp
@@ -14,20 +14,23 @@
  * limitations under the License.
  */
 
-#include "cppbor.h"
-#include "keymaster/cppcose/cppcose.h"
 #include <aidl/android/hardware/security/keymint/RpcHardwareInfo.h>
 #include <android-base/properties.h>
+#include <cppbor.h>
 #include <cppbor_parse.h>
-#include <cstdint>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 #include <keymaster/android_keymaster_utils.h>
+#include <keymaster/cppcose/cppcose.h>
 #include <keymaster/logger.h>
 #include <keymaster/remote_provisioning_utils.h>
 #include <openssl/curve25519.h>
 #include <remote_prov/remote_prov_utils.h>
 
+#include <algorithm>
+#include <cstdint>
+#include <span>
+
 namespace aidl::android::hardware::security::keymint::remote_prov {
 namespace {
 
@@ -36,7 +39,11 @@
 using ::keymaster::kStatusInvalidEek;
 using ::keymaster::StatusOr;
 using ::testing::ElementsAreArray;
-using byte_view = std::basic_string_view<uint8_t>;
+using byte_view = std::span<const uint8_t>;
+
+inline bool equal_byte_views(const byte_view& view1, const byte_view& view2) {
+    return std::equal(view1.begin(), view1.end(), view2.begin(), view2.end());
+}
 
 struct KeyInfoEcdsa {
     CoseKeyCurve curve;
@@ -44,7 +51,8 @@
     byte_view pubKeyY;
 
     bool operator==(const KeyInfoEcdsa& other) const {
-        return curve == other.curve && pubKeyX == other.pubKeyX && pubKeyY == other.pubKeyY;
+        return curve == other.curve && equal_byte_views(pubKeyX, other.pubKeyX) &&
+               equal_byte_views(pubKeyY, other.pubKeyY);
     }
 };
 
diff --git a/security/secretkeeper/aidl/Android.bp b/security/secretkeeper/aidl/Android.bp
index ac923ca..5307bf9 100644
--- a/security/secretkeeper/aidl/Android.bp
+++ b/security/secretkeeper/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_virtualization",
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
diff --git a/security/secretkeeper/aidl/vts/Android.bp b/security/secretkeeper/aidl/vts/Android.bp
index 0061e88..e6521ae 100644
--- a/security/secretkeeper/aidl/vts/Android.bp
+++ b/security/secretkeeper/aidl/vts/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_virtualization",
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
diff --git a/security/secretkeeper/aidl/vts/dice_sample.rs b/security/secretkeeper/aidl/vts/dice_sample.rs
index db532b1..97b4789 100644
--- a/security/secretkeeper/aidl/vts/dice_sample.rs
+++ b/security/secretkeeper/aidl/vts/dice_sample.rs
@@ -18,9 +18,16 @@
 //! module duplicates a large chunk of code in libdiced_sample_inputs. We avoid modifying the
 //! latter for testing purposes because it is installed on device.
 
-use ciborium::{de, ser, value::Value};
+use crate::{
+    COMPONENT_NAME, COMPONENT_RESETTABLE, COMPONENT_VERSION, SUBCOMPONENT_AUTHORITY_HASH,
+    SUBCOMPONENT_CODE_HASH, SUBCOMPONENT_DESCRIPTORS, SUBCOMPONENT_NAME,
+    SUBCOMPONENT_SECURITY_VERSION,
+};
+use ciborium::{cbor, de, ser, value::Value};
 use core::ffi::CStr;
-use coset::{iana, Algorithm, AsCborValue, CoseKey, KeyOperation, KeyType, Label};
+use coset::{
+    iana, Algorithm, AsCborValue, CborSerializable, CoseKey, KeyOperation, KeyType, Label,
+};
 use diced_open_dice::{
     derive_cdi_private_key_seed, keypair_from_seed, retry_bcc_format_config_descriptor,
     retry_bcc_main_flow, retry_dice_main_flow, Config, DiceArtifacts, DiceConfigValues, DiceError,
@@ -100,7 +107,8 @@
 ///
 /// The DICE chain is of the following format:
 /// public key derived from UDS -> ABL certificate -> AVB certificate -> Android certificate
-/// The `security_version` is included in the Android certificate.
+/// The `security_version` is included in the Android certificate as well as each subcomponent
+/// of AVB certificate.
 pub fn make_explicit_owned_dice(security_version: u64) -> OwnedDiceArtifactsWithExplicitKey {
     let dice = make_sample_bcc_and_cdis(security_version);
     OwnedDiceArtifactsWithExplicitKey::from_owned_artifacts(dice).unwrap()
@@ -135,16 +143,31 @@
     ser::into_writer(&bcc_value, &mut bcc).unwrap();
 
     // Appends AVB certificate to DICE chain.
-    let config_values = DiceConfigValues {
-        component_name: Some(CStr::from_bytes_with_nul(b"AVB\0").unwrap()),
-        component_version: Some(1),
-        resettable: true,
-        ..Default::default()
-    };
-    let config_descriptor = retry_bcc_format_config_descriptor(&config_values).unwrap();
+    let config_desc = cbor!({
+        COMPONENT_NAME => "AVB",
+        COMPONENT_VERSION => 1,
+        COMPONENT_RESETTABLE => null,
+        SUBCOMPONENT_DESCRIPTORS => [
+            {
+                SUBCOMPONENT_NAME => "sub_1",
+                SUBCOMPONENT_SECURITY_VERSION => security_version,
+                SUBCOMPONENT_CODE_HASH=> b"xoxo",
+                SUBCOMPONENT_AUTHORITY_HASH => b"oxox"
+            },
+            {
+                SUBCOMPONENT_NAME => "sub_2",
+                SUBCOMPONENT_SECURITY_VERSION => security_version,
+                SUBCOMPONENT_CODE_HASH => b"xoxo",
+                SUBCOMPONENT_AUTHORITY_HASH => b"oxox",
+            }
+        ]
+    })
+    .unwrap()
+    .to_vec()
+    .unwrap();
     let input_values = InputValues::new(
         CODE_HASH_AVB,
-        Config::Descriptor(config_descriptor.as_slice()),
+        Config::Descriptor(&config_desc),
         AUTHORITY_HASH_AVB,
         DiceMode::kDiceModeNormal,
         HIDDEN_AVB,
diff --git a/security/secretkeeper/aidl/vts/lib.rs b/security/secretkeeper/aidl/vts/lib.rs
index 9f98165..3afe938 100644
--- a/security/secretkeeper/aidl/vts/lib.rs
+++ b/security/secretkeeper/aidl/vts/lib.rs
@@ -28,7 +28,19 @@
 pub const COMPONENT_NAME: i64 = -70002;
 /// Map key for component version.
 pub const COMPONENT_VERSION: i64 = -70003;
+/// Map key for Resettable.
+pub const COMPONENT_RESETTABLE: i64 = -70004;
 /// Map key for security version.
 pub const SECURITY_VERSION: i64 = -70005;
 /// Map key for mode.
 pub const MODE: i64 = -4670551;
+/// Map key for SubcomponentDescriptor.
+pub const SUBCOMPONENT_DESCRIPTORS: i64 = -71002;
+/// Map key for name of subcomponent.
+pub const SUBCOMPONENT_NAME: i64 = 1;
+/// Map key for Security Version of subcomponent.
+pub const SUBCOMPONENT_SECURITY_VERSION: i64 = 2;
+/// Map key for Code hash of subcomponent.
+pub const SUBCOMPONENT_CODE_HASH: i64 = 3;
+/// Map key for Authority Hash of subcomponent.
+pub const SUBCOMPONENT_AUTHORITY_HASH: i64 = 4;
diff --git a/security/secretkeeper/aidl/vts/secretkeeper_cli.rs b/security/secretkeeper/aidl/vts/secretkeeper_cli.rs
index 0c13811..d02bfe6 100644
--- a/security/secretkeeper/aidl/vts/secretkeeper_cli.rs
+++ b/security/secretkeeper/aidl/vts/secretkeeper_cli.rs
@@ -24,7 +24,10 @@
 use authgraph_core::traits::Sha256;
 use clap::{Args, Parser, Subcommand};
 use coset::CborSerializable;
-use dice_policy_builder::{ConstraintSpec, ConstraintType, MissingAction, policy_for_dice_chain};
+use dice_policy_builder::{
+    policy_for_dice_chain, CertIndex, ConstraintSpec, ConstraintType, MissingAction,
+    WILDCARD_FULL_ARRAY,
+};
 
 use secretkeeper_client::{dice::OwnedDiceArtifactsWithExplicitKey, SkSession};
 use secretkeeper_comm::data_types::{
@@ -37,6 +40,7 @@
 };
 use secretkeeper_test::{
     dice_sample::make_explicit_owned_dice, AUTHORITY_HASH, CONFIG_DESC, MODE, SECURITY_VERSION,
+    SUBCOMPONENT_AUTHORITY_HASH, SUBCOMPONENT_DESCRIPTORS, SUBCOMPONENT_SECURITY_VERSION,
 };
 use std::io::Write;
 
@@ -139,12 +143,42 @@
                 ConstraintType::ExactMatch,
                 vec![AUTHORITY_HASH],
                 MissingAction::Fail,
+                CertIndex::All,
             ),
-            ConstraintSpec::new(ConstraintType::ExactMatch, vec![MODE], MissingAction::Fail),
+            ConstraintSpec::new(
+                ConstraintType::ExactMatch,
+                vec![MODE],
+                MissingAction::Fail,
+                CertIndex::All,
+            ),
             ConstraintSpec::new(
                 ConstraintType::GreaterOrEqual,
                 vec![CONFIG_DESC, SECURITY_VERSION],
                 MissingAction::Ignore,
+                CertIndex::All,
+            ),
+            // Constraints on sub components in the second last DiceChainEntry
+            ConstraintSpec::new(
+                ConstraintType::GreaterOrEqual,
+                vec![
+                    CONFIG_DESC,
+                    SUBCOMPONENT_DESCRIPTORS,
+                    WILDCARD_FULL_ARRAY,
+                    SUBCOMPONENT_SECURITY_VERSION,
+                ],
+                MissingAction::Fail,
+                CertIndex::FromEnd(1),
+            ),
+            ConstraintSpec::new(
+                ConstraintType::ExactMatch,
+                vec![
+                    CONFIG_DESC,
+                    SUBCOMPONENT_DESCRIPTORS,
+                    WILDCARD_FULL_ARRAY,
+                    SUBCOMPONENT_AUTHORITY_HASH,
+                ],
+                MissingAction::Fail,
+                CertIndex::FromEnd(1),
             ),
         ];
         policy_for_dice_chain(dice, &constraint_spec)
diff --git a/security/secretkeeper/aidl/vts/secretkeeper_test_client.rs b/security/secretkeeper/aidl/vts/secretkeeper_test_client.rs
index 483aed6..72d3e57 100644
--- a/security/secretkeeper/aidl/vts/secretkeeper_test_client.rs
+++ b/security/secretkeeper/aidl/vts/secretkeeper_test_client.rs
@@ -20,7 +20,7 @@
 use authgraph_boringssl as boring;
 use authgraph_core::key;
 use coset::{CborSerializable, CoseEncrypt0};
-use dice_policy_builder::{ConstraintSpec, ConstraintType, MissingAction, policy_for_dice_chain};
+use dice_policy_builder::{CertIndex, ConstraintSpec, ConstraintType, MissingAction, WILDCARD_FULL_ARRAY, policy_for_dice_chain};
 use rdroidtest::{ignore_if, rdroidtest};
 use secretkeeper_client::dice::OwnedDiceArtifactsWithExplicitKey;
 use secretkeeper_client::SkSession;
@@ -34,13 +34,13 @@
 use secretkeeper_comm::data_types::response::Response;
 use secretkeeper_comm::data_types::packet::{ResponsePacket, ResponseType};
 use secretkeeper_test::{
-    AUTHORITY_HASH, MODE, CONFIG_DESC, SECURITY_VERSION,
+    AUTHORITY_HASH, MODE, CONFIG_DESC, SECURITY_VERSION, SUBCOMPONENT_AUTHORITY_HASH,
+    SUBCOMPONENT_DESCRIPTORS, SUBCOMPONENT_SECURITY_VERSION,
     dice_sample::make_explicit_owned_dice
 };
 
 const SECRETKEEPER_SERVICE: &str = "android.hardware.security.secretkeeper.ISecretkeeper";
 const CURRENT_VERSION: u64 = 1;
-
 // Random bytes (of ID_SIZE/SECRET_SIZE) generated for tests.
 const ID_EXAMPLE: Id = Id([
     0xF1, 0xB2, 0xED, 0x3B, 0xD1, 0xBD, 0xF0, 0x7D, 0xE1, 0xF0, 0x01, 0xFC, 0x61, 0x71, 0xD3, 0x42,
@@ -171,7 +171,16 @@
 
     /// Helper method to get a secret.
     fn get(&mut self, id: &Id) -> Result<Secret, Error> {
-        let get_request = GetSecretRequest { id: id.clone(), updated_sealing_policy: None };
+        self.get_update_policy(id, None)
+    }
+
+    /// Helper method to get a secret, updating the sealing policy along the way.
+    fn get_update_policy(
+        &mut self,
+        id: &Id,
+        updated_sealing_policy: Option<Vec<u8>>,
+    ) -> Result<Secret, Error> {
+        let get_request = GetSecretRequest { id: id.clone(), updated_sealing_policy };
         let get_request = get_request.serialize_to_packet().to_vec()?;
 
         let get_response = self.secret_management_request(&get_request)?;
@@ -247,14 +256,51 @@
 /// 1. ExactMatch on AUTHORITY_HASH (non-optional).
 /// 2. ExactMatch on MODE (non-optional).
 /// 3. GreaterOrEqual on SECURITY_VERSION (optional).
+/// 4. The second last DiceChainEntry contain SubcomponentDescriptor, for each of those:
+///     a) GreaterOrEqual on SECURITY_VERSION (Required)
+//      b) ExactMatch on AUTHORITY_HASH (Required).
 fn sealing_policy(dice: &[u8]) -> Vec<u8> {
     let constraint_spec = [
-        ConstraintSpec::new(ConstraintType::ExactMatch, vec![AUTHORITY_HASH], MissingAction::Fail),
-        ConstraintSpec::new(ConstraintType::ExactMatch, vec![MODE], MissingAction::Fail),
+        ConstraintSpec::new(
+            ConstraintType::ExactMatch,
+            vec![AUTHORITY_HASH],
+            MissingAction::Fail,
+            CertIndex::All,
+        ),
+        ConstraintSpec::new(
+            ConstraintType::ExactMatch,
+            vec![MODE],
+            MissingAction::Fail,
+            CertIndex::All,
+        ),
         ConstraintSpec::new(
             ConstraintType::GreaterOrEqual,
             vec![CONFIG_DESC, SECURITY_VERSION],
             MissingAction::Ignore,
+            CertIndex::All,
+        ),
+        // Constraints on sub components in the second last DiceChainEntry
+        ConstraintSpec::new(
+            ConstraintType::GreaterOrEqual,
+            vec![
+                CONFIG_DESC,
+                SUBCOMPONENT_DESCRIPTORS,
+                WILDCARD_FULL_ARRAY,
+                SUBCOMPONENT_SECURITY_VERSION,
+            ],
+            MissingAction::Fail,
+            CertIndex::FromEnd(1),
+        ),
+        ConstraintSpec::new(
+            ConstraintType::ExactMatch,
+            vec![
+                CONFIG_DESC,
+                SUBCOMPONENT_DESCRIPTORS,
+                WILDCARD_FULL_ARRAY,
+                SUBCOMPONENT_AUTHORITY_HASH,
+            ],
+            MissingAction::Fail,
+            CertIndex::FromEnd(1),
         ),
     ];
 
@@ -532,8 +578,9 @@
 #[rdroidtest(get_instances())]
 fn secret_management_policy_gate(instance: String) {
     let dice_chain = make_explicit_owned_dice(/*Security version in a node */ 100);
-    let mut sk_client = SkClient::with_identity(&instance, dice_chain);
-    sk_client.store(&ID_EXAMPLE, &SECRET_EXAMPLE).unwrap();
+    let mut sk_client_original = SkClient::with_identity(&instance, dice_chain);
+    sk_client_original.store(&ID_EXAMPLE, &SECRET_EXAMPLE).unwrap();
+    assert_eq!(sk_client_original.get(&ID_EXAMPLE).unwrap(), SECRET_EXAMPLE);
 
     // Start a session with higher security_version & get the stored secret.
     let dice_chain_upgraded = make_explicit_owned_dice(/*Security version in a node */ 101);
@@ -547,6 +594,20 @@
         sk_client_downgraded.get(&ID_EXAMPLE).unwrap_err(),
         Error::SecretkeeperError(SecretkeeperError::DicePolicyError)
     ));
+
+    // Now get the secret with the later version, and upgrade the sealing policy along the way.
+    let sealing_policy =
+        sealing_policy(sk_client_upgraded.dice_artifacts.explicit_key_dice_chain().unwrap());
+    assert_eq!(
+        sk_client_upgraded.get_update_policy(&ID_EXAMPLE, Some(sealing_policy)).unwrap(),
+        SECRET_EXAMPLE
+    );
+
+    // The original version of the client should no longer be able to retrieve the secret.
+    assert!(matches!(
+        sk_client_original.get(&ID_EXAMPLE).unwrap_err(),
+        Error::SecretkeeperError(SecretkeeperError::DicePolicyError)
+    ));
 }
 
 // Helper method that constructs 3 SecretManagement requests. Callers would usually not care about
diff --git a/security/secretkeeper/default/Android.bp b/security/secretkeeper/default/Android.bp
index d8ccb63..799188f 100644
--- a/security/secretkeeper/default/Android.bp
+++ b/security/secretkeeper/default/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_virtualization",
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
diff --git a/security/secretkeeper/default/src/main.rs b/security/secretkeeper/default/src/main.rs
index 436f9a7..081b97d 100644
--- a/security/secretkeeper/default/src/main.rs
+++ b/security/secretkeeper/default/src/main.rs
@@ -16,7 +16,7 @@
 
 //! Non-secure implementation of the Secretkeeper HAL.
 
-use log::{error, info, Level};
+use log::{error, info, LevelFilter};
 use secretkeeper_hal::SecretkeeperService;
 use secretkeeper_nonsecure::{AuthGraphChannel, SecretkeeperChannel, LocalTa};
 use std::sync::{Arc, Mutex};
@@ -29,8 +29,8 @@
     android_logger::init_once(
         android_logger::Config::default()
             .with_tag("NonSecureSecretkeeper")
-            .with_min_level(Level::Info)
-            .with_log_id(android_logger::LogId::System),
+            .with_max_level(LevelFilter::Info)
+            .with_log_buffer(android_logger::LogId::System),
     );
     // Redirect panic messages to logcat.
     std::panic::set_hook(Box::new(|panic_info| {
diff --git a/sensors/aidl/Android.bp b/sensors/aidl/Android.bp
index 3914ec1..8877e6e 100644
--- a/sensors/aidl/Android.bp
+++ b/sensors/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/aidl/convert/Android.bp b/sensors/aidl/convert/Android.bp
index 53060b9..7217b2f 100644
--- a/sensors/aidl/convert/Android.bp
+++ b/sensors/aidl/convert/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/aidl/default/Android.bp b/sensors/aidl/default/Android.bp
index e93c391..6f011ee 100644
--- a/sensors/aidl/default/Android.bp
+++ b/sensors/aidl/default/Android.bp
@@ -15,6 +15,7 @@
  */
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/aidl/default/multihal/Android.bp b/sensors/aidl/default/multihal/Android.bp
index 40cb2d9..7482ffe 100644
--- a/sensors/aidl/default/multihal/Android.bp
+++ b/sensors/aidl/default/multihal/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/aidl/multihal/Android.bp b/sensors/aidl/multihal/Android.bp
index 522d305..cac5fc2 100644
--- a/sensors/aidl/multihal/Android.bp
+++ b/sensors/aidl/multihal/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/aidl/vts/Android.bp b/sensors/aidl/vts/Android.bp
index c17a558..1f96bb4 100644
--- a/sensors/aidl/vts/Android.bp
+++ b/sensors/aidl/vts/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/common/convert/Android.bp b/sensors/common/convert/Android.bp
index 230665e..5c6aba3 100644
--- a/sensors/common/convert/Android.bp
+++ b/sensors/common/convert/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_sensors",
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
diff --git a/sensors/common/default/2.X/Android.bp b/sensors/common/default/2.X/Android.bp
index 82c942f..300598f 100644
--- a/sensors/common/default/2.X/Android.bp
+++ b/sensors/common/default/2.X/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/common/default/2.X/multihal/Android.bp b/sensors/common/default/2.X/multihal/Android.bp
index b0ad934..c25b17a 100644
--- a/sensors/common/default/2.X/multihal/Android.bp
+++ b/sensors/common/default/2.X/multihal/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/common/default/2.X/multihal/tests/Android.bp b/sensors/common/default/2.X/multihal/tests/Android.bp
index 21d1d77..d743d1e 100644
--- a/sensors/common/default/2.X/multihal/tests/Android.bp
+++ b/sensors/common/default/2.X/multihal/tests/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/common/utils/Android.bp b/sensors/common/utils/Android.bp
index 97e857c..2aeeb14 100644
--- a/sensors/common/utils/Android.bp
+++ b/sensors/common/utils/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/common/vts/2_X/Android.bp b/sensors/common/vts/2_X/Android.bp
index 4cf6a08..e7cab6d 100644
--- a/sensors/common/vts/2_X/Android.bp
+++ b/sensors/common/vts/2_X/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/sensors/common/vts/utils/Android.bp b/sensors/common/vts/utils/Android.bp
index b35280a..386ac33 100644
--- a/sensors/common/vts/utils/Android.bp
+++ b/sensors/common/vts/utils/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_sensors",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/soundtrigger/aidl/Android.bp b/soundtrigger/aidl/Android.bp
index aa400c1..fcbaf6b 100644
--- a/soundtrigger/aidl/Android.bp
+++ b/soundtrigger/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/soundtrigger/aidl/cli/Android.bp b/soundtrigger/aidl/cli/Android.bp
index 935e438..2d01b0b 100644
--- a/soundtrigger/aidl/cli/Android.bp
+++ b/soundtrigger/aidl/cli/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_media_audio_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/threadnetwork/aidl/default/Android.bp b/threadnetwork/aidl/default/Android.bp
index 816f892..82a76e0 100644
--- a/threadnetwork/aidl/default/Android.bp
+++ b/threadnetwork/aidl/default/Android.bp
@@ -37,6 +37,7 @@
     srcs: [
         "main.cpp",
         "service.cpp",
+        "socket_interface.cpp",
         "thread_chip.cpp",
         "utils.cpp",
     ],
@@ -63,6 +64,7 @@
     ],
 
     srcs: [
+        "socket_interface.cpp",
         "thread_chip.cpp",
         "utils.cpp",
         "fuzzer.cpp",
diff --git a/threadnetwork/aidl/default/socket_interface.cpp b/threadnetwork/aidl/default/socket_interface.cpp
new file mode 100644
index 0000000..f874209
--- /dev/null
+++ b/threadnetwork/aidl/default/socket_interface.cpp
@@ -0,0 +1,301 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ *   This file includes the implementation for the Socket interface to radio
+ * (RCP).
+ */
+
+#include "socket_interface.hpp"
+
+#include <errno.h>
+#include <openthread/logging.h>
+#include <sys/inotify.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <string>
+
+#include "common/code_utils.hpp"
+#include "openthread/openthread-system.h"
+#include "platform-posix.h"
+
+namespace aidl {
+namespace android {
+namespace hardware {
+namespace threadnetwork {
+
+SocketInterface::SocketInterface(const ot::Url::Url& aRadioUrl)
+    : mReceiveFrameCallback(nullptr),
+      mReceiveFrameContext(nullptr),
+      mReceiveFrameBuffer(nullptr),
+      mSockFd(-1),
+      mRadioUrl(aRadioUrl) {
+    memset(&mInterfaceMetrics, 0, sizeof(mInterfaceMetrics));
+    mInterfaceMetrics.mRcpInterfaceType = kSpinelInterfaceTypeVendor;
+}
+
+otError SocketInterface::Init(ReceiveFrameCallback aCallback, void* aCallbackContext,
+                              RxFrameBuffer& aFrameBuffer) {
+    otError error = OT_ERROR_NONE;
+
+    VerifyOrExit(mSockFd == -1, error = OT_ERROR_ALREADY);
+
+    WaitForSocketFileCreated(mRadioUrl.GetPath());
+
+    mSockFd = OpenFile(mRadioUrl);
+    VerifyOrExit(mSockFd != -1, error = OT_ERROR_FAILED);
+
+    mReceiveFrameCallback = aCallback;
+    mReceiveFrameContext = aCallbackContext;
+    mReceiveFrameBuffer = &aFrameBuffer;
+
+exit:
+    return error;
+}
+
+SocketInterface::~SocketInterface(void) {
+    Deinit();
+}
+
+void SocketInterface::Deinit(void) {
+    CloseFile();
+
+    mReceiveFrameCallback = nullptr;
+    mReceiveFrameContext = nullptr;
+    mReceiveFrameBuffer = nullptr;
+}
+
+otError SocketInterface::SendFrame(const uint8_t* aFrame, uint16_t aLength) {
+    Write(aFrame, aLength);
+
+    return OT_ERROR_NONE;
+}
+
+otError SocketInterface::WaitForFrame(uint64_t aTimeoutUs) {
+    otError error = OT_ERROR_NONE;
+    struct timeval timeout;
+    timeout.tv_sec = static_cast<time_t>(aTimeoutUs / US_PER_S);
+    timeout.tv_usec = static_cast<suseconds_t>(aTimeoutUs % US_PER_S);
+
+    fd_set readFds;
+    fd_set errorFds;
+    int rval;
+
+    FD_ZERO(&readFds);
+    FD_ZERO(&errorFds);
+    FD_SET(mSockFd, &readFds);
+    FD_SET(mSockFd, &errorFds);
+
+    rval = TEMP_FAILURE_RETRY(select(mSockFd + 1, &readFds, nullptr, &errorFds, &timeout));
+
+    if (rval > 0) {
+        if (FD_ISSET(mSockFd, &readFds)) {
+            Read();
+        } else if (FD_ISSET(mSockFd, &errorFds)) {
+            DieNowWithMessage("RCP error", OT_EXIT_FAILURE);
+        } else {
+            DieNow(OT_EXIT_FAILURE);
+        }
+    } else if (rval == 0) {
+        ExitNow(error = OT_ERROR_RESPONSE_TIMEOUT);
+    } else {
+        DieNowWithMessage("wait response", OT_EXIT_FAILURE);
+    }
+
+exit:
+    return error;
+}
+
+void SocketInterface::UpdateFdSet(void* aMainloopContext) {
+    otSysMainloopContext* context = reinterpret_cast<otSysMainloopContext*>(aMainloopContext);
+
+    assert(context != nullptr);
+
+    FD_SET(mSockFd, &context->mReadFdSet);
+
+    if (context->mMaxFd < mSockFd) {
+        context->mMaxFd = mSockFd;
+    }
+}
+
+void SocketInterface::Process(const void* aMainloopContext) {
+    const otSysMainloopContext* context =
+            reinterpret_cast<const otSysMainloopContext*>(aMainloopContext);
+
+    assert(context != nullptr);
+
+    if (FD_ISSET(mSockFd, &context->mReadFdSet)) {
+        Read();
+    }
+}
+
+void SocketInterface::Read(void) {
+    uint8_t buffer[kMaxFrameSize];
+
+    ssize_t rval = TEMP_FAILURE_RETRY(read(mSockFd, buffer, sizeof(buffer)));
+
+    if (rval > 0) {
+        ProcessReceivedData(buffer, static_cast<uint16_t>(rval));
+    } else if (rval < 0) {
+        DieNow(OT_EXIT_ERROR_ERRNO);
+    } else {
+        otLogCritPlat("Socket connection is closed by remote.");
+        exit(OT_EXIT_FAILURE);
+    }
+}
+
+void SocketInterface::Write(const uint8_t* aFrame, uint16_t aLength) {
+    ssize_t rval = TEMP_FAILURE_RETRY(write(mSockFd, aFrame, aLength));
+    VerifyOrDie(rval >= 0, OT_EXIT_ERROR_ERRNO);
+    VerifyOrDie(rval > 0, OT_EXIT_FAILURE);
+}
+
+void SocketInterface::ProcessReceivedData(const uint8_t* aBuffer, uint16_t aLength) {
+    while (aLength--) {
+        uint8_t byte = *aBuffer++;
+        if (mReceiveFrameBuffer->CanWrite(sizeof(uint8_t))) {
+            IgnoreError(mReceiveFrameBuffer->WriteByte(byte));
+        } else {
+            HandleSocketFrame(this, OT_ERROR_NO_BUFS);
+            return;
+        }
+    }
+    HandleSocketFrame(this, OT_ERROR_NONE);
+}
+
+void SocketInterface::HandleSocketFrame(void* aContext, otError aError) {
+    static_cast<SocketInterface*>(aContext)->HandleSocketFrame(aError);
+}
+
+void SocketInterface::HandleSocketFrame(otError aError) {
+    VerifyOrExit((mReceiveFrameCallback != nullptr) && (mReceiveFrameBuffer != nullptr));
+
+    if (aError == OT_ERROR_NONE) {
+        mReceiveFrameCallback(mReceiveFrameContext);
+    } else {
+        mReceiveFrameBuffer->DiscardFrame();
+        otLogWarnPlat("Process socket frame failed: %s", otThreadErrorToString(aError));
+    }
+
+exit:
+    return;
+}
+
+int SocketInterface::OpenFile(const ot::Url::Url& aRadioUrl) {
+    int fd = -1;
+    sockaddr_un serverAddress;
+
+    VerifyOrExit(sizeof(serverAddress.sun_path) > strlen(aRadioUrl.GetPath()),
+                 otLogCritPlat("Invalid file path length"));
+    strncpy(serverAddress.sun_path, aRadioUrl.GetPath(), sizeof(serverAddress.sun_path));
+    serverAddress.sun_family = AF_UNIX;
+
+    fd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
+    VerifyOrExit(fd != -1, otLogCritPlat("open(): errno=%s", strerror(errno)));
+
+    if (connect(fd, reinterpret_cast<struct sockaddr*>(&serverAddress), sizeof(serverAddress)) ==
+        -1) {
+        otLogCritPlat("connect(): errno=%s", strerror(errno));
+        close(fd);
+        fd = -1;
+    }
+
+exit:
+    return fd;
+}
+
+void SocketInterface::CloseFile(void) {
+    VerifyOrExit(mSockFd != -1);
+
+    VerifyOrExit(0 == close(mSockFd), otLogCritPlat("close(): errno=%s", strerror(errno)));
+    VerifyOrExit(wait(nullptr) != -1 || errno == ECHILD,
+                 otLogCritPlat("wait(): errno=%s", strerror(errno)));
+
+    mSockFd = -1;
+
+exit:
+    return;
+}
+
+void SocketInterface::WaitForSocketFileCreated(const char* aPath) {
+    int inotifyFd;
+    int wd;
+    int lastSlashIdx;
+    std::string folderPath;
+    std::string socketPath(aPath);
+
+    VerifyOrExit(!IsSocketFileExisted(aPath));
+
+    inotifyFd = inotify_init();
+    VerifyOrDie(inotifyFd != -1, OT_EXIT_ERROR_ERRNO);
+
+    lastSlashIdx = socketPath.find_last_of('/');
+    VerifyOrDie(lastSlashIdx != std::string::npos, OT_EXIT_ERROR_ERRNO);
+
+    folderPath = socketPath.substr(0, lastSlashIdx);
+    wd = inotify_add_watch(inotifyFd, folderPath.c_str(), IN_CREATE);
+    VerifyOrDie(wd != -1, OT_EXIT_ERROR_ERRNO);
+
+    otLogInfoPlat("Waiting for socket file %s be created...", aPath);
+
+    while (true) {
+        fd_set fds;
+        FD_ZERO(&fds);
+        FD_SET(inotifyFd, &fds);
+        struct timeval timeout = {kMaxSelectTimeMs / MS_PER_S,
+                                  (kMaxSelectTimeMs % MS_PER_S) * MS_PER_S};
+
+        int rval = select(inotifyFd + 1, &fds, nullptr, nullptr, &timeout);
+        VerifyOrDie(rval >= 0, OT_EXIT_ERROR_ERRNO);
+
+        if (rval == 0 && IsSocketFileExisted(aPath)) {
+            break;
+        }
+
+        if (FD_ISSET(inotifyFd, &fds)) {
+            char buffer[sizeof(struct inotify_event)];
+            ssize_t bytesRead = read(inotifyFd, buffer, sizeof(buffer));
+
+            VerifyOrDie(bytesRead >= 0, OT_EXIT_ERROR_ERRNO);
+
+            struct inotify_event* event = reinterpret_cast<struct inotify_event*>(buffer);
+            if ((event->mask & IN_CREATE) && IsSocketFileExisted(aPath)) {
+                break;
+            }
+        }
+    }
+
+    close(inotifyFd);
+
+exit:
+    otLogInfoPlat("Socket file: %s is created", aPath);
+    return;
+}
+
+bool SocketInterface::IsSocketFileExisted(const char* aPath) {
+    struct stat st;
+    return stat(aPath, &st) == 0 && S_ISSOCK(st.st_mode);
+}
+
+}  // namespace threadnetwork
+}  // namespace hardware
+}  // namespace android
+}  // namespace aidl
diff --git a/threadnetwork/aidl/default/socket_interface.hpp b/threadnetwork/aidl/default/socket_interface.hpp
new file mode 100644
index 0000000..f88e926
--- /dev/null
+++ b/threadnetwork/aidl/default/socket_interface.hpp
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @file
+ *   This file includes definitions for the Socket interface interface to radio
+ * (RCP).
+ */
+
+#include "lib/spinel/spinel_interface.hpp"
+#include "lib/url/url.hpp"
+
+namespace aidl {
+namespace android {
+namespace hardware {
+namespace threadnetwork {
+
+/**
+ * Defines a Socket interface to the Radio Co-processor (RCP)
+ *
+ */
+class SocketInterface : public ot::Spinel::SpinelInterface {
+  public:
+    /**
+     * Initializes the object.
+     *
+     * @param[in] aRadioUrl  RadioUrl parsed from radio url.
+     *
+     */
+    explicit SocketInterface(const ot::Url::Url& aRadioUrl);
+
+    /**
+     * This destructor deinitializes the object.
+     *
+     */
+    ~SocketInterface();
+
+    /**
+     * Initializes the interface to the Radio Co-processor (RCP)
+     *
+     * @note This method should be called before reading and sending Spinel
+     * frames to the interface.
+     *
+     * @param[in] aCallback         Callback on frame received
+     * @param[in] aCallbackContext  Callback context
+     * @param[in] aFrameBuffer      A reference to a `RxFrameBuffer` object.
+     *
+     * @retval OT_ERROR_NONE       The interface is initialized successfully
+     * @retval OT_ERROR_ALREADY    The interface is already initialized.
+     * @retval OT_ERROR_FAILED     Failed to initialize the interface.
+     *
+     */
+    otError Init(ReceiveFrameCallback aCallback, void* aCallbackContext,
+                 RxFrameBuffer& aFrameBuffer);
+
+    /**
+     * Deinitializes the interface to the RCP.
+     *
+     */
+    void Deinit(void);
+
+    /**
+     * Sends a Spinel frame to Radio Co-processor (RCP) over the
+     * socket.
+     *
+     * @param[in] aFrame     A pointer to buffer containing the Spinel frame to
+     * send.
+     * @param[in] aLength    The length (number of bytes) in the frame.
+     *
+     * @retval OT_ERROR_NONE     Successfully sent the Spinel frame.
+     * @retval OT_ERROR_FAILED   Failed to send a frame.
+     *
+     */
+    otError SendFrame(const uint8_t* aFrame, uint16_t aLength);
+
+    /**
+     * Waits for receiving part or all of Spinel frame within specified
+     * interval.
+     *
+     * @param[in]  aTimeout  The timeout value in microseconds.
+     *
+     * @retval OT_ERROR_NONE             Part or all of Spinel frame is
+     * received.
+     * @retval OT_ERROR_RESPONSE_TIMEOUT No Spinel frame is received within @p
+     * aTimeout.
+     * @retval OT_EXIT_FAILURE           RCP error
+     *
+     */
+    otError WaitForFrame(uint64_t aTimeoutUs);
+
+    /**
+     * Updates the file descriptor sets with file descriptors used by the radio
+     * driver.
+     *
+     * @param[in,out]   aMainloopContext  A pointer to the mainloop context
+     * containing fd_sets.
+     *
+     */
+    void UpdateFdSet(void* aMainloopContext);
+
+    /**
+     * Performs radio driver processing.
+     *
+     * @param[in]   aMainloopContext  A pointer to the mainloop context
+     * containing fd_sets.
+     *
+     */
+    void Process(const void* aMainloopContext);
+
+    /**
+     * Returns the bus speed between the host and the radio.
+     *
+     * @return   Bus speed in bits/second.
+     *
+     */
+    uint32_t GetBusSpeed(void) const { return 1000000; }
+
+    /**
+     * Hardware resets the RCP.
+     *
+     * @retval OT_ERROR_NONE            Successfully reset the RCP.
+     * @retval OT_ERROR_NOT_IMPLEMENT   The hardware reset is not implemented.
+     *
+     */
+    otError HardwareReset(void) { return OT_ERROR_NOT_IMPLEMENTED; }
+
+    /**
+     * Returns the RCP interface metrics.
+     *
+     * @return The RCP interface metrics.
+     *
+     */
+    const otRcpInterfaceMetrics* GetRcpInterfaceMetrics(void) const { return &mInterfaceMetrics; }
+
+    /**
+     * Indicates whether or not the given interface matches this interface name.
+     *
+     * @param[in] aInterfaceName A pointer to the interface name.
+     *
+     * @retval TRUE   The given interface name matches this interface name.
+     * @retval FALSE  The given interface name doesn't match this interface
+     * name.
+     */
+    static bool IsInterfaceNameMatch(const char* aInterfaceName) {
+        static const char kInterfaceName[] = "spinel+socket";
+        return (strncmp(aInterfaceName, kInterfaceName, strlen(kInterfaceName)) == 0);
+    }
+
+  private:
+    /**
+     * Instructs `SocketInterface` to read data from radio over the
+     * socket.
+     *
+     * If a full Spinel frame is received, this method invokes the
+     * `HandleSocketFrame()` (on the `aCallback` object from constructor) to
+     * pass the received frame to be processed.
+     *
+     */
+    void Read(void);
+
+    /**
+     * Writes a given frame to the socket.
+     *
+     * @param[in] aFrame  A pointer to buffer containing the frame to write.
+     * @param[in] aLength The length (number of bytes) in the frame.
+     *
+     */
+    void Write(const uint8_t* aFrame, uint16_t aLength);
+
+    /**
+     * Process received data.
+     *
+     * If a full frame is finished processing and we obtain the raw Spinel
+     * frame, this method invokes the `HandleSocketFrame()` (on the `aCallback`
+     * object from constructor) to pass the received frame to be processed.
+     *
+     * @param[in] aBuffer  A pointer to buffer containing data.
+     * @param[in] aLength  The length (number of bytes) in the buffer.
+     *
+     */
+    void ProcessReceivedData(const uint8_t* aBuffer, uint16_t aLength);
+
+    static void HandleSocketFrame(void* aContext, otError aError);
+    void HandleSocketFrame(otError aError);
+
+    /**
+     * Opens file specified by aRadioUrl.
+     *
+     * @param[in] aRadioUrl  A reference to object containing path to file and
+     * data for configuring the connection with tty type file.
+     *
+     * @retval The file descriptor of newly opened file.
+     * @retval -1 Fail to open file.
+     *
+     */
+    int OpenFile(const ot::Url::Url& aRadioUrl);
+
+    /**
+     * Closes file associated with the file descriptor.
+     *
+     */
+    void CloseFile(void);
+
+    /**
+     * Check if socket file is created.
+     *
+     * @param[in] aPath  Socket file path name.
+     *
+     * @retval TRUE The required socket file is created.
+     * @retval FALSE The required socket file is not created.
+     *
+     */
+    bool IsSocketFileExisted(const char* aPath);
+
+    /**
+     * Wait until the socket file is created.
+     *
+     * @param[in] aPath  Socket file path name.
+     *
+     */
+    void WaitForSocketFileCreated(const char* aPath);
+
+    enum {
+        kMaxSelectTimeMs = 2000,  ///< Maximum wait time in Milliseconds for file
+                                  ///< descriptor to become available.
+    };
+
+    ReceiveFrameCallback mReceiveFrameCallback;
+    void* mReceiveFrameContext;
+    RxFrameBuffer* mReceiveFrameBuffer;
+
+    int mSockFd;
+    const ot::Url::Url& mRadioUrl;
+
+    otRcpInterfaceMetrics mInterfaceMetrics;
+
+    // Non-copyable, intentionally not implemented.
+    SocketInterface(const SocketInterface&);
+    SocketInterface& operator=(const SocketInterface&);
+};
+
+}  // namespace threadnetwork
+}  // namespace hardware
+}  // namespace android
+}  // namespace aidl
diff --git a/threadnetwork/aidl/default/thread_chip.cpp b/threadnetwork/aidl/default/thread_chip.cpp
index ed34e63..d1e1d4c 100644
--- a/threadnetwork/aidl/default/thread_chip.cpp
+++ b/threadnetwork/aidl/default/thread_chip.cpp
@@ -24,6 +24,7 @@
 #include <utils/Log.h>
 
 #include "hdlc_interface.hpp"
+#include "socket_interface.hpp"
 #include "spi_interface.hpp"
 
 namespace aidl {
@@ -43,6 +44,8 @@
         mSpinelInterface = std::make_shared<ot::Posix::SpiInterface>(mUrl);
     } else if (ot::Posix::HdlcInterface::IsInterfaceNameMatch(interfaceName)) {
         mSpinelInterface = std::make_shared<ot::Posix::HdlcInterface>(mUrl);
+    } else if (SocketInterface::IsInterfaceNameMatch(interfaceName)) {
+        mSpinelInterface = std::make_shared<SocketInterface>(mUrl);
     } else {
         ALOGE("The interface \"%s\" is not supported", interfaceName);
         exit(EXIT_FAILURE);
diff --git a/tv/cec/1.0/Android.bp b/tv/cec/1.0/Android.bp
index 889399a..836f265 100644
--- a/tv/cec/1.0/Android.bp
+++ b/tv/cec/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/tv/cec/1.0/default/Android.bp b/tv/cec/1.0/default/Android.bp
index e4c226d..abde1f2 100644
--- a/tv/cec/1.0/default/Android.bp
+++ b/tv/cec/1.0/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/tv/cec/1.0/vts/functional/Android.bp b/tv/cec/1.0/vts/functional/Android.bp
index 9a2c714..4022043 100644
--- a/tv/cec/1.0/vts/functional/Android.bp
+++ b/tv/cec/1.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/tv/cec/1.1/Android.bp b/tv/cec/1.1/Android.bp
index 27b4f03..bdfb64c 100644
--- a/tv/cec/1.1/Android.bp
+++ b/tv/cec/1.1/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/tv/cec/1.1/default/Android.bp b/tv/cec/1.1/default/Android.bp
index b536d23..0b93cf3 100644
--- a/tv/cec/1.1/default/Android.bp
+++ b/tv/cec/1.1/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/tv/cec/1.1/vts/functional/Android.bp b/tv/cec/1.1/vts/functional/Android.bp
index 5a6548d..f8ca804 100644
--- a/tv/cec/1.1/vts/functional/Android.bp
+++ b/tv/cec/1.1/vts/functional/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/tv/hdmi/cec/aidl/Android.bp b/tv/hdmi/cec/aidl/Android.bp
index 53cb5a9..11d3af2 100644
--- a/tv/hdmi/cec/aidl/Android.bp
+++ b/tv/hdmi/cec/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/hdmi/cec/aidl/default/Android.bp b/tv/hdmi/cec/aidl/default/Android.bp
index ea4bb94..71efb09 100644
--- a/tv/hdmi/cec/aidl/default/Android.bp
+++ b/tv/hdmi/cec/aidl/default/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/hdmi/cec/aidl/vts/functional/Android.bp b/tv/hdmi/cec/aidl/vts/functional/Android.bp
index 5c86d3f..32ad7c6 100644
--- a/tv/hdmi/cec/aidl/vts/functional/Android.bp
+++ b/tv/hdmi/cec/aidl/vts/functional/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/hdmi/connection/aidl/Android.bp b/tv/hdmi/connection/aidl/Android.bp
index ff7e166..552b52c 100644
--- a/tv/hdmi/connection/aidl/Android.bp
+++ b/tv/hdmi/connection/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/hdmi/connection/aidl/default/Android.bp b/tv/hdmi/connection/aidl/default/Android.bp
index 5e7e330..926ff42 100644
--- a/tv/hdmi/connection/aidl/default/Android.bp
+++ b/tv/hdmi/connection/aidl/default/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/hdmi/connection/aidl/vts/functional/Android.bp b/tv/hdmi/connection/aidl/vts/functional/Android.bp
index fc8e2f7..3b74e06 100644
--- a/tv/hdmi/connection/aidl/vts/functional/Android.bp
+++ b/tv/hdmi/connection/aidl/vts/functional/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/hdmi/earc/aidl/Android.bp b/tv/hdmi/earc/aidl/Android.bp
index d08e46d..7e88b27 100644
--- a/tv/hdmi/earc/aidl/Android.bp
+++ b/tv/hdmi/earc/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/hdmi/earc/aidl/default/Android.bp b/tv/hdmi/earc/aidl/default/Android.bp
index 5d56c2a..55337d7 100644
--- a/tv/hdmi/earc/aidl/default/Android.bp
+++ b/tv/hdmi/earc/aidl/default/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/hdmi/earc/aidl/vts/functional/Android.bp b/tv/hdmi/earc/aidl/vts/functional/Android.bp
index 36fbf56..b33ad8e 100644
--- a/tv/hdmi/earc/aidl/vts/functional/Android.bp
+++ b/tv/hdmi/earc/aidl/vts/functional/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_tv_os",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/tv/input/aidl/Android.bp b/tv/input/aidl/Android.bp
index 35f510a..5543901 100644
--- a/tv/input/aidl/Android.bp
+++ b/tv/input/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/tv/input/aidl/default/Android.bp b/tv/input/aidl/default/Android.bp
index 05af6a9..67015fb 100644
--- a/tv/input/aidl/default/Android.bp
+++ b/tv/input/aidl/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/tv/input/aidl/vts/functional/Android.bp b/tv/input/aidl/vts/functional/Android.bp
index 22487ea..ccbce7d 100644
--- a/tv/input/aidl/vts/functional/Android.bp
+++ b/tv/input/aidl/vts/functional/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_tv_os",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/uwb/aidl/Android.bp b/uwb/aidl/Android.bp
index 3e71913..abd6a23 100755
--- a/uwb/aidl/Android.bp
+++ b/uwb/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_fwk_uwb",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/uwb/aidl/default/Android.bp b/uwb/aidl/default/Android.bp
index 8af1678..eba18cf 100644
--- a/uwb/aidl/default/Android.bp
+++ b/uwb/aidl/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_fwk_uwb",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/uwb/aidl/default/src/service.rs b/uwb/aidl/default/src/service.rs
index 7d5c073..e97b291 100644
--- a/uwb/aidl/default/src/service.rs
+++ b/uwb/aidl/default/src/service.rs
@@ -6,7 +6,7 @@
 use std::env;
 use std::panic;
 
-use log::Level;
+use log::LevelFilter;
 
 mod uwb;
 mod uwb_chip;
@@ -14,7 +14,7 @@
 fn main() -> anyhow::Result<()> {
     logger::init(
         logger::Config::default()
-            .with_min_level(Level::Debug)
+            .with_max_level(LevelFilter::Debug)
             .with_tag_on_device("android.hardware.uwb"),
     );
 
diff --git a/uwb/aidl/vts/Android.bp b/uwb/aidl/vts/Android.bp
index 4d9f653..1beaa6e 100644
--- a/uwb/aidl/vts/Android.bp
+++ b/uwb/aidl/vts/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_fwk_uwb",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/vibrator/aidl/Android.bp b/vibrator/aidl/Android.bp
index c5936e3..b5199e2 100644
--- a/vibrator/aidl/Android.bp
+++ b/vibrator/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_haptics_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/vibrator/aidl/default/Android.bp b/vibrator/aidl/default/Android.bp
index fb71a82..0f342db 100644
--- a/vibrator/aidl/default/Android.bp
+++ b/vibrator/aidl/default/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_haptics_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/vibrator/aidl/default/apex/Android.bp b/vibrator/aidl/default/apex/Android.bp
index 39626bf..b694e1f 100644
--- a/vibrator/aidl/default/apex/Android.bp
+++ b/vibrator/aidl/default/apex/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_haptics_framework",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/vibrator/aidl/default/example_java_client/Android.bp b/vibrator/aidl/default/example_java_client/Android.bp
index 17a649c..5f1e27a 100644
--- a/vibrator/aidl/default/example_java_client/Android.bp
+++ b/vibrator/aidl/default/example_java_client/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_haptics_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/vibrator/aidl/vts/Android.bp b/vibrator/aidl/vts/Android.bp
index 1261870..b6d2fb2 100644
--- a/vibrator/aidl/vts/Android.bp
+++ b/vibrator/aidl/vts/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_haptics_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/vibrator/bench/Android.bp b/vibrator/bench/Android.bp
index 73e274f..87bdab4 100644
--- a/vibrator/bench/Android.bp
+++ b/vibrator/bench/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_haptics_framework",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/weaver/aidl/Android.bp b/weaver/aidl/Android.bp
index 38d017f..c494d29 100644
--- a/weaver/aidl/Android.bp
+++ b/weaver/aidl/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_android_hardware_backed_security",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/weaver/aidl/default/Android.bp b/weaver/aidl/default/Android.bp
index 494cb1b..2a62b99 100644
--- a/weaver/aidl/default/Android.bp
+++ b/weaver/aidl/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_hardware_backed_security",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/weaver/vts/Android.bp b/weaver/vts/Android.bp
index ee03b28..4139a28 100644
--- a/weaver/vts/Android.bp
+++ b/weaver/vts/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_android_hardware_backed_security",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/weaver/vts/VtsHalWeaverTargetTest.cpp b/weaver/vts/VtsHalWeaverTargetTest.cpp
index 754d467..40e9558 100644
--- a/weaver/vts/VtsHalWeaverTargetTest.cpp
+++ b/weaver/vts/VtsHalWeaverTargetTest.cpp
@@ -222,9 +222,8 @@
     }
     // Starting in Android 14, the system will always use at least one Weaver slot if Weaver is
     // supported at all.  Make sure we saw at least one.
-    // TODO: uncomment after Android 14 is merged into AOSP
-    // ASSERT_FALSE(used_slots.empty())
-    //<< "Could not determine which Weaver slots are in use by the system";
+    ASSERT_FALSE(used_slots.empty())
+            << "Could not determine which Weaver slots are in use by the system";
 
     // Find the first free slot.
     int found = 0;
diff --git a/wifi/aidl/Android.bp b/wifi/aidl/Android.bp
index 7bc8ae7..09424d6 100644
--- a/wifi/aidl/Android.bp
+++ b/wifi/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/aidl/default/Android.bp b/wifi/aidl/default/Android.bp
index 91d609d..2e97880 100644
--- a/wifi/aidl/default/Android.bp
+++ b/wifi/aidl/default/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     default_applicable_licenses: ["hardware_interfaces_license"],
 }
 
diff --git a/wifi/aidl/vts/functional/Android.bp b/wifi/aidl/vts/functional/Android.bp
index 1277182..6ab5a4b 100644
--- a/wifi/aidl/vts/functional/Android.bp
+++ b/wifi/aidl/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/aidl/vts/functional/wifi_sta_iface_aidl_test.cpp b/wifi/aidl/vts/functional/wifi_sta_iface_aidl_test.cpp
index fa7149f..e456e49 100644
--- a/wifi/aidl/vts/functional/wifi_sta_iface_aidl_test.cpp
+++ b/wifi/aidl/vts/functional/wifi_sta_iface_aidl_test.cpp
@@ -74,7 +74,17 @@
         return testing::deviceSupportsFeature("com.google.android.tv.mdns_offload");
     }
 
-    // Detected panel TV device by using ro.oem.key1 property.
+    bool doesDeviceSupportFullNetworkingUnder2w() {
+        return testing::deviceSupportsFeature("com.google.android.tv.full_networking_under_2w");
+    }
+
+    // Detect TV devices.
+    bool isTvDevice() {
+        return testing::deviceSupportsFeature("android.software.leanback") ||
+               testing::deviceSupportsFeature("android.hardware.type.television");
+    }
+
+    // Detect Panel TV devices by using ro.oem.key1 property.
     // https://docs.partner.android.com/tv/build/platform/props-vars/ro-oem-key1
     bool isPanelTvDevice() {
         const std::string oem_key1 = getPropertyString("ro.oem.key1");
@@ -135,10 +145,23 @@
  */
 // @VsrTest = 5.3.12
 TEST_P(WifiStaIfaceAidlTest, CheckApfIsSupported) {
-    // Flat panel TV devices that support MDNS offload do not have to implement APF if the WiFi
-    // chipset does not have sufficient RAM to do so.
-    if (isPanelTvDevice() && isMdnsOffloadPresentInNIC()) {
-        GTEST_SKIP() << "Panel TV supports mDNS offload. It is not required to support APF";
+    const std::string oem_key1 = getPropertyString("ro.oem.key1");
+    if (isTvDevice()) {
+        // Flat panel TV devices that support MDNS offload do not have to implement APF if the WiFi
+        // chipset does not have sufficient RAM to do so.
+        if (isPanelTvDevice() && isMdnsOffloadPresentInNIC()) {
+            GTEST_SKIP() << "Panel TV supports mDNS offload. It is not required to support APF";
+        }
+        // For TV devices declaring the
+        // com.google.android.tv.full_networking_under_2w feature, this indicates
+        // the device can meet the <= 2W standby power requirement while
+        // continuously processing network packets on the CPU, even in standby mode.
+        // In these cases, APF support is strongly recommended rather than being
+        // mandatory.
+        if (doesDeviceSupportFullNetworkingUnder2w()) {
+            GTEST_SKIP() << "TV Device meets the <= 2W standby power demand requirement. It is not "
+                            "required to support APF.";
+        }
     }
     int vendor_api_level = property_get_int32("ro.vendor.api_level", 0);
     // Before VSR 14, APF support is optional.
diff --git a/wifi/hostapd/1.0/Android.bp b/wifi/hostapd/1.0/Android.bp
index b9a84d6..38083e7 100644
--- a/wifi/hostapd/1.0/Android.bp
+++ b/wifi/hostapd/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/hostapd/1.0/vts/functional/Android.bp b/wifi/hostapd/1.0/vts/functional/Android.bp
index daf5b60..a44ae6d 100644
--- a/wifi/hostapd/1.0/vts/functional/Android.bp
+++ b/wifi/hostapd/1.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
@@ -28,7 +29,7 @@
     defaults: ["VtsHalTargetTestDefaults"],
     srcs: ["hostapd_hidl_test_utils.cpp"],
     export_include_dirs: [
-        "."
+        ".",
     ],
     static_libs: [
         "VtsHalWifiV1_0TargetTestUtil",
@@ -57,5 +58,8 @@
         "libwifi-system",
         "libwifi-system-iface",
     ],
-    test_suites: ["general-tests", "vts"],
+    test_suites: [
+        "general-tests",
+        "vts",
+    ],
 }
diff --git a/wifi/hostapd/1.1/Android.bp b/wifi/hostapd/1.1/Android.bp
index c90b68d..27b8079 100644
--- a/wifi/hostapd/1.1/Android.bp
+++ b/wifi/hostapd/1.1/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/hostapd/1.1/vts/functional/Android.bp b/wifi/hostapd/1.1/vts/functional/Android.bp
index 999a6a7..196730e 100644
--- a/wifi/hostapd/1.1/vts/functional/Android.bp
+++ b/wifi/hostapd/1.1/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/hostapd/1.2/Android.bp b/wifi/hostapd/1.2/Android.bp
index c8bf2f8..15446af 100644
--- a/wifi/hostapd/1.2/Android.bp
+++ b/wifi/hostapd/1.2/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/hostapd/1.2/vts/functional/Android.bp b/wifi/hostapd/1.2/vts/functional/Android.bp
index 26edab5..411110b 100644
--- a/wifi/hostapd/1.2/vts/functional/Android.bp
+++ b/wifi/hostapd/1.2/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/hostapd/1.3/Android.bp b/wifi/hostapd/1.3/Android.bp
index f75b5e2..5598327 100644
--- a/wifi/hostapd/1.3/Android.bp
+++ b/wifi/hostapd/1.3/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/hostapd/1.3/vts/functional/Android.bp b/wifi/hostapd/1.3/vts/functional/Android.bp
index 78cd4af..50ecc28 100644
--- a/wifi/hostapd/1.3/vts/functional/Android.bp
+++ b/wifi/hostapd/1.3/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/hostapd/aidl/Android.bp b/wifi/hostapd/aidl/Android.bp
index 54895c1..756bce7 100644
--- a/wifi/hostapd/aidl/Android.bp
+++ b/wifi/hostapd/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/hostapd/aidl/vts/functional/Android.bp b/wifi/hostapd/aidl/vts/functional/Android.bp
index ff35056..03d5048 100644
--- a/wifi/hostapd/aidl/vts/functional/Android.bp
+++ b/wifi/hostapd/aidl/vts/functional/Android.bp
@@ -1,4 +1,5 @@
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/netlinkinterceptor/aidl/Android.bp b/wifi/netlinkinterceptor/aidl/Android.bp
index 2f7f34f..8c04e31 100644
--- a/wifi/netlinkinterceptor/aidl/Android.bp
+++ b/wifi/netlinkinterceptor/aidl/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/netlinkinterceptor/aidl/default/Android.bp b/wifi/netlinkinterceptor/aidl/default/Android.bp
index c3a0c03..6bdd9fc 100644
--- a/wifi/netlinkinterceptor/aidl/default/Android.bp
+++ b/wifi/netlinkinterceptor/aidl/default/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/netlinkinterceptor/libnlinterceptor/Android.bp b/wifi/netlinkinterceptor/libnlinterceptor/Android.bp
index 671cd85..9b278b6 100644
--- a/wifi/netlinkinterceptor/libnlinterceptor/Android.bp
+++ b/wifi/netlinkinterceptor/libnlinterceptor/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/netlinkinterceptor/vts/functional/Android.bp b/wifi/netlinkinterceptor/vts/functional/Android.bp
index 80608a7..30766c0 100644
--- a/wifi/netlinkinterceptor/vts/functional/Android.bp
+++ b/wifi/netlinkinterceptor/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.0/Android.bp b/wifi/supplicant/1.0/Android.bp
index 89a0907..3449e40 100644
--- a/wifi/supplicant/1.0/Android.bp
+++ b/wifi/supplicant/1.0/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.0/vts/functional/Android.bp b/wifi/supplicant/1.0/vts/functional/Android.bp
index 2d86822..353e57b 100644
--- a/wifi/supplicant/1.0/vts/functional/Android.bp
+++ b/wifi/supplicant/1.0/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.1/Android.bp b/wifi/supplicant/1.1/Android.bp
index f925671..e2582e5 100644
--- a/wifi/supplicant/1.1/Android.bp
+++ b/wifi/supplicant/1.1/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.1/vts/functional/Android.bp b/wifi/supplicant/1.1/vts/functional/Android.bp
index 68cda33..215c1ca 100644
--- a/wifi/supplicant/1.1/vts/functional/Android.bp
+++ b/wifi/supplicant/1.1/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.2/Android.bp b/wifi/supplicant/1.2/Android.bp
index f61d9b9..c7ce010 100644
--- a/wifi/supplicant/1.2/Android.bp
+++ b/wifi/supplicant/1.2/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.2/vts/functional/Android.bp b/wifi/supplicant/1.2/vts/functional/Android.bp
index ec3ca22..65a17a8 100644
--- a/wifi/supplicant/1.2/vts/functional/Android.bp
+++ b/wifi/supplicant/1.2/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.3/Android.bp b/wifi/supplicant/1.3/Android.bp
index 173a1ef..bbb17c2 100644
--- a/wifi/supplicant/1.3/Android.bp
+++ b/wifi/supplicant/1.3/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.3/vts/functional/Android.bp b/wifi/supplicant/1.3/vts/functional/Android.bp
index 4b56336..609de11 100644
--- a/wifi/supplicant/1.3/vts/functional/Android.bp
+++ b/wifi/supplicant/1.3/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.4/Android.bp b/wifi/supplicant/1.4/Android.bp
index c988fdb..4b94823 100644
--- a/wifi/supplicant/1.4/Android.bp
+++ b/wifi/supplicant/1.4/Android.bp
@@ -1,6 +1,7 @@
 // This file is autogenerated by hidl-gen -Landroidbp.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/1.4/vts/functional/Android.bp b/wifi/supplicant/1.4/vts/functional/Android.bp
index 57ee830..def3b86 100644
--- a/wifi/supplicant/1.4/vts/functional/Android.bp
+++ b/wifi/supplicant/1.4/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/aidl/Android.bp b/wifi/supplicant/aidl/Android.bp
index ac5a952..f26ff49 100644
--- a/wifi/supplicant/aidl/Android.bp
+++ b/wifi/supplicant/aidl/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"
diff --git a/wifi/supplicant/aidl/vts/functional/Android.bp b/wifi/supplicant/aidl/vts/functional/Android.bp
index f7c619a..03a7087 100644
--- a/wifi/supplicant/aidl/vts/functional/Android.bp
+++ b/wifi/supplicant/aidl/vts/functional/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_fwk_wifi_hal",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "hardware_interfaces_license"