OSDN Git Service

TIF: Add information of TvInputHardwareManager to dumpsys
authoryangren <yangren@google.com>
Mon, 15 Feb 2016 08:02:49 +0000 (17:02 +0900)
committeryangren <yangren@google.com>
Wed, 17 Feb 2016 01:32:24 +0000 (10:32 +0900)
Add function dump() to TvInputHardwareManager.

Bug: 22774343
Change-Id: Id4acaa212b4f5dd6e87795d6562ca60986d6a46c

services/core/java/com/android/server/tv/TvInputHardwareManager.java
services/core/java/com/android/server/tv/TvInputManagerService.java

index 4e96d71..a2ce68f 100644 (file)
@@ -24,6 +24,7 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.PackageManager;
 import android.hardware.hdmi.HdmiControlManager;
 import android.hardware.hdmi.HdmiDeviceInfo;
 import android.hardware.hdmi.HdmiHotplugEvent;
@@ -45,6 +46,7 @@ import android.media.tv.ITvInputHardwareCallback;
 import android.media.tv.TvInputHardwareInfo;
 import android.media.tv.TvInputInfo;
 import android.media.tv.TvStreamConfig;
+import android.os.Binder;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
@@ -57,8 +59,11 @@ import android.util.SparseBooleanArray;
 import android.view.KeyEvent;
 import android.view.Surface;
 
+import com.android.internal.util.IndentingPrintWriter;
 import com.android.server.SystemService;
 
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -549,6 +554,70 @@ class TvInputHardwareManager implements TvInputHal.Callback {
         return (float) mCurrentIndex / (float) mCurrentMaxIndex;
     }
 
+    public void dump(FileDescriptor fd, final PrintWriter writer, String[] args) {
+        final IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
+        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+                != PackageManager.PERMISSION_GRANTED) {
+            pw.println("Permission Denial: can't dump TvInputHardwareManager from pid="
+                    + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
+            return;
+        }
+
+        synchronized (mLock) {
+            pw.println("TvInputHardwareManager Info:");
+            pw.increaseIndent();
+            pw.println("Connections Info:");
+            pw.increaseIndent();
+            for (int i = 0; i < mConnections.size(); i++) {
+                int deviceId = mConnections.keyAt(i);
+                Connection mConnection = mConnections.valueAt(i);
+                pw.println("Connection (" + deviceId + "): " + mConnection);
+
+            }
+            pw.decreaseIndent();
+
+            pw.println("HardwareList:");
+            pw.increaseIndent();
+            for (TvInputHardwareInfo tvInputHardwareInfo : mHardwareList) {
+                pw.println(tvInputHardwareInfo);
+            }
+            pw.decreaseIndent();
+
+            pw.println("HdmiDeviceList:");
+            pw.increaseIndent();
+            for (HdmiDeviceInfo hdmiDeviceInfo : mHdmiDeviceList) {
+                pw.println(hdmiDeviceInfo);
+            }
+            pw.decreaseIndent();
+
+            pw.println("HardwareInputMap: TvInputId-> DeviceId");
+            pw.increaseIndent();
+            for (int i = 0 ; i < mHardwareInputIdMap.size(); i++) {
+                int deviceId = mHardwareInputIdMap.keyAt(i);
+                String tvInputId = mHardwareInputIdMap.valueAt(i);
+                pw.println(deviceId + ": " + tvInputId);
+            }
+            pw.decreaseIndent();
+
+            pw.println("HdmiInputIdMap: TvInputId -> HDMI Address");
+            pw.increaseIndent();
+            for (int i = 0; i < mHdmiInputIdMap.size(); i++) {
+                int hdmiAddress = mHdmiInputIdMap.keyAt(i);
+                String tvInputId = mHdmiInputIdMap.valueAt(i);
+                pw.println(hdmiAddress + ": " + tvInputId);
+            }
+            pw.decreaseIndent();
+
+            pw.println("InputMap: inputId -> TvInputInfo");
+            pw.increaseIndent();
+            for(Map.Entry<String, TvInputInfo> entry : mInputMap.entrySet()) {
+                pw.println(entry.getKey() + ": " + entry.getValue());
+            }
+            pw.decreaseIndent();
+            pw.decreaseIndent();
+        }
+    }
+
     private class Connection implements IBinder.DeathRecipient {
         private final TvInputHardwareInfo mHardwareInfo;
         private TvInputInfo mInfo;
@@ -641,6 +710,25 @@ class TvInputHardwareManager implements TvInputHal.Callback {
                 resetLocked(null, null, null, null, null);
             }
         }
+
+        public String toString() {
+            StringBuilder s = new StringBuilder();
+            s.append("Connection {HardwareInfo: ").append(mHardwareInfo.toString()).append(" ");
+            s.append("TvInputInfo: ").append(mInfo).append(" ");
+            s.append("callback: ").append(mCallback).append(" ");
+            if (mConfigs != null) {
+                for (int i = 0; i < mConfigs.length; i++) {
+                    s.append("Config[").append(i).append("]: ").append(mConfigs[i].toString())
+                            .append(" ");
+                }
+            } else {
+                s.append("Configs: ").append(mConfigs).append(" ");
+            }
+            s.append("CallingUid: ").append(mCallingUid).append(" ");
+            s.append("ResolvedUserId: ").append(mResolvedUserId).append(" ");
+            s.append("}");
+            return s.toString();
+        }
     }
 
     private class TvInputHardwareImpl extends ITvInputHardware.Stub {
index c0b4e69..6335828 100644 (file)
@@ -1926,6 +1926,7 @@ public final class TvInputManagerService extends SystemService {
                     pw.decreaseIndent();
                 }
             }
+            mTvInputHardwareManager.dump(fd, writer, args);
         }
     }