Merge "Bluetooth AIDL: Set max thread count to 0"
diff --git a/audio/aidl/default/EffectThread.cpp b/audio/aidl/default/EffectThread.cpp
index 844127d..574dc69 100644
--- a/audio/aidl/default/EffectThread.cpp
+++ b/audio/aidl/default/EffectThread.cpp
@@ -14,13 +14,18 @@
* limitations under the License.
*/
+#include <cstddef>
#include <memory>
+
#define LOG_TAG "AHAL_EffectThread"
#include <android-base/logging.h>
#include <pthread.h>
#include <sys/resource.h>
#include "effect-impl/EffectThread.h"
+#include "effect-impl/EffectTypes.h"
+
+using ::android::hardware::EventFlag;
namespace aidl::android::hardware::audio::effect {
@@ -31,23 +36,35 @@
EffectThread::~EffectThread() {
destroyThread();
LOG(DEBUG) << __func__ << " done";
-};
+}
RetCode EffectThread::createThread(std::shared_ptr<EffectContext> context, const std::string& name,
- int priority, int sleepUs /* kSleepTimeUs */) {
+ int priority) {
if (mThread.joinable()) {
- LOG(WARNING) << "-" << mName << "-" << __func__ << " thread already created, no-op";
+ LOG(WARNING) << mName << __func__ << " thread already created, no-op";
return RetCode::SUCCESS;
}
mName = name;
mPriority = priority;
- mSleepTimeUs = sleepUs;
{
std::lock_guard lg(mThreadMutex);
mThreadContext = std::move(context);
+ auto statusMQ = mThreadContext->getStatusFmq();
+ EventFlag* efGroup = nullptr;
+ ::android::status_t status =
+ EventFlag::createEventFlag(statusMQ->getEventFlagWord(), &efGroup);
+ if (status != ::android::OK || !efGroup) {
+ LOG(ERROR) << mName << __func__ << " create EventFlagGroup failed " << status
+ << " efGroup " << efGroup;
+ return RetCode::ERROR_THREAD;
+ }
+ mEfGroup.reset(efGroup);
+ // kickoff and wait for commands (CommandId::START/STOP) or IEffect.close from client
+ mEfGroup->wake(kEventFlagNotEmpty);
}
+
mThread = std::thread(&EffectThread::threadLoop, this);
- LOG(DEBUG) << "-" << mName << "-" << __func__ << " priority " << mPriority << " done";
+ LOG(DEBUG) << mName << __func__ << " priority " << mPriority << " done";
return RetCode::SUCCESS;
}
@@ -66,37 +83,31 @@
std::lock_guard lg(mThreadMutex);
mThreadContext.reset();
}
- LOG(DEBUG) << "-" << mName << "-" << __func__ << " done";
+ LOG(DEBUG) << mName << __func__;
return RetCode::SUCCESS;
}
RetCode EffectThread::startThread() {
- return handleStartStop(false /* stop */);
+ {
+ std::lock_guard lg(mThreadMutex);
+ mStop = false;
+ mCv.notify_one();
+ }
+
+ mEfGroup->wake(kEventFlagNotEmpty);
+ LOG(DEBUG) << mName << __func__;
+ return RetCode::SUCCESS;
}
RetCode EffectThread::stopThread() {
- return handleStartStop(true /* stop */);
-}
-
-RetCode EffectThread::handleStartStop(bool stop) {
- if (!mThread.joinable()) {
- LOG(ERROR) << "-" << mName << "-" << __func__ << ": "
- << " thread already destroyed";
- return RetCode::ERROR_THREAD;
- }
-
{
std::lock_guard lg(mThreadMutex);
- if (stop == mStop) {
- LOG(WARNING) << "-" << mName << "-" << __func__ << ": "
- << " already " << (stop ? "stop" : "start");
- return RetCode::SUCCESS;
- }
- mStop = stop;
+ mStop = true;
+ mCv.notify_one();
}
- mCv.notify_one();
- LOG(DEBUG) << ": " << mName << (stop ? " stop done" : " start done");
+ mEfGroup->wake(kEventFlagNotEmpty);
+ LOG(DEBUG) << mName << __func__;
return RetCode::SUCCESS;
}
@@ -104,42 +115,42 @@
pthread_setname_np(pthread_self(), mName.substr(0, kMaxTaskNameLen - 1).c_str());
setpriority(PRIO_PROCESS, 0, mPriority);
while (true) {
- std::unique_lock l(mThreadMutex);
- ::android::base::ScopedLockAssertion lock_assertion(mThreadMutex);
- mCv.wait(l, [&]() REQUIRES(mThreadMutex) { return mExit || !mStop; });
- if (mExit) {
- LOG(WARNING) << __func__ << " EXIT!";
- return;
+ /**
+ * wait for the EventFlag without lock, it's ok because the mEfGroup pointer will not change
+ * in the life cycle of workerThread (threadLoop).
+ */
+ uint32_t efState = 0;
+ mEfGroup->wait(kEventFlagNotEmpty, &efState);
+
+ {
+ std::unique_lock l(mThreadMutex);
+ ::android::base::ScopedLockAssertion lock_assertion(mThreadMutex);
+ mCv.wait(l, [&]() REQUIRES(mThreadMutex) { return mExit || !mStop; });
+ if (mExit) {
+ LOG(INFO) << __func__ << " EXIT!";
+ return;
+ }
+ process_l();
}
- process_l();
}
}
void EffectThread::process_l() {
RETURN_VALUE_IF(!mThreadContext, void(), "nullContext");
- std::shared_ptr<EffectContext::StatusMQ> statusMQ = mThreadContext->getStatusFmq();
- std::shared_ptr<EffectContext::DataMQ> inputMQ = mThreadContext->getInputDataFmq();
- std::shared_ptr<EffectContext::DataMQ> outputMQ = mThreadContext->getOutputDataFmq();
+
+ auto statusMQ = mThreadContext->getStatusFmq();
+ auto inputMQ = mThreadContext->getInputDataFmq();
+ auto outputMQ = mThreadContext->getOutputDataFmq();
auto buffer = mThreadContext->getWorkBuffer();
- // Only this worker will read from input data MQ and write to output data MQ.
- auto readSamples = inputMQ->availableToRead(), writeSamples = outputMQ->availableToWrite();
- if (readSamples && writeSamples) {
- auto processSamples = std::min(readSamples, writeSamples);
- LOG(DEBUG) << "-" << mName << "-" << __func__ << ": "
- << " available to read " << readSamples << " available to write " << writeSamples
- << " process " << processSamples;
-
+ auto processSamples = inputMQ->availableToRead();
+ if (processSamples) {
inputMQ->read(buffer, processSamples);
-
IEffect::Status status = effectProcessImpl(buffer, buffer, processSamples);
outputMQ->write(buffer, status.fmqProduced);
statusMQ->writeBlocking(&status, 1);
- LOG(DEBUG) << "-" << mName << "-" << __func__ << ": "
- << " done processing, effect consumed " << status.fmqConsumed << " produced "
- << status.fmqProduced;
- } else {
- usleep(mSleepTimeUs);
+ LOG(DEBUG) << mName << __func__ << ": done processing, effect consumed "
+ << status.fmqConsumed << " produced " << status.fmqProduced;
}
}
diff --git a/audio/aidl/default/include/effect-impl/EffectContext.h b/audio/aidl/default/include/effect-impl/EffectContext.h
index 8b4a7d2..22cdb6b 100644
--- a/audio/aidl/default/include/effect-impl/EffectContext.h
+++ b/audio/aidl/default/include/effect-impl/EffectContext.h
@@ -54,6 +54,7 @@
size_t inBufferSizeInFloat = input.frameCount * mInputFrameSize / sizeof(float);
size_t outBufferSizeInFloat = output.frameCount * mOutputFrameSize / sizeof(float);
+ // only status FMQ use the EventFlag
mStatusMQ = std::make_shared<StatusMQ>(statusDepth, true /*configureEventFlagWord*/);
mInputMQ = std::make_shared<DataMQ>(inBufferSizeInFloat);
mOutputMQ = std::make_shared<DataMQ>(outBufferSizeInFloat);
@@ -127,7 +128,7 @@
return RetCode::SUCCESS;
}
virtual Parameter::Common getCommon() {
- LOG(INFO) << __func__ << mCommon.toString();
+ LOG(DEBUG) << __func__ << mCommon.toString();
return mCommon;
}
diff --git a/audio/aidl/default/include/effect-impl/EffectThread.h b/audio/aidl/default/include/effect-impl/EffectThread.h
index f9c6a31..ae51ef7 100644
--- a/audio/aidl/default/include/effect-impl/EffectThread.h
+++ b/audio/aidl/default/include/effect-impl/EffectThread.h
@@ -16,10 +16,12 @@
#pragma once
#include <atomic>
+#include <memory>
#include <string>
#include <thread>
#include <android-base/thread_annotations.h>
+#include <fmq/EventFlag.h>
#include <system/thread_defs.h>
#include "effect-impl/EffectContext.h"
@@ -35,7 +37,7 @@
// called by effect implementation.
RetCode createThread(std::shared_ptr<EffectContext> context, const std::string& name,
- int priority = ANDROID_PRIORITY_URGENT_AUDIO, int sleepUs = kSleepTimeUs);
+ int priority = ANDROID_PRIORITY_URGENT_AUDIO);
RetCode destroyThread();
RetCode startThread();
RetCode stopThread();
@@ -73,17 +75,23 @@
private:
static constexpr int kMaxTaskNameLen = 15;
- static constexpr int kSleepTimeUs = 2000; // in micro-second
+
std::mutex mThreadMutex;
std::condition_variable mCv;
- bool mExit GUARDED_BY(mThreadMutex) = false;
bool mStop GUARDED_BY(mThreadMutex) = true;
+ bool mExit GUARDED_BY(mThreadMutex) = false;
std::shared_ptr<EffectContext> mThreadContext GUARDED_BY(mThreadMutex);
+
+ struct EventFlagDeleter {
+ void operator()(::android::hardware::EventFlag* flag) const {
+ if (flag) {
+ ::android::hardware::EventFlag::deleteEventFlag(&flag);
+ }
+ }
+ };
+ std::unique_ptr<::android::hardware::EventFlag, EventFlagDeleter> mEfGroup;
std::thread mThread;
int mPriority;
- int mSleepTimeUs = kSleepTimeUs; // sleep time in micro-second
std::string mName;
-
- RetCode handleStartStop(bool stop);
};
} // namespace aidl::android::hardware::audio::effect
diff --git a/audio/aidl/default/usb/ModuleUsb.cpp b/audio/aidl/default/usb/ModuleUsb.cpp
index 89895bf..ecdbd5c 100644
--- a/audio/aidl/default/usb/ModuleUsb.cpp
+++ b/audio/aidl/default/usb/ModuleUsb.cpp
@@ -132,7 +132,7 @@
std::vector<int> sampleRates = populateSampleRatesFromProfile(&profile);
for (size_t i = 0; i < std::min(MAX_PROFILE_FORMATS, AUDIO_PORT_MAX_AUDIO_PROFILES) &&
- profile.formats[i] != 0;
+ profile.formats[i] != PCM_FORMAT_INVALID;
++i) {
auto audioFormatDescription =
usb::legacy2aidl_pcm_format_AudioFormatDescription(profile.formats[i]);
diff --git a/audio/aidl/vts/EffectHelper.h b/audio/aidl/vts/EffectHelper.h
index 831977b..4e84f6b 100644
--- a/audio/aidl/vts/EffectHelper.h
+++ b/audio/aidl/vts/EffectHelper.h
@@ -41,6 +41,7 @@
using aidl::android::hardware::audio::effect::CommandId;
using aidl::android::hardware::audio::effect::Descriptor;
using aidl::android::hardware::audio::effect::IEffect;
+using aidl::android::hardware::audio::effect::kEventFlagNotEmpty;
using aidl::android::hardware::audio::effect::Parameter;
using aidl::android::hardware::audio::effect::Range;
using aidl::android::hardware::audio::effect::State;
@@ -50,6 +51,7 @@
using aidl::android::media::audio::common::AudioFormatType;
using aidl::android::media::audio::common::AudioUuid;
using aidl::android::media::audio::common::PcmType;
+using ::android::hardware::EventFlag;
const AudioFormatDescription kDefaultFormatDescription = {
.type = AudioFormatType::PCM, .pcm = PcmType::FLOAT_32_BIT, .encoding = ""};
@@ -145,12 +147,20 @@
buffer.resize(floatsToWrite);
std::fill(buffer.begin(), buffer.end(), 0x5a);
}
- static void writeToFmq(std::unique_ptr<DataMQ>& mq, const std::vector<float>& buffer) {
- const size_t available = mq->availableToWrite();
+ static void writeToFmq(std::unique_ptr<StatusMQ>& statusMq, std::unique_ptr<DataMQ>& dataMq,
+ const std::vector<float>& buffer) {
+ const size_t available = dataMq->availableToWrite();
ASSERT_NE(0Ul, available);
auto bufferFloats = buffer.size();
auto floatsToWrite = std::min(available, bufferFloats);
- ASSERT_TRUE(mq->write(buffer.data(), floatsToWrite));
+ ASSERT_TRUE(dataMq->write(buffer.data(), floatsToWrite));
+
+ EventFlag* efGroup;
+ ASSERT_EQ(::android::OK,
+ EventFlag::createEventFlag(statusMq->getEventFlagWord(), &efGroup));
+ ASSERT_NE(nullptr, efGroup);
+ efGroup->wake(kEventFlagNotEmpty);
+ ASSERT_EQ(::android::OK, EventFlag::deleteEventFlag(&efGroup));
}
static void readFromFmq(std::unique_ptr<StatusMQ>& statusMq, size_t statusNum,
std::unique_ptr<DataMQ>& dataMq, size_t expectFloats,
diff --git a/audio/aidl/vts/VtsHalAudioEffectTargetTest.cpp b/audio/aidl/vts/VtsHalAudioEffectTargetTest.cpp
index d8ad6c9..436f2a3 100644
--- a/audio/aidl/vts/VtsHalAudioEffectTargetTest.cpp
+++ b/audio/aidl/vts/VtsHalAudioEffectTargetTest.cpp
@@ -597,7 +597,7 @@
std::vector<float> buffer;
EXPECT_NO_FATAL_FAILURE(EffectHelper::allocateInputData(common, inputMQ, buffer));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ, buffer));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ, inputMQ, buffer));
EXPECT_NO_FATAL_FAILURE(
EffectHelper::readFromFmq(statusMQ, 1, outputMQ, buffer.size(), buffer));
@@ -636,7 +636,7 @@
ASSERT_NO_FATAL_FAILURE(expectState(mEffect, State::PROCESSING));
EXPECT_NO_FATAL_FAILURE(EffectHelper::allocateInputData(common, inputMQ, buffer));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ, buffer));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ, inputMQ, buffer));
EXPECT_NO_FATAL_FAILURE(
EffectHelper::readFromFmq(statusMQ, 1, outputMQ, buffer.size(), buffer));
@@ -666,7 +666,7 @@
std::vector<float> buffer;
EXPECT_NO_FATAL_FAILURE(EffectHelper::allocateInputData(common, inputMQ, buffer));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ, buffer));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ, inputMQ, buffer));
ASSERT_NO_FATAL_FAILURE(command(mEffect, CommandId::START));
ASSERT_NO_FATAL_FAILURE(expectState(mEffect, State::PROCESSING));
@@ -699,7 +699,7 @@
std::vector<float> buffer;
EXPECT_NO_FATAL_FAILURE(EffectHelper::allocateInputData(common, inputMQ, buffer));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ, buffer));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ, inputMQ, buffer));
EXPECT_NO_FATAL_FAILURE(EffectHelper::readFromFmq(statusMQ, 0, outputMQ, 0, buffer));
ASSERT_NO_FATAL_FAILURE(command(mEffect, CommandId::START));
@@ -708,7 +708,7 @@
EXPECT_NO_FATAL_FAILURE(
EffectHelper::readFromFmq(statusMQ, 1, outputMQ, buffer.size(), buffer));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ, buffer));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ, inputMQ, buffer));
EXPECT_NO_FATAL_FAILURE(
EffectHelper::readFromFmq(statusMQ, 1, outputMQ, buffer.size(), buffer));
@@ -740,13 +740,13 @@
ASSERT_NO_FATAL_FAILURE(expectState(mEffect, State::PROCESSING));
std::vector<float> buffer;
EXPECT_NO_FATAL_FAILURE(EffectHelper::allocateInputData(common, inputMQ, buffer));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ, buffer));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ, inputMQ, buffer));
EXPECT_NO_FATAL_FAILURE(
EffectHelper::readFromFmq(statusMQ, 1, outputMQ, buffer.size(), buffer));
ASSERT_NO_FATAL_FAILURE(command(mEffect, CommandId::STOP));
ASSERT_NO_FATAL_FAILURE(expectState(mEffect, State::IDLE));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ, buffer));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ, inputMQ, buffer));
EXPECT_NO_FATAL_FAILURE(EffectHelper::readFromFmq(statusMQ, 0, outputMQ, 0, buffer));
ASSERT_NO_FATAL_FAILURE(command(mEffect, CommandId::START));
@@ -781,7 +781,7 @@
std::vector<float> buffer;
EXPECT_NO_FATAL_FAILURE(EffectHelper::allocateInputData(common, inputMQ, buffer));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ, buffer));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ, inputMQ, buffer));
EXPECT_NO_FATAL_FAILURE(EffectHelper::readFromFmq(statusMQ, 0, outputMQ, 0, buffer));
ASSERT_NO_FATAL_FAILURE(destroy(mFactory, mEffect));
@@ -816,7 +816,7 @@
std::vector<float> buffer1, buffer2;
EXPECT_NO_FATAL_FAILURE(EffectHelper::allocateInputData(common1, inputMQ1, buffer1));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ1, buffer1));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ1, inputMQ1, buffer1));
EXPECT_NO_FATAL_FAILURE(
EffectHelper::readFromFmq(statusMQ1, 1, outputMQ1, buffer1.size(), buffer1));
@@ -827,7 +827,7 @@
auto outputMQ2 = std::make_unique<EffectHelper::DataMQ>(ret2.outputDataMQ);
ASSERT_TRUE(outputMQ2->isValid());
EXPECT_NO_FATAL_FAILURE(EffectHelper::allocateInputData(common2, inputMQ2, buffer2));
- EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(inputMQ2, buffer2));
+ EXPECT_NO_FATAL_FAILURE(EffectHelper::writeToFmq(statusMQ2, inputMQ2, buffer2));
EXPECT_NO_FATAL_FAILURE(
EffectHelper::readFromFmq(statusMQ2, 1, outputMQ2, buffer2.size(), buffer2));
diff --git a/automotive/can/1.0/tools/configurator/canhalconfigurator.rc b/automotive/can/1.0/tools/configurator/canhalconfigurator.rc
index ff0efd7..8ae7cb2 100644
--- a/automotive/can/1.0/tools/configurator/canhalconfigurator.rc
+++ b/automotive/can/1.0/tools/configurator/canhalconfigurator.rc
@@ -1,3 +1,4 @@
service canhalconfigurator /system_ext/bin/canhalconfigurator
class core
+ user root
oneshot
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
new file mode 100644
index 0000000..e312a3a
--- /dev/null
+++ b/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json
@@ -0,0 +1,3460 @@
+[
+ {
+ "name": "VehicleApPowerStateReqIndex",
+ "values": [
+ {
+ "name": "STATE",
+ "value": 0
+ },
+ {
+ "name": "ADDITIONAL",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "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": "TrailerState",
+ "values": [
+ {
+ "name": "UNKNOWN",
+ "value": 0
+ },
+ {
+ "name": "NOT_PRESENT",
+ "value": 1
+ },
+ {
+ "name": "PRESENT",
+ "value": 2
+ },
+ {
+ "name": "ERROR",
+ "value": 3
+ }
+ ]
+ },
+ {
+ "name": "ProcessTerminationReason",
+ "values": [
+ {
+ "name": "NOT_RESPONDING",
+ "value": 1
+ },
+ {
+ "name": "IO_OVERUSE",
+ "value": 2
+ },
+ {
+ "name": "MEMORY_OVERUSE",
+ "value": 3
+ }
+ ]
+ },
+ {
+ "name": "VehicleApPowerStateConfigFlag",
+ "values": [
+ {
+ "name": "ENABLE_DEEP_SLEEP_FLAG",
+ "value": 1
+ },
+ {
+ "name": "CONFIG_SUPPORT_TIMER_POWER_ON_FLAG",
+ "value": 2
+ },
+ {
+ "name": "ENABLE_HIBERNATION_FLAG",
+ "value": 3
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "StatusCode",
+ "values": [
+ {
+ "name": "OK",
+ "value": 0
+ },
+ {
+ "name": "TRY_AGAIN",
+ "value": 1
+ },
+ {
+ "name": "INVALID_ARG",
+ "value": 2
+ },
+ {
+ "name": "NOT_AVAILABLE",
+ "value": 3
+ },
+ {
+ "name": "ACCESS_DENIED",
+ "value": 4
+ },
+ {
+ "name": "INTERNAL_ERROR",
+ "value": 5
+ }
+ ]
+ },
+ {
+ "name": "CreateUserStatus",
+ "values": [
+ {
+ "name": "SUCCESS",
+ "value": 1
+ },
+ {
+ "name": "FAILURE",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "name": "ElectronicTollCollectionCardType",
+ "values": [
+ {
+ "name": "UNKNOWN",
+ "value": 0
+ },
+ {
+ "name": "JP_ELECTRONIC_TOLL_COLLECTION_CARD",
+ "value": 1
+ },
+ {
+ "name": "JP_ELECTRONIC_TOLL_COLLECTION_CARD_V2",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "name": "VehicleAreaMirror",
+ "values": [
+ {
+ "name": "DRIVER_LEFT",
+ "value": 1
+ },
+ {
+ "name": "DRIVER_RIGHT",
+ "value": 2
+ },
+ {
+ "name": "DRIVER_CENTER",
+ "value": 4
+ }
+ ]
+ },
+ {
+ "name": "InitialUserInfoResponseAction",
+ "values": [
+ {
+ "name": "DEFAULT",
+ "value": 0
+ },
+ {
+ "name": "SWITCH",
+ "value": 1
+ },
+ {
+ "name": "CREATE",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VmsStartSessionMessageIntegerValuesIndex",
+ "values": [
+ {
+ "name": "MESSAGE_TYPE",
+ "value": 0
+ },
+ {
+ "name": "SERVICE_ID",
+ "value": 1
+ },
+ {
+ "name": "CLIENT_ID",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "name": "VehicleOilLevel",
+ "values": [
+ {
+ "name": "CRITICALLY_LOW",
+ "value": 0
+ },
+ {
+ "name": "LOW",
+ "value": 1
+ },
+ {
+ "name": "NORMAL",
+ "value": 2
+ },
+ {
+ "name": "HIGH",
+ "value": 3
+ },
+ {
+ "name": "ERROR",
+ "value": 4
+ }
+ ]
+ },
+ {
+ "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": "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": "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
+ }
+ ]
+ },
+ {
+ "name": "EvsServiceState",
+ "values": [
+ {
+ "name": "OFF",
+ "value": 0
+ },
+ {
+ "name": "ON",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "name": "EvsServiceRequestIndex",
+ "values": [
+ {
+ "name": "TYPE",
+ "value": 0
+ },
+ {
+ "name": "STATE",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "name": "VehicleSeatOccupancyState",
+ "values": [
+ {
+ "name": "UNKNOWN",
+ "value": 0
+ },
+ {
+ "name": "VACANT",
+ "value": 1
+ },
+ {
+ "name": "OCCUPIED",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "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": "INFO_EV_BATTERY_CAPACITY",
+ "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": "EV_BATTERY_LEVEL",
+ "value": 291504905,
+ "change_mode": "VehiclePropertyChangeMode:CONTINUOUS",
+ "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": "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": "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": "HVAC_FAN_SPEED",
+ "value": 356517120
+ },
+ {
+ "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_ONLY",
+ "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": "DISPLAY_BRIGHTNESS",
+ "value": 289409539,
+ "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_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": "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": "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": "Headrest height position",
+ "value": 289409941,
+ "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": "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": "VEHICLE_MAP_SERVICE",
+ "value": 299895808,
+ "change_mode": "VehiclePropertyChangeMode:ON_CHANGE",
+ "access": "VehiclePropertyAccess:READ_WRITE"
+ },
+ {
+ "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": "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": "EvsServiceType",
+ "values": [
+ {
+ "name": "REARVIEW",
+ "value": 0
+ },
+ {
+ "name": "SURROUNDVIEW",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "name": "VehiclePropertyChangeMode",
+ "values": [
+ {
+ "name": "STATIC",
+ "value": 0
+ },
+ {
+ "name": "ON_CHANGE",
+ "value": 1
+ },
+ {
+ "name": "CONTINUOUS",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "name": "Obd2CompressionIgnitionMonitors",
+ "values": []
+ },
+ {
+ "name": "VehicleLightState",
+ "values": [
+ {
+ "name": "OFF",
+ "value": 0
+ },
+ {
+ "name": "ON",
+ "value": 1
+ },
+ {
+ "name": "DAYTIME_RUNNING",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VehiclePropertyStatus",
+ "values": [
+ {
+ "name": "AVAILABLE",
+ "value": 0
+ },
+ {
+ "name": "UNAVAILABLE",
+ "value": 1
+ },
+ {
+ "name": "ERROR",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "name": "VehicleDisplay",
+ "values": [
+ {
+ "name": "MAIN",
+ "value": 0
+ },
+ {
+ "name": "INSTRUMENT_CLUSTER",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "name": "SwitchUserStatus",
+ "values": [
+ {
+ "name": "SUCCESS",
+ "value": 1
+ },
+ {
+ "name": "FAILURE",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VehicleLightSwitch",
+ "values": [
+ {
+ "name": "OFF",
+ "value": 0
+ },
+ {
+ "name": "ON",
+ "value": 1
+ },
+ {
+ "name": "DAYTIME_RUNNING",
+ "value": 2
+ },
+ {
+ "name": "AUTOMATIC",
+ "value": 256
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "Obd2IgnitionMonitorKind",
+ "values": [
+ {
+ "name": "SPARK",
+ "value": 0
+ },
+ {
+ "name": "COMPRESSION",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VmsMessageWithLayerIntegerValuesIndex",
+ "values": [
+ {
+ "name": "MESSAGE_TYPE",
+ "value": 0
+ },
+ {
+ "name": "LAYER_TYPE",
+ "value": 1
+ },
+ {
+ "name": "LAYER_SUBTYPE",
+ "value": 2
+ },
+ {
+ "name": "LAYER_VERSION",
+ "value": 3
+ }
+ ]
+ },
+ {
+ "name": "EvRegenerativeBrakingState",
+ "values": [
+ {
+ "name": "UNKNOWN",
+ "value": 0
+ },
+ {
+ "name": "DISABLED",
+ "value": 1
+ },
+ {
+ "name": "PARTIALLY_ENABLED",
+ "value": 2
+ },
+ {
+ "name": "FULLY_ENABLED",
+ "value": 3
+ }
+ ]
+ },
+ {
+ "name": "VehiclePropertyGroup",
+ "values": [
+ {
+ "name": "SYSTEM",
+ "value": 268435456
+ },
+ {
+ "name": "VENDOR",
+ "value": 536870912
+ },
+ {
+ "name": "MASK",
+ "value": 4026531840
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VehicleHwKeyInputAction",
+ "values": [
+ {
+ "name": "ACTION_DOWN",
+ "value": 0
+ },
+ {
+ "name": "ACTION_UP",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VmsBaseMessageIntegerValuesIndex",
+ "values": [
+ {
+ "name": "MESSAGE_TYPE",
+ "value": 0
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VehicleApPowerStateReq",
+ "values": [
+ {
+ "name": "ON",
+ "value": 0
+ },
+ {
+ "name": "SHUTDOWN_PREPARE",
+ "value": 1
+ },
+ {
+ "name": "CANCEL_SHUTDOWN",
+ "value": 2
+ },
+ {
+ "name": "FINISHED",
+ "value": 3
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "Obd2CommonIgnitionMonitors",
+ "values": []
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VmsOfferingMessageIntegerValuesIndex",
+ "values": [
+ {
+ "name": "MESSAGE_TYPE",
+ "value": 0
+ },
+ {
+ "name": "PUBLISHER_ID",
+ "value": 1
+ },
+ {
+ "name": "NUMBER_OF_OFFERS",
+ "value": 2
+ },
+ {
+ "name": "OFFERING_START",
+ "value": 3
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "VehiclePropertyAccess",
+ "values": [
+ {
+ "name": "NONE",
+ "value": 0
+ },
+ {
+ "name": "READ",
+ "value": 1
+ },
+ {
+ "name": "WRITE",
+ "value": 2
+ },
+ {
+ "name": "READ_WRITE",
+ "value": 3
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "name": "Obd2SparkIgnitionMonitors",
+ "values": []
+ },
+ {
+ "name": "VehicleTurnSignal",
+ "values": [
+ {
+ "name": "NONE",
+ "value": 0
+ },
+ {
+ "name": "RIGHT",
+ "value": 1
+ },
+ {
+ "name": "LEFT",
+ "value": 2
+ }
+ ]
+ },
+ {
+ "name": "VmsPublisherInformationIntegerValuesIndex",
+ "values": [
+ {
+ "name": "MESSAGE_TYPE",
+ "value": 0
+ },
+ {
+ "name": "PUBLISHER_ID",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "name": "RotaryInputType",
+ "values": [
+ {
+ "name": "ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION",
+ "value": 0
+ },
+ {
+ "name": "ROTARY_INPUT_TYPE_AUDIO_VOLUME",
+ "value": 1
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ }
+]
\ 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
new file mode 100755
index 0000000..b2eb172
--- /dev/null
+++ b/automotive/vehicle/aidl/emu_metadata/generate_emulator_metadata.py
@@ -0,0 +1,97 @@
+#!/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_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-Fa-fxX]+)")
+
+
+class JEnum:
+ def __init__(self, name):
+ self.name = name
+ self.values = []
+
+
+class Converter:
+ # Only addition is supported for now, but that covers all existing properties except
+ # OBD diagnostics, which use bitwise shifts
+ def calculateValue(self, expression, default_value):
+ 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:
+ 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]
+
+ def parseEnumContents(self, enum: JEnum, enumValue):
+ matches = RE_COMMENT.findall(enumValue)
+ defaultValue = 0
+ for match in matches:
+ value = dict()
+ value['name'] = match[1]
+ value['value'] = self.calculateValue(match[2], defaultValue)
+ defaultValue = value['value'] + 1
+ if enum.name == "VehicleProperty":
+ block_comment = match[0]
+ self.parseBlockComment(value, block_comment)
+ enum.values.append(value)
+
+ def convert(self, input):
+ text = Path(input).read_text()
+ matches = RE_ENUM.findall(text)
+ jenums = []
+ for match in matches:
+ enum = JEnum(match[0])
+ self.parseEnumContents(enum, match[1])
+ jenums.append(enum)
+ return jenums
+
+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]
+ result = []
+ for file in os.listdir(aidl_path):
+ result.extend(Converter().convert(os.path.join(aidl_path, file)))
+ json_result = json.dumps(result, default=vars, indent=2)
+ with open(out_path, 'w') as f:
+ f.write(json_result)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/camera/provider/aidl/vts/camera_aidl_test.cpp b/camera/provider/aidl/vts/camera_aidl_test.cpp
index 137c521..ef3ce4f 100644
--- a/camera/provider/aidl/vts/camera_aidl_test.cpp
+++ b/camera/provider/aidl/vts/camera_aidl_test.cpp
@@ -148,7 +148,7 @@
const native_handle_t* releaseFenceHandle = bufferAndTimestamp.buffer.releaseFence;
if (releaseFenceHandle != nullptr && releaseFenceHandle->numFds == 1 &&
releaseFenceHandle->data[0] >= 0) {
- releaseFence = new android::Fence(releaseFenceHandle->data[0]);
+ releaseFence = new android::Fence(dup(releaseFenceHandle->data[0]));
}
if (releaseFence && releaseFence->isValid()) {
releaseFence->wait(/*ms*/ 300);
diff --git a/camera/provider/aidl/vts/camera_aidl_test.h b/camera/provider/aidl/vts/camera_aidl_test.h
index d4d9bdd..fdf312e 100644
--- a/camera/provider/aidl/vts/camera_aidl_test.h
+++ b/camera/provider/aidl/vts/camera_aidl_test.h
@@ -481,6 +481,20 @@
hasInputBuffer(hasInput),
collectedResult(1, 10),
expectedPhysicalResults(extraPhysicalResult) {}
+
+ ~InFlightRequest() {
+ for (auto& buffer : resultOutputBuffers) {
+ native_handle_t* acquireFenceHandle = const_cast<native_handle_t*>(
+ buffer.buffer.acquireFence);
+ native_handle_close(acquireFenceHandle);
+ native_handle_delete(acquireFenceHandle);
+
+ native_handle_t* releaseFenceHandle = const_cast<native_handle_t*>(
+ buffer.buffer.releaseFence);
+ native_handle_close(releaseFenceHandle);
+ native_handle_delete(releaseFenceHandle);
+ }
+ }
};
static bool matchDeviceName(const std::string& deviceName, const std::string& providerType,
diff --git a/camera/provider/aidl/vts/device_cb.cpp b/camera/provider/aidl/vts/device_cb.cpp
index ca2f904..7e0969a 100644
--- a/camera/provider/aidl/vts/device_cb.cpp
+++ b/camera/provider/aidl/vts/device_cb.cpp
@@ -428,8 +428,8 @@
bufferId,
outputBuffer,
buffer.status,
- ::android::makeFromAidl(buffer.acquireFence),
- ::android::makeFromAidl(buffer.releaseFence)};
+ ::android::dupFromAidl(buffer.acquireFence),
+ ::android::dupFromAidl(buffer.releaseFence)};
streamBufferAndTimestamp.timeStamp = systemTime();
request->resultOutputBuffers.push_back(streamBufferAndTimestamp);
}
diff --git a/compatibility_matrices/Android.bp b/compatibility_matrices/Android.bp
index 622835e..b3ca293 100644
--- a/compatibility_matrices/Android.bp
+++ b/compatibility_matrices/Android.bp
@@ -78,7 +78,19 @@
"compatibility_matrix.8.xml",
],
kernel_configs: [
- "kernel_config_current_5.15",
- "kernel_config_current_6.1",
+ "kernel_config_u_5.15",
+ "kernel_config_u_6.1",
+ ],
+}
+
+vintf_compatibility_matrix {
+ name: "framework_compatibility_matrix.9.xml",
+ stem: "compatibility_matrix.9.xml",
+ srcs: [
+ "compatibility_matrix.9.xml",
+ ],
+ kernel_configs: [
+ "kernel_config_v_5.15",
+ "kernel_config_v_6.1",
],
}
diff --git a/compatibility_matrices/Android.mk b/compatibility_matrices/Android.mk
index 6e4c419..a82a421 100644
--- a/compatibility_matrices/Android.mk
+++ b/compatibility_matrices/Android.mk
@@ -103,6 +103,7 @@
framework_compatibility_matrix.6.xml \
framework_compatibility_matrix.7.xml \
framework_compatibility_matrix.8.xml \
+ framework_compatibility_matrix.9.xml \
framework_compatibility_matrix.device.xml \
my_framework_matrix_deps += \
diff --git a/compatibility_matrices/compatibility_matrix.9.xml b/compatibility_matrices/compatibility_matrix.9.xml
new file mode 100644
index 0000000..1906325
--- /dev/null
+++ b/compatibility_matrices/compatibility_matrix.9.xml
@@ -0,0 +1,837 @@
+<compatibility-matrix version="1.0" type="framework" level="9">
+ <hal format="hidl" optional="true">
+ <name>android.hardware.audio</name>
+ <version>6.0</version>
+ <version>7.0-1</version>
+ <interface>
+ <name>IDevicesFactory</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.audio.effect</name>
+ <version>6.0</version>
+ <version>7.0</version>
+ <interface>
+ <name>IEffectsFactory</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.audio.core</name>
+ <version>1</version>
+ <interface>
+ <name>IModule</name>
+ <instance>default</instance>
+ <instance>a2dp</instance>
+ <instance>bluetooth</instance>
+ <instance>hearing_aid</instance>
+ <instance>msd</instance>
+ <instance>r_submix</instance>
+ <instance>stub</instance>
+ <instance>usb</instance>
+ </interface>
+ <interface>
+ <name>IConfig</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.audio.effect</name>
+ <version>1</version>
+ <interface>
+ <name>IFactory</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.audio.sounddose</name>
+ <version>1</version>
+ <interface>
+ <name>ISoundDoseFactory</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.authsecret</name>
+ <version>1</version>
+ <interface>
+ <name>IAuthSecret</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.authsecret</name>
+ <version>1.0</version>
+ <interface>
+ <name>IAuthSecret</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.automotive.audiocontrol</name>
+ <interface>
+ <name>IAudioControl</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.automotive.can</name>
+ <version>1.0</version>
+ <interface>
+ <name>ICanBus</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ <interface>
+ <name>ICanController</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.automotive.evs</name>
+ <interface>
+ <name>IEvsEnumerator</name>
+ <instance>default</instance>
+ <regex-instance>[a-z]+/[0-9]+</regex-instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.automotive.evs</name>
+ <version>1.0-1</version>
+ <interface>
+ <name>IEvsEnumerator</name>
+ <instance>default</instance>
+ <regex-instance>[a-z]+/[0-9]+</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.automotive.occupant_awareness</name>
+ <version>1</version>
+ <interface>
+ <name>IOccupantAwareness</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.automotive.vehicle</name>
+ <interface>
+ <name>IVehicle</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.automotive.remoteaccess</name>
+ <interface>
+ <name>IRemoteAccess</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.automotive.vehicle</name>
+ <version>2.0</version>
+ <interface>
+ <name>IVehicle</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.biometrics.face</name>
+ <version>2</version>
+ <interface>
+ <name>IFace</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.biometrics.fingerprint</name>
+ <version>2</version>
+ <interface>
+ <name>IFingerprint</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.bluetooth</name>
+ <version>1.0-1</version>
+ <interface>
+ <name>IBluetoothHci</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.bluetooth</name>
+ <interface>
+ <name>IBluetoothHci</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.bluetooth.audio</name>
+ <version>3</version>
+ <interface>
+ <name>IBluetoothAudioProviderFactory</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.boot</name>
+ <interface>
+ <name>IBootControl</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.broadcastradio</name>
+ <version>1.0-1</version>
+ <interface>
+ <name>IBroadcastRadioFactory</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.broadcastradio</name>
+ <version>2.0</version>
+ <interface>
+ <name>IBroadcastRadio</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.camera.provider</name>
+ <version>2.4-7</version>
+ <interface>
+ <name>ICameraProvider</name>
+ <regex-instance>[^/]+/[0-9]+</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true" updatable-via-apex="true">
+ <name>android.hardware.camera.provider</name>
+ <version>1</version>
+ <interface>
+ <name>ICameraProvider</name>
+ <regex-instance>[^/]+/[0-9]+</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.cas</name>
+ <interface>
+ <name>IMediaCasService</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.confirmationui</name>
+ <version>1</version>
+ <interface>
+ <name>IConfirmationUI</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.contexthub</name>
+ <interface>
+ <name>IContextHub</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true" updatable-via-apex="true">
+ <name>android.hardware.drm</name>
+ <version>1</version>
+ <interface>
+ <name>IDrmFactory</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.drm</name>
+ <version>1.3-4</version>
+ <interface>
+ <name>ICryptoFactory</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ <interface>
+ <name>IDrmFactory</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.dumpstate</name>
+ <interface>
+ <name>IDumpstateDevice</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.gatekeeper</name>
+ <version>1</version>
+ <interface>
+ <name>IGatekeeper</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.gnss</name>
+ <version>2</version>
+ <interface>
+ <name>IGnss</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.gnss.visibility_control</name>
+ <version>1</version>
+ <interface>
+ <name>IGnssVisibilityControl</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.gnss.measurement_corrections</name>
+ <version>1</version>
+ <interface>
+ <name>IMeasurementCorrectionsInterface</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" optional="true">
+ <name>android.hardware.graphics.allocator</name>
+ <!-- New, non-Go devices should use 4.0 or the AIDL hal.
+ See DeviceManifestTest.GrallocVersionCompatibility. -->
+ <version>2.0</version>
+ <version>3.0</version>
+ <version>4.0</version>
+ <interface>
+ <name>IAllocator</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.graphics.allocator</name>
+ <version>1-2</version>
+ <interface>
+ <name>IAllocator</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <!-- Either the AIDL or the HIDL composer HAL must exist on the device.
+ If the HIDL composer HAL exists, it must be at least version 2.1.
+ See DeviceManifestTest.ComposerHal -->
+ <hal format="hidl" optional="true">
+ <name>android.hardware.graphics.composer</name>
+ <version>2.1-4</version>
+ <interface>
+ <name>IComposer</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.graphics.composer3</name>
+ <version>1</version>
+ <interface>
+ <name>IComposer</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <!-- Either the native or the HIDL mapper HAL must exist on the device -->
+ <hal format="hidl" optional="true">
+ <name>android.hardware.graphics.mapper</name>
+ <!-- New, non-Go devices should use 4.0, tested in vts_treble_vintf_vendor_test -->
+ <version>2.1</version>
+ <version>3.0</version>
+ <version>4.0</version>
+ <interface>
+ <name>IMapper</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.health</name>
+ <version>1-2</version>
+ <interface>
+ <name>IHealth</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.health.storage</name>
+ <version>1</version>
+ <interface>
+ <name>IStorage</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.identity</name>
+ <version>1-5</version>
+ <interface>
+ <name>IIdentityCredentialStore</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.net.nlinterceptor</name>
+ <interface>
+ <name>IInterceptor</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.oemlock</name>
+ <version>1</version>
+ <interface>
+ <name>IOemLock</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.ir</name>
+ <version>1</version>
+ <interface>
+ <name>IConsumerIr</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.input.processor</name>
+ <version>1</version>
+ <interface>
+ <name>IInputProcessor</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.security.keymint</name>
+ <version>1-3</version>
+ <interface>
+ <name>IKeyMintDevice</name>
+ <instance>default</instance>
+ <instance>strongbox</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.security.keymint</name>
+ <version>1-3</version>
+ <interface>
+ <name>IRemotelyProvisionedComponent</name>
+ <instance>default</instance>
+ <instance>strongbox</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.light</name>
+ <version>2</version>
+ <interface>
+ <name>ILights</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.media.c2</name>
+ <version>1.0-2</version>
+ <interface>
+ <name>IComponentStore</name>
+ <regex-instance>default[0-9]*</regex-instance>
+ <regex-instance>vendor[0-9]*_software</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.media.c2</name>
+ <version>1</version>
+ <interface>
+ <name>IComponentStore</name>
+ <regex-instance>default[0-9]*</regex-instance>
+ <regex-instance>vendor[0-9]*_software</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.memtrack</name>
+ <version>1</version>
+ <interface>
+ <name>IMemtrack</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.neuralnetworks</name>
+ <version>1.0-3</version>
+ <interface>
+ <name>IDevice</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.neuralnetworks</name>
+ <version>1-4</version>
+ <interface>
+ <name>IDevice</name>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.nfc</name>
+ <interface>
+ <name>INfc</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.oemlock</name>
+ <version>1.0</version>
+ <interface>
+ <name>IOemLock</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.power</name>
+ <version>2-3</version>
+ <interface>
+ <name>IPower</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.power.stats</name>
+ <version>2</version>
+ <interface>
+ <name>IPowerStats</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.radio.config</name>
+ <version>1</version>
+ <interface>
+ <name>IRadioConfig</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.radio.data</name>
+ <version>1</version>
+ <interface>
+ <name>IRadioData</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.radio.messaging</name>
+ <version>1</version>
+ <interface>
+ <name>IRadioMessaging</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.radio.modem</name>
+ <version>1</version>
+ <interface>
+ <name>IRadioModem</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.radio.network</name>
+ <version>1</version>
+ <interface>
+ <name>IRadioNetwork</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.radio.sim</name>
+ <version>1</version>
+ <interface>
+ <name>IRadioSim</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.radio.sap</name>
+ <version>1</version>
+ <interface>
+ <name>ISap</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.radio.voice</name>
+ <version>1</version>
+ <interface>
+ <name>IRadioVoice</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ <instance>slot3</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.radio</name>
+ <version>1.2</version>
+ <interface>
+ <name>ISap</name>
+ <instance>slot1</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.renderscript</name>
+ <version>1.0</version>
+ <interface>
+ <name>IDevice</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.rebootescrow</name>
+ <version>1</version>
+ <interface>
+ <name>IRebootEscrow</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.secure_element</name>
+ <version>1</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="aidl" optional="true">
+ <name>android.hardware.security.secureclock</name>
+ <version>1</version>
+ <interface>
+ <name>ISecureClock</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.security.sharedsecret</name>
+ <version>1</version>
+ <interface>
+ <name>ISharedSecret</name>
+ <instance>default</instance>
+ <instance>strongbox</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.sensors</name>
+ <interface>
+ <name>ISensors</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.sensors</name>
+ <version>1.0</version>
+ <version>2.0-1</version>
+ <interface>
+ <name>ISensors</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.soundtrigger</name>
+ <version>2.3</version>
+ <interface>
+ <name>ISoundTriggerHw</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.soundtrigger3</name>
+ <version>1</version>
+ <interface>
+ <name>ISoundTriggerHw</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.tetheroffload.config</name>
+ <version>1.0</version>
+ <interface>
+ <name>IOffloadConfig</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.tetheroffload.control</name>
+ <version>1.1</version>
+ <interface>
+ <name>IOffloadControl</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.tetheroffload</name>
+ <version>1</version>
+ <interface>
+ <name>IOffload</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.thermal</name>
+ <version>1</version>
+ <interface>
+ <name>IThermal</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.tv.hdmi.cec</name>
+ <version>1</version>
+ <interface>
+ <name>IHdmiCec</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.tv.hdmi.earc</name>
+ <version>1</version>
+ <interface>
+ <name>IEArc</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.tv.hdmi.connection</name>
+ <version>1</version>
+ <interface>
+ <name>IHdmiConnection</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.tv.input</name>
+ <version>1.0</version>
+ <interface>
+ <name>ITvInput</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.tv.tuner</name>
+ <version>1.0-1</version>
+ <interface>
+ <name>ITuner</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.tv.tuner</name>
+ <version>1</version>
+ <interface>
+ <name>ITuner</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.usb</name>
+ <interface>
+ <name>IUsb</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.usb.gadget</name>
+ <interface>
+ <name>IUsbGadget</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.vibrator</name>
+ <version>1-2</version>
+ <interface>
+ <name>IVibrator</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.vibrator</name>
+ <version>1-2</version>
+ <interface>
+ <name>IVibratorManager</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.weaver</name>
+ <version>1.0</version>
+ <interface>
+ <name>IWeaver</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.weaver</name>
+ <version>1</version>
+ <interface>
+ <name>IWeaver</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true" updatable-via-apex="true">
+ <name>android.hardware.wifi</name>
+ <version>1</version>
+ <interface>
+ <name>IWifi</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true" updatable-via-apex="true">
+ <name>android.hardware.wifi</name>
+ <version>1.3-6</version>
+ <interface>
+ <name>IWifi</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.uwb</name>
+ <version>1</version>
+ <interface>
+ <name>IUwb</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.wifi.hostapd</name>
+ <version>1</version>
+ <interface>
+ <name>IHostapd</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.wifi.supplicant</name>
+ <interface>
+ <name>ISupplicant</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <!-- Either the native or the HIDL mapper HAL must exist on the device -->
+ <hal format="native" optional="true">
+ <name>mapper</name>
+ <version>5.0</version>
+ <interface>
+ <regex-instance>.*</regex-instance>
+ </interface>
+ </hal>
+</compatibility-matrix>
diff --git a/radio/aidl/vts/radio_data_test.cpp b/radio/aidl/vts/radio_data_test.cpp
index 1cc6a36..aa6ac88 100644
--- a/radio/aidl/vts/radio_data_test.cpp
+++ b/radio/aidl/vts/radio_data_test.cpp
@@ -233,14 +233,10 @@
EXPECT_EQ(std::cv_status::no_timeout, wait());
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_data->rspInfo.type);
EXPECT_EQ(serial, radioRsp_data->rspInfo.serial);
- if (getRadioHalCapabilities()) {
- ASSERT_TRUE(CheckAnyOfErrors(radioRsp_data->rspInfo.error,
- {RadioError::REQUEST_NOT_SUPPORTED}));
- } else {
- ASSERT_TRUE(CheckAnyOfErrors(radioRsp_data->rspInfo.error,
- {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE,
- RadioError::INTERNAL_ERR, RadioError::MODEM_ERR}));
- }
+ ASSERT_TRUE(CheckAnyOfErrors(radioRsp_data->rspInfo.error,
+ {RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE,
+ RadioError::INTERNAL_ERR, RadioError::MODEM_ERR,
+ RadioError::REQUEST_NOT_SUPPORTED}));
}
/*
diff --git a/security/keymint/aidl/vts/functional/Android.bp b/security/keymint/aidl/vts/functional/Android.bp
index ed3ca74..7a4359d 100644
--- a/security/keymint/aidl/vts/functional/Android.bp
+++ b/security/keymint/aidl/vts/functional/Android.bp
@@ -63,6 +63,7 @@
srcs: [
"AttestKeyTest.cpp",
"AuthTest.cpp",
+ "BootloaderStateTest.cpp",
"DeviceUniqueAttestationTest.cpp",
"KeyBlobUpgradeTest.cpp",
"KeyMintTest.cpp",
diff --git a/security/keymint/aidl/vts/functional/BootloaderStateTest.cpp b/security/keymint/aidl/vts/functional/BootloaderStateTest.cpp
new file mode 100644
index 0000000..723edee
--- /dev/null
+++ b/security/keymint/aidl/vts/functional/BootloaderStateTest.cpp
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+
+#define LOG_TAG "keymint_1_bootloader_test"
+
+#include <memory>
+#include <optional>
+#include <string>
+#include <vector>
+
+#include <android/binder_manager.h>
+#include <remote_prov/remote_prov_utils.h>
+
+#include "KeyMintAidlTestBase.h"
+
+namespace aidl::android::hardware::security::keymint::test {
+
+using ::android::getAidlHalInstanceNames;
+using ::std::string;
+using ::std::vector;
+
+// Since this test needs to talk to KeyMint HAL, it can only run as root. Thus,
+// bootloader can not be locked.
+class BootloaderStateTest : public testing::TestWithParam<std::string> {
+ public:
+ virtual void SetUp() override {
+ ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str()));
+ keyMint_ = IKeyMintDevice::fromBinder(binder);
+ ASSERT_TRUE(keyMint_) << "Failed to get KM device";
+ }
+
+ std::shared_ptr<IKeyMintDevice> keyMint_;
+};
+
+// Check that attested bootloader state is set to unlocked.
+TEST_P(BootloaderStateTest, IsUnlocked) {
+ // Generate a key with attestation.
+ AuthorizationSet keyDesc = AuthorizationSetBuilder()
+ .Authorization(TAG_NO_AUTH_REQUIRED)
+ .EcdsaSigningKey(EcCurve::P_256)
+ .AttestationChallenge("foo")
+ .AttestationApplicationId("bar")
+ .Digest(Digest::NONE)
+ .SetDefaultValidity();
+ KeyCreationResult creationResult;
+ auto kmStatus = keyMint_->generateKey(keyDesc.vector_data(), std::nullopt, &creationResult);
+ ASSERT_TRUE(kmStatus.isOk());
+
+ vector<Certificate> key_cert_chain = std::move(creationResult.certificateChain);
+
+ // Parse attested AVB values.
+ const auto& attestation_cert = key_cert_chain[0].encodedCertificate;
+ X509_Ptr cert(parse_cert_blob(attestation_cert));
+ ASSERT_TRUE(cert.get());
+
+ ASN1_OCTET_STRING* attest_rec = get_attestation_record(cert.get());
+ ASSERT_TRUE(attest_rec);
+
+ vector<uint8_t> key;
+ VerifiedBoot attestedVbState;
+ bool attestedBootloaderState;
+ vector<uint8_t> attestedVbmetaDigest;
+ auto error = parse_root_of_trust(attest_rec->data, attest_rec->length, &key, &attestedVbState,
+ &attestedBootloaderState, &attestedVbmetaDigest);
+ ASSERT_EQ(error, ErrorCode::OK);
+ ASSERT_FALSE(attestedBootloaderState) << "This test runs as root. Bootloader must be unlocked.";
+}
+
+INSTANTIATE_KEYMINT_AIDL_TEST(BootloaderStateTest);
+
+} // namespace aidl::android::hardware::security::keymint::test
diff --git a/security/keymint/support/remote_prov_utils.cpp b/security/keymint/support/remote_prov_utils.cpp
index ffcaa95..3cb783c 100644
--- a/security/keymint/support/remote_prov_utils.cpp
+++ b/security/keymint/support/remote_prov_utils.cpp
@@ -855,8 +855,8 @@
return "Challenge must be a Bstr.";
}
- if (challenge.size() < 16 || challenge.size() > 64) {
- return "Challenge size must be between 16 and 64 bytes inclusive. "
+ if (challenge.size() > 64) {
+ return "Challenge size must be between 0 and 64 bytes inclusive. "
"However, challenge is " +
std::to_string(challenge.size()) + " bytes long.";
}
diff --git a/security/rkp/CHANGELOG.md b/security/rkp/CHANGELOG.md
index f425284..6593ab2 100644
--- a/security/rkp/CHANGELOG.md
+++ b/security/rkp/CHANGELOG.md
@@ -42,6 +42,7 @@
`AuthenticatedRequest<T>` object representing the top level data required to authenticate
the data provided in the payload, `T`.
* The new CSR format supports P-384 signing keys and SHA-384 hashes in the DICE chain.
+ * The component version can now be either an int or a string.
* RpcHardwareInfo
* `supportedNumKeysInCsr` added to report the maximum number of keys supported in a CSR.
* `supportedEekCurve` is no longer used, due to the removal of the EEK from the scheme.
diff --git a/security/rkp/README.md b/security/rkp/README.md
index 9090ac5..01c90a8 100644
--- a/security/rkp/README.md
+++ b/security/rkp/README.md
@@ -302,7 +302,7 @@
| ----------------- | ------ | ---------- | ----------------------------------|
| Component name | -70002 | tstr | Name of firmware component / boot |
: : : : stage :
-| Component version | -70003 | int | Version of firmware component / |
+| Component version | -70003 | int / tstr | Version of firmware component / |
: : : : boot stage :
| Resettable | -70004 | null | If present, key changes on factory|
: : : : reset :
diff --git a/security/rkp/aidl/android/hardware/security/keymint/IRemotelyProvisionedComponent.aidl b/security/rkp/aidl/android/hardware/security/keymint/IRemotelyProvisionedComponent.aidl
index 7960c7f..461357d 100644
--- a/security/rkp/aidl/android/hardware/security/keymint/IRemotelyProvisionedComponent.aidl
+++ b/security/rkp/aidl/android/hardware/security/keymint/IRemotelyProvisionedComponent.aidl
@@ -315,7 +315,7 @@
*
* @param in challenge contains a byte string from the provisioning server which will be
* included in the signed data of the CSR structure. Different provisioned backends may
- * use different semantic data for this field, but the supported sizes must be between 16
+ * use different semantic data for this field, but the supported sizes must be between 0
* and 64 bytes, inclusive.
*
* @return the following CBOR Certificate Signing Request (Csr) serialized into a byte array:
@@ -344,7 +344,7 @@
* UdsCerts,
* DiceCertChain,
* SignedData<[
- * challenge: bstr .size (16..64), ; Provided by the method parameters
+ * challenge: bstr .size (0..64), ; Provided by the method parameters
* bstr .cbor T,
* ]>,
* ]
@@ -421,7 +421,7 @@
* ? -4670547 : bstr, ; Configuration Hash
* -4670548 : bstr .cbor { ; Configuration Descriptor
* ? -70002 : tstr, ; Component name
- * ? -70003 : int, ; Firmware version
+ * ? -70003 : int / tstr, ; Component version
* ? -70004 : null, ; Resettable
* },
* -4670549 : bstr, ; Authority Hash
diff --git a/security/rkp/aidl/vts/functional/VtsRemotelyProvisionedComponentTests.cpp b/security/rkp/aidl/vts/functional/VtsRemotelyProvisionedComponentTests.cpp
index 9f68bfa..94bfbb4 100644
--- a/security/rkp/aidl/vts/functional/VtsRemotelyProvisionedComponentTests.cpp
+++ b/security/rkp/aidl/vts/functional/VtsRemotelyProvisionedComponentTests.cpp
@@ -49,6 +49,9 @@
constexpr int32_t VERSION_WITH_UNIQUE_ID_SUPPORT = 2;
constexpr int32_t VERSION_WITHOUT_TEST_MODE = 3;
+constexpr uint8_t MIN_CHALLENGE_SIZE = 0;
+constexpr uint8_t MAX_CHALLENGE_SIZE = 64;
+
#define INSTANTIATE_REM_PROV_AIDL_TEST(name) \
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(name); \
INSTANTIATE_TEST_SUITE_P( \
@@ -693,32 +696,54 @@
};
/**
- * Generate an empty certificate request, and decrypt and verify the structure and content.
+ * Generate an empty certificate request with all possible length of challenge, and decrypt and
+ * verify the structure and content.
*/
TEST_P(CertificateRequestV2Test, EmptyRequest) {
bytevec csr;
- auto status =
- provisionable_->generateCertificateRequestV2({} /* keysToSign */, challenge_, &csr);
- ASSERT_TRUE(status.isOk()) << status.getMessage();
+ for (auto size = MIN_CHALLENGE_SIZE; size <= MAX_CHALLENGE_SIZE; size++) {
+ SCOPED_TRACE(testing::Message() << "challenge[" << size << "]");
+ auto challenge = randomBytes(size);
+ auto status =
+ provisionable_->generateCertificateRequestV2({} /* keysToSign */, challenge, &csr);
+ ASSERT_TRUE(status.isOk()) << status.getMessage();
- auto result = verifyProductionCsr(cppbor::Array(), csr, provisionable_.get(), challenge_);
- ASSERT_TRUE(result) << result.message();
+ auto result = verifyProductionCsr(cppbor::Array(), csr, provisionable_.get(), challenge);
+ ASSERT_TRUE(result) << result.message();
+ }
}
/**
- * Generate a non-empty certificate request. Decrypt, parse and validate the contents.
+ * Generate a non-empty certificate request with all possible length of challenge. Decrypt, parse
+ * and validate the contents.
*/
TEST_P(CertificateRequestV2Test, NonEmptyRequest) {
generateKeys(false /* testMode */, 1 /* numKeys */);
bytevec csr;
- auto status = provisionable_->generateCertificateRequestV2(keysToSign_, challenge_, &csr);
- ASSERT_TRUE(status.isOk()) << status.getMessage();
+ for (auto size = MIN_CHALLENGE_SIZE; size <= MAX_CHALLENGE_SIZE; size++) {
+ SCOPED_TRACE(testing::Message() << "challenge[" << size << "]");
+ auto challenge = randomBytes(size);
+ auto status = provisionable_->generateCertificateRequestV2(keysToSign_, challenge, &csr);
+ ASSERT_TRUE(status.isOk()) << status.getMessage();
- auto result = verifyProductionCsr(cborKeysToSign_, csr, provisionable_.get(), challenge_);
- ASSERT_TRUE(result) << result.message();
+ auto result = verifyProductionCsr(cborKeysToSign_, csr, provisionable_.get(), challenge);
+ ASSERT_TRUE(result) << result.message();
+ }
+}
+
+/**
+ * Generate an empty certificate request with invalid size of challenge
+ */
+TEST_P(CertificateRequestV2Test, EmptyRequestWithInvalidChallengeFail) {
+ bytevec csr;
+
+ auto status = provisionable_->generateCertificateRequestV2(
+ /* keysToSign */ {}, randomBytes(MAX_CHALLENGE_SIZE + 1), &csr);
+ EXPECT_FALSE(status.isOk()) << status.getMessage();
+ EXPECT_EQ(status.getServiceSpecificError(), BnRemotelyProvisionedComponent::STATUS_FAILED);
}
/**