Merge "Camera: Fix misuse of ASSERT() within a function" into main
diff --git a/audio/aidl/default/include/core-impl/DriverStubImpl.h b/audio/aidl/default/include/core-impl/DriverStubImpl.h
index a1a6c82..84f869a 100644
--- a/audio/aidl/default/include/core-impl/DriverStubImpl.h
+++ b/audio/aidl/default/include/core-impl/DriverStubImpl.h
@@ -22,7 +22,9 @@
class DriverStubImpl : virtual public DriverInterface {
public:
- explicit DriverStubImpl(const StreamContext& context);
+ explicit DriverStubImpl(const StreamContext& context)
+ : DriverStubImpl(context, 500 /*asyncSleepTimeUs*/) {}
+ DriverStubImpl(const StreamContext& context, int asyncSleepTimeUs);
::android::status_t init(DriverCallbackInterface* callback) override;
::android::status_t drain(StreamDescriptor::DrainMode) override;
@@ -40,6 +42,8 @@
const int mSampleRate;
const bool mIsAsynchronous;
const bool mIsInput;
+ const int32_t mMixPortHandle;
+ const int mAsyncSleepTimeUs;
bool mIsInitialized = false; // Used for validating the state machine logic.
bool mIsStandby = true; // Used for validating the state machine logic.
int64_t mStartTimeNs = 0;
diff --git a/audio/aidl/default/include/core-impl/StreamOffloadStub.h b/audio/aidl/default/include/core-impl/StreamOffloadStub.h
index 3b452f9..67abe95 100644
--- a/audio/aidl/default/include/core-impl/StreamOffloadStub.h
+++ b/audio/aidl/default/include/core-impl/StreamOffloadStub.h
@@ -60,11 +60,14 @@
::android::status_t drain(StreamDescriptor::DrainMode drainMode) override;
::android::status_t flush() override;
::android::status_t pause() override;
+ ::android::status_t start() override;
::android::status_t transfer(void* buffer, size_t frameCount, size_t* actualFrameCount,
int32_t* latencyMs) override;
void shutdown() override;
private:
+ ::android::status_t startWorkerIfNeeded();
+
DspSimulatorState mState;
DspSimulatorWorker mDspWorker;
bool mDspWorkerStarted = false;
diff --git a/audio/aidl/default/stub/DriverStubImpl.cpp b/audio/aidl/default/stub/DriverStubImpl.cpp
index 107affb..0d129e6 100644
--- a/audio/aidl/default/stub/DriverStubImpl.cpp
+++ b/audio/aidl/default/stub/DriverStubImpl.cpp
@@ -24,19 +24,27 @@
namespace aidl::android::hardware::audio::core {
-DriverStubImpl::DriverStubImpl(const StreamContext& context)
+DriverStubImpl::DriverStubImpl(const StreamContext& context, int asyncSleepTimeUs)
: mBufferSizeFrames(context.getBufferSizeInFrames()),
mFrameSizeBytes(context.getFrameSize()),
mSampleRate(context.getSampleRate()),
mIsAsynchronous(!!context.getAsyncCallback()),
- mIsInput(context.isInput()) {}
+ mIsInput(context.isInput()),
+ mMixPortHandle(context.getMixPortHandle()),
+ mAsyncSleepTimeUs(asyncSleepTimeUs) {}
+
+#define LOG_ENTRY() \
+ LOG(DEBUG) << "[" << (mIsInput ? "in" : "out") << "|ioHandle:" << mMixPortHandle << "] " \
+ << __func__;
::android::status_t DriverStubImpl::init(DriverCallbackInterface* /*callback*/) {
+ LOG_ENTRY();
mIsInitialized = true;
return ::android::OK;
}
::android::status_t DriverStubImpl::drain(StreamDescriptor::DrainMode) {
+ LOG_ENTRY();
if (!mIsInitialized) {
LOG(FATAL) << __func__ << ": must not happen for an uninitialized driver";
}
@@ -46,14 +54,15 @@
const size_t delayUs = static_cast<size_t>(
std::roundf(mBufferSizeFrames * kMicrosPerSecond / mSampleRate));
usleep(delayUs);
- } else {
- usleep(500);
+ } else if (mAsyncSleepTimeUs) {
+ usleep(mAsyncSleepTimeUs);
}
}
return ::android::OK;
}
::android::status_t DriverStubImpl::flush() {
+ LOG_ENTRY();
if (!mIsInitialized) {
LOG(FATAL) << __func__ << ": must not happen for an uninitialized driver";
}
@@ -61,6 +70,7 @@
}
::android::status_t DriverStubImpl::pause() {
+ LOG_ENTRY();
if (!mIsInitialized) {
LOG(FATAL) << __func__ << ": must not happen for an uninitialized driver";
}
@@ -68,6 +78,7 @@
}
::android::status_t DriverStubImpl::standby() {
+ LOG_ENTRY();
if (!mIsInitialized) {
LOG(FATAL) << __func__ << ": must not happen for an uninitialized driver";
}
@@ -76,6 +87,7 @@
}
::android::status_t DriverStubImpl::start() {
+ LOG_ENTRY();
if (!mIsInitialized) {
LOG(FATAL) << __func__ << ": must not happen for an uninitialized driver";
}
@@ -87,6 +99,7 @@
::android::status_t DriverStubImpl::transfer(void* buffer, size_t frameCount,
size_t* actualFrameCount, int32_t*) {
+ // No LOG_ENTRY as this is called very often.
if (!mIsInitialized) {
LOG(FATAL) << __func__ << ": must not happen for an uninitialized driver";
}
@@ -95,7 +108,7 @@
}
*actualFrameCount = frameCount;
if (mIsAsynchronous) {
- usleep(500);
+ if (mAsyncSleepTimeUs) usleep(mAsyncSleepTimeUs);
} else {
mFramesSinceStart += *actualFrameCount;
const long bufferDurationUs = (*actualFrameCount) * MICROS_PER_SECOND / mSampleRate;
@@ -120,6 +133,7 @@
}
void DriverStubImpl::shutdown() {
+ LOG_ENTRY();
mIsInitialized = false;
}
diff --git a/audio/aidl/default/stub/StreamOffloadStub.cpp b/audio/aidl/default/stub/StreamOffloadStub.cpp
index fb12697..95cef35 100644
--- a/audio/aidl/default/stub/StreamOffloadStub.cpp
+++ b/audio/aidl/default/stub/StreamOffloadStub.cpp
@@ -81,11 +81,13 @@
}
DriverOffloadStubImpl::DriverOffloadStubImpl(const StreamContext& context)
- : DriverStubImpl(context),
+ : DriverStubImpl(context, 0 /*asyncSleepTimeUs*/),
mState{context.getFormat().encoding, context.getSampleRate(),
250 /*earlyNotifyMs*/ * context.getSampleRate() / MILLIS_PER_SECOND,
static_cast<int64_t>(context.getBufferSizeInFrames()) / 2},
- mDspWorker(mState) {}
+ mDspWorker(mState) {
+ LOG_IF(FATAL, !mIsAsynchronous) << "The steam must be used in asynchronous mode";
+}
::android::status_t DriverOffloadStubImpl::init(DriverCallbackInterface* callback) {
RETURN_STATUS_IF_ERROR(DriverStubImpl::init(callback));
@@ -99,10 +101,7 @@
}
::android::status_t DriverOffloadStubImpl::drain(StreamDescriptor::DrainMode drainMode) {
- // Does not call into the DriverStubImpl::drain.
- if (!mIsInitialized) {
- LOG(FATAL) << __func__ << ": must not happen for an uninitialized driver";
- }
+ RETURN_STATUS_IF_ERROR(DriverStubImpl::drain(drainMode));
std::lock_guard l(mState.lock);
if (!mState.clipFramesLeft.empty()) {
// Cut playback of the current clip.
@@ -132,23 +131,27 @@
return ::android::OK;
}
+::android::status_t DriverOffloadStubImpl::start() {
+ RETURN_STATUS_IF_ERROR(DriverStubImpl::start());
+ RETURN_STATUS_IF_ERROR(startWorkerIfNeeded());
+ bool hasClips; // Can be start after paused draining.
+ {
+ std::lock_guard l(mState.lock);
+ hasClips = !mState.clipFramesLeft.empty();
+ LOG(DEBUG) << __func__
+ << ": clipFramesLeft: " << ::android::internal::ToString(mState.clipFramesLeft);
+ }
+ if (hasClips) {
+ mDspWorker.resume();
+ }
+ return ::android::OK;
+}
+
::android::status_t DriverOffloadStubImpl::transfer(void* buffer, size_t frameCount,
- size_t* actualFrameCount,
- int32_t* /*latencyMs*/) {
- // Does not call into the DriverStubImpl::transfer.
- if (!mIsInitialized) {
- LOG(FATAL) << __func__ << ": must not happen for an uninitialized driver";
- }
- if (mIsStandby) {
- LOG(FATAL) << __func__ << ": must not happen while in standby";
- }
- if (!mDspWorkerStarted) {
- // This is an "audio service thread," must have elevated priority.
- if (!mDspWorker.start("dsp_sim", ANDROID_PRIORITY_URGENT_AUDIO)) {
- return ::android::NO_INIT;
- }
- mDspWorkerStarted = true;
- }
+ size_t* actualFrameCount, int32_t* latencyMs) {
+ RETURN_STATUS_IF_ERROR(
+ DriverStubImpl::transfer(buffer, frameCount, actualFrameCount, latencyMs));
+ RETURN_STATUS_IF_ERROR(startWorkerIfNeeded());
// Scan the buffer for clip headers.
*actualFrameCount = frameCount;
while (buffer != nullptr && frameCount > 0) {
@@ -189,6 +192,18 @@
void DriverOffloadStubImpl::shutdown() {
LOG(DEBUG) << __func__ << ": stopping the DSP simulator worker";
mDspWorker.stop();
+ DriverStubImpl::shutdown();
+}
+
+::android::status_t DriverOffloadStubImpl::startWorkerIfNeeded() {
+ if (!mDspWorkerStarted) {
+ // This is an "audio service thread," must have elevated priority.
+ if (!mDspWorker.start("dsp_sim", ANDROID_PRIORITY_URGENT_AUDIO)) {
+ return ::android::NO_INIT;
+ }
+ mDspWorkerStarted = true;
+ }
+ return ::android::OK;
}
// static
diff --git a/audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp b/audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp
index 8bbb60b..21b7aff 100644
--- a/audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp
+++ b/audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp
@@ -5012,7 +5012,7 @@
std::make_tuple(std::string("Pause"), kAidlVersion1, 0, StreamTypeFilter::SYNC,
makePauseCommands(false, true), false /*validatePositionIncrease*/);
static const NamedCommandSequence kPauseOutAsyncSeq =
- std::make_tuple(std::string("Pause"), kAidlVersion1, kStreamTransientStateTransitionDelayMs,
+ std::make_tuple(std::string("Pause"), kAidlVersion3, kStreamTransientStateTransitionDelayMs,
StreamTypeFilter::ASYNC, makePauseCommands(false, false),
false /*validatePositionIncrease*/);
@@ -5117,9 +5117,8 @@
kDrainOutSyncSeq, kDrainOutAsyncSeq,
kDrainEarlyOutAsyncSeq, kDrainPauseOutSyncSeq,
kDrainPauseOutAsyncSeq, kDrainEarlyPauseOutAsyncSeq,
- kStandbyOutSyncSeq, kStandbyOutAsyncSeq,
- kPauseOutSyncSeq, // kPauseOutAsyncSeq,
- kFlushOutSyncSeq, kFlushOutAsyncSeq,
+ kStandbyOutSyncSeq, kStandbyOutAsyncSeq, kPauseOutSyncSeq,
+ kPauseOutAsyncSeq, kFlushOutSyncSeq, kFlushOutAsyncSeq,
kDrainPauseFlushOutSyncSeq, kDrainPauseFlushOutAsyncSeq),
testing::Values(false, true)),
GetStreamIoTestName);
diff --git a/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp b/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
index 95bcaf0..2bb0a72 100644
--- a/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
+++ b/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
@@ -120,6 +120,14 @@
float calculateDb(const std::vector<float>& input, size_t startSamplePos);
+ void getMagnitudeValue(const std::vector<float>& output, std::vector<float>& bufferMag);
+
+ void checkInputAndOutputEquality(const std::vector<float>& outputMag);
+
+ void setUpDataTest(const std::vector<int>& testFrequencies, float fullScaleSineDb);
+
+ void createChannelConfig();
+
// enqueue test parameters
void addEngineConfig(const DynamicsProcessing::EngineArchitecture& cfg);
void addPreEqChannelConfig(const std::vector<DynamicsProcessing::ChannelConfig>& cfg);
@@ -137,7 +145,24 @@
static constexpr int kFrameCount = 2048;
static constexpr int kInputFrequency = 1000;
static constexpr size_t kStartIndex = 15 * kSamplingFrequency / 1000; // skip 15ms
- static constexpr float kToleranceDb = 0.05;
+ static constexpr float kToleranceDb = 0.5;
+ static constexpr int kNPointFFT = 1024;
+ static constexpr float kBinWidth = (float)kSamplingFrequency / kNPointFFT;
+ // Full scale sine wave with 1000 Hz frequency is -3 dB
+ static constexpr float kSineFullScaleDb = -3;
+ // Full scale sine wave with 100 Hz and 1000 Hz frequency is -6 dB
+ static constexpr float kSineMultitoneFullScaleDb = -6;
+ const std::vector<int> kCutoffFreqHz = {200 /*0th band cutoff*/, 2000 /*1st band cutoff*/};
+ std::vector<int> mMultitoneTestFrequencies = {100, 1000};
+ // Calculating normalizing factor by dividing the number of FFT points by half and the number of
+ // test frequencies. The normalization accounts for the FFT splitting the signal into positive
+ // and negative frequencies. Additionally, during multi-tone input generation, sample values are
+ // normalized to the range [-1, 1] by dividing them by the number of test frequencies.
+ float mNormalizingFactor = (kNPointFFT / (2 * mMultitoneTestFrequencies.size()));
+ std::vector<int> mBinOffsets;
+ std::vector<DynamicsProcessing::ChannelConfig> mChannelConfig;
+ std::vector<float> mInput;
+ float mInputDb;
std::shared_ptr<IFactory> mFactory;
std::shared_ptr<IEffect> mEffect;
Descriptor mDescriptor;
@@ -416,6 +441,38 @@
}
}
+void DynamicsProcessingTestHelper::getMagnitudeValue(const std::vector<float>& output,
+ std::vector<float>& bufferMag) {
+ std::vector<float> subOutput(output.begin() + kStartIndex, output.end());
+ EXPECT_NO_FATAL_FAILURE(calculateMagnitudeMono(bufferMag, subOutput, mBinOffsets, kNPointFFT));
+}
+
+void DynamicsProcessingTestHelper::checkInputAndOutputEquality(
+ const std::vector<float>& outputMag) {
+ std::vector<float> inputMag(mBinOffsets.size());
+ EXPECT_NO_FATAL_FAILURE(getMagnitudeValue(mInput, inputMag));
+ for (size_t i = 0; i < inputMag.size(); i++) {
+ EXPECT_NEAR(calculateDb({inputMag[i] / mNormalizingFactor}),
+ calculateDb({outputMag[i] / mNormalizingFactor}), kToleranceDb);
+ }
+}
+
+void DynamicsProcessingTestHelper::setUpDataTest(const std::vector<int>& testFrequencies,
+ float fullScaleSineDb) {
+ ASSERT_NO_FATAL_FAILURE(SetUpDynamicsProcessingEffect());
+ SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags);
+ ASSERT_NO_FATAL_FAILURE(
+ generateSineWave(testFrequencies, mInput, 1.0, kSamplingFrequency, mChannelLayout));
+ mInputDb = calculateDb(mInput);
+ ASSERT_NEAR(mInputDb, fullScaleSineDb, kToleranceDb);
+}
+
+void DynamicsProcessingTestHelper::createChannelConfig() {
+ for (int i = 0; i < mChannelCount; i++) {
+ mChannelConfig.push_back(DynamicsProcessing::ChannelConfig(i, true));
+ }
+}
+
void DynamicsProcessingTestHelper::addEngineConfig(
const DynamicsProcessing::EngineArchitecture& cfg) {
DynamicsProcessing dp;
@@ -527,6 +584,15 @@
.postGainDb = postGainDb};
}
+DynamicsProcessing::EqBandConfig creatEqBandConfig(int channel, int band, float cutOffFreqHz,
+ float gainDb) {
+ return DynamicsProcessing::EqBandConfig{.channel = channel,
+ .band = band,
+ .enable = true,
+ .cutoffFrequencyHz = cutOffFreqHz,
+ .gainDb = gainDb};
+}
+
/**
* Test DynamicsProcessing Engine Configuration
*/
@@ -649,13 +715,7 @@
mInput.resize(kFrameCount * mChannelCount);
}
- void SetUp() override {
- SetUpDynamicsProcessingEffect();
- SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags);
- ASSERT_NO_FATAL_FAILURE(generateSineWave(kInputFrequency /*Input Frequency*/, mInput, 1.0,
- kSamplingFrequency, mChannelLayout));
- mInputDb = calculateDb(mInput);
- }
+ void SetUp() override { setUpDataTest({static_cast<int>(kInputFrequency)}, kSineFullScaleDb); }
void TearDown() override { TearDownDynamicsProcessingEffect(); }
@@ -665,8 +725,6 @@
}
std::vector<DynamicsProcessing::InputGain> mInputGain;
- std::vector<float> mInput;
- float mInputDb;
};
TEST_P(DynamicsProcessingInputGainDataTest, SetAndGetInputGain) {
@@ -785,14 +843,7 @@
mInput.resize(mBufferSize);
}
- void SetUp() override {
- SetUpDynamicsProcessingEffect();
- SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags);
- ASSERT_NO_FATAL_FAILURE(
- generateSineWave(kInputFrequency, mInput, 1.0, kSamplingFrequency, mChannelLayout));
- mInputDb = calculateDb(mInput);
- ASSERT_NEAR(mInputDb, kSineFullScaleDb, kToleranceDb);
- }
+ void SetUp() override { setUpDataTest({static_cast<int>(kInputFrequency)}, kSineFullScaleDb); }
void TearDown() override { TearDownDynamicsProcessingEffect(); }
@@ -825,11 +876,8 @@
static constexpr float kDefaultThreshold = -10;
static constexpr float kDefaultPostGain = 0;
static constexpr float kInputFrequency = 1000;
- // Full scale sine wave with 1000 Hz frequency is -3 dB
- static constexpr float kSineFullScaleDb = -3;
+ static constexpr float kLimiterTestToleranceDb = 0.05;
std::vector<DynamicsProcessing::LimiterConfig> mLimiterConfigList;
- std::vector<float> mInput;
- float mInputDb;
int mBufferSize;
};
@@ -849,7 +897,7 @@
}
float outputDb = calculateDb(output, kStartIndex);
if (threshold >= mInputDb || kDefaultRatio == 1) {
- EXPECT_NEAR(mInputDb, outputDb, kToleranceDb);
+ EXPECT_NEAR(mInputDb, outputDb, kLimiterTestToleranceDb);
} else {
float calculatedThreshold = 0;
ASSERT_NO_FATAL_FAILURE(computeThreshold(kDefaultRatio, outputDb, calculatedThreshold));
@@ -876,7 +924,7 @@
float outputDb = calculateDb(output, kStartIndex);
if (kDefaultThreshold >= mInputDb) {
- EXPECT_NEAR(mInputDb, outputDb, kToleranceDb);
+ EXPECT_NEAR(mInputDb, outputDb, kLimiterTestToleranceDb);
} else {
float calculatedRatio = 0;
ASSERT_NO_FATAL_FAILURE(computeRatio(kDefaultThreshold, outputDb, calculatedRatio));
@@ -894,7 +942,7 @@
ASSERT_NO_FATAL_FAILURE(generateSineWave(kInputFrequency, mInput, dBToAmplitude(postGainDb),
kSamplingFrequency, mChannelLayout));
mInputDb = calculateDb(mInput);
- EXPECT_NEAR(mInputDb, kSineFullScaleDb - postGainDb, kToleranceDb);
+ EXPECT_NEAR(mInputDb, kSineFullScaleDb - postGainDb, kLimiterTestToleranceDb);
for (int i = 0; i < mChannelCount; i++) {
fillLimiterConfig(mLimiterConfigList, i, true, kDefaultLinkerGroup, kDefaultAttackTime,
kDefaultReleaseTime, 1, kDefaultThreshold, postGainDb);
@@ -904,7 +952,7 @@
continue;
}
float outputDb = calculateDb(output, kStartIndex);
- EXPECT_NEAR(outputDb, mInputDb + postGainDb, kToleranceDb)
+ EXPECT_NEAR(outputDb, mInputDb + postGainDb, kLimiterTestToleranceDb)
<< "PostGain: " << postGainDb << ", OutputDb: " << outputDb;
}
}
@@ -927,7 +975,7 @@
if (isEnabled) {
EXPECT_NE(mInputDb, calculateDb(output, kStartIndex));
} else {
- EXPECT_NEAR(mInputDb, calculateDb(output, kStartIndex), kToleranceDb);
+ EXPECT_NEAR(mInputDb, calculateDb(output, kStartIndex), kLimiterTestToleranceDb);
}
}
}
@@ -1025,13 +1073,9 @@
const EqBandConfigTestParams& params) {
const std::vector<std::pair<int, float>> cutOffFreqs = std::get<EQ_BAND_CUT_OFF_FREQ>(params);
int bandCount = cutOffFreqs.size();
- cfgs.resize(bandCount);
for (int i = 0; i < bandCount; i++) {
- cfgs[i].channel = std::get<EQ_BAND_CHANNEL>(params);
- cfgs[i].band = cutOffFreqs[i].first;
- cfgs[i].enable = true /*Eqband Enable*/;
- cfgs[i].cutoffFrequencyHz = cutOffFreqs[i].second;
- cfgs[i].gainDb = std::get<EQ_BAND_GAIN>(params);
+ cfgs.push_back(creatEqBandConfig(std::get<EQ_BAND_CHANNEL>(params), cutOffFreqs[i].first,
+ cutOffFreqs[i].second, std::get<EQ_BAND_GAIN>(params)));
}
}
@@ -1147,6 +1191,119 @@
});
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DynamicsProcessingTestEqBandConfig);
+class DynamicsProcessingEqBandConfigDataTest
+ : public ::testing::TestWithParam<std::pair<std::shared_ptr<IFactory>, Descriptor>>,
+ public DynamicsProcessingTestHelper {
+ public:
+ DynamicsProcessingEqBandConfigDataTest()
+ : DynamicsProcessingTestHelper(GetParam(), AudioChannelLayout::LAYOUT_MONO) {
+ mInput.resize(kFrameCount * mChannelCount);
+ mBinOffsets.resize(mMultitoneTestFrequencies.size());
+ }
+
+ void SetUp() override {
+ ASSERT_NO_FATAL_FAILURE(
+ setUpDataTest(mMultitoneTestFrequencies, kSineMultitoneFullScaleDb));
+ }
+
+ void TearDown() override { TearDownDynamicsProcessingEffect(); }
+
+ void addEqParam(bool isPreEq) {
+ createChannelConfig();
+ auto stage = isPreEq ? mEngineConfigPreset.preEqStage : mEngineConfigPreset.postEqStage;
+ stage.bandCount = mCfgs.size();
+ addEngineConfig(mEngineConfigPreset);
+ isPreEq ? addPreEqChannelConfig(mChannelConfig) : addPostEqChannelConfig(mChannelConfig);
+ isPreEq ? addPreEqBandConfigs(mCfgs) : addPostEqBandConfigs(mCfgs);
+ }
+
+ void setEqParamAndProcess(std::vector<float>& output, bool isPreEq) {
+ addEqParam(isPreEq);
+ ASSERT_NO_FATAL_FAILURE(setParamsAndProcess(mInput, output));
+ }
+
+ void fillEqBandConfig(std::vector<DynamicsProcessing::EqBandConfig>& cfgs, int channelIndex,
+ int bandIndex, int cutOffFreqHz, float gainDb) {
+ cfgs.push_back(creatEqBandConfig(channelIndex, bandIndex, static_cast<float>(cutOffFreqHz),
+ gainDb));
+ }
+
+ void validateOutput(const std::vector<float>& output, float gainDb, size_t bandIndex) {
+ std::vector<float> outputMag(mBinOffsets.size());
+ EXPECT_NO_FATAL_FAILURE(getMagnitudeValue(output, outputMag));
+ if (gainDb == 0) {
+ EXPECT_NO_FATAL_FAILURE(checkInputAndOutputEquality(outputMag));
+ } else if (gainDb > 0) {
+ // For positive gain, current band's magnitude is greater than the other band's
+ // magnitude
+ EXPECT_GT(outputMag[bandIndex], outputMag[bandIndex ^ 1]);
+ } else {
+ // For negative gain, current band's magnitude is less than the other band's magnitude
+ EXPECT_LT(outputMag[bandIndex], outputMag[bandIndex ^ 1]);
+ }
+ }
+
+ void analyseMultiBandOutput(float gainDb, bool isPreEq) {
+ std::vector<float> output(mInput.size());
+ roundToFreqCenteredToFftBin(mMultitoneTestFrequencies, mBinOffsets, kBinWidth);
+ // Set Equalizer values for two bands
+ for (size_t i = 0; i < kCutoffFreqHz.size(); i++) {
+ for (int channelIndex = 0; channelIndex < mChannelCount; channelIndex++) {
+ fillEqBandConfig(mCfgs, channelIndex, i, kCutoffFreqHz[i], gainDb);
+ fillEqBandConfig(mCfgs, channelIndex, i ^ 1, kCutoffFreqHz[i ^ 1], 0);
+ }
+ ASSERT_NO_FATAL_FAILURE(setEqParamAndProcess(output, isPreEq));
+
+ if (isAllParamsValid()) {
+ ASSERT_NO_FATAL_FAILURE(validateOutput(output, gainDb, i));
+ }
+ cleanUpEqConfig();
+ }
+ }
+
+ void cleanUpEqConfig() {
+ CleanUp();
+ mCfgs.clear();
+ mChannelConfig.clear();
+ }
+
+ const std::vector<float> kTestGainDbValues = {-200, -100, 0, 100, 200};
+ std::vector<DynamicsProcessing::EqBandConfig> mCfgs;
+};
+
+TEST_P(DynamicsProcessingEqBandConfigDataTest, IncreasingPreEqGain) {
+ for (float gainDb : kTestGainDbValues) {
+ ASSERT_NO_FATAL_FAILURE(generateSineWave(mMultitoneTestFrequencies, mInput,
+ dBToAmplitude(gainDb), kSamplingFrequency,
+ mChannelLayout));
+ cleanUpEqConfig();
+ ASSERT_NO_FATAL_FAILURE(analyseMultiBandOutput(gainDb, true /*pre-equalizer*/));
+ }
+}
+
+TEST_P(DynamicsProcessingEqBandConfigDataTest, IncreasingPostEqGain) {
+ for (float gainDb : kTestGainDbValues) {
+ ASSERT_NO_FATAL_FAILURE(generateSineWave(mMultitoneTestFrequencies, mInput,
+ dBToAmplitude(gainDb), kSamplingFrequency,
+ mChannelLayout));
+ cleanUpEqConfig();
+ ASSERT_NO_FATAL_FAILURE(analyseMultiBandOutput(gainDb, false /*post-equalizer*/));
+ }
+}
+
+INSTANTIATE_TEST_SUITE_P(DynamicsProcessingTest, DynamicsProcessingEqBandConfigDataTest,
+ testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
+ IFactory::descriptor, getEffectTypeUuidDynamicsProcessing())),
+ [](const auto& info) {
+ auto descriptor = info.param;
+ std::string name = getPrefix(descriptor.second);
+ std::replace_if(
+ name.begin(), name.end(),
+ [](const char c) { return !std::isalnum(c); }, '_');
+ return name;
+ });
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(DynamicsProcessingEqBandConfigDataTest);
+
/**
* Test DynamicsProcessing MbcBandConfig
*/
@@ -1259,24 +1416,18 @@
DynamicsProcessingMbcBandConfigDataTest()
: DynamicsProcessingTestHelper(GetParam(), AudioChannelLayout::LAYOUT_MONO) {
mInput.resize(kFrameCount * mChannelCount);
- mBinOffsets.resize(mTestFrequencies.size());
+ mBinOffsets.resize(mMultitoneTestFrequencies.size());
}
void SetUp() override {
- SetUpDynamicsProcessingEffect();
- SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags);
- ASSERT_NO_FATAL_FAILURE(generateSineWave(mTestFrequencies, mInput, 1.0, kSamplingFrequency,
- mChannelLayout));
- mInputDb = calculateDb(mInput);
- ASSERT_NEAR(mInputDb, kFullScaleDb, kToleranceDb);
+ ASSERT_NO_FATAL_FAILURE(
+ setUpDataTest(mMultitoneTestFrequencies, kSineMultitoneFullScaleDb));
}
void TearDown() override { TearDownDynamicsProcessingEffect(); }
void setMbcParamsAndProcess(std::vector<float>& output) {
- for (int i = 0; i < mChannelCount; i++) {
- mChannelConfig.push_back(DynamicsProcessing::ChannelConfig(i, true));
- }
+ createChannelConfig();
mEngineConfigPreset.mbcStage.bandCount = mCfgs.size();
addEngineConfig(mEngineConfigPreset);
addMbcChannelConfig(mChannelConfig);
@@ -1293,23 +1444,12 @@
noiseGate, expanderRatio, preGain, postGain));
}
- void getMagnitudeValue(const std::vector<float>& output, std::vector<float>& bufferMag) {
- std::vector<float> subOutput(output.begin() + kStartIndex, output.end());
- EXPECT_NO_FATAL_FAILURE(
- calculateMagnitudeMono(bufferMag, subOutput, mBinOffsets, kNPointFFT));
- }
-
void validateOutput(const std::vector<float>& output, float threshold, float ratio,
size_t bandIndex) {
std::vector<float> outputMag(mBinOffsets.size());
EXPECT_NO_FATAL_FAILURE(getMagnitudeValue(output, outputMag));
if (threshold >= mInputDb || ratio == 1) {
- std::vector<float> inputMag(mBinOffsets.size());
- EXPECT_NO_FATAL_FAILURE(getMagnitudeValue(mInput, inputMag));
- for (size_t i = 0; i < inputMag.size(); i++) {
- EXPECT_NEAR(calculateDb({inputMag[i] / mNormalizingFactor}),
- calculateDb({outputMag[i] / mNormalizingFactor}), kToleranceDb);
- }
+ EXPECT_NO_FATAL_FAILURE(checkInputAndOutputEquality(outputMag));
} else {
// Current band's magnitude is less than the other band's magnitude
EXPECT_LT(outputMag[bandIndex], outputMag[bandIndex ^ 1]);
@@ -1318,17 +1458,16 @@
void analyseMultiBandOutput(float threshold, float ratio) {
std::vector<float> output(mInput.size());
- roundToFreqCenteredToFftBin(mTestFrequencies, mBinOffsets, kBinWidth);
- std::vector<int> cutoffFreqHz = {200 /*0th band cutoff*/, 2000 /*1st band cutoff*/};
+ roundToFreqCenteredToFftBin(mMultitoneTestFrequencies, mBinOffsets, kBinWidth);
// Set MBC values for two bands
- for (size_t i = 0; i < cutoffFreqHz.size(); i++) {
+ for (size_t i = 0; i < kCutoffFreqHz.size(); i++) {
for (int channelIndex = 0; channelIndex < mChannelCount; channelIndex++) {
fillMbcBandConfig(mCfgs, channelIndex, threshold, ratio, kDefaultNoiseGateDb,
- kDefaultExpanderRatio, i, cutoffFreqHz[i], kDefaultPreGainDb,
+ kDefaultExpanderRatio, i, kCutoffFreqHz[i], kDefaultPreGainDb,
kDefaultPostGainDb);
fillMbcBandConfig(mCfgs, channelIndex, kDefaultThresholdDb, kDefaultRatio,
kDefaultNoiseGateDb, kDefaultExpanderRatio, i ^ 1,
- cutoffFreqHz[i ^ 1], kDefaultPreGainDb, kDefaultPostGainDb);
+ kCutoffFreqHz[i ^ 1], kDefaultPreGainDb, kDefaultPostGainDb);
}
ASSERT_NO_FATAL_FAILURE(setMbcParamsAndProcess(output));
@@ -1345,8 +1484,6 @@
mChannelConfig.clear();
}
- static constexpr int kNPointFFT = 1024;
- static constexpr float kToleranceDb = 0.5;
static constexpr float kDefaultPostGainDb = 0;
static constexpr float kDefaultPreGainDb = 0;
static constexpr float kDefaultAttackTime = 0;
@@ -1356,20 +1493,7 @@
static constexpr float kDefaultNoiseGateDb = -10;
static constexpr float kDefaultExpanderRatio = 1;
static constexpr float kDefaultRatio = 1;
- static constexpr float kBinWidth = (float)kSamplingFrequency / kNPointFFT;
- // Full scale sine wave with 100 Hz and 1000 Hz frequency is -6 dB
- static constexpr float kFullScaleDb = -6;
- std::vector<int> mTestFrequencies = {100, 1000};
- // Calculating normalizing factor by dividing the number of FFT points by half and the number of
- // test frequencies. The normalization accounts for the FFT splitting the signal into positive
- // and negative frequencies. Additionally, during multi-tone input generation, sample values are
- // normalized to the range [-1, 1] by dividing them by the number of test frequencies.
- float mNormalizingFactor = (kNPointFFT / (2 * mTestFrequencies.size()));
std::vector<DynamicsProcessing::MbcBandConfig> mCfgs;
- std::vector<DynamicsProcessing::ChannelConfig> mChannelConfig;
- std::vector<int> mBinOffsets;
- std::vector<float> mInput;
- float mInputDb;
};
TEST_P(DynamicsProcessingMbcBandConfigDataTest, IncreasingThreshold) {
@@ -1396,11 +1520,11 @@
std::vector<float> postGainDbValues = {-55, -30, 0, 30, 55};
std::vector<float> output(mInput.size());
for (float postGainDb : postGainDbValues) {
- ASSERT_NO_FATAL_FAILURE(generateSineWave(mTestFrequencies, mInput,
+ ASSERT_NO_FATAL_FAILURE(generateSineWave(mMultitoneTestFrequencies, mInput,
dBToAmplitude(postGainDb), kSamplingFrequency,
mChannelLayout));
mInputDb = calculateDb(mInput);
- EXPECT_NEAR(mInputDb, kFullScaleDb - postGainDb, kToleranceDb);
+ EXPECT_NEAR(mInputDb, kSineMultitoneFullScaleDb - postGainDb, kToleranceDb);
cleanUpMbcConfig();
for (int i = 0; i < mChannelCount; i++) {
fillMbcBandConfig(mCfgs, i, kDefaultThresholdDb, kDefaultRatio, kDefaultNoiseGateDb,
diff --git a/audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp b/audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp
index ace0597..255d2f0 100644
--- a/audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp
+++ b/audio/aidl/vts/VtsHalLoudnessEnhancerTargetTest.cpp
@@ -95,6 +95,8 @@
EXPECT_STATUS(expected, mEffect->setParameter(param)) << param.toString();
}
+ void reset() { EXPECT_STATUS(EX_NONE, mEffect->command(CommandId::RESET)); }
+
void validateParameters(int gain) {
// get parameter
LoudnessEnhancer::Id leId;
@@ -218,6 +220,8 @@
binder_exception_t expected;
expected = isGainValid(kZeroGain);
ASSERT_EQ(expected, EX_NONE);
+ // reset state to prevent prior signal history from affecting trial run.
+ ASSERT_NO_FATAL_FAILURE(reset());
setParameters(kZeroGain, expected);
ASSERT_NO_FATAL_FAILURE(processAndWriteToOutput());
baseOutput = mOutputBuffer;
@@ -229,6 +233,8 @@
if (expected != EX_NONE) {
GTEST_SKIP() << "Gains not supported.";
}
+ // reset state to prevent prior signal history from affecting trial run.
+ ASSERT_NO_FATAL_FAILURE(reset());
setParameters(gain, expected);
ASSERT_NO_FATAL_FAILURE(processAndWriteToOutput());
diff --git a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/ConfigDeclaration.h b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/ConfigDeclaration.h
index 40ac129..c4b794a 100644
--- a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/ConfigDeclaration.h
+++ b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/ConfigDeclaration.h
@@ -39,6 +39,9 @@
std::unordered_map<int32_t, aidl::android::hardware::automotive::vehicle::RawPropValues>
initialAreaValues;
+ // The optional supported values for each areaId.
+ std::unordered_map<int32_t, std::vector<float>> supportedValuesForAreaId;
+
inline bool operator==(const ConfigDeclaration& other) const {
return (config == other.config && initialValue == other.initialValue &&
initialAreaValues == other.initialAreaValues);
diff --git a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/JsonConfigLoader.h b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/JsonConfigLoader.h
index 00c497f..9901db2 100644
--- a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/JsonConfigLoader.h
+++ b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/include/JsonConfigLoader.h
@@ -108,11 +108,23 @@
// @param fieldIsOptional Whether the field is optional.
// @param outPtr The pointer to output to if the field exists and parsing succeeded.
// @param errors The error array to append error to if errors are found.
- // @return true if the field is optional and does not exist or parsed successfully.
+ // @param found if not nullptr, this will be set to true if the field is found.
+ // @return true if parsed successfully or the field is optional and is not found.
template <class T>
bool tryParseJsonValueToVariable(const Json::Value& parentJsonNode,
const std::string& fieldName, bool fieldIsOptional, T* outPtr,
+ std::vector<std::string>* errors, bool* found = nullptr);
+
+ // Tries to parse a JSON value to a specific type.
+ //
+ // This is similar to the previous version except that it tries to find the field in multiple
+ // parent nodes and will return early if the field is found in one parent node. This is useful
+ // when we allow the field to either come from vehicleArea fields or vehicleProperty fields.
+ template <class T>
+ bool tryParseJsonValueToVariable(std::vector<const Json::Value*> parentJsonNodePtrs,
+ const std::string& fieldName, bool fieldIsOptional, T* outPtr,
std::vector<std::string>* errors);
+
// Tries to parse a JSON value to an array of specific type.
//
// If fieldIsOptional is True, then if the field specified by "fieldName" does not exist,
@@ -127,7 +139,19 @@
template <class T>
bool tryParseJsonArrayToVariable(const Json::Value& parentJsonNode,
const std::string& fieldName, bool fieldIsOptional,
+ std::vector<T>* outPtr, std::vector<std::string>* errors,
+ bool* found = nullptr);
+
+ // Tries to parse a JSON value to an array of specific type.
+ //
+ // This is similar to the previous version except that it tries to find the field in multiple
+ // parent nodes and will return early if the field is found in one parent node. This is useful
+ // when we allow the field to either come from vehicleArea fields or vehicleProperty fields.
+ template <class T>
+ bool tryParseJsonArrayToVariable(std::vector<const Json::Value*> parentJsonNodePtrs,
+ const std::string& fieldName, bool fieldIsOptional,
std::vector<T>* outPtr, std::vector<std::string>* errors);
+
// Parses a JSON field to VehiclePropertyAccess or VehiclePropertyChangeMode.
template <class T>
void parseAccessChangeMode(const Json::Value& parentJsonNode, const std::string& fieldName,
diff --git a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
index 5b945b2..fdccaec 100644
--- a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
+++ b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/src/JsonConfigLoader.cpp
@@ -95,6 +95,12 @@
using ::android::base::Error;
using ::android::base::Result;
+int32_t COMPATIBLE_API_VERSIONS[] = {
+ // The base version.
+ 1,
+ // V2 supports inherit areaId fields from parent property fields.
+ 2};
+
// Defines a map from constant names to constant values, the values defined here corresponds to
// the "Constants::XXXX" used in JSON config file.
const std::unordered_map<std::string, int> CONSTANTS_BY_NAME = {
@@ -148,6 +154,17 @@
toInt(VehicleAreaMirror::DRIVER_LEFT) | toInt(VehicleAreaMirror::DRIVER_RIGHT)},
};
+std::string nodesToStr(const std::vector<const Json::Value*>& nodePtrs) {
+ std::string nodesStr = "";
+ for (const Json::Value* nodePtr : nodePtrs) {
+ if (nodesStr != "") {
+ nodesStr += ", ";
+ }
+ nodesStr += nodePtr->toStyledString();
+ }
+ return nodesStr;
+}
+
// A class to parse constant values for type T where T is defined as an enum in NDK AIDL backend.
template <class T>
class ConstantParser final : public ConstantParserInterface {
@@ -447,10 +464,33 @@
}
template <class T>
+bool JsonConfigParser::tryParseJsonValueToVariable(
+ std::vector<const Json::Value*> parentJsonNodePtrs, const std::string& fieldName,
+ bool fieldIsOptional, T* outPtr, std::vector<std::string>* errors) {
+ bool found = false;
+ for (const Json::Value* parentJsonNodePtr : parentJsonNodePtrs) {
+ bool result = tryParseJsonValueToVariable(*parentJsonNodePtr, fieldName,
+ /*fieldIsOptional=*/true, outPtr, errors, &found);
+ if (!result) {
+ return result;
+ }
+ if (found) {
+ return true;
+ }
+ }
+ if (!fieldIsOptional && !found) {
+ errors->push_back("Missing required field: " + fieldName +
+ " in nodes: " + nodesToStr(parentJsonNodePtrs));
+ return false;
+ }
+ return true;
+}
+
+template <class T>
bool JsonConfigParser::tryParseJsonValueToVariable(const Json::Value& parentJsonNode,
const std::string& fieldName,
bool fieldIsOptional, T* outPtr,
- std::vector<std::string>* errors) {
+ std::vector<std::string>* errors, bool* found) {
if (!parentJsonNode.isObject()) {
errors->push_back("Node: " + parentJsonNode.toStyledString() + " is not an object");
return false;
@@ -469,6 +509,32 @@
return false;
}
*outPtr = std::move(result.value());
+ if (found != nullptr) {
+ *found = true;
+ }
+ return true;
+}
+
+template <class T>
+bool JsonConfigParser::tryParseJsonArrayToVariable(
+ std::vector<const Json::Value*> parentJsonNodePtrs, const std::string& fieldName,
+ bool fieldIsOptional, std::vector<T>* outPtr, std::vector<std::string>* errors) {
+ bool found = false;
+ for (const Json::Value* parentJsonNodePtr : parentJsonNodePtrs) {
+ bool result = tryParseJsonArrayToVariable(*parentJsonNodePtr, fieldName,
+ /*fieldIsOptional=*/true, outPtr, errors, &found);
+ if (!result) {
+ return result;
+ }
+ if (found) {
+ return true;
+ }
+ }
+ if (!fieldIsOptional && !found) {
+ errors->push_back("Missing required field: " + fieldName +
+ " in nodes: " + nodesToStr(parentJsonNodePtrs));
+ return false;
+ }
return true;
}
@@ -476,7 +542,7 @@
bool JsonConfigParser::tryParseJsonArrayToVariable(const Json::Value& parentJsonNode,
const std::string& fieldName,
bool fieldIsOptional, std::vector<T>* outPtr,
- std::vector<std::string>* errors) {
+ std::vector<std::string>* errors, bool* found) {
if (!parentJsonNode.isObject()) {
errors->push_back("Node: " + parentJsonNode.toStyledString() + " is not an object");
return false;
@@ -495,6 +561,9 @@
return false;
}
*outPtr = std::move(result.value());
+ if (found != nullptr) {
+ *found = true;
+ }
return true;
}
@@ -574,44 +643,60 @@
}
VehicleAreaConfig areaConfig = {};
areaConfig.areaId = areaId;
+ // We have already parsed the access in parentJsonNode into config, so we do not have to
+ // parse parentNode again here.
parseAccessChangeMode(jsonAreaConfig, "access", propStr, &(config->config.access),
&areaConfig.access, errors);
- tryParseJsonValueToVariable(jsonAreaConfig, "minInt32Value", /*optional=*/true,
- &areaConfig.minInt32Value, errors);
- tryParseJsonValueToVariable(jsonAreaConfig, "maxInt32Value", /*optional=*/true,
- &areaConfig.maxInt32Value, errors);
- tryParseJsonValueToVariable(jsonAreaConfig, "minInt64Value", /*optional=*/true,
- &areaConfig.minInt64Value, errors);
- tryParseJsonValueToVariable(jsonAreaConfig, "maxInt64Value", /*optional=*/true,
- &areaConfig.maxInt64Value, errors);
- tryParseJsonValueToVariable(jsonAreaConfig, "minFloatValue", /*optional=*/true,
- &areaConfig.minFloatValue, errors);
- tryParseJsonValueToVariable(jsonAreaConfig, "maxFloatValue", /*optional=*/true,
- &areaConfig.maxFloatValue, errors);
+ // All the following fields may come from area config or from parent node (property config).
+ tryParseJsonValueToVariable({&jsonAreaConfig, &parentJsonNode}, "minInt32Value",
+ /*optional=*/true, &areaConfig.minInt32Value, errors);
+ tryParseJsonValueToVariable({&jsonAreaConfig, &parentJsonNode}, "maxInt32Value",
+ /*optional=*/true, &areaConfig.maxInt32Value, errors);
+ tryParseJsonValueToVariable({&jsonAreaConfig, &parentJsonNode}, "minInt64Value",
+ /*optional=*/true, &areaConfig.minInt64Value, errors);
+ tryParseJsonValueToVariable({&jsonAreaConfig, &parentJsonNode}, "maxInt64Value",
+ /*optional=*/true, &areaConfig.maxInt64Value, errors);
+ tryParseJsonValueToVariable({&jsonAreaConfig, &parentJsonNode}, "minFloatValue",
+ /*optional=*/true, &areaConfig.minFloatValue, errors);
+ tryParseJsonValueToVariable({&jsonAreaConfig, &parentJsonNode}, "maxFloatValue",
+ /*optional=*/true, &areaConfig.maxFloatValue, errors);
// By default we support variable update rate for all properties except it is explicitly
// disabled.
areaConfig.supportVariableUpdateRate = true;
- tryParseJsonValueToVariable(jsonAreaConfig, "supportVariableUpdateRate", /*optional=*/true,
- &areaConfig.supportVariableUpdateRate, errors);
+ tryParseJsonValueToVariable({&jsonAreaConfig, &parentJsonNode}, "supportVariableUpdateRate",
+ /*optional=*/true, &areaConfig.supportVariableUpdateRate,
+ errors);
std::vector<int64_t> supportedEnumValues;
- tryParseJsonArrayToVariable(jsonAreaConfig, "supportedEnumValues", /*optional=*/true,
- &supportedEnumValues, errors);
+ tryParseJsonArrayToVariable({&jsonAreaConfig, &parentJsonNode}, "supportedEnumValues",
+ /*optional=*/true, &supportedEnumValues, errors);
if (!supportedEnumValues.empty()) {
areaConfig.supportedEnumValues = std::move(supportedEnumValues);
}
+ std::vector<float> supportedValues;
+ tryParseJsonArrayToVariable({&jsonAreaConfig, &parentJsonNode}, "supportedValues",
+ /*optional=*/true, &supportedValues, errors);
+ if (!supportedValues.empty()) {
+ config->supportedValuesForAreaId[areaId] = std::move(supportedValues);
+ }
+
+ const Json::Value* jsonHasSupportedValueInfo = nullptr;
if (jsonAreaConfig.isMember("hasSupportedValueInfo")) {
+ jsonHasSupportedValueInfo = &jsonAreaConfig["hasSupportedValueInfo"];
+ } else if (parentJsonNode.isMember("hasSupportedValueInfo")) {
+ jsonHasSupportedValueInfo = &parentJsonNode["hasSupportedValueInfo"];
+ }
+ if (jsonHasSupportedValueInfo != nullptr) {
HasSupportedValueInfo hasSupportedValueInfo = HasSupportedValueInfo{};
- const Json::Value& jsonHasSupportedValueInfo = jsonAreaConfig["hasSupportedValueInfo"];
- tryParseJsonValueToVariable(jsonHasSupportedValueInfo, "hasMinSupportedValue",
+ tryParseJsonValueToVariable(*jsonHasSupportedValueInfo, "hasMinSupportedValue",
/*optional=*/true,
&hasSupportedValueInfo.hasMinSupportedValue, errors);
- tryParseJsonValueToVariable(jsonHasSupportedValueInfo, "hasMaxSupportedValue",
+ tryParseJsonValueToVariable(*jsonHasSupportedValueInfo, "hasMaxSupportedValue",
/*optional=*/true,
&hasSupportedValueInfo.hasMaxSupportedValue, errors);
- tryParseJsonValueToVariable(jsonHasSupportedValueInfo, "hasSupportedValuesList",
+ tryParseJsonValueToVariable(*jsonHasSupportedValueInfo, "hasSupportedValuesList",
/*optional=*/true,
&hasSupportedValueInfo.hasSupportedValuesList, errors);
areaConfig.hasSupportedValueInfo = std::move(hasSupportedValueInfo);
@@ -622,6 +707,11 @@
RawPropValues areaValue = {};
if (parsePropValues(jsonAreaConfig, "defaultValue", &areaValue, errors)) {
config->initialAreaValues[areaId] = std::move(areaValue);
+ } else {
+ if (config->initialValue != RawPropValues{}) {
+ // Skip empty initial values.
+ config->initialAreaValues[areaId] = config->initialValue;
+ }
}
}
}
@@ -701,6 +791,21 @@
if (!root.isObject()) {
return Error() << "root element must be an object";
}
+ // Default API version is 1.
+ int32_t apiVersion = 1;
+ if (root.isMember("apiVersion")) {
+ apiVersion = static_cast<int32_t>(root["apiVersion"].asInt());
+ }
+ bool compatible = false;
+ for (int32_t compatibleApiVersion : COMPATIBLE_API_VERSIONS) {
+ if (compatibleApiVersion == apiVersion) {
+ compatible = true;
+ break;
+ }
+ }
+ if (!compatible) {
+ return Error() << "The JSON file is not compatible with the JSON loader version";
+ }
if (!root.isMember("properties") || !root["properties"].isArray()) {
return Error() << "Missing 'properties' field in root or the field is not an array";
}
diff --git a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
index 595c2ed..3b4720b 100644
--- a/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
+++ b/automotive/vehicle/aidl/impl/current/default_config/JsonConfigLoader/test/JsonConfigLoaderUnitTest.cpp
@@ -314,6 +314,33 @@
ASSERT_EQ(propConfig.changeMode, VehiclePropertyChangeMode::STATIC);
}
+TEST_F(JsonConfigLoaderUnitTest, testAccessAreaOverride) {
+ std::istringstream iss(R"(
+ {
+ "properties": [{
+ "property": "VehicleProperty::INFO_FUEL_CAPACITY",
+ "areas": [
+ {
+ "areaId": 0,
+ "access": "VehiclePropertyAccess::WRITE"
+ }
+ ]
+ }]
+ }
+ )");
+
+ auto result = mLoader.loadPropConfig(iss);
+
+ ASSERT_TRUE(result.ok()) << result.error().message();
+ auto configs = result.value();
+ ASSERT_EQ(configs.size(), 1u);
+
+ const VehiclePropConfig& propConfig = configs.begin()->second.config;
+ ASSERT_EQ(propConfig.access, VehiclePropertyAccess::READ);
+ ASSERT_EQ(propConfig.areaConfigs[0].access, VehiclePropertyAccess::WRITE);
+ ASSERT_EQ(propConfig.changeMode, VehiclePropertyChangeMode::STATIC);
+}
+
TEST_F(JsonConfigLoaderUnitTest, testChangeModeOverride) {
std::istringstream iss(R"(
{
@@ -564,6 +591,148 @@
ASSERT_EQ(areaConfig.areaId, HVAC_ALL);
}
+TEST_F(JsonConfigLoaderUnitTest, testAreas_InheritFromProperty) {
+ std::istringstream iss(R"(
+ {
+ "properties": [{
+ "property": "VehicleProperty::INFO_FUEL_CAPACITY",
+ "minInt32Value": 1,
+ "maxInt32Value": 7,
+ "minInt64Value": 2,
+ "maxInt64Value": 6,
+ "minFloatValue": 1.1,
+ "maxFloatValue": 2.2,
+ "supportVariableUpdateRate": true,
+ "supportedEnumValues": [1, 2, 3],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true,
+ "hasSupportedValuesList": true
+ },
+ "defaultValue": {
+ "int32Values": [
+ 1
+ ]
+ },
+ "areas": [{
+ "areaId": "Constants::HVAC_ALL"
+ }]
+ }]
+ }
+ )");
+
+ auto result = mLoader.loadPropConfig(iss);
+
+ ASSERT_RESULT_OK(result);
+
+ auto configs = result.value();
+ ASSERT_EQ(configs.size(), 1u);
+
+ const auto& configDecl = configs.begin()->second;
+ const VehiclePropConfig& config = configDecl.config;
+ EXPECT_EQ(config.access, VehiclePropertyAccess::READ);
+ ASSERT_EQ(config.areaConfigs.size(), 1u);
+ const VehicleAreaConfig& areaConfig = config.areaConfigs[0];
+ EXPECT_EQ(areaConfig.minInt32Value, 1);
+ EXPECT_EQ(areaConfig.maxInt32Value, 7);
+ EXPECT_EQ(areaConfig.minInt64Value, 2);
+ EXPECT_EQ(areaConfig.maxInt64Value, 6);
+ EXPECT_EQ(areaConfig.minFloatValue, 1.1f);
+ EXPECT_EQ(areaConfig.maxFloatValue, 2.2f);
+ EXPECT_EQ(areaConfig.access, VehiclePropertyAccess::READ);
+ EXPECT_EQ(areaConfig.areaId, HVAC_ALL);
+ EXPECT_EQ(areaConfig.supportVariableUpdateRate, true);
+ ASSERT_TRUE(areaConfig.supportedEnumValues.has_value());
+ EXPECT_EQ(areaConfig.supportedEnumValues.value(), std::vector<int64_t>({1, 2, 3}));
+ ASSERT_TRUE(areaConfig.hasSupportedValueInfo.has_value());
+ EXPECT_TRUE(areaConfig.hasSupportedValueInfo->hasMinSupportedValue);
+ EXPECT_TRUE(areaConfig.hasSupportedValueInfo->hasMaxSupportedValue);
+ EXPECT_TRUE(areaConfig.hasSupportedValueInfo->hasSupportedValuesList);
+ ASSERT_FALSE(configDecl.initialAreaValues.find(HVAC_ALL) == configDecl.initialAreaValues.end());
+ EXPECT_EQ(configDecl.initialAreaValues.find(HVAC_ALL)->second,
+ RawPropValues{.int32Values = {1}});
+}
+
+TEST_F(JsonConfigLoaderUnitTest, testAreas_InheritFromProperty_override) {
+ std::istringstream iss(R"(
+ {
+ "properties": [{
+ "property": "VehicleProperty::INFO_FUEL_CAPACITY",
+ "minInt32Value": 100,
+ "maxInt32Value": 100,
+ "minInt64Value": 100,
+ "maxInt64Value": 100,
+ "minFloatValue": 100.1,
+ "maxFloatValue": 100.2,
+ "supportVariableUpdateRate": false,
+ "supportedEnumValues": [3, 2, 1],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": false,
+ "hasMaxSupportedValue": false,
+ "hasSupportedValuesList": false
+ },
+ "defaultValue": {
+ "int32Values": [
+ 2
+ ]
+ },
+ "areas": [{
+ "areaId": "Constants::HVAC_ALL",
+ "minInt32Value": 1,
+ "maxInt32Value": 7,
+ "minInt64Value": 2,
+ "maxInt64Value": 6,
+ "minFloatValue": 1.1,
+ "maxFloatValue": 2.2,
+ "supportVariableUpdateRate": true,
+ "supportedEnumValues": [1, 2, 3],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true,
+ "hasSupportedValuesList": true
+ },
+ "defaultValue": {
+ "int32Values": [
+ 1
+ ]
+ }
+ }]
+ }]
+ }
+ )");
+
+ auto result = mLoader.loadPropConfig(iss);
+
+ ASSERT_RESULT_OK(result);
+
+ auto configs = result.value();
+ ASSERT_EQ(configs.size(), 1u);
+
+ const auto& configDecl = configs.begin()->second;
+ const VehiclePropConfig& config = configDecl.config;
+ EXPECT_EQ(config.access, VehiclePropertyAccess::READ);
+ ASSERT_EQ(config.areaConfigs.size(), 1u);
+ const VehicleAreaConfig& areaConfig = config.areaConfigs[0];
+ EXPECT_EQ(areaConfig.minInt32Value, 1);
+ EXPECT_EQ(areaConfig.maxInt32Value, 7);
+ EXPECT_EQ(areaConfig.minInt64Value, 2);
+ EXPECT_EQ(areaConfig.maxInt64Value, 6);
+ EXPECT_EQ(areaConfig.minFloatValue, 1.1f);
+ EXPECT_EQ(areaConfig.maxFloatValue, 2.2f);
+ EXPECT_EQ(areaConfig.access, VehiclePropertyAccess::READ);
+ EXPECT_EQ(areaConfig.areaId, HVAC_ALL);
+ EXPECT_EQ(areaConfig.supportVariableUpdateRate, true);
+ ASSERT_TRUE(areaConfig.supportedEnumValues.has_value());
+ EXPECT_EQ(areaConfig.supportedEnumValues.value(), std::vector<int64_t>({1, 2, 3}));
+ ASSERT_TRUE(areaConfig.hasSupportedValueInfo.has_value());
+ EXPECT_TRUE(areaConfig.hasSupportedValueInfo->hasMinSupportedValue);
+ EXPECT_TRUE(areaConfig.hasSupportedValueInfo->hasMaxSupportedValue);
+ EXPECT_TRUE(areaConfig.hasSupportedValueInfo->hasSupportedValuesList);
+ ASSERT_FALSE(configDecl.initialAreaValues.find(HVAC_ALL) == configDecl.initialAreaValues.end());
+ EXPECT_EQ(configDecl.initialAreaValues.find(HVAC_ALL)->second,
+ RawPropValues{.int32Values = {1}});
+}
+
TEST_F(JsonConfigLoaderUnitTest, testAreas_DefaultValueForEachArea) {
std::istringstream iss(R"(
{
diff --git a/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json b/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json
index 2915cc1..c3e12f6 100644
--- a/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json
+++ b/automotive/vehicle/aidl/impl/current/default_config/config/DefaultProperties.json
@@ -1,5 +1,5 @@
{
- "apiVersion": 1,
+ "apiVersion": 2,
"properties": [
{
"property": "VehicleProperty::INFO_FUEL_CAPACITY",
@@ -164,83 +164,47 @@
"property": "VehicleProperty::SEAT_MEMORY_SELECT",
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 3
},
{
"property": "VehicleProperty::SEAT_MEMORY_SET",
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 3
},
{
"property": "VehicleProperty::SEAT_BELT_BUCKLED",
@@ -276,51 +240,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_BELT_HEIGHT_MOVE",
@@ -331,51 +271,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_FORE_AFT_POS",
@@ -386,51 +302,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_FORE_AFT_MOVE",
@@ -441,51 +333,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_BACKREST_ANGLE_1_POS",
@@ -496,51 +364,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_BACKREST_ANGLE_1_MOVE",
@@ -551,51 +395,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_BACKREST_ANGLE_2_POS",
@@ -606,51 +426,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_BACKREST_ANGLE_2_MOVE",
@@ -661,51 +457,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_HEIGHT_POS",
@@ -716,51 +488,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_HEIGHT_MOVE",
@@ -771,51 +519,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_DEPTH_POS",
@@ -826,51 +550,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_DEPTH_MOVE",
@@ -881,51 +581,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_TILT_POS",
@@ -936,51 +612,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_TILT_MOVE",
@@ -991,51 +643,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_LUMBAR_FORE_AFT_POS",
@@ -1046,51 +674,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_LUMBAR_FORE_AFT_MOVE",
@@ -1101,51 +705,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_POS",
@@ -1156,51 +736,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_MOVE",
@@ -1211,51 +767,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_HEADREST_HEIGHT_POS_V2",
@@ -1266,51 +798,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_HEADREST_HEIGHT_MOVE",
@@ -1321,51 +829,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_HEADREST_ANGLE_POS",
@@ -1376,51 +860,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_HEADREST_ANGLE_MOVE",
@@ -1431,51 +891,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_HEADREST_FORE_AFT_POS",
@@ -1486,51 +922,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_HEADREST_FORE_AFT_MOVE",
@@ -1541,51 +953,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_FOOTWELL_LIGHTS_STATE",
@@ -1596,26 +984,21 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "supportedEnumValues": [
- "Constants::LIGHT_STATE_OFF",
- "Constants::LIGHT_STATE_ON"
- ]
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "supportedEnumValues": [
- "Constants::LIGHT_STATE_OFF",
- "Constants::LIGHT_STATE_ON"
- ]
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT_2_RIGHT_2_CENTER",
- "supportedEnumValues": [
- "Constants::LIGHT_STATE_OFF",
- "Constants::LIGHT_STATE_ON"
- ]
+ "areaId": "Constants::SEAT_2_LEFT_2_RIGHT_2_CENTER"
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "Constants::LIGHT_STATE_OFF",
+ "Constants::LIGHT_STATE_ON"
]
},
{
@@ -1627,29 +1010,22 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "supportedEnumValues": [
- "Constants::LIGHT_SWITCH_OFF",
- "Constants::LIGHT_SWITCH_ON",
- "Constants::LIGHT_SWITCH_AUTO"
- ]
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "supportedEnumValues": [
- "Constants::LIGHT_SWITCH_OFF",
- "Constants::LIGHT_SWITCH_ON",
- "Constants::LIGHT_SWITCH_AUTO"
- ]
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT_2_RIGHT_2_CENTER",
- "supportedEnumValues": [
- "Constants::LIGHT_SWITCH_OFF",
- "Constants::LIGHT_SWITCH_ON",
- "Constants::LIGHT_SWITCH_AUTO"
- ]
+ "areaId": "Constants::SEAT_2_LEFT_2_RIGHT_2_CENTER"
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "Constants::LIGHT_SWITCH_OFF",
+ "Constants::LIGHT_SWITCH_ON",
+ "Constants::LIGHT_SWITCH_AUTO"
]
},
{
@@ -1693,51 +1069,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_CUSHION_SIDE_SUPPORT_MOVE",
@@ -1748,51 +1100,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_LUMBAR_VERTICAL_POS",
@@ -1803,51 +1131,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -10,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -10,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::SEAT_LUMBAR_VERTICAL_MOVE",
@@ -1858,51 +1162,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::SEAT_WALK_IN_POS",
@@ -1913,24 +1193,18 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 5,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 5,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 5
},
{
"property": "VehicleProperty::SEAT_AIRBAGS_DEPLOYED",
@@ -1948,7 +1222,10 @@
"VehicleAirbagLocation::LEFT_SIDE",
"VehicleAirbagLocation::RIGHT_SIDE",
"VehicleAirbagLocation::CURTAIN"
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ }
},
{
"areaId": "Constants::SEAT_1_RIGHT",
@@ -1958,21 +1235,30 @@
"VehicleAirbagLocation::LEFT_SIDE",
"VehicleAirbagLocation::RIGHT_SIDE",
"VehicleAirbagLocation::CURTAIN"
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ }
},
{
"areaId": "Constants::SEAT_2_LEFT",
"supportedEnumValues": [
"VehicleAirbagLocation::FRONT",
"VehicleAirbagLocation::CURTAIN"
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ }
},
{
"areaId": "Constants::SEAT_2_RIGHT",
"supportedEnumValues": [
"VehicleAirbagLocation::FRONT",
"VehicleAirbagLocation::CURTAIN"
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ }
}
]
},
@@ -2186,6 +1472,21 @@
60,
80,
100
+ ],
+ "areas": [
+ {
+ "areaId": 0
+ }
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedValues": [
+ 20,
+ 40,
+ 60,
+ 80,
+ 100
]
},
{
@@ -2272,45 +1573,27 @@
},
"areas": [
{
- "areaId": "Constants::WHEEL_FRONT_LEFT",
- "minFloatValue": 193.0,
- "maxFloatValue": 300.0,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WHEEL_FRONT_LEFT"
},
{
- "areaId": "Constants::WHEEL_FRONT_RIGHT",
- "minFloatValue": 193.0,
- "maxFloatValue": 300.0,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WHEEL_FRONT_RIGHT"
},
{
- "areaId": "Constants::WHEEL_REAR_LEFT",
- "minFloatValue": 193.0,
- "maxFloatValue": 300.0,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WHEEL_REAR_LEFT"
},
{
- "areaId": "Constants::WHEEL_REAR_RIGHT",
- "minFloatValue": 193.0,
- "maxFloatValue": 300.0,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WHEEL_REAR_RIGHT"
}
],
"comment": "Units in kpa",
"maxSampleRate": 2.0,
- "minSampleRate": 1.0
+ "minSampleRate": 1.0,
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minFloatValue": 193.0,
+ "maxFloatValue": 300.0
},
{
"property": "VehicleProperty::CRITICALLY_LOW_TIRE_PRESSURE",
@@ -2423,13 +1706,7 @@
0
]
},
- "areaId": "Constants::WHEEL_FRONT_LEFT",
- "minInt32Value": -100,
- "maxInt32Value": 100,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WHEEL_FRONT_LEFT"
},
{
"defaultValue": {
@@ -2437,13 +1714,7 @@
0
]
},
- "areaId": "Constants::WHEEL_FRONT_RIGHT",
- "minInt32Value": -100,
- "maxInt32Value": 100,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WHEEL_FRONT_RIGHT"
},
{
"defaultValue": {
@@ -2451,13 +1722,7 @@
0
]
},
- "areaId": "Constants::WHEEL_REAR_RIGHT",
- "minInt32Value": -100,
- "maxInt32Value": 100,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WHEEL_REAR_RIGHT"
},
{
"defaultValue": {
@@ -2465,17 +1730,17 @@
0
]
},
- "areaId": "Constants::WHEEL_REAR_LEFT",
- "minInt32Value": -100,
- "maxInt32Value": 100,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WHEEL_REAR_LEFT"
}
],
"maxSampleRate": 10.0,
- "minSampleRate": 1.0
+ "minSampleRate": 1.0,
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -100,
+ "maxInt32Value": 100
},
{
"property": "VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS",
@@ -2533,15 +1798,15 @@
},
"areas": [
{
- "areaId": 0,
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": 0
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 3
},
{
"property": "VehicleProperty::EV_STOPPING_MODE",
@@ -2552,13 +1817,16 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "Constants::EV_STOPPING_MODE_CREEP",
- "Constants::EV_STOPPING_MODE_ROLL",
- "Constants::EV_STOPPING_MODE_HOLD"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "Constants::EV_STOPPING_MODE_CREEP",
+ "Constants::EV_STOPPING_MODE_ROLL",
+ "Constants::EV_STOPPING_MODE_HOLD"
]
},
{
@@ -2960,51 +2228,27 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": 1,
- "maxInt32Value": 7,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": 1,
- "maxInt32Value": 7,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": 1,
- "maxInt32Value": 7,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": 1,
- "maxInt32Value": 7,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": 1,
- "maxInt32Value": 7,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 1,
+ "maxInt32Value": 7
},
{
"property": "VehicleProperty::HVAC_FAN_DIRECTION",
@@ -3072,52 +2316,28 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": 0,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
],
- "comment": "0 is off and +ve values indicate ventilation level."
+ "comment": "0 is off and +ve values indicate ventilation level.",
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 3
},
{
"property": "VehicleProperty::HVAC_STEERING_WHEEL_HEAT",
@@ -3128,16 +2348,16 @@
},
"areas": [
{
- "areaId": 0,
- "minInt32Value": -2,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": 0
}
],
- "comment": "+ve values for heating and -ve for cooling"
+ "comment": "+ve values for heating and -ve for cooling",
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -2,
+ "maxInt32Value": 2
},
{
"property": "VehicleProperty::HVAC_SEAT_TEMPERATURE",
@@ -3148,52 +2368,28 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minInt32Value": -2,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": -2,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minInt32Value": -2,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minInt32Value": -2,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minInt32Value": -2,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
],
- "comment": "+ve values for heating and -ve for cooling"
+ "comment": "+ve values for heating and -ve for cooling",
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -2,
+ "maxInt32Value": 2
},
{
"property": "VehicleProperty::HVAC_SIDE_MIRROR_HEAT",
@@ -3204,15 +2400,15 @@
},
"areas": [
{
- "areaId": "Constants::MIRROR_DRIVER_LEFT_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::MIRROR_DRIVER_LEFT_RIGHT"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 2
},
{
"property": "VehicleProperty::HVAC_TEMPERATURE_CURRENT",
@@ -3248,49 +2444,19 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_LEFT",
- "minFloatValue": 17.5,
- "maxFloatValue": 32.5,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_LEFT"
},
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minFloatValue": 17.5,
- "maxFloatValue": 32.5,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_LEFT",
- "minFloatValue": 17.5,
- "maxFloatValue": 32.5,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_LEFT"
},
{
- "areaId": "Constants::SEAT_2_RIGHT",
- "minFloatValue": 17.5,
- "maxFloatValue": 32.5,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_RIGHT"
},
{
- "areaId": "Constants::SEAT_2_CENTER",
- "minFloatValue": 17.5,
- "maxFloatValue": 32.5,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_2_CENTER"
}
],
"comment":
@@ -3302,6 +2468,46 @@
600,
900,
10
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true,
+ "hasSupportedValuesList": true
+ },
+ "minFloatValue": 17.5,
+ "maxFloatValue": 32.5,
+ "supportedValues": [
+ 17.5,
+ 18,
+ 18.5,
+ 19,
+ 19.5,
+ 20,
+ 20.5,
+ 21,
+ 21.5,
+ 22,
+ 22.5,
+ 23,
+ 23.5,
+ 24,
+ 24.5,
+ 25,
+ 25.5,
+ 26,
+ 26.5,
+ 27,
+ 27.5,
+ 28,
+ 28.5,
+ 29,
+ 29.5,
+ 30,
+ 30.5,
+ 31,
+ 31.5,
+ 32,
+ 32.5
]
},
{
@@ -3442,16 +2648,19 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ImpactSensorLocation::FRONT",
- "ImpactSensorLocation::FRONT_LEFT_DOOR_SIDE",
- "ImpactSensorLocation::FRONT_RIGHT_DOOR_SIDE",
- "ImpactSensorLocation::REAR_LEFT_DOOR_SIDE",
- "ImpactSensorLocation::REAR_RIGHT_DOOR_SIDE",
- "ImpactSensorLocation::REAR"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ImpactSensorLocation::FRONT",
+ "ImpactSensorLocation::FRONT_LEFT_DOOR_SIDE",
+ "ImpactSensorLocation::FRONT_RIGHT_DOOR_SIDE",
+ "ImpactSensorLocation::REAR_LEFT_DOOR_SIDE",
+ "ImpactSensorLocation::REAR_RIGHT_DOOR_SIDE",
+ "ImpactSensorLocation::REAR"
]
},
{
@@ -3524,51 +2733,27 @@
},
"areas": [
{
- "areaId": "Constants::DOOR_1_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_1_LEFT"
},
{
- "areaId": "Constants::DOOR_1_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_1_RIGHT"
},
{
- "areaId": "Constants::DOOR_2_LEFT",
- "minInt32Value": 0,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_2_LEFT"
},
{
- "areaId": "Constants::DOOR_2_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_2_RIGHT"
},
{
- "areaId": "Constants::DOOR_REAR",
- "minInt32Value": 0,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_REAR"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::DOOR_MOVE",
@@ -3579,42 +2764,24 @@
},
"areas": [
{
- "areaId": "Constants::DOOR_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_1_LEFT"
},
{
- "areaId": "Constants::DOOR_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_1_RIGHT"
},
{
- "areaId": "Constants::DOOR_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_2_LEFT"
},
{
- "areaId": "Constants::DOOR_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::DOOR_2_RIGHT"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::MIRROR_Z_POS",
@@ -3625,33 +2792,21 @@
},
"areas": [
{
- "areaId": "VehicleAreaMirror::DRIVER_LEFT",
- "minInt32Value": -3,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_LEFT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_RIGHT",
- "minInt32Value": -3,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_RIGHT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_CENTER",
- "minInt32Value": -3,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -3,
+ "maxInt32Value": 3
},
{
"property": "VehicleProperty::MIRROR_Z_MOVE",
@@ -3662,33 +2817,21 @@
},
"areas": [
{
- "areaId": "VehicleAreaMirror::DRIVER_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_LEFT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_RIGHT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::MIRROR_Y_POS",
@@ -3699,33 +2842,21 @@
},
"areas": [
{
- "areaId": "VehicleAreaMirror::DRIVER_LEFT",
- "minInt32Value": -3,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_LEFT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_RIGHT",
- "minInt32Value": -3,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_RIGHT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_CENTER",
- "minInt32Value": -3,
- "maxInt32Value": 3,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -3,
+ "maxInt32Value": 3
},
{
"property": "VehicleProperty::MIRROR_Y_MOVE",
@@ -3736,33 +2867,21 @@
},
"areas": [
{
- "areaId": "VehicleAreaMirror::DRIVER_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_LEFT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_RIGHT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_CENTER",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaMirror::DRIVER_CENTER"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::MIRROR_LOCK",
@@ -3883,51 +3002,27 @@
},
"areas": [
{
- "areaId": "Constants::WINDOW_1_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WINDOW_1_LEFT"
},
{
- "areaId": "Constants::WINDOW_1_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WINDOW_1_RIGHT"
},
{
- "areaId": "Constants::WINDOW_2_LEFT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WINDOW_2_LEFT"
},
{
- "areaId": "Constants::WINDOW_2_RIGHT",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WINDOW_2_RIGHT"
},
{
- "areaId": "Constants::WINDOW_ROOF_TOP_1",
- "minInt32Value": -1,
- "maxInt32Value": 1,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::WINDOW_ROOF_TOP_1"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -1,
+ "maxInt32Value": 1
},
{
"property": "VehicleProperty::WINDSHIELD_WIPERS_PERIOD",
@@ -3938,24 +3033,18 @@
},
"areas": [
{
- "areaId": "VehicleAreaWindow::FRONT_WINDSHIELD",
- "minInt32Value": 0,
- "maxInt32Value": 3000,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaWindow::FRONT_WINDSHIELD"
},
{
- "areaId": "VehicleAreaWindow::REAR_WINDSHIELD",
- "minInt32Value": 0,
- "maxInt32Value": 3000,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "VehicleAreaWindow::REAR_WINDSHIELD"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 3000
},
{
"property": "VehicleProperty::WINDSHIELD_WIPERS_STATE",
@@ -3971,14 +3060,20 @@
"WindshieldWipersState::OFF",
"WindshieldWipersState::ON",
"WindshieldWipersState::SERVICE"
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ }
},
{
"areaId": "VehicleAreaWindow::REAR_WINDSHIELD",
"supportedEnumValues": [
"WindshieldWipersState::OFF",
"WindshieldWipersState::ON"
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ }
}
]
},
@@ -4007,7 +3102,10 @@
"WindshieldWipersSwitch::CONTINUOUS_LEVEL_5",
"WindshieldWipersSwitch::AUTO",
"WindshieldWipersSwitch::SERVICE"
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ }
},
{
"areaId": "VehicleAreaWindow::REAR_WINDSHIELD",
@@ -4019,7 +3117,10 @@
"WindshieldWipersSwitch::CONTINUOUS_LEVEL_2",
"WindshieldWipersSwitch::AUTO",
"WindshieldWipersSwitch::SERVICE"
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ }
}
]
},
@@ -4032,15 +3133,15 @@
},
"areas": [
{
- "areaId": 0,
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": 0
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::STEERING_WHEEL_DEPTH_MOVE",
@@ -4051,15 +3152,15 @@
},
"areas": [
{
- "areaId": 0,
- "minInt32Value": -2,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": 0
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -2,
+ "maxInt32Value": 2
},
{
"property": "VehicleProperty::STEERING_WHEEL_HEIGHT_POS",
@@ -4070,15 +3171,15 @@
},
"areas": [
{
- "areaId": 0,
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": 0
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::STEERING_WHEEL_HEIGHT_MOVE",
@@ -4089,15 +3190,15 @@
},
"areas": [
{
- "areaId": 0,
- "minInt32Value": -2,
- "maxInt32Value": 2,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": 0
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": -2,
+ "maxInt32Value": 2
},
{
"property": "VehicleProperty::STEERING_WHEEL_THEFT_LOCK_ENABLED",
@@ -4132,15 +3233,15 @@
},
"areas": [
{
- "areaId": "Constants::SEAT_1_RIGHT",
- "minInt32Value": 0,
- "maxInt32Value": 10,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::SEAT_1_RIGHT"
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 10
},
{
"property": "VehicleProperty::GLOVE_BOX_LOCKED",
@@ -4359,12 +3460,15 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "Constants::LIGHT_STATE_OFF",
- "Constants::LIGHT_STATE_ON"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "Constants::LIGHT_STATE_OFF",
+ "Constants::LIGHT_STATE_ON"
]
},
{
@@ -4449,13 +3553,16 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "Constants::LIGHT_SWITCH_OFF",
- "Constants::LIGHT_SWITCH_ON",
- "Constants::LIGHT_SWITCH_AUTO"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "Constants::LIGHT_SWITCH_OFF",
+ "Constants::LIGHT_SWITCH_ON",
+ "Constants::LIGHT_SWITCH_AUTO"
]
},
{
@@ -5344,20 +4451,23 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "EmergencyLaneKeepAssistState::ENABLED",
- "EmergencyLaneKeepAssistState::WARNING_LEFT",
- "EmergencyLaneKeepAssistState::WARNING_RIGHT",
- "EmergencyLaneKeepAssistState::ACTIVATED_STEER_LEFT",
- "EmergencyLaneKeepAssistState::ACTIVATED_STEER_RIGHT",
- "EmergencyLaneKeepAssistState::USER_OVERRIDE"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "EmergencyLaneKeepAssistState::ENABLED",
+ "EmergencyLaneKeepAssistState::WARNING_LEFT",
+ "EmergencyLaneKeepAssistState::WARNING_RIGHT",
+ "EmergencyLaneKeepAssistState::ACTIVATED_STEER_LEFT",
+ "EmergencyLaneKeepAssistState::ACTIVATED_STEER_RIGHT",
+ "EmergencyLaneKeepAssistState::USER_OVERRIDE"
]
},
{
@@ -5377,17 +4487,20 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "CruiseControlType::STANDARD",
- "CruiseControlType::ADAPTIVE",
- "CruiseControlType::PREDICTIVE"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "CruiseControlType::STANDARD",
+ "CruiseControlType::ADAPTIVE",
+ "CruiseControlType::PREDICTIVE"
]
},
{
@@ -5399,35 +4512,41 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "CruiseControlState::ENABLED",
- "CruiseControlState::ACTIVATED",
- "CruiseControlState::USER_OVERRIDE",
- "CruiseControlState::SUSPENDED",
- "CruiseControlState::FORCED_DEACTIVATION_WARNING"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "CruiseControlState::ENABLED",
+ "CruiseControlState::ACTIVATED",
+ "CruiseControlState::USER_OVERRIDE",
+ "CruiseControlState::SUSPENDED",
+ "CruiseControlState::FORCED_DEACTIVATION_WARNING"
]
},
{
"property": "VehicleProperty::CRUISE_CONTROL_COMMAND",
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "CruiseControlCommand::ACTIVATE",
- "CruiseControlCommand::SUSPEND",
- "CruiseControlCommand::INCREASE_TARGET_SPEED",
- "CruiseControlCommand::DECREASE_TARGET_SPEED",
- "CruiseControlCommand::INCREASE_TARGET_TIME_GAP",
- "CruiseControlCommand::DECREASE_TARGET_TIME_GAP"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "CruiseControlCommand::ACTIVATE",
+ "CruiseControlCommand::SUSPEND",
+ "CruiseControlCommand::INCREASE_TARGET_SPEED",
+ "CruiseControlCommand::DECREASE_TARGET_SPEED",
+ "CruiseControlCommand::INCREASE_TARGET_TIME_GAP",
+ "CruiseControlCommand::DECREASE_TARGET_TIME_GAP"
]
},
{
@@ -5439,15 +4558,15 @@
},
"areas": [
{
- "areaId": 0,
- "minFloatValue": 20.0,
- "maxFloatValue": 35.0,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": 0
}
- ]
+ ],
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minFloatValue": 20.0,
+ "maxFloatValue": 35.0
},
{
"property": "VehicleProperty::ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP",
@@ -5474,17 +4593,17 @@
},
"areas": [
{
- "areaId": 0,
- "minInt32Value": 0,
- "maxInt32Value": 200000,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": 0
}
],
"maxSampleRate": 10.0,
- "minSampleRate": 1.0
+ "minSampleRate": 1.0,
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minInt32Value": 0,
+ "maxInt32Value": 200000
},
{
"property": "VehicleProperty::HANDS_ON_DETECTION_ENABLED",
@@ -5503,13 +4622,16 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "HandsOnDetectionDriverState::HANDS_ON",
- "HandsOnDetectionDriverState::HANDS_OFF"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "HandsOnDetectionDriverState::HANDS_ON",
+ "HandsOnDetectionDriverState::HANDS_OFF"
]
},
{
@@ -5521,13 +4643,16 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "HandsOnDetectionWarning::NO_WARNING",
- "HandsOnDetectionWarning::WARNING"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "HandsOnDetectionWarning::NO_WARNING",
+ "HandsOnDetectionWarning::WARNING"
]
},
{
@@ -5547,20 +4672,23 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "DriverDrowsinessAttentionState::KSS_RATING_1_EXTREMELY_ALERT",
- "DriverDrowsinessAttentionState::KSS_RATING_2_VERY_ALERT",
- "DriverDrowsinessAttentionState::KSS_RATING_3_ALERT",
- "DriverDrowsinessAttentionState::KSS_RATING_4_RATHER_ALERT",
- "DriverDrowsinessAttentionState::KSS_RATING_5_NEITHER_ALERT_NOR_SLEEPY",
- "DriverDrowsinessAttentionState::KSS_RATING_6_SOME_SLEEPINESS",
- "DriverDrowsinessAttentionState::KSS_RATING_7_SLEEPY_NO_EFFORT",
- "DriverDrowsinessAttentionState::KSS_RATING_8_SLEEPY_SOME_EFFORT",
- "DriverDrowsinessAttentionState::KSS_RATING_9_VERY_SLEEPY"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "DriverDrowsinessAttentionState::KSS_RATING_1_EXTREMELY_ALERT",
+ "DriverDrowsinessAttentionState::KSS_RATING_2_VERY_ALERT",
+ "DriverDrowsinessAttentionState::KSS_RATING_3_ALERT",
+ "DriverDrowsinessAttentionState::KSS_RATING_4_RATHER_ALERT",
+ "DriverDrowsinessAttentionState::KSS_RATING_5_NEITHER_ALERT_NOR_SLEEPY",
+ "DriverDrowsinessAttentionState::KSS_RATING_6_SOME_SLEEPINESS",
+ "DriverDrowsinessAttentionState::KSS_RATING_7_SLEEPY_NO_EFFORT",
+ "DriverDrowsinessAttentionState::KSS_RATING_8_SLEEPY_SOME_EFFORT",
+ "DriverDrowsinessAttentionState::KSS_RATING_9_VERY_SLEEPY"
]
},
{
@@ -5580,13 +4708,16 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "DriverDrowsinessAttentionWarning::NO_WARNING",
- "DriverDrowsinessAttentionWarning::WARNING"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "DriverDrowsinessAttentionWarning::NO_WARNING",
+ "DriverDrowsinessAttentionWarning::WARNING"
]
},
{
@@ -5606,13 +4737,16 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "DriverDistractionState::NOT_DISTRACTED",
- "DriverDistractionState::DISTRACTED"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "DriverDistractionState::NOT_DISTRACTED",
+ "DriverDistractionState::DISTRACTED"
]
},
{
@@ -5632,13 +4766,16 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "DriverDistractionWarning::NO_WARNING",
- "DriverDistractionWarning::WARNING"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "DriverDistractionWarning::NO_WARNING",
+ "DriverDistractionWarning::WARNING"
]
},
{
@@ -5678,10 +4815,10 @@
"property": "VehicleProperty::VHAL_HEARTBEAT",
"areas": [
{
- "areaId": 0,
- "supportVariableUpdateRate": false
+ "areaId": 0
}
- ]
+ ],
+ "supportVariableUpdateRate": false
},
{
"property": "VehicleProperty::CLUSTER_SWITCH_UI",
@@ -5745,11 +4882,11 @@
],
"areas": [
{
- "areaId": 0,
- "supportVariableUpdateRate": false
+ "areaId": 0
}
],
- "comment": "configArray specifies it consists of int64[2] and byte[16]."
+ "comment": "configArray specifies it consists of int64[2] and byte[16].",
+ "supportVariableUpdateRate": false
},
{
"property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
@@ -5803,18 +4940,21 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "AutomaticEmergencyBrakingState::ENABLED",
- "AutomaticEmergencyBrakingState::ACTIVATED",
- "AutomaticEmergencyBrakingState::USER_OVERRIDE"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "AutomaticEmergencyBrakingState::ENABLED",
+ "AutomaticEmergencyBrakingState::ACTIVATED",
+ "AutomaticEmergencyBrakingState::USER_OVERRIDE"
]
},
{
@@ -5834,17 +4974,20 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "ForwardCollisionWarningState::NO_WARNING",
- "ForwardCollisionWarningState::WARNING"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "ForwardCollisionWarningState::NO_WARNING",
+ "ForwardCollisionWarningState::WARNING"
]
},
{
@@ -5864,29 +5007,23 @@
},
"areas": [
{
- "areaId": "VehicleAreaMirror::DRIVER_LEFT",
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "BlindSpotWarningState::NO_WARNING",
- "BlindSpotWarningState::WARNING"
- ]
+ "areaId": "VehicleAreaMirror::DRIVER_LEFT"
},
{
- "areaId": "VehicleAreaMirror::DRIVER_RIGHT",
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "BlindSpotWarningState::NO_WARNING",
- "BlindSpotWarningState::WARNING"
- ]
+ "areaId": "VehicleAreaMirror::DRIVER_RIGHT"
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "BlindSpotWarningState::NO_WARNING",
+ "BlindSpotWarningState::WARNING"
]
},
{
@@ -5906,17 +5043,20 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "LaneDepartureWarningState::NO_WARNING",
- "LaneDepartureWarningState::WARNING_LEFT",
- "LaneDepartureWarningState::WARNING_RIGHT"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "LaneDepartureWarningState::NO_WARNING",
+ "LaneDepartureWarningState::WARNING_LEFT",
+ "LaneDepartureWarningState::WARNING_RIGHT"
]
},
{
@@ -5936,18 +5076,21 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "LaneKeepAssistState::ENABLED",
- "LaneKeepAssistState::ACTIVATED_STEER_LEFT",
- "LaneKeepAssistState::ACTIVATED_STEER_RIGHT",
- "LaneKeepAssistState::USER_OVERRIDE"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "LaneKeepAssistState::ENABLED",
+ "LaneKeepAssistState::ACTIVATED_STEER_LEFT",
+ "LaneKeepAssistState::ACTIVATED_STEER_RIGHT",
+ "LaneKeepAssistState::USER_OVERRIDE"
]
},
{
@@ -5970,19 +5113,22 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "LaneCenteringAssistState::ENABLED",
- "LaneCenteringAssistState::ACTIVATION_REQUESTED",
- "LaneCenteringAssistState::ACTIVATED",
- "LaneCenteringAssistState::USER_OVERRIDE",
- "LaneCenteringAssistState::FORCED_DEACTIVATION_WARNING"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "LaneCenteringAssistState::ENABLED",
+ "LaneCenteringAssistState::ACTIVATION_REQUESTED",
+ "LaneCenteringAssistState::ACTIVATED",
+ "LaneCenteringAssistState::USER_OVERRIDE",
+ "LaneCenteringAssistState::FORCED_DEACTIVATION_WARNING"
]
},
{
@@ -6002,16 +5148,19 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "LowSpeedCollisionWarningState::NO_WARNING",
- "LowSpeedCollisionWarningState::WARNING"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "LowSpeedCollisionWarningState::NO_WARNING",
+ "LowSpeedCollisionWarningState::WARNING"
]
},
{
@@ -6031,16 +5180,19 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_SPEED_LOW",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "ElectronicStabilityControlState::ENABLED",
- "ElectronicStabilityControlState::ACTIVATED"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_SPEED_LOW",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "ElectronicStabilityControlState::ENABLED",
+ "ElectronicStabilityControlState::ACTIVATED"
]
},
{
@@ -6060,21 +5212,24 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "CrossTrafficMonitoringWarningState::NO_WARNING",
- "CrossTrafficMonitoringWarningState::WARNING_FRONT_LEFT",
- "CrossTrafficMonitoringWarningState::WARNING_FRONT_RIGHT",
- "CrossTrafficMonitoringWarningState::WARNING_FRONT_BOTH",
- "CrossTrafficMonitoringWarningState::WARNING_REAR_LEFT",
- "CrossTrafficMonitoringWarningState::WARNING_REAR_RIGHT",
- "CrossTrafficMonitoringWarningState::WARNING_REAR_BOTH"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "CrossTrafficMonitoringWarningState::NO_WARNING",
+ "CrossTrafficMonitoringWarningState::WARNING_FRONT_LEFT",
+ "CrossTrafficMonitoringWarningState::WARNING_FRONT_RIGHT",
+ "CrossTrafficMonitoringWarningState::WARNING_FRONT_BOTH",
+ "CrossTrafficMonitoringWarningState::WARNING_REAR_LEFT",
+ "CrossTrafficMonitoringWarningState::WARNING_REAR_RIGHT",
+ "CrossTrafficMonitoringWarningState::WARNING_REAR_BOTH"
]
},
{
@@ -6094,17 +5249,20 @@
},
"areas": [
{
- "areaId": 0,
- "supportedEnumValues": [
- "ErrorState::NOT_AVAILABLE_SAFETY",
- "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
- "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
- "ErrorState::NOT_AVAILABLE_DISABLED",
- "LowSpeedAutomaticEmergencyBrakingState::ENABLED",
- "LowSpeedAutomaticEmergencyBrakingState::ACTIVATED",
- "LowSpeedAutomaticEmergencyBrakingState::USER_OVERRIDE"
- ]
+ "areaId": 0
}
+ ],
+ "hasSupportedValueInfo": {
+ "hasSupportedValuesList": true
+ },
+ "supportedEnumValues": [
+ "ErrorState::NOT_AVAILABLE_SAFETY",
+ "ErrorState::NOT_AVAILABLE_POOR_VISIBILITY",
+ "ErrorState::NOT_AVAILABLE_SPEED_HIGH",
+ "ErrorState::NOT_AVAILABLE_DISABLED",
+ "LowSpeedAutomaticEmergencyBrakingState::ENABLED",
+ "LowSpeedAutomaticEmergencyBrakingState::ACTIVATED",
+ "LowSpeedAutomaticEmergencyBrakingState::USER_OVERRIDE"
]
},
{
diff --git a/automotive/vehicle/aidl/impl/current/default_config/config/TestProperties.json b/automotive/vehicle/aidl/impl/current/default_config/config/TestProperties.json
index 5779050..e3da23b 100644
--- a/automotive/vehicle/aidl/impl/current/default_config/config/TestProperties.json
+++ b/automotive/vehicle/aidl/impl/current/default_config/config/TestProperties.json
@@ -1,4 +1,5 @@
{
+ "apiVersion": 2,
"properties": [
{
"property": "TestVendorProperty::MIXED_TYPE_PROPERTY_FOR_TEST",
@@ -75,13 +76,7 @@
1.0
]
},
- "areaId": "Constants::HVAC_LEFT",
- "minFloatValue": -10.0,
- "maxFloatValue": 10.0,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::HVAC_LEFT"
},
{
"defaultValue": {
@@ -89,17 +84,17 @@
2.0
]
},
- "areaId": "Constants::HVAC_RIGHT",
- "minFloatValue": -10.0,
- "maxFloatValue": 10.0,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true
- }
+ "areaId": "Constants::HVAC_RIGHT"
}
],
"access": "VehiclePropertyAccess::READ_WRITE",
- "changeMode": "VehiclePropertyChangeMode::ON_CHANGE"
+ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE",
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true
+ },
+ "minFloatValue": -10.0,
+ "maxFloatValue": 10.0
},
{
"property": "TestVendorProperty::VENDOR_EXTENSION_INT_PROPERTY",
@@ -110,14 +105,7 @@
2
]
},
- "areaId": "VehicleAreaWindow::FRONT_WINDSHIELD",
- "minInt32Value": -100,
- "maxInt32Value": 100,
- "hasSupportedValueInfo": {
- "hasMinSupportedValue": true,
- "hasMaxSupportedValue": true,
- "hasSupportedValuesList": true
- }
+ "areaId": "VehicleAreaWindow::FRONT_WINDSHIELD"
},
{
"defaultValue": {
@@ -125,9 +113,7 @@
0
]
},
- "areaId": "VehicleAreaWindow::REAR_WINDSHIELD",
- "minInt32Value": -100,
- "maxInt32Value": 100
+ "areaId": "VehicleAreaWindow::REAR_WINDSHIELD"
},
{
"defaultValue": {
@@ -135,13 +121,23 @@
-1
]
},
- "areaId": "VehicleAreaWindow::ROOF_TOP_1",
- "minInt32Value": -100,
- "maxInt32Value": 100
+ "areaId": "VehicleAreaWindow::ROOF_TOP_1"
}
],
"access": "VehiclePropertyAccess::READ_WRITE",
- "changeMode": "VehiclePropertyChangeMode::ON_CHANGE"
+ "changeMode": "VehiclePropertyChangeMode::ON_CHANGE",
+ "hasSupportedValueInfo": {
+ "hasMinSupportedValue": true,
+ "hasMaxSupportedValue": true,
+ "hasSupportedValuesList": true
+ },
+ "minInt32Value": -100,
+ "maxInt32Value": 100,
+ "supportedValues": [
+ 1,
+ 2,
+ 3
+ ]
},
{
"property": "TestVendorProperty::VENDOR_EXTENSION_STRING_PROPERTY",
@@ -219,4 +215,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/automotive/vehicle/aidl/impl/current/fake_impl/hardware/include/FakeVehicleHardware.h b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/include/FakeVehicleHardware.h
index b9d315a..d51e430 100644
--- a/automotive/vehicle/aidl/impl/current/fake_impl/hardware/include/FakeVehicleHardware.h
+++ b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/include/FakeVehicleHardware.h
@@ -170,6 +170,13 @@
std::shared_ptr<RecurrentTimer::Callback> recurrentAction;
};
+ struct DumpOptionPropIdAreaIdInfo {
+ int32_t propId;
+ int32_t areaId;
+ std::string propIdStr;
+ std::string areaIdStr;
+ };
+
const std::unique_ptr<obd2frame::FakeObd2Frame> mFakeObd2Frame;
const std::unique_ptr<FakeUserHal> mFakeUserHal;
// RecurrentTimer is thread-safe.
@@ -189,9 +196,6 @@
std::unordered_map<PropIdAreaId, VehiclePropValuePool::RecyclableType, PropIdAreaIdHash>
mSavedProps GUARDED_BY(mLock);
std::unordered_set<PropIdAreaId, PropIdAreaIdHash> mSubOnChangePropIdAreaIds GUARDED_BY(mLock);
- int32_t mMinSupportedValueForTestIntProp GUARDED_BY(mLock) = 0;
- int32_t mMaxSupportedValueForTestIntProp GUARDED_BY(mLock) = 10;
- std::vector<int32_t> mSupportedValuesListForTestIntProp GUARDED_BY(mLock) = {0, 2, 4, 6, 8, 10};
std::unordered_map<PropIdAreaId, aidl::android::hardware::automotive::vehicle::RawPropValues,
PropIdAreaIdHash>
@@ -199,6 +203,10 @@
std::unordered_map<PropIdAreaId, aidl::android::hardware::automotive::vehicle::RawPropValues,
PropIdAreaIdHash>
mMaxSupportedValueByPropIdAreaId GUARDED_BY(mLock);
+ std::unordered_map<PropIdAreaId,
+ std::vector<aidl::android::hardware::automotive::vehicle::RawPropValues>,
+ PropIdAreaIdHash>
+ mSupportedValuesByPropIdAreaId GUARDED_BY(mLock);
// PendingRequestHandler is thread-safe.
mutable PendingRequestHandler<GetValuesCallback,
@@ -327,9 +335,6 @@
float sampleRateHz) REQUIRES(mLock);
void unregisterRefreshLocked(PropIdAreaId propIdAreaId) REQUIRES(mLock);
void refreshTimestampForInterval(int64_t intervalInNanos) EXCLUDES(mLock);
- void triggerSupportedValueChange(
- const aidl::android::hardware::automotive::vehicle::VehiclePropConfig& config)
- EXCLUDES(mLock);
void triggerSupportedValueChange(int32_t propId, int32_t areaId) EXCLUDES(mLock);
template <class T>
void setMinSupportedValueLocked(int32_t propId, int32_t areaId, T minValue) REQUIRES(mLock);
@@ -339,6 +344,8 @@
android::base::Result<void> parseAndSetMinMaxValue(int32_t propId, int32_t areaId,
const std::vector<std::string>& options,
size_t index) EXCLUDES(mLock);
+ android::base::Result<DumpOptionPropIdAreaIdInfo> parseDumpOptionPropIdAreaId(
+ const std::vector<std::string>& options, size_t& index);
static aidl::android::hardware::automotive::vehicle::VehiclePropValue createHwInputKeyProp(
aidl::android::hardware::automotive::vehicle::VehicleHwKeyInputAction action,
@@ -372,8 +379,13 @@
static android::base::Result<int32_t> parseAreaId(const std::vector<std::string>& options,
size_t index, int32_t propId);
template <class T>
- static android::base::Result<std::vector<T>> parseValues(
- const std::vector<std::string>& options, size_t index);
+ static android::base::Result<std::vector<T>> parseOptionValues(
+ const std::vector<std::string>& options, size_t index, size_t count);
+
+ template <class T>
+ static android::base::Result<
+ std::vector<aidl::android::hardware::automotive::vehicle::RawPropValues>>
+ parseOptionsToSupportedValuesList(const std::vector<std::string>& options, size_t index);
};
} // namespace fake
diff --git a/automotive/vehicle/aidl/impl/current/fake_impl/hardware/src/FakeVehicleHardware.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/src/FakeVehicleHardware.cpp
index c174e92..4eb84dd 100644
--- a/automotive/vehicle/aidl/impl/current/fake_impl/hardware/src/FakeVehicleHardware.cpp
+++ b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/src/FakeVehicleHardware.cpp
@@ -297,6 +297,24 @@
return ss.str();
}
+template <class T>
+RawPropValues createRawPropValues(T value);
+
+template <>
+RawPropValues createRawPropValues(int32_t value) {
+ return RawPropValues{.int32Values = {value}};
+}
+
+template <>
+RawPropValues createRawPropValues(int64_t value) {
+ return RawPropValues{.int64Values = {value}};
+}
+
+template <>
+RawPropValues createRawPropValues(float value) {
+ return RawPropValues{.floatValues = {value}};
+}
+
} // namespace
void FakeVehicleHardware::storePropInitialValue(const ConfigDeclaration& config) {
@@ -398,46 +416,16 @@
return configsByPropId;
}
-template <>
-void FakeVehicleHardware::setMinSupportedValueLocked(int32_t propId, int32_t areaId,
- int32_t minValue) {
+template <class T>
+void FakeVehicleHardware::setMinSupportedValueLocked(int32_t propId, int32_t areaId, T minValue) {
mMinSupportedValueByPropIdAreaId[PropIdAreaId{.propId = propId, .areaId = areaId}] =
- RawPropValues{.int32Values = {minValue}};
+ createRawPropValues<T>(minValue);
}
-template <>
-void FakeVehicleHardware::setMaxSupportedValueLocked(int32_t propId, int32_t areaId,
- int32_t maxValue) {
+template <class T>
+void FakeVehicleHardware::setMaxSupportedValueLocked(int32_t propId, int32_t areaId, T maxValue) {
mMaxSupportedValueByPropIdAreaId[PropIdAreaId{.propId = propId, .areaId = areaId}] =
- RawPropValues{.int32Values = {maxValue}};
-}
-
-template <>
-void FakeVehicleHardware::setMinSupportedValueLocked(int32_t propId, int32_t areaId,
- int64_t minValue) {
- mMinSupportedValueByPropIdAreaId[PropIdAreaId{.propId = propId, .areaId = areaId}] =
- RawPropValues{.int64Values = {minValue}};
-}
-
-template <>
-void FakeVehicleHardware::setMaxSupportedValueLocked(int32_t propId, int32_t areaId,
- int64_t maxValue) {
- mMaxSupportedValueByPropIdAreaId[PropIdAreaId{.propId = propId, .areaId = areaId}] =
- RawPropValues{.int64Values = {maxValue}};
-}
-
-template <>
-void FakeVehicleHardware::setMinSupportedValueLocked(int32_t propId, int32_t areaId,
- float minValue) {
- mMinSupportedValueByPropIdAreaId[PropIdAreaId{.propId = propId, .areaId = areaId}] =
- RawPropValues{.floatValues = {minValue}};
-}
-
-template <>
-void FakeVehicleHardware::setMaxSupportedValueLocked(int32_t propId, int32_t areaId,
- float maxValue) {
- mMaxSupportedValueByPropIdAreaId[PropIdAreaId{.propId = propId, .areaId = areaId}] =
- RawPropValues{.floatValues = {maxValue}};
+ createRawPropValues<T>(maxValue);
}
void FakeVehicleHardware::init(int32_t s2rS2dConfig) {
@@ -470,12 +458,7 @@
if (!areaConfig.hasSupportedValueInfo.has_value()) {
continue;
}
- if (!areaConfig.hasSupportedValueInfo->hasMinSupportedValue &&
- !areaConfig.hasSupportedValueInfo->hasMaxSupportedValue) {
- continue;
- }
if (areaConfig.hasSupportedValueInfo->hasMinSupportedValue) {
- RawPropValues rawPropValues = {};
switch (propertyType) {
case toInt(VehiclePropertyType::INT32):
setMinSupportedValueLocked(cfg.prop, areaConfig.areaId,
@@ -497,7 +480,6 @@
}
}
if (areaConfig.hasSupportedValueInfo->hasMaxSupportedValue) {
- RawPropValues rawPropValues = {};
switch (propertyType) {
case toInt(VehiclePropertyType::INT32):
setMaxSupportedValueLocked(cfg.prop, areaConfig.areaId,
@@ -513,11 +495,71 @@
break;
default:
ALOGE("hasMaxSupportedValue must only be true for INT32, INT64 or "
- "FLOAT "
- "type property");
+ "FLOAT type property");
continue;
}
}
+ if (areaConfig.hasSupportedValueInfo->hasSupportedValuesList) {
+ std::vector<RawPropValues> supportedValuesList;
+ // We first check "supportedValues" field to populate supported values list.
+ const auto& supportedValuesForAreaId =
+ configDeclaration.supportedValuesForAreaId;
+ const auto it = supportedValuesForAreaId.find(areaConfig.areaId);
+ if (it != supportedValuesForAreaId.end()) {
+ for (float supportedValueFloat : it->second) {
+ switch (propertyType) {
+ case toInt(VehiclePropertyType::INT32):
+ supportedValuesList.push_back(createRawPropValues(
+ static_cast<int32_t>(supportedValueFloat)));
+ break;
+ case toInt(VehiclePropertyType::INT64):
+ supportedValuesList.push_back(createRawPropValues(
+ static_cast<int64_t>(supportedValueFloat)));
+ break;
+ case toInt(VehiclePropertyType::FLOAT):
+ supportedValuesList.push_back(
+ createRawPropValues(supportedValueFloat));
+ break;
+ default:
+ ALOGE("supportedValues field is only supported for INT32, "
+ "INT64 or FLOAT type "
+ "property");
+ }
+ }
+ } else {
+ // If "supportedValues" is not specified, try to use "supportedEnumValues".
+ switch (propertyType) {
+ case toInt(VehiclePropertyType::INT32):
+ if (areaConfig.supportedEnumValues.has_value()) {
+ for (int64_t supportedEnumValue :
+ *areaConfig.supportedEnumValues) {
+ int32_t supportedValue =
+ static_cast<int32_t>(supportedEnumValue);
+ supportedValuesList.push_back(
+ createRawPropValues(supportedValue));
+ }
+ }
+ break;
+ case toInt(VehiclePropertyType::INT64):
+ if (areaConfig.supportedEnumValues.has_value()) {
+ for (int64_t supportedEnumValue :
+ *areaConfig.supportedEnumValues) {
+ supportedValuesList.push_back(
+ createRawPropValues(supportedEnumValue));
+ }
+ }
+ break;
+ default:
+ // Do nothing
+ break;
+ }
+ }
+ if (!supportedValuesList.empty()) {
+ mSupportedValuesByPropIdAreaId[PropIdAreaId{.propId = cfg.prop,
+ .areaId = areaConfig.areaId}] =
+ std::move(supportedValuesList);
+ }
+ }
}
}
}
@@ -1901,44 +1943,131 @@
return result;
}
-std::string FakeVehicleHardware::dumpSetMinMaxValue(const std::vector<std::string>& options) {
- // Requires at least --set-minmaxvalue <PropId> <MinValue> <MaxValue>
- if (auto result = checkArgumentsSize(options, /*minSize=*/4); !result.ok()) {
- return StringPrintf("Not enough arguments\n");
- }
- size_t index = 1;
+Result<FakeVehicleHardware::DumpOptionPropIdAreaIdInfo>
+FakeVehicleHardware::parseDumpOptionPropIdAreaId(const std::vector<std::string>& options,
+ size_t& index) {
const std::string& propIdStr = options[index];
auto maybePropId = parsePropId(options, index);
index++;
if (!maybePropId.ok()) {
- return StringPrintf("Failed to set min/max supported value: propId not valid: %s\n",
- propIdStr.c_str());
+ return Error() << "propId not valid: " << propIdStr;
}
int32_t propId = maybePropId.value();
auto configResult = mServerSidePropStore->getPropConfig(propId);
if (!configResult.ok()) {
- return "Failed to set min/max supported value: property not supported\n";
+ return Error() << "property not supported";
}
std::string areaIdStr = "0";
int32_t areaId = 0;
if (EqualsIgnoreCase(options[index], "-a")) {
index++;
if (index >= options.size()) {
- return StringPrintf("Not enough arguments\n");
+ return Error() << "Not enough arguments";
}
areaIdStr = options[index];
auto maybeAreaId = parseAreaId(options, index, propId);
if (!maybeAreaId.ok()) {
- return StringPrintf("Failed to set min/max supported value: areaId not valid: %s\n",
- areaIdStr.c_str());
+ return Error() << "areaId not valid: " << areaIdStr;
}
areaId = maybeAreaId.value();
index++;
}
+ return DumpOptionPropIdAreaIdInfo{
+ .propId = propId, .areaId = areaId, .propIdStr = propIdStr, .areaIdStr = areaIdStr};
+}
- if (index + 1 >= options.size()) {
- return StringPrintf("Not enough arguments\n");
+template <class T>
+Result<void> FakeVehicleHardware::parseAndSetMinMaxValue(int32_t propId, int32_t areaId,
+ const std::vector<std::string>& options,
+ size_t index) {
+ auto valuesResult = parseOptionValues<T>(options, index, /*count= */ 2);
+ if (!valuesResult.ok()) {
+ return Error() << "Failed to set min/max supported value: "
+ << valuesResult.error().message();
}
+ T minValue = (*valuesResult)[0];
+ T maxValue = (*valuesResult)[1];
+ if (minValue > maxValue) {
+ return Error() << "Failed to set min/max supported value: MinValue: " << minValue
+ << " must not > MaxValue: " << maxValue;
+ }
+ {
+ std::scoped_lock<std::mutex> lockGuard(mLock);
+ setMinSupportedValueLocked(propId, areaId, minValue);
+ setMaxSupportedValueLocked(propId, areaId, maxValue);
+ }
+ return {};
+}
+
+template <class T>
+Result<std::vector<T>> FakeVehicleHardware::parseOptionValues(
+ const std::vector<std::string>& options, size_t index, size_t count) {
+ if (index + count > options.size()) {
+ return Error() << "Not enough arguments";
+ }
+ std::vector<T> values;
+ for (size_t i = index; i < index + count; i++) {
+ auto result = safelyParseInt<T>(i, options[i]);
+ if (!result.ok()) {
+ return Error() << StringPrintf("Value: \"%s\" is not a valid int: %s",
+ options[i].c_str(), getErrorMsg(result).c_str());
+ }
+ values.push_back(result.value());
+ }
+ return values;
+}
+
+// This is a special version of parseOptionValues for float type.
+template <>
+Result<std::vector<float>> FakeVehicleHardware::parseOptionValues(
+ const std::vector<std::string>& options, size_t index, size_t count) {
+ if (index + count > options.size()) {
+ return Error() << "Not enough arguments";
+ }
+ std::vector<float> values;
+ for (size_t i = index; i < index + count; i++) {
+ auto result = safelyParseFloat(i, options[i]);
+ if (!result.ok()) {
+ return Error() << StringPrintf("Value: \"%s\" is not a valid float: %s",
+ options[i].c_str(), getErrorMsg(result).c_str());
+ }
+ values.push_back(result.value());
+ }
+ return values;
+}
+
+template <class T>
+Result<std::vector<RawPropValues>> FakeVehicleHardware::parseOptionsToSupportedValuesList(
+ const std::vector<std::string>& options, size_t index) {
+ std::vector<RawPropValues> supportedValuesList;
+ auto valuesResult = parseOptionValues<T>(options, index, options.size() - index);
+ if (!valuesResult.ok()) {
+ return Error() << valuesResult.error().message();
+ }
+ std::vector<T> values = *valuesResult;
+ if (values.size() == 0) {
+ return Error() << "Not enough arguments";
+ }
+ for (T value : *valuesResult) {
+ supportedValuesList.push_back(createRawPropValues(value));
+ }
+ return supportedValuesList;
+}
+
+std::string FakeVehicleHardware::dumpSetMinMaxValue(const std::vector<std::string>& options) {
+ // Requires at least --set-minmaxvalue <PropId> <MinValue> <MaxValue>
+ if (auto result = checkArgumentsSize(options, /*minSize=*/4); !result.ok()) {
+ return "Failed to set min/max supported value: Not enough arguments\n";
+ }
+ size_t index = 1;
+ Result<DumpOptionPropIdAreaIdInfo> maybeInfo = parseDumpOptionPropIdAreaId(options, index);
+ if (!maybeInfo.ok()) {
+ return StringPrintf("Failed to set min/max supported value: %s\n",
+ maybeInfo.error().message().c_str());
+ }
+ int32_t propId = maybeInfo->propId;
+ int32_t areaId = maybeInfo->areaId;
+
Result<void> parseAndSetValueResult = {};
switch (propId & toInt(VehiclePropertyType::MASK)) {
case toInt(VehiclePropertyType::INT32):
@@ -1962,90 +2091,52 @@
}
triggerSupportedValueChange(propId, areaId);
- return StringPrintf("Min/Max supported value for propId: %s, areaId: %s set", propIdStr.c_str(),
- areaIdStr.c_str());
-}
-
-template <class T>
-Result<void> FakeVehicleHardware::parseAndSetMinMaxValue(int32_t propId, int32_t areaId,
- const std::vector<std::string>& options,
- size_t index) {
- auto valuesResult = parseValues<T>(options, index);
- if (!valuesResult.ok()) {
- return Error() << "Failed to set min/max supported value: "
- << valuesResult.error().message();
- }
- T minValue = (*valuesResult)[0];
- T maxValue = (*valuesResult)[1];
- if (minValue > maxValue) {
- return Error() << "Failed to set min/max supported value: MinValue: " << minValue
- << " must not > MaxValue: " << maxValue;
- }
- {
- std::scoped_lock<std::mutex> lockGuard(mLock);
- setMinSupportedValueLocked(propId, areaId, minValue);
- setMaxSupportedValueLocked(propId, areaId, maxValue);
- }
- return {};
-}
-
-template <class T>
-Result<std::vector<T>> FakeVehicleHardware::parseValues(const std::vector<std::string>& options,
- size_t index) {
- std::vector<T> values;
- for (size_t i = index; i < index + 2; i++) {
- auto result = safelyParseInt<T>(i, options[i]);
- if (!result.ok()) {
- return Error() << StringPrintf("Value: \"%s\" is not a valid int: %s",
- options[i].c_str(), getErrorMsg(result).c_str());
- }
- values.push_back(result.value());
- }
- return values;
-}
-
-// This is a special version of parseValues for float type.
-template <>
-Result<std::vector<float>> FakeVehicleHardware::parseValues(const std::vector<std::string>& options,
- size_t index) {
- std::vector<float> values;
- for (size_t i = index; i < index + 2; i++) {
- auto result = safelyParseFloat(i, options[i]);
- if (!result.ok()) {
- return Error() << StringPrintf("Value: \"%s\" is not a valid float: %s",
- options[i].c_str(), getErrorMsg(result).c_str());
- }
- values.push_back(result.value());
- }
- return values;
+ return StringPrintf("Min/Max supported value for propId: %s, areaId: %s set",
+ maybeInfo->propIdStr.c_str(), maybeInfo->propIdStr.c_str());
}
std::string FakeVehicleHardware::dumpSetSupportedValues(const std::vector<std::string>& options) {
- if (auto result = checkArgumentsSize(options, /*minSize=*/2); !result.ok()) {
- return getErrorMsg(result);
- }
- int testPropId = toInt(TestVendorProperty::VENDOR_EXTENSION_INT_PROPERTY);
- auto configResult = mServerSidePropStore->getPropConfig(testPropId);
- if (!configResult.ok()) {
- return "Failed to set min/max supported value: VENDOR_EXTENSION_INT_PROPERTY not supported";
- }
- std::vector<int32_t> values;
- for (size_t i = 1; i < options.size(); i++) {
- auto int32Result = safelyParseInt<int32_t>(i, options[i]);
- if (!int32Result.ok()) {
- return StringPrintf(
- "Failed to set supported values: Value: \"%s\" is not a valid int: %s\n",
- options[i].c_str(), getErrorMsg(int32Result).c_str());
- }
- values.push_back(int32Result.value());
+ // We at least requires set-supportedvalues <PROP> <SUPPORTED_VALUE>
+ if (auto result = checkArgumentsSize(options, /*minSize=*/3); !result.ok()) {
+ return "Failed to set supported values list: Not enough arguments\n";
}
- {
- std::scoped_lock<std::mutex> lockGuard(mLock);
- mSupportedValuesListForTestIntProp = values;
+ size_t index = 1;
+ Result<DumpOptionPropIdAreaIdInfo> maybeInfo = parseDumpOptionPropIdAreaId(options, index);
+ if (!maybeInfo.ok()) {
+ return StringPrintf("Failed to set supported values list: %s\n",
+ maybeInfo.error().message().c_str());
}
- triggerSupportedValueChange(configResult.value());
- return "Supported values list for VENDOR_EXTENSION_INT_PROPERTY set";
+ int32_t propId = maybeInfo->propId;
+ int32_t areaId = maybeInfo->areaId;
+ Result<std::vector<RawPropValues>> maybeSupportedValues;
+ switch (propId & toInt(VehiclePropertyType::MASK)) {
+ case toInt(VehiclePropertyType::INT32):
+ maybeSupportedValues = parseOptionsToSupportedValuesList<int32_t>(options, index);
+ break;
+ case toInt(VehiclePropertyType::INT64):
+ maybeSupportedValues = parseOptionsToSupportedValuesList<int64_t>(options, index);
+ break;
+ case toInt(VehiclePropertyType::FLOAT):
+ maybeSupportedValues = parseOptionsToSupportedValuesList<float>(options, index);
+ break;
+ default:
+ return StringPrintf(
+ "Failed to set supported values list: only int32/int64/float type"
+ " property is supported\n");
+ }
+ if (!maybeSupportedValues.ok()) {
+ return StringPrintf("Failed to set supported values list: %s\n",
+ maybeSupportedValues.error().message().c_str());
+ }
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ mSupportedValuesByPropIdAreaId[PropIdAreaId{.propId = propId, .areaId = areaId}] =
+ *maybeSupportedValues;
+ }
+ triggerSupportedValueChange(maybeInfo->propId, maybeInfo->areaId);
+ return StringPrintf("Supported values list for propId: %s, areaId: %s set",
+ maybeInfo->propIdStr.c_str(), maybeInfo->propIdStr.c_str());
}
void FakeVehicleHardware::triggerSupportedValueChange(int32_t propId, int32_t areaId) {
@@ -2060,56 +2151,44 @@
}});
}
-// Triggers supported value change for all areaIds that specify hasSupportedValueInfo.
-void FakeVehicleHardware::triggerSupportedValueChange(const VehiclePropConfig& config) {
- if (mOnSupportedValueChangeCallback == nullptr) {
- ALOGE("onSupportedValueChangeCallback is not registered, ignore event");
- return;
- }
-
- std::vector<PropIdAreaId> propIdAreaIds;
- for (const VehicleAreaConfig& areaConfig : config.areaConfigs) {
- if (areaConfig.hasSupportedValueInfo != std::nullopt) {
- propIdAreaIds.push_back({
- .propId = config.prop,
- .areaId = areaConfig.areaId,
- });
- }
- }
- (*mOnSupportedValueChangeCallback)(std::move(propIdAreaIds));
-}
-
std::string FakeVehicleHardware::dumpHelp() {
- return "Usage: \n\n"
- "[no args]: dumps (id and value) all supported properties \n"
- "--help: shows this help\n"
- "--list: lists the property IDs and their supported area IDs for all supported "
- "properties\n"
- "--get <PROP_ID_1> [PROP_ID_2] [PROP_ID_N]: dumps the value of specific properties. \n"
- "--getWithArg <PROP_ID> [ValueArguments]: gets the value for a specific property. "
- "The value arguments constructs a VehiclePropValue used in the getValue request. \n"
- "--set <PROP_ID> [ValueArguments]: sets the value of property PROP_ID, the value "
- "arguments constructs a VehiclePropValue used in the setValue request. \n"
- "--set-minmaxvalue <PROP_ID> [-a AREA_ID] <MIN_VALUE> <MAX_VALUE>: sets the min max "
- "supported value e.g. --set-minmaxvalue HVAC_TEMPERATURE_SET -a ROW_1_LEFT -5.1 5.1\n"
- "--set-supportedvalues <VALUE_1(int)> [VALUE_2(int) ...]: sets the supported values list"
- "for VENDOR_EXTENSION_INT_PROPERTY\n"
- "--save-prop <PROP_ID> [-a AREA_ID]: saves the current value for PROP_ID, integration "
- "tests that modify prop value must call this before test and restore-prop after test. \n"
- "--restore-prop <PROP_ID> [-a AREA_ID]: restores a previously saved property value. \n"
- "--inject-event <PROP_ID> [ValueArguments]: inject a property update event from car\n\n"
- "ValueArguments are in the format of [-a OPTIONAL_AREA_ID] "
- "[-i INT_VALUE_1 [INT_VALUE_2 ...]] "
- "[-i64 INT64_VALUE_1 [INT64_VALUE_2 ...]] "
- "[-f FLOAT_VALUE_1 [FLOAT_VALUE_2 ...]] "
- "[-s STR_VALUE] "
- "[-b BYTES_VALUE].\n"
- "For example: to set property ID 0x1234, areaId 0x1 to int32 values: [1, 2, 3], "
- "use \"--set 0x1234 -a 0x1 -i 1 2 3\"\n"
- "Note that the string, bytes and area value can be set just once, while the other can"
- " have multiple values (so they're used in the respective array), "
- "BYTES_VALUE is in the form of 0xXXXX, e.g. 0xdeadbeef.\n" +
- genFakeDataHelp() + "Fake user HAL usage: \n" + mFakeUserHal->showDumpHelp();
+ return R"(Usage:
+[no args]: dumps (id and value) all supported properties
+
+--help: shows this help
+
+--list: lists the property IDs and their supported area IDs for all supported properties
+
+--get <PROP_ID_1> [PROP_ID_2] [PROP_ID_N]: dumps the value of specific properties.
+
+--getWithArg <PROP_ID> [ValueArguments]: gets the value for a specific property.
+The value arguments constructs a VehiclePropValue used in the getValue request.
+
+--set <PROP_ID> [ValueArguments]: sets the value of property PROP_ID
+The value arguments constructs a VehiclePropValue used in the setValue request.
+
+--set-minmaxvalue <PROP_ID> [-a AREA_ID] <MIN_VALUE> <MAX_VALUE>: sets the min max supported value
+e.g. --set-minmaxvalue HVAC_TEMPERATURE_SET -a ROW_1_LEFT 17 32
+
+--set-supportedvalues <PROP_ID> [-a AREA_ID] <VALUE_1> [VALUE_2 ...]: sets the supported values list
+e.g. --set-supportedvalues HVAC_TEMPERATURE_SET -a ROW_1_LEFT 17 17.5 18 18.5
+
+--save-prop <PROP_ID> [-a AREA_ID]: saves the current value for PROP_ID, integration tests that
+modify prop value must call this before test and restore-prop after test.
+
+--restore-prop <PROP_ID> [-a AREA_ID]: restores a previously saved property value.
+
+--inject-event <PROP_ID> [ValueArguments]: inject a property update event from car
+ValueArguments are in the format of
+[-a OPTIONAL_AREA_ID] [-i INT_VALUE_1 [INT_VALUE_2 ...]] [-i64 INT64_VALUE_1 [INT64_VALUE_2 ...]]
+[-f FLOAT_VALUE_1 [FLOAT_VALUE_2 ...]] [-s STR_VALUE] [-b BYTES_VALUE].
+For example: to set property ID 0x1234, areaId 0x1 to int32 values: [1, 2, 3]
+use "--set 0x1234 -a 0x1 -i 1 2 3"
+Note that the string, bytes and area value can be set just once, while the other can have multiple
+values (so they're used in the respective array), BYTES_VALUE is in the form of 0xXXXX,
+e.g. 0xdeadbeef.
+)" + genFakeDataHelp() +
+ "Fake user HAL usage: \n" + mFakeUserHal->showDumpHelp();
}
std::string FakeVehicleHardware::dumpAllProperties() {
@@ -2629,19 +2708,17 @@
const std::vector<PropIdAreaId>& propIdAreaIds) {
std::scoped_lock<std::mutex> lockGuard(mLock);
std::vector<SupportedValuesListResult> results;
- // We only support VENDOR_EXTENSION_INT_PROPERTY
for (const auto& propIdAreaId : propIdAreaIds) {
- int propId = propIdAreaId.propId;
- int areaId = propIdAreaId.areaId;
- if (propId != toInt(TestVendorProperty::VENDOR_EXTENSION_INT_PROPERTY)) {
+ const auto it = mSupportedValuesByPropIdAreaId.find(propIdAreaId);
+ if (it == mSupportedValuesByPropIdAreaId.end()) {
results.push_back(SupportedValuesListResult{
.status = StatusCode::INVALID_ARG,
});
continue;
}
std::vector<std::optional<RawPropValues>> supportedValuesList;
- for (int32_t value : mSupportedValuesListForTestIntProp) {
- supportedValuesList.push_back(RawPropValues{.int32Values = {value}});
+ for (const RawPropValues& supportedValue : it->second) {
+ supportedValuesList.push_back(supportedValue);
}
results.push_back(SupportedValuesListResult{
.status = StatusCode::OK,
diff --git a/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
index 617d2d2..8262098 100644
--- a/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
+++ b/automotive/vehicle/aidl/impl/current/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp
@@ -80,6 +80,7 @@
using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateShutdownParam;
using ::aidl::android::hardware::automotive::vehicle::VehicleAreaMirror;
using ::aidl::android::hardware::automotive::vehicle::VehicleAreaSeat;
+using ::aidl::android::hardware::automotive::vehicle::VehicleAreaWindow;
using ::aidl::android::hardware::automotive::vehicle::VehicleHwKeyInputAction;
using ::aidl::android::hardware::automotive::vehicle::VehiclePropConfig;
using ::aidl::android::hardware::automotive::vehicle::VehicleProperty;
@@ -2591,7 +2592,7 @@
DumpResult result = getHardware()->dump(options);
ASSERT_FALSE(result.callerShouldDumpState);
ASSERT_NE(result.buffer, "");
- ASSERT_THAT(result.buffer, ContainsRegex("Usage: "));
+ ASSERT_THAT(result.buffer, ContainsRegex("Usage:"));
}
TEST_F(FakeVehicleHardwareTest, testDumpListProperties) {
@@ -2892,8 +2893,9 @@
ASSERT_THAT(result.buffer, ContainsRegex("Failed"));
}
-TEST_F(FakeVehicleHardwareTest, testDumpSetSupportedValues) {
- std::vector<std::string> options = {"--set-supportedvalues", "1", "2", "3"};
+TEST_F(FakeVehicleHardwareTest, testDumpSetSupportedValues_Int) {
+ std::vector<std::string> options = {
+ "--set-supportedvalues", "EV_STOPPING_MODE", "-a", "0", "1", "2", "3"};
std::vector<PropIdAreaId> changedPropIdAreaIds;
getHardware()->registerSupportedValueChangeCallback(
@@ -2907,11 +2909,13 @@
ASSERT_THAT(result.buffer, ContainsRegex("Supported values list .* set"));
ASSERT_EQ(changedPropIdAreaIds.size(), 1u);
+ EXPECT_EQ(changedPropIdAreaIds[0], (PropIdAreaId{
+ .propId = toInt(VehicleProperty::EV_STOPPING_MODE),
+ .areaId = 0,
+ }));
- auto results = getHardware()->getSupportedValuesLists({PropIdAreaId{
- .propId = toInt(TestVendorProperty::VENDOR_EXTENSION_INT_PROPERTY), .areaId = 0}});
+ auto results = getHardware()->getSupportedValuesLists({changedPropIdAreaIds[0]});
- ASSERT_EQ(results.size(), 1u);
EXPECT_EQ(results[0].status, StatusCode::OK);
EXPECT_NE(results[0].supportedValuesList, std::nullopt);
EXPECT_EQ(results[0].supportedValuesList.value(), std::vector<std::optional<RawPropValues>>({
@@ -2921,13 +2925,108 @@
}));
}
+TEST_F(FakeVehicleHardwareTest, testDumpSetSupportedValues_forGlobalPropertySkipArea) {
+ std::vector<std::string> options = {"--set-supportedvalues", "EV_STOPPING_MODE", "1", "2", "3"};
+ std::vector<PropIdAreaId> changedPropIdAreaIds;
+
+ getHardware()->registerSupportedValueChangeCallback(
+ std::make_unique<IVehicleHardware::SupportedValueChangeCallback>(
+ [&changedPropIdAreaIds](std::vector<PropIdAreaId> propIdAreaIds) {
+ changedPropIdAreaIds = propIdAreaIds;
+ }));
+
+ DumpResult result = getHardware()->dump(options);
+ ASSERT_FALSE(result.callerShouldDumpState);
+ ASSERT_THAT(result.buffer, ContainsRegex("Supported values list .* set"));
+
+ ASSERT_EQ(changedPropIdAreaIds.size(), 1u);
+ EXPECT_EQ(changedPropIdAreaIds[0], (PropIdAreaId{
+ .propId = toInt(VehicleProperty::EV_STOPPING_MODE),
+ .areaId = 0,
+ }));
+
+ auto results = getHardware()->getSupportedValuesLists({changedPropIdAreaIds[0]});
+
+ EXPECT_EQ(results[0].status, StatusCode::OK);
+ EXPECT_NE(results[0].supportedValuesList, std::nullopt);
+ EXPECT_EQ(results[0].supportedValuesList.value(), std::vector<std::optional<RawPropValues>>({
+ RawPropValues{.int32Values = {1}},
+ RawPropValues{.int32Values = {2}},
+ RawPropValues{.int32Values = {3}},
+ }));
+}
+
+TEST_F(FakeVehicleHardwareTest, testDumpSetSupportedValues_Float) {
+ std::vector<std::string> options = {"--set-supportedvalues",
+ "HVAC_TEMPERATURE_SET",
+ "-a",
+ "ROW_1_LEFT",
+ "1.1",
+ "2.2",
+ "3.3"};
+ std::vector<PropIdAreaId> changedPropIdAreaIds;
+
+ getHardware()->registerSupportedValueChangeCallback(
+ std::make_unique<IVehicleHardware::SupportedValueChangeCallback>(
+ [&changedPropIdAreaIds](std::vector<PropIdAreaId> propIdAreaIds) {
+ changedPropIdAreaIds = propIdAreaIds;
+ }));
+
+ DumpResult result = getHardware()->dump(options);
+ ASSERT_FALSE(result.callerShouldDumpState);
+ ASSERT_THAT(result.buffer, ContainsRegex("Supported values list .* set"));
+
+ ASSERT_EQ(changedPropIdAreaIds.size(), 1u);
+ EXPECT_EQ(changedPropIdAreaIds[0],
+ (PropIdAreaId{
+ .propId = toInt(VehicleProperty::HVAC_TEMPERATURE_SET),
+ .areaId = toInt(VehicleAreaSeat::ROW_1_LEFT),
+ }));
+
+ auto results = getHardware()->getSupportedValuesLists({changedPropIdAreaIds[0]});
+
+ EXPECT_EQ(results[0].status, StatusCode::OK);
+ EXPECT_NE(results[0].supportedValuesList, std::nullopt);
+ EXPECT_EQ(results[0].supportedValuesList.value(), std::vector<std::optional<RawPropValues>>({
+ RawPropValues{.floatValues = {1.1}},
+ RawPropValues{.floatValues = {2.2}},
+ RawPropValues{.floatValues = {3.3}},
+ }));
+}
+
TEST_F(FakeVehicleHardwareTest, testDumpSetSupportedValues_invalidInt) {
- std::vector<std::string> options = {"--set-supportedvalues", "1", "2", "ab", "3"};
+ std::vector<std::string> options = {
+ "--set-supportedvalues", "EV_STOPPING_MODE", "1", "2", "ab", "3"};
DumpResult result = getHardware()->dump(options);
ASSERT_THAT(result.buffer, ContainsRegex("Failed"));
}
+TEST_F(FakeVehicleHardwareTest, testDumpSetSupportedValues_notEnoughArguments) {
+ std::vector<std::string> options = {"--set-supportedvalues", "EV_STOPPING_MODE"};
+
+ DumpResult result = getHardware()->dump(options);
+ ASSERT_THAT(result.buffer, ContainsRegex("Failed"));
+ ASSERT_THAT(result.buffer, ContainsRegex("Not enough arguments"));
+}
+
+TEST_F(FakeVehicleHardwareTest, testDumpSetSupportedValues_withAreaId_notEnoughArguments) {
+ std::vector<std::string> options = {"--set-supportedvalues", "EV_STOPPING_MODE", "-a", "0"};
+
+ DumpResult result = getHardware()->dump(options);
+ ASSERT_THAT(result.buffer, ContainsRegex("Failed"));
+ ASSERT_THAT(result.buffer, ContainsRegex("Not enough arguments"));
+}
+
+TEST_F(FakeVehicleHardwareTest, testDumpSetSupportedValues_invalidAreaId) {
+ std::vector<std::string> options = {"--set-supportedvalues", "EV_STOPPING_MODE", "-a", "blah",
+ "1"};
+
+ DumpResult result = getHardware()->dump(options);
+ ASSERT_THAT(result.buffer, ContainsRegex("Failed"));
+ ASSERT_THAT(result.buffer, ContainsRegex("areaId not valid"));
+}
+
struct SetPropTestCase {
std::string test_name;
std::vector<std::string> options;
@@ -4073,25 +4172,32 @@
TEST_F(FakeVehicleHardwareTest, testGetSupportedValuesLists) {
auto results = getHardware()->getSupportedValuesLists({
PropIdAreaId{.propId = toInt(TestVendorProperty::VENDOR_EXTENSION_INT_PROPERTY),
- .areaId = 0},
- PropIdAreaId{.propId = toInt(VehicleProperty::HVAC_TEMPERATURE_SET), .areaId = 0},
+ .areaId = toInt(VehicleAreaWindow::FRONT_WINDSHIELD)},
+ // This property does not specify supported values list.
+ PropIdAreaId{.propId = toInt(VehicleProperty::INFO_EV_BATTERY_CAPACITY), .areaId = 0},
});
ASSERT_EQ(results.size(), 2u);
EXPECT_EQ(results[0].status, StatusCode::OK);
EXPECT_NE(results[0].supportedValuesList, std::nullopt);
EXPECT_NE((results[0].supportedValuesList)->size(), 0u);
- EXPECT_EQ(results[0].supportedValuesList.value(), std::vector<std::optional<RawPropValues>>({
- RawPropValues{.int32Values = {0}},
- RawPropValues{.int32Values = {2}},
- RawPropValues{.int32Values = {4}},
- RawPropValues{.int32Values = {6}},
- RawPropValues{.int32Values = {8}},
- RawPropValues{.int32Values = {10}},
- }));
+ EXPECT_EQ(results[0].supportedValuesList.value(),
+ std::vector<std::optional<RawPropValues>>({RawPropValues{.int32Values = {1}},
+ RawPropValues{.int32Values = {2}},
+ RawPropValues{.int32Values = {3}}}));
EXPECT_EQ(results[1].status, StatusCode::INVALID_ARG);
}
+TEST_F(FakeVehicleHardwareTest, testGetSupportedValuesLists_populateFromSupportedEnumValues) {
+ auto results = getHardware()->getSupportedValuesLists({PropIdAreaId{
+ .propId = toInt(VehicleProperty::FORWARD_COLLISION_WARNING_STATE), .areaId = 0}});
+
+ ASSERT_EQ(results.size(), 1u);
+ EXPECT_EQ(results[0].status, StatusCode::OK);
+ ASSERT_NE(results[0].supportedValuesList, std::nullopt);
+ ASSERT_THAT(results[0].supportedValuesList.value(), ::testing::Not(::testing::IsEmpty()));
+}
+
} // namespace fake
} // namespace vehicle
} // namespace automotive
diff --git a/bluetooth/audio/aidl/default/BluetoothAudioProvider.cpp b/bluetooth/audio/aidl/default/BluetoothAudioProvider.cpp
index 8d03fae..d68113d 100644
--- a/bluetooth/audio/aidl/default/BluetoothAudioProvider.cpp
+++ b/bluetooth/audio/aidl/default/BluetoothAudioProvider.cpp
@@ -78,8 +78,7 @@
cookie);
LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_);
- onSessionReady(_aidl_return);
- return ndk::ScopedAStatus::ok();
+ return onSessionReady(_aidl_return);
}
ndk::ScopedAStatus BluetoothAudioProvider::endSession() {
diff --git a/bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp b/bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp
index a52d761..2fde910 100644
--- a/bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp
+++ b/bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp
@@ -2843,11 +2843,11 @@
if (asymmetric) {
source_ase_requriement.aseConfiguration.codecConfiguration = {
- CodecSpecificConfigurationLtv::SamplingFrequency::HZ8000,
+ CodecSpecificConfigurationLtv::SamplingFrequency::HZ16000,
CodecSpecificConfigurationLtv::FrameDuration::US10000, allocation};
} else {
source_ase_requriement.aseConfiguration.codecConfiguration = {
- CodecSpecificConfigurationLtv::SamplingFrequency::HZ16000,
+ CodecSpecificConfigurationLtv::SamplingFrequency::HZ32000,
CodecSpecificConfigurationLtv::FrameDuration::US10000, allocation};
}
diff --git a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
index 49c8410..bfc2d90 100644
--- a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
+++ b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
@@ -8715,25 +8715,14 @@
ASSERT_NE(nullptr, bufferItemConsumer);
ASSERT_NE(nullptr, bufferHandler);
-#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
- *bufferItemConsumer = new BufferItemConsumer(
- GraphicBuffer::USAGE_HW_TEXTURE); // Use GLConsumer default usage flags
-#else
- sp<IGraphicBufferProducer> producer;
- sp<IGraphicBufferConsumer> consumer;
- BufferQueue::createBufferQueue(&producer, &consumer);
- *bufferItemConsumer = new BufferItemConsumer(consumer,
- GraphicBuffer::USAGE_HW_TEXTURE); //Use GLConsumer default usage flags
-#endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
+ sp<Surface> surface;
+ std::tie(*bufferItemConsumer, surface) =
+ BufferItemConsumer::create(GraphicBuffer::USAGE_HW_TEXTURE);
+
ASSERT_NE(nullptr, (*bufferItemConsumer).get());
*bufferHandler = new BufferItemHander(*bufferItemConsumer);
ASSERT_NE(nullptr, (*bufferHandler).get());
(*bufferItemConsumer)->setFrameAvailableListener(*bufferHandler);
-#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
- sp<Surface> surface = (*bufferItemConsumer)->getSurface();
-#else
- sp<Surface> surface = new Surface(producer);
-#endif // COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ)
sp<PreviewWindowCb> previewCb = new PreviewWindowCb(surface);
auto rc = device->setPreviewWindow(previewCb);
diff --git a/compatibility_matrices/Android.bp b/compatibility_matrices/Android.bp
index 63ef223..0d37060 100644
--- a/compatibility_matrices/Android.bp
+++ b/compatibility_matrices/Android.bp
@@ -88,8 +88,6 @@
"compatibility_matrix.5.xml",
],
kernel_configs: [
- "kernel_config_r_4.14",
- "kernel_config_r_4.19",
"kernel_config_r_5.4",
],
}
diff --git a/compatibility_matrices/compatibility_matrix.202604.xml b/compatibility_matrices/compatibility_matrix.202604.xml
index e5e2abf..793b166 100644
--- a/compatibility_matrices/compatibility_matrix.202604.xml
+++ b/compatibility_matrices/compatibility_matrix.202604.xml
@@ -396,7 +396,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.config</name>
- <version>3-4</version>
+ <version>3-5</version>
<interface>
<name>IRadioConfig</name>
<instance>default</instance>
@@ -404,7 +404,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.data</name>
- <version>3-4</version>
+ <version>3-5</version>
<interface>
<name>IRadioData</name>
<instance>slot1</instance>
@@ -414,7 +414,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.messaging</name>
- <version>3-4</version>
+ <version>3-5</version>
<interface>
<name>IRadioMessaging</name>
<instance>slot1</instance>
@@ -424,7 +424,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.modem</name>
- <version>3-4</version>
+ <version>3-5</version>
<interface>
<name>IRadioModem</name>
<instance>slot1</instance>
@@ -434,7 +434,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.network</name>
- <version>3-4</version>
+ <version>3-5</version>
<interface>
<name>IRadioNetwork</name>
<instance>slot1</instance>
@@ -444,7 +444,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.sim</name>
- <version>3-4</version>
+ <version>3-5</version>
<interface>
<name>IRadioSim</name>
<instance>slot1</instance>
@@ -464,7 +464,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.voice</name>
- <version>3-4</version>
+ <version>3-5</version>
<interface>
<name>IRadioVoice</name>
<instance>slot1</instance>
@@ -474,7 +474,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.ims</name>
- <version>2-3</version>
+ <version>2-4</version>
<interface>
<name>IRadioIms</name>
<instance>slot1</instance>
@@ -484,7 +484,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.radio.ims.media</name>
- <version>2-3</version>
+ <version>2-4</version>
<interface>
<name>IImsMedia</name>
<instance>default</instance>
diff --git a/compatibility_matrices/compatibility_matrix.5.xml b/compatibility_matrices/compatibility_matrix.5.xml
index 1cf98b0..d01a6ea 100644
--- a/compatibility_matrices/compatibility_matrix.5.xml
+++ b/compatibility_matrices/compatibility_matrix.5.xml
@@ -1,578 +1,7 @@
<compatibility-matrix version="1.0" type="framework" level="5">
- <hal format="hidl">
- <name>android.hardware.atrace</name>
- <version>1.0</version>
- <interface>
- <name>IAtraceDevice</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.audio</name>
- <version>6.0</version>
- <interface>
- <name>IDevicesFactory</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.audio.effect</name>
- <version>6.0</version>
- <interface>
- <name>IEffectsFactory</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.authsecret</name>
- <version>1.0</version>
- <interface>
- <name>IAuthSecret</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.automotive.audiocontrol</name>
- <version>1.0</version>
- <version>2.0</version>
- <interface>
- <name>IAudioControl</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <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="hidl">
- <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">
- <name>android.hardware.automotive.occupant_awareness</name>
- <interface>
- <name>IOccupantAwareness</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.automotive.sv</name>
- <version>1.0</version>
- <interface>
- <name>ISurroundViewService</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.automotive.vehicle</name>
- <version>2.0</version>
- <interface>
- <name>IVehicle</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.biometrics.face</name>
- <version>1.0</version>
- <interface>
- <name>IBiometricsFace</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.biometrics.fingerprint</name>
- <version>2.1-2</version>
- <interface>
- <name>IBiometricsFingerprint</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.bluetooth</name>
- <version>1.0-1</version>
- <interface>
- <name>IBluetoothHci</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.bluetooth.audio</name>
- <version>2.0</version>
- <interface>
- <name>IBluetoothAudioProvidersFactory</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.boot</name>
- <version>1.1</version>
- <interface>
- <name>IBootControl</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.broadcastradio</name>
- <version>1.0-1</version>
- <interface>
- <name>IBroadcastRadioFactory</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.broadcastradio</name>
- <version>2.0</version>
- <interface>
- <name>IBroadcastRadio</name>
- <regex-instance>.*</regex-instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.camera.provider</name>
- <version>2.4-6</version>
- <interface>
- <name>ICameraProvider</name>
- <regex-instance>[^/]+/[0-9]+</regex-instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.cas</name>
- <version>1.1-2</version>
- <interface>
- <name>IMediaCasService</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.confirmationui</name>
- <version>1.0</version>
- <interface>
- <name>IConfirmationUI</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.contexthub</name>
- <version>1.0-1</version>
- <interface>
- <name>IContexthub</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.drm</name>
- <version>1.3</version>
- <interface>
- <name>ICryptoFactory</name>
- <regex-instance>.*</regex-instance>
- </interface>
- <interface>
- <name>IDrmFactory</name>
- <regex-instance>.*</regex-instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.dumpstate</name>
- <version>1.1</version>
- <interface>
- <name>IDumpstateDevice</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.gatekeeper</name>
- <version>1.0</version>
- <interface>
- <name>IGatekeeper</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.gnss</name>
- <version>2.0-1</version>
- <interface>
- <name>IGnss</name>
- <instance>default</instance>
- </interface>
- </hal>
- <!-- Either the AIDL or the HIDL allocator HAL must exist on the device.
- If the HIDL composer HAL exists, it must be at least version 2.0.
- See DeviceManifestTest.GrallocHal -->
- <hal format="hidl">
- <name>android.hardware.graphics.allocator</name>
- <!-- New, non-Go devices should use 4.0, tested in vts_treble_vintf_vendor_test -->
- <version>2.0</version>
- <version>3.0</version>
- <version>4.0</version>
- <interface>
- <name>IAllocator</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.graphics.composer</name>
- <version>2.1-4</version>
- <interface>
- <name>IComposer</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <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>
- <!-- Either the AIDL or the HIDL health HAL must exist on the device.
- If the HIDL health HAL exists, it must be at least version 2.1.
- See DeviceManifestTest.HealthHal -->
- <hal format="hidl">
- <name>android.hardware.health</name>
- <version>2.1</version>
- <interface>
- <name>IHealth</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.health.storage</name>
- <version>1.0</version>
- <interface>
- <name>IStorage</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="aidl">
- <name>android.hardware.identity</name>
- <!--
- b/178458001: identity V2 is introduced in R, but Android R VINTF does not support AIDL
- versions. Hence, we only specify identity V2 in compatibility_matrix.5.xml in Android S+
- branches. In Android R branches, the matrix implicitly specifies V1.
- SingleManifestTest.ManifestAidlHalsServed has an exemption for this.
- -->
- <version>1-2</version>
- <interface>
- <name>IIdentityCredentialStore</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.ir</name>
- <version>1.0</version>
- <interface>
- <name>IConsumerIr</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.input.classifier</name>
- <version>1.0</version>
- <interface>
- <name>IInputClassifier</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.keymaster</name>
- <version>3.0</version>
- <version>4.0-1</version>
- <interface>
- <name>IKeymasterDevice</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.keymaster</name>
- <version>4.0-1</version>
- <interface>
- <name>IKeymasterDevice</name>
- <instance>strongbox</instance>
- </interface>
- </hal>
- <hal format="aidl">
- <name>android.hardware.light</name>
- <interface>
- <name>ILights</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.media.c2</name>
- <version>1.0-1</version>
- <interface>
- <name>IComponentStore</name>
- <instance>software</instance>
- <regex-instance>default[0-9]*</regex-instance>
- <regex-instance>vendor[0-9]*_software</regex-instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.media.c2</name>
- <version>1.0</version>
- <interface>
- <name>IConfigurable</name>
- <instance>default</instance>
- <instance>software</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.media.omx</name>
- <version>1.0</version>
- <interface>
- <name>IOmx</name>
- <instance>default</instance>
- </interface>
- <interface>
- <name>IOmxStore</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.memtrack</name>
- <version>1.0</version>
- <interface>
- <name>IMemtrack</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.neuralnetworks</name>
- <version>1.0-3</version>
- <interface>
- <name>IDevice</name>
- <regex-instance>.*</regex-instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.nfc</name>
- <version>1.2</version>
- <interface>
- <name>INfc</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.oemlock</name>
- <version>1.0</version>
- <interface>
- <name>IOemLock</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="aidl">
- <name>android.hardware.power</name>
- <interface>
- <name>IPower</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.power.stats</name>
- <version>1.0</version>
- <interface>
- <name>IPowerStats</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.radio</name>
- <version>1.4</version>
- <version>1.5</version>
- <interface>
- <name>IRadio</name>
- <instance>slot1</instance>
- <instance>slot2</instance>
- <instance>slot3</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.radio</name>
- <version>1.2</version>
- <interface>
- <name>ISap</name>
- <instance>slot1</instance>
- <instance>slot2</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.radio.config</name>
- <!--
- See compatibility_matrix.4.xml on versioning of radio config HAL.
- -->
- <version>1.1</version>
- <interface>
- <name>IRadioConfig</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.renderscript</name>
- <version>1.0</version>
- <interface>
- <name>IDevice</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="aidl">
- <name>android.hardware.rebootescrow</name>
- <interface>
- <name>IRebootEscrow</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.secure_element</name>
- <version>1.0-2</version>
- <interface>
- <name>ISecureElement</name>
- <regex-instance>eSE[1-9][0-9]*</regex-instance>
- <regex-instance>SIM[1-9][0-9]*</regex-instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.sensors</name>
- <version>1.0</version>
- <version>2.0-1</version>
- <interface>
- <name>ISensors</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.soundtrigger</name>
- <version>2.0-3</version>
- <interface>
- <name>ISoundTriggerHw</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.tetheroffload.config</name>
- <version>1.0</version>
- <interface>
- <name>IOffloadConfig</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.tetheroffload.control</name>
- <version>1.0</version>
- <interface>
- <name>IOffloadControl</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.thermal</name>
- <version>2.0</version>
- <interface>
- <name>IThermal</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.tv.cec</name>
- <version>1.0</version>
- <interface>
- <name>IHdmiCec</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.tv.input</name>
- <version>1.0</version>
- <interface>
- <name>ITvInput</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.tv.tuner</name>
- <version>1.0</version>
- <interface>
- <name>ITuner</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.usb</name>
- <version>1.0-2</version>
- <interface>
- <name>IUsb</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.usb.gadget</name>
- <version>1.0-1</version>
- <interface>
- <name>IUsbGadget</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="aidl">
- <name>android.hardware.vibrator</name>
- <interface>
- <name>IVibrator</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.vr</name>
- <version>1.0</version>
- <interface>
- <name>IVr</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.weaver</name>
- <version>1.0</version>
- <interface>
- <name>IWeaver</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.wifi</name>
- <version>1.0-4</version>
- <interface>
- <name>IWifi</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.wifi.hostapd</name>
- <version>1.0-2</version>
- <interface>
- <name>IHostapd</name>
- <instance>default</instance>
- </interface>
- </hal>
- <hal format="hidl">
- <name>android.hardware.wifi.supplicant</name>
- <version>1.0-3</version>
- <interface>
- <name>ISupplicant</name>
- <instance>default</instance>
- </interface>
- </hal>
+ <!--
+ Android R FCM has been deprecated, but this file is kept
+ to help manage the android11-5.4 kernel config requirements as that
+ kernel version is not being deprecated with the R FCM.
+ -->
</compatibility-matrix>
diff --git a/compatibility_matrices/exclude/fcm_exclude.cpp b/compatibility_matrices/exclude/fcm_exclude.cpp
index 57e039c..a2a13d1 100644
--- a/compatibility_matrices/exclude/fcm_exclude.cpp
+++ b/compatibility_matrices/exclude/fcm_exclude.cpp
@@ -104,6 +104,28 @@
"android.hardware.vibrator@1.1",
"android.hardware.vibrator@1.2",
"android.hardware.vibrator@1.3",
+
+ // b/392700935 for HALs deprecated in R
+ "android.hardware.automotive.audiocontrol@1.0",
+ "android.hardware.automotive.audiocontrol@2.0",
+ "android.hardware.boot@1.1",
+ "android.hardware.contexthub@1.0",
+ "android.hardware.contexthub@1.1",
+ "android.hardware.health.storage@1.0",
+ "android.hardware.memtrack@1.0",
+ "android.hardware.power.stats@1.0",
+ "android.hardware.radio@1.4",
+ "android.hardware.radio@1.5",
+ "android.hardware.soundtrigger@2.0",
+ "android.hardware.soundtrigger@2.1",
+ "android.hardware.soundtrigger@2.2",
+ "android.hardware.tetheroffload.control@1.0",
+ "android.hardware.vr@1.0",
+ "android.hardware.wifi.supplicant@1.0",
+ "android.hardware.wifi.supplicant@1.1",
+ "android.hardware.wifi@1.0",
+ "android.hardware.wifi@1.1",
+ "android.hardware.wifi@1.2",
};
auto package_has_prefix = [&](const std::string& prefix) {
diff --git a/radio/aidl/Android.bp b/radio/aidl/Android.bp
index a79c807..9c7a5c1 100644
--- a/radio/aidl/Android.bp
+++ b/radio/aidl/Android.bp
@@ -42,7 +42,7 @@
},
],
- frozen: true,
+ frozen: false,
}
@@ -52,7 +52,7 @@
host_supported: true,
srcs: ["android/hardware/radio/config/*.aidl"],
stability: "vintf",
- imports: ["android.hardware.radio-V4"],
+ imports: ["android.hardware.radio-V5"],
flags: ["-Werror"],
backend: {
cpp: {
@@ -81,7 +81,7 @@
},
],
- frozen: true,
+ frozen: false,
}
@@ -91,7 +91,7 @@
host_supported: true,
srcs: ["android/hardware/radio/data/*.aidl"],
stability: "vintf",
- imports: ["android.hardware.radio-V4"],
+ imports: ["android.hardware.radio-V5"],
flags: ["-Werror"],
backend: {
cpp: {
@@ -120,7 +120,7 @@
},
],
- frozen: true,
+ frozen: false,
}
aidl_interface {
@@ -129,7 +129,7 @@
host_supported: true,
srcs: ["android/hardware/radio/messaging/*.aidl"],
stability: "vintf",
- imports: ["android.hardware.radio-V4"],
+ imports: ["android.hardware.radio-V5"],
flags: ["-Werror"],
backend: {
cpp: {
@@ -158,7 +158,7 @@
},
],
- frozen: true,
+ frozen: false,
}
aidl_interface {
@@ -167,7 +167,7 @@
host_supported: true,
srcs: ["android/hardware/radio/modem/*.aidl"],
stability: "vintf",
- imports: ["android.hardware.radio-V4"],
+ imports: ["android.hardware.radio-V5"],
flags: ["-Werror"],
backend: {
cpp: {
@@ -196,7 +196,7 @@
},
],
- frozen: true,
+ frozen: false,
}
aidl_interface {
@@ -205,7 +205,7 @@
host_supported: true,
srcs: ["android/hardware/radio/network/*.aidl"],
stability: "vintf",
- imports: ["android.hardware.radio-V4"],
+ imports: ["android.hardware.radio-V5"],
flags: ["-Werror"],
backend: {
cpp: {
@@ -234,7 +234,7 @@
},
],
- frozen: true,
+ frozen: false,
}
aidl_interface {
@@ -274,8 +274,8 @@
stability: "vintf",
flags: ["-Werror"],
imports: [
- "android.hardware.radio-V4",
- "android.hardware.radio.config-V4",
+ "android.hardware.radio-V5",
+ "android.hardware.radio.config-V5",
],
backend: {
cpp: {
@@ -316,7 +316,7 @@
},
],
- frozen: true,
+ frozen: false,
}
aidl_interface {
@@ -325,7 +325,7 @@
host_supported: true,
srcs: ["android/hardware/radio/voice/*.aidl"],
stability: "vintf",
- imports: ["android.hardware.radio-V4"],
+ imports: ["android.hardware.radio-V5"],
flags: ["-Werror"],
backend: {
cpp: {
@@ -354,7 +354,7 @@
},
],
- frozen: true,
+ frozen: false,
}
aidl_interface {
@@ -363,8 +363,8 @@
srcs: ["android/hardware/radio/ims/media/*.aidl"],
stability: "vintf",
imports: [
- "android.hardware.radio-V4",
- "android.hardware.radio.data-V4",
+ "android.hardware.radio-V5",
+ "android.hardware.radio.data-V5",
],
flags: ["-Werror"],
backend: {
@@ -399,7 +399,7 @@
},
],
- frozen: true,
+ frozen: false,
}
aidl_interface {
@@ -407,7 +407,7 @@
vendor_available: true,
srcs: ["android/hardware/radio/ims/*.aidl"],
stability: "vintf",
- imports: ["android.hardware.radio-V4"],
+ imports: ["android.hardware.radio-V5"],
flags: ["-Werror"],
backend: {
cpp: {
@@ -432,5 +432,5 @@
},
],
- frozen: true,
+ frozen: false,
}
diff --git a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/PhoneCapability.aidl b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/PhoneCapability.aidl
index 2c66abd..5fc4ea9 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/PhoneCapability.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/PhoneCapability.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.config;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable PhoneCapability {
byte maxActiveData;
byte maxActiveInternetData;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimPortInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimPortInfo.aidl
index ede3189..734d9b2 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimPortInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimPortInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.config;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SimPortInfo {
String iccId;
int logicalSlotId;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimSlotStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimSlotStatus.aidl
index e84e7d4..a469e21 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimSlotStatus.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimSlotStatus.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.config;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SimSlotStatus {
int cardState;
String atr;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimTypeInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimTypeInfo.aidl
index cba5dd9..7e7b25b 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimTypeInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SimTypeInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.config;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SimTypeInfo {
android.hardware.radio.config.SimType currentSimType = android.hardware.radio.config.SimType.UNKNOWN;
int supportedSimTypes;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SlotPortMapping.aidl b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SlotPortMapping.aidl
index 5278e79..413c3e0 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SlotPortMapping.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.config/current/android/hardware/radio/config/SlotPortMapping.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.config;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SlotPortMapping {
int physicalSlotId;
int portId;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/DataProfileInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/DataProfileInfo.aidl
index d68a9d7..5f0b990 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/DataProfileInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/DataProfileInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable DataProfileInfo {
int profileId;
String apn;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/EpsQos.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/EpsQos.aidl
index 3a3f41d..33de1e0 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/EpsQos.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/EpsQos.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable EpsQos {
int qci;
android.hardware.radio.data.QosBandwidth downlink;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/KeepaliveRequest.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/KeepaliveRequest.aidl
index 789ee86..a4ef5bd 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/KeepaliveRequest.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/KeepaliveRequest.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable KeepaliveRequest {
int type;
byte[] sourceAddress;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/KeepaliveStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/KeepaliveStatus.aidl
index 404b44a..602b6eb 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/KeepaliveStatus.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/KeepaliveStatus.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable KeepaliveStatus {
int sessionHandle;
int code;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/LinkAddress.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/LinkAddress.aidl
index 67d679f..c056450 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/LinkAddress.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/LinkAddress.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable LinkAddress {
String address;
int addressProperties;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/NrQos.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/NrQos.aidl
index 22bbe42..0dcfc10 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/NrQos.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/NrQos.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable NrQos {
int fiveQi;
android.hardware.radio.data.QosBandwidth downlink;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/OsAppId.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/OsAppId.aidl
index e4bbf79..65b48a5 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/OsAppId.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/OsAppId.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable OsAppId {
byte[] osAppId;
}
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/PcoDataInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/PcoDataInfo.aidl
index ea7529c..01bc46f 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/PcoDataInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/PcoDataInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable PcoDataInfo {
int cid;
String bearerProto;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/PortRange.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/PortRange.aidl
index e428f1a..ee2e1c1 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/PortRange.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/PortRange.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable PortRange {
int start;
int end;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/Qos.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/Qos.aidl
index 4dac56c..4180884 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/Qos.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/Qos.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union Qos {
boolean noinit;
android.hardware.radio.data.EpsQos eps;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosBandwidth.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosBandwidth.aidl
index b59dee0..6456f09 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosBandwidth.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosBandwidth.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable QosBandwidth {
int maxBitrateKbps;
int guaranteedBitrateKbps;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilter.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilter.aidl
index a3208d9..8e9754b 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilter.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilter.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable QosFilter {
String[] localAddresses;
String[] remoteAddresses;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterIpsecSpi.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterIpsecSpi.aidl
index 50b52a4..114a581 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterIpsecSpi.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterIpsecSpi.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union QosFilterIpsecSpi {
boolean noinit;
int value;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterIpv6FlowLabel.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterIpv6FlowLabel.aidl
index 4913dcf..69cc337 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterIpv6FlowLabel.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterIpv6FlowLabel.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union QosFilterIpv6FlowLabel {
boolean noinit;
int value;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterTypeOfService.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterTypeOfService.aidl
index 4f0d260..b67997c 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterTypeOfService.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosFilterTypeOfService.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union QosFilterTypeOfService {
boolean noinit;
byte value;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosSession.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosSession.aidl
index 89010a9..7f6256c 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosSession.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/QosSession.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable QosSession {
int qosSessionId;
android.hardware.radio.data.Qos qos;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/RouteSelectionDescriptor.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/RouteSelectionDescriptor.aidl
index 80c055e..5e2613c 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/RouteSelectionDescriptor.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/RouteSelectionDescriptor.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RouteSelectionDescriptor {
byte precedence;
android.hardware.radio.data.PdpProtocolType sessionType = android.hardware.radio.data.PdpProtocolType.IP;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SetupDataCallResult.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SetupDataCallResult.aidl
index 699cc4d..7620093 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SetupDataCallResult.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SetupDataCallResult.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable SetupDataCallResult {
android.hardware.radio.data.DataCallFailCause cause = android.hardware.radio.data.DataCallFailCause.NONE;
long suggestedRetryTime;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SliceInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SliceInfo.aidl
index 60df402..c704202 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SliceInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SliceInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SliceInfo {
byte sliceServiceType;
int sliceDifferentiator;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SlicingConfig.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SlicingConfig.aidl
index 4d28737..4cfbbb3 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SlicingConfig.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/SlicingConfig.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SlicingConfig {
android.hardware.radio.data.UrspRule[] urspRules;
android.hardware.radio.data.SliceInfo[] sliceInfo;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/TrafficDescriptor.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/TrafficDescriptor.aidl
index dc474a2..d73c693 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/TrafficDescriptor.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/TrafficDescriptor.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable TrafficDescriptor {
@nullable String dnn;
@nullable android.hardware.radio.data.OsAppId osAppId;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/UrspRule.aidl b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/UrspRule.aidl
index 6850f6a..836f83d 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/UrspRule.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.data/current/android/hardware/radio/data/UrspRule.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.data;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable UrspRule {
int precedence;
android.hardware.radio.data.TrafficDescriptor[] trafficDescriptors;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/AmrParams.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/AmrParams.aidl
index eb65eb1..5abe422 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/AmrParams.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/AmrParams.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable AmrParams {
android.hardware.radio.ims.media.AmrMode amrMode = android.hardware.radio.ims.media.AmrMode.INVALID;
boolean octetAligned;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/AnbrMode.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/AnbrMode.aidl
index eca7b93..c6477a8 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/AnbrMode.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/AnbrMode.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable AnbrMode {
android.hardware.radio.ims.media.CodecMode anbrUplinkMode;
android.hardware.radio.ims.media.CodecMode anbrDownlinkMode;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CallQuality.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CallQuality.aidl
index 594a39f..649e6b4 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CallQuality.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CallQuality.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CallQuality {
int downlinkCallQualityLevel;
int uplinkCallQualityLevel;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecMode.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecMode.aidl
index 644321c..9f3cbcb 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecMode.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecMode.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union CodecMode {
boolean noinit;
android.hardware.radio.ims.media.AmrMode amr;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecParams.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecParams.aidl
index 1c80f7a..2ef76b3 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecParams.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecParams.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CodecParams {
android.hardware.radio.ims.media.CodecType codecType = android.hardware.radio.ims.media.CodecType.INVALID;
byte rxPayloadTypeNumber;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecSpecificParams.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecSpecificParams.aidl
index 7e5722f..5846edd 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecSpecificParams.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/CodecSpecificParams.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union CodecSpecificParams {
android.hardware.radio.ims.media.AmrParams amr;
android.hardware.radio.ims.media.EvsParams evs;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/DtmfParams.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/DtmfParams.aidl
index f420fa7..5885685 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/DtmfParams.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/DtmfParams.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable DtmfParams {
byte rxPayloadTypeNumber;
byte txPayloadTypeNumber;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/EvsParams.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/EvsParams.aidl
index 90d2204..536d965 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/EvsParams.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/EvsParams.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable EvsParams {
android.hardware.radio.ims.media.EvsBandwidth bandwidth = android.hardware.radio.ims.media.EvsBandwidth.NONE;
android.hardware.radio.ims.media.EvsMode evsMode = android.hardware.radio.ims.media.EvsMode.INVALID;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/MediaQualityStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/MediaQualityStatus.aidl
index da6e751..fd0f53b 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/MediaQualityStatus.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/MediaQualityStatus.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable MediaQualityStatus {
int rtpInactivityTimeMillis;
int rtcpInactivityTimeMillis;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/MediaQualityThreshold.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/MediaQualityThreshold.aidl
index ecc379c..9206c71 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/MediaQualityThreshold.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/MediaQualityThreshold.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable MediaQualityThreshold {
int[] rtpInactivityTimerMillis;
int rtcpInactivityTimerMillis;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtcpConfig.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtcpConfig.aidl
index 0bc4154..e8a492b 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtcpConfig.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtcpConfig.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RtcpConfig {
String canonicalName;
int transmitPort;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpAddress.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpAddress.aidl
index dd7f466..79a80e1 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpAddress.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpAddress.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RtpAddress {
String ipAddress;
int portNumber;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpConfig.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpConfig.aidl
index 6af5523..ce89830 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpConfig.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpConfig.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RtpConfig {
int direction;
android.hardware.radio.AccessNetwork accessNetwork = android.hardware.radio.AccessNetwork.UNKNOWN;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpHeaderExtension.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpHeaderExtension.aidl
index 06207ee..ac54034 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpHeaderExtension.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpHeaderExtension.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RtpHeaderExtension {
int localId;
byte[] data;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpReceptionStats.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpReceptionStats.aidl
index 216da4c..36f33c2 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpReceptionStats.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpReceptionStats.aidl
@@ -32,7 +32,7 @@
// later when a module using the interface is updated, e.g., Mainline modules.
package android.hardware.radio.ims.media;
-@VintfStability
+@RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RtpReceptionStats {
int rtpTimestamp;
int rtcpSrTimestamp;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpSessionParams.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpSessionParams.aidl
index 4107432..b269bca 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpSessionParams.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/RtpSessionParams.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims.media;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RtpSessionParams {
byte pTimeMillis;
int maxPtimeMillis;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ConnectionFailureInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ConnectionFailureInfo.aidl
index ae3bbac..2af7647 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ConnectionFailureInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ConnectionFailureInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable ConnectionFailureInfo {
android.hardware.radio.ims.ConnectionFailureInfo.ConnectionFailureReason failureReason = android.hardware.radio.ims.ConnectionFailureInfo.ConnectionFailureReason.INVALID;
int causeCode;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsCall.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsCall.aidl
index 73d987a..69d7349 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsCall.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsCall.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable ImsCall {
int index;
android.hardware.radio.ims.ImsCall.CallType callType = android.hardware.radio.ims.ImsCall.CallType.NORMAL;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsRegistration.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsRegistration.aidl
index 73cfd07..dc341d9 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsRegistration.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsRegistration.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable ImsRegistration {
android.hardware.radio.ims.ImsRegistrationState regState = android.hardware.radio.ims.ImsRegistrationState.NOT_REGISTERED;
android.hardware.radio.AccessNetwork accessNetworkType = android.hardware.radio.AccessNetwork.UNKNOWN;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/SrvccCall.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/SrvccCall.aidl
index a2e2ae5..9605dbb 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/SrvccCall.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/SrvccCall.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.ims;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SrvccCall {
int index;
android.hardware.radio.ims.SrvccCall.CallType callType = android.hardware.radio.ims.SrvccCall.CallType.NORMAL;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaBroadcastSmsConfigInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaBroadcastSmsConfigInfo.aidl
index 99ab0ea..412f33c 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaBroadcastSmsConfigInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaBroadcastSmsConfigInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaBroadcastSmsConfigInfo {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsAck.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsAck.aidl
index 00e584b..fbdc50b 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsAck.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsAck.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaSmsAck {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsAddress.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsAddress.aidl
index 6a64595..398ca8b 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsAddress.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsAddress.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaSmsAddress {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsMessage.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsMessage.aidl
index bbf8983..7668c29 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsMessage.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsMessage.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaSmsMessage {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsSubaddress.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsSubaddress.aidl
index 95bfd4c..874a76f 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsSubaddress.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsSubaddress.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable CdmaSmsSubaddress {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsWriteArgs.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsWriteArgs.aidl
index 759407f..8e77342 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsWriteArgs.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/CdmaSmsWriteArgs.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaSmsWriteArgs {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/GsmBroadcastSmsConfigInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/GsmBroadcastSmsConfigInfo.aidl
index 1ccba86..fabb2e7 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/GsmBroadcastSmsConfigInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/GsmBroadcastSmsConfigInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable GsmBroadcastSmsConfigInfo {
int fromServiceId;
int toServiceId;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/GsmSmsMessage.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/GsmSmsMessage.aidl
index bdd7d0c..ff40ff6 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/GsmSmsMessage.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/GsmSmsMessage.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable GsmSmsMessage {
String smscPdu;
String pdu;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/ImsSmsMessage.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/ImsSmsMessage.aidl
index 3af0f8d..257e2bc 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/ImsSmsMessage.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/ImsSmsMessage.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable ImsSmsMessage {
android.hardware.radio.RadioTechnologyFamily tech = android.hardware.radio.RadioTechnologyFamily.THREE_GPP;
boolean retry;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/SendSmsResult.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/SendSmsResult.aidl
index ae398a9..ab030c6 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/SendSmsResult.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/SendSmsResult.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SendSmsResult {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/SmsWriteArgs.aidl b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/SmsWriteArgs.aidl
index a294b47..d9c9846 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/SmsWriteArgs.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.messaging/current/android/hardware/radio/messaging/SmsWriteArgs.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.messaging;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SmsWriteArgs {
int status;
String pdu;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ActivityStatsInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ActivityStatsInfo.aidl
index c834342..d5e8d92 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ActivityStatsInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ActivityStatsInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.modem;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable ActivityStatsInfo {
int sleepModeTimeMs;
int idleModeTimeMs;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ActivityStatsTechSpecificInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ActivityStatsTechSpecificInfo.aidl
index 080a877..26770f8 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ActivityStatsTechSpecificInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ActivityStatsTechSpecificInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.modem;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable ActivityStatsTechSpecificInfo {
android.hardware.radio.AccessNetwork rat = android.hardware.radio.AccessNetwork.UNKNOWN;
int frequencyRange;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfig.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfig.aidl
index 2d814ef..7d17a88 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfig.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfig.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.modem;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable HardwareConfig {
int type;
String uuid;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfigModem.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfigModem.aidl
index 7d5537f..546832b 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfigModem.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfigModem.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.modem;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable HardwareConfigModem {
int rilModel;
android.hardware.radio.RadioTechnology rat = android.hardware.radio.RadioTechnology.UNKNOWN;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfigSim.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfigSim.aidl
index 4c2e31b..7ec7e09 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfigSim.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/HardwareConfigSim.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.modem;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable HardwareConfigSim {
String modemUuid;
}
diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ImeiInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ImeiInfo.aidl
index 96fb5a8..2b5302c 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ImeiInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/ImeiInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.modem;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable ImeiInfo {
android.hardware.radio.modem.ImeiInfo.ImeiType type = android.hardware.radio.modem.ImeiInfo.ImeiType.INVALID;
String imei;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/NvWriteItem.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/NvWriteItem.aidl
index c941246..0ba0ce0 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/NvWriteItem.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/NvWriteItem.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.modem;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable NvWriteItem {
/**
* @deprecated NV APIs are deprecated starting from Android U.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/RadioCapability.aidl b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/RadioCapability.aidl
index bc3cfcc..b6f15ea 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/RadioCapability.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.modem/current/android/hardware/radio/modem/RadioCapability.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.modem;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RadioCapability {
int session;
int phase;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/AccessTechnologySpecificInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/AccessTechnologySpecificInfo.aidl
index 36b9cdd..cac5d31 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/AccessTechnologySpecificInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/AccessTechnologySpecificInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union AccessTechnologySpecificInfo {
boolean noinit;
/**
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/BarringTypeSpecificInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/BarringTypeSpecificInfo.aidl
index 03369b9..1d06b71 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/BarringTypeSpecificInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/BarringTypeSpecificInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable BarringTypeSpecificInfo {
int factor;
int timeSeconds;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/Cdma2000RegistrationInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/Cdma2000RegistrationInfo.aidl
index 5fbd6c4..871d4b5 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/Cdma2000RegistrationInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/Cdma2000RegistrationInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable Cdma2000RegistrationInfo {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CdmaSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CdmaSignalStrength.aidl
index 6e68665..2300c84 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CdmaSignalStrength.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CdmaSignalStrength.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaSignalStrength {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentity.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentity.aidl
index dbd1575..08f5975 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentity.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentity.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union CellIdentity {
boolean noinit;
android.hardware.radio.network.CellIdentityGsm gsm;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityCdma.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityCdma.aidl
index 548afd2..a58e193 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityCdma.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityCdma.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellIdentityCdma {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityGsm.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityGsm.aidl
index 5040f20..c2bc55a 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityGsm.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityGsm.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellIdentityGsm {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityLte.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityLte.aidl
index be7821d..b2bfb2a 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityLte.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityLte.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellIdentityLte {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityNr.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityNr.aidl
index 6f4f9a0..4c82dcb 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityNr.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityNr.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellIdentityNr {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityTdscdma.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityTdscdma.aidl
index 864a886..35597b6 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityTdscdma.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityTdscdma.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellIdentityTdscdma {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityWcdma.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityWcdma.aidl
index 4e76277..a42fafc 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityWcdma.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellIdentityWcdma.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellIdentityWcdma {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfo.aidl
index 53d485a..9b7b628 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellInfo {
boolean registered;
android.hardware.radio.network.CellConnectionStatus connectionStatus = android.hardware.radio.network.CellConnectionStatus.NONE;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoCdma.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoCdma.aidl
index 18c9496..bb37c2d 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoCdma.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoCdma.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellInfoCdma {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoGsm.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoGsm.aidl
index 2074c2f..87f0341 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoGsm.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoGsm.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellInfoGsm {
android.hardware.radio.network.CellIdentityGsm cellIdentityGsm;
android.hardware.radio.network.GsmSignalStrength signalStrengthGsm;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoLte.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoLte.aidl
index aa3b310..44eff0a 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoLte.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoLte.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellInfoLte {
android.hardware.radio.network.CellIdentityLte cellIdentityLte;
android.hardware.radio.network.LteSignalStrength signalStrengthLte;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoNr.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoNr.aidl
index a8f49af..dbff1e0 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoNr.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoNr.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellInfoNr {
android.hardware.radio.network.CellIdentityNr cellIdentityNr;
android.hardware.radio.network.NrSignalStrength signalStrengthNr;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoRatSpecificInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoRatSpecificInfo.aidl
index 732e70f..30558b5 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoRatSpecificInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoRatSpecificInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union CellInfoRatSpecificInfo {
android.hardware.radio.network.CellInfoGsm gsm;
android.hardware.radio.network.CellInfoWcdma wcdma;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoTdscdma.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoTdscdma.aidl
index 1a03f34..b9ba5de 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoTdscdma.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoTdscdma.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellInfoTdscdma {
android.hardware.radio.network.CellIdentityTdscdma cellIdentityTdscdma;
android.hardware.radio.network.TdscdmaSignalStrength signalStrengthTdscdma;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoWcdma.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoWcdma.aidl
index d02824d..fa0fdbb 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoWcdma.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/CellInfoWcdma.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CellInfoWcdma {
android.hardware.radio.network.CellIdentityWcdma cellIdentityWcdma;
android.hardware.radio.network.WcdmaSignalStrength signalStrengthWcdma;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/ClosedSubscriberGroupInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/ClosedSubscriberGroupInfo.aidl
index b9e6f82..b96d64c 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/ClosedSubscriberGroupInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/ClosedSubscriberGroupInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable ClosedSubscriberGroupInfo {
boolean csgIndication;
String homeNodebName;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EmergencyNetworkScanTrigger.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EmergencyNetworkScanTrigger.aidl
index 7273a94..3959fab 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EmergencyNetworkScanTrigger.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EmergencyNetworkScanTrigger.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable EmergencyNetworkScanTrigger {
android.hardware.radio.AccessNetwork[] accessNetwork;
android.hardware.radio.network.EmergencyScanType scanType = android.hardware.radio.network.EmergencyScanType.NO_PREFERENCE;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EmergencyRegResult.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EmergencyRegResult.aidl
index 47940f3..adbb63d 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EmergencyRegResult.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EmergencyRegResult.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable EmergencyRegResult {
android.hardware.radio.AccessNetwork accessNetwork = android.hardware.radio.AccessNetwork.UNKNOWN;
android.hardware.radio.network.RegState regState = android.hardware.radio.network.RegState.NOT_REG_MT_NOT_SEARCHING_OP;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EutranRegistrationInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EutranRegistrationInfo.aidl
index 2ff454c..e1aa796 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EutranRegistrationInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EutranRegistrationInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable EutranRegistrationInfo {
android.hardware.radio.network.LteVopsInfo lteVopsInfo;
android.hardware.radio.network.NrIndicators nrIndicators;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EvdoSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EvdoSignalStrength.aidl
index 2a7eccb..28ca474 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EvdoSignalStrength.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/EvdoSignalStrength.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable EvdoSignalStrength {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/GsmSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/GsmSignalStrength.aidl
index 65847ef..7e4bc4a 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/GsmSignalStrength.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/GsmSignalStrength.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable GsmSignalStrength {
int signalStrength;
int bitErrorRate;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LceDataInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LceDataInfo.aidl
index 6dc6d3e..928d216 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LceDataInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LceDataInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable LceDataInfo {
int lastHopCapacityKbps;
byte confidenceLevel;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LinkCapacityEstimate.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LinkCapacityEstimate.aidl
index 3fc4b5c..004df28 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LinkCapacityEstimate.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LinkCapacityEstimate.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable LinkCapacityEstimate {
int downlinkCapacityKbps;
int uplinkCapacityKbps;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LteSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LteSignalStrength.aidl
index eb2ca28..b392ca3 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LteSignalStrength.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LteSignalStrength.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable LteSignalStrength {
int signalStrength;
int rsrp;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LteVopsInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LteVopsInfo.aidl
index f8d3aa1..1336096 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LteVopsInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/LteVopsInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable LteVopsInfo {
boolean isVopsSupported;
boolean isEmcBearerSupported;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrIndicators.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrIndicators.aidl
index efcd6d3..38cc957 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrIndicators.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrIndicators.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable NrIndicators {
boolean isEndcAvailable;
boolean isDcNrRestricted;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrSignalStrength.aidl
index 45e6ccf..8d89dfc 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrSignalStrength.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrSignalStrength.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable NrSignalStrength {
int ssRsrp;
int ssRsrq;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrVopsInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrVopsInfo.aidl
index 1b5b669..7148894 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrVopsInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/NrVopsInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable NrVopsInfo {
byte vopsSupported;
byte emcSupported;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/OperatorInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/OperatorInfo.aidl
index abe2bea..89711c2 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/OperatorInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/OperatorInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable OperatorInfo {
String alphaLong;
String alphaShort;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/PhysicalChannelConfig.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/PhysicalChannelConfig.aidl
index f58e5ed..5317842 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/PhysicalChannelConfig.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/PhysicalChannelConfig.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable PhysicalChannelConfig {
android.hardware.radio.network.CellConnectionStatus status = android.hardware.radio.network.CellConnectionStatus.NONE;
android.hardware.radio.RadioTechnology rat = android.hardware.radio.RadioTechnology.UNKNOWN;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/PhysicalChannelConfigBand.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/PhysicalChannelConfigBand.aidl
index 2e50e67..b18bde0 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/PhysicalChannelConfigBand.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/PhysicalChannelConfigBand.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union PhysicalChannelConfigBand {
boolean noinit;
android.hardware.radio.network.GeranBands geranBand;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RadioAccessSpecifier.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RadioAccessSpecifier.aidl
index 9a018f7..aeb1655 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RadioAccessSpecifier.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RadioAccessSpecifier.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RadioAccessSpecifier {
android.hardware.radio.AccessNetwork accessNetwork = android.hardware.radio.AccessNetwork.UNKNOWN;
android.hardware.radio.network.RadioAccessSpecifierBands bands;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RadioAccessSpecifierBands.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RadioAccessSpecifierBands.aidl
index 9ba420e..9736024 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RadioAccessSpecifierBands.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RadioAccessSpecifierBands.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
union RadioAccessSpecifierBands {
boolean noinit;
android.hardware.radio.network.GeranBands[] geranBands;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RegStateResult.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RegStateResult.aidl
index 814cde8..4f2c71b 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RegStateResult.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/RegStateResult.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RegStateResult {
android.hardware.radio.network.RegState regState = android.hardware.radio.network.RegState.NOT_REG_MT_NOT_SEARCHING_OP;
android.hardware.radio.RadioTechnology rat = android.hardware.radio.RadioTechnology.UNKNOWN;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SignalStrength.aidl
index 196ff19..c0c00c6 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SignalStrength.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SignalStrength.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SignalStrength {
android.hardware.radio.network.GsmSignalStrength gsm;
/**
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SuppSvcNotification.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SuppSvcNotification.aidl
index 5192eae..1a02cc6 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SuppSvcNotification.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/SuppSvcNotification.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SuppSvcNotification {
boolean isMT;
int code;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/TdscdmaSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/TdscdmaSignalStrength.aidl
index fe209e5..0ed1ddb 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/TdscdmaSignalStrength.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/TdscdmaSignalStrength.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable TdscdmaSignalStrength {
int signalStrength;
int bitErrorRate;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/WcdmaSignalStrength.aidl b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/WcdmaSignalStrength.aidl
index b765ab6..a6ffa9a 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/WcdmaSignalStrength.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.network/current/android/hardware/radio/network/WcdmaSignalStrength.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.network;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable WcdmaSignalStrength {
int signalStrength;
int bitErrorRate;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/AppStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/AppStatus.aidl
index a3e6d3a..eecec76 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/AppStatus.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/AppStatus.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable AppStatus {
int appType;
int appState;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CardStatus.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CardStatus.aidl
index 788a2dc..a9f5050 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CardStatus.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CardStatus.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CardStatus {
int cardState;
android.hardware.radio.sim.PinState universalPinState = android.hardware.radio.sim.PinState.UNKNOWN;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/Carrier.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/Carrier.aidl
index 24fff2e..406b3aa 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/Carrier.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/Carrier.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable Carrier {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CarrierInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CarrierInfo.aidl
index 7d4a54b..4318f24 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CarrierInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CarrierInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CarrierInfo {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CarrierRestrictions.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CarrierRestrictions.aidl
index 8f5672f..b053b7f 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CarrierRestrictions.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/CarrierRestrictions.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CarrierRestrictions {
/**
* @deprecated use @List<CarrierInfo> allowedCarrierInfoList
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/IccIo.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/IccIo.aidl
index 661518d..7575845 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/IccIo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/IccIo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable IccIo {
int command;
int fileId;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/IccIoResult.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/IccIoResult.aidl
index 1e418cd..8db38de 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/IccIoResult.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/IccIoResult.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable IccIoResult {
int sw1;
int sw2;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/ImsiEncryptionInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/ImsiEncryptionInfo.aidl
index 40722e5..1ccc262 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/ImsiEncryptionInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/ImsiEncryptionInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable ImsiEncryptionInfo {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/PhonebookCapacity.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/PhonebookCapacity.aidl
index b020687..4abde4f 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/PhonebookCapacity.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/PhonebookCapacity.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable PhonebookCapacity {
int maxAdnRecords;
int usedAdnRecords;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/PhonebookRecordInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/PhonebookRecordInfo.aidl
index 1a6943b..9074169 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/PhonebookRecordInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/PhonebookRecordInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable PhonebookRecordInfo {
int recordId;
String name;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/Plmn.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/Plmn.aidl
index b29a4a7..02f4498 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/Plmn.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/Plmn.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable Plmn {
String mcc;
String mnc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SelectUiccSub.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SelectUiccSub.aidl
index 57ca2a5..8c256be 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SelectUiccSub.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SelectUiccSub.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SelectUiccSub {
int slot;
int appIndex;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SessionInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SessionInfo.aidl
index 5c81e3d..cf5ff90 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SessionInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SessionInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SessionInfo {
int sessionId;
boolean isEs10 = false;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SimApdu.aidl b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SimApdu.aidl
index 45f6e48..b4c57a3 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SimApdu.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.sim/current/android/hardware/radio/sim/SimApdu.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.sim;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable SimApdu {
int sessionId;
int cla;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/Call.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/Call.aidl
index 33af1fd..194bf25 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/Call.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/Call.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable Call {
int state;
int index;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CallForwardInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CallForwardInfo.aidl
index 51c8758..e780fc4 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CallForwardInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CallForwardInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CallForwardInfo {
int status;
int reason;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaCallWaiting.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaCallWaiting.aidl
index 7eb8c4e..b5b1471 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaCallWaiting.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaCallWaiting.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaCallWaiting {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaDisplayInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaDisplayInfoRecord.aidl
index a673c93..88c04bf 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaDisplayInfoRecord.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaDisplayInfoRecord.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable CdmaDisplayInfoRecord {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaInformationRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaInformationRecord.aidl
index 143409f..6424ebc 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaInformationRecord.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaInformationRecord.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable CdmaInformationRecord {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaLineControlInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaLineControlInfoRecord.aidl
index 6968a8a..0bf8925 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaLineControlInfoRecord.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaLineControlInfoRecord.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaLineControlInfoRecord {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaNumberInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaNumberInfoRecord.aidl
index 684b171..630d1dd 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaNumberInfoRecord.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaNumberInfoRecord.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable CdmaNumberInfoRecord {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaRedirectingNumberInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaRedirectingNumberInfoRecord.aidl
index ce7c7c6..33d7362 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaRedirectingNumberInfoRecord.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaRedirectingNumberInfoRecord.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable CdmaRedirectingNumberInfoRecord {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaSignalInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaSignalInfoRecord.aidl
index 04e7bdc..899d384 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaSignalInfoRecord.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaSignalInfoRecord.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaSignalInfoRecord {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaT53AudioControlInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaT53AudioControlInfoRecord.aidl
index 733d822..ea44344 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaT53AudioControlInfoRecord.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaT53AudioControlInfoRecord.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaT53AudioControlInfoRecord {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaT53ClirInfoRecord.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaT53ClirInfoRecord.aidl
index 9cf931c..7c528d1 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaT53ClirInfoRecord.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CdmaT53ClirInfoRecord.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CdmaT53ClirInfoRecord {
/**
* @deprecated Legacy CDMA is unsupported.
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CfData.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CfData.aidl
index fc811f2..050faa4 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CfData.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/CfData.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable CfData {
android.hardware.radio.voice.CallForwardInfo[] cfInfo;
const int NUM_SERVICE_CLASSES = 7;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/Dial.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/Dial.aidl
index 26041f0..d1d77ae 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/Dial.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/Dial.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable Dial {
String address;
int clir;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/EmergencyNumber.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/EmergencyNumber.aidl
index 2129f39..76b58f9 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/EmergencyNumber.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/EmergencyNumber.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable EmergencyNumber {
String number;
String mcc;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/LastCallFailCauseInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/LastCallFailCauseInfo.aidl
index c36a934..d4ea029 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/LastCallFailCauseInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/LastCallFailCauseInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable LastCallFailCauseInfo {
android.hardware.radio.voice.LastCallFailCause causeCode = android.hardware.radio.voice.LastCallFailCause.INVALID;
String vendorCause;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/SsInfoData.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/SsInfoData.aidl
index 2af38fe..4ad82ca 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/SsInfoData.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/SsInfoData.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable SsInfoData {
int[] ssInfo;
const int SS_INFO_MAX = 4;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/StkCcUnsolSsResult.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/StkCcUnsolSsResult.aidl
index d265374..be3f933 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/StkCcUnsolSsResult.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/StkCcUnsolSsResult.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable StkCcUnsolSsResult {
int serviceType;
int requestType;
diff --git a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/UusInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/UusInfo.aidl
index 79c77ee..94be38f 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/UusInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.voice/current/android/hardware/radio/voice/UusInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio.voice;
/* @hide */
-@JavaDerive(toString=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @SuppressWarnings(value={"redundant-name"}) @VintfStability
parcelable UusInfo {
int uusType;
int uusDcs;
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioConst.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioConst.aidl
index e24a35d..2232279 100644
--- a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioConst.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioConst.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RadioConst {
const int VALUE_UNAVAILABLE = 0x7FFFFFFF;
const long VALUE_UNAVAILABLE_LONG = 0x7FFFFFFFFFFFFFFF;
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfo.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfo.aidl
index bfab0c5..a15a3ce 100644
--- a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfo.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfo.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RadioResponseInfo {
android.hardware.radio.RadioResponseType type = android.hardware.radio.RadioResponseType.SOLICITED;
int serial;
diff --git a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfoModem.aidl b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfoModem.aidl
index c445fec..bd8ece0 100644
--- a/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfoModem.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio/current/android/hardware/radio/RadioResponseInfoModem.aidl
@@ -33,7 +33,7 @@
package android.hardware.radio;
/* @hide */
-@JavaDerive(toString=true) @VintfStability
+@JavaDerive(toString=true) @RustDerive(Clone=true, Eq=true, PartialEq=true) @VintfStability
parcelable RadioResponseInfoModem {
android.hardware.radio.RadioResponseType type = android.hardware.radio.RadioResponseType.SOLICITED;
int serial;
diff --git a/radio/aidl/android/hardware/radio/RadioConst.aidl b/radio/aidl/android/hardware/radio/RadioConst.aidl
index df27526..525864d 100644
--- a/radio/aidl/android/hardware/radio/RadioConst.aidl
+++ b/radio/aidl/android/hardware/radio/RadioConst.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RadioConst {
const int VALUE_UNAVAILABLE = 0x7FFFFFFF;
const long VALUE_UNAVAILABLE_LONG = 0x7FFFFFFFFFFFFFFF;
diff --git a/radio/aidl/android/hardware/radio/RadioResponseInfo.aidl b/radio/aidl/android/hardware/radio/RadioResponseInfo.aidl
index 926ccf6..5d72ebb 100644
--- a/radio/aidl/android/hardware/radio/RadioResponseInfo.aidl
+++ b/radio/aidl/android/hardware/radio/RadioResponseInfo.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RadioResponseInfo {
/**
* Response type
diff --git a/radio/aidl/android/hardware/radio/RadioResponseInfoModem.aidl b/radio/aidl/android/hardware/radio/RadioResponseInfoModem.aidl
index 3e76a93..f6b7ed4 100644
--- a/radio/aidl/android/hardware/radio/RadioResponseInfoModem.aidl
+++ b/radio/aidl/android/hardware/radio/RadioResponseInfoModem.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RadioResponseInfoModem {
/**
* Response type
diff --git a/radio/aidl/android/hardware/radio/config/PhoneCapability.aidl b/radio/aidl/android/hardware/radio/config/PhoneCapability.aidl
index 265ab96..f0fb1a6 100644
--- a/radio/aidl/android/hardware/radio/config/PhoneCapability.aidl
+++ b/radio/aidl/android/hardware/radio/config/PhoneCapability.aidl
@@ -24,6 +24,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable PhoneCapability {
const byte UNKNOWN = -1;
/**
diff --git a/radio/aidl/android/hardware/radio/config/SimPortInfo.aidl b/radio/aidl/android/hardware/radio/config/SimPortInfo.aidl
index 380932e..89e0af8 100644
--- a/radio/aidl/android/hardware/radio/config/SimPortInfo.aidl
+++ b/radio/aidl/android/hardware/radio/config/SimPortInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SimPortInfo {
/**
* Integrated Circuit Card IDentifier (ICCID) is the unique identifier of the SIM card. The file
diff --git a/radio/aidl/android/hardware/radio/config/SimSlotStatus.aidl b/radio/aidl/android/hardware/radio/config/SimSlotStatus.aidl
index 171d97a..56698f0 100644
--- a/radio/aidl/android/hardware/radio/config/SimSlotStatus.aidl
+++ b/radio/aidl/android/hardware/radio/config/SimSlotStatus.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SimSlotStatus {
/**
* Card state in the physical slot. Values are CardStatus.[STATE_ABSENT, STATE_PRESENT,
diff --git a/radio/aidl/android/hardware/radio/config/SimTypeInfo.aidl b/radio/aidl/android/hardware/radio/config/SimTypeInfo.aidl
index 0534626..ff9d7bc 100644
--- a/radio/aidl/android/hardware/radio/config/SimTypeInfo.aidl
+++ b/radio/aidl/android/hardware/radio/config/SimTypeInfo.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SimTypeInfo {
/**
* Current SimType on the physical slot id.
diff --git a/radio/aidl/android/hardware/radio/config/SlotPortMapping.aidl b/radio/aidl/android/hardware/radio/config/SlotPortMapping.aidl
index 30cca50..9d0f9f6 100644
--- a/radio/aidl/android/hardware/radio/config/SlotPortMapping.aidl
+++ b/radio/aidl/android/hardware/radio/config/SlotPortMapping.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SlotPortMapping {
/**
* Physical slot id is the index of the slots
diff --git a/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl b/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl
index 501cbce..260628c 100644
--- a/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl
+++ b/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl
@@ -23,6 +23,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable DataProfileInfo {
const int ID_DEFAULT = 0;
const int ID_TETHERED = 1;
diff --git a/radio/aidl/android/hardware/radio/data/EpsQos.aidl b/radio/aidl/android/hardware/radio/data/EpsQos.aidl
index 42eee32..ecae908 100644
--- a/radio/aidl/android/hardware/radio/data/EpsQos.aidl
+++ b/radio/aidl/android/hardware/radio/data/EpsQos.aidl
@@ -24,6 +24,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable EpsQos {
/**
* Quality of Service Class Identifier (QCI), see 3GPP TS 23.203 and 29.212.
diff --git a/radio/aidl/android/hardware/radio/data/KeepaliveRequest.aidl b/radio/aidl/android/hardware/radio/data/KeepaliveRequest.aidl
index 115e47e..1d90b8f 100644
--- a/radio/aidl/android/hardware/radio/data/KeepaliveRequest.aidl
+++ b/radio/aidl/android/hardware/radio/data/KeepaliveRequest.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable KeepaliveRequest {
/**
* Keepalive specified by RFC 3948 Sec. 2.3 using IPv4
diff --git a/radio/aidl/android/hardware/radio/data/KeepaliveStatus.aidl b/radio/aidl/android/hardware/radio/data/KeepaliveStatus.aidl
index 162fc37..f4a4e9c 100644
--- a/radio/aidl/android/hardware/radio/data/KeepaliveStatus.aidl
+++ b/radio/aidl/android/hardware/radio/data/KeepaliveStatus.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable KeepaliveStatus {
/**
* Keepalive is currently active.
diff --git a/radio/aidl/android/hardware/radio/data/LinkAddress.aidl b/radio/aidl/android/hardware/radio/data/LinkAddress.aidl
index f5d6553..d4e8950 100644
--- a/radio/aidl/android/hardware/radio/data/LinkAddress.aidl
+++ b/radio/aidl/android/hardware/radio/data/LinkAddress.aidl
@@ -23,6 +23,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable LinkAddress {
const int ADDRESS_PROPERTY_NONE = 0;
/**
diff --git a/radio/aidl/android/hardware/radio/data/NrQos.aidl b/radio/aidl/android/hardware/radio/data/NrQos.aidl
index f636e6b..75234ac 100644
--- a/radio/aidl/android/hardware/radio/data/NrQos.aidl
+++ b/radio/aidl/android/hardware/radio/data/NrQos.aidl
@@ -24,6 +24,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable NrQos {
const byte FLOW_ID_RANGE_MIN = 1;
const byte FLOW_ID_RANGE_MAX = 63;
diff --git a/radio/aidl/android/hardware/radio/data/OsAppId.aidl b/radio/aidl/android/hardware/radio/data/OsAppId.aidl
index ae38cf3..744065b 100644
--- a/radio/aidl/android/hardware/radio/data/OsAppId.aidl
+++ b/radio/aidl/android/hardware/radio/data/OsAppId.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable OsAppId {
/**
* Byte array representing OsId + OsAppId. The minimum length of the array is 18 and maximum
diff --git a/radio/aidl/android/hardware/radio/data/PcoDataInfo.aidl b/radio/aidl/android/hardware/radio/data/PcoDataInfo.aidl
index a487bb3..a4ea7ba 100644
--- a/radio/aidl/android/hardware/radio/data/PcoDataInfo.aidl
+++ b/radio/aidl/android/hardware/radio/data/PcoDataInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable PcoDataInfo {
/**
* Context ID, uniquely identifies this call
diff --git a/radio/aidl/android/hardware/radio/data/PortRange.aidl b/radio/aidl/android/hardware/radio/data/PortRange.aidl
index 1d436fa..27cf8aa 100644
--- a/radio/aidl/android/hardware/radio/data/PortRange.aidl
+++ b/radio/aidl/android/hardware/radio/data/PortRange.aidl
@@ -25,6 +25,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable PortRange {
const int PORT_RANGE_MIN = 20;
const int PORT_RANGE_MAX = 65535;
diff --git a/radio/aidl/android/hardware/radio/data/Qos.aidl b/radio/aidl/android/hardware/radio/data/Qos.aidl
index e98d030..94ae89c 100644
--- a/radio/aidl/android/hardware/radio/data/Qos.aidl
+++ b/radio/aidl/android/hardware/radio/data/Qos.aidl
@@ -25,6 +25,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union Qos {
boolean noinit;
EpsQos eps;
diff --git a/radio/aidl/android/hardware/radio/data/QosBandwidth.aidl b/radio/aidl/android/hardware/radio/data/QosBandwidth.aidl
index f2eca41..eafbcac 100644
--- a/radio/aidl/android/hardware/radio/data/QosBandwidth.aidl
+++ b/radio/aidl/android/hardware/radio/data/QosBandwidth.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable QosBandwidth {
/**
* Maximum bit rate possible on the bearer
diff --git a/radio/aidl/android/hardware/radio/data/QosFilter.aidl b/radio/aidl/android/hardware/radio/data/QosFilter.aidl
index 4a2b61d..7918a7f 100644
--- a/radio/aidl/android/hardware/radio/data/QosFilter.aidl
+++ b/radio/aidl/android/hardware/radio/data/QosFilter.aidl
@@ -27,6 +27,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable QosFilter {
const byte DIRECTION_DOWNLINK = 0;
const byte DIRECTION_UPLINK = 1;
diff --git a/radio/aidl/android/hardware/radio/data/QosFilterIpsecSpi.aidl b/radio/aidl/android/hardware/radio/data/QosFilterIpsecSpi.aidl
index 83c4fe1..3a6e07b 100644
--- a/radio/aidl/android/hardware/radio/data/QosFilterIpsecSpi.aidl
+++ b/radio/aidl/android/hardware/radio/data/QosFilterIpsecSpi.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union QosFilterIpsecSpi {
boolean noinit;
int value;
diff --git a/radio/aidl/android/hardware/radio/data/QosFilterIpv6FlowLabel.aidl b/radio/aidl/android/hardware/radio/data/QosFilterIpv6FlowLabel.aidl
index 4591174..41f51c3 100644
--- a/radio/aidl/android/hardware/radio/data/QosFilterIpv6FlowLabel.aidl
+++ b/radio/aidl/android/hardware/radio/data/QosFilterIpv6FlowLabel.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union QosFilterIpv6FlowLabel {
boolean noinit;
int value;
diff --git a/radio/aidl/android/hardware/radio/data/QosFilterTypeOfService.aidl b/radio/aidl/android/hardware/radio/data/QosFilterTypeOfService.aidl
index 8d27399..d8585d3 100644
--- a/radio/aidl/android/hardware/radio/data/QosFilterTypeOfService.aidl
+++ b/radio/aidl/android/hardware/radio/data/QosFilterTypeOfService.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union QosFilterTypeOfService {
boolean noinit;
byte value;
diff --git a/radio/aidl/android/hardware/radio/data/QosSession.aidl b/radio/aidl/android/hardware/radio/data/QosSession.aidl
index 1a8eb2c..5dc9217 100644
--- a/radio/aidl/android/hardware/radio/data/QosSession.aidl
+++ b/radio/aidl/android/hardware/radio/data/QosSession.aidl
@@ -25,6 +25,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable QosSession {
/**
* Unique ID of the QoS session within the data call
diff --git a/radio/aidl/android/hardware/radio/data/RouteSelectionDescriptor.aidl b/radio/aidl/android/hardware/radio/data/RouteSelectionDescriptor.aidl
index 4d4b6d5..67e2919 100644
--- a/radio/aidl/android/hardware/radio/data/RouteSelectionDescriptor.aidl
+++ b/radio/aidl/android/hardware/radio/data/RouteSelectionDescriptor.aidl
@@ -25,6 +25,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RouteSelectionDescriptor {
const byte SSC_MODE_UNKNOWN = -1;
const byte SSC_MODE_1 = 1;
diff --git a/radio/aidl/android/hardware/radio/data/SetupDataCallResult.aidl b/radio/aidl/android/hardware/radio/data/SetupDataCallResult.aidl
index 687982a..8f13050 100644
--- a/radio/aidl/android/hardware/radio/data/SetupDataCallResult.aidl
+++ b/radio/aidl/android/hardware/radio/data/SetupDataCallResult.aidl
@@ -28,6 +28,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SetupDataCallResult {
/**
* Indicates the data connection is inactive.
diff --git a/radio/aidl/android/hardware/radio/data/SliceInfo.aidl b/radio/aidl/android/hardware/radio/data/SliceInfo.aidl
index 809b8e0..61fee33 100644
--- a/radio/aidl/android/hardware/radio/data/SliceInfo.aidl
+++ b/radio/aidl/android/hardware/radio/data/SliceInfo.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SliceInfo {
/*
* Not specified
diff --git a/radio/aidl/android/hardware/radio/data/SlicingConfig.aidl b/radio/aidl/android/hardware/radio/data/SlicingConfig.aidl
index 47ac41e..d47e8d8 100644
--- a/radio/aidl/android/hardware/radio/data/SlicingConfig.aidl
+++ b/radio/aidl/android/hardware/radio/data/SlicingConfig.aidl
@@ -25,6 +25,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SlicingConfig {
/**
* This vector contains the current URSP rules. Empty vector indicates no rules are configured.
diff --git a/radio/aidl/android/hardware/radio/data/TrafficDescriptor.aidl b/radio/aidl/android/hardware/radio/data/TrafficDescriptor.aidl
index 098c77a..c880632 100644
--- a/radio/aidl/android/hardware/radio/data/TrafficDescriptor.aidl
+++ b/radio/aidl/android/hardware/radio/data/TrafficDescriptor.aidl
@@ -26,6 +26,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable TrafficDescriptor {
/**
* DNN stands for Data Network Name and represents an APN as defined in 3GPP TS 23.003.
diff --git a/radio/aidl/android/hardware/radio/data/UrspRule.aidl b/radio/aidl/android/hardware/radio/data/UrspRule.aidl
index f2028b4..38cddd8 100644
--- a/radio/aidl/android/hardware/radio/data/UrspRule.aidl
+++ b/radio/aidl/android/hardware/radio/data/UrspRule.aidl
@@ -25,6 +25,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable UrspRule {
/**
* Precedence value in the range of 0 to 255. Higher value has lower precedence.
diff --git a/radio/aidl/android/hardware/radio/ims/ConnectionFailureInfo.aidl b/radio/aidl/android/hardware/radio/ims/ConnectionFailureInfo.aidl
index 92024ac..c079519 100644
--- a/radio/aidl/android/hardware/radio/ims/ConnectionFailureInfo.aidl
+++ b/radio/aidl/android/hardware/radio/ims/ConnectionFailureInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ConnectionFailureInfo {
@VintfStability
@Backing(type="int")
diff --git a/radio/aidl/android/hardware/radio/ims/ImsCall.aidl b/radio/aidl/android/hardware/radio/ims/ImsCall.aidl
index 49fd62c..5818e5e 100644
--- a/radio/aidl/android/hardware/radio/ims/ImsCall.aidl
+++ b/radio/aidl/android/hardware/radio/ims/ImsCall.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ImsCall {
@Backing(type="int")
enum CallType {
diff --git a/radio/aidl/android/hardware/radio/ims/ImsRegistration.aidl b/radio/aidl/android/hardware/radio/ims/ImsRegistration.aidl
index 9018273..929fd28 100644
--- a/radio/aidl/android/hardware/radio/ims/ImsRegistration.aidl
+++ b/radio/aidl/android/hardware/radio/ims/ImsRegistration.aidl
@@ -24,6 +24,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ImsRegistration {
/** Default value */
const int IMS_MMTEL_CAPABILITY_NONE = 0;
diff --git a/radio/aidl/android/hardware/radio/ims/SrvccCall.aidl b/radio/aidl/android/hardware/radio/ims/SrvccCall.aidl
index 4fdfed0..4f59c0f 100644
--- a/radio/aidl/android/hardware/radio/ims/SrvccCall.aidl
+++ b/radio/aidl/android/hardware/radio/ims/SrvccCall.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SrvccCall {
@VintfStability
@Backing(type="int")
diff --git a/radio/aidl/android/hardware/radio/ims/media/AmrParams.aidl b/radio/aidl/android/hardware/radio/ims/media/AmrParams.aidl
index dbf38c2..b7b68db 100644
--- a/radio/aidl/android/hardware/radio/ims/media/AmrParams.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/AmrParams.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable AmrParams {
/** mode-set: AMR codec mode to represent the bit rate */
AmrMode amrMode = AmrMode.INVALID;
diff --git a/radio/aidl/android/hardware/radio/ims/media/AnbrMode.aidl b/radio/aidl/android/hardware/radio/ims/media/AnbrMode.aidl
index af6f92f..43a9c83 100644
--- a/radio/aidl/android/hardware/radio/ims/media/AnbrMode.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/AnbrMode.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable AnbrMode {
/**
* Codec mode converted from bitrate received for uplink
diff --git a/radio/aidl/android/hardware/radio/ims/media/CallQuality.aidl b/radio/aidl/android/hardware/radio/ims/media/CallQuality.aidl
index dcf9623..71d4edf 100644
--- a/radio/aidl/android/hardware/radio/ims/media/CallQuality.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/CallQuality.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CallQuality {
/**
* downlink CallQualityLevel for a given ongoing call
diff --git a/radio/aidl/android/hardware/radio/ims/media/CodecMode.aidl b/radio/aidl/android/hardware/radio/ims/media/CodecMode.aidl
index 6858ef4..0908920 100644
--- a/radio/aidl/android/hardware/radio/ims/media/CodecMode.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/CodecMode.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union CodecMode {
/** Default value */
boolean noinit;
diff --git a/radio/aidl/android/hardware/radio/ims/media/CodecParams.aidl b/radio/aidl/android/hardware/radio/ims/media/CodecParams.aidl
index 6da8087..4e7a246 100644
--- a/radio/aidl/android/hardware/radio/ims/media/CodecParams.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/CodecParams.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CodecParams {
/** Negotiated codec type */
CodecType codecType = CodecType.INVALID;
diff --git a/radio/aidl/android/hardware/radio/ims/media/CodecSpecificParams.aidl b/radio/aidl/android/hardware/radio/ims/media/CodecSpecificParams.aidl
index 86dcea0..2e04b54 100644
--- a/radio/aidl/android/hardware/radio/ims/media/CodecSpecificParams.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/CodecSpecificParams.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union CodecSpecificParams {
AmrParams amr;
EvsParams evs;
diff --git a/radio/aidl/android/hardware/radio/ims/media/DtmfParams.aidl b/radio/aidl/android/hardware/radio/ims/media/DtmfParams.aidl
index d2926f0..b45aa62 100644
--- a/radio/aidl/android/hardware/radio/ims/media/DtmfParams.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/DtmfParams.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable DtmfParams {
/**
* Dynamic payload type number to be used for DTMF RTP packets received.
diff --git a/radio/aidl/android/hardware/radio/ims/media/EvsParams.aidl b/radio/aidl/android/hardware/radio/ims/media/EvsParams.aidl
index 37c7d4b..231ab46 100644
--- a/radio/aidl/android/hardware/radio/ims/media/EvsParams.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/EvsParams.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable EvsParams {
/** EVS codec bandwidth */
EvsBandwidth bandwidth = EvsBandwidth.NONE;
diff --git a/radio/aidl/android/hardware/radio/ims/media/MediaQualityStatus.aidl b/radio/aidl/android/hardware/radio/ims/media/MediaQualityStatus.aidl
index b617f91..2f571e8 100644
--- a/radio/aidl/android/hardware/radio/ims/media/MediaQualityStatus.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/MediaQualityStatus.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable MediaQualityStatus {
/**
* Rtp inactivity observed as per threshold set by
diff --git a/radio/aidl/android/hardware/radio/ims/media/MediaQualityThreshold.aidl b/radio/aidl/android/hardware/radio/ims/media/MediaQualityThreshold.aidl
index 25473d0..0c942ac 100644
--- a/radio/aidl/android/hardware/radio/ims/media/MediaQualityThreshold.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/MediaQualityThreshold.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable MediaQualityThreshold {
/** Array including threshold values in milliseconds for monitoring RTP inactivity */
int[] rtpInactivityTimerMillis;
diff --git a/radio/aidl/android/hardware/radio/ims/media/RtcpConfig.aidl b/radio/aidl/android/hardware/radio/ims/media/RtcpConfig.aidl
index 9cb3c0e..7819667 100644
--- a/radio/aidl/android/hardware/radio/ims/media/RtcpConfig.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/RtcpConfig.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RtcpConfig {
/** Canonical name that will be sent to all session participants */
String canonicalName;
diff --git a/radio/aidl/android/hardware/radio/ims/media/RtpAddress.aidl b/radio/aidl/android/hardware/radio/ims/media/RtpAddress.aidl
index c17e4b2..0f98f4c 100644
--- a/radio/aidl/android/hardware/radio/ims/media/RtpAddress.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/RtpAddress.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RtpAddress {
/** Point to point IP address */
String ipAddress;
diff --git a/radio/aidl/android/hardware/radio/ims/media/RtpConfig.aidl b/radio/aidl/android/hardware/radio/ims/media/RtpConfig.aidl
index 9aca292..e9467c7 100644
--- a/radio/aidl/android/hardware/radio/ims/media/RtpConfig.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/RtpConfig.aidl
@@ -25,6 +25,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RtpConfig {
/** Media flow direction. The bitfield of MediaDirection(s) */
int direction;
diff --git a/radio/aidl/android/hardware/radio/ims/media/RtpHeaderExtension.aidl b/radio/aidl/android/hardware/radio/ims/media/RtpHeaderExtension.aidl
index 19e855a..bd9e939 100644
--- a/radio/aidl/android/hardware/radio/ims/media/RtpHeaderExtension.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/RtpHeaderExtension.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RtpHeaderExtension {
/** Local identifier */
int localId;
diff --git a/radio/aidl/android/hardware/radio/ims/media/RtpReceptionStats.aidl b/radio/aidl/android/hardware/radio/ims/media/RtpReceptionStats.aidl
index 81c0bb2..568c7f9 100644
--- a/radio/aidl/android/hardware/radio/ims/media/RtpReceptionStats.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/RtpReceptionStats.aidl
@@ -17,6 +17,7 @@
package android.hardware.radio.ims.media;
@VintfStability
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RtpReceptionStats {
/** The timestamp of the latest RTP packet received */
int rtpTimestamp;
diff --git a/radio/aidl/android/hardware/radio/ims/media/RtpSessionParams.aidl b/radio/aidl/android/hardware/radio/ims/media/RtpSessionParams.aidl
index ae5c7e6..2e0beb9 100644
--- a/radio/aidl/android/hardware/radio/ims/media/RtpSessionParams.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/RtpSessionParams.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RtpSessionParams {
/**
* ptime: Recommended length of time in milliseconds represented by the media
diff --git a/radio/aidl/android/hardware/radio/messaging/CdmaBroadcastSmsConfigInfo.aidl b/radio/aidl/android/hardware/radio/messaging/CdmaBroadcastSmsConfigInfo.aidl
index cef8f5d..2254d5b 100644
--- a/radio/aidl/android/hardware/radio/messaging/CdmaBroadcastSmsConfigInfo.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/CdmaBroadcastSmsConfigInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaBroadcastSmsConfigInfo {
/**
* Defines a broadcast message identifier whose value is 0x0000 - 0xFFFF as defined in
diff --git a/radio/aidl/android/hardware/radio/messaging/CdmaSmsAck.aidl b/radio/aidl/android/hardware/radio/messaging/CdmaSmsAck.aidl
index ea5d8b2..94967ec 100644
--- a/radio/aidl/android/hardware/radio/messaging/CdmaSmsAck.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/CdmaSmsAck.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaSmsAck {
/** @deprecated Legacy CDMA is unsupported. */
boolean errorClass;
diff --git a/radio/aidl/android/hardware/radio/messaging/CdmaSmsAddress.aidl b/radio/aidl/android/hardware/radio/messaging/CdmaSmsAddress.aidl
index 11d953b..27f2708 100644
--- a/radio/aidl/android/hardware/radio/messaging/CdmaSmsAddress.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/CdmaSmsAddress.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaSmsAddress {
/**
* DTMF digits
diff --git a/radio/aidl/android/hardware/radio/messaging/CdmaSmsMessage.aidl b/radio/aidl/android/hardware/radio/messaging/CdmaSmsMessage.aidl
index 5332d82..bbb777f 100644
--- a/radio/aidl/android/hardware/radio/messaging/CdmaSmsMessage.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/CdmaSmsMessage.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaSmsMessage {
/** @deprecated Legacy CDMA is unsupported. */
int teleserviceId;
diff --git a/radio/aidl/android/hardware/radio/messaging/CdmaSmsSubaddress.aidl b/radio/aidl/android/hardware/radio/messaging/CdmaSmsSubaddress.aidl
index 132bbbb..bc4ef55 100644
--- a/radio/aidl/android/hardware/radio/messaging/CdmaSmsSubaddress.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/CdmaSmsSubaddress.aidl
@@ -20,6 +20,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaSmsSubaddress {
/**
* CCITT X.213 or ISO 8348 AD2
diff --git a/radio/aidl/android/hardware/radio/messaging/CdmaSmsWriteArgs.aidl b/radio/aidl/android/hardware/radio/messaging/CdmaSmsWriteArgs.aidl
index 3047859..6d8e8ed 100644
--- a/radio/aidl/android/hardware/radio/messaging/CdmaSmsWriteArgs.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/CdmaSmsWriteArgs.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaSmsWriteArgs {
/** @deprecated Legacy CDMA is unsupported. */
const int STATUS_REC_UNREAD = 0;
diff --git a/radio/aidl/android/hardware/radio/messaging/GsmBroadcastSmsConfigInfo.aidl b/radio/aidl/android/hardware/radio/messaging/GsmBroadcastSmsConfigInfo.aidl
index b4ab518..881102e 100644
--- a/radio/aidl/android/hardware/radio/messaging/GsmBroadcastSmsConfigInfo.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/GsmBroadcastSmsConfigInfo.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable GsmBroadcastSmsConfigInfo {
/**
* Beginning of the range of CBM message identifiers whose value is 0x0000 - 0xFFFF as defined
diff --git a/radio/aidl/android/hardware/radio/messaging/GsmSmsMessage.aidl b/radio/aidl/android/hardware/radio/messaging/GsmSmsMessage.aidl
index 9a1a7b9..577bd62 100644
--- a/radio/aidl/android/hardware/radio/messaging/GsmSmsMessage.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/GsmSmsMessage.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable GsmSmsMessage {
/**
* SMSC address in GSM BCD format prefixed by a length byte (as expected by TS 27.005)
diff --git a/radio/aidl/android/hardware/radio/messaging/ImsSmsMessage.aidl b/radio/aidl/android/hardware/radio/messaging/ImsSmsMessage.aidl
index c205323..6074d64 100644
--- a/radio/aidl/android/hardware/radio/messaging/ImsSmsMessage.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/ImsSmsMessage.aidl
@@ -23,6 +23,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ImsSmsMessage {
RadioTechnologyFamily tech = RadioTechnologyFamily.THREE_GPP;
/**
diff --git a/radio/aidl/android/hardware/radio/messaging/SendSmsResult.aidl b/radio/aidl/android/hardware/radio/messaging/SendSmsResult.aidl
index da41d84..9f1da79 100644
--- a/radio/aidl/android/hardware/radio/messaging/SendSmsResult.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/SendSmsResult.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SendSmsResult {
/**
* TP-Message-Reference for GSM, and BearerData MessageId for CDMA.
diff --git a/radio/aidl/android/hardware/radio/messaging/SmsWriteArgs.aidl b/radio/aidl/android/hardware/radio/messaging/SmsWriteArgs.aidl
index 64ce606..4f5c6a8 100644
--- a/radio/aidl/android/hardware/radio/messaging/SmsWriteArgs.aidl
+++ b/radio/aidl/android/hardware/radio/messaging/SmsWriteArgs.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SmsWriteArgs {
const int STATUS_REC_UNREAD = 0;
const int STATUS_REC_READ = 1;
diff --git a/radio/aidl/android/hardware/radio/modem/ActivityStatsInfo.aidl b/radio/aidl/android/hardware/radio/modem/ActivityStatsInfo.aidl
index db77c51..49649ed 100644
--- a/radio/aidl/android/hardware/radio/modem/ActivityStatsInfo.aidl
+++ b/radio/aidl/android/hardware/radio/modem/ActivityStatsInfo.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ActivityStatsInfo {
/**
* Total time (in ms) when modem is in a low power or sleep state
diff --git a/radio/aidl/android/hardware/radio/modem/ActivityStatsTechSpecificInfo.aidl b/radio/aidl/android/hardware/radio/modem/ActivityStatsTechSpecificInfo.aidl
index 6ad47fc..bd431da 100644
--- a/radio/aidl/android/hardware/radio/modem/ActivityStatsTechSpecificInfo.aidl
+++ b/radio/aidl/android/hardware/radio/modem/ActivityStatsTechSpecificInfo.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ActivityStatsTechSpecificInfo {
/** Indicates the frequency range is unknown. */
const int FREQUENCY_RANGE_UNKNOWN = 0;
diff --git a/radio/aidl/android/hardware/radio/modem/HardwareConfig.aidl b/radio/aidl/android/hardware/radio/modem/HardwareConfig.aidl
index 323e5c9..81fb903 100644
--- a/radio/aidl/android/hardware/radio/modem/HardwareConfig.aidl
+++ b/radio/aidl/android/hardware/radio/modem/HardwareConfig.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable HardwareConfig {
const int STATE_ENABLED = 0;
const int STATE_STANDBY = 1;
diff --git a/radio/aidl/android/hardware/radio/modem/HardwareConfigModem.aidl b/radio/aidl/android/hardware/radio/modem/HardwareConfigModem.aidl
index 0389170..abe268d 100644
--- a/radio/aidl/android/hardware/radio/modem/HardwareConfigModem.aidl
+++ b/radio/aidl/android/hardware/radio/modem/HardwareConfigModem.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable HardwareConfigModem {
/**
* RIL attachment model. Values are:
diff --git a/radio/aidl/android/hardware/radio/modem/HardwareConfigSim.aidl b/radio/aidl/android/hardware/radio/modem/HardwareConfigSim.aidl
index a5747c1..7145c0f 100644
--- a/radio/aidl/android/hardware/radio/modem/HardwareConfigSim.aidl
+++ b/radio/aidl/android/hardware/radio/modem/HardwareConfigSim.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable HardwareConfigSim {
/**
* RadioConst:MAX_UUID_LENGTH is max length of the string
diff --git a/radio/aidl/android/hardware/radio/modem/ImeiInfo.aidl b/radio/aidl/android/hardware/radio/modem/ImeiInfo.aidl
index 82fade5..e61e4f6 100644
--- a/radio/aidl/android/hardware/radio/modem/ImeiInfo.aidl
+++ b/radio/aidl/android/hardware/radio/modem/ImeiInfo.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ImeiInfo {
@VintfStability
@Backing(type="int")
diff --git a/radio/aidl/android/hardware/radio/modem/NvWriteItem.aidl b/radio/aidl/android/hardware/radio/modem/NvWriteItem.aidl
index 482126a..a1a932e 100644
--- a/radio/aidl/android/hardware/radio/modem/NvWriteItem.aidl
+++ b/radio/aidl/android/hardware/radio/modem/NvWriteItem.aidl
@@ -23,6 +23,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable NvWriteItem {
/**
* @deprecated NV APIs are deprecated starting from Android U.
diff --git a/radio/aidl/android/hardware/radio/modem/RadioCapability.aidl b/radio/aidl/android/hardware/radio/modem/RadioCapability.aidl
index 9781595..732e9a3 100644
--- a/radio/aidl/android/hardware/radio/modem/RadioCapability.aidl
+++ b/radio/aidl/android/hardware/radio/modem/RadioCapability.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RadioCapability {
/**
* Logical Modem's (LM) initial value and value after PHASE_FINISH completes.
diff --git a/radio/aidl/android/hardware/radio/network/AccessTechnologySpecificInfo.aidl b/radio/aidl/android/hardware/radio/network/AccessTechnologySpecificInfo.aidl
index 10421d6..bdf9a9b 100644
--- a/radio/aidl/android/hardware/radio/network/AccessTechnologySpecificInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/AccessTechnologySpecificInfo.aidl
@@ -23,6 +23,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union AccessTechnologySpecificInfo {
boolean noinit;
/** @deprecated Legacy CDMA is unsupported. */
diff --git a/radio/aidl/android/hardware/radio/network/BarringTypeSpecificInfo.aidl b/radio/aidl/android/hardware/radio/network/BarringTypeSpecificInfo.aidl
index b4a3bdf..9ff47b1 100644
--- a/radio/aidl/android/hardware/radio/network/BarringTypeSpecificInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/BarringTypeSpecificInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable BarringTypeSpecificInfo {
/**
* The barring factor as a percentage 0-100
diff --git a/radio/aidl/android/hardware/radio/network/Cdma2000RegistrationInfo.aidl b/radio/aidl/android/hardware/radio/network/Cdma2000RegistrationInfo.aidl
index 333a6c4..3aaa211 100644
--- a/radio/aidl/android/hardware/radio/network/Cdma2000RegistrationInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/Cdma2000RegistrationInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable Cdma2000RegistrationInfo {
/** @deprecated Legacy CDMA is unsupported. */
const int PRL_INDICATOR_NOT_REGISTERED = -1;
diff --git a/radio/aidl/android/hardware/radio/network/CdmaSignalStrength.aidl b/radio/aidl/android/hardware/radio/network/CdmaSignalStrength.aidl
index 214a512..0b7a717 100644
--- a/radio/aidl/android/hardware/radio/network/CdmaSignalStrength.aidl
+++ b/radio/aidl/android/hardware/radio/network/CdmaSignalStrength.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaSignalStrength {
/**
* This value is the actual RSSI value multiplied by -1. Example: If the actual RSSI is -75,
diff --git a/radio/aidl/android/hardware/radio/network/CellIdentity.aidl b/radio/aidl/android/hardware/radio/network/CellIdentity.aidl
index 76a6675..74adb61 100644
--- a/radio/aidl/android/hardware/radio/network/CellIdentity.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellIdentity.aidl
@@ -29,6 +29,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union CellIdentity {
boolean noinit;
CellIdentityGsm gsm;
diff --git a/radio/aidl/android/hardware/radio/network/CellIdentityCdma.aidl b/radio/aidl/android/hardware/radio/network/CellIdentityCdma.aidl
index 7f33d2d..6093687 100644
--- a/radio/aidl/android/hardware/radio/network/CellIdentityCdma.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellIdentityCdma.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellIdentityCdma {
/**
* Network Id 0..65535, RadioConst:VALUE_UNAVAILABLE if unknown
diff --git a/radio/aidl/android/hardware/radio/network/CellIdentityGsm.aidl b/radio/aidl/android/hardware/radio/network/CellIdentityGsm.aidl
index fe39a0e..c4913ff 100644
--- a/radio/aidl/android/hardware/radio/network/CellIdentityGsm.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellIdentityGsm.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellIdentityGsm {
/**
* 3-digit Mobile Country Code, 0..999, empty string if unknown
diff --git a/radio/aidl/android/hardware/radio/network/CellIdentityLte.aidl b/radio/aidl/android/hardware/radio/network/CellIdentityLte.aidl
index 9c4fc3c..86bb0f8 100644
--- a/radio/aidl/android/hardware/radio/network/CellIdentityLte.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellIdentityLte.aidl
@@ -23,6 +23,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellIdentityLte {
/**
* 3-digit Mobile Country Code, 0..999, empty string if unknown
diff --git a/radio/aidl/android/hardware/radio/network/CellIdentityNr.aidl b/radio/aidl/android/hardware/radio/network/CellIdentityNr.aidl
index 7ebc0cd..053cde3 100644
--- a/radio/aidl/android/hardware/radio/network/CellIdentityNr.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellIdentityNr.aidl
@@ -26,6 +26,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellIdentityNr {
/**
* 3-digit Mobile Country Code, in range[0, 999]; This value must be valid for registered or
diff --git a/radio/aidl/android/hardware/radio/network/CellIdentityTdscdma.aidl b/radio/aidl/android/hardware/radio/network/CellIdentityTdscdma.aidl
index 8373493..b5e0d68 100644
--- a/radio/aidl/android/hardware/radio/network/CellIdentityTdscdma.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellIdentityTdscdma.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellIdentityTdscdma {
/**
* 3-digit Mobile Country Code, 0..999, empty string if unknown.
diff --git a/radio/aidl/android/hardware/radio/network/CellIdentityWcdma.aidl b/radio/aidl/android/hardware/radio/network/CellIdentityWcdma.aidl
index ab703f1..a3d44a1 100644
--- a/radio/aidl/android/hardware/radio/network/CellIdentityWcdma.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellIdentityWcdma.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellIdentityWcdma {
/**
* 3-digit Mobile Country Code, 0..999, empty string if unknown.
diff --git a/radio/aidl/android/hardware/radio/network/CellInfo.aidl b/radio/aidl/android/hardware/radio/network/CellInfo.aidl
index 808a407..9953600 100644
--- a/radio/aidl/android/hardware/radio/network/CellInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellInfo.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellInfo {
/**
* True if this cell is registered false if not registered.
diff --git a/radio/aidl/android/hardware/radio/network/CellInfoCdma.aidl b/radio/aidl/android/hardware/radio/network/CellInfoCdma.aidl
index 0a0c0c0..0cb6bbc 100644
--- a/radio/aidl/android/hardware/radio/network/CellInfoCdma.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellInfoCdma.aidl
@@ -23,6 +23,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellInfoCdma {
/** @deprecated Legacy CDMA is unsupported. */
CellIdentityCdma cellIdentityCdma;
diff --git a/radio/aidl/android/hardware/radio/network/CellInfoGsm.aidl b/radio/aidl/android/hardware/radio/network/CellInfoGsm.aidl
index db84510..7d803e0 100644
--- a/radio/aidl/android/hardware/radio/network/CellInfoGsm.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellInfoGsm.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellInfoGsm {
CellIdentityGsm cellIdentityGsm;
GsmSignalStrength signalStrengthGsm;
diff --git a/radio/aidl/android/hardware/radio/network/CellInfoLte.aidl b/radio/aidl/android/hardware/radio/network/CellInfoLte.aidl
index 3d9b2f3..66ecc0d 100644
--- a/radio/aidl/android/hardware/radio/network/CellInfoLte.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellInfoLte.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellInfoLte {
CellIdentityLte cellIdentityLte;
LteSignalStrength signalStrengthLte;
diff --git a/radio/aidl/android/hardware/radio/network/CellInfoNr.aidl b/radio/aidl/android/hardware/radio/network/CellInfoNr.aidl
index 61591a9..f462e42 100644
--- a/radio/aidl/android/hardware/radio/network/CellInfoNr.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellInfoNr.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellInfoNr {
CellIdentityNr cellIdentityNr;
NrSignalStrength signalStrengthNr;
diff --git a/radio/aidl/android/hardware/radio/network/CellInfoRatSpecificInfo.aidl b/radio/aidl/android/hardware/radio/network/CellInfoRatSpecificInfo.aidl
index eebed9e..5cf8700 100644
--- a/radio/aidl/android/hardware/radio/network/CellInfoRatSpecificInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellInfoRatSpecificInfo.aidl
@@ -26,6 +26,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union CellInfoRatSpecificInfo {
/**
* 3gpp CellInfo types.
diff --git a/radio/aidl/android/hardware/radio/network/CellInfoTdscdma.aidl b/radio/aidl/android/hardware/radio/network/CellInfoTdscdma.aidl
index ff0fff3..88249fb 100644
--- a/radio/aidl/android/hardware/radio/network/CellInfoTdscdma.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellInfoTdscdma.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellInfoTdscdma {
CellIdentityTdscdma cellIdentityTdscdma;
TdscdmaSignalStrength signalStrengthTdscdma;
diff --git a/radio/aidl/android/hardware/radio/network/CellInfoWcdma.aidl b/radio/aidl/android/hardware/radio/network/CellInfoWcdma.aidl
index c38e306..1a57eab 100644
--- a/radio/aidl/android/hardware/radio/network/CellInfoWcdma.aidl
+++ b/radio/aidl/android/hardware/radio/network/CellInfoWcdma.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CellInfoWcdma {
CellIdentityWcdma cellIdentityWcdma;
WcdmaSignalStrength signalStrengthWcdma;
diff --git a/radio/aidl/android/hardware/radio/network/ClosedSubscriberGroupInfo.aidl b/radio/aidl/android/hardware/radio/network/ClosedSubscriberGroupInfo.aidl
index d61c1dc..8772bdc 100644
--- a/radio/aidl/android/hardware/radio/network/ClosedSubscriberGroupInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/ClosedSubscriberGroupInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ClosedSubscriberGroupInfo {
/**
* Indicates whether the cell is restricted to only CSG members. A cell not broadcasting the
diff --git a/radio/aidl/android/hardware/radio/network/EmergencyNetworkScanTrigger.aidl b/radio/aidl/android/hardware/radio/network/EmergencyNetworkScanTrigger.aidl
index 572d1e2..d936969 100644
--- a/radio/aidl/android/hardware/radio/network/EmergencyNetworkScanTrigger.aidl
+++ b/radio/aidl/android/hardware/radio/network/EmergencyNetworkScanTrigger.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable EmergencyNetworkScanTrigger {
/**
* Access network to be prioritized during emergency scan. The 1st entry has the highest
diff --git a/radio/aidl/android/hardware/radio/network/EmergencyRegResult.aidl b/radio/aidl/android/hardware/radio/network/EmergencyRegResult.aidl
index 7fc4d26..5a3483a 100644
--- a/radio/aidl/android/hardware/radio/network/EmergencyRegResult.aidl
+++ b/radio/aidl/android/hardware/radio/network/EmergencyRegResult.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable EmergencyRegResult {
/**
* Indicates the cellular access network of the current emergency capable system.
diff --git a/radio/aidl/android/hardware/radio/network/EutranRegistrationInfo.aidl b/radio/aidl/android/hardware/radio/network/EutranRegistrationInfo.aidl
index 15fabf3..8a74ead 100644
--- a/radio/aidl/android/hardware/radio/network/EutranRegistrationInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/EutranRegistrationInfo.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable EutranRegistrationInfo {
enum AttachResultType {
/** Default value. */
diff --git a/radio/aidl/android/hardware/radio/network/EvdoSignalStrength.aidl b/radio/aidl/android/hardware/radio/network/EvdoSignalStrength.aidl
index e89eb88..326a042 100644
--- a/radio/aidl/android/hardware/radio/network/EvdoSignalStrength.aidl
+++ b/radio/aidl/android/hardware/radio/network/EvdoSignalStrength.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable EvdoSignalStrength {
/**
* This value is the actual RSSI value multiplied by -1. Example: If the actual RSSI is -75,
diff --git a/radio/aidl/android/hardware/radio/network/GsmSignalStrength.aidl b/radio/aidl/android/hardware/radio/network/GsmSignalStrength.aidl
index 4a99646..7446dc8 100644
--- a/radio/aidl/android/hardware/radio/network/GsmSignalStrength.aidl
+++ b/radio/aidl/android/hardware/radio/network/GsmSignalStrength.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable GsmSignalStrength {
/**
* Valid values are (0-61, 99) as defined in TS 27.007 8.69; RadioConst:VALUE_UNAVAILABLE means
diff --git a/radio/aidl/android/hardware/radio/network/LceDataInfo.aidl b/radio/aidl/android/hardware/radio/network/LceDataInfo.aidl
index c855b18..359f3b5 100644
--- a/radio/aidl/android/hardware/radio/network/LceDataInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/LceDataInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable LceDataInfo {
/**
* Last-hop cellular capacity: kilobits/second.
diff --git a/radio/aidl/android/hardware/radio/network/LinkCapacityEstimate.aidl b/radio/aidl/android/hardware/radio/network/LinkCapacityEstimate.aidl
index 795237b..a4ae13a 100644
--- a/radio/aidl/android/hardware/radio/network/LinkCapacityEstimate.aidl
+++ b/radio/aidl/android/hardware/radio/network/LinkCapacityEstimate.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable LinkCapacityEstimate {
/**
* Estimated downlink capacity in kbps. In case of a dual connected network, this includes
diff --git a/radio/aidl/android/hardware/radio/network/LteSignalStrength.aidl b/radio/aidl/android/hardware/radio/network/LteSignalStrength.aidl
index 785db0b..3e6a3df 100644
--- a/radio/aidl/android/hardware/radio/network/LteSignalStrength.aidl
+++ b/radio/aidl/android/hardware/radio/network/LteSignalStrength.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable LteSignalStrength {
/**
* Valid values are (0-31, 99) as defined in TS 27.007 8.5;
diff --git a/radio/aidl/android/hardware/radio/network/LteVopsInfo.aidl b/radio/aidl/android/hardware/radio/network/LteVopsInfo.aidl
index c2aa3b5..73cf389 100644
--- a/radio/aidl/android/hardware/radio/network/LteVopsInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/LteVopsInfo.aidl
@@ -23,6 +23,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable LteVopsInfo {
/**
* This indicates if the camped network supports VoLTE services. This information is received from
diff --git a/radio/aidl/android/hardware/radio/network/NrIndicators.aidl b/radio/aidl/android/hardware/radio/network/NrIndicators.aidl
index 214272c..888874f 100644
--- a/radio/aidl/android/hardware/radio/network/NrIndicators.aidl
+++ b/radio/aidl/android/hardware/radio/network/NrIndicators.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable NrIndicators {
/**
* Indicates that if E-UTRA-NR Dual Connectivity (EN-DC) is supported by the primary serving
diff --git a/radio/aidl/android/hardware/radio/network/NrSignalStrength.aidl b/radio/aidl/android/hardware/radio/network/NrSignalStrength.aidl
index a0db2d5..7c28380 100644
--- a/radio/aidl/android/hardware/radio/network/NrSignalStrength.aidl
+++ b/radio/aidl/android/hardware/radio/network/NrSignalStrength.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable NrSignalStrength {
/**
* SS reference signal received power, multiplied by -1.
diff --git a/radio/aidl/android/hardware/radio/network/NrVopsInfo.aidl b/radio/aidl/android/hardware/radio/network/NrVopsInfo.aidl
index 6fe1d27..4e6ace2 100644
--- a/radio/aidl/android/hardware/radio/network/NrVopsInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/NrVopsInfo.aidl
@@ -24,6 +24,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable NrVopsInfo {
/**
* Emergency services not supported
diff --git a/radio/aidl/android/hardware/radio/network/OperatorInfo.aidl b/radio/aidl/android/hardware/radio/network/OperatorInfo.aidl
index 36dbadf..9a1c43d 100644
--- a/radio/aidl/android/hardware/radio/network/OperatorInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/OperatorInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable OperatorInfo {
const int STATUS_UNKNOWN = 0;
const int STATUS_AVAILABLE = 1;
diff --git a/radio/aidl/android/hardware/radio/network/PhysicalChannelConfig.aidl b/radio/aidl/android/hardware/radio/network/PhysicalChannelConfig.aidl
index b648ef8..84e6d41 100644
--- a/radio/aidl/android/hardware/radio/network/PhysicalChannelConfig.aidl
+++ b/radio/aidl/android/hardware/radio/network/PhysicalChannelConfig.aidl
@@ -23,6 +23,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable PhysicalChannelConfig {
/**
* Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING
diff --git a/radio/aidl/android/hardware/radio/network/PhysicalChannelConfigBand.aidl b/radio/aidl/android/hardware/radio/network/PhysicalChannelConfigBand.aidl
index aa0e9b2..cea2b11 100644
--- a/radio/aidl/android/hardware/radio/network/PhysicalChannelConfigBand.aidl
+++ b/radio/aidl/android/hardware/radio/network/PhysicalChannelConfigBand.aidl
@@ -24,6 +24,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union PhysicalChannelConfigBand {
boolean noinit;
/**
diff --git a/radio/aidl/android/hardware/radio/network/RadioAccessSpecifier.aidl b/radio/aidl/android/hardware/radio/network/RadioAccessSpecifier.aidl
index 8bb4fe0..ee7178f 100644
--- a/radio/aidl/android/hardware/radio/network/RadioAccessSpecifier.aidl
+++ b/radio/aidl/android/hardware/radio/network/RadioAccessSpecifier.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RadioAccessSpecifier {
/**
* The type of network to scan.
diff --git a/radio/aidl/android/hardware/radio/network/RadioAccessSpecifierBands.aidl b/radio/aidl/android/hardware/radio/network/RadioAccessSpecifierBands.aidl
index 4bf694a..9402985 100644
--- a/radio/aidl/android/hardware/radio/network/RadioAccessSpecifierBands.aidl
+++ b/radio/aidl/android/hardware/radio/network/RadioAccessSpecifierBands.aidl
@@ -24,6 +24,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
union RadioAccessSpecifierBands {
boolean noinit;
/**
diff --git a/radio/aidl/android/hardware/radio/network/RegStateResult.aidl b/radio/aidl/android/hardware/radio/network/RegStateResult.aidl
index a4cb647..18a2530 100644
--- a/radio/aidl/android/hardware/radio/network/RegStateResult.aidl
+++ b/radio/aidl/android/hardware/radio/network/RegStateResult.aidl
@@ -25,6 +25,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable RegStateResult {
/**
* Registration state. If the RAT is indicated as a GERAN or UTRAN technology, this
diff --git a/radio/aidl/android/hardware/radio/network/SignalStrength.aidl b/radio/aidl/android/hardware/radio/network/SignalStrength.aidl
index 4e3bcf0..9301ef3 100644
--- a/radio/aidl/android/hardware/radio/network/SignalStrength.aidl
+++ b/radio/aidl/android/hardware/radio/network/SignalStrength.aidl
@@ -27,6 +27,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SignalStrength {
/**
* If GSM measurements are provided, this structure must contain valid measurements; otherwise
diff --git a/radio/aidl/android/hardware/radio/network/SuppSvcNotification.aidl b/radio/aidl/android/hardware/radio/network/SuppSvcNotification.aidl
index 3b8c8b2..f70c6f1 100644
--- a/radio/aidl/android/hardware/radio/network/SuppSvcNotification.aidl
+++ b/radio/aidl/android/hardware/radio/network/SuppSvcNotification.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SuppSvcNotification {
/**
* Notification type
diff --git a/radio/aidl/android/hardware/radio/network/TdscdmaSignalStrength.aidl b/radio/aidl/android/hardware/radio/network/TdscdmaSignalStrength.aidl
index 87c6baa..66780a8 100644
--- a/radio/aidl/android/hardware/radio/network/TdscdmaSignalStrength.aidl
+++ b/radio/aidl/android/hardware/radio/network/TdscdmaSignalStrength.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable TdscdmaSignalStrength {
/**
* UTRA carrier RSSI as defined in TS 25.225 5.1.4. Valid values are (0-31, 99) as defined in
diff --git a/radio/aidl/android/hardware/radio/network/WcdmaSignalStrength.aidl b/radio/aidl/android/hardware/radio/network/WcdmaSignalStrength.aidl
index 8bc7fb8..7086cb5 100644
--- a/radio/aidl/android/hardware/radio/network/WcdmaSignalStrength.aidl
+++ b/radio/aidl/android/hardware/radio/network/WcdmaSignalStrength.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable WcdmaSignalStrength {
/**
* Valid values are (0-31, 99) as defined in TS 27.007 8.5; RadioConst:VALUE_UNAVAILABLE means
diff --git a/radio/aidl/android/hardware/radio/sim/AppStatus.aidl b/radio/aidl/android/hardware/radio/sim/AppStatus.aidl
index 602c8c5..235737f 100644
--- a/radio/aidl/android/hardware/radio/sim/AppStatus.aidl
+++ b/radio/aidl/android/hardware/radio/sim/AppStatus.aidl
@@ -23,6 +23,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable AppStatus {
const int APP_STATE_UNKNOWN = 0;
const int APP_STATE_DETECTED = 1;
diff --git a/radio/aidl/android/hardware/radio/sim/CardStatus.aidl b/radio/aidl/android/hardware/radio/sim/CardStatus.aidl
index 0deb70d..9158258 100644
--- a/radio/aidl/android/hardware/radio/sim/CardStatus.aidl
+++ b/radio/aidl/android/hardware/radio/sim/CardStatus.aidl
@@ -24,6 +24,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CardStatus {
/*
* Card is physically absent from the device. (Some old modems use STATE_ABSENT when the SIM
diff --git a/radio/aidl/android/hardware/radio/sim/Carrier.aidl b/radio/aidl/android/hardware/radio/sim/Carrier.aidl
index 8b27088..09b08ac 100644
--- a/radio/aidl/android/hardware/radio/sim/Carrier.aidl
+++ b/radio/aidl/android/hardware/radio/sim/Carrier.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable Carrier {
/**
* Apply to all carrier with the same mcc/mnc
diff --git a/radio/aidl/android/hardware/radio/sim/CarrierInfo.aidl b/radio/aidl/android/hardware/radio/sim/CarrierInfo.aidl
index 74fe31b..90c900e 100644
--- a/radio/aidl/android/hardware/radio/sim/CarrierInfo.aidl
+++ b/radio/aidl/android/hardware/radio/sim/CarrierInfo.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CarrierInfo {
/**
* MCC (Mobile Country Code) of Carrier. Wild char is either '*' or '?'.
@@ -34,37 +35,30 @@
/**
* Service Provider Name(SPN) of the SIM card of the Carrier.
*/
- @nullable
- String spn;
+ @nullable String spn;
/**
* GID1 value of the SIM card of the Carrier.
*/
- @nullable
- String gid1;
+ @nullable String gid1;
/**
* GID2 value of the SIM card of the Carrier.
*/
- @nullable
- String gid2;
+ @nullable String gid2;
/**
* IMSI (International Mobile Subscriber Identity) prefix. Wild char is '*'.
*/
- @nullable
- String imsiPrefix;
+ @nullable String imsiPrefix;
/**
* Equivalent HPLMN of the SIM card of the Carrier.
*/
- @nullable
- List<Plmn> ehplmn;
+ @nullable List<Plmn> ehplmn;
/**
* ICCID (Integrated Circuit Card Identification) of the SIM card.
*/
- @nullable
- String iccid;
+ @nullable String iccid;
/**
* IMPI (IMS Private Identity) of the SIM card of the Carrier.
*/
- @nullable
- String impi;
-}
\ No newline at end of file
+ @nullable String impi;
+}
diff --git a/radio/aidl/android/hardware/radio/sim/CarrierRestrictions.aidl b/radio/aidl/android/hardware/radio/sim/CarrierRestrictions.aidl
index 69c618f..fd5c418 100644
--- a/radio/aidl/android/hardware/radio/sim/CarrierRestrictions.aidl
+++ b/radio/aidl/android/hardware/radio/sim/CarrierRestrictions.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CarrierRestrictions {
@VintfStability
@Backing(type="int")
diff --git a/radio/aidl/android/hardware/radio/sim/IccIo.aidl b/radio/aidl/android/hardware/radio/sim/IccIo.aidl
index 0877b7a..705d7bb 100644
--- a/radio/aidl/android/hardware/radio/sim/IccIo.aidl
+++ b/radio/aidl/android/hardware/radio/sim/IccIo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable IccIo {
/**
* One of the commands listed for TS 27.007 +CRSM
diff --git a/radio/aidl/android/hardware/radio/sim/IccIoResult.aidl b/radio/aidl/android/hardware/radio/sim/IccIoResult.aidl
index ac89698..8a676bd 100644
--- a/radio/aidl/android/hardware/radio/sim/IccIoResult.aidl
+++ b/radio/aidl/android/hardware/radio/sim/IccIoResult.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable IccIoResult {
int sw1;
int sw2;
diff --git a/radio/aidl/android/hardware/radio/sim/ImsiEncryptionInfo.aidl b/radio/aidl/android/hardware/radio/sim/ImsiEncryptionInfo.aidl
index b31b081..9a34985 100644
--- a/radio/aidl/android/hardware/radio/sim/ImsiEncryptionInfo.aidl
+++ b/radio/aidl/android/hardware/radio/sim/ImsiEncryptionInfo.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable ImsiEncryptionInfo {
/**
* Key type to be used for ePDG
diff --git a/radio/aidl/android/hardware/radio/sim/PhonebookCapacity.aidl b/radio/aidl/android/hardware/radio/sim/PhonebookCapacity.aidl
index 2212fda..aee9d8c 100644
--- a/radio/aidl/android/hardware/radio/sim/PhonebookCapacity.aidl
+++ b/radio/aidl/android/hardware/radio/sim/PhonebookCapacity.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable PhonebookCapacity {
/**
* Maximum number of ADN records possible in the SIM phonebook. Needs to be non-negative.
diff --git a/radio/aidl/android/hardware/radio/sim/PhonebookRecordInfo.aidl b/radio/aidl/android/hardware/radio/sim/PhonebookRecordInfo.aidl
index 1653c31..398076e 100644
--- a/radio/aidl/android/hardware/radio/sim/PhonebookRecordInfo.aidl
+++ b/radio/aidl/android/hardware/radio/sim/PhonebookRecordInfo.aidl
@@ -23,6 +23,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable PhonebookRecordInfo {
/**
* Record index. 0 is used to insert a record
diff --git a/radio/aidl/android/hardware/radio/sim/Plmn.aidl b/radio/aidl/android/hardware/radio/sim/Plmn.aidl
index fd82692..4b236f9 100644
--- a/radio/aidl/android/hardware/radio/sim/Plmn.aidl
+++ b/radio/aidl/android/hardware/radio/sim/Plmn.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable Plmn {
/**
* MCC (Mobile Country Code) of the PLMN
@@ -28,4 +29,4 @@
* MNC (Mobile Network Code) of the PLMN
*/
String mnc;
-}
\ No newline at end of file
+}
diff --git a/radio/aidl/android/hardware/radio/sim/SelectUiccSub.aidl b/radio/aidl/android/hardware/radio/sim/SelectUiccSub.aidl
index 70a2191..3a1867b 100644
--- a/radio/aidl/android/hardware/radio/sim/SelectUiccSub.aidl
+++ b/radio/aidl/android/hardware/radio/sim/SelectUiccSub.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SelectUiccSub {
const int SUBSCRIPTION_TYPE_1 = 0;
const int SUBSCRIPTION_TYPE_2 = 1;
diff --git a/radio/aidl/android/hardware/radio/sim/SessionInfo.aidl b/radio/aidl/android/hardware/radio/sim/SessionInfo.aidl
index 585118a..4cefeb4 100644
--- a/radio/aidl/android/hardware/radio/sim/SessionInfo.aidl
+++ b/radio/aidl/android/hardware/radio/sim/SessionInfo.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SessionInfo {
/**
* Session id of the logical channel from TS 27.007 (+CCHC).
diff --git a/radio/aidl/android/hardware/radio/sim/SimApdu.aidl b/radio/aidl/android/hardware/radio/sim/SimApdu.aidl
index d0e3c39..05182db 100644
--- a/radio/aidl/android/hardware/radio/sim/SimApdu.aidl
+++ b/radio/aidl/android/hardware/radio/sim/SimApdu.aidl
@@ -19,6 +19,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SimApdu {
/**
* "sessionid" from TS 27.007 +CGLA command. Must be ignored for +CSIM command.
diff --git a/radio/aidl/android/hardware/radio/voice/Call.aidl b/radio/aidl/android/hardware/radio/voice/Call.aidl
index 5f62faa..b200d07 100644
--- a/radio/aidl/android/hardware/radio/voice/Call.aidl
+++ b/radio/aidl/android/hardware/radio/voice/Call.aidl
@@ -22,6 +22,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable Call {
const int PRESENTATION_ALLOWED = 0;
const int PRESENTATION_RESTRICTED = 1;
diff --git a/radio/aidl/android/hardware/radio/voice/CallForwardInfo.aidl b/radio/aidl/android/hardware/radio/voice/CallForwardInfo.aidl
index 9b4ecd9..c7c8fa8 100644
--- a/radio/aidl/android/hardware/radio/voice/CallForwardInfo.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CallForwardInfo.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CallForwardInfo {
const int STATUS_DISABLE = 0;
const int STATUS_ENABLE = 1;
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaCallWaiting.aidl b/radio/aidl/android/hardware/radio/voice/CdmaCallWaiting.aidl
index c77f3ec..bcf6159 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaCallWaiting.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaCallWaiting.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaCallWaiting {
/** @deprecated Legacy CDMA is unsupported. */
const int NUMBER_PLAN_UNKNOWN = 0;
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaDisplayInfoRecord.aidl b/radio/aidl/android/hardware/radio/voice/CdmaDisplayInfoRecord.aidl
index bba6e4d..4a3536e 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaDisplayInfoRecord.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaDisplayInfoRecord.aidl
@@ -27,6 +27,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaDisplayInfoRecord {
/** @deprecated Legacy CDMA is unsupported. */
const int CDMA_ALPHA_INFO_BUFFER_LENGTH = 64;
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaInformationRecord.aidl b/radio/aidl/android/hardware/radio/voice/CdmaInformationRecord.aidl
index 7232eba..076438d 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaInformationRecord.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaInformationRecord.aidl
@@ -31,6 +31,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaInformationRecord {
/** @deprecated Legacy CDMA is unsupported. */
const int CDMA_MAX_NUMBER_OF_INFO_RECS = 10;
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaLineControlInfoRecord.aidl b/radio/aidl/android/hardware/radio/voice/CdmaLineControlInfoRecord.aidl
index 9cf0103..0e7585c 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaLineControlInfoRecord.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaLineControlInfoRecord.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaLineControlInfoRecord {
/** @deprecated Legacy CDMA is unsupported. */
byte lineCtrlPolarityIncluded;
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaNumberInfoRecord.aidl b/radio/aidl/android/hardware/radio/voice/CdmaNumberInfoRecord.aidl
index bc00acb..f59123d 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaNumberInfoRecord.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaNumberInfoRecord.aidl
@@ -25,6 +25,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaNumberInfoRecord {
/** @deprecated Legacy CDMA is unsupported. */
const int CDMA_NUMBER_INFO_BUFFER_LENGTH = 81;
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaRedirectingNumberInfoRecord.aidl b/radio/aidl/android/hardware/radio/voice/CdmaRedirectingNumberInfoRecord.aidl
index 514b8e1..c12601e 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaRedirectingNumberInfoRecord.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaRedirectingNumberInfoRecord.aidl
@@ -22,6 +22,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaRedirectingNumberInfoRecord {
/**
* Redirecting Number Information Record as defined in C.S0005 section 3.7.5.11
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaSignalInfoRecord.aidl b/radio/aidl/android/hardware/radio/voice/CdmaSignalInfoRecord.aidl
index 2ada10b..5752620 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaSignalInfoRecord.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaSignalInfoRecord.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaSignalInfoRecord {
/**
* True if signal information record is present
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaT53AudioControlInfoRecord.aidl b/radio/aidl/android/hardware/radio/voice/CdmaT53AudioControlInfoRecord.aidl
index 68b19b8..a6860ee 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaT53AudioControlInfoRecord.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaT53AudioControlInfoRecord.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaT53AudioControlInfoRecord {
/** @deprecated Legacy CDMA is unsupported. */
byte upLink;
diff --git a/radio/aidl/android/hardware/radio/voice/CdmaT53ClirInfoRecord.aidl b/radio/aidl/android/hardware/radio/voice/CdmaT53ClirInfoRecord.aidl
index 6a1b992..956a85c 100644
--- a/radio/aidl/android/hardware/radio/voice/CdmaT53ClirInfoRecord.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CdmaT53ClirInfoRecord.aidl
@@ -22,6 +22,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CdmaT53ClirInfoRecord {
/** @deprecated Legacy CDMA is unsupported. */
byte cause;
diff --git a/radio/aidl/android/hardware/radio/voice/CfData.aidl b/radio/aidl/android/hardware/radio/voice/CfData.aidl
index 84304f4..aef3916 100644
--- a/radio/aidl/android/hardware/radio/voice/CfData.aidl
+++ b/radio/aidl/android/hardware/radio/voice/CfData.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable CfData {
const int NUM_SERVICE_CLASSES = 7;
/**
diff --git a/radio/aidl/android/hardware/radio/voice/Dial.aidl b/radio/aidl/android/hardware/radio/voice/Dial.aidl
index a874181..90a42a0 100644
--- a/radio/aidl/android/hardware/radio/voice/Dial.aidl
+++ b/radio/aidl/android/hardware/radio/voice/Dial.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable Dial {
/**
* Use subscription default value
diff --git a/radio/aidl/android/hardware/radio/voice/EmergencyNumber.aidl b/radio/aidl/android/hardware/radio/voice/EmergencyNumber.aidl
index 30f29a9..4bb0077 100644
--- a/radio/aidl/android/hardware/radio/voice/EmergencyNumber.aidl
+++ b/radio/aidl/android/hardware/radio/voice/EmergencyNumber.aidl
@@ -41,6 +41,7 @@
*/
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable EmergencyNumber {
/**
* Indicates the number is from the network signal.
diff --git a/radio/aidl/android/hardware/radio/voice/LastCallFailCauseInfo.aidl b/radio/aidl/android/hardware/radio/voice/LastCallFailCauseInfo.aidl
index 6af38bb..d8946cb 100644
--- a/radio/aidl/android/hardware/radio/voice/LastCallFailCauseInfo.aidl
+++ b/radio/aidl/android/hardware/radio/voice/LastCallFailCauseInfo.aidl
@@ -21,6 +21,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable LastCallFailCauseInfo {
LastCallFailCause causeCode = LastCallFailCause.INVALID;
String vendorCause;
diff --git a/radio/aidl/android/hardware/radio/voice/SsInfoData.aidl b/radio/aidl/android/hardware/radio/voice/SsInfoData.aidl
index 9c9dcff..9370013 100644
--- a/radio/aidl/android/hardware/radio/voice/SsInfoData.aidl
+++ b/radio/aidl/android/hardware/radio/voice/SsInfoData.aidl
@@ -20,6 +20,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable SsInfoData {
const int SS_INFO_MAX = 4;
/**
diff --git a/radio/aidl/android/hardware/radio/voice/StkCcUnsolSsResult.aidl b/radio/aidl/android/hardware/radio/voice/StkCcUnsolSsResult.aidl
index 641994e..ea15477 100644
--- a/radio/aidl/android/hardware/radio/voice/StkCcUnsolSsResult.aidl
+++ b/radio/aidl/android/hardware/radio/voice/StkCcUnsolSsResult.aidl
@@ -23,6 +23,7 @@
/** @hide */
@VintfStability
@JavaDerive(toString=true)
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable StkCcUnsolSsResult {
const int REQUEST_TYPE_ACTIVATION = 0;
const int REQUEST_TYPE_DEACTIVATION = 1;
diff --git a/radio/aidl/android/hardware/radio/voice/UusInfo.aidl b/radio/aidl/android/hardware/radio/voice/UusInfo.aidl
index 3760ac6..ec7cd4e 100644
--- a/radio/aidl/android/hardware/radio/voice/UusInfo.aidl
+++ b/radio/aidl/android/hardware/radio/voice/UusInfo.aidl
@@ -23,6 +23,7 @@
@VintfStability
@JavaDerive(toString=true)
@SuppressWarnings(value={"redundant-name"})
+@RustDerive(Clone=true, Eq=true, PartialEq=true)
parcelable UusInfo {
/**
* User specified protocol
diff --git a/radio/aidl/compat/libradiocompat/Android.bp b/radio/aidl/compat/libradiocompat/Android.bp
index a3a8c20..04aed77 100644
--- a/radio/aidl/compat/libradiocompat/Android.bp
+++ b/radio/aidl/compat/libradiocompat/Android.bp
@@ -25,16 +25,16 @@
cc_defaults {
name: "android.hardware.radio-library.aidl_deps",
shared_libs: [
- "android.hardware.radio.config-V4-ndk",
- "android.hardware.radio.data-V4-ndk",
- "android.hardware.radio.ims-V3-ndk",
- "android.hardware.radio.ims.media-V3-ndk",
- "android.hardware.radio.messaging-V4-ndk",
- "android.hardware.radio.modem-V4-ndk",
- "android.hardware.radio.network-V4-ndk",
+ "android.hardware.radio.config-V5-ndk",
+ "android.hardware.radio.data-V5-ndk",
+ "android.hardware.radio.ims-V4-ndk",
+ "android.hardware.radio.ims.media-V4-ndk",
+ "android.hardware.radio.messaging-V5-ndk",
+ "android.hardware.radio.modem-V5-ndk",
+ "android.hardware.radio.network-V5-ndk",
"android.hardware.radio.sap-V1-ndk",
- "android.hardware.radio.sim-V4-ndk",
- "android.hardware.radio.voice-V4-ndk",
+ "android.hardware.radio.sim-V5-ndk",
+ "android.hardware.radio.voice-V5-ndk",
],
}
diff --git a/radio/aidl/vts/Android.bp b/radio/aidl/vts/Android.bp
index 6e8ce8b..bbe1333 100644
--- a/radio/aidl/vts/Android.bp
+++ b/radio/aidl/vts/Android.bp
@@ -77,17 +77,17 @@
"server_configurable_flags",
],
static_libs: [
- "android.hardware.radio-V4-ndk",
- "android.hardware.radio.config-V4-ndk",
- "android.hardware.radio.data-V4-ndk",
- "android.hardware.radio.ims-V3-ndk",
- "android.hardware.radio.ims.media-V3-ndk",
- "android.hardware.radio.messaging-V4-ndk",
- "android.hardware.radio.modem-V4-ndk",
- "android.hardware.radio.network-V4-ndk",
+ "android.hardware.radio-V5-ndk",
+ "android.hardware.radio.config-V5-ndk",
+ "android.hardware.radio.data-V5-ndk",
+ "android.hardware.radio.ims-V4-ndk",
+ "android.hardware.radio.ims.media-V4-ndk",
+ "android.hardware.radio.messaging-V5-ndk",
+ "android.hardware.radio.modem-V5-ndk",
+ "android.hardware.radio.network-V5-ndk",
"android.hardware.radio.sap-V1-ndk",
- "android.hardware.radio.sim-V4-ndk",
- "android.hardware.radio.voice-V4-ndk",
+ "android.hardware.radio.sim-V5-ndk",
+ "android.hardware.radio.voice-V5-ndk",
"telephony_flags_c_lib",
],
test_suites: [
diff --git a/radio/aidl/vts/radio_network_test.cpp b/radio/aidl/vts/radio_network_test.cpp
index 5c1955a..ff231db 100644
--- a/radio/aidl/vts/radio_network_test.cpp
+++ b/radio/aidl/vts/radio_network_test.cpp
@@ -1020,6 +1020,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error, {RadioError::SIM_ABSENT}));
@@ -1072,6 +1075,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_InvalidArgument, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
@@ -1138,6 +1144,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_InvalidInterval1, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
{RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
@@ -1172,6 +1181,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_InvalidInterval2, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
{RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
@@ -1206,6 +1218,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_InvalidMaxSearchTime1, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
{RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
@@ -1240,6 +1255,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_InvalidMaxSearchTime2, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
{RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
@@ -1274,6 +1292,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_InvalidPeriodicity1, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
{RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
@@ -1308,6 +1329,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_InvalidPeriodicity2, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
{RadioError::SIM_ABSENT, RadioError::INVALID_ARGUMENTS}));
@@ -1342,6 +1366,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_GoodRequest1, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
{RadioError::NONE, RadioError::SIM_ABSENT}));
@@ -1382,6 +1409,9 @@
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
ALOGI("startNetworkScan_GoodRequest2, rspInfo.error = %s\n",
toString(radioRsp_network->rspInfo.error).c_str());
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping startNetworkScan because it's not supported";
+ }
if (cardStatus.cardState == CardStatus::STATE_ABSENT) {
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error,
{RadioError::NONE, RadioError::SIM_ABSENT}));
@@ -1418,7 +1448,8 @@
radioRsp_network->rspInfo.error,
{RadioError::NONE, RadioError::RADIO_NOT_AVAILABLE, RadioError::INVALID_ARGUMENTS,
RadioError::INVALID_STATE, RadioError::NO_MEMORY, RadioError::INTERNAL_ERR,
- RadioError::SYSTEM_ERR, RadioError::CANCELLED, RadioError::MODEM_ERR}));
+ RadioError::SYSTEM_ERR, RadioError::CANCELLED, RadioError::MODEM_ERR,
+ RadioError::REQUEST_NOT_SUPPORTED}));
}
/*
@@ -1435,6 +1466,9 @@
EXPECT_EQ(std::cv_status::no_timeout, wait());
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_network->rspInfo.type);
EXPECT_EQ(serial, radioRsp_network->rspInfo.serial);
+ if (radioRsp_network->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping getBarringInfo because it's not supported";
+ }
ASSERT_TRUE(radioRsp_network->barringInfoList.size() > 0);
std::set<int> reportedServices;
diff --git a/radio/aidl/vts/radio_sim_test.cpp b/radio/aidl/vts/radio_sim_test.cpp
index 138424c..e7c7c65 100644
--- a/radio/aidl/vts/radio_sim_test.cpp
+++ b/radio/aidl/vts/radio_sim_test.cpp
@@ -87,7 +87,12 @@
EXPECT_EQ(serial, radioRsp_sim->rspInfo.serial);
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_sim->rspInfo.error,
{RadioError::NONE, RadioError::INVALID_ARGUMENTS,
- RadioError::RADIO_NOT_AVAILABLE, RadioError::SIM_ERR}));
+ RadioError::RADIO_NOT_AVAILABLE, RadioError::SIM_ERR,
+ RadioError::REQUEST_NOT_SUPPORTED}));
+
+ if (radioRsp_sim->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED) {
+ GTEST_SKIP() << "Skipping setSimCardPower because it's not supported";
+ }
// setSimCardPower does not return until the request is handled, and should not trigger
// CardStatus::STATE_ABSENT when turning off power
@@ -667,7 +672,8 @@
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_sim->rspInfo.type);
ASSERT_TRUE(CheckAnyOfErrors(
radioRsp_sim->rspInfo.error,
- {RadioError::PASSWORD_INCORRECT, RadioError::INVALID_SIM_STATE}));
+ {RadioError::PASSWORD_INCORRECT, RadioError::INVALID_SIM_STATE,
+ RadioError::REQUEST_NOT_SUPPORTED}));
}
}
}
@@ -728,7 +734,8 @@
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_sim->rspInfo.type);
ASSERT_TRUE(CheckAnyOfErrors(
radioRsp_sim->rspInfo.error,
- {RadioError::PASSWORD_INCORRECT, RadioError::INVALID_SIM_STATE}));
+ {RadioError::PASSWORD_INCORRECT, RadioError::INVALID_SIM_STATE,
+ RadioError::REQUEST_NOT_SUPPORTED}));
}
}
}
diff --git a/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl b/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl
index 1908d05..0ae4b96 100644
--- a/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl
+++ b/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl
@@ -550,8 +550,14 @@
void deleteKey(in byte[] keyBlob);
/**
- * Deletes all keys in the hardware keystore. Used when keystore is reset completely. After
- * this function is called all keys created previously must be rendered permanently unusable.
+ * Deletes all keys in the hardware keystore. Used when keystore is reset completely.
+ *
+ * For StrongBox KeyMint: After this function is called all keys created previously must be
+ * rendered permanently unusable.
+ *
+ * For TEE KeyMint: After this function is called all keys with Tag::ROLLBACK_RESISTANCE in
+ * their hardware-enforced authorization lists must be rendered permanently unusable. Keys
+ * without Tag::ROLLBACK_RESISTANCE may or may not be rendered unusable.
*/
void deleteAllKeys();
diff --git a/security/see/hwcrypto/aidl/vts/functional/Android.bp b/security/see/hwcrypto/aidl/vts/functional/Android.bp
index beb8976..52c7feb 100644
--- a/security/see/hwcrypto/aidl/vts/functional/Android.bp
+++ b/security/see/hwcrypto/aidl/vts/functional/Android.bp
@@ -29,11 +29,6 @@
"librpcbinder_rs",
"librustutils",
],
- arch: {
- x86_64: {
- enabled: true,
- },
- },
}
rust_library {
@@ -62,22 +57,3 @@
"libclap",
],
}
-
-rust_test {
- name: "VtsAidlHwCryptoConnTest",
- srcs: ["connection_test.rs"],
- require_root: true,
- defaults: [
- "hw_crypto_hal_aidl_rust_defaults",
- ],
- rustlibs: [
- "libhwcryptohal_vts_test",
- ],
- data: [
- ":trusty_test_vm_elf",
- ":trusty_test_vm_config",
- ":trusty_vm_launcher_sh",
- ":trusty_wait_ready_sh",
- ":wait_hw_crypto",
- ],
-}
diff --git a/sensors/aidl/android/hardware/sensors/SensorType.aidl b/sensors/aidl/android/hardware/sensors/SensorType.aidl
index adaf8e6..bc1b4b2 100644
--- a/sensors/aidl/android/hardware/sensors/SensorType.aidl
+++ b/sensors/aidl/android/hardware/sensors/SensorType.aidl
@@ -275,8 +275,9 @@
* than every period_ns passed to setDelay() or to batch().
* See the definition of the on-change reporting mode for more information.
*
- * SensorInfo.requiredPermission must be set to
- * SENSOR_PERMISSION_BODY_SENSORS.
+ * The framework will override the SensorInfo.requiredPermission to either
+ * SENSOR_PERMISSION_BODY_SENSORS or SENSOR_PERMISSION_READ_HEART_RATE
+ * depending on the platform SDK version in order to ensure compatibility.
*
* Both wake-up and non wake-up versions are useful.
*/