// 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. // http://wicg.github.io/webusb/#idl-def-usbtransferstatus enum USBTransferStatus { "ok", "stall", "babble" }; // http://wicg.github.io/webusb/#device-usage [ GarbageCollected, RuntimeEnabled=WebUSB, ] interface USBDevice { readonly attribute DOMString guid; 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 sequence configurations; [CallWith=ScriptState] Promise open(); [CallWith=ScriptState] Promise close(); [CallWith=ScriptState] Promise getConfiguration(); [CallWith=ScriptState] Promise setConfiguration(octet configurationValue); [CallWith=ScriptState] Promise claimInterface(octet interfaceNumber); [CallWith=ScriptState] Promise releaseInterface(octet interfaceNumber); [CallWith=ScriptState] Promise setInterface(octet interfaceNumber, octet alternateSetting); [CallWith=ScriptState] Promise controlTransferIn(USBControlTransferParameters setup, unsigned short length); [CallWith=ScriptState] Promise controlTransferOut(USBControlTransferParameters setup, optional BufferSource data); [CallWith=ScriptState] Promise clearHalt(octet endpointNumber); [CallWith=ScriptState] Promise transferIn(octet endpointNumber, unsigned long length); [CallWith=ScriptState] Promise transferOut(octet endpointNumber, BufferSource data); [CallWith=ScriptState] Promise isochronousTransferIn(octet endpointNumber, sequence packetLengths); [CallWith=ScriptState] Promise isochronousTransferOut(octet endpointNumber, BufferSource data, sequence packetLengths); [CallWith=ScriptState] Promise reset(); };