Prevent hot plug detection action from multiple device polling
Along with this removed unused code and wrong references in
java doc.
Change-Id: I8b2fd8065f582f60cde5ada0e1669515b6a60f3f
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecController.java b/services/core/java/com/android/server/hdmi/HdmiCecController.java
index c33b35f..10e4b6e 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecController.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecController.java
@@ -65,16 +65,6 @@
private static final byte[] EMPTY_BODY = EmptyArray.BYTE;
- // A message to pass cec send command to IO looper.
- private static final int MSG_SEND_CEC_COMMAND = 1;
- // A message to delegate logical allocation to IO looper.
- private static final int MSG_ALLOCATE_LOGICAL_ADDRESS = 2;
-
- // Message types to handle incoming message in main service looper.
- private final static int MSG_RECEIVE_CEC_COMMAND = 1;
- // A message to report allocated logical address to main control looper.
- private final static int MSG_REPORT_LOGICAL_ADDRESS = 2;
-
private static final int NUM_LOGICAL_ADDRESS = 16;
// Predicate for whether the given logical address is remote device's one or not.
@@ -196,7 +186,15 @@
int curAddress = (startAddress + i) % NUM_LOGICAL_ADDRESS;
if (curAddress != Constants.ADDR_UNREGISTERED
&& deviceType == HdmiUtils.getTypeFromAddress(curAddress)) {
- if (!sendPollMessage(curAddress, curAddress, HdmiConfig.ADDRESS_ALLOCATION_RETRY)) {
+ int failedPollingCount = 0;
+ for (int j = 0; j < HdmiConfig.ADDRESS_ALLOCATION_RETRY; ++j) {
+ if (!sendPollMessage(curAddress, curAddress, 1)) {
+ failedPollingCount++;
+ }
+ }
+
+ // Pick logical address if failed ratio is more than a half of all retries.
+ if (failedPollingCount * 2 > HdmiConfig.ADDRESS_ALLOCATION_RETRY) {
logicalAddress = curAddress;
break;
}
@@ -206,7 +204,7 @@
final int assignedAddress = logicalAddress;
if (callback != null) {
runOnServiceThread(new Runnable() {
- @Override
+ @Override
public void run() {
callback.onAllocated(deviceType, assignedAddress);
}