next up previous contents
Next: 3.6 USB Data Transfer Up: 3. WinDriver USB Overview Previous: 3.4 Data Flow in   Contents


3.5 USB Data Exchange

The USB standard supports two kinds of data exchange between a host and a device: functional data exchange and control exchange.

Functional Data Exchange
is used to move data to and from the device. There are three types of USB data transfers: Bulk, Interrupt and Isochronous.

Control Exchange
is used to determine device identification and configuration requirements and to configure a device, and can also be used for other device-specific purposes, including control of other pipes on the device.
Control exchange takes place via a control pipe, mainly the default Pipe 0, which always exists. The control transfer consists of a setup stage (in which a setup packet is sent from the host to the device), an optional data stage and a status stage.

Figure 3.2 below depicts a USB device with one bi-directional control pipe (endpoint) and two functional data transfer pipes (endpoints), as identified by WinDriver's DriverWizard utility (discussed in Chapter 5).

Figure 3.2: USB Pipes
Image wiz_usb_select_dev_ifc

More information on how to implement the control transfer by sending setup packets can be found in section 9.2.