Loading services/core/java/com/android/server/ExtconUEventObserver.java +0 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,6 @@ public abstract class ExtconUEventObserver extends UEventObserver { public static final String EXTCON_MICROPHONE = "MICROPHONE"; public static final String EXTCON_HEADPHONE = "HEADPHONE"; public static final String EXTCON_DP = "DP"; public static final String EXTCON_HDMI = "HDMI"; public static final String EXTCON_MHL = "MHL"; public static final String EXTCON_DVI = "DVI"; Loading services/core/java/com/android/server/WiredAccessoryManager.java +44 −12 Original line number Diff line number Diff line Loading @@ -73,13 +73,19 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { private static final String NAME_DP_AUDIO = "soc:qcom,msm-ext-disp"; // within a device, a single stream supports DP private static final String[] DP_AUDIO_CONNS = { NAME_DP_AUDIO + "/3/1", NAME_DP_AUDIO + "/2/1", NAME_DP_AUDIO + "/1/1", NAME_DP_AUDIO + "/0/1", NAME_DP_AUDIO + "/3/0", NAME_DP_AUDIO + "/2/0", NAME_DP_AUDIO + "/1/0", NAME_DP_AUDIO + "/0/0" }; private static final String NAME_HDMI = "hdmi"; private static final String NAME_HDMI = "hdmi"; private static final String INTF_DP = "DP"; private static final String INTF_HDMI = "HDMI"; private static final int MSG_NEW_DEVICE_STATE = 1; private static final int MSG_SYSTEM_READY = 2; Loading @@ -90,7 +96,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { private int mHeadsetState; private int mDpCount; private String mDetectedIntf = INTF_DP; private int mSwitchValues; private final WiredAccessoryObserver mObserver; Loading Loading @@ -132,7 +138,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { } if (ExtconUEventObserver.extconExists() && mExtconObserver.uEventCount() > 0) { if (ExtconUEventObserver.extconExists() && mExtconObserver.uEventCount() > 0 && false) { if (mUseDevInputEventForAudioJack) { Log.w(TAG, "Both input event and extcon are used for audio jack," + " please just choose one."); Loading Loading @@ -384,6 +390,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { class WiredAccessoryObserver extends UEventObserver { private final List<UEventInfo> mUEventInfo; private List<String> mDevPath = new ArrayList<String>(); public WiredAccessoryObserver() { mUEventInfo = makeObservedUEventList(); Loading @@ -398,12 +405,17 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { UEventInfo uei = mUEventInfo.get(i); try { int curState; FileReader file = new FileReader(uei.getSwitchStatePath()); String switchStatePath = uei.getSwitchStatePath(); FileReader file = new FileReader(switchStatePath); int len = file.read(buffer, 0, 1024); file.close(); curState = Integer.parseInt((new String(buffer, 0, len)).trim()); if (curState > 0) { int index = switchStatePath.lastIndexOf("."); if (switchStatePath.substring(index + 1, index + 2).equals("1")) { mDetectedIntf = INTF_HDMI; } updateStateLocked(uei.getDevPath(), uei.getDevName(), curState); } } catch (FileNotFoundException e) { Loading @@ -421,7 +433,13 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { // observe three UEVENTs for (int i = 0; i < mUEventInfo.size(); ++i) { UEventInfo uei = mUEventInfo.get(i); String devPath = uei.getDevPath(); if (mDevPath.contains(devPath)) continue; startObserving("DEVPATH=" + uei.getDevPath()); mDevPath.add(devPath); } } Loading Loading @@ -506,12 +524,15 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { if (equals > offset) { String intfName = stateStr.substring(offset, equals); if (intfName.equals("DP")) { if (intfName.equals("DP") || intfName.equals("HDMI")) { state = Integer.parseInt( stateStr.substring(equals + 1, equals + 2)); if (state == 1) { mDetectedIntf = intfName; break; } } } offset = equals + 3; } Loading Loading @@ -562,6 +583,11 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { if (state == 1 && mDpCount > 0) { uei.setStreamIndex(mDpCount); } if (state == 1) { int newControllerIdx = (mDetectedIntf.equals(INTF_DP)) ? 0 : 1; uei.setCableIndex(newControllerIdx); } updateLocked(name, uei.getDevAddress(), uei.computeNewHeadsetState(mHeadsetState, state)); return; Loading Loading @@ -668,8 +694,11 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { file.close(); String cableName = (new String(buffer, 0, len)).trim(); if (cableName.equals("DP") && index == cableIndex) { mCableIndex = cableIndex; if (cableName.equals("HDMI") && index == cableIndex) { mCableIndex = index; break; } else if (cableName.equals("DP") && index == cableIndex) { mCableIndex = index; break; } else { index++; Loading @@ -689,6 +718,13 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { mDevAddress = allExceptStreamIdx + String.valueOf(streamIndex); } public void setCableIndex(int cableIndex) { int index = mDevAddress.indexOf("="); String changeControllerIdx = mDevAddress.substring(0, index + 1) + cableIndex + mDevAddress.substring(index + 2); mDevAddress = changeControllerIdx; } public String getDevName() { return mDevName; } Loading Loading @@ -738,7 +774,6 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { mExtconInfos = ExtconInfo.getExtconInfoForTypes(new String[] { ExtconInfo.EXTCON_HEADPHONE, ExtconInfo.EXTCON_MICROPHONE, ExtconInfo.EXTCON_DP, ExtconInfo.EXTCON_HDMI, ExtconInfo.EXTCON_LINE_OUT, }); Loading Loading @@ -787,9 +822,6 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { if (extconInfo.hasCableType(ExtconInfo.EXTCON_HDMI)) { updateBit(maskAndState, BIT_HDMI_AUDIO, status, ExtconInfo.EXTCON_HDMI); } if (extconInfo.hasCableType(ExtconInfo.EXTCON_DP)) { updateBit(maskAndState, BIT_HDMI_AUDIO, status, ExtconInfo.EXTCON_DP); } if (extconInfo.hasCableType(ExtconInfo.EXTCON_LINE_OUT)) { updateBit(maskAndState, BIT_LINEOUT, status, ExtconInfo.EXTCON_LINE_OUT); } Loading Loading
services/core/java/com/android/server/ExtconUEventObserver.java +0 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,6 @@ public abstract class ExtconUEventObserver extends UEventObserver { public static final String EXTCON_MICROPHONE = "MICROPHONE"; public static final String EXTCON_HEADPHONE = "HEADPHONE"; public static final String EXTCON_DP = "DP"; public static final String EXTCON_HDMI = "HDMI"; public static final String EXTCON_MHL = "MHL"; public static final String EXTCON_DVI = "DVI"; Loading
services/core/java/com/android/server/WiredAccessoryManager.java +44 −12 Original line number Diff line number Diff line Loading @@ -73,13 +73,19 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { private static final String NAME_DP_AUDIO = "soc:qcom,msm-ext-disp"; // within a device, a single stream supports DP private static final String[] DP_AUDIO_CONNS = { NAME_DP_AUDIO + "/3/1", NAME_DP_AUDIO + "/2/1", NAME_DP_AUDIO + "/1/1", NAME_DP_AUDIO + "/0/1", NAME_DP_AUDIO + "/3/0", NAME_DP_AUDIO + "/2/0", NAME_DP_AUDIO + "/1/0", NAME_DP_AUDIO + "/0/0" }; private static final String NAME_HDMI = "hdmi"; private static final String NAME_HDMI = "hdmi"; private static final String INTF_DP = "DP"; private static final String INTF_HDMI = "HDMI"; private static final int MSG_NEW_DEVICE_STATE = 1; private static final int MSG_SYSTEM_READY = 2; Loading @@ -90,7 +96,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { private int mHeadsetState; private int mDpCount; private String mDetectedIntf = INTF_DP; private int mSwitchValues; private final WiredAccessoryObserver mObserver; Loading Loading @@ -132,7 +138,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { } if (ExtconUEventObserver.extconExists() && mExtconObserver.uEventCount() > 0) { if (ExtconUEventObserver.extconExists() && mExtconObserver.uEventCount() > 0 && false) { if (mUseDevInputEventForAudioJack) { Log.w(TAG, "Both input event and extcon are used for audio jack," + " please just choose one."); Loading Loading @@ -384,6 +390,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { class WiredAccessoryObserver extends UEventObserver { private final List<UEventInfo> mUEventInfo; private List<String> mDevPath = new ArrayList<String>(); public WiredAccessoryObserver() { mUEventInfo = makeObservedUEventList(); Loading @@ -398,12 +405,17 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { UEventInfo uei = mUEventInfo.get(i); try { int curState; FileReader file = new FileReader(uei.getSwitchStatePath()); String switchStatePath = uei.getSwitchStatePath(); FileReader file = new FileReader(switchStatePath); int len = file.read(buffer, 0, 1024); file.close(); curState = Integer.parseInt((new String(buffer, 0, len)).trim()); if (curState > 0) { int index = switchStatePath.lastIndexOf("."); if (switchStatePath.substring(index + 1, index + 2).equals("1")) { mDetectedIntf = INTF_HDMI; } updateStateLocked(uei.getDevPath(), uei.getDevName(), curState); } } catch (FileNotFoundException e) { Loading @@ -421,7 +433,13 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { // observe three UEVENTs for (int i = 0; i < mUEventInfo.size(); ++i) { UEventInfo uei = mUEventInfo.get(i); String devPath = uei.getDevPath(); if (mDevPath.contains(devPath)) continue; startObserving("DEVPATH=" + uei.getDevPath()); mDevPath.add(devPath); } } Loading Loading @@ -506,12 +524,15 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { if (equals > offset) { String intfName = stateStr.substring(offset, equals); if (intfName.equals("DP")) { if (intfName.equals("DP") || intfName.equals("HDMI")) { state = Integer.parseInt( stateStr.substring(equals + 1, equals + 2)); if (state == 1) { mDetectedIntf = intfName; break; } } } offset = equals + 3; } Loading Loading @@ -562,6 +583,11 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { if (state == 1 && mDpCount > 0) { uei.setStreamIndex(mDpCount); } if (state == 1) { int newControllerIdx = (mDetectedIntf.equals(INTF_DP)) ? 0 : 1; uei.setCableIndex(newControllerIdx); } updateLocked(name, uei.getDevAddress(), uei.computeNewHeadsetState(mHeadsetState, state)); return; Loading Loading @@ -668,8 +694,11 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { file.close(); String cableName = (new String(buffer, 0, len)).trim(); if (cableName.equals("DP") && index == cableIndex) { mCableIndex = cableIndex; if (cableName.equals("HDMI") && index == cableIndex) { mCableIndex = index; break; } else if (cableName.equals("DP") && index == cableIndex) { mCableIndex = index; break; } else { index++; Loading @@ -689,6 +718,13 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { mDevAddress = allExceptStreamIdx + String.valueOf(streamIndex); } public void setCableIndex(int cableIndex) { int index = mDevAddress.indexOf("="); String changeControllerIdx = mDevAddress.substring(0, index + 1) + cableIndex + mDevAddress.substring(index + 2); mDevAddress = changeControllerIdx; } public String getDevName() { return mDevName; } Loading Loading @@ -738,7 +774,6 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { mExtconInfos = ExtconInfo.getExtconInfoForTypes(new String[] { ExtconInfo.EXTCON_HEADPHONE, ExtconInfo.EXTCON_MICROPHONE, ExtconInfo.EXTCON_DP, ExtconInfo.EXTCON_HDMI, ExtconInfo.EXTCON_LINE_OUT, }); Loading Loading @@ -787,9 +822,6 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { if (extconInfo.hasCableType(ExtconInfo.EXTCON_HDMI)) { updateBit(maskAndState, BIT_HDMI_AUDIO, status, ExtconInfo.EXTCON_HDMI); } if (extconInfo.hasCableType(ExtconInfo.EXTCON_DP)) { updateBit(maskAndState, BIT_HDMI_AUDIO, status, ExtconInfo.EXTCON_DP); } if (extconInfo.hasCableType(ExtconInfo.EXTCON_LINE_OUT)) { updateBit(maskAndState, BIT_LINEOUT, status, ExtconInfo.EXTCON_LINE_OUT); } Loading