blob: a718ace3883f698d152a1c84534b938fe035aab9 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Use the <code>chrome.hid</code> API to interact with connected HID devices.
// This API provides access to HID operations from within the context of an app.
// Using this API, apps can function as drivers for hardware devices.
namespace hid {
// HID usage pair. Each enumerated device interface exposes an array of
// these objects. Values correspond to those defined by the
// <a href="http://www.usb.org/developers/devclass_docs/HID1_11.pdf>
// HID device class specification</a>.
// |usage_page|: HID usage page identifier.
// |usage|: Page-defined usage identifier.
dictionary HidUsageAndPage {
long usage_page;
long usage;
};
// Returned by <code>getDevices</code> functions to describes a connected HID
// device. Use <code>connect</code> to connect to any of the returned devices.
// |deviceId|: Device opaque ID.
// |vendorId|: Vendor ID.
// |productId|: Product ID.
// |usages|: HID usage pairs exposed by underlying Top-level collections.
dictionary HidDeviceInfo {
long deviceId;
long vendorId;
long productId;
HidUsageAndPage[] usages;
};
// Returned by <code>connect</code> to represent a communication session with
// an HID device. Must be closed with a call to <code>disconnect</code>.
dictionary HidConnectInfo {
long connectionId;
};
// Searching criteria to enumerate devices with.
dictionary GetDevicesOptions {
long vendorId;
long productId;
};
callback GetDevicesCallback = void (HidDeviceInfo[] devices);
callback ConnectCallback = void (HidConnectInfo connection);
callback DisconnectCallback = void ();
// The callback to be invoked when a <code>receive</code> or
// <code>receiveFeatureReport</code> call is finished.
// |data|: The content of the report.
callback ReceiveCallback = void (ArrayBuffer data);
callback SendCallback = void();
interface Functions {
// Enumerate all the connected HID devices specified by the vendorId/
// productId/interfaceId tuple.
// |options|: The properties to search for on target devices.
// |callback|: Invoked with the <code>HidDeviceInfo</code> array on success.
static void getDevices(GetDevicesOptions options,
GetDevicesCallback callback);
// Open a connection to an HID device for communication.
// |deviceId|: The ID of the device to open.
// |callback|: Invoked with an <code>HidConnectInfo</code>.
static void connect(long deviceId,
ConnectCallback callback);
// Disconnect from a device. Invoking operations on a device after calling
// this is safe but has no effect.
// |connectionId|: The connection to close.
// |callback|: The callback to invoke once the device is closed.
static void disconnect(long connectionId,
optional DisconnectCallback callback);
// Receive an Input report from an HID device.
//
// Input reports are returned to the host through the INTERRUPT IN endpoint.
// |connectionId|: The connection from which to receive a report.
// |size|: The size of the Input report to receive.
// |callback|: The callback to invoke with received report.
static void receive(long connectionId,
long size,
ReceiveCallback callback);
// Send an Output report to an HID device.
// <code>send</code> will send the data on the first OUT endpoint, if one
// exists. If one does not exist, the report will be sent through the
// Control endpoint.
//
// |connectionId|: The connection to which to send a report.
// |reportId|: The report ID to use, or <code>0</code> if none.
// |data|: The report data.
// |callback|: The callback to invoke once the write is finished.
static void send(long connectionId,
long reportId,
ArrayBuffer data,
SendCallback callback);
// Receive a Feature report from the device.
//
// |connectionId|: The connection to read Input report from.
// |reportId|: The report ID, or zero if none.
// |size|: The size of the Feature report to receive.
// |callback|: The callback to invoke once the write is finished.
static void receiveFeatureReport(long connectionId,
long reportId,
long size,
ReceiveCallback callback);
// Send a Feature report to the device.
//
// Feature reports are sent over the Control endpoint as a Set_Report
// transfer.
// |connectionId|: The connection to read Input report from.
// |reportId|: The report ID to use, or <code>0</code> if none.
// |data|: The report data.
// |callback|: The callback to invoke once the write is finished.
static void sendFeatureReport(long connectionId,
long reportId,
ArrayBuffer data,
SendCallback callback);
};
};