mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Merge ab/7061308 into stage.
Bug: 180401296 Merged-In: I1512f0aee1f960e809a42448b9aafed0de3dbc2a Change-Id: I12dddc8066b2477f7dce5778ab3dd96d6e43afc4
This commit is contained in:
@@ -34,11 +34,19 @@ class AuthSecretHidlTest : public testing::TestWithParam<std::string> {
|
||||
authsecret = IAuthSecret::getService(GetParam());
|
||||
ASSERT_NE(authsecret, nullptr);
|
||||
|
||||
// Notify LSS to generate PIN code '1234' and corresponding secret.
|
||||
(void)system("cmd lock_settings set-pin 1234");
|
||||
|
||||
// All tests must enroll the correct secret first as this cannot be changed
|
||||
// without a factory reset and the order of tests could change.
|
||||
authsecret->primaryUserCredential(CORRECT_SECRET);
|
||||
}
|
||||
|
||||
static void TearDownTestSuite() {
|
||||
// clean up PIN code after testing
|
||||
(void)system("cmd lock_settings clear --old 1234");
|
||||
}
|
||||
|
||||
sp<IAuthSecret> authsecret;
|
||||
hidl_vec<uint8_t> CORRECT_SECRET{61, 93, 124, 240, 5, 0, 7, 201, 9, 129, 11, 12, 0, 14, 0, 16};
|
||||
hidl_vec<uint8_t> WRONG_SECRET{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
|
||||
|
||||
@@ -72,6 +72,8 @@ using ::android::hardware::automotive::evs::V1_1::BufferDesc;
|
||||
using ::android::hardware::automotive::evs::V1_0::DisplayDesc;
|
||||
using ::android::hardware::automotive::evs::V1_0::DisplayState;
|
||||
using ::android::hardware::graphics::common::V1_0::PixelFormat;
|
||||
using ::android::frameworks::automotive::display::V1_0::HwDisplayConfig;
|
||||
using ::android::frameworks::automotive::display::V1_0::HwDisplayState;
|
||||
using IEvsCamera_1_0 = ::android::hardware::automotive::evs::V1_0::IEvsCamera;
|
||||
using IEvsCamera_1_1 = ::android::hardware::automotive::evs::V1_1::IEvsCamera;
|
||||
using IEvsDisplay_1_0 = ::android::hardware::automotive::evs::V1_0::IEvsDisplay;
|
||||
@@ -303,11 +305,22 @@ TEST_P(EvsHidlTest, CameraOpenClean) {
|
||||
const auto id = 0xFFFFFFFF; // meaningless id
|
||||
hidl_vec<uint8_t> values;
|
||||
auto err = pCam->setExtendedInfo_1_1(id, values);
|
||||
ASSERT_NE(EvsResult::INVALID_ARG, err);
|
||||
if (isLogicalCam) {
|
||||
// Logical camera device does not support setExtendedInfo
|
||||
// method.
|
||||
ASSERT_EQ(EvsResult::INVALID_ARG, err);
|
||||
} else {
|
||||
ASSERT_NE(EvsResult::INVALID_ARG, err);
|
||||
}
|
||||
|
||||
pCam->getExtendedInfo_1_1(id, [](const auto& result, const auto& data) {
|
||||
ASSERT_NE(EvsResult::INVALID_ARG, result);
|
||||
ASSERT_EQ(0, data.size());
|
||||
|
||||
pCam->getExtendedInfo_1_1(id, [&isLogicalCam](const auto& result, const auto& data) {
|
||||
if (isLogicalCam) {
|
||||
ASSERT_EQ(EvsResult::INVALID_ARG, result);
|
||||
} else {
|
||||
ASSERT_NE(EvsResult::INVALID_ARG, result);
|
||||
ASSERT_EQ(0, data.size());
|
||||
}
|
||||
});
|
||||
|
||||
// Explicitly close the camera so resources are released right away
|
||||
@@ -605,7 +618,10 @@ TEST_P(EvsHidlTest, CameraToDisplayRoundTrip) {
|
||||
LOG(INFO) << "Display " << targetDisplayId << " is alreay in use.";
|
||||
|
||||
// Get the display descriptor
|
||||
pDisplay->getDisplayInfo_1_1([](const auto& config, const auto& state) {
|
||||
pDisplay->getDisplayInfo_1_1([](const HwDisplayConfig& config, const HwDisplayState& state) {
|
||||
ASSERT_GT(config.size(), 0);
|
||||
ASSERT_GT(state.size(), 0);
|
||||
|
||||
android::DisplayConfig* pConfig = (android::DisplayConfig*)config.data();
|
||||
const auto width = pConfig->resolution.getWidth();
|
||||
const auto height = pConfig->resolution.getHeight();
|
||||
|
||||
@@ -137,7 +137,6 @@ cc_library_static {
|
||||
local_include_dirs: ["common/include/vhal_v2_0"],
|
||||
export_include_dirs: ["impl"],
|
||||
srcs: [
|
||||
"impl/vhal_v2_0/EmulatedUserHal.cpp",
|
||||
"impl/vhal_v2_0/GeneratorHub.cpp",
|
||||
"impl/vhal_v2_0/JsonFakeValueGenerator.cpp",
|
||||
"impl/vhal_v2_0/LinearFakeValueGenerator.cpp",
|
||||
|
||||
@@ -34,7 +34,7 @@ using namespace android::hardware::automotive::vehicle::V2_0;
|
||||
|
||||
int main(int /* argc */, char* /* argv */ []) {
|
||||
auto store = std::make_unique<VehiclePropertyStore>();
|
||||
auto connector = impl::makeEmulatedPassthroughConnector();
|
||||
auto connector = std::make_unique<impl::EmulatedVehicleConnector>();
|
||||
auto userHal = connector->getEmulatedUserHal();
|
||||
auto hal = std::make_unique<impl::EmulatedVehicleHal>(store.get(), connector.get(), userHal);
|
||||
auto emulator = std::make_unique<impl::VehicleEmulator>(hal.get());
|
||||
|
||||
@@ -417,7 +417,7 @@ const ConfigDeclaration kVehicleProperties[]{
|
||||
.minSampleRate = 1.0f,
|
||||
.maxSampleRate = 2.0f,
|
||||
},
|
||||
.initialValue = {.floatValues = {100.0f}}}, // units in meters
|
||||
.initialValue = {.floatValues = {50000.0f}}}, // units in meters
|
||||
|
||||
{.config =
|
||||
{
|
||||
|
||||
@@ -35,13 +35,33 @@ namespace V2_0 {
|
||||
|
||||
namespace impl {
|
||||
|
||||
class EmulatedPassthroughConnector : public PassthroughConnector {
|
||||
public:
|
||||
bool onDump(const hidl_handle& fd, const hidl_vec<hidl_string>& options) override;
|
||||
};
|
||||
EmulatedUserHal* EmulatedVehicleConnector::getEmulatedUserHal() {
|
||||
return &mEmulatedUserHal;
|
||||
}
|
||||
|
||||
bool EmulatedPassthroughConnector::onDump(const hidl_handle& handle,
|
||||
const hidl_vec<hidl_string>& options) {
|
||||
StatusCode EmulatedVehicleConnector::onSetProperty(const VehiclePropValue& value,
|
||||
bool updateStatus) {
|
||||
if (mEmulatedUserHal.isSupported(value.prop)) {
|
||||
LOG(INFO) << "onSetProperty(): property " << value.prop << " will be handled by UserHal";
|
||||
|
||||
const auto& ret = mEmulatedUserHal.onSetProperty(value);
|
||||
if (!ret.ok()) {
|
||||
LOG(ERROR) << "onSetProperty(): HAL returned error: " << ret.error().message();
|
||||
return StatusCode(ret.error().code());
|
||||
}
|
||||
auto updatedValue = ret.value().get();
|
||||
if (updatedValue != nullptr) {
|
||||
LOG(INFO) << "onSetProperty(): updating property returned by HAL: "
|
||||
<< toString(*updatedValue);
|
||||
onPropertyValueFromCar(*updatedValue, updateStatus);
|
||||
}
|
||||
return StatusCode::OK;
|
||||
}
|
||||
return this->VehicleHalServer::onSetProperty(value, updateStatus);
|
||||
}
|
||||
|
||||
bool EmulatedVehicleConnector::onDump(const hidl_handle& handle,
|
||||
const hidl_vec<hidl_string>& options) {
|
||||
int fd = handle->data[0];
|
||||
|
||||
if (options.size() > 0) {
|
||||
@@ -68,10 +88,6 @@ bool EmulatedPassthroughConnector::onDump(const hidl_handle& handle,
|
||||
return true;
|
||||
}
|
||||
|
||||
PassthroughConnectorPtr makeEmulatedPassthroughConnector() {
|
||||
return std::make_unique<EmulatedPassthroughConnector>();
|
||||
}
|
||||
|
||||
} // namespace impl
|
||||
|
||||
} // namespace V2_0
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <vhal_v2_0/VehicleConnector.h>
|
||||
|
||||
#include "EmulatedUserHal.h"
|
||||
#include "VehicleHalClient.h"
|
||||
#include "VehicleHalServer.h"
|
||||
|
||||
@@ -30,10 +31,20 @@ namespace V2_0 {
|
||||
|
||||
namespace impl {
|
||||
|
||||
using PassthroughConnector = IPassThroughConnector<VehicleHalClient, VehicleHalServer>;
|
||||
using PassthroughConnectorPtr = std::unique_ptr<PassthroughConnector>;
|
||||
class EmulatedVehicleConnector : public IPassThroughConnector<VehicleHalClient, VehicleHalServer> {
|
||||
public:
|
||||
EmulatedVehicleConnector() {}
|
||||
|
||||
PassthroughConnectorPtr makeEmulatedPassthroughConnector();
|
||||
EmulatedUserHal* getEmulatedUserHal();
|
||||
|
||||
// Methods from VehicleHalServer
|
||||
StatusCode onSetProperty(const VehiclePropValue& value, bool updateStatus) override;
|
||||
|
||||
bool onDump(const hidl_handle& fd, const hidl_vec<hidl_string>& options) override;
|
||||
|
||||
private:
|
||||
EmulatedUserHal mEmulatedUserHal;
|
||||
};
|
||||
|
||||
} // namespace impl
|
||||
|
||||
|
||||
@@ -41,10 +41,6 @@ VehiclePropValuePool* VehicleHalServer::getValuePool() const {
|
||||
return mValuePool;
|
||||
}
|
||||
|
||||
EmulatedUserHal* VehicleHalServer::getEmulatedUserHal() {
|
||||
return &mEmulatedUserHal;
|
||||
}
|
||||
|
||||
void VehicleHalServer::setValuePool(VehiclePropValuePool* valuePool) {
|
||||
if (!valuePool) {
|
||||
LOG(WARNING) << __func__ << ": Setting value pool to nullptr!";
|
||||
@@ -185,22 +181,6 @@ VehicleHalServer::VehiclePropValuePtr VehicleHalServer::createHwInputKeyProp(
|
||||
}
|
||||
|
||||
StatusCode VehicleHalServer::onSetProperty(const VehiclePropValue& value, bool updateStatus) {
|
||||
if (mEmulatedUserHal.isSupported(value.prop)) {
|
||||
LOG(INFO) << "onSetProperty(): property " << value.prop << " will be handled by UserHal";
|
||||
|
||||
const auto& ret = mEmulatedUserHal.onSetProperty(value);
|
||||
if (!ret.ok()) {
|
||||
LOG(ERROR) << "onSetProperty(): HAL returned error: " << ret.error().message();
|
||||
return StatusCode(ret.error().code());
|
||||
}
|
||||
auto updatedValue = ret.value().get();
|
||||
if (updatedValue != nullptr) {
|
||||
LOG(INFO) << "onSetProperty(): updating property returned by HAL: "
|
||||
<< toString(*updatedValue);
|
||||
onPropertyValueFromCar(*updatedValue, updateStatus);
|
||||
}
|
||||
return StatusCode::OK;
|
||||
}
|
||||
LOG(DEBUG) << "onSetProperty(" << value.prop << ")";
|
||||
|
||||
// Some properties need to be treated non-trivially
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#include <vhal_v2_0/VehicleObjectPool.h>
|
||||
#include <vhal_v2_0/VehicleServer.h>
|
||||
|
||||
#include "EmulatedUserHal.h"
|
||||
#include "GeneratorHub.h"
|
||||
|
||||
namespace android::hardware::automotive::vehicle::V2_0::impl {
|
||||
@@ -38,8 +37,6 @@ class VehicleHalServer : public IVehicleServer {
|
||||
// Set the Property Value Pool used in this server
|
||||
void setValuePool(VehiclePropValuePool* valuePool);
|
||||
|
||||
EmulatedUserHal* getEmulatedUserHal();
|
||||
|
||||
private:
|
||||
using VehiclePropValuePtr = recyclable_ptr<VehiclePropValue>;
|
||||
|
||||
@@ -56,11 +53,6 @@ class VehicleHalServer : public IVehicleServer {
|
||||
VehiclePropValuePtr createHwInputKeyProp(VehicleHwKeyInputAction action, int32_t keyCode,
|
||||
int32_t targetDisplay);
|
||||
|
||||
// data members
|
||||
|
||||
protected:
|
||||
EmulatedUserHal mEmulatedUserHal;
|
||||
|
||||
private:
|
||||
GeneratorHub mGeneratorHub{
|
||||
std::bind(&VehicleHalServer::onFakeValueGenerated, this, std::placeholders::_1)};
|
||||
|
||||
@@ -780,8 +780,6 @@ cd84ab19c590e0e73dd2307b591a3093ee18147ef95e6d5418644463a6620076 android.hardwar
|
||||
e8c86c69c438da8d1549856c1bb3e2d1b8da52722f8235ff49a30f2cce91742c android.hardware.soundtrigger@2.1::ISoundTriggerHwCallback
|
||||
b9fbb6e2e061ed0960939d48b785e9700210add1f13ed32ecd688d0f1ca20ef7 android.hardware.renderscript@1.0::types
|
||||
0f53d70e1eadf8d987766db4bf6ae2048004682168f4cab118da576787def3fa android.hardware.radio@1.0::types
|
||||
38d65fb20c60a5b823298560fc0825457ecdc49603a4b4e94bf81511790737da android.hardware.radio@1.4::types
|
||||
954c334efd80e8869b66d1ce5fe2755712d96ba4b3c38d415739c330af5fb4cb android.hardware.radio@1.5::types
|
||||
|
||||
# HALs released in Android S
|
||||
# NOTE: waiting to freeze HALs until later in the release
|
||||
|
||||
Reference in New Issue
Block a user