Package ch.ntb.usb

# Class USB

java.lang.Object
ch.ntb.usb.USB

public class USB extends Object
This class manages all USB devices and defines some USB specific constants.

## Field Summary

Fields
Modifier and Type
Field
Description
`static int`
`FULLSPEED_MAX_BULK_PACKET_SIZE`
The maximum packet size of a bulk transfer when operating in fullspeed (12 MB/s) mode.
`static int`
`HIGHSPEED_MAX_BULK_PACKET_SIZE`
The maximum packet size of a bulk transfer when operating in highspeed (480 MB/s) mode.
`static final int`
`REQ_CLEAR_FEATURE`
This request is used to clear or disable a specific feature (USB spec 9.4.1).
`static final int`
`REQ_GET_CONFIGURATION`
This request returns the current device configuration value (USB spec 9.4.2).
`static final int`
`REQ_GET_DESCRIPTOR`
This request returns the specified descriptor if the descriptor exists (USB spec 9.4.3).
`static final int`
`REQ_GET_INTERFACE`
This request returns the selected alternate setting for the specified interface (USB spec 9.4.4).
`static final int`
`REQ_GET_STATUS`
This request returns status for the specified recipient (USB spec 9.4.5).
`static final int`
`REQ_SET_ADDRESS`
This request sets the device address for all future device accesses (USB spec 9.4.6).
`static final int`
`REQ_SET_CONFIGURATION`
This request sets the device configuration (USB spec 9.4.7).
`static final int`
`REQ_SET_DESCRIPTOR`
This request is optional and may be used to update existing descriptors or new descriptors may be added (USB spec 9.4.8).
`static final int`
`REQ_SET_FEATURE`
This request is used to set or enable a specific feature (USB spec 9.4.9).
`static final int`
`REQ_SET_INTERFACE`
This request allows the host to select an alternate setting for the specified interface (USB spec 9.4.10).
`static final int`
`REQ_SYNCH_FRAME`
This request is used to set and then report an endpoint’s synchronization frame (USB spec 9.4.11).
`static final int`
`REQ_TYPE_DIR_DEVICE_TO_HOST`
Identifies the direction of data transfer in the second phase of the control transfer.
The state of the Direction bit is ignored if the wLength field is zero, signifying there is no Data stage.
Specifies bit 7 of bmRequestType.
`static final int`
`REQ_TYPE_DIR_HOST_TO_DEVICE`
Identifies the direction of data transfer in the second phase of the control transfer.
The state of the Direction bit is ignored if the wLength field is zero, signifying there is no Data stage.
Specifies bit 7 of bmRequestType.
`static final int`
`REQ_TYPE_RECIP_DEVICE`
Specifies the intended recipient of the request.
Requests may be directed to the device, an interface on the device, or a specific endpoint on a device.
`static final int`
`REQ_TYPE_RECIP_ENDPOINT`
Specifies the intended recipient of the request.
Requests may be directed to the device, an interface on the device, or a specific endpoint on a device.
`static final int`
`REQ_TYPE_RECIP_INTERFACE`
Specifies the intended recipient of the request.
Requests may be directed to the device, an interface on the device, or a specific endpoint on a device.
`static final int`
`REQ_TYPE_RECIP_OTHER`
Specifies the intended recipient of the request.
Requests may be directed to the device, an interface on the device, or a specific endpoint on a device.
`static final int`
`REQ_TYPE_TYPE_CLASS`
Specifies the type of the request.
Specifies bits 6..5 of bmRequestType.
`static final int`
`REQ_TYPE_TYPE_RESERVED`
Specifies the type of the request.
Specifies bits 6..5 of bmRequestType.
`static final int`
`REQ_TYPE_TYPE_STANDARD`
Specifies the type of the request.
Specifies bits 6..5 of bmRequestType.
`static final int`
`REQ_TYPE_TYPE_VENDOR`
Specifies the type of the request.
Specifies bits 6..5 of bmRequestType.

## Constructor Summary

Constructors
Constructor
Description
`USB()`

## Method Summary

Modifier and Type
Method
Description
`static Usb_Bus`
`getBus()`
Returns the root `Usb_Bus` element.
`static Device`
`getDevice(short idVendor, short idProduct)`
See `getDevice(short, short, String)`.
`static Device`
`getDevice(short idVendor, short idProduct, String filename)`
Create a new device an register it in a device queue.
`static void`
`init()`
Explicitly calls `LibusbJava.usb_init()`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### REQ_GET_STATUS

public static final int REQ_GET_STATUS
This request returns status for the specified recipient (USB spec 9.4.5).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_CLEAR_FEATURE

public static final int REQ_CLEAR_FEATURE
This request is used to clear or disable a specific feature (USB spec 9.4.1).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_SET_FEATURE

public static final int REQ_SET_FEATURE
This request is used to set or enable a specific feature (USB spec 9.4.9).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_SET_ADDRESS

public static final int REQ_SET_ADDRESS
This request sets the device address for all future device accesses (USB spec 9.4.6).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_GET_DESCRIPTOR

public static final int REQ_GET_DESCRIPTOR
This request returns the specified descriptor if the descriptor exists (USB spec 9.4.3).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_SET_DESCRIPTOR

public static final int REQ_SET_DESCRIPTOR
This request is optional and may be used to update existing descriptors or new descriptors may be added (USB spec 9.4.8).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_GET_CONFIGURATION

public static final int REQ_GET_CONFIGURATION
This request returns the current device configuration value (USB spec 9.4.2).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_SET_CONFIGURATION

public static final int REQ_SET_CONFIGURATION
This request sets the device configuration (USB spec 9.4.7).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_GET_INTERFACE

public static final int REQ_GET_INTERFACE
This request returns the selected alternate setting for the specified interface (USB spec 9.4.4).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_SET_INTERFACE

public static final int REQ_SET_INTERFACE
This request allows the host to select an alternate setting for the specified interface (USB spec 9.4.10).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_SYNCH_FRAME

public static final int REQ_SYNCH_FRAME
This request is used to set and then report an endpoint’s synchronization frame (USB spec 9.4.11).

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_DIR_HOST_TO_DEVICE

public static final int REQ_TYPE_DIR_HOST_TO_DEVICE
Identifies the direction of data transfer in the second phase of the control transfer.
The state of the Direction bit is ignored if the wLength field is zero, signifying there is no Data stage.
Specifies bit 7 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_DIR_DEVICE_TO_HOST

public static final int REQ_TYPE_DIR_DEVICE_TO_HOST
Identifies the direction of data transfer in the second phase of the control transfer.
The state of the Direction bit is ignored if the wLength field is zero, signifying there is no Data stage.
Specifies bit 7 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_TYPE_STANDARD

public static final int REQ_TYPE_TYPE_STANDARD
Specifies the type of the request.
Specifies bits 6..5 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_TYPE_CLASS

public static final int REQ_TYPE_TYPE_CLASS
Specifies the type of the request.
Specifies bits 6..5 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_TYPE_VENDOR

public static final int REQ_TYPE_TYPE_VENDOR
Specifies the type of the request.
Specifies bits 6..5 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_TYPE_RESERVED

public static final int REQ_TYPE_TYPE_RESERVED
Specifies the type of the request.
Specifies bits 6..5 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_RECIP_DEVICE

public static final int REQ_TYPE_RECIP_DEVICE
Specifies the intended recipient of the request.
Requests may be directed to the device, an interface on the device, or a specific endpoint on a device. When an interface or endpoint is specified, the wIndex field identifies the interface or endpoint.
Specifies bits 4..0 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_RECIP_INTERFACE

public static final int REQ_TYPE_RECIP_INTERFACE
Specifies the intended recipient of the request.
Requests may be directed to the device, an interface on the device, or a specific endpoint on a device. When an interface or endpoint is specified, the wIndex field identifies the interface or endpoint.
Specifies bits 4..0 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_RECIP_ENDPOINT

public static final int REQ_TYPE_RECIP_ENDPOINT
Specifies the intended recipient of the request.
Requests may be directed to the device, an interface on the device, or a specific endpoint on a device. When an interface or endpoint is specified, the wIndex field identifies the interface or endpoint.
Specifies bits 4..0 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### REQ_TYPE_RECIP_OTHER

public static final int REQ_TYPE_RECIP_OTHER
Specifies the intended recipient of the request.
Requests may be directed to the device, an interface on the device, or a specific endpoint on a device. When an interface or endpoint is specified, the wIndex field identifies the interface or endpoint.
Specifies bits 4..0 of bmRequestType.

See Also:
  - `Device.controlMsg(int, int, int, int, byte[], int, int, boolean)`
  - Constant Field Values

### HIGHSPEED_MAX_BULK_PACKET_SIZE

public static int HIGHSPEED_MAX_BULK_PACKET_SIZE
The maximum packet size of a bulk transfer when operating in highspeed (480 MB/s) mode.

### FULLSPEED_MAX_BULK_PACKET_SIZE

public static int FULLSPEED_MAX_BULK_PACKET_SIZE
The maximum packet size of a bulk transfer when operating in fullspeed (12 MB/s) mode.

## Constructor Details

### USB

public USB()

## Method Details

### getDevice

public static Device getDevice(short idVendor, short idProduct, String filename)
Create a new device an register it in a device queue. If the device is already registered, a reference to it will be returned.

Parameters:
  `idVendor` - the vendor id of the USB device
  `idProduct` - the product id of the USB device
  `filename` - an optional filename which can be used to distinguish multiple devices with the same vendor and product id.
Returns:
  a newly created device or an already registered device

### getDevice

public static Device getDevice(short idVendor, short idProduct)
See `getDevice(short, short, String)`. The parameter `filename` is set to null.

Parameters:
  `idVendor` -
  `idProduct` -
Returns:
  a newly created device or an already registered device

### getBus

public static Usb_Bus getBus() throws USBException
Returns the root `Usb_Bus` element.

Returns:
  the root `Usb_Bus` element
Throws:
  `USBException`

### init

public static void init()
Explicitly calls `LibusbJava.usb_init()`. Note that you don't need to call this procedure as it is called implicitly when creating a new device with `getDevice(short, short, String)`.