OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // TODO(gdk): The string-style enumerations are temporary, and will be removed |
| 6 // once full enumeration support is added. Also, the array-of-longs are |
| 7 // temporary and will be removed once there is full ArrayBuffer support. |
| 8 |
| 9 [nodoc] namespace experimental.usb { |
| 10 |
| 11 // A Device encapsulates everything that is needed to communicate with a USB |
| 12 // device. They are returned by findDevice calls and have all of their |
| 13 // fields populated before being returned. |
| 14 dictionary Device { |
| 15 long handle; |
| 16 long vendorId; |
| 17 long productId; |
| 18 }; |
| 19 |
| 20 // ControlTransferInfo represents that parameters to a single USB control |
| 21 // transfer. |
| 22 dictionary ControlTransferInfo { |
| 23 // The direction of this transfer. Must be one of either in or out. |
| 24 DOMString direction; |
| 25 // The intended recipient for this transfer. Must be one of device, |
| 26 // interface, endpoint, or other. |
| 27 DOMString recipient; |
| 28 // The type of this request. Must be one of standard, class, vendor, |
| 29 // or reserved. |
| 30 DOMString requestType; |
| 31 long request; |
| 32 long value; |
| 33 long index; |
| 34 // If this transfer is an input transfer, then this field must be set to |
| 35 // indicate the expected data length. If this is an output transfer, then |
| 36 // this field is ignored. |
| 37 long? length; |
| 38 long[]? data; |
| 39 }; |
| 40 |
| 41 // GenericTransferInfo is used by both bulk and interrupt transfers to |
| 42 // specify the parameters of the transfer. |
| 43 dictionary GenericTransferInfo { |
| 44 // The direction of this transfer. Must be one of in or out. |
| 45 DOMString direction; |
| 46 long endpoint; |
| 47 // If this is an input transfer then this field indicates the size of the |
| 48 // input buffer. If this is an output transfer then this field is ignored. |
| 49 long? length; |
| 50 Blob? data; |
| 51 // If this is an output transfer then this field must be populated. |
| 52 // Otherwise, it will be ignored. |
| 53 long[]? data; |
| 54 }; |
| 55 |
| 56 // When a USB event occurs the event handler specified in findDevice will |
| 57 // have a UsbEvent delivered to it which will contain the result of a |
| 58 // trasnsfer, including returned data. |
| 59 dictionary UsbEvent { |
| 60 // A string indicating the type of the event. Currently will only contain |
| 61 // the value 'transferResult'. |
| 62 DOMString type; |
| 63 // A value of 1 indicates that the transfer was a success. Other values |
| 64 // indicate faliure. |
| 65 long? resultCode; |
| 66 // If the transfer was an input transfer then this field will contain all |
| 67 // of the input data requested. |
| 68 long[]? data; |
| 69 |
| 70 // The following fields are used for internal event routing and can be |
| 71 // ignored. |
| 72 [nodoc] boolean isFinalEvent; |
| 73 [nodoc] long srcId; |
| 74 }; |
| 75 |
| 76 callback OnEventCallback = void (UsbEvent event); |
| 77 |
| 78 dictionary DeviceOptions { |
| 79 // The schema generator does not support dictionaries with only events. |
| 80 // Ignore this field. |
| 81 [nodoc] long? dummyValue; |
| 82 // Invoked by the extension API whenever an event occurs the device(s) |
| 83 // that this DeviceOptions is associated with. |
| 84 OnEventCallback? onEvent; |
| 85 }; |
| 86 |
| 87 callback FindDeviceCallback = void (optional Device device); |
| 88 callback TransferCallback = void (); |
| 89 |
| 90 interface Functions { |
| 91 // Finds the first instance of the USB device specified by the vendorId/ |
| 92 // productId pair and, if permissions allow, opens it for use. |
| 93 // If the device is successfully opened, invokes the provided callback with |
| 94 // the Device object. |
| 95 // |vendorId|: The vendor ID of the USB device to find. |
| 96 // |productId|: The product ID of the USB device to find. |
| 97 // |callback|: Invoked with the opened Device on success. |
| 98 static void findDevice(long vendorId, long productId, |
| 99 DeviceOptions options, FindDeviceCallback callback); |
| 100 |
| 101 // Closes an open device instance. Invoking operations on a device after it |
| 102 // has been closed is a safe operation, but causes no action to be taken. |
| 103 // |device|: The device to close. |
| 104 static void closeDevice(Device device); |
| 105 |
| 106 // Performs a control transfer on the specified device. See the |
| 107 // ControlTransferInfo structure for the parameters required to make a |
| 108 // transfer. |
| 109 // |device|: An open device to make the transfer on. |
| 110 // |transferInfo|: The parameters to the transfer. See ControlTransferInfo. |
| 111 // |callback|: Invoked once the transfer has completed. |
| 112 static void controlTransfer(Device device, |
| 113 ControlTransferInfo transferInfo, optional TransferCallback callback); |
| 114 |
| 115 // Performs a bulk transfer on the specified device. |
| 116 // |device|: An open device to make the transfer on. |
| 117 // |transferInfo|: The paramters to the transfer. See GenericTransferInfo. |
| 118 // |callback|: Invoked once the transfer has completed. |
| 119 static void bulkTransfer(Device device, GenericTransferInfo transferInfo, |
| 120 optional TransferCallback callback); |
| 121 |
| 122 // Performs a control transfer on the specified device. |
| 123 // |device|: An open device to make the transfer on. |
| 124 // |transferInfo|: The paramters to the transfer. See GenericTransferInfo. |
| 125 // |callback|: Invoked once the transfer has completed. |
| 126 static void interruptTransfer(Device device, |
| 127 GenericTransferInfo transferInfo, optional TransferCallback callback); |
| 128 }; |
| 129 |
| 130 interface Events { |
| 131 static void onEvent(UsbEvent event); |
| 132 }; |
| 133 |
| 134 }; |
OLD | NEW |