9.6.6 Endpoint of USB Protocol Learning






Each endpoint used for an interface has its own descriptor. This descriptor contains the information

required by the host to determine the bandwidth requirements of each endpoint. An endpoint descriptor is
always returned as part of the configuration information returned by a GetDescriptor(Configuration)
request. An endpoint descriptor cannot be directly accessed with a GetDescriptor() or SetDescriptor()
request. There is never an endpoint descriptor for endpoint zero. Table 9-13 shows the standard endpoint

descriptor.

Endpoints used for interfaces have their own descriptors. This descriptor contains the information the host needs to determine the bandwidth requirements of each endpoint. An endpoint descriptor is always returned as part of the configuration information returned by a GetDescriptor(configuration) request. Endpoint descriptors are not directly accessible via GetDescriptor() or SetDescriptor() requests. Endpoint 0 cannot be described.

The bmAttributes field provides information about the endpoint’s Transfer Type (bits 1..0) and
Synchronization Type (bits 3..2). In addition, the Usage Type bit (bits 5..4) indicate whether this is an
endpoint used for normal data transfers (bits 5..4=00B), whether it is used to convey explicit feedback

information for one or more data endpoints (bits 5..4=01B) or whether it is a data endpoint that also serves

as an implicit feedback endpoint for one or more data endpoints (bits 5..4=10B). Bits 5..2 are only

meaningful for isochronous endpoints and must be reset to zero for all other transfer types.

Bits 1..0 of the bmAttributes data block indicate the type of transmission,

If the endpoint is used as an explicit feedback endpoint (bits 5..4=01B), then the Transfer Type must be set
to isochronous (bits1..0 = 01B) and the Synchronization Type must be set to No Synchronization

(bits 3..2=00B).

If the endpoint is used as an explicit feedback endpoint, then the transfer type must be isochronous mode. The synchronization type must be No Synchronization (bits 3..2=00B).

A feedback endpoint (explicit or implicit) needs to be associated with one (or more) isochronous data
endpoints to which it provides feedback service. The association is based on endpoint number matching. A
feedback endpoint always has the opposite direction from the data endpoint(s) it services. If multiple data
endpoints are to be serviced by the same feedback endpoint, the data endpoints must have ascending
ordered–but not necessarily consecutive–endpoint numbers. The first data endpoint and the feedback
endpoint must have the same endpoint number (and opposite direction). This ensures that a data endpoint
can uniquely identify its feedback endpoint by searching for the first feedback endpoint that has an endpoint

number equal or less than its own endpoint number.

A feedback endpoint needs to bind a synchronous data endpoint to serve this endpoint. Binding is based on endpoint numbers. Feedback endpoints and data service endpoints are in the opposite direction. Multiple data endpoints can use the same feedback endpoint, and the data endpoints must be arranged in ascending order, but not necessarily consecutive. The first data endpoint number must be the same as the feedback endpoint number (in the opposite direction). This ensures that a data endpoint can uniquely identify its feedback endpoint by searching for the first feedback endpoint with an endpoint number equal to or less than its own endpoint number.










Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326052060&siteId=291194637