summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java84
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),