/**@class android.hardware.hdmi.HdmiControlManager
@extends java.lang.Object

 The {@link android.hardware.hdmi.HdmiControlManager} class is used to send HDMI control messages
 to attached CEC devices.

 <p>Provides various HDMI client instances that represent HDMI-CEC logical devices
 hosted in the system. {@link #getTvClient}(), for instance will return an
 {@link android.hardware.hdmi.HdmiTvClient} object if the system is configured to host one. Android system
 can host more than one logical CEC devices. If multiple types are configured they
 all work as if they were independent logical devices running in the system.

 @hide
*/
var HdmiControlManager = {

/** Broadcast Action: Display OSD message.
 <p>Send when the service has a message to display on screen for events
 that need user's attention such as ARC status change.
 <p>Always contains the extra fields {@link #EXTRA_MESSAGE_ID}.
 <p>Requires {@link android.Manifest.permission#HDMI_CEC} to receive.
*/
ACTION_OSD_MESSAGE : "android.hardware.hdmi.action.OSD_MESSAGE",
/** Message that ARC enabled device is connected to invalid port (non-ARC port).
*/
OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT : "1",
/** Message used by TV to receive volume status from Audio Receiver. It should check volume value
 that is retrieved from extra value with the key {@link #EXTRA_MESSAGE_EXTRA_PARAM1}. If the
 value is in range of [0,100], it is current volume of Audio Receiver. And there is another
 value, {@link #AVR_VOLUME_MUTED}, which is used to inform volume mute.
*/
OSD_MESSAGE_AVR_VOLUME_CHANGED : "2",
/** Used as an extra field in the intent {@link #ACTION_OSD_MESSAGE}. Contains the ID of
 the message to display on screen.
*/
EXTRA_MESSAGE_ID : "android.hardware.hdmi.extra.MESSAGE_ID",
/** Used as an extra field in the intent {@link #ACTION_OSD_MESSAGE}. Contains the extra value
 of the message.
*/
EXTRA_MESSAGE_EXTRA_PARAM1 : "android.hardware.hdmi.extra.MESSAGE_EXTRA_PARAM1",
/** Volume value for mute state.
*/
AVR_VOLUME_MUTED : "101",
/***/
POWER_STATUS_UNKNOWN : "-1",
/***/
POWER_STATUS_ON : "0",
/***/
POWER_STATUS_STANDBY : "1",
/***/
POWER_STATUS_TRANSIENT_TO_ON : "2",
/***/
POWER_STATUS_TRANSIENT_TO_STANDBY : "3",
/**Control operation is successfully handled by the framework. */
RESULT_SUCCESS : "0",
/***/
RESULT_TIMEOUT : "1",
/**Source device that the application is using is not available. */
RESULT_SOURCE_NOT_AVAILABLE : "2",
/**Target device that the application is controlling is not available. */
RESULT_TARGET_NOT_AVAILABLE : "3",
/***/
RESULT_ALREADY_IN_PROGRESS : "4",
/***/
RESULT_EXCEPTION : "5",
/***/
RESULT_INCORRECT_MODE : "6",
/***/
RESULT_COMMUNICATION_FAILED : "7",
/***/
DEVICE_EVENT_ADD_DEVICE : "1",
/***/
DEVICE_EVENT_REMOVE_DEVICE : "2",
/***/
DEVICE_EVENT_UPDATE_DEVICE : "3",
/**Recording currently selected source. Indicates the status of a recording. */
ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE : "1",
/**Recording Digital Service. Indicates the status of a recording. */
ONE_TOUCH_RECORD_RECORDING_DIGITAL_SERVICE : "2",
/**Recording Analogue Service. Indicates the status of a recording. */
ONE_TOUCH_RECORD_RECORDING_ANALOGUE_SERVICE : "3",
/**Recording External input. Indicates the status of a recording. */
ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT : "4",
/**No recording – unable to record Digital Service. No suitable tuner. */
ONE_TOUCH_RECORD_UNABLE_DIGITAL_SERVICE : "5",
/**No recording – unable to record Analogue Service. No suitable tuner. */
ONE_TOUCH_RECORD_UNABLE_ANALOGUE_SERVICE : "6",
/** No recording – unable to select required service. as suitable tuner, but the requested
 parameters are invalid or out of range for that tuner.
*/
ONE_TOUCH_RECORD_UNABLE_SELECTED_SERVICE : "7",
/**No recording – invalid External plug number */
ONE_TOUCH_RECORD_INVALID_EXTERNAL_PLUG_NUMBER : "9",
/**No recording – invalid External Physical Address */
ONE_TOUCH_RECORD_INVALID_EXTERNAL_PHYSICAL_ADDRESS : "10",
/**No recording – CA system not supported */
ONE_TOUCH_RECORD_UNSUPPORTED_CA : "11",
/**No Recording – No or Insufficient CA Entitlements” */
ONE_TOUCH_RECORD_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS : "12",
/**No recording – Not allowed to copy source. Source is “copy never”. */
ONE_TOUCH_RECORD_DISALLOW_TO_COPY : "13",
/**No recording – No further copies allowed */
ONE_TOUCH_RECORD_DISALLOW_TO_FUTHER_COPIES : "14",
/**No recording – No media */
ONE_TOUCH_RECORD_NO_MEDIA : "16",
/**No recording – playing */
ONE_TOUCH_RECORD_PLAYING : "17",
/**No recording – already recording */
ONE_TOUCH_RECORD_ALREADY_RECORDING : "18",
/**No recording – media protected */
ONE_TOUCH_RECORD_MEDIA_PROTECTED : "19",
/**No recording – no source signal */
ONE_TOUCH_RECORD_NO_SOURCE_SIGNAL : "20",
/**No recording – media problem */
ONE_TOUCH_RECORD_MEDIA_PROBLEM : "21",
/**No recording – not enough space available */
ONE_TOUCH_RECORD_NOT_ENOUGH_SPACE : "22",
/**No recording – Parental Lock On */
ONE_TOUCH_RECORD_PARENT_LOCK_ON : "23",
/**Recording terminated normally */
ONE_TOUCH_RECORD_RECORDING_TERMINATED_NORMALLY : "26",
/**Recording has already terminated */
ONE_TOUCH_RECORD_RECORDING_ALREADY_TERMINATED : "27",
/**No recording – other reason */
ONE_TOUCH_RECORD_OTHER_REASON : "31",
/**No recording. Previous recording request in progress. */
ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS : "48",
/**No recording. Please check recorder and connection. */
ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION : "49",
/**Cannot record currently displayed source. */
ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN : "50",
/**CEC is disabled. */
ONE_TOUCH_RECORD_CEC_DISABLED : "51",
/**Timer recording type for digital service source. */
TIMER_RECORDING_TYPE_DIGITAL : "1",
/**Timer recording type for analogue service source. */
TIMER_RECORDING_TYPE_ANALOGUE : "2",
/**Timer recording type for external source. */
TIMER_RECORDING_TYPE_EXTERNAL : "3",
/**[Timer Status Data/Media Info] - Media present and not protected. */
TIMER_STATUS_MEDIA_INFO_PRESENT_NOT_PROTECTED : "0",
/**[Timer Status Data/Media Info] - Media present, but protected. */
TIMER_STATUS_MEDIA_INFO_PRESENT_PROTECTED : "1",
/**[Timer Status Data/Media Info] - Media not present. */
TIMER_STATUS_MEDIA_INFO_NOT_PRESENT : "2",
/**[Timer Status Data/Programmed Info] - Enough space available for recording. */
TIMER_STATUS_PROGRAMMED_INFO_ENOUGH_SPACE : "8",
/**[Timer Status Data/Programmed Info] - Not enough space available for recording. */
TIMER_STATUS_PROGRAMMED_INFO_NOT_ENOUGH_SPACE : "9",
/**[Timer Status Data/Programmed Info] - Might not enough space available for recording. */
TIMER_STATUS_PROGRAMMED_INFO_MIGHT_NOT_ENOUGH_SPACE : "11",
/**[Timer Status Data/Programmed Info] - No media info available. */
TIMER_STATUS_PROGRAMMED_INFO_NO_MEDIA_INFO : "10",
/**[Timer Status Data/Not Programmed Error Info] - No free timer available. */
TIMER_STATUS_NOT_PROGRAMMED_NO_FREE_TIME : "1",
/**[Timer Status Data/Not Programmed Error Info] - Date out of range. */
TIMER_STATUS_NOT_PROGRAMMED_DATE_OUT_OF_RANGE : "2",
/**[Timer Status Data/Not Programmed Error Info] - Recording Sequence error. */
TIMER_STATUS_NOT_PROGRAMMED_INVALID_SEQUENCE : "3",
/**[Timer Status Data/Not Programmed Error Info] - Invalid External Plug Number. */
TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PLUG_NUMBER : "4",
/**[Timer Status Data/Not Programmed Error Info] - Invalid External Physical Address. */
TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PHYSICAL_NUMBER : "5",
/**[Timer Status Data/Not Programmed Error Info] - CA system not supported. */
TIMER_STATUS_NOT_PROGRAMMED_CA_NOT_SUPPORTED : "6",
/**[Timer Status Data/Not Programmed Error Info] - No or insufficient CA Entitlements. */
TIMER_STATUS_NOT_PROGRAMMED_NO_CA_ENTITLEMENTS : "7",
/**[Timer Status Data/Not Programmed Error Info] - Does not support resolution. */
TIMER_STATUS_NOT_PROGRAMMED_UNSUPPORTED_RESOLUTION : "8",
/**[Timer Status Data/Not Programmed Error Info] - Parental Lock On. */
TIMER_STATUS_NOT_PROGRAMMED_PARENTAL_LOCK_ON : "9",
/**[Timer Status Data/Not Programmed Error Info] - Clock Failure. */
TIMER_STATUS_NOT_PROGRAMMED_CLOCK_FAILURE : "10",
/**[Timer Status Data/Not Programmed Error Info] - Duplicate: already programmed. */
TIMER_STATUS_NOT_PROGRAMMED_DUPLICATED : "14",
/**No extra error. */
TIMER_RECORDING_RESULT_EXTRA_NO_ERROR : "0",
/**No timer recording - check recorder and connection. */
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION : "1",
/**No timer recording - cannot record selected source. */
TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE : "2",
/**CEC is disabled. */
TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED : "3",
/**Timer not cleared – recording. */
CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING : "0",
/**Timer not cleared – no matching. */
CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING : "1",
/**Timer not cleared – no info available. */
CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_INFO_AVAILABLE : "2",
/**Timer cleared. */
CLEAR_TIMER_STATUS_TIMER_CLEARED : "128",
/**Clear timer error - check recorder and connection. */
CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION : "160",
/**Clear timer error - cannot clear timer for selected source. */
CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE : "161",
/**Clear timer error - CEC is disabled. */
CLEAR_TIMER_STATUS_CEC_DISABLE : "162",
/**The HdmiControlService is started. */
CONTROL_STATE_CHANGED_REASON_START : "0",
/**The state of HdmiControlService is changed by changing of settings. */
CONTROL_STATE_CHANGED_REASON_SETTING : "1",
/**The HdmiControlService is enabled to wake up. */
CONTROL_STATE_CHANGED_REASON_WAKEUP : "2",
/**The HdmiControlService will be disabled to standby. */
CONTROL_STATE_CHANGED_REASON_STANDBY : "3",
/**Gets an object that represents an HDMI-CEC logical device of a specified type.
@param {Number} type CEC device type
@return {Object {android.hardware.hdmi.HdmiClient}} {@link HdmiClient} instance. {@code null} on failure.
 See {@link HdmiDeviceInfo#DEVICE_PLAYBACK}
 See {@link HdmiDeviceInfo#DEVICE_TV}
 See {@link HdmiDeviceInfo#DEVICE_AUDIO_SYSTEM}
*/
getClient : function(  ) {},

/**Gets an object that represents an HDMI-CEC logical device of type playback on the system.

 <p>Used to send HDMI control messages to other devices like TV or audio amplifier through
 HDMI bus. It is also possible to communicate with other logical devices hosted in the same
 system if the system is configured to host more than one type of HDMI-CEC logical devices.
@return {Object {android.hardware.hdmi.HdmiPlaybackClient}} {@link HdmiPlaybackClient} instance. {@code null} on failure.
*/
getPlaybackClient : function(  ) {},

/**Gets an object that represents an HDMI-CEC logical device of type TV on the system.

 <p>Used to send HDMI control messages to other devices and manage them through
 HDMI bus. It is also possible to communicate with other logical devices hosted in the same
 system if the system is configured to host more than one type of HDMI-CEC logical devices.
@return {Object {android.hardware.hdmi.HdmiTvClient}} {@link HdmiTvClient} instance. {@code null} on failure.
*/
getTvClient : function(  ) {},

/**Gets an object that represents an HDMI-CEC logical device of type audio system on the system.

 <p>Used to send HDMI control messages to other devices like TV through HDMI bus. It is also
 possible to communicate with other logical devices hosted in the same system if the system is
 configured to host more than one type of HDMI-CEC logical devices.
@return {Object {android.hardware.hdmi.HdmiAudioSystemClient}} {@link HdmiAudioSystemClient} instance. {@code null} on failure.

 TODO(b/110094868): unhide for Q
@hide 
*/
getAudioSystemClient : function(  ) {},

/**Gets an object that represents an HDMI-CEC logical device of type switch on the system.

 <p>Used to send HDMI control messages to other devices (e.g. TVs) through HDMI bus.
 It is also possible to communicate with other logical devices hosted in the same
 system if the system is configured to host more than one type of HDMI-CEC logical device.
@return {Object {android.hardware.hdmi.HdmiSwitchClient}} {@link HdmiSwitchClient} instance. {@code null} on failure.
@hide 
*/
getSwitchClient : function(  ) {},

/**Get a snapshot of the real-time status of the devices on the CEC bus.

 <p>This only applies to devices with switch functionality, which are devices with one
 or more than one HDMI inputs.
@return {Object {java.util.List}} a list of {@link HdmiDeviceInfo} of the connected CEC devices on the CEC bus. An
 empty list will be returned if there is none.
@hide 
*/
getConnectedDevices : function(  ) {},

/**
@removed 
@hide 
@deprecated Please use {@link #getConnectedDevices()} instead.
*/
getConnectedDevicesList : function(  ) {},

/**Power off the target device by sending CEC commands. Note that this device can't be the
 current device itself.

 <p>The target device info can be obtained by calling {@link #getConnectedDevicesList}().
@param {Object {HdmiDeviceInfo}} deviceInfo {@link HdmiDeviceInfo} of the device to be powered off.
@hide 
*/
powerOffDevice : function(  ) {},

/**
@removed 
@hide 
@deprecated Please use {@link #powerOffDevice(deviceInfo)} instead.
*/
powerOffRemoteDevice : function(  ) {},

/**Power on the target device by sending CEC commands. Note that this device can't be the
 current device itself.

 <p>The target device info can be obtained by calling {@link #getConnectedDevicesList}().
@param {Object {HdmiDeviceInfo}} deviceInfo {@link HdmiDeviceInfo} of the device to be powered on.
@hide 
*/
powerOnDevice : function(  ) {},

/**
@removed 
@hide 
@deprecated Please use {@link #powerOnDevice(deviceInfo)} instead.
*/
powerOnRemoteDevice : function(  ) {},

/**Request the target device to be the new Active Source by sending CEC commands. Note that
 this device can't be the current device itself.

 <p>The target device info can be obtained by calling {@link #getConnectedDevicesList}().

 <p>If the target device responds to the command, the users should see the target device
 streaming on their TVs.
@param {Object {HdmiDeviceInfo}} deviceInfo HdmiDeviceInfo of the target device
@hide 
*/
setActiveSource : function(  ) {},

/**
@removed 
@hide 
@deprecated Please use {@link #setActiveSource(deviceInfo)} instead.
*/
requestRemoteDeviceToBecomeActiveSource : function(  ) {},

/**Controls standby mode of the system. It will also try to turn on/off the connected devices if
 necessary.
@param {Boolean} isStandbyModeOn target status of the system's standby mode
*/
setStandbyMode : function(  ) {},

/**Gets whether the system is in system audio mode.
@hide 
*/
getSystemAudioMode : function(  ) {},

/**Get the physical address of the device.

 <p>Physical address needs to be automatically adjusted when devices are phyiscally or
 electrically added or removed from the device tree. Please see HDMI Specification Version
 1.4b 8.7 Physical Address for more details on the address discovery proccess.
@hide 
*/
getPhysicalAddress : function(  ) {},

/**Check if the target device is connected to the current device.

 <p>The API also returns true if the current device is the target.
@param {Object {HdmiDeviceInfo}} targetDevice {@link HdmiDeviceInfo} of the target device.
@return {Boolean} true if {@code targetDevice} is directly or indirectly
 connected to the current device.
@hide 
*/
isDeviceConnected : function(  ) {},

/**
@removed 
@hide 
@deprecated Please use {@link #isDeviceConnected(targetDevice)} instead.
*/
isRemoteDeviceConnected : function(  ) {},

/**Adds a listener to get informed of {@link android.hardware.hdmi.HdmiHotplugEvent}.

 <p>To stop getting the notification,
 use {@link #removeHotplugEventListener}(HotplugEventListener).
@param {Object {HdmiControlManager.HotplugEventListener}} listener {@link HotplugEventListener} instance
@see HdmiControlManager#removeHotplugEventListener(HotplugEventListener)
*/
addHotplugEventListener : function(  ) {},

/**Removes a listener to stop getting informed of {@link android.hardware.hdmi.HdmiHotplugEvent}.
@param {Object {HdmiControlManager.HotplugEventListener}} listener {@link HotplugEventListener} instance to be removed
*/
removeHotplugEventListener : function(  ) {},


};