diff --git a/services/core/java/com/android/server/hdmi/HdmiControlShellCommand.java b/services/core/java/com/android/server/hdmi/HdmiControlShellCommand.java index ee3427f0a383b01335965ac593ff0834fadd1034..a1e6136351161ac87eda5871d9d44ab1bb22c343 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlShellCommand.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlShellCommand.java @@ -70,6 +70,10 @@ final class HdmiControlShellCommand extends ShellCommand { pw.println(" --args <vendor specific arguments>"); pw.println(" [--id <true if vendor command should be sent with vendor id>]"); pw.println(" Send a Vendor Command to the given target device"); + pw.println(" cec_setting get <setting name>"); + pw.println(" Get the current value of a CEC setting"); + pw.println(" cec_setting set <setting name> <value>"); + pw.println(" Set the value of a CEC setting"); } private int handleShellCommand(String cmd) throws RemoteException { @@ -81,6 +85,8 @@ final class HdmiControlShellCommand extends ShellCommand { return oneTouchPlay(pw); case "vendorcommand": return vendorCommand(pw); + case "cec_setting": + return cecSetting(pw); } getErrPrintWriter().println("Unhandled command: " + cmd); @@ -157,4 +163,39 @@ final class HdmiControlShellCommand extends ShellCommand { mBinderService.sendVendorCommand(deviceType, destination, params, hasVendorId); return 0; } + + private int cecSetting(PrintWriter pw) throws RemoteException { + if (getRemainingArgsCount() < 1) { + throw new IllegalArgumentException("Expected at least 1 argument (operation)."); + } + String operation = getNextArgRequired(); + switch (operation) { + case "get": { + String setting = getNextArgRequired(); + try { + String value = mBinderService.getCecSettingStringValue(setting); + pw.println(setting + " = " + value); + } catch (IllegalArgumentException e) { + int intValue = mBinderService.getCecSettingIntValue(setting); + pw.println(setting + " = " + intValue); + } + return 0; + } + case "set": { + String setting = getNextArgRequired(); + String value = getNextArgRequired(); + try { + mBinderService.setCecSettingStringValue(setting, value); + pw.println(setting + " = " + value); + } catch (IllegalArgumentException e) { + int intValue = Integer.parseInt(value); + mBinderService.setCecSettingIntValue(setting, intValue); + pw.println(setting + " = " + intValue); + } + return 0; + } + default: + throw new IllegalArgumentException("Unknown operation: " + operation); + } + } }