Merge "Add CarHiddenApiTest and CarExtendedApiTest to TEST_MAPPING" into main
diff --git a/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp b/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
index 0d4c74e..95bcaf0 100644
--- a/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
+++ b/audio/aidl/vts/VtsHalDynamicsProcessingTest.cpp
@@ -1083,7 +1083,12 @@
{2, 6000},
{3, 10000},
{4, 16000},
- }, // 5 bands
+ {5, 20000},
+ {6, 26000},
+ {7, 30000},
+ {8, 36000},
+ {9, 40000},
+ }, // 10 bands
{
{0, 800},
{3, 15000},
diff --git a/audio/effect/all-versions/default/Android.bp b/audio/effect/all-versions/default/Android.bp
index cea085c..095bb86 100644
--- a/audio/effect/all-versions/default/Android.bp
+++ b/audio/effect/all-versions/default/Android.bp
@@ -52,6 +52,12 @@
"libmedia_headers",
"libmediautils_headers",
],
+
+ cflags: [
+ "-Wall",
+ "-Wthread-safety",
+ "-Werror",
+ ],
}
cc_library_shared {
diff --git a/audio/effect/all-versions/default/Effect.cpp b/audio/effect/all-versions/default/Effect.cpp
index 4a9e144..9896653 100644
--- a/audio/effect/all-versions/default/Effect.cpp
+++ b/audio/effect/all-versions/default/Effect.cpp
@@ -321,8 +321,8 @@
status_t status = mProcessThread->join();
ALOGE_IF(status, "processing thread exit error: %s", strerror(-status));
}
- if (mEfGroup) {
- status_t status = EventFlag::deleteEventFlag(&mEfGroup);
+ if (EventFlag* evFlag = mEfGroup.load(std::memory_order_acquire)) {
+ status_t status = EventFlag::deleteEventFlag(&evFlag);
ALOGE_IF(status, "processing MQ event flag deletion error: %s", strerror(-status));
}
mInBuffer.clear();
@@ -437,6 +437,7 @@
Result Effect::analyzeStatus(const char* funcName, const char* subFuncName,
const char* contextDescription, status_t status) {
if (status != OK) {
+ std::lock_guard<std::mutex> lock(mLock);
ALOGW("Effect %p %s %s %s: %s", mHandle, funcName, subFuncName, contextDescription,
strerror(-status));
}
@@ -470,11 +471,14 @@
Return<void> Effect::getConfigImpl(int commandCode, const char* commandName,
GetConfigCallback _hidl_cb) {
- RETURN_RESULT_IF_EFFECT_CLOSED(EffectConfig());
uint32_t halResultSize = sizeof(effect_config_t);
effect_config_t halConfig{};
- status_t status =
- (*mHandle)->command(mHandle, commandCode, 0, NULL, &halResultSize, &halConfig);
+ status_t status = OK;
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_RESULT_IF_EFFECT_CLOSED(EffectConfig());
+ status = (*mHandle)->command(mHandle, commandCode, 0, NULL, &halResultSize, &halConfig);
+ }
EffectConfig config;
if (status == OK) {
status = EffectUtils::effectConfigFromHal(halConfig, mIsInput, &config);
@@ -542,7 +546,10 @@
}
Return<void> Effect::prepareForProcessing(prepareForProcessing_cb _hidl_cb) {
- RETURN_RESULT_IF_EFFECT_CLOSED(StatusMQ::Descriptor());
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_RESULT_IF_EFFECT_CLOSED(StatusMQ::Descriptor());
+ }
status_t status;
// Create message queue.
if (mStatusMQ) {
@@ -556,16 +563,21 @@
_hidl_cb(Result::INVALID_ARGUMENTS, StatusMQ::Descriptor());
return Void();
}
- status = EventFlag::createEventFlag(tempStatusMQ->getEventFlagWord(), &mEfGroup);
- if (status != OK || !mEfGroup) {
+ EventFlag* evFlag = nullptr;
+ status = EventFlag::createEventFlag(tempStatusMQ->getEventFlagWord(), &evFlag);
+ if (status != OK || !evFlag) {
ALOGE("failed creating event flag for status MQ: %s", strerror(-status));
_hidl_cb(Result::INVALID_ARGUMENTS, StatusMQ::Descriptor());
return Void();
}
+ mEfGroup.store(evFlag, std::memory_order_release);
- // Create and launch the thread.
- mProcessThread = new ProcessThread(&mStopProcessThread, mHandle, &mHalInBufferPtr,
- &mHalOutBufferPtr, tempStatusMQ.get(), mEfGroup, this);
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ // Create and launch the thread.
+ mProcessThread = new ProcessThread(&mStopProcessThread, mHandle, &mHalInBufferPtr,
+ &mHalOutBufferPtr, tempStatusMQ.get(), evFlag, this);
+ }
status = mProcessThread->run("effect", PRIORITY_URGENT_AUDIO);
if (status != OK) {
ALOGW("failed to start effect processing thread: %s", strerror(-status));
@@ -575,11 +587,15 @@
// For a spatializer effect, we perform scheduler adjustments to reduce glitches and power.
// We do it here instead of the ProcessThread::threadLoop to ensure that mHandle is valid.
- if (effect_descriptor_t halDescriptor{};
- (*mHandle)->get_descriptor(mHandle, &halDescriptor) == NO_ERROR &&
- memcmp(&halDescriptor.type, FX_IID_SPATIALIZER, sizeof(effect_uuid_t)) == 0) {
- const status_t status = scheduler::updateSpatializerPriority(mProcessThread->getTid());
- ALOGW_IF(status != OK, "Failed to update Spatializer priority");
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_RESULT_IF_EFFECT_CLOSED(StatusMQ::Descriptor());
+ if (effect_descriptor_t halDescriptor{};
+ (*mHandle)->get_descriptor(mHandle, &halDescriptor) == NO_ERROR &&
+ memcmp(&halDescriptor.type, FX_IID_SPATIALIZER, sizeof(effect_uuid_t)) == 0) {
+ const status_t status = scheduler::updateSpatializerPriority(mProcessThread->getTid());
+ ALOGW_IF(status != OK, "Failed to update Spatializer priority");
+ }
}
mStatusMQ = std::move(tempStatusMQ);
@@ -589,7 +605,10 @@
Return<Result> Effect::setProcessBuffers(const AudioBuffer& inBuffer,
const AudioBuffer& outBuffer) {
- RETURN_IF_EFFECT_CLOSED();
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_IF_EFFECT_CLOSED();
+ }
AudioBufferManager& manager = AudioBufferManager::getInstance();
sp<AudioBufferWrapper> tempInBuffer, tempOutBuffer;
if (!manager.wrap(inBuffer, &tempInBuffer)) {
@@ -614,8 +633,12 @@
}
Result Effect::sendCommand(int commandCode, const char* commandName, uint32_t size, void* data) {
- RETURN_IF_EFFECT_CLOSED();
- status_t status = (*mHandle)->command(mHandle, commandCode, size, data, 0, NULL);
+ status_t status = OK;
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_IF_EFFECT_CLOSED();
+ status = (*mHandle)->command(mHandle, commandCode, size, data, 0, NULL);
+ }
return analyzeCommandStatus(commandName, sContextCallToCommand, status);
}
@@ -626,9 +649,13 @@
Result Effect::sendCommandReturningData(int commandCode, const char* commandName, uint32_t size,
void* data, uint32_t* replySize, void* replyData) {
- RETURN_IF_EFFECT_CLOSED();
uint32_t expectedReplySize = *replySize;
- status_t status = (*mHandle)->command(mHandle, commandCode, size, data, replySize, replyData);
+ status_t status = OK;
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_IF_EFFECT_CLOSED();
+ status = (*mHandle)->command(mHandle, commandCode, size, data, replySize, replyData);
+ }
if (status == OK && *replySize != expectedReplySize) {
status = -ENODATA;
}
@@ -651,8 +678,12 @@
uint32_t size, void* data, uint32_t* replySize,
void* replyData, uint32_t minReplySize,
CommandSuccessCallback onSuccess) {
- RETURN_IF_EFFECT_CLOSED();
- status_t status = (*mHandle)->command(mHandle, commandCode, size, data, replySize, replyData);
+ status_t status = OK;
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_IF_EFFECT_CLOSED();
+ status = (*mHandle)->command(mHandle, commandCode, size, data, replySize, replyData);
+ }
Result retval;
if (status == OK && minReplySize >= sizeof(uint32_t) && *replySize >= minReplySize) {
uint32_t commandStatus = *reinterpret_cast<uint32_t*>(replyData);
@@ -860,10 +891,14 @@
}
Return<void> Effect::getDescriptor(getDescriptor_cb _hidl_cb) {
- RETURN_RESULT_IF_EFFECT_CLOSED(EffectDescriptor());
effect_descriptor_t halDescriptor;
memset(&halDescriptor, 0, sizeof(effect_descriptor_t));
- status_t status = (*mHandle)->get_descriptor(mHandle, &halDescriptor);
+ status_t status = OK;
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_RESULT_IF_EFFECT_CLOSED(EffectDescriptor());
+ status = (*mHandle)->get_descriptor(mHandle, &halDescriptor);
+ }
EffectDescriptor descriptor;
if (status == OK) {
status = EffectUtils::effectDescriptorFromHal(halDescriptor, &descriptor);
@@ -874,10 +909,6 @@
Return<void> Effect::command(uint32_t commandId, const hidl_vec<uint8_t>& data,
uint32_t resultMaxSize, command_cb _hidl_cb) {
- if (mHandle == kInvalidEffectHandle) {
- _hidl_cb(-ENODATA, hidl_vec<uint8_t>());
- return Void();
- }
uint32_t halDataSize;
std::unique_ptr<uint8_t[]> halData = hidlVecToHal(data, &halDataSize);
uint32_t halResultSize = resultMaxSize;
@@ -897,8 +928,15 @@
}
[[fallthrough]]; // allow 'gtid' overload (checked halDataSize and resultMaxSize).
default:
- status = (*mHandle)->command(mHandle, commandId, halDataSize, dataPtr, &halResultSize,
- resultPtr);
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ if (mHandle == kInvalidEffectHandle) {
+ _hidl_cb(-ENODATA, hidl_vec<uint8_t>());
+ return Void();
+ }
+ status = (*mHandle)->command(mHandle, commandId, halDataSize, dataPtr,
+ &halResultSize, resultPtr);
+ }
break;
}
hidl_vec<uint8_t> result;
@@ -967,11 +1005,17 @@
return {Result::INVALID_STATE, kInvalidEffectHandle};
}
mStopProcessThread.store(true, std::memory_order_release);
- if (mEfGroup) {
- mEfGroup->wake(static_cast<uint32_t>(MessageQueueFlagBits::REQUEST_QUIT));
+ EventFlag* evFlag = mEfGroup.load(std::memory_order_acquire);
+ if (evFlag) {
+ evFlag->wake(static_cast<uint32_t>(
+ MessageQueueFlagBits::REQUEST_QUIT));
}
- effect_handle_t handle = mHandle;
- mHandle = kInvalidEffectHandle;
+ effect_handle_t handle;
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ handle = mHandle;
+ mHandle = kInvalidEffectHandle;
+ }
#if MAJOR_VERSION <= 5
return {Result::OK, handle};
#elif MAJOR_VERSION >= 6
@@ -984,7 +1028,10 @@
}
Return<Result> Effect::close() {
- RETURN_IF_EFFECT_CLOSED();
+ {
+ std::lock_guard<std::mutex> lock(mLock);
+ RETURN_IF_EFFECT_CLOSED();
+ }
auto [result, _] = closeImpl();
return result;
}
diff --git a/audio/effect/all-versions/default/Effect.h b/audio/effect/all-versions/default/Effect.h
index 2bcecec..cc76784 100644
--- a/audio/effect/all-versions/default/Effect.h
+++ b/audio/effect/all-versions/default/Effect.h
@@ -25,6 +25,7 @@
#include <memory>
#include <tuple>
#include <vector>
+#include <mutex>
#include <fmq/EventFlag.h>
#include <fmq/MessageQueue.h>
@@ -194,13 +195,14 @@
static const char* sContextCallFunction;
const bool mIsInput;
- effect_handle_t mHandle;
+ std::mutex mLock;
+ effect_handle_t mHandle GUARDED_BY(mLock);
sp<AudioBufferWrapper> mInBuffer;
sp<AudioBufferWrapper> mOutBuffer;
std::atomic<audio_buffer_t*> mHalInBufferPtr;
std::atomic<audio_buffer_t*> mHalOutBufferPtr;
std::unique_ptr<StatusMQ> mStatusMQ;
- EventFlag* mEfGroup;
+ std::atomic<EventFlag*> mEfGroup;
std::atomic<bool> mStopProcessThread;
sp<Thread> mProcessThread;
diff --git a/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp b/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
index d4b0528..7f5e06d 100644
--- a/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
+++ b/automotive/vehicle/vts/src/VtsHalAutomotiveVehicle_TargetTest.cpp
@@ -96,6 +96,10 @@
static constexpr char ANNOTATION_SUPPORTED_VALUES_IN_CONFIG[] = "legacy_supported_values_in_config";
static constexpr char ANNOTATIONS_DATA_ENUM[] = "data_enum";
+inline VehiclePropertyType getPropertyType(int32_t propId) {
+ return static_cast<VehiclePropertyType>(propId & toInt(VehiclePropertyType::MASK));
+}
+
struct ServiceDescriptor {
std::string name;
bool isAidlService;
@@ -181,10 +185,12 @@
void testGetMinMaxSupportedValueForPropIdAreaId(int32_t propId,
const IHalAreaConfig& areaConfig,
bool minMaxValueRequired);
+ void testGetSupportedValuesListsForPropIdAreaId(int32_t propId,
+ const IHalAreaConfig& areaConfig,
+ bool supportedValuesRequired);
static bool isBooleanGlobalProp(int32_t property) {
- return (property & toInt(VehiclePropertyType::MASK)) ==
- toInt(VehiclePropertyType::BOOLEAN) &&
+ return getPropertyType(property) == VehiclePropertyType::BOOLEAN &&
(property & toInt(VehicleArea::MASK)) == toInt(VehicleArea::GLOBAL);
}
@@ -810,39 +816,36 @@
}
}
-void verifyRawPropValues(const RawPropValues& rawPropValues, int32_t propertyType) {
+void verifyRawPropValues(const RawPropValues& rawPropValues, VehiclePropertyType propertyType) {
switch (propertyType) {
- case toInt(VehiclePropertyType::INT32):
+ case VehiclePropertyType::INT32:
ASSERT_THAT(rawPropValues.int32Values, ::testing::SizeIs(1))
<< "int32Values field must contain exactly one element for INT32 type";
break;
- case toInt(VehiclePropertyType::FLOAT):
+ case VehiclePropertyType::FLOAT:
ASSERT_THAT(rawPropValues.floatValues, ::testing::SizeIs(1))
<< "floatValues field must contain exactly one element for FLOAT type";
break;
- case toInt(VehiclePropertyType::INT64):
+ case VehiclePropertyType::INT64:
ASSERT_THAT(rawPropValues.int64Values, ::testing::SizeIs(1))
<< "int64Values field must contain exactly one element for INT64 type";
break;
default:
- // This must not happen since we already checked this condition in
- // verifyPropertyConfigMinMaxValue
- FAIL() << "minSupportedValue or maxSupportedValue must only be specified for "
- "INT32, INT64 or FLOAT type property";
+ // We do not check for other types.
break;
}
}
void VtsHalAutomotiveTest::testGetMinMaxSupportedValueForPropIdAreaId(
int32_t propId, const IHalAreaConfig& areaConfig, bool minMaxValueRequired) {
- int areaId = areaConfig.getAreaId();
- int propertyType = propId & toInt(VehiclePropertyType::MASK);
+ int32_t areaId = areaConfig.getAreaId();
+ VehiclePropertyType propertyType = getPropertyType(propId);
std::optional<HasSupportedValueInfo> maybeHasSupportedValueInfo =
areaConfig.getHasSupportedValueInfo();
if (!maybeHasSupportedValueInfo.has_value()) {
return;
}
- if (!maybeHasSupportedValueInfo->hasMaxSupportedValue &&
+ if (!maybeHasSupportedValueInfo->hasMinSupportedValue &&
!maybeHasSupportedValueInfo->hasMaxSupportedValue) {
return;
}
@@ -859,8 +862,7 @@
const MinMaxSupportedValueResult& individualResult = (*result)[0];
if (minMaxValueRequired) {
ASSERT_EQ(individualResult.status, StatusCode::OK)
- << "getMinMaxSupportedValue must return okay status if min/max value is required "
- "for";
+ << "getMinMaxSupportedValue must return okay status if min/max value is required";
}
if (individualResult.status != StatusCode::OK) {
return;
@@ -895,19 +897,19 @@
int64_t minInt64Value;
int64_t maxInt64Value;
switch (propertyType) {
- case toInt(VehiclePropertyType::INT32):
+ case VehiclePropertyType::INT32:
minInt32Value = (individualResult.minSupportedValue)->int32Values[0];
maxInt32Value = (individualResult.maxSupportedValue)->int32Values[0];
ASSERT_LE(minInt32Value, maxInt32Value)
<< "minSupportedValue must be less or equal to maxSupportedValue";
break;
- case toInt(VehiclePropertyType::FLOAT):
+ case VehiclePropertyType::FLOAT:
minFloatValue = (individualResult.minSupportedValue)->floatValues[0];
maxFloatValue = (individualResult.maxSupportedValue)->floatValues[0];
ASSERT_LE(minFloatValue, maxFloatValue)
<< "minSupportedValue must be less or equal to maxSupportedValue";
break;
- case toInt(VehiclePropertyType::INT64):
+ case VehiclePropertyType::INT64:
minInt64Value = (individualResult.minSupportedValue)->int64Values[0];
maxInt64Value = (individualResult.maxSupportedValue)->int64Values[0];
ASSERT_LE(minInt64Value, maxInt64Value)
@@ -923,12 +925,12 @@
}
}
-// Test the getMinMaxSupportedValues API. We use this one test case to cover all properties that
+// Test the getMinMaxSupportedValue API. We use this one test case to cover all properties that
// may support this API.
TEST_P(VtsHalAutomotiveVehicleTargetTest, testGetMinMaxSupportedValue) {
if (!mVhalClient->isAidlVhal() || mVhalClient->getRemoteInterfaceVersion() < 4) {
- GTEST_SKIP() << "Skip checking testGetMinMaxSupportedValues the behavior is not supported "
- "for current VHAL version";
+ GTEST_SKIP() << "Skip checking getMinMaxSupportedValue because the behavior is not "
+ "supported for current VHAL version";
}
auto configsResult = mVhalClient->getAllPropConfigs();
@@ -956,12 +958,93 @@
}
}
-void verifyPropertyConfigMinMaxValue(const IHalPropConfig* config, int32_t propertyType) {
+void VtsHalAutomotiveTest::testGetSupportedValuesListsForPropIdAreaId(
+ int32_t propId, const IHalAreaConfig& areaConfig, bool supportedValuesRequired) {
+ int32_t areaId = areaConfig.getAreaId();
+ VehiclePropertyType propertyType = getPropertyType(propId);
+ std::optional<HasSupportedValueInfo> maybeHasSupportedValueInfo =
+ areaConfig.getHasSupportedValueInfo();
+ if (!maybeHasSupportedValueInfo.has_value()) {
+ return;
+ }
+ if (!maybeHasSupportedValueInfo->hasSupportedValuesList) {
+ return;
+ }
+ VhalClientResult<std::vector<SupportedValuesListResult>> result =
+ mVhalClient->getSupportedValuesLists({PropIdAreaId{
+ .propId = propId,
+ .areaId = areaId,
+ }});
+ ASSERT_RESULT_OK(result)
+ << "getSupportedValuesLists must return okay result if hasSupportedValuesList is true";
+ ASSERT_THAT(*result, ::testing::SizeIs(1))
+ << "getSupportedValuesLists result list size must be 1 for 1 request";
+ const SupportedValuesListResult& individualResult = (*result)[0];
+ if (supportedValuesRequired) {
+ ASSERT_EQ(individualResult.status, StatusCode::OK)
+ << "getSupportedValuesLists must return okay status if supported values are "
+ "required";
+ }
+ if (individualResult.status != StatusCode::OK) {
+ return;
+ }
+ ASSERT_TRUE(individualResult.supportedValuesList.has_value())
+ << "supportedValuesList field must not be null if hasSupportedValuesList is true";
+ const std::vector<std::optional<RawPropValues>>& supportedValuesList =
+ individualResult.supportedValuesList.value();
+ if (supportedValuesRequired) {
+ ASSERT_THAT(supportedValuesList, ::testing::Not(::testing::IsEmpty()))
+ << "supportedValuesList must not be empty if supported values are required";
+ }
+ for (const std::optional<RawPropValues>& supportedValue : supportedValuesList) {
+ ASSERT_TRUE(supportedValue.has_value())
+ << "Each item in supportedValuesList must not be null";
+ ASSERT_NO_FATAL_FAILURE(verifyRawPropValues(*supportedValue, propertyType))
+ << "one of supported value is not a valid RawPropValues for "
+ << "the property type, value: " << supportedValue->toString();
+ }
+}
+
+// Test the getSupportedValues API. We use this one test case to cover all properties that
+// may support this API.
+TEST_P(VtsHalAutomotiveVehicleTargetTest, testGetSupportedValuesLists) {
+ if (!mVhalClient->isAidlVhal() || mVhalClient->getRemoteInterfaceVersion() < 4) {
+ GTEST_SKIP() << "Skip checking getSupportedValuesLists because the behavior is not "
+ "supported for current VHAL version";
+ }
+
+ auto configsResult = mVhalClient->getAllPropConfigs();
+ ASSERT_TRUE(configsResult.ok())
+ << "Failed to get all property configs, error: " << configsResult.error().message();
+
+ for (const auto& cfgPtr : configsResult.value()) {
+ int32_t propId = cfgPtr->getPropId();
+ bool supportedValuesRequired = false;
+ std::unordered_set<std::string> annotations;
+ auto it = AnnotationsForVehicleProperty.find(static_cast<VehicleProperty>(propId));
+ if (it != AnnotationsForVehicleProperty.end()) {
+ annotations = it->second;
+ }
+ if (annotations.find(ANNOTATION_REQUIRE_SUPPORTED_VALUES) != annotations.end()) {
+ supportedValuesRequired = true;
+ }
+ const std::vector<std::unique_ptr<IHalAreaConfig>>& areaConfigs = cfgPtr->getAreaConfigs();
+ for (const auto& areaCfgPtr : areaConfigs) {
+ EXPECT_NO_FATAL_FAILURE(testGetSupportedValuesListsForPropIdAreaId(
+ propId, *areaCfgPtr, supportedValuesRequired))
+ << "test getSupportedValues failed for property: " << propIdToString(propId)
+ << ", areaId: " << areaCfgPtr->getAreaId();
+ }
+ }
+}
+
+void verifyPropertyConfigMinMaxValue(const IHalPropConfig* config,
+ VehiclePropertyType propertyType) {
for (const auto& areaConfig : config->getAreaConfigs()) {
std::optional<HasSupportedValueInfo> maybeHasSupportedValueInfo =
areaConfig->getHasSupportedValueInfo();
if (areaConfig->getMinInt32Value() != 0 || areaConfig->getMaxInt32Value() != 0) {
- EXPECT_EQ(propertyType, toInt(VehiclePropertyType::INT32))
+ EXPECT_EQ(propertyType, VehiclePropertyType::INT32)
<< "minInt32Value and maxInt32Value must not be specified for INT32 type "
"property";
EXPECT_THAT(areaConfig->getMinInt32Value(),
@@ -977,7 +1060,7 @@
}
}
if (areaConfig->getMinFloatValue() != 0 || areaConfig->getMaxFloatValue() != 0) {
- EXPECT_EQ(propertyType, toInt(VehiclePropertyType::FLOAT))
+ EXPECT_EQ(propertyType, VehiclePropertyType::FLOAT)
<< "minFloatValue and maxFloatValue must not be specified for FLOAT type "
"property";
EXPECT_THAT(areaConfig->getMinFloatValue(),
@@ -993,7 +1076,7 @@
}
}
if (areaConfig->getMinInt64Value() != 0 || areaConfig->getMaxInt64Value() != 0) {
- EXPECT_EQ(propertyType, toInt(VehiclePropertyType::INT64))
+ EXPECT_EQ(propertyType, VehiclePropertyType::INT64)
<< "minInt64Value and maxInt64Value must not be specified for INT64 type "
"property";
EXPECT_THAT(areaConfig->getMinInt64Value(),
@@ -1011,9 +1094,9 @@
if (maybeHasSupportedValueInfo.has_value() &&
(maybeHasSupportedValueInfo->hasMinSupportedValue ||
maybeHasSupportedValueInfo->hasMaxSupportedValue)) {
- EXPECT_THAT(propertyType, ::testing::AnyOf(toInt(VehiclePropertyType::INT32),
- toInt(VehiclePropertyType::INT64),
- toInt(VehiclePropertyType::FLOAT)))
+ EXPECT_THAT(propertyType,
+ ::testing::AnyOf(VehiclePropertyType::INT32, VehiclePropertyType::INT64,
+ VehiclePropertyType::FLOAT))
<< "HasSupportedValueInfo.hasMinSupportedValue and "
"HasSupportedValueInfo.hasMaxSupportedValue is only allowed to be set to "
"true "
@@ -1022,27 +1105,31 @@
}
}
-void verifyPropertyConfigRequireMinMaxValue(const IHalPropConfig* config, int propertyType) {
+void verifyPropertyConfigRequireMinMaxValue(const IHalPropConfig* config,
+ VehiclePropertyType propertyType) {
for (const auto& areaConfig : config->getAreaConfigs()) {
switch (propertyType) {
- case toInt(VehiclePropertyType::INT32):
+ case VehiclePropertyType::INT32:
EXPECT_FALSE(areaConfig->getMinInt32Value() == 0 &&
areaConfig->getMaxInt32Value() == 0)
<< "minInt32Value and maxInt32Value must not both be 0 because "
"min and max value is required for this property";
break;
- case toInt(VehiclePropertyType::FLOAT):
+ case VehiclePropertyType::FLOAT:
EXPECT_FALSE(areaConfig->getMinFloatValue() == 0 &&
areaConfig->getMaxFloatValue() == 0)
<< "minFloatValue and maxFloatValue must not both be 0 because "
"min and max value is required for this property";
break;
- case toInt(VehiclePropertyType::INT64):
+ case VehiclePropertyType::INT64:
EXPECT_FALSE(areaConfig->getMinInt64Value() == 0 &&
areaConfig->getMaxInt64Value() == 0)
<< "minInt64Value and maxInt64Value must not both be 0 because "
"min and max value is required for this property";
break;
+ default:
+ // Do nothing.
+ break;
}
std::optional<HasSupportedValueInfo> maybeHasSupportedValueInfo =
@@ -1171,7 +1258,7 @@
annotations = it->second;
}
- int propertyType = expectedPropId & toInt(VehiclePropertyType::MASK);
+ VehiclePropertyType propertyType = getPropertyType(expectedPropId);
verifyPropertyConfigMinMaxValue(config.get(), propertyType);
if (annotations.find(ANNOTATION_REQUIRE_MIN_MAX_VALUE) != annotations.end()) {
verifyPropertyConfigRequireMinMaxValue(config.get(), propertyType);
@@ -1215,6 +1302,7 @@
}
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(VtsHalAutomotiveVehicleTargetTest);
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(VtsHalAutomotivePropertyConfigTest);
INSTANTIATE_TEST_SUITE_P(PerInstance, VtsHalAutomotiveVehicleTargetTest,
testing::ValuesIn(getDescriptors()),
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/AuxiliaryInformation.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/AuxiliaryInformation.aidl
index f6c6cb9..61b510b 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/AuxiliaryInformation.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/AuxiliaryInformation.aidl
@@ -21,6 +21,8 @@
/**
* Contains parameters to provide additional information dependent on the GNSS constellation.
*
+ * If svid is -1, the AuxiliaryInformation is not available.
+ *
* @hide
*/
@VintfStability
@@ -49,6 +51,8 @@
* - QZSS: 183-206
* - Galileo: 1-36
* - Beidou: 1-63
+ *
+ * If it is -1, the AuxiliaryInformation is not available.
*/
int svid;
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/GalileoIonosphericModel.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/GalileoIonosphericModel.aidl
index ced8917..65f840c 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/GalileoIonosphericModel.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/GalileoIonosphericModel.aidl
@@ -18,7 +18,9 @@
/**
* Contains Galileo ionospheric model.
- * This is Defined in Galileo-OS-SIS-ICD-v2.1, 5.1.6.
+ * This is defined in Galileo-OS-SIS-ICD-v2.1, 5.1.6.
+ *
+ * If all coefficients are 0, the GalileoIonosphericModel is not available.
*
* @hide
*/
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
index ebf6c05..25e8c4b 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/GlonassAlmanac.aidl
@@ -20,6 +20,8 @@
* Contains Glonass almanac data.
* This is defined in Glonass ICD v5.1, section 4.5.
*
+ * If issueDateMs is -1, the GlonassAlmanac is not available.
+ *
* @hide
*/
@VintfStability
@@ -77,7 +79,10 @@
double omega;
}
- /** Almanac issue date in milliseconds (UTC). */
+ /**
+ * Almanac issue date in milliseconds (UTC).
+ * If it is -1, the GlonassAlmanac is not available.
+ */
long issueDateMs;
/** Array of GlonassSatelliteAlmanac. */
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/GnssAlmanac.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/GnssAlmanac.aidl
index f12378b..e03bbf0 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/GnssAlmanac.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/GnssAlmanac.aidl
@@ -24,6 +24,8 @@
* For QZSS, this is defined in IS-QZSS-PNT section 4.1.2.6.
* For Galileo, this is defined in Galileo-OS-SIS-ICD-v2.1 section 5.1.10.
*
+ * If weekNumber is -1, the GnssAlmanac is not available.
+ *
* @hide
*/
@VintfStability
@@ -44,6 +46,7 @@
/**
* Almanac reference week number.
+ * If it is -1, the GnssAlmanac is not available.
*
* For GPS and QZSS, this is GPS week number (modulo 1024).
* For Beidou, this is Baidou week number (modulo 8192).
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/KlobucharIonosphericModel.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/KlobucharIonosphericModel.aidl
index e261e97..c1dba78 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/KlobucharIonosphericModel.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/KlobucharIonosphericModel.aidl
@@ -20,6 +20,8 @@
* Contains Klobuchar ionospheric model coefficients used by GPS, BDS, QZSS.
* This is defined in IS-GPS-200 20.3.3.5.1.7.
*
+ * If all coefficients are 0, the KlobucharIonosphericModel is not available.
+ *
* @hide
*/
@VintfStability
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/LeapSecondsModel.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/LeapSecondsModel.aidl
index 0ebd46d..d05fba8 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/LeapSecondsModel.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/LeapSecondsModel.aidl
@@ -20,11 +20,16 @@
* Contains the leap seconds set of parameters needed for GNSS time.
* This is defined in RINEX 3.05 "LEAP SECONDS" in table A2.
*
+ * If leapSeconds is -1, the LeapSecondsModel is not available.
+ *
* @hide
*/
@VintfStability
parcelable LeapSecondsModel {
- /** Time difference due to leap seconds before the event in seconds. */
+ /**
+ * Time difference due to leap seconds before the event in seconds.
+ * If it is -1, the LeapSecondsModel is not available.
+ */
int leapSeconds;
/** Time difference due to leap seconds after the event in seconds. */
diff --git a/gnss/aidl/android/hardware/gnss/gnss_assistance/UtcModel.aidl b/gnss/aidl/android/hardware/gnss/gnss_assistance/UtcModel.aidl
index c16a711..2b291f0 100644
--- a/gnss/aidl/android/hardware/gnss/gnss_assistance/UtcModel.aidl
+++ b/gnss/aidl/android/hardware/gnss/gnss_assistance/UtcModel.aidl
@@ -20,6 +20,8 @@
* Contains parameters to convert from current GNSS time to UTC time.
* This is defined in RINEX 3.05 "TIME SYSTEM CORR" in table A5.
*
+ * If weekNumber is -1, the UtcModel is not available.
+ *
* @hide
*/
@VintfStability
@@ -33,6 +35,6 @@
/** Reference GNSS time of week in seconds. */
int timeOfWeek;
- /** Reference GNSS week number. */
+ /** Reference GNSS week number. If it is -1, the UTC model is not available. */
int weekNumber;
}
diff --git a/graphics/composer/aidl/include/android/hardware/graphics/composer3/ComposerClientReader.h b/graphics/composer/aidl/include/android/hardware/graphics/composer3/ComposerClientReader.h
index da6001a..2196530 100644
--- a/graphics/composer/aidl/include/android/hardware/graphics/composer3/ComposerClientReader.h
+++ b/graphics/composer/aidl/include/android/hardware/graphics/composer3/ComposerClientReader.h
@@ -270,7 +270,7 @@
for (auto& [layerId, luts] : displayLuts.layerLuts) {
if (luts.pfd.get() >= 0) {
data.layerLuts.push_back(
- {layerId, Luts{ndk::ScopedFileDescriptor(dup(luts.pfd.get())), luts.offsets,
+ {layerId, Luts{ndk::ScopedFileDescriptor(luts.pfd.release()), luts.offsets,
luts.lutProperties}});
}
}
diff --git a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
index 2ff3b2b..6c58b4c 100644
--- a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
+++ b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
@@ -3276,7 +3276,7 @@
invalid_writer.setLayerLifecycleBatchCommandType(getInvalidDisplayId(), layer,
LayerLifecycleBatchCommandType::DESTROY);
execute();
- const auto errors = getReader(display.getDisplayId()).takeErrors();
+ const auto errors = getReader(getInvalidDisplayId()).takeErrors();
ASSERT_TRUE(errors.size() == 1 && errors[0].errorCode == IComposerClient::EX_BAD_DISPLAY);
}
}
diff --git a/power/aidl/vts/VtsHalPowerTargetTest.cpp b/power/aidl/vts/VtsHalPowerTargetTest.cpp
index 87797ae..93b7c38 100644
--- a/power/aidl/vts/VtsHalPowerTargetTest.cpp
+++ b/power/aidl/vts/VtsHalPowerTargetTest.cpp
@@ -317,6 +317,9 @@
}
ASSERT_TRUE(ret.isOk());
ASSERT_GE(mSupportInfo->headroom.cpuMinIntervalMillis, 0);
+ ASSERT_LE(mSupportInfo->headroom.cpuMinCalculationWindowMillis, 50);
+ ASSERT_GE(mSupportInfo->headroom.cpuMaxCalculationWindowMillis, 10000);
+ ASSERT_GE(mSupportInfo->headroom.cpuMaxTidCount, 5);
ASSERT_EQ(headroom.getTag(), CpuHeadroomResult::globalHeadroom);
ASSERT_GE(headroom.get<CpuHeadroomResult::globalHeadroom>(), 0.0f);
ASSERT_LE(headroom.get<CpuHeadroomResult::globalHeadroom>(), 100.00f);
@@ -335,6 +338,8 @@
}
ASSERT_TRUE(ret.isOk());
ASSERT_GE(mSupportInfo->headroom.gpuMinIntervalMillis, 0);
+ ASSERT_LE(mSupportInfo->headroom.gpuMinCalculationWindowMillis, 50);
+ ASSERT_GE(mSupportInfo->headroom.gpuMaxCalculationWindowMillis, 10000);
ASSERT_EQ(headroom.getTag(), GpuHeadroomResult::globalHeadroom);
ASSERT_GE(headroom.get<GpuHeadroomResult::globalHeadroom>(), 0.0f);
ASSERT_LE(headroom.get<GpuHeadroomResult::globalHeadroom>(), 100.00f);
diff --git a/radio/aidl/android/hardware/radio/RadioAccessFamily.aidl b/radio/aidl/android/hardware/radio/RadioAccessFamily.aidl
index 9588ed9..7cde897 100644
--- a/radio/aidl/android/hardware/radio/RadioAccessFamily.aidl
+++ b/radio/aidl/android/hardware/radio/RadioAccessFamily.aidl
@@ -52,7 +52,7 @@
/** @deprecated use LTE instead. */
LTE_CA = 1 << RadioTechnology.LTE_CA,
/**
- * 5G NR. This is only use in 5G Standalone mode.
+ * 5G NR. This is only used in 5G Standalone mode.
*/
NR = 1 << RadioTechnology.NR,
}
diff --git a/radio/aidl/android/hardware/radio/RadioError.aidl b/radio/aidl/android/hardware/radio/RadioError.aidl
index 6a28893..aa53df3 100644
--- a/radio/aidl/android/hardware/radio/RadioError.aidl
+++ b/radio/aidl/android/hardware/radio/RadioError.aidl
@@ -73,7 +73,7 @@
*/
MODE_NOT_SUPPORTED = 13,
/**
- * Command failed becausee recipient is not on FDN list
+ * Command failed because recipient is not on FDN list
*/
FDN_CHECK_FAILURE = 14,
/**
@@ -133,7 +133,7 @@
*/
LCE_NOT_SUPPORTED = 36,
/**
- * Not sufficieent memory to process the request
+ * Not sufficient memory to process the request
*/
NO_MEMORY = 37,
/**
@@ -218,7 +218,7 @@
*/
ENCODING_ERR = 57,
/**
- * SMSC addrss specified is invalid
+ * SMSC address specified is invalid
*/
INVALID_SMSC_ADDRESS = 58,
/**
@@ -279,7 +279,7 @@
OEM_ERROR_24 = 524,
OEM_ERROR_25 = 525,
/**
- * 1X voice and SMS are not allowed simulteneously.
+ * 1X voice and SMS are not allowed simultaneously.
*/
SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED = 67,
/**
@@ -293,8 +293,8 @@
BLOCKED_DUE_TO_CALL = 69,
/**
* Returned from setRadioPowerResponse when detecting RF HW issues. Some RF Front-End (RFFE)
- * components like antenna are considered critical for modem to provide telephony service.
- * This RadioError is used when modem detect such RFFE problem.
+ * components like antennas are considered critical for modem to provide telephony service.
+ * This RadioError is used when modem detects such RFFE problems.
*/
RF_HARDWARE_ISSUE = 70,
/**
diff --git a/radio/aidl/android/hardware/radio/data/DataCallFailCause.aidl b/radio/aidl/android/hardware/radio/data/DataCallFailCause.aidl
index 592fde6..733eae8 100644
--- a/radio/aidl/android/hardware/radio/data/DataCallFailCause.aidl
+++ b/radio/aidl/android/hardware/radio/data/DataCallFailCause.aidl
@@ -143,7 +143,7 @@
*/
DATA_REGISTRATION_FAIL = -2,
/**
- * Network/modem disonnect
+ * Network/modem disconnect
*/
SIGNAL_LOST = -3,
/**
@@ -172,7 +172,7 @@
ACTIVATION_REJECTED_BCM_VIOLATION = 0x30,
/**
* Network has already initiated the activation, modification, or deactivation of bearer
- * resources that was requested by the UE.
+ * resources that were requested by the UE.
*/
COLLISION_WITH_NETWORK_INITIATED_REQUEST = 0x38,
/**
@@ -182,7 +182,7 @@
*/
ONLY_IPV4V6_ALLOWED = 0x39,
/**
- * Network supports non-IP PDP type only. IPv4, IPv6 and IPv4v6 is not allowed. In LTE mode of
+ * Network supports non-IP PDP type only. IPv4, IPv6 and IPv4v6 are not allowed. In LTE mode of
* operation, this is a PDN throttling cause code, meaning the UE can throttle further requests
* to the same APN.
*/
diff --git a/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl b/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl
index f067fb4..501cbce 100644
--- a/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl
+++ b/radio/aidl/android/hardware/radio/data/DataProfileInfo.aidl
@@ -40,7 +40,7 @@
const int TYPE_3GPP2 = 2;
/**
- * Innfrastructure type unknown. This is only for initializing.
+ * Infrastructure type unknown. This is only for initializing.
*/
const int INFRASTRUCTURE_UNKNOWN = 0;
diff --git a/radio/aidl/android/hardware/radio/data/IRadioDataResponse.aidl b/radio/aidl/android/hardware/radio/data/IRadioDataResponse.aidl
index 538b90a..7624606 100644
--- a/radio/aidl/android/hardware/radio/data/IRadioDataResponse.aidl
+++ b/radio/aidl/android/hardware/radio/data/IRadioDataResponse.aidl
@@ -29,7 +29,7 @@
oneway interface IRadioDataResponse {
/**
* Acknowledge the receipt of radio request sent to the vendor. This must be sent only for
- * radio request which take long time to respond. For more details, refer
+ * radio requests which take a long time to respond. For more details, refer
* https://source.android.com/devices/tech/connect/ril.html
*
* @param serial Serial no. of the request whose acknowledgement is sent.
@@ -199,7 +199,7 @@
* RadioError:OP_NOT_ALLOWED_DURING_VOICE_CALL
* RadioError:INVALID_ARGUMENTS
* RadioError:INTERNAL_ERR
- * RadioError:NO_RESOURCES if the vendor is unable handle due to resources are full.
+ * RadioError:NO_RESOURCES if the vendor is unable to handle due to resources being full.
* RadioError:SIM_ABSENT
*/
void setupDataCallResponse(in RadioResponseInfo info, in SetupDataCallResult dcResponse);
diff --git a/radio/aidl/android/hardware/radio/data/KeepaliveRequest.aidl b/radio/aidl/android/hardware/radio/data/KeepaliveRequest.aidl
index 90c4454..115e47e 100644
--- a/radio/aidl/android/hardware/radio/data/KeepaliveRequest.aidl
+++ b/radio/aidl/android/hardware/radio/data/KeepaliveRequest.aidl
@@ -58,7 +58,7 @@
int maxKeepaliveIntervalMillis;
/**
* Context ID, returned in setupDataCallResponse that uniquely identifies the data call to which
- * this keepalive must applied.
+ * this keepalive must be applied.
*/
int cid;
}
diff --git a/radio/aidl/android/hardware/radio/modem/IRadioModemResponse.aidl b/radio/aidl/android/hardware/radio/modem/IRadioModemResponse.aidl
index 498f228..fc9a4e1 100644
--- a/radio/aidl/android/hardware/radio/modem/IRadioModemResponse.aidl
+++ b/radio/aidl/android/hardware/radio/modem/IRadioModemResponse.aidl
@@ -30,7 +30,7 @@
oneway interface IRadioModemResponse {
/**
* Acknowledge the receipt of radio request sent to the vendor. This must be sent only for
- * radio request which take long time to respond. For more details, refer
+ * radio requests which take a long time to respond. For more details, refer
* https://source.android.com/devices/tech/connect/ril.html
*
* @param serial Serial no. of the request whose acknowledgement is sent.
diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl
index dce9865..13d9a9a 100644
--- a/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl
+++ b/radio/aidl/android/hardware/radio/network/IRadioNetwork.aidl
@@ -495,7 +495,7 @@
* Requests that network personalization be deactivated
*
* @param serial Serial number of request.
- * @param netPin Network depersonlization code
+ * @param netPin Network depersonalization code
*
* Response function is IRadioNetworkResponse.supplyNetworkDepersonalizationResponse()
*
diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetworkIndication.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetworkIndication.aidl
index 295061b..d7d351c 100644
--- a/radio/aidl/android/hardware/radio/network/IRadioNetworkIndication.aidl
+++ b/radio/aidl/android/hardware/radio/network/IRadioNetworkIndication.aidl
@@ -137,7 +137,7 @@
* the framework
* @param ageMs time in milliseconds indicating how long NITZ was cached in RIL and modem.
* This must track true age and therefore must be calculated using clocks that
- * include the time spend in sleep / low power states. If it can not be guaranteed,
+ * include the time spent in sleep / low power states. If it can not be guaranteed,
* there must not be any caching done at the modem and should fill in 0 for ageMs
*/
void nitzTimeReceived(
diff --git a/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl b/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl
index fd332fc..9a89181 100644
--- a/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl
+++ b/radio/aidl/android/hardware/radio/network/IRadioNetworkResponse.aidl
@@ -39,7 +39,7 @@
oneway interface IRadioNetworkResponse {
/**
* Acknowledge the receipt of radio request sent to the vendor. This must be sent only for
- * radio request which take long time to respond. For more details, refer
+ * radio requests which take a long time to respond. For more details, refer
* https://source.android.com/devices/tech/connect/ril.html
*
* @param serial Serial no. of the request whose acknowledgement is sent.
diff --git a/radio/aidl/android/hardware/radio/network/LinkCapacityEstimate.aidl b/radio/aidl/android/hardware/radio/network/LinkCapacityEstimate.aidl
index 0aea27c..795237b 100644
--- a/radio/aidl/android/hardware/radio/network/LinkCapacityEstimate.aidl
+++ b/radio/aidl/android/hardware/radio/network/LinkCapacityEstimate.aidl
@@ -25,7 +25,7 @@
* capacity of both primary and secondary. This bandwidth estimate shall be the estimated
* maximum sustainable link bandwidth (as would be measured at the Upper PDCP or SNDCP SAP).
* If the DL Aggregate Maximum Bit Rate is known, this value shall not exceed the DL-AMBR for
- * the Internet PDN connection. This must be filled with 0 if network is not connected.
+ * the Internet PDN connection. This must be filled with 0 if the network is not connected.
*/
int downlinkCapacityKbps;
/**
@@ -33,14 +33,14 @@
* capacity of both primary and secondary. This bandwidth estimate shall be the estimated
* maximum sustainable link bandwidth (as would be measured at the Upper PDCP or SNDCP SAP).
* If the UL Aggregate Maximum Bit Rate is known, this value shall not exceed the UL-AMBR for
- * the Internet PDN connection. This must be filled with 0 if network is not connected.
+ * the Internet PDN connection. This must be filled with 0 if the network is not connected.
*/
int uplinkCapacityKbps;
/**
* Estimated downlink capacity of secondary carrier in a dual connected NR mode in kbps. This
* bandwidth estimate shall be the estimated maximum sustainable link bandwidth (as would be
* measured at the Upper PDCP or SNDCP SAP). This is valid only in if device is connected to
- * both primary and secodary in dual connected mode. This must be filled with 0 if secondary is
+ * both primary and secondary in dual connected mode. This must be filled with 0 if secondary is
* not connected or if modem does not support this feature.
*/
int secondaryDownlinkCapacityKbps;
@@ -48,7 +48,7 @@
* Estimated uplink capacity secondary carrier in a dual connected NR mode in kbps. This
* bandwidth estimate shall be the estimated maximum sustainable link bandwidth (as would be
* measured at the Upper PDCP or SNDCP SAP). This is valid only in if device is connected to
- * both primary and secodary in dual connected mode.This must be filled with 0 if secondary is
+ * both primary and secondary in dual connected mode.This must be filled with 0 if secondary is
* not connected or if modem does not support this feature.
*/
int secondaryUplinkCapacityKbps;
diff --git a/radio/aidl/android/hardware/radio/network/LteVopsInfo.aidl b/radio/aidl/android/hardware/radio/network/LteVopsInfo.aidl
index a320acb..c2aa3b5 100644
--- a/radio/aidl/android/hardware/radio/network/LteVopsInfo.aidl
+++ b/radio/aidl/android/hardware/radio/network/LteVopsInfo.aidl
@@ -25,19 +25,19 @@
@JavaDerive(toString=true)
parcelable LteVopsInfo {
/**
- * This indicates if camped network support VoLTE services. This information is received from
+ * This indicates if the camped network supports VoLTE services. This information is received from
* LTE network during LTE NAS registration procedure through LTE ATTACH ACCEPT/TAU ACCEPT.
* Refer 3GPP 24.301 EPS network feature support -> IMS VoPS
*/
boolean isVopsSupported;
/**
- * This indicates if camped network support VoLTE emergency bearers. This information is
+ * This indicates if the camped network supports VoLTE emergency bearers. This information is
* received from LTE network through two sources:
* a. During LTE NAS registration procedure through LTE ATTACH ACCEPT/TAU ACCEPT. Refer
* 3GPP 24.301 EPS network feature support -> EMC BS
- * b. In case device is not registered on network. Refer 3GPP 25.331 LTE RRC
+ * b. In case the device is not registered on network. Refer 3GPP 25.331 LTE RRC
* SIB1 : ims-EmergencySupport-r9
- * If device is registered on LTE, then this field indicates (a).
+ * If the device is registered on LTE, then this field indicates (a).
* In case of limited service on LTE this field indicates (b).
*/
boolean isEmcBearerSupported;
diff --git a/radio/aidl/android/hardware/radio/network/RegState.aidl b/radio/aidl/android/hardware/radio/network/RegState.aidl
index 15e7160..1cfa2c1 100644
--- a/radio/aidl/android/hardware/radio/network/RegState.aidl
+++ b/radio/aidl/android/hardware/radio/network/RegState.aidl
@@ -56,7 +56,7 @@
*/
NOT_REG_MT_NOT_SEARCHING_OP_EM = 10,
/**
- * Same as NOT_REG_MT_SEARCHING_OP but indicatees that emergency calls are enabled
+ * Same as NOT_REG_MT_SEARCHING_OP but indicates that emergency calls are enabled
*/
NOT_REG_MT_SEARCHING_OP_EM = 12,
/**
diff --git a/radio/aidl/android/hardware/radio/sim/CardStatus.aidl b/radio/aidl/android/hardware/radio/sim/CardStatus.aidl
index 7321b36..0deb70d 100644
--- a/radio/aidl/android/hardware/radio/sim/CardStatus.aidl
+++ b/radio/aidl/android/hardware/radio/sim/CardStatus.aidl
@@ -26,7 +26,7 @@
@JavaDerive(toString=true)
parcelable CardStatus {
/*
- * Card is physically absent from device. (Some old modems use STATE_ABSENT when the SIM
+ * Card is physically absent from the device. (Some old modems use STATE_ABSENT when the SIM
* is powered off. This is no longer correct, however the platform will still support this
* legacy behavior.)
*/
@@ -75,7 +75,7 @@
*/
String atr;
/**
- * Integrated Circuit Card IDentifier (ICCID) is Unique Identifier of the SIM CARD. File is
+ * Integrated Circuit Card IDentifier (ICCID) is the Unique Identifier of the SIM CARD. File is
* located in the SIM card at EFiccid (0x2FE2) as per ETSI 102.221. The ICCID is defined by
* the ITU-T recommendation E.118 ISO/IEC 7816.
*
diff --git a/radio/aidl/android/hardware/radio/sim/IRadioSim.aidl b/radio/aidl/android/hardware/radio/sim/IRadioSim.aidl
index 16573f4..7ad8c77 100644
--- a/radio/aidl/android/hardware/radio/sim/IRadioSim.aidl
+++ b/radio/aidl/android/hardware/radio/sim/IRadioSim.aidl
@@ -389,7 +389,7 @@
/**
* Provide Carrier specific information to the modem that must be used to encrypt the IMSI and
- * IMPI. Sent by the framework during boot, carrier switch and everytime the framework receives
+ * IMPI. Sent by the framework during boot, carrier switch and every time the framework receives
* a new certificate.
*
* @param serial Serial number of request.
@@ -583,7 +583,7 @@
* Close a previously opened logical channel. This command reflects TS 27.007
* "close logical channel" operation (+CCHC).
*
- * Per spec SGP.22 V3.0, ES10 commands needs to be sent over command port of MEP-A. In order
+ * Per spec SGP.22 V3.0, ES10 commands need to be sent over command port of MEP-A. In order
* to close proper logical channel, should pass information about whether the logical channel
* was opened for sending ES10 commands or not.
*
diff --git a/radio/aidl/android/hardware/radio/sim/IRadioSimIndication.aidl b/radio/aidl/android/hardware/radio/sim/IRadioSimIndication.aidl
index d9735d3..7967b6b 100644
--- a/radio/aidl/android/hardware/radio/sim/IRadioSimIndication.aidl
+++ b/radio/aidl/android/hardware/radio/sim/IRadioSimIndication.aidl
@@ -30,7 +30,7 @@
oneway interface IRadioSimIndication {
/**
* Indicates that the modem requires the Carrier info for IMSI/IMPI encryption. This might
- * happen when the modem restarts or for some reason it's cache has been invalidated.
+ * happen when the modem restarts or for some reason its cache has been invalidated.
*
* @param type Type of radio indication
*/
@@ -85,7 +85,7 @@
void simStatusChanged(in RadioIndicationType type);
/**
- * Indicates when SIM notifies applcations some event happens.
+ * Indicates when SIM notifies applications some event happens.
*
* @param type Type of radio indication
* @param cmd SAT/USAT commands or responses sent by ME to SIM or commands handled by ME,
diff --git a/radio/aidl/android/hardware/radio/sim/IRadioSimResponse.aidl b/radio/aidl/android/hardware/radio/sim/IRadioSimResponse.aidl
index 62fa674..5c31bd2 100644
--- a/radio/aidl/android/hardware/radio/sim/IRadioSimResponse.aidl
+++ b/radio/aidl/android/hardware/radio/sim/IRadioSimResponse.aidl
@@ -33,7 +33,7 @@
oneway interface IRadioSimResponse {
/**
* Acknowledge the receipt of radio request sent to the vendor. This must be sent only for
- * radio request which take long time to respond. For more details, refer
+ * radio requests which take a long time to respond. For more details, refer
* https://source.android.com/devices/tech/connect/ril.html
*
* @param serial Serial no. of the request whose acknowledgement is sent.
@@ -629,7 +629,7 @@
/**
* @param info Response info struct containing response type, serial no. and error
* @param persoType SIM Personalization type
- * @param remainingRetries postiive values indicates number of retries remaining, must be equal
+ * @param remainingRetries positive values indicates number of retries remaining, must be equal
* to -1 if number of retries is infinite.
*
* Valid errors returned:
diff --git a/radio/aidl/android/hardware/radio/sim/SimRefreshResult.aidl b/radio/aidl/android/hardware/radio/sim/SimRefreshResult.aidl
index 618ac32..88c4552 100644
--- a/radio/aidl/android/hardware/radio/sim/SimRefreshResult.aidl
+++ b/radio/aidl/android/hardware/radio/sim/SimRefreshResult.aidl
@@ -45,9 +45,9 @@
/**
* AID (application ID) of the card application. See ETSI 102.221 8.1 and 101.220 4.
* For TYPE_SIM_FILE_UPDATE result, it must be set to AID of application in which updated EF
- * resides or it must be empty string if EF is outside of an application. For TYPE_SIM_INIT
+ * resides or it must be an empty string if EF is outside of an application. For TYPE_SIM_INIT
* result, this field is set to AID of application that caused REFRESH. For TYPE_SIM_RESET
- * result, it is empty string.
+ * result, it is an empty string.
*/
String aid;
}
diff --git a/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl b/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl
index fc703e9..1908d05 100644
--- a/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl
+++ b/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl
@@ -479,8 +479,8 @@
* structure.
*
* @param unwrappingParams must contain any parameters needed to perform the unwrapping
- * operation. For example, if the wrapping key is an AES key the block and padding modes
- * must be specified in this argument.
+ * operation. For example, the padding mode for the RSA wrapping key must be specified
+ * in this argument.
*
* @param passwordSid specifies the password secure ID (SID) of the user that owns the key being
* installed. If the authorization list in wrappedKeyData contains a
diff --git a/security/keymint/support/authorization_set.cpp b/security/keymint/support/authorization_set.cpp
index c1b5d48..5944908 100644
--- a/security/keymint/support/authorization_set.cpp
+++ b/security/keymint/support/authorization_set.cpp
@@ -22,6 +22,8 @@
#include <aidl/android/hardware/security/keymint/KeyParameter.h>
#include <aidl/android/hardware/security/keymint/KeyPurpose.h>
+#include <algorithm>
+
namespace aidl::android::hardware::security::keymint {
void AuthorizationSet::Sort() {
diff --git a/security/see/authmgr/aidl/README.md b/security/see/authmgr/aidl/README.md
new file mode 100644
index 0000000..97b2b1d
--- /dev/null
+++ b/security/see/authmgr/aidl/README.md
@@ -0,0 +1,21 @@
+# AuthMgr
+
+The AuthMgr protocol authenticates and authorizes clients before they can
+access trusted HALs, AIDL-defined services in trusted execution environments.
+Version 1 was designed to allow applications running in a protected virtual
+machine (pVM) to access services running in a TEE in ARM TrustZone. An
+implementation of `IAuthMgrAuthorization` is referred to as an AuthMgr Backend.
+An implementation of a client of the AuthMgr Backend is referred to as an
+AuthMgr Frontend.
+
+
+## Additional Requirements by Android Version
+
+The comments on `IAuthMgrAuthorization` describe the requirements for implementing
+an AuthMgr Backend (implementor of the interface) itself. There are some additional
+requirements that are specific to Android release versions.
+
+### Android 16
+If implementing `IAuthMgrAuthorization` in Android 16 only one AuthMgr Backend is
+supported and dynamic service discovery is not supported. The AuthMgr Backend
+service must be exposed on secure partition ID 0x8001 over VSOCK port 1.
\ No newline at end of file
diff --git a/wifi/aidl/vts/functional/wifi_chip_aidl_test.cpp b/wifi/aidl/vts/functional/wifi_chip_aidl_test.cpp
index de8f382..a172601 100644
--- a/wifi/aidl/vts/functional/wifi_chip_aidl_test.cpp
+++ b/wifi/aidl/vts/functional/wifi_chip_aidl_test.cpp
@@ -1016,6 +1016,10 @@
*/
TEST_P(WifiChipAidlTest, GetWifiChipCapabilities) {
WifiChipCapabilities chipCapabilities;
+ // STA iface needs to be configured for this test
+ auto iface = configureChipForStaAndGetIface();
+ ASSERT_NE(iface, nullptr);
+
auto status = wifi_chip_->getWifiChipCapabilities(&chipCapabilities);
if (checkStatusCode(&status, WifiStatusCode::ERROR_NOT_SUPPORTED)) {
GTEST_SKIP() << "getWifiChipCapabilities() is not supported by vendor.";
@@ -1027,6 +1031,10 @@
* SetMloMode
*/
TEST_P(WifiChipAidlTest, SetMloMode) {
+ // STA iface needs to be configured for this test
+ auto iface = configureChipForStaAndGetIface();
+ ASSERT_NE(iface, nullptr);
+
auto status = wifi_chip_->setMloMode(IWifiChip::ChipMloMode::LOW_LATENCY);
if (checkStatusCode(&status, WifiStatusCode::ERROR_NOT_SUPPORTED)) {
GTEST_SKIP() << "setMloMode() is not supported by vendor.";