// Copyright 2015 The Chromium Authors // 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 [ Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, ServiceWorker WebUSBOnServiceWorkers, Window WebUSB), SecureContext ] 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 configurations; readonly attribute boolean opened; [CallWith=ScriptState, MeasureAs=UsbDeviceOpen, RaisesException] Promise open(); [CallWith=ScriptState, MeasureAs=UsbDeviceClose, RaisesException] Promise close(); [CallWith=ScriptState, MeasureAs=UsbDeviceForget, RaisesException] Promise forget(); [CallWith=ScriptState, MeasureAs=UsbDeviceSelectConfiguration, RaisesException] Promise selectConfiguration(octet configurationValue); [CallWith=ScriptState, MeasureAs=UsbDeviceClaimInterface, RaisesException] Promise claimInterface(octet interfaceNumber); [CallWith=ScriptState, MeasureAs=UsbDeviceReleaseInterface, RaisesException] Promise releaseInterface(octet interfaceNumber); [CallWith=ScriptState, MeasureAs=UsbDeviceSelectAlternateInterface, RaisesException] Promise selectAlternateInterface(octet interfaceNumber, octet alternateSetting); [CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferIn, RaisesException] Promise controlTransferIn(USBControlTransferParameters setup, unsigned short length); [CallWith=ScriptState, MeasureAs=UsbDeviceControlTransferOut, RaisesException] Promise controlTransferOut(USBControlTransferParameters setup, optional [PassAsSpan] BufferSource data); [CallWith=ScriptState, MeasureAs=UsbDeviceClearHalt, RaisesException] Promise clearHalt(USBDirection direction, octet endpointNumber); [CallWith=ScriptState, MeasureAs=UsbDeviceTransferIn, RaisesException] Promise transferIn(octet endpointNumber, unsigned long length); [CallWith=ScriptState, MeasureAs=UsbDeviceTransferOut, RaisesException] Promise transferOut(octet endpointNumber, [PassAsSpan] BufferSource data); [CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferIn, RaisesException] Promise isochronousTransferIn(octet endpointNumber, sequence packetLengths); [CallWith=ScriptState, MeasureAs=UsbDeviceIsochronousTransferOut, RaisesException] Promise isochronousTransferOut(octet endpointNumber, [PassAsSpan] BufferSource data, sequence packetLengths); [CallWith=ScriptState, MeasureAs=UsbDeviceReset, RaisesException] Promise reset(); };