/**@class android.bluetooth.BluetoothHidDevice
 implements android.bluetooth.BluetoothProfile

@extends java.lang.Object

 Provides the public APIs to control the Bluetooth HID Device profile.

 <p>BluetoothHidDevice is a proxy object for controlling the Bluetooth HID Device Service via IPC.
 Use {@link android.bluetooth.BluetoothAdapter#getProfileProxy} to get the BluetoothHidDevice proxy object.
*/
var BluetoothHidDevice = {

/** Intent used to broadcast the change in connection state of the Input Host profile.

 <p>This intent will have 3 extras:

 <ul>
   <li>{@link #EXTRA_STATE} - The current state of the profile.
   <li>{@link #EXTRA_PREVIOUS_STATE}- The previous state of the profile.
   <li>{@link android.bluetooth.BluetoothDevice#EXTRA_DEVICE} - The remote device.
 </ul>

 <p>{@link #EXTRA_STATE} or {@link #EXTRA_PREVIOUS_STATE} can be any of {@link #STATE_DISCONNECTED}, {@link #STATE_CONNECTING}, {@link #STATE_CONNECTED}, {@link #STATE_DISCONNECTING}.

 <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to receive.
*/
ACTION_CONNECTION_STATE_CHANGED : "android.bluetooth.hiddevice.profile.action.CONNECTION_STATE_CHANGED",
/** Constant representing unspecified HID device subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS1_NONE : "0",
/** Constant representing keyboard subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS1_KEYBOARD : "64",
/** Constant representing mouse subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS1_MOUSE : "-128",
/** Constant representing combo keyboard and mouse subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS1_COMBO : "-64",
/** Constant representing uncategorized HID device subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS2_UNCATEGORIZED : "0",
/** Constant representing joystick subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS2_JOYSTICK : "1",
/** Constant representing gamepad subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS2_GAMEPAD : "2",
/** Constant representing remote control subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS2_REMOTE_CONTROL : "3",
/** Constant representing sensing device subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS2_SENSING_DEVICE : "4",
/** Constant representing digitizer tablet subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS2_DIGITIZER_TABLET : "5",
/** Constant representing card reader subclass.

 @see #registerApp (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     BluetoothHidDeviceAppQosSettings, Executor, Callback)
*/
SUBCLASS2_CARD_READER : "6",
/** Constant representing HID Input Report type.

 @see Callback#onGetReport(BluetoothDevice, byte, byte, int)
 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
 @see Callback#onInterruptData(BluetoothDevice, byte, byte[])
*/
REPORT_TYPE_INPUT : "1",
/** Constant representing HID Output Report type.

 @see Callback#onGetReport(BluetoothDevice, byte, byte, int)
 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
 @see Callback#onInterruptData(BluetoothDevice, byte, byte[])
*/
REPORT_TYPE_OUTPUT : "2",
/** Constant representing HID Feature Report type.

 @see Callback#onGetReport(BluetoothDevice, byte, byte, int)
 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
 @see Callback#onInterruptData(BluetoothDevice, byte, byte[])
*/
REPORT_TYPE_FEATURE : "3",
/** Constant representing success response for Set Report.

 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
*/
ERROR_RSP_SUCCESS : "0",
/** Constant representing error response for Set Report due to "not ready".

 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
*/
ERROR_RSP_NOT_READY : "1",
/** Constant representing error response for Set Report due to "invalid report ID".

 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
*/
ERROR_RSP_INVALID_RPT_ID : "2",
/** Constant representing error response for Set Report due to "unsupported request".

 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
*/
ERROR_RSP_UNSUPPORTED_REQ : "3",
/** Constant representing error response for Set Report due to "invalid parameter".

 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
*/
ERROR_RSP_INVALID_PARAM : "4",
/** Constant representing error response for Set Report with unknown reason.

 @see Callback#onSetReport(BluetoothDevice, byte, byte, byte[])
*/
ERROR_RSP_UNKNOWN : "14",
/** Constant representing boot protocol mode used set by host. Default is always {@link #PROTOCOL_REPORT_MODE} unless notified otherwise.

 @see Callback#onSetProtocol(BluetoothDevice, byte)
*/
PROTOCOL_BOOT_MODE : "0",
/** Constant representing report protocol mode used set by host. Default is always {@link #PROTOCOL_REPORT_MODE} unless notified otherwise.

 @see Callback#onSetProtocol(BluetoothDevice, byte)
*/
PROTOCOL_REPORT_MODE : "1",
/**{@inheritDoc}
*/
getConnectedDevices : function(  ) {},

/**{@inheritDoc}
*/
getDevicesMatchingConnectionStates : function(  ) {},

/**{@inheritDoc}
*/
getConnectionState : function(  ) {},

/**Registers application to be used for HID device. Connections to HID Device are only possible
 when application is registered. Only one application can be registered at one time. When an
 application is registered, the HID Host service will be disabled until it is unregistered.
 When no longer used, application should be unregistered using {@link #unregisterApp}(). The
 app will be automatically unregistered if it is not foreground. The registration status
 should be tracked by the application by handling callback from Callback#onAppStatusChanged.
 The app registration status is not related to the return value of this method.
@param {Object {BluetoothHidDeviceAppSdpSettings}} sdp {@link BluetoothHidDeviceAppSdpSettings} object of HID Device SDP record. The HID
     Device SDP record is required.
@param {Object {BluetoothHidDeviceAppQosSettings}} inQos {@link BluetoothHidDeviceAppQosSettings} object of Incoming QoS Settings. The
     Incoming QoS Settings is not required. Use null or default
     BluetoothHidDeviceAppQosSettings.Builder for default values.
@param {Object {BluetoothHidDeviceAppQosSettings}} outQos {@link BluetoothHidDeviceAppQosSettings} object of Outgoing QoS Settings. The
     Outgoing QoS Settings is not required. Use null or default
     BluetoothHidDeviceAppQosSettings.Builder for default values.
@param {Object {Executor}} executor {@link Executor} object on which callback will be executed. The Executor
     object is required.
@param {Object {BluetoothHidDevice.Callback}} callback {@link Callback} object to which callback messages will be sent. The Callback
     object is required.
@return {Boolean} true if the command is successfully sent; otherwise false.
*/
registerApp : function(  ) {},

/**Unregisters application. Active connection will be disconnected and no new connections will
 be allowed until registered again using {@link #registerApp
 (android.bluetooth.BluetoothHidDeviceAppQosSettings, android.bluetooth.BluetoothHidDeviceAppQosSettings,
 android.bluetooth.BluetoothHidDeviceAppQosSettings, Executor, Callback)}. The registration status should be
 tracked by the application by handling callback from Callback#onAppStatusChanged. The app
 registration status is not related to the return value of this method.
@return {Boolean} true if the command is successfully sent; otherwise false.
*/
unregisterApp : function(  ) {},

/**Sends report to remote host using interrupt channel.
@param {Object {BluetoothDevice}} id Report Id, as defined in descriptor. Can be 0 in case Report Id are not defined in
     descriptor.
@param {Number} data Report data, not including Report Id.
@return {Boolean} true if the command is successfully sent; otherwise false.
*/
sendReport : function(  ) {},

/**Sends report to remote host as reply for GET_REPORT request from {@link android.bluetooth.BluetoothHidDevice.Callback#onGetReport(BluetoothDevice, byte, byte, int)}.
@param {Object {BluetoothDevice}} type Report Type, as in request.
@param {Number} id Report Id, as in request.
@param {Number} data Report data, not including Report Id.
@return {Boolean} true if the command is successfully sent; otherwise false.
*/
replyReport : function(  ) {},

/**Sends error handshake message as reply for invalid SET_REPORT request from {@link android.bluetooth.BluetoothHidDevice.Callback#onSetReport(BluetoothDevice, byte, byte, byte[])}.
@param {Object {BluetoothDevice}} error Error to be sent for SET_REPORT via HANDSHAKE.
@return {Boolean} true if the command is successfully sent; otherwise false.
*/
reportError : function(  ) {},

/**Gets the application name of the current HidDeviceService user.
@return {String} the current user name, or empty string if cannot get the name
 {@hide}
*/
getUserAppName : function(  ) {},

/**Initiates connection to host which is currently paired with this device. If the application
 is not registered, #connect(BluetoothDevice) will fail. The connection state should be
 tracked by the application by handling callback from Callback#onConnectionStateChanged. The
 connection state is not related to the return value of this method.
@return {Boolean} true if the command is successfully sent; otherwise false.
*/
connect : function(  ) {},

/**Disconnects from currently connected host. The connection state should be tracked by the
 application by handling callback from Callback#onConnectionStateChanged. The connection state
 is not related to the return value of this method.
@return {Boolean} true if the command is successfully sent; otherwise false.
*/
disconnect : function(  ) {},


};