71#define UR_ERR_NOERROR 0
73#define UR_ERR_BITSTUFFING 2
74#define UR_ERR_DATATOGGLEMISMATCH 3
76#define UR_ERR_DEVICENOTRESPONDING 5
77#define UR_ERR_PIDCHECKFAILURE 6
78#define UR_ERR_UNEXPECTEDPID 7
79#define UR_ERR_DATAOVERRUN 8
80#define UR_ERR_DATAUNDERRUN 9
81#define UR_ERR_BUFFEROVERRUN 12
82#define UR_ERR_BUFFERUNDERRUN 13
83#define UR_ERR_NOTACCESSED 15
84#define UR_ERR_CANCELLED 0xFF
90#define USB_MAX_DEVICES 128
102#define UB_FLG_NEEDSCAN 1
109#define UP_TYPE_CONTROL 1
110#define UP_TYPE_BULK 2
111#define UP_TYPE_INTR 4
112#define UP_TYPE_ISOC 8
114#define UP_TYPE_IN 128
115#define UP_TYPE_OUT 256
117#define UP_TYPE_LOWSPEED 16
133#define UD_FLAG_HUB 0x0001
134#define UD_FLAG_ROOTHUB 0x0002
135#define UD_FLAG_LOWSPEED 0x0008
136#define UD_FLAG_REMOVING 0x0010
138#define UD_MAX_PIPES 32
139#define USB_EPADDR_TO_IDX(addr) ((((addr)&0x80) >> 3) | ((addr) & 0x0F))
161#define UR_FLAG_SYNC 0x8000
163#define UR_FLAG_SETUP 0x0001
164#define UR_FLAG_IN 0x0002
165#define UR_FLAG_OUT 0x0004
166#define UR_FLAG_STATUS_IN 0x0008
167#define UR_FLAG_STATUS_OUT 0x0010
168#define UR_FLAG_SHORTOK 0x0020
271#define UBCREATE(driver,addr) (*((driver)->hcdrv_create))(addr)
272#define UBDELETE(bus) (*((bus)->ub_hwdisp->hcdrv_delete))(bus)
273#define UBSTART(bus) (*((bus)->ub_hwdisp->hcdrv_start))(bus)
274#define UBSTOP(bus) (*((bus)->ub_hwdisp->hcdrv_stop))(bus)
275#define UBINTR(bus) (*((bus)->ub_hwdisp->hcdrv_intr))(bus)
276#define UBEPTCREATE(bus,addr,num,mps,flags) (*((bus)->ub_hwdisp->hcdrv_ept_create))(bus,addr,num,mps,flags)
277#define UBEPTDELETE(bus,ept) (*((bus)->ub_hwdisp->hcdrv_ept_delete))(bus,ept)
278#define UBEPTSETMPS(bus,ept,mps) (*((bus)->ub_hwdisp->hcdrv_ept_setmps))(bus,ept,mps)
279#define UBEPTSETADDR(bus,ept,addr) (*((bus)->ub_hwdisp->hcdrv_ept_setaddr))(bus,ept,addr)
280#define UBEPTCLEARTOGGLE(bus,ept) (*((bus)->ub_hwdisp->hcdrv_ept_cleartoggle))(bus,ept)
281#define UBXFER(bus,ept,xfer) (*((bus)->ub_hwdisp->hcdrv_xfer))(bus,ept,xfer)
307#define PRODUCT_ANY -1
311#define IS_HUB(dev) ((dev)->ud_devdescr.bDeviceClass == USB_DEVICE_CLASS_HUB)
318#define USBD_ERR_STALLED -1
319#define USBD_ERR_IOERROR -2
320#define USBD_ERR_HWERROR -3
321#define USBD_ERR_CANCELED -4
322#define USBD_ERR_NOMEM -5
323#define USBD_ERR_TIMEOUT -6
int(* udrv_attach)(usbdev_t *, usb_driver_t *)
int(* udrv_detach)(usbdev_t *)
void(* hcdrv_ept_setmps)(usbbus_t *, usb_ept_t *, int mps)
int(* hcdrv_xfer)(usbbus_t *, usb_ept_t *uept, usbreq_t *ur)
void(* hcdrv_ept_delete)(usbbus_t *, usb_ept_t *)
void(* hcdrv_ept_cleartoggle)(usbbus_t *, usb_ept_t *)
void(* hcdrv_ept_setaddr)(usbbus_t *, usb_ept_t *, int addr)
int(* hcdrv_start)(usbbus_t *)
void(* hcdrv_stop)(usbbus_t *)
int(* hcdrv_intr)(usbbus_t *)
void(* hcdrv_delete)(usbbus_t *)
struct usbbus_s * ub_next
usbdev_t * ub_devices[USB_MAX_DEVICES]
usbpipe_t * ud_pipes[UD_MAX_PIPES]
usb_config_descr_t * ud_cfgdescr
usb_device_descr_t ud_devdescr
struct usbdev_s * ud_parent
usb_ept_t * up_hwendpoint
int(* ur_callback)(struct usbreq_s *req)
struct usb_drvlist_s usb_drvlist_t
void * usb_find_cfg_descr(usbdev_t *dev, int dtype, int idx)
int usb_simple_request(usbdev_t *dev, uint8_t reqtype, int bRequest, int wValue, int wIndex)
void usb_dbg_showdevice(usbdev_t *dev)
void usb_dbg_dumpdescriptors(usbdev_t *dev, uint8_t *ptr, int len)
int usb_std_request(usbdev_t *dev, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, uint8_t *buffer, int length)
int usb_new_address(usbbus_t *bus)
void usb_complete_request(usbreq_t *ur, int status)
struct usbpipe_s usbpipe_t
int usb_wait_request(usbreq_t *ur)
int usb_sync_request(usbreq_t *ur)
usbreq_t * usb_make_request(usbdev_t *dev, int pipenum, uint8_t *buf, int length, int flags)
void usb_dbg_dumpportstatus(int port, usb_port_status_t *portstatus, int level)
void usb_destroy_pipe(usbdev_t *dev, int pipenum)
int usb_set_address(usbdev_t *dev, int addr)
void usb_free_request(usbreq_t *ur)
int usb_create_pipe(usbdev_t *dev, int pipenum, int mps, int flags)
void usbhub_map_tree(usbbus_t *bus, int(*func)(usbdev_t *dev, void *arg), void *arg)
void usb_dbg_dumpdevice(usbdev_t *dev)
int usb_get_device_status(usbdev_t *dev, usb_device_status_t *status)
void usb_daemon(usbbus_t *bus)
struct usb_ept_s usb_ept_t
void usb_poll(usbbus_t *bus)
int usb_clear_stall(usbdev_t *dev, int pipe)
usbdev_t * usb_create_device(usbbus_t *bus, int lowspeed)
int usb_queue_request(usbreq_t *ur)
int usb_get_descriptor(usbdev_t *dev, uint8_t reqtype, int dsctype, int dscidx, uint8_t *buffer, int buflen)
int usb_get_config_descriptor(usbdev_t *dev, usb_config_descr_t *dscr, int idx, int maxlen)
int usb_get_string(usbdev_t *dev, int id, char *buf, int maxlen)
void usb_dbg_dumpeptdescr(usb_endpoint_descr_t *epdscr)
usb_driver_t * usb_find_driver(usbdev_t *dev)
void usb_initroot(usbbus_t *bus)
int usb_cancel_request(usbreq_t *ur)
int usb_get_device_descriptor(usbdev_t *dev, usb_device_descr_t *dscr, int smallflg)
void usbhub_map_from_device(usbdev_t *dev, int(*func)(usbdev_t *dev, void *arg), void *arg)
int usb_make_sync_request(usbdev_t *dev, int pipenum, uint8_t *buf, int length, int flags)
void usb_delay_ms(usbbus_t *bus, int ms)
void usb_destroy_all_pipes(usbdev_t *dev)
int usb_set_configuration(usbdev_t *dev, int config)
void usb_scan(usbbus_t *bus)
void usbhub_dumpbus(usbbus_t *bus, uint32_t verbose)
int usb_set_ep0mps(usbdev_t *dev, int mps)
int usb_open_pipe(usbdev_t *dev, usb_endpoint_descr_t *epdesc)
void usb_dbg_dumpcfgdescr(usbdev_t *dev, unsigned int index)
void usb_destroy_device(usbdev_t *dev)