Product manual

Spinpoint M9TU-USB 3.0 Product Manual REV 1.0
60
USB INTERFACE AND USB COMMANDS
A GetStatus() request to an endpoint returns the information shown in Figure 6-35.
Figure 6-35: Information Returned by a GetStatus() Request to an Endpoint
The Halt feature is required to be implemented for all interrupt and bulk endpoint types. If the endpoint is
currently halted, then the Halt feature is set to one. Otherwise, the Halt feature is reset to zero. The Halt feature
may optionally be set with the SetFeature(ENDPOINT_HALT) request. When set by the SetFeature() request,
the endpoint exhibits the same stall behavior as if the field had been set by a hardware condition. If the condition
causing a halt has been removed, clearing the Halt feature via a ClearFeature(ENDPOINT_HALT) request
results in the endpoint no longer returning a STALL. For endpoints using data toggle, regardless of whether
an
endpoint has the Halt feature set, a ClearFeature(ENDPOINT_HALT) request always results in the data toggle
being reinitialized to DATA0. The Halt feature is reset to zero after either a SetConfiguration() or SetInterface()
request even if the requested configuration or interface is the same as the current configuration or interface.
It is neither required nor recommended that the Halt feature be implemented for the Default Control Pipe.
However, devices may set the Halt feature of the Default Control Pipe in order to reflect a functional error
condition. If the feature is set to one, the device will return STALL in the Data and Status stages of each standard
request to the pipe except GetStatus(), SetFeature(), and ClearFeature() requests. The device need not return
STALL for class-specific and vendor-specific requests.
6.3.6.3.7 Set Address (Request Code 5)
This request sets the device address for all future device accesses.
The wValue field specifies the device address to use for all subsequent accesses.
As noted elsewhere, requests actually may result in up to three stages. In the first stage, the Setup packet is sent to
the device. In the optional second stage, data is transferred between the host and the device. In the final stage,
status is transferred between the host and the device. The direction of data and status transfer depends on whether
the host is sending data to the device or the device is sending data to the host. The Status stage transfer is always
in the opposite direction of the Data stage. If there is no Data stage, the Status stage is from the device to the host.
Stages after the initial Setup packet assume the same device address as the Setup packet. The USB device does
not change its device address until after the Status stage of this request is completed successfully. Note that this is
a difference between this request and all other requests. For all other requests, the operation indicated must be
completed before the Status stage. If the specified device address is greater than 127, or if wIndex or wLength are
non-zero, then the behavior of the device is not specified.
Device response to SetAddress() with a value of 0 is undefined.
Default state: If the address specified is non-zero, then the device shall enter the Address state; otherwise,
the device remains in the Default state (this is not an error condition).
Address state: If the address specified is zero, then the device shall enter the Default state; otherwise, the device
remains in the Address state but uses the newly-specified address.
Configured state: Device behavior when this request is received while the device is in the Configured state is
not specified.
6.3.6.3.8 Set Configuration (Request Code9)
This request sets the device configuration.