Merge "Merge Android 12 QPR1"
This commit is contained in:
commit
b16c246ddc
15 changed files with 108 additions and 37 deletions
|
@ -1 +1,3 @@
|
|||
changyeon@google.com
|
||||
garysungang@google.com
|
||||
haoxiangl@google.com
|
||||
|
|
|
@ -1025,7 +1025,7 @@ const ConfigDeclaration kVehicleProperties[]{
|
|||
.config =
|
||||
{
|
||||
.prop = toInt(VehicleProperty::EPOCH_TIME),
|
||||
.access = VehiclePropertyAccess::READ_WRITE,
|
||||
.access = VehiclePropertyAccess::WRITE,
|
||||
.changeMode = VehiclePropertyChangeMode::ON_CHANGE,
|
||||
},
|
||||
},
|
||||
|
|
|
@ -487,8 +487,11 @@ enum VehicleProperty : int32_t {
|
|||
* int64Values[3] = rear right ticks
|
||||
* int64Values[4] = rear left ticks
|
||||
*
|
||||
* configArray is used to indicate the micrometers-per-wheel-tick value and
|
||||
* which wheels are supported. configArray is set as follows:
|
||||
* configArray is used to indicate the micrometers-per-wheel-tick values and
|
||||
* which wheels are supported. Each micrometers-per-wheel-tick value is static (i.e. will not
|
||||
* update based on wheel's status) and a best approximation. For example, if a vehicle has
|
||||
* multiple rim/tire size options, the micrometers-per-wheel-tick values are set to those for
|
||||
* the typically expected rim/tire size. configArray is set as follows:
|
||||
*
|
||||
* configArray[0], bits [0:3] = supported wheels. Uses enum Wheel.
|
||||
* configArray[1] = micrometers per front left wheel tick
|
||||
|
@ -1433,17 +1436,29 @@ enum VehicleProperty : int32_t {
|
|||
* This value denotes the number of milliseconds seconds that have
|
||||
* elapsed since 1/1/1970 UTC.
|
||||
*
|
||||
* Reading this value will give you the system’s time. This can be
|
||||
* useful to synchronize other vehicle systems (dash clock etc).
|
||||
* AAOS will write to this value to give VHAL the Android system's time,
|
||||
* if the VHAL supports this property. This can be useful to synchronize
|
||||
* other vehicle systems (dash clock etc) with Android's time.
|
||||
*
|
||||
* Writing this value will update the ‘ExternalTimeSuggestion’
|
||||
* value (if enabled). This value may be consumed by the “Time
|
||||
* Detector Service”, if other sources do not have a higher
|
||||
* priority. For information on how to adjust time source
|
||||
* priorities see Time Detector Service documentation.
|
||||
* AAOS writes to this property once during boot, and
|
||||
* will thereafter write only when some time-source changes are propagated.
|
||||
* AAOS will fill in VehiclePropValue.timestamp correctly.
|
||||
* Note that AAOS will not send updates for natural elapse of time.
|
||||
* int64Values[0] = provided Unix time (in milliseconds)
|
||||
*
|
||||
* Note that the property may take >0 ms to get propagated through the stack
|
||||
* and, having a timestamped property helps reduce any time drift. So,
|
||||
* for all writes to the property, the timestamp can be used to negate this
|
||||
* drift:
|
||||
* drift = currentTimeMillis - PropValue.timestamp
|
||||
* effectiveTime = PropValue.value.int64Values[0] + diff
|
||||
*
|
||||
* Aside, this property could have been better named ANDROID_EPOCH_TIME, but it
|
||||
* continues to be called EPOCH_TIME for legacy reasons. We will try to fix
|
||||
* this naming discrepancy when we migrate to AIDL.
|
||||
*
|
||||
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
|
||||
* @access VehiclePropertyAccess:READ_WRITE
|
||||
* @access VehiclePropertyAccess:WRITE_ONLY
|
||||
* @unit VehicleUnit:MILLI_SECS
|
||||
*/
|
||||
EPOCH_TIME = (
|
||||
|
|
|
@ -3837,6 +3837,8 @@ TEST_P(CameraHidlTest, configureStreamsZSLInputOutputs) {
|
|||
getAvailableOutputStreams(staticMeta, outputStreams,
|
||||
&outputThreshold));
|
||||
for (auto& outputIter : outputStreams) {
|
||||
V3_2::DataspaceFlags outputDataSpace =
|
||||
getDataspace(static_cast<PixelFormat>(outputIter.format));
|
||||
V3_2::Stream zslStream = {streamId++,
|
||||
StreamType::OUTPUT,
|
||||
static_cast<uint32_t>(input.width),
|
||||
|
@ -3859,7 +3861,7 @@ TEST_P(CameraHidlTest, configureStreamsZSLInputOutputs) {
|
|||
static_cast<uint32_t>(outputIter.height),
|
||||
static_cast<PixelFormat>(outputIter.format),
|
||||
GRALLOC1_CONSUMER_USAGE_HWCOMPOSER,
|
||||
0,
|
||||
outputDataSpace,
|
||||
StreamRotation::ROTATION_0};
|
||||
|
||||
::android::hardware::hidl_vec<V3_2::Stream> streams = {inputStream, zslStream,
|
||||
|
|
|
@ -898,6 +898,8 @@ ea465970e96d9605ee6f6706b3b512726c66d2644738added9128c739f8f8b0c android.hardwar
|
|||
c8a57364f6ad20842be14f4db284df5304f7521ca8eac6bcc1fa6c5b466fb8a6 android.hardware.wifi.supplicant@1.4::ISupplicantStaNetwork
|
||||
2123482b69f3b531c88023aa2a007110e130efbf4ed68ac9ce0bc55d5e82bc8b android.hardware.wifi.supplicant@1.4::ISupplicantStaNetworkCallback
|
||||
0821f516e4d428bc15251969f7e19411c94d8f2ccbd99e1fc8168d8e49e38b0f android.hardware.wifi.supplicant@1.4::types
|
||||
4a087a308608d146b022ebc15633de989f5f4dfe1491a83fa41763290a82e40d android.hardware.automotive.vehicle@2.0::types
|
||||
70eb14415391f835fb218b43a1e25f5d6495f098f96fa2acaea70985e98e1ce8 android.hardware.automotive.vehicle@2.0::types
|
||||
|
||||
# ABI preserving changes to HALs during Android T
|
||||
62ace52d9c3ff1f60f94118557a2aaf0b953513e59dcd34d5f94ae28d4c7e780 android.hardware.fastboot@1.0::IFastboot
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
conglin@google.com
|
||||
edwinwong@google.com
|
||||
fredgc@google.com
|
||||
jtinker@google.com
|
||||
juce@google.com
|
||||
kylealexander@google.com
|
||||
rfrias@google.com
|
||||
robertshih@google.com
|
||||
|
|
|
@ -53,17 +53,16 @@ TEST_P(GnssHalTest, SetupTeardownCreateCleanup) {}
|
|||
|
||||
/*
|
||||
* TestPsdsExtension:
|
||||
* 1. Gets the PsdsExtension and verifies that it returns a non-null extension.
|
||||
* 1. Gets the PsdsExtension
|
||||
* 2. Injects empty PSDS data and verifies that it returns an error.
|
||||
*/
|
||||
TEST_P(GnssHalTest, TestPsdsExtension) {
|
||||
sp<IGnssPsds> iGnssPsds;
|
||||
auto status = aidl_gnss_hal_->getExtensionPsds(&iGnssPsds);
|
||||
ASSERT_TRUE(status.isOk());
|
||||
ASSERT_TRUE(iGnssPsds != nullptr);
|
||||
|
||||
status = iGnssPsds->injectPsdsData(PsdsType::LONG_TERM, std::vector<uint8_t>());
|
||||
ASSERT_FALSE(status.isOk());
|
||||
if (status.isOk() && iGnssPsds != nullptr) {
|
||||
status = iGnssPsds->injectPsdsData(PsdsType::LONG_TERM, std::vector<uint8_t>());
|
||||
ASSERT_FALSE(status.isOk());
|
||||
}
|
||||
}
|
||||
|
||||
void CheckSatellitePvt(const SatellitePvt& satellitePvt) {
|
||||
|
|
|
@ -946,7 +946,11 @@ TEST_P(NewKeyGenerationTest, HmacDigestNone) {
|
|||
* UNSUPPORTED_KEY_SIZE.
|
||||
*/
|
||||
TEST_P(NewKeyGenerationTest, AesInvalidKeySize) {
|
||||
int32_t firstApiLevel = property_get_int32("ro.board.first_api_level", 0);
|
||||
for (auto key_size : InvalidKeySizes(Algorithm::AES)) {
|
||||
if (key_size == 192 && SecLevel() == SecurityLevel::STRONGBOX && firstApiLevel < 31) {
|
||||
continue;
|
||||
}
|
||||
ASSERT_EQ(ErrorCode::UNSUPPORTED_KEY_SIZE,
|
||||
GenerateKey(AuthorizationSetBuilder()
|
||||
.Authorization(TAG_NO_AUTH_REQUIRED)
|
||||
|
|
|
@ -264,11 +264,13 @@ TEST_P(StoreHidlTest, ListRoles) {
|
|||
|
||||
// Make sure role name follows expected format based on type and
|
||||
// isEncoder
|
||||
const std::string role_name(
|
||||
::android::GetComponentRole(role.isEncoder, role.type.c_str()));
|
||||
EXPECT_EQ(role_name, role.role) << "Role \"" << role.role << "\" does not match "
|
||||
<< (role.isEncoder ? "an encoder " : "a decoder ")
|
||||
<< "for mime type \"" << role.type << ".";
|
||||
const char* role_name = ::android::GetComponentRole(role.isEncoder, role.type.c_str());
|
||||
if (role_name != nullptr) {
|
||||
EXPECT_EQ(std::string(role_name), role.role)
|
||||
<< "Role \"" << role.role << "\" does not match "
|
||||
<< (role.isEncoder ? "an encoder " : "a decoder ") << "for media type \""
|
||||
<< role.type << ".";
|
||||
}
|
||||
|
||||
// Check the nodes for this role
|
||||
std::set<const std::string> nodeKeys;
|
||||
|
|
|
@ -204,6 +204,7 @@ bool DvrCallback::readRecordFMQ() {
|
|||
void DvrCallback::stopRecordThread() {
|
||||
mKeepReadingRecordFMQ = false;
|
||||
mRecordThreadRunning = false;
|
||||
android::Mutex::Autolock autoLock(mRecordThreadLock);
|
||||
}
|
||||
|
||||
AssertionResult DvrTests::openDvrInDemux(DvrType type, uint32_t bufferSize) {
|
||||
|
|
|
@ -131,8 +131,14 @@ WifiStatus Wifi::startInternal() {
|
|||
WifiStatus wifi_status =
|
||||
createWifiStatus(WifiStatusCode::ERROR_UNKNOWN, error);
|
||||
for (const auto& callback : event_cb_handler_.getCallbacks()) {
|
||||
LOG(INFO) << "Attempting to invoke onSubsystemRestart "
|
||||
"callback";
|
||||
if (!callback->onSubsystemRestart(wifi_status).isOk()) {
|
||||
LOG(ERROR) << "Failed to invoke onFailure callback";
|
||||
LOG(ERROR)
|
||||
<< "Failed to invoke onSubsystemRestart callback";
|
||||
} else {
|
||||
LOG(INFO) << "Succeeded to invoke onSubsystemRestart "
|
||||
"callback";
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -38,12 +38,15 @@ class SupplicantHidlTest
|
|||
: public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
|
||||
public:
|
||||
virtual void SetUp() override {
|
||||
// Stop Wi-Fi
|
||||
ASSERT_TRUE(stopWifiFramework()); // stop & wait for wifi to shutdown.
|
||||
|
||||
wifi_instance_name_ = std::get<0>(GetParam());
|
||||
supplicant_instance_name_ = std::get<1>(GetParam());
|
||||
std::system("/system/bin/start");
|
||||
ASSERT_TRUE(waitForFrameworkReady());
|
||||
isP2pOn_ =
|
||||
testing::deviceSupportsFeature("android.hardware.wifi.direct");
|
||||
// Stop Framework
|
||||
std::system("/system/bin/stop");
|
||||
stopSupplicant(wifi_instance_name_);
|
||||
startSupplicantAndWaitForHidlService(wifi_instance_name_,
|
||||
supplicant_instance_name_);
|
||||
|
@ -53,8 +56,8 @@ class SupplicantHidlTest
|
|||
|
||||
virtual void TearDown() override {
|
||||
stopSupplicant(wifi_instance_name_);
|
||||
// Start Framework
|
||||
std::system("/system/bin/start");
|
||||
// Start Wi-Fi
|
||||
startWifiFramework();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -220,4 +223,4 @@ INSTANTIATE_TEST_CASE_P(
|
|||
android::hardware::getAllHalInstanceNames(IWifi::descriptor)),
|
||||
testing::ValuesIn(android::hardware::getAllHalInstanceNames(
|
||||
ISupplicant::descriptor))),
|
||||
android::hardware::PrintInstanceTupleNameToString<>);
|
||||
android::hardware::PrintInstanceTupleNameToString<>);
|
||||
|
|
|
@ -48,6 +48,26 @@ using ::android::wifi_system::InterfaceTool;
|
|||
using ::android::wifi_system::SupplicantManager;
|
||||
|
||||
namespace {
|
||||
bool waitForSupplicantState(bool is_running) {
|
||||
SupplicantManager supplicant_manager;
|
||||
int count = 50; /* wait at most 5 seconds for completion */
|
||||
while (count-- > 0) {
|
||||
if (supplicant_manager.IsSupplicantRunning() == is_running) {
|
||||
return true;
|
||||
}
|
||||
usleep(100000);
|
||||
}
|
||||
LOG(ERROR) << "Supplicant not " << is_running ? "running" : "stopped";
|
||||
return false;
|
||||
}
|
||||
|
||||
// Helper function to wait for supplicant to be started by framework on wifi
|
||||
// enable.
|
||||
bool waitForSupplicantStart() { return waitForSupplicantState(true); }
|
||||
|
||||
// Helper function to wait for supplicant to be stopped by framework on wifi
|
||||
// disable.
|
||||
bool waitForSupplicantStop() { return waitForSupplicantState(false); }
|
||||
|
||||
// Helper function to initialize the driver and firmware to STA mode
|
||||
// using the vendor HAL HIDL interface.
|
||||
|
@ -118,6 +138,18 @@ std::string getP2pIfaceName() {
|
|||
}
|
||||
} // namespace
|
||||
|
||||
bool startWifiFramework() {
|
||||
std::system("svc wifi enable");
|
||||
std::system("cmd wifi set-scan-always-available enabled");
|
||||
return waitForSupplicantStart(); // wait for wifi to start.
|
||||
}
|
||||
|
||||
bool stopWifiFramework() {
|
||||
std::system("svc wifi disable");
|
||||
std::system("cmd wifi set-scan-always-available disabled");
|
||||
return waitForSupplicantStop(); // wait for wifi to shutdown.
|
||||
}
|
||||
|
||||
void stopSupplicant() { stopSupplicant(""); }
|
||||
|
||||
void stopSupplicant(const std::string& wifi_instance_name) {
|
||||
|
|
|
@ -29,9 +29,11 @@
|
|||
|
||||
#include "wifi_hidl_test_utils.h"
|
||||
|
||||
// Used to start the android wifi framework after every test.
|
||||
bool startWifiFramework();
|
||||
|
||||
// Used to stop the android wifi framework before every test.
|
||||
void stopWifiFramework(const std::string& wifi_instance_name);
|
||||
void startWifiFramework(const std::string& wifi_instance_name);
|
||||
bool stopWifiFramework();
|
||||
|
||||
void stopSupplicant(const std::string& wifi_instance_name);
|
||||
// Used to configure the chip, driver and start wpa_supplicant before every
|
||||
|
@ -70,16 +72,16 @@ class SupplicantHidlTestBase
|
|||
: public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
|
||||
public:
|
||||
virtual void SetUp() override {
|
||||
// Stop Wi-Fi
|
||||
ASSERT_TRUE(stopWifiFramework()); // stop & wait for wifi to shutdown.
|
||||
|
||||
// should always be v1.0 wifi
|
||||
wifi_v1_0_instance_name_ = std::get<0>(GetParam());
|
||||
supplicant_instance_name_ = std::get<1>(GetParam());
|
||||
std::system("/system/bin/start");
|
||||
ASSERT_TRUE(waitForFrameworkReady());
|
||||
|
||||
isP2pOn_ =
|
||||
testing::deviceSupportsFeature("android.hardware.wifi.direct");
|
||||
// Stop Framework
|
||||
std::system("/system/bin/stop");
|
||||
stopSupplicant(wifi_v1_0_instance_name_);
|
||||
startSupplicantAndWaitForHidlService(wifi_v1_0_instance_name_,
|
||||
supplicant_instance_name_);
|
||||
|
@ -88,8 +90,8 @@ class SupplicantHidlTestBase
|
|||
|
||||
virtual void TearDown() override {
|
||||
stopSupplicant(wifi_v1_0_instance_name_);
|
||||
// Start Framework
|
||||
std::system("/system/bin/start");
|
||||
// Start Wi-Fi
|
||||
startWifiFramework();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
|
|
@ -74,5 +74,4 @@ cc_test {
|
|||
"general-tests",
|
||||
"vts",
|
||||
],
|
||||
disable_framework: true,
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue