| Index: chrome/common/extensions/api/usb.idl
|
| diff --git a/chrome/common/extensions/api/usb.idl b/chrome/common/extensions/api/usb.idl
|
| index 1b757b00ef7db67f38d592f6d90e8107ceea3260..6b6b74c54699192a79b77fd9409b550a767af3c0 100644
|
| --- a/chrome/common/extensions/api/usb.idl
|
| +++ b/chrome/common/extensions/api/usb.idl
|
| @@ -19,10 +19,31 @@ namespace usb {
|
| enum SynchronizationType {asynchronous, adaptive, synchronous};
|
| enum UsageType {data, feedback, explicitFeedback};
|
|
|
| - // A Device encapsulates everything that is needed to communicate with a USB
|
| - // device. They are returned by findDevice calls and have all of their
|
| - // fields populated before being returned.
|
| + // Returned by |getDevices| to identify a connected USB device.
|
| dictionary Device {
|
| + // The id of the USB device. It remains unchanged until the device is
|
| + // unplugged.
|
| + long device;
|
| + long vendorId;
|
| + long productId;
|
| + };
|
| +
|
| + // Returned by |openDevice| to be used for USB communication.
|
| + // Every time a device is opened, a new connection handle is created.
|
| + //
|
| + // A connection handle represents the underlying data structure that contains
|
| + // all the data we need to communicate with a USB device, including the status
|
| + // of interfaces, the pending transfers, the descriptors, and etc. A connectin
|
| + // handle id is different from a USB device id.
|
| + //
|
| + // All connection handles can work together if the device allows it.
|
| + // The connection handle will be automatically closed when the app is reloaded
|
| + // or suspended.
|
| + //
|
| + // When a connection handle is closed, all the interfaces it claimed will be
|
| + // released and all the transfers in progress will be canceled immediately.
|
| + dictionary ConnectionHandle {
|
| + // The id of the USB connection handle.
|
| long handle;
|
| long vendorId;
|
| long productId;
|
| @@ -38,7 +59,7 @@ namespace usb {
|
| SynchronizationType? synchronization;
|
| UsageType? usage;
|
|
|
| - // If this is an interrupt endpoint, this will be 1-255
|
| + // If this is an interrupt endpoint, this will be 1-255.
|
| long? pollingInterval;
|
| };
|
|
|
| @@ -73,7 +94,7 @@ namespace usb {
|
| // this field is ignored.
|
| long? length;
|
|
|
| - // The data payload carried by this transfer. If this is an output tranfer
|
| + // The data payload carried by this transfer. If this is an output transfer
|
| // then this field must be set.
|
| ArrayBuffer? data;
|
| };
|
| @@ -121,109 +142,166 @@ namespace usb {
|
| ArrayBuffer? data;
|
| };
|
|
|
| - // FindDevicesOptions describes the properties of devices which are found and
|
| - // opened via findDevices.
|
| - dictionary FindDevicesOptions {
|
| + // Describes the properties of devices which are found via |getDevices|.
|
| + dictionary EnumerateDevicesOptions {
|
| + long vendorId;
|
| + long productId;
|
| + };
|
| +
|
| + // Describes the properties of devices which are found via |findDevices|.
|
| + dictionary EnumerateDevicesAndRequestAccessOptions {
|
| long vendorId;
|
| long productId;
|
| + // The interface id to request access against.
|
| + // Only available on ChromeOS. It has no effect on other platforms.
|
| long? interfaceId;
|
| };
|
|
|
| callback VoidCallback = void ();
|
| - callback FindDevicesCallback = void (Device[] device);
|
| + callback GetDevicesCallback = void (Device[] devices);
|
| + callback RequestAccessCallback = void (boolean sucess);
|
| + callback OpenDeviceCallback = void (ConnectionHandle handle);
|
| + callback FindDevicesCallback = void (ConnectionHandle[] handles);
|
| callback ListInterfacesCallback = void (InterfaceDescriptor[] descriptors);
|
| callback CloseDeviceCallback = void ();
|
| callback TransferCallback = void (TransferResultInfo info);
|
| callback ResetDeviceCallback = void(boolean result);
|
|
|
| interface Functions {
|
| - // Finds the first instance of the USB device specified by the vendorId/
|
| - // productId pair and, if permissions allow, opens it for use.
|
| - // Upon successfully opening a device the callback is invoked with a
|
| - // populated Device object. On failure, the callback is invoked with null.
|
| + // Lists USB devices specified by vendorId/productId/interfaceId tuple.
|
| // |options|: The properties to search for on target devices.
|
| - // |callback|: Invoked with the opened Device on success.
|
| - static void findDevices(FindDevicesOptions options,
|
| - FindDevicesCallback callback);
|
| + // |callback|: Invoked with a list of |Device|s on complete.
|
| + static void getDevices(EnumerateDevicesOptions options,
|
| + GetDevicesCallback callback);
|
| +
|
| + // This method is ChromeOS specific. Calling this method on other platforms
|
| + // will fail.
|
| + // Requests access from the permission broker to an OS claimed device if the
|
| + // given interface on the device is not claimed.
|
| + //
|
| + // |device|: The device to request access to.
|
| + // |interfaceId|:
|
| + static void requestAccess(Device device,
|
| + long interfaceId,
|
| + RequestAccessCallback callback);
|
| +
|
| + // Opens a USB device returned by |getDevices|.
|
| + // |device|: The device to open.
|
| + // |callback|: Invoked with the created ConnectionHandle on complete.
|
| + static void openDevice(Device device, OpenDeviceCallback callback);
|
| +
|
| + // Finds USB devices specified by the vendorId/productId/interfaceId tuple
|
| + // and, if permissions allow, opens them for use.
|
| + //
|
| + // On Chrome OS, you can specify the interfaceId. In that case the method
|
| + // will request access from permission broker in the same way as in
|
| + // |requestUsbAcess|.
|
| + //
|
| + // If the access request is rejected, or the device is failed to be opened,
|
| + // its connection handle will not be created or returned.
|
| + //
|
| + // Calling this method is equivalent to calling |getDevices| followed by
|
| + // a series of |requestAccess| (if it is on ChromeOs) and |openDevice|
|
| + // calls, and returning all the successfully opened connection handles.
|
| + //
|
| + // |options|: The properties to search for on target devices.
|
| + // |callback|: Invoked with the opened ConnectionHandle on complete.
|
| + static void findDevices(EnumerateDevicesAndRequestAccessOptions options,
|
| + FindDevicesCallback callback);
|
|
|
| - // Closes an open device instance. Invoking operations on a device after it
|
| + // Closes a connection handle. Invoking operations on a device after it
|
| // has been closed is a safe operation, but causes no action to be taken.
|
| - // |device|: The device to close.
|
| + // |handle|: The connection handle to close.
|
| // |callback|: The callback to invoke once the device is closed.
|
| - static void closeDevice(Device device,
|
| - optional CloseDeviceCallback callback);
|
| + static void closeDevice(ConnectionHandle handle,
|
| + optional CloseDeviceCallback callback);
|
|
|
| // Lists all the interfaces on the USB device.
|
| - // |device|: The device from which the interfaces should be listed.
|
| + // |handle|: The device from which the interfaces should be listed.
|
| // |callback|: The callback to invoke when the interfaces are enumerated.
|
| - static void listInterfaces(Device device,
|
| - ListInterfacesCallback callback);
|
| + static void listInterfaces(ConnectionHandle handle,
|
| + ListInterfacesCallback callback);
|
|
|
| // Claims an interface on the specified USB device.
|
| - // |device|: The device on which the interface is to be claimed.
|
| + // Before you can transfer data with endpoints, you must claim their parent
|
| + // interfaces. Only one connection handle on the same host can claim each
|
| + // interface. If the interface is already claimed, this call will fail.
|
| + //
|
| + // You shall call releaseInterface when the interface is not needed anymore.
|
| + //
|
| + // |handle|: The device on which the interface is to be claimed.
|
| // |interface|: The interface number to be claimed.
|
| // |callback|: The callback to invoke once the interface is claimed.
|
| - static void claimInterface(Device device, long interfaceNumber,
|
| - VoidCallback callback);
|
| + static void claimInterface(ConnectionHandle handle, long interfaceNumber,
|
| + VoidCallback callback);
|
|
|
| // Releases a claim to an interface on the provided device.
|
| - // |device|: The device on which the interface is to be released.
|
| + // |handle|: The device on which the interface is to be released.
|
| // |interface|: The interface number to be released.
|
| // |callback|: The callback to invoke once the interface is released.
|
| - static void releaseInterface(Device device, long interfaceNumber,
|
| - VoidCallback callback);
|
| + static void releaseInterface(ConnectionHandle handle, long interfaceNumber,
|
| + VoidCallback callback);
|
|
|
| // Selects an alternate setting on a previously claimed interface on a
|
| // device.
|
| - // |device|: The device on which the interface settings are to be set.
|
| + // |handle|: The device on which the interface settings are to be set.
|
| // |interface|: The interface number to be set.
|
| // |alternateSetting|: The alternate setting to set.
|
| // |callback|: The callback to invoke once the interface setting is set.
|
| - static void setInterfaceAlternateSetting(Device device,
|
| - long interfaceNumber, long alternateSetting, VoidCallback callback);
|
| + static void setInterfaceAlternateSetting(ConnectionHandle handle,
|
| + long interfaceNumber,
|
| + long alternateSetting,
|
| + VoidCallback callback);
|
|
|
| // Performs a control transfer on the specified device. See the
|
| // ControlTransferInfo structure for the parameters required to make a
|
| // transfer.
|
| - // |device|: An open device to make the transfer on.
|
| + //
|
| + // Conceptually control transfer talks to the device itself. You do not need
|
| + // to claim interface 0 to perform a control transfer.
|
| + //
|
| + // |handle|: A connection handle to make the transfer on.
|
| // |transferInfo|: The parameters to the transfer. See ControlTransferInfo.
|
| // |callback|: Invoked once the transfer has completed.
|
| - static void controlTransfer(Device device,
|
| - ControlTransferInfo transferInfo, TransferCallback callback);
|
| + static void controlTransfer(ConnectionHandle handle,
|
| + ControlTransferInfo transferInfo,
|
| + TransferCallback callback);
|
|
|
| // Performs a bulk transfer on the specified device.
|
| - // |device|: An open device to make the transfer on.
|
| - // |transferInfo|: The paramters to the transfer. See GenericTransferInfo.
|
| + // |handle|: A connection handle to make the transfer on.
|
| + // |transferInfo|: The parameters to the transfer. See GenericTransferInfo.
|
| // |callback|: Invoked once the transfer has completed.
|
| - static void bulkTransfer(Device device, GenericTransferInfo transferInfo,
|
| - TransferCallback callback);
|
| + static void bulkTransfer(ConnectionHandle handle,
|
| + GenericTransferInfo transferInfo,
|
| + TransferCallback callback);
|
|
|
| // Performs an interrupt transfer on the specified device.
|
| - // |device|: An open device to make the transfer on.
|
| - // |transferInfo|: The paramters to the transfer. See GenericTransferInfo.
|
| + // |handle|: A connection handle to make the transfer on.
|
| + // |transferInfo|: The parameters to the transfer. See GenericTransferInfo.
|
| // |callback|: Invoked once the transfer has completed.
|
| - static void interruptTransfer(Device device,
|
| - GenericTransferInfo transferInfo, TransferCallback callback);
|
| + static void interruptTransfer(ConnectionHandle handle,
|
| + GenericTransferInfo transferInfo,
|
| + TransferCallback callback);
|
|
|
| // Performs an isochronous transfer on the specific device.
|
| - // |device|: An open device to make the transfer on.
|
| + // |handle|: A connection handle to make the transfer on.
|
| // |transferInfo|: The parameters to the transfer. See
|
| // IsochronousTransferInfo.
|
| // |callback|: Invoked once the transfer has been completed.
|
| - static void isochronousTransfer(Device device,
|
| - IsochronousTransferInfo transferInfo,
|
| - TransferCallback callback);
|
| -
|
| - // Try to reset the USB device and restore the previous status.
|
| - //
|
| - // If the reset fails, the given device will be closed and the USB device
|
| - // will appear to be disconected and reconnected.
|
| - // You must call <code>findDevice</code> again to acquire the device.
|
| + static void isochronousTransfer(ConnectionHandle handle,
|
| + IsochronousTransferInfo transferInfo,
|
| + TransferCallback callback);
|
| +
|
| + // Tries to reset the USB device and restores it to the previous status.
|
| + // If the reset fails, the given connection handle will be closed and the
|
| + // USB device will appear to be disconnected then reconnected.
|
| + // In that case you must call |getDevices| or |findDevices| again to acquire
|
| + // the device.
|
| //
|
| - // |device|: An opened device to reset.
|
| + // |handle|: A connection handle to reset.
|
| // |callback|: Invoked once the device is reset with a boolean indicating
|
| // whether the reset is completed successfully.
|
| - static void resetDevice(Device device,
|
| - ResetDeviceCallback callback);
|
| + static void resetDevice(ConnectionHandle handle,
|
| + ResetDeviceCallback callback);
|
| };
|
| };
|
|
|