Correct a display port number extraction from EDID
While the display port number is embedded at the least 8-bit of EDID,
EVS uses only the least 4-bit so may cause conflicts between display
devices that have the same value in the least 4-bit.
This change fixes logics to use all 8-bit value as the port number and
updates config.json with the right display port numbers on the reference
platform. Below command shows the port numbers display devices are
connected to:
$ adb shell lshal \
debug android.hardware.automotive.evs@1.1::IEvsEnumerator/default \
--list display
Display devices available to EVS service:
display port 136
display port 130
Fix: 168931805
Test: Run above example and compare them against below command returns:
$ adb shell dumpsys SurfaceFlinger --display-id
Change-Id: I42b22ba8ef211c0c858e4adf382e590fd9c894b5
Merged-In: I42b22ba8ef211c0c858e4adf382e590fd9c894b5
(cherry picked from commit 56da052387ece35e4f8a26be80fee4c44294e76f)
diff --git a/evs/apps/default/config.json b/evs/apps/default/config.json
index 81c96ae..c914e5b 100644
--- a/evs/apps/default/config.json
+++ b/evs/apps/default/config.json
@@ -8,12 +8,12 @@
},
"displays" : [
{
- "displayPort" : 1,
+ "displayPort" : 136,
"frontRange" : 100,
"rearRange" : 100
},
{
- "displayPort" : 2,
+ "displayPort" : 130,
"frontRange" : 100,
"rearRange" : 100
}
diff --git a/evs/sampleDriver/EvsEnumerator.cpp b/evs/sampleDriver/EvsEnumerator.cpp
index 2dbedb4..731d14b 100644
--- a/evs/sampleDriver/EvsEnumerator.cpp
+++ b/evs/sampleDriver/EvsEnumerator.cpp
@@ -220,7 +220,7 @@
if (displayIds.size() > 0) {
sInternalDisplayId = displayIds[0];
for (const auto& id : displayIds) {
- const auto port = id & 0xF;
+ const auto port = id & 0xFF;
LOG(INFO) << "Display " << std::hex << id
<< " is detected on the port, " << port;
sDisplayPortList.insert_or_assign(port, id);
@@ -510,7 +510,7 @@
if (sDisplayPortList.size() > 0) {
ids.resize(sDisplayPortList.size());
unsigned i = 0;
- ids[i++] = sInternalDisplayId & 0xF;
+ ids[i++] = sInternalDisplayId & 0xFF;
for (const auto& [port, id] : sDisplayPortList) {
if (sInternalDisplayId != id) {
ids[i++] = port;