diff options
| -rw-r--r-- | services/core/java/com/android/server/tv/TvInputHardwareManager.java | 81 | ||||
| -rw-r--r-- | services/core/java/com/android/server/tv/TvInputManagerService.java | 1 |
2 files changed, 82 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/tv/TvInputHardwareManager.java b/services/core/java/com/android/server/tv/TvInputHardwareManager.java index 4e96d71d7e18..bf281d6fb471 100644 --- a/services/core/java/com/android/server/tv/TvInputHardwareManager.java +++ b/services/core/java/com/android/server/tv/TvInputHardwareManager.java @@ -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,9 +59,13 @@ 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.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; @@ -549,6 +555,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("mConnections: deviceId -> Connection"); + pw.increaseIndent(); + for (int i = 0; i < mConnections.size(); i++) { + int deviceId = mConnections.keyAt(i); + Connection mConnection = mConnections.valueAt(i); + pw.println(deviceId + ": " + mConnection); + + } + pw.decreaseIndent(); + + pw.println("mHardwareList:"); + pw.increaseIndent(); + for (TvInputHardwareInfo tvInputHardwareInfo : mHardwareList) { + pw.println(tvInputHardwareInfo); + } + pw.decreaseIndent(); + + pw.println("mHdmiDeviceList:"); + pw.increaseIndent(); + for (HdmiDeviceInfo hdmiDeviceInfo : mHdmiDeviceList) { + pw.println(hdmiDeviceInfo); + } + pw.decreaseIndent(); + + pw.println("mHardwareInputIdMap: deviceId -> inputId"); + pw.increaseIndent(); + for (int i = 0 ; i < mHardwareInputIdMap.size(); i++) { + int deviceId = mHardwareInputIdMap.keyAt(i); + String inputId = mHardwareInputIdMap.valueAt(i); + pw.println(deviceId + ": " + inputId); + } + pw.decreaseIndent(); + + pw.println("mHdmiInputIdMap: id -> inputId"); + pw.increaseIndent(); + for (int i = 0; i < mHdmiInputIdMap.size(); i++) { + int id = mHdmiInputIdMap.keyAt(i); + String inputId = mHdmiInputIdMap.valueAt(i); + pw.println(id + ": " + inputId); + } + pw.decreaseIndent(); + + pw.println("mInputMap: inputId -> inputInfo"); + 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 +711,17 @@ class TvInputHardwareManager implements TvInputHal.Callback { resetLocked(null, null, null, null, null); } } + + public String toString() { + return "Connection{" + + " mHardwareInfo: " + mHardwareInfo + + ", mInfo: " + mInfo + + ", mCallback: " + mCallback + + ", mConfigs: " + Arrays.toString(mConfigs) + + ", mCallingUid: " + mCallingUid + + ", mResolvedUserId: " + mResolvedUserId + + " }"; + } } private class TvInputHardwareImpl extends ITvInputHardware.Stub { diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java index 628c6270f1d6..8a2729eec805 100644 --- a/services/core/java/com/android/server/tv/TvInputManagerService.java +++ b/services/core/java/com/android/server/tv/TvInputManagerService.java @@ -1923,6 +1923,7 @@ public final class TvInputManagerService extends SystemService { pw.decreaseIndent(); } } + mTvInputHardwareManager.dump(fd, writer, args); } } |