blob: c6bb316311968db0d462bea3e9e8464635854e3a [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 top-level collection attributes.
// Each enumerated device interface exposes an array of these objects.
// |usagePage|: HID usage page identifier.
// |usage|: Page-defined usage identifier.
// |reportIds|: Report IDs which belong to the collection and to its children.
dictionary HidCollectionInfo {
long usagePage;
long usage;
long[] reportIds;
};
// 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.
// |collections|: Top-level collections from this device's report descriptor.
// |maxInputReportSize|: Top-level collection's max input report size.
// |maxOutputReportSize|: Top-level collection's max output report size.
// |maxFeatureReportSize|: Top-level collection's max feature report size.
dictionary HidDeviceInfo {
long deviceId;
long vendorId;
long productId;
HidCollectionInfo[] collections;
long maxInputReportSize;
long maxOutputReportSize;
long maxFeatureReportSize;
};
// 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> call is finished.
// |reportId|: The ID of the report.
// |data|: The content of the report.
callback ReceiveCallback = void (long reportId, ArrayBuffer data);
// The callback to be invoked when a <code>receiveFeatureReport</code> call
// is finished.
// |data|: The content of the report.
callback ReceiveFeatureReportCallback = void (ArrayBuffer data);
// The callback to be invoked when a <code>send</code> or
// <code>sendFeatureReport</code> call is finished.
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.
// |callback|: The callback to invoke with received report.
static void receive(long connectionId,
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.
// |callback|: The callback to invoke once the write is finished.
static void receiveFeatureReport(long connectionId,
long reportId,
ReceiveFeatureReportCallback 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);
};
};