usb_request_attributes - Definition of USB request attributes
#include <sys/usb/usba.h>
Solaris DDI specific (Solaris DDI)
Request attributes specify how the USBA framework handles request execution. Request attributes are specified in the request's *_attributes field and belong to the enumerated type usb_req_attrs_t.
Supported request attributes are:
USB_ATTRS_SHORT_XFER_OK
USB_ATTRS_PIPE_RESET
USB_ATTRS_AUTOCLEARING
USB_CB_FUNCTIONAL_STALL is set in the callback flags to indicate that a functional stall occurred. USB_CB_STALL_CLEARED is also set if the stall is cleared. The default pipe never shows a functional stall if the USB_ATTRS_AUTOCLEARING attribute is set. If USB_CB_FUNCTIONAL_STALL is seen when autoclearing is enabled, the device has a fatal error.
USB_CB_PROTOCOL_STALL is set without USB_CB_STALL_CLEARED in the callback flags to indicate that a protocol stall was seen but was not explicitly cleared. Protocol stalls are cleared automatically when a subsequent command is issued.
Autoclearing a stalled default pipe is not allowed. The USB_CB_PROTOCOL_STALL callback flag is set in the callback flags to indicate the default pipe is stalled.
Autoclearing is not allowed when the request is USB_REQ_GET_STATUS on the default pipe.
USB_ATTRS_ONE_XFER
USB_ATTRS_ISOC_START_FRAME
USB_ATTRS_ISOC_START_FRAME can be used to delay a transfer by a few frames, allowing transfers to an endpoint to sync up with another source. (For example, synching up audio endpoints to a video source.) The number of a suitable starting frame in the near future can be found by adding an offset number of frames (usually between four and ten) to the current frame number returned from usb_get_current_frame_number(9F). Note that requests with starting frames which have passed are rejected.
USB_ATTRS_ISOC_XFER_ASAP
/* * Allocate, initialize and issue a synchronous bulk-IN request. * Allow for short transfers. */ struct buf *bp; usb_bulk_req_t bulk_req; mblk_t *mblk; bulk_req = usb_alloc_bulk_req(dip, bp->b_bcount, USB_FLAGS_SLEEP); bulk_req->bulk_attributes = USB_ATTRS_AUTOCLEARING | USB_ATTRS_SHORT_XFER_OK; if ((rval = usb_pipe_bulk_xfer(pipe, bulk_req, USB_FLAGS_SLEEP)) != USB_SUCCESS) { cmn_err (CE_WARN, "%s%d: Error reading bulk data.", ddi_driver_name(dip), ddi_get_instance(dip)); } mblk = bulk_req->bulk_data; bcopy(mblk->rptr, buf->b_un.b_addr, mblk->wptr - mblk->rptr); bp->b_resid = bp->b_count - (mblk->wptr = mblk->rptr); ... ... ---- usb_pipe_handle_t handle; usb_frame_number_t offset = 10; usb_isoc_req_t *isoc_req; isoc_req = usb_alloc_isoc_req(...); ... ... isoc_req->isoc_frame_no = usb_get_current_frame_number(dip) + offset; isoc_req->isoc_attributes = USB_ATTRS_ISOC_START_FRAME; ... ... if (usb_pipe_isoc_xfer(handle, isoc_req, 0) != USB_SUCCESS) { ... }
See attributes(5) for descriptions of the following attributes:
|
usb_alloc_request(9F), usb_get_current_frame_number(9F), usb_pipe_bulk_xfer(9F), usb_pipe_ctrl_xfer(9F), usb_pipe_intr_xfer(9F), usb_pipe_isoc_xfer(9F), usb_bulk_request(9S), usb_callback_flags(9S), usb_ctrl_request(9S), usb_intr_request(9S), usb_isoc_request(9S), usb_completion_reason(9S)
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |