@@ -53,37 +53,64 @@ usb_desc_device_qualifier_c usb_device_qualifier = {
53
53
usb_desc_interface_c usb_interface_0_disabled =
54
54
USB_INTERFACE (/*bInterfaceNumber=*/ 0 , /*bAlternateSetting=*/ 0 , /*bNumEndpoints=*/ 0 ,
55
55
/*iInterface=*/ 6 );
56
- usb_desc_interface_c usb_interface_0_double =
56
+ usb_desc_interface_c usb_interface_0_double_bulk =
57
57
USB_INTERFACE (/*bInterfaceNumber=*/ 0 , /*bAlternateSetting=*/ 1 , /*bNumEndpoints=*/ 2 ,
58
58
/*iInterface=*/ 7 );
59
- usb_desc_interface_c usb_interface_0_quad =
59
+ usb_desc_interface_c usb_interface_0_quad_bulk =
60
60
USB_INTERFACE (/*bInterfaceNumber=*/ 0 , /*bAlternateSetting=*/ 1 , /*bNumEndpoints=*/ 2 ,
61
61
/*iInterface=*/ 8 );
62
+ usb_desc_interface_c usb_interface_0_double_interrupt =
63
+ USB_INTERFACE (/*bInterfaceNumber=*/ 0 , /*bAlternateSetting=*/ 2 , /*bNumEndpoints=*/ 2 ,
64
+ /*iInterface=*/ 9 );
65
+ usb_desc_interface_c usb_interface_0_quad_interrupt =
66
+ USB_INTERFACE (/*bInterfaceNumber=*/ 0 , /*bAlternateSetting=*/ 2 , /*bNumEndpoints=*/ 2 ,
67
+ /*iInterface=*/ 10 );
68
+
62
69
usb_desc_interface_c usb_interface_1_disabled =
63
70
USB_INTERFACE (/*bInterfaceNumber=*/ 1 , /*bAlternateSetting=*/ 0 , /*bNumEndpoints=*/ 0 ,
64
71
/*iInterface=*/ 6 );
65
- usb_desc_interface_c usb_interface_1_double =
72
+ usb_desc_interface_c usb_interface_1_double_bulk =
66
73
USB_INTERFACE (/*bInterfaceNumber=*/ 1 , /*bAlternateSetting=*/ 1 , /*bNumEndpoints=*/ 2 ,
67
74
/*iInterface=*/ 7 );
75
+ usb_desc_interface_c usb_interface_1_double_interrupt =
76
+ USB_INTERFACE (/*bInterfaceNumber=*/ 1 , /*bAlternateSetting=*/ 2 , /*bNumEndpoints=*/ 2 ,
77
+ /*iInterface=*/ 9 );
68
78
69
- #define USB_BULK_ENDPOINT (bEndpointAddress_ ) \
79
+ #define USB_ENDPOINT (bEndpointAddress_ , bmAttributes_ , wMaxPacketSize_ , bInterval_ ) \
70
80
{ \
71
81
.bLength = sizeof(struct usb_desc_endpoint), \
72
82
.bDescriptorType = USB_DESC_ENDPOINT, \
73
83
.bEndpointAddress = bEndpointAddress_, \
74
- .bmAttributes = USB_XFER_BULK , \
75
- .wMaxPacketSize = 512, \
76
- .bInterval = 0, \
84
+ .bmAttributes = bmAttributes_ , \
85
+ .wMaxPacketSize = wMaxPacketSize_, \
86
+ .bInterval = bInterval_, \
77
87
}
78
88
79
- usb_desc_endpoint_c usb_endpoint_2_out =
80
- USB_BULK_ENDPOINT (/*bEndpointAddress=*/ 2 |USB_DIR_OUT );
81
- usb_desc_endpoint_c usb_endpoint_4_out =
82
- USB_BULK_ENDPOINT (/*bEndpointAddress=*/ 4 |USB_DIR_OUT );
83
- usb_desc_endpoint_c usb_endpoint_6_in =
84
- USB_BULK_ENDPOINT (/*bEndpointAddress=*/ 6 |USB_DIR_IN );
85
- usb_desc_endpoint_c usb_endpoint_8_in =
86
- USB_BULK_ENDPOINT (/*bEndpointAddress=*/ 8 |USB_DIR_IN );
89
+ usb_desc_endpoint_c usb_endpoint_2_out_bulk =
90
+ USB_ENDPOINT (/*bEndpointAddress=*/ 2 |USB_DIR_OUT , /*bmAttributes=*/ USB_XFER_BULK ,
91
+ /*wMaxPacketSize=*/ 512 , /*bInterval=*/ 0 );
92
+ usb_desc_endpoint_c usb_endpoint_4_out_bulk =
93
+ USB_ENDPOINT (/*bEndpointAddress=*/ 4 |USB_DIR_OUT , /*bmAttributes=*/ USB_XFER_BULK ,
94
+ /*wMaxPacketSize=*/ 512 , /*bInterval=*/ 0 );
95
+ usb_desc_endpoint_c usb_endpoint_6_in_bulk =
96
+ USB_ENDPOINT (/*bEndpointAddress=*/ 6 |USB_DIR_IN , /*bmAttributes=*/ USB_XFER_BULK ,
97
+ /*wMaxPacketSize=*/ 512 , /*bInterval=*/ 0 );
98
+ usb_desc_endpoint_c usb_endpoint_8_in_bulk =
99
+ USB_ENDPOINT (/*bEndpointAddress=*/ 8 |USB_DIR_IN , /*bmAttributes=*/ USB_XFER_BULK ,
100
+ /*wMaxPacketSize=*/ 512 , /*bInterval=*/ 0 );
101
+
102
+ usb_desc_endpoint_c usb_endpoint_2_out_interrupt =
103
+ USB_ENDPOINT (/*bEndpointAddress=*/ 2 |USB_DIR_OUT , /*bmAttributes=*/ USB_XFER_INTERRUPT ,
104
+ /*wMaxPacketSize=*/ 512 |USB_TX_3_PER_MICROFRAME , /*bInterval=*/ 1 );
105
+ usb_desc_endpoint_c usb_endpoint_4_out_interrupt =
106
+ USB_ENDPOINT (/*bEndpointAddress=*/ 4 |USB_DIR_OUT , /*bmAttributes=*/ USB_XFER_INTERRUPT ,
107
+ /*wMaxPacketSize=*/ 512 |USB_TX_3_PER_MICROFRAME , /*bInterval=*/ 1 );
108
+ usb_desc_endpoint_c usb_endpoint_6_in_interrupt =
109
+ USB_ENDPOINT (/*bEndpointAddress=*/ 6 |USB_DIR_IN , /*bmAttributes=*/ USB_XFER_INTERRUPT ,
110
+ /*wMaxPacketSize=*/ 512 |USB_TX_3_PER_MICROFRAME , /*bInterval=*/ 1 );
111
+ usb_desc_endpoint_c usb_endpoint_8_in_interrupt =
112
+ USB_ENDPOINT (/*bEndpointAddress=*/ 8 |USB_DIR_IN , /*bmAttributes=*/ USB_XFER_INTERRUPT ,
113
+ /*wMaxPacketSize=*/ 512 |USB_TX_3_PER_MICROFRAME , /*bInterval=*/ 1 );
87
114
88
115
usb_configuration_c usb_config_2_pipes = {
89
116
{
@@ -96,14 +123,20 @@ usb_configuration_c usb_config_2_pipes = {
96
123
.bMaxPower = 250 ,
97
124
},
98
125
{
99
- { .interface = & usb_interface_0_disabled },
100
- { .interface = & usb_interface_0_double },
101
- { .endpoint = & usb_endpoint_2_out },
102
- { .endpoint = & usb_endpoint_6_in },
103
- { .interface = & usb_interface_1_disabled },
104
- { .interface = & usb_interface_1_double },
105
- { .endpoint = & usb_endpoint_4_out },
106
- { .endpoint = & usb_endpoint_8_in },
126
+ { .interface = & usb_interface_0_disabled },
127
+ { .interface = & usb_interface_0_double_bulk },
128
+ { .endpoint = & usb_endpoint_2_out_bulk },
129
+ { .endpoint = & usb_endpoint_6_in_bulk },
130
+ { .interface = & usb_interface_0_double_interrupt },
131
+ { .endpoint = & usb_endpoint_2_out_interrupt },
132
+ { .endpoint = & usb_endpoint_6_in_interrupt },
133
+ { .interface = & usb_interface_1_disabled },
134
+ { .interface = & usb_interface_1_double_bulk },
135
+ { .endpoint = & usb_endpoint_4_out_bulk },
136
+ { .endpoint = & usb_endpoint_8_in_bulk },
137
+ { .interface = & usb_interface_1_double_interrupt },
138
+ { .endpoint = & usb_endpoint_4_out_interrupt },
139
+ { .endpoint = & usb_endpoint_8_in_interrupt },
107
140
{ 0 }
108
141
}
109
142
};
@@ -119,10 +152,13 @@ usb_configuration_c usb_config_1_pipe = {
119
152
.bMaxPower = 250 ,
120
153
},
121
154
{
122
- { .interface = & usb_interface_0_disabled },
123
- { .interface = & usb_interface_0_quad },
124
- { .endpoint = & usb_endpoint_2_out },
125
- { .endpoint = & usb_endpoint_6_in },
155
+ { .interface = & usb_interface_0_disabled },
156
+ { .interface = & usb_interface_0_quad_bulk },
157
+ { .endpoint = & usb_endpoint_2_out_bulk },
158
+ { .endpoint = & usb_endpoint_6_in_bulk },
159
+ { .interface = & usb_interface_0_quad_interrupt },
160
+ { .endpoint = & usb_endpoint_2_out_interrupt },
161
+ { .endpoint = & usb_endpoint_6_in_interrupt },
126
162
{ 0 }
127
163
}
128
164
};
@@ -146,8 +182,10 @@ usb_ascii_string_c usb_strings[] = {
146
182
[4 ] = "Pipe P at {4x512B EP2OUT/EP6IN}" ,
147
183
// Interfaces
148
184
[5 ] = "Disabled" ,
149
- [6 ] = "Double-buffered 512B" ,
150
- [7 ] = "Quad-buffered 512B" ,
185
+ [6 ] = "Double-buffered 512B BULK" ,
186
+ [7 ] = "Quad-buffered 512B BULK" ,
187
+ [8 ] = "Double-buffered 512B INTERRUPT" ,
188
+ [9 ] = "Quad-buffered 512B INTERRUPT" ,
151
189
};
152
190
153
191
usb_descriptor_set_c usb_descriptor_set = {
0 commit comments