VSF Documented
ch9.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_USB_CH9_H__
2#define __VSF_LINUX_USB_CH9_H__
3
4#include <linux/types.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10#define USB_ENDPOINT_DIR_MASK USB_DIR_MASK
11#define USB_ENDPOINT_MAXP_MASK 0x07FF
12#define USB_ENDPOINT_NUMBER_MASK 0x7F
13
14#define USB_STATUS_TYPE_STANDARD 0
15#define USB_STATUS_TYPE_PTM 1
16
17#define usb_device_speed usb_device_speed_t
18#define usb_descriptor_header usb_descriptor_header_t
19#define usb_device_descriptor usb_device_desc_t
20#define usb_config_descriptor usb_config_desc_t
21#define usb_interface_descriptor usb_interface_desc_t
22#define usb_endpoint_descriptor usb_endpoint_desc_t
23
24static inline int usb_endpoint_num(const struct usb_endpoint_descriptor *epd)
25{
26 return epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
27}
28static inline int usb_endpoint_type(const struct usb_endpoint_descriptor *epd)
29{
30 return epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
31}
32static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
33{
34 return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN);
35}
36static inline int usb_endpoint_dir_out(const struct usb_endpoint_descriptor *epd)
37{
38 return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT);
39}
40static inline int usb_endpoint_xfer_bulk(const struct usb_endpoint_descriptor *epd)
41{
42 return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK);
43}
44static inline int usb_endpoint_xfer_control(const struct usb_endpoint_descriptor *epd)
45{
46 return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_CONTROL);
47}
48static inline int usb_endpoint_xfer_int( const struct usb_endpoint_descriptor *epd)
49{
50 return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT);
51}
52static inline int usb_endpoint_xfer_isoc(const struct usb_endpoint_descriptor *epd)
53{
54 return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_ISOC);
55}
56
57static inline int usb_endpoint_is_bulk_in(const struct usb_endpoint_descriptor *epd)
58{
59 return usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_in(epd);
60}
61static inline int usb_endpoint_is_bulk_out(const struct usb_endpoint_descriptor *epd)
62{
63 return usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_out(epd);
64}
65static inline int usb_endpoint_is_int_in(const struct usb_endpoint_descriptor *epd)
66{
67 return usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd);
68}
69static inline int usb_endpoint_is_int_out(const struct usb_endpoint_descriptor *epd)
70{
71 return usb_endpoint_xfer_int(epd) && usb_endpoint_dir_out(epd);
72}
73static inline int usb_endpoint_is_isoc_in(const struct usb_endpoint_descriptor *epd)
74{
75 return usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_in(epd);
76}
77static inline int usb_endpoint_is_isoc_out(const struct usb_endpoint_descriptor *epd)
78{
79 return usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd);
80}
81
82static inline int usb_endpoint_maxp(const struct usb_endpoint_descriptor *epd)
83{
84 return le16_to_cpu(epd->wMaxPacketSize) & USB_ENDPOINT_MAXP_MASK;
85}
86
87#ifdef __cplusplus
88}
89#endif
90
91#endif
#define usb_endpoint_descriptor
Definition ch9.h:22
#define USB_ENDPOINT_NUMBER_MASK
Definition ch9.h:12
#define USB_ENDPOINT_DIR_MASK
Definition ch9.h:10
#define USB_ENDPOINT_MAXP_MASK
Definition ch9.h:11
@ USB_ENDPOINT_XFERTYPE_MASK
Definition usb_common.h:285
@ USB_ENDPOINT_XFER_BULK
Definition usb_common.h:288
@ USB_ENDPOINT_XFER_INT
Definition usb_common.h:289
@ USB_ENDPOINT_XFER_ISOC
Definition usb_common.h:287
@ USB_ENDPOINT_XFER_CONTROL
Definition usb_common.h:286
@ USB_DIR_OUT
Definition usb_common.h:81
@ USB_DIR_IN
Definition usb_common.h:82
#define le16_to_cpu
Definition vsf_arch_abstraction.h:154