diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java b/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java index 9a51e3c4e234..79e84eea85df 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java @@ -211,6 +211,28 @@ public class HdmiCecMessageBuilder { } /** + * Build <Initiate Arc> + * + * @param src source address of command + * @param dest destination address of command + * @return newly created {@link HdmiCecMessage} + */ + static HdmiCecMessage buildInitiateArc(int src, int dest) { + return buildCommand(src, dest, Constants.MESSAGE_INITIATE_ARC); + } + + /** + * Build <Terminate Arc> + * + * @param src source address of command + * @param dest destination address of command + * @return newly created {@link HdmiCecMessage} + */ + static HdmiCecMessage buildTerminateArc(int src, int dest) { + return buildCommand(src, dest, Constants.MESSAGE_TERMINATE_ARC); + } + + /** * Build <Request Arc Termination> * * @param src source address of command @@ -372,6 +394,34 @@ public class HdmiCecMessageBuilder { } /** + * Build <Set System Audio Mode> command. + * + * @param src source address of command + * @param des destination address of command + * @param systemAudioStatus whether to set System Audio Mode on or off + * @return newly created {@link HdmiCecMessage} + */ + static HdmiCecMessage buildSetSystemAudioMode(int src, int des, boolean systemAudioStatus) { + return buildCommandWithBooleanParam(src, des, Constants.MESSAGE_SET_SYSTEM_AUDIO_MODE, + systemAudioStatus + ); + } + + /** + * Build <Report System Audio Mode> command. + * + * @param src source address of command + * @param des destination address of command + * @param systemAudioStatus whether System Audio Mode is on or off + * @return newly created {@link HdmiCecMessage} + */ + static HdmiCecMessage buildReportSystemAudioMode(int src, int des, boolean systemAudioStatus) { + return buildCommandWithBooleanParam(src, des, Constants.MESSAGE_SYSTEM_AUDIO_MODE_STATUS, + systemAudioStatus + ); + } + + /** * Build <Give Audio Status> command. * * @param src source address of command @@ -383,6 +433,23 @@ public class HdmiCecMessageBuilder { } /** + * Build <Report Audio Status> command. + * + * @param src source address of command + * @param dest destination address of command + * @param volume volume level of current device in param + * @param mute mute status of current device in param + * @return newly created {@link HdmiCecMessage} + */ + static HdmiCecMessage buildReportAudioStatus(int src, int dest, int volume, boolean mute) { + byte[] params = new byte[] { + mute ? (byte) (1 & 0xFF) : (byte) (0 & 0xFF), + (byte) (volume & 0xFF) + }; + return buildCommand(src, dest, Constants.MESSAGE_REPORT_AUDIO_STATUS, params); + } + + /** * Build <User Control Pressed> command. * * @param src source address of command @@ -592,6 +659,23 @@ public class HdmiCecMessageBuilder { return new HdmiCecMessage(src, dest, opcode, params); } + /** + * Build a {@link HdmiCecMessage} with a boolean param and other given values. + * + * @param src source address of command + * @param des destination address of command + * @param opcode opcode for a message + * @param param boolean param for building the command + * @return newly created {@link HdmiCecMessage} + */ + private static HdmiCecMessage buildCommandWithBooleanParam(int src, int des, + int opcode, boolean param) { + byte[] params = new byte[]{ + param ? (byte) 0b1 : 0b0 + }; + return buildCommand(src, des, opcode, params); + } + private static byte[] physicalAddressToParam(int physicalAddress) { return new byte[] { (byte) ((physicalAddress >> 8) & 0xFF), |