Mercurial > ecos-v3_0-branch
annotate packages/io/usb/common/current/include/usb.h @ 2729:74dbf4c3f2e1 after-copyright-change-20090129
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
| author | jlarmour |
|---|---|
| date | Thu, 29 Jan 2009 17:47:46 +0000 |
| parents | df4d007af7e8 |
| children |
| rev | line source |
|---|---|
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
1 #ifndef CYGONCE_USB_H |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
2 # define CYGONCE_USB_H |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
3 //========================================================================== |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
4 // |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
5 // include/usb.h |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
6 // |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
7 // Data common to USB host and USB slave |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
8 // |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
9 //========================================================================== |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
10 // ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
11 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
12 // This file is part of eCos, the Embedded Configurable Operating System. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
13 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
151
diff
changeset
|
14 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
15 // eCos is free software; you can redistribute it and/or modify it under |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
16 // the terms of the GNU General Public License as published by the Free |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
17 // Software Foundation; either version 2 or (at your option) any later |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
18 // version. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
151
diff
changeset
|
19 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
20 // eCos is distributed in the hope that it will be useful, but WITHOUT |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
21 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
22 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
23 // for more details. |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
24 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
25 // You should have received a copy of the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
26 // along with eCos; if not, write to the Free Software Foundation, Inc., |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
27 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
28 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
29 // As a special exception, if other files instantiate templates or use |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
30 // macros or inline functions from this file, or you compile this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
31 // and link it with other works to produce a work based on this file, |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
32 // this file does not by itself cause the resulting work to be covered by |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
33 // the GNU General Public License. However the source code for this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
34 // must still be made available in accordance with section (3) of the GNU |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
35 // General Public License v2. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
151
diff
changeset
|
36 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
37 // This exception does not invalidate any other reasons why a work based |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
38 // on this file might be covered by the GNU General Public License. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
39 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2155
diff
changeset
|
40 // ####ECOSGPLCOPYRIGHTEND#### |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
41 //========================================================================== |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
42 //#####DESCRIPTIONBEGIN#### |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
43 // |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
44 // Author(s): bartv |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
45 // Contributors: bartv |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
46 // Date: 2000-10-04 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
47 // |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
48 //####DESCRIPTIONEND#### |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
49 //========================================================================== |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
50 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
51 #ifdef __cplusplus |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
52 extern "C" { |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
53 #endif |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
54 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
55 // USB device requests, the setup packet. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
56 // |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
57 // The structure is defined entirely in terms of bytes, eliminating |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
58 // any confusion about who is supposed to swap what when. This avoids |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
59 // endianness-related portability problems, and eliminates any need |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
60 // to worry about alignment. Also for some requests the value field |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
61 // is split into separate bytes anyway. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
62 typedef struct usb_devreq { |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
63 unsigned char type; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
64 unsigned char request; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
65 unsigned char value_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
66 unsigned char value_hi; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
67 unsigned char index_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
68 unsigned char index_hi; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
69 unsigned char length_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
70 unsigned char length_hi; |
|
2155
df4d007af7e8
* include/usb.h: changed position of __attribute__((packed)) to be
asl
parents:
210
diff
changeset
|
71 } __attribute__((packed)) usb_devreq; |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
72 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
73 // Encoding of the request_type |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
74 #define USB_DEVREQ_DIRECTION_OUT 0 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
75 #define USB_DEVREQ_DIRECTION_IN (1 << 7) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
76 #define USB_DEVREQ_DIRECTION_MASK (1 << 7) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
77 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
78 #define USB_DEVREQ_TYPE_STANDARD 0 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
79 #define USB_DEVREQ_TYPE_CLASS (0x1 << 5) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
80 #define USB_DEVREQ_TYPE_VENDOR (0x2 << 5) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
81 #define USB_DEVREQ_TYPE_RESERVED (0x3 << 5) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
82 #define USB_DEVREQ_TYPE_MASK (0x3 << 5) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
83 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
84 #define USB_DEVREQ_RECIPIENT_DEVICE 0x00 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
85 #define USB_DEVREQ_RECIPIENT_INTERFACE 0x01 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
86 #define USB_DEVREQ_RECIPIENT_ENDPOINT 0x02 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
87 #define USB_DEVREQ_RECIPIENT_OTHER 0x03 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
88 #define USB_DEVREQ_RECIPIENT_MASK 0x1F |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
89 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
90 // The standard request codes. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
91 #define USB_DEVREQ_GET_STATUS 0 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
92 #define USB_DEVREQ_CLEAR_FEATURE 1 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
93 #define USB_DEVREQ_SET_FEATURE 3 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
94 #define USB_DEVREQ_SET_ADDRESS 5 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
95 #define USB_DEVREQ_GET_DESCRIPTOR 6 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
96 #define USB_DEVREQ_SET_DESCRIPTOR 7 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
97 #define USB_DEVREQ_GET_CONFIGURATION 8 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
98 #define USB_DEVREQ_SET_CONFIGURATION 9 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
99 #define USB_DEVREQ_GET_INTERFACE 10 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
100 #define USB_DEVREQ_SET_INTERFACE 11 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
101 #define USB_DEVREQ_SYNCH_FRAME 12 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
102 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
103 // Descriptor types. These are placed in value_hi for the |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
104 // GET_DESCRIPTOR and SET_DESCRIPTOR requests, with an index |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
105 // in value_lo. They also go into the type fields of the |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
106 // various descriptor structures. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
107 #define USB_DEVREQ_DESCRIPTOR_TYPE_DEVICE 1 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
108 #define USB_DEVREQ_DESCRIPTOR_TYPE_CONFIGURATION 2 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
109 #define USB_DEVREQ_DESCRIPTOR_TYPE_STRING 3 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
110 #define USB_DEVREQ_DESCRIPTOR_TYPE_INTERFACE 4 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
111 #define USB_DEVREQ_DESCRIPTOR_TYPE_ENDPOINT 5 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
112 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
113 // Feature selectors. These go into value_lo for the CLEAR_FEATURE and |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
114 // SET_FEATURE requests, and in the first response byte for |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
115 // GET_STATUS. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
116 #define USB_DEVREQ_FEATURE_DEVICE_REMOTE_WAKEUP 1 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
117 #define USB_DEVREQ_FEATURE_ENDPOINT_HALT 0 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
118 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
119 // Index decoding. When the CLEAR_FEATURE, SET_FEATURE and GET_STATUS |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
120 // requests is applied to an endpoint (as per the recipient field in |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
121 // the type field) index_lo identifies the endpoint. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
122 #define USB_DEVREQ_INDEX_DIRECTION_OUT 0 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
123 #define USB_DEVREQ_INDEX_DIRECTION_IN (1 << 7) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
124 #define USB_DEVREQ_INDEX_DIRECTION_MASK (1 << 7) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
125 #define USB_DEVREQ_INDEX_ENDPOINT_MASK 0x0F |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
126 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
127 // Descriptors for the GET_DESCRIPTOR and SET_DESCRIPTOR requests. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
128 typedef struct usb_device_descriptor { |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
129 unsigned char length; // USB_DEVICE_DESCRIPTOR_LENGTH == 18 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
130 unsigned char type; // USB_DEVREQ_DESCRIPTOR_TYPE |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
131 unsigned char usb_spec_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
132 unsigned char usb_spec_hi; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
133 unsigned char device_class; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
134 unsigned char device_subclass; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
135 unsigned char device_protocol; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
136 unsigned char max_packet_size; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
137 unsigned char vendor_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
138 unsigned char vendor_hi; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
139 unsigned char product_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
140 unsigned char product_hi; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
141 unsigned char device_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
142 unsigned char device_hi; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
143 unsigned char manufacturer_str; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
144 unsigned char product_str; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
145 unsigned char serial_number_str; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
146 unsigned char number_configurations; |
|
2155
df4d007af7e8
* include/usb.h: changed position of __attribute__((packed)) to be
asl
parents:
210
diff
changeset
|
147 } __attribute__((packed)) usb_device_descriptor; |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
148 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
149 #define USB_DEVICE_DESCRIPTOR_LENGTH 18 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
150 #define USB_DEVICE_DESCRIPTOR_TYPE USB_DEVREQ_DESCRIPTOR_TYPE_DEVICE |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
151 #define USB_DEVICE_DESCRIPTOR_USB11_LO 0x10 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
152 #define USB_DEVICE_DESCRIPTOR_USB11_HI 0x01 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
153 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
154 #define USB_DEVICE_DESCRIPTOR_CLASS_INTERFACE 0x00 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
155 #define USB_DEVICE_DESCRIPTOR_CLASS_VENDOR 0x00FF |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
156 #define USB_DEVICE_DESCRIPTOR_SUBCLASS_INTERFACE 0x00 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
157 #define USB_DEVICE_DESCRIPTOR_SUBCLASS_VENDOR 0x00FF |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
158 #define USB_DEVICE_DESCRIPTOR_PROTOCOL_INTERFACE 0x00 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
159 #define USB_DEVICE_DESCRIPTOR_PROTOCOL_VENDOR 0x00FF |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
160 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
161 typedef struct usb_configuration_descriptor { |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
162 unsigned char length; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
163 unsigned char type; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
164 unsigned char total_length_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
165 unsigned char total_length_hi; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
166 unsigned char number_interfaces; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
167 unsigned char configuration_id; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
168 unsigned char configuration_str; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
169 unsigned char attributes; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
170 unsigned char max_power; |
|
2155
df4d007af7e8
* include/usb.h: changed position of __attribute__((packed)) to be
asl
parents:
210
diff
changeset
|
171 } __attribute__((packed)) usb_configuration_descriptor; |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
172 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
173 #define USB_CONFIGURATION_DESCRIPTOR_LENGTH 9 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
174 #define USB_CONFIGURATION_DESCRIPTOR_TYPE USB_DEVREQ_DESCRIPTOR_TYPE_CONFIGURATION |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
175 #define USB_CONFIGURATION_DESCRIPTOR_ATTR_REQUIRED (1 << 7) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
176 #define USB_CONFIGURATION_DESCRIPTOR_ATTR_SELF_POWERED (1 << 6) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
177 #define USB_CONFIGURATION_DESCRIPTOR_ATTR_REMOTE_WAKEUP (1 << 5) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
178 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
179 typedef struct usb_interface_descriptor { |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
180 unsigned char length; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
181 unsigned char type; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
182 unsigned char interface_id; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
183 unsigned char alternate_setting; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
184 unsigned char number_endpoints; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
185 unsigned char interface_class; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
186 unsigned char interface_subclass; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
187 unsigned char interface_protocol; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
188 unsigned char interface_str; |
|
2155
df4d007af7e8
* include/usb.h: changed position of __attribute__((packed)) to be
asl
parents:
210
diff
changeset
|
189 } __attribute__((packed)) usb_interface_descriptor; |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
190 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
191 #define USB_INTERFACE_DESCRIPTOR_LENGTH 9 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
192 #define USB_INTERFACE_DESCRIPTOR_TYPE USB_DEVREQ_DESCRIPTOR_TYPE_INTERFACE |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
193 #define USB_INTERFACE_DESCRIPTOR_CLASS_VENDOR 0x00FF |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
194 #define USB_INTERFACE_DESCRIPTOR_SUBCLASS_VENDOR 0x00FF |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
195 #define USB_INTERFACE_DESCRIPTOR_PROTOCOL_VENDOR 0x00FF |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
196 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
197 typedef struct usb_endpoint_descriptor { |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
198 unsigned char length; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
199 unsigned char type; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
200 unsigned char endpoint; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
201 unsigned char attributes; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
202 unsigned char max_packet_lo; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
203 unsigned char max_packet_hi; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
204 unsigned char interval; |
|
2155
df4d007af7e8
* include/usb.h: changed position of __attribute__((packed)) to be
asl
parents:
210
diff
changeset
|
205 } __attribute__((packed)) usb_endpoint_descriptor; |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
206 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
207 #define USB_ENDPOINT_DESCRIPTOR_LENGTH 7 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
208 #define USB_ENDPOINT_DESCRIPTOR_TYPE USB_DEVREQ_DESCRIPTOR_TYPE_ENDPOINT |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
209 #define USB_ENDPOINT_DESCRIPTOR_ENDPOINT_OUT 0 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
210 #define USB_ENDPOINT_DESCRIPTOR_ENDPOINT_IN (1 << 7) |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
211 #define USB_ENDPOINT_DESCRIPTOR_ATTR_CONTROL 0x00 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
212 #define USB_ENDPOINT_DESCRIPTOR_ATTR_ISOCHRONOUS 0x01 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
213 #define USB_ENDPOINT_DESCRIPTOR_ATTR_BULK 0x02 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
214 #define USB_ENDPOINT_DESCRIPTOR_ATTR_INTERRUPT 0x03 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
215 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
216 // String descriptors. If these are used at all then string 0 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
217 // must be a table of supported LANGID codes. For a simple device |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
218 // which only supports US English, the following sequence of |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
219 // four bytes should suffice for string 0. In practice string |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
220 // constants tend to be used which makes the use of these |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
221 // #define's difficult. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
222 #define USB_STRING_DESCRIPTOR_STRING0_LENGTH 4 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
223 #define USB_STRING_DESCRIPTOR_STRING0_TYPE USB_DEVREQ_DESCRIPTOR_TYPE_STRING |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
224 #define USB_STRING_DESCRIPTOR_STRING0_LANGID_LO 0x09 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
225 #define USB_STRING_DESCRIPTOR_STRING0_LANGID_HI 0x04 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
226 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
227 // For subsequent strings the length and data will have to be |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
228 // determined by the application developer or by a suitable tool. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
229 #define USB_STRING_DESCRIPTOR_TYPE USB_DEVREQ_DESCRIPTOR_TYPE_STRING |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
230 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
231 // Utility macros to calculate the total_length fields in a |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
232 // configuration descriptor. |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
233 #define USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH_LO(interfaces, endpoints) \ |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
234 (USB_CONFIGURATION_DESCRIPTOR_LENGTH + \ |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
235 (interfaces * USB_INTERFACE_DESCRIPTOR_LENGTH) + \ |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
236 (endpoints * USB_ENDPOINT_DESCRIPTOR_LENGTH)) % 256 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
237 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
238 #define USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH_HI(interfaces, endpoints) \ |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
239 (USB_CONFIGURATION_DESCRIPTOR_LENGTH + \ |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
240 (interfaces * USB_INTERFACE_DESCRIPTOR_LENGTH) + \ |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
241 (endpoints * USB_ENDPOINT_DESCRIPTOR_LENGTH)) / 256 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
242 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
243 #ifdef __cplusplus |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
244 } // extern "C" { |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
245 #endif |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
246 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
247 #endif // CYGONCE_USB_H |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff
changeset
|
248 |
