blob: 4d5dbe8c4a951f2a467be7b6308df952a4b1102a [file] [log] [blame]
// Copyright 2015 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.
// https://wicg.github.io/webusb/#transfers
enum USBTransferStatus {
"ok",
"stall",
"babble"
};
// https://wicg.github.io/webusb/#device-usage
[
RuntimeEnabled=WebUSB,
] interface USBDevice {
readonly attribute octet usbVersionMajor;
readonly attribute octet usbVersionMinor;
readonly attribute octet usbVersionSubminor;
readonly attribute octet deviceClass;
readonly attribute octet deviceSubclass;
readonly attribute octet deviceProtocol;
readonly attribute unsigned short vendorId;
readonly attribute unsigned short productId;
readonly attribute octet deviceVersionMajor;
readonly attribute octet deviceVersionMinor;
readonly attribute octet deviceVersionSubminor;
readonly attribute DOMString? manufacturerName;
readonly attribute DOMString? productName;
readonly attribute DOMString? serialNumber;
readonly attribute USBConfiguration? configuration;
readonly attribute FrozenArray<USBConfiguration> configurations;
readonly attribute boolean opened;
[CallWith=ScriptState, MeasureAs=UsbDeviceOpen] Promise<void> open();
[CallWith=ScriptState, MeasureAs=UsbDeviceClose] Promise<void> close();
[CallWith=ScriptState, MeasureAs=UsbDeviceSelectConfiguration] Promise<void> selectConfiguration(octet configurationValue);
[CallWith=ScriptState, MeasureAs=UsbDeviceClaimInterface] Promise<void> claimInterface(octet interfaceNumber);
[CallWith=ScriptState, MeasureAs=UsbDeviceReleaseInterface] Promise<void> releaseInterface(octet interfaceNumber);
[CallWith=ScriptState, MeasureAs=UsbDeviceSelectAlternateInterface] Promise<void> selectAlternateInterface(octet interfaceNumber, octet alternateSetting);
[CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferIn] Promise<USBInTransferResult> controlTransferIn(USBControlTransferParameters setup, unsigned short length);
[CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferOut] Promise<USBOutTransferResult> controlTransferOut(USBControlTransferParameters setup, optional BufferSource data);
[CallWith=ScriptState, MeasureAs=UsbDeviceClearHalt] Promise<void> clearHalt(USBDirection direction, octet endpointNumber);
[CallWith=ScriptState, MeasureAs=UsbDeviceTransferIn] Promise<USBInTransferResult> transferIn(octet endpointNumber, unsigned long length);
[CallWith=ScriptState, MeasureAs=UsbDeviceTransferOut] Promise<USBOutTransferResult> transferOut(octet endpointNumber, BufferSource data);
[CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferIn] Promise<USBIsochronousInTransferResult> isochronousTransferIn(octet endpointNumber, sequence<unsigned long> packetLengths);
[CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferOut] Promise<UsbIsochronousOutTransferResult> isochronousTransferOut(octet endpointNumber, BufferSource data, sequence<unsigned long> packetLengths);
[CallWith=ScriptState, MeasureAs=UsbDeviceReset] Promise<void> reset();
};