Merge changes from topic "evs-v2" into udc-dev

* changes:
  Add VTS testcases for getDisplayStateById
  Uprev the EVS AIDL NDK Version
This commit is contained in:
Hao Chen
2023-03-30 22:41:11 +00:00
committed by Android (Google) Code Review
6 changed files with 68 additions and 14 deletions

View File

@@ -22,7 +22,7 @@ cc_defaults {
name: "EvsHalDefaults",
defaults: ["android.hardware.graphics.common-ndk_static"],
static_libs: [
"android.hardware.automotive.evs-V1-ndk",
"android.hardware.automotive.evs-V2-ndk",
"android.hardware.common-V2-ndk",
],
shared_libs: [

View File

@@ -38,7 +38,7 @@ cc_binary {
],
srcs: [
":libgui_frame_event_aidl",
"src/*.cpp"
"src/*.cpp",
],
shared_libs: [
"android.hardware.graphics.bufferqueue@1.0",
@@ -61,7 +61,7 @@ cc_binary {
],
static_libs: [
"android.frameworks.automotive.display-V1-ndk",
"android.hardware.automotive.evs-V1-ndk",
"android.hardware.automotive.evs-V2-ndk",
"android.hardware.common-V2-ndk",
"libaidlcommonsupport",
"libcutils",

View File

@@ -52,6 +52,7 @@ class EvsEnumerator final : public ::aidl::android::hardware::automotive::evs::B
ndk::ScopedAStatus closeDisplay(const std::shared_ptr<evs::IEvsDisplay>& obj) override;
ndk::ScopedAStatus getDisplayIdList(std::vector<uint8_t>* list) override;
ndk::ScopedAStatus getDisplayState(evs::DisplayState* state) override;
ndk::ScopedAStatus getDisplayStateById(int32_t displayId, evs::DisplayState* state) override;
ndk::ScopedAStatus registerStatusCallback(
const std::shared_ptr<evs::IEvsEnumeratorStatusCallback>& callback) override;
ndk::ScopedAStatus openUltrasonicsArray(
@@ -101,6 +102,8 @@ class EvsEnumerator final : public ::aidl::android::hardware::automotive::evs::B
bool checkPermission();
void closeCamera_impl(const std::shared_ptr<evs::IEvsCamera>& pCamera,
const std::string& cameraId);
ndk::ScopedAStatus getDisplayStateImpl(std::optional<int32_t> displayId,
evs::DisplayState* state);
static bool qualifyCaptureDevice(const char* deviceName);
static CameraRecord* findCameraById(const std::string& cameraId);

View File

@@ -357,24 +357,32 @@ ScopedAStatus EvsEnumerator::closeDisplay(const std::shared_ptr<IEvsDisplay>& ob
ScopedAStatus EvsEnumerator::getDisplayState(DisplayState* state) {
LOG(DEBUG) << __FUNCTION__;
return getDisplayStateImpl(std::nullopt, state);
}
ScopedAStatus EvsEnumerator::getDisplayStateById(int32_t displayId, DisplayState* state) {
LOG(DEBUG) << __FUNCTION__;
return getDisplayStateImpl(displayId, state);
}
ScopedAStatus EvsEnumerator::getDisplayStateImpl(std::optional<int32_t> displayId,
DisplayState* state) {
if (!checkPermission()) {
*state = DisplayState::DEAD;
return ScopedAStatus::fromServiceSpecificError(
static_cast<int>(EvsResult::PERMISSION_DENIED));
}
// TODO(b/262779341): For now we can just return the state of the 1st display. Need to update
// the API later.
const auto& all_displays = mutableActiveDisplays().getAllDisplays();
// Do we still have a display object we think should be active?
if (all_displays.empty()) {
const auto display_search = displayId ? all_displays.find(*displayId) : all_displays.begin();
if (display_search == all_displays.end()) {
*state = DisplayState::NOT_OPEN;
return ScopedAStatus::fromServiceSpecificError(static_cast<int>(EvsResult::OWNERSHIP_LOST));
}
std::shared_ptr<IEvsDisplay> pActiveDisplay = all_displays.begin()->second.displayWeak.lock();
std::shared_ptr<IEvsDisplay> pActiveDisplay = display_search->second.displayWeak.lock();
if (pActiveDisplay) {
return pActiveDisplay->getDisplayState(state);
} else {

View File

@@ -14,18 +14,17 @@
// limitations under the License.
//
package{
package {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "hardware_interfaces_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses : ["hardware_interfaces_license"],
default_applicable_licenses: ["hardware_interfaces_license"],
}
cc_test {
name:
"VtsHalEvsTargetTest",
name: "VtsHalEvsTargetTest",
srcs: [
"*.cpp",
],
@@ -42,7 +41,7 @@ name:
],
static_libs: [
"android.hardware.automotive.evs@common-default-lib",
"android.hardware.automotive.evs-V1-ndk",
"android.hardware.automotive.evs-V2-ndk",
"android.hardware.common-V2-ndk",
"libaidlcommonsupport",
],

View File

@@ -2273,6 +2273,10 @@ TEST_P(EvsAidlTest, DisplayStates) {
DisplayState state;
EXPECT_FALSE(mEnumerator->getDisplayState(&state).isOk());
}
for (const auto displayIdToQuery : displayIds) {
DisplayState state;
EXPECT_FALSE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
}
// Scope to limit the lifetime of the pDisplay pointer, and thus the IEvsDisplay object.
{
@@ -2285,6 +2289,15 @@ TEST_P(EvsAidlTest, DisplayStates) {
EXPECT_TRUE(mEnumerator->getDisplayState(&state).isOk());
EXPECT_EQ(state, DisplayState::NOT_VISIBLE);
}
for (const auto displayIdToQuery : displayIds) {
DisplayState state;
if (displayIdToQuery == displayId) {
EXPECT_TRUE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
EXPECT_EQ(state, DisplayState::NOT_VISIBLE);
} else {
EXPECT_FALSE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
}
}
// Activate the display.
EXPECT_TRUE(pDisplay->setDisplayState(DisplayState::VISIBLE_ON_NEXT_FRAME).isOk());
@@ -2298,6 +2311,15 @@ TEST_P(EvsAidlTest, DisplayStates) {
EXPECT_TRUE(pDisplay->getDisplayState(&state).isOk());
EXPECT_EQ(state, DisplayState::VISIBLE_ON_NEXT_FRAME);
}
for (const auto displayIdToQuery : displayIds) {
DisplayState state;
if (displayIdToQuery == displayId) {
EXPECT_TRUE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
EXPECT_EQ(state, DisplayState::VISIBLE_ON_NEXT_FRAME);
} else {
EXPECT_FALSE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
}
}
// Get the output buffer we'd use to display the imagery.
BufferDesc tgtBuffer;
@@ -2319,6 +2341,15 @@ TEST_P(EvsAidlTest, DisplayStates) {
EXPECT_TRUE(pDisplay->getDisplayState(&state).isOk());
EXPECT_EQ(state, DisplayState::VISIBLE);
}
for (const auto displayIdToQuery : displayIds) {
DisplayState state;
if (displayIdToQuery == displayId) {
EXPECT_TRUE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
EXPECT_EQ(state, DisplayState::VISIBLE);
} else {
EXPECT_FALSE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
}
}
// Turn off the display.
EXPECT_TRUE(pDisplay->setDisplayState(DisplayState::NOT_VISIBLE).isOk());
@@ -2333,6 +2364,15 @@ TEST_P(EvsAidlTest, DisplayStates) {
EXPECT_TRUE(pDisplay->getDisplayState(&state).isOk());
EXPECT_EQ(state, DisplayState::NOT_VISIBLE);
}
for (const auto displayIdToQuery : displayIds) {
DisplayState state;
if (displayIdToQuery == displayId) {
EXPECT_TRUE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
EXPECT_EQ(state, DisplayState::NOT_VISIBLE);
} else {
EXPECT_FALSE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
}
}
// Close the display.
mEnumerator->closeDisplay(pDisplay);
@@ -2348,6 +2388,10 @@ TEST_P(EvsAidlTest, DisplayStates) {
DisplayState state;
EXPECT_FALSE(mEnumerator->getDisplayState(&state).isOk());
}
for (const auto displayIdToQuery : displayIds) {
DisplayState state;
EXPECT_FALSE(mEnumerator->getDisplayStateById(displayIdToQuery, &state).isOk());
}
}
}