@@ -15,104 +15,44 @@ const (
1515 TransferTypeInterrupt
1616)
1717
18- var endpointEP1IN = [endpointTypeLen ]byte {
19- endpointTypeLen ,
20- TypeEndpoint ,
21- 0x81 , // EndpointAddress
22- 0x03 , // Attributes
23- 0x10 , // MaxPacketSizeL
24- 0x00 , // MaxPacketSizeH
25- 0x10 , // Interval
26- }
27-
28- var EndpointEP1IN = EndpointType {
29- data : endpointEP1IN [:],
30- }
31-
32- var endpointEP2OUT = [endpointTypeLen ]byte {
33- endpointTypeLen ,
34- TypeEndpoint ,
35- 0x02 , // EndpointAddress
36- 0x02 , // Attributes
37- 0x40 , // MaxPacketSizeL
38- 0x00 , // MaxPacketSizeH
39- 0x00 , // Interval
40- }
41-
42- var EndpointEP2OUT = EndpointType {
43- data : endpointEP2OUT [:],
44- }
18+ type EndpointNumber uint8
4519
46- var endpointEP3IN = [endpointTypeLen ]byte {
47- endpointTypeLen ,
48- TypeEndpoint ,
49- 0x83 , // EndpointAddress
50- 0x02 , // Attributes
51- 0x40 , // MaxPacketSizeL
52- 0x00 , // MaxPacketSizeH
53- 0x00 , // Interval
54- }
55-
56- var EndpointEP3IN = EndpointType {
57- data : endpointEP3IN [:],
58- }
59-
60- var endpointEP4IN = [endpointTypeLen ]byte {
61- endpointTypeLen ,
62- TypeEndpoint ,
63- 0x84 , // EndpointAddress
64- 0x03 , // Attributes
65- 0x40 , // MaxPacketSizeL
66- 0x00 , // MaxPacketSizeH
67- 0x01 , // Interval
68- }
69-
70- var EndpointEP4IN = EndpointType {
71- data : endpointEP4IN [:],
72- }
73-
74- var endpointEP5OUT = [endpointTypeLen ]byte {
75- endpointTypeLen ,
76- TypeEndpoint ,
77- 0x05 , // EndpointAddress
78- 0x03 , // Attributes
79- 0x40 , // MaxPacketSizeL
80- 0x00 , // MaxPacketSizeH
81- 0x01 , // Interval
82- }
83-
84- var EndpointEP5OUT = EndpointType {
85- data : endpointEP5OUT [:],
86- }
87-
88- // Mass Storage Class bulk in endpoint
89- var endpointMSCIN = [endpointTypeLen ]byte {
90- endpointTypeLen ,
91- TypeEndpoint ,
92- 0x86 , // EndpointAddress
93- TransferTypeBulk , // Attributes
94- 0x40 , // MaxPacketSizeL (64 bytes)
95- 0x00 , // MaxPacketSizeH
96- 0x00 , // Interval
97- }
20+ const (
21+ EndpointEP1 EndpointNumber = iota
22+ EndpointEP2
23+ EndpointEP3
24+ EndpointEP4
25+ )
9826
99- var EndpointMSCIN = EndpointType {
100- data : endpointMSCIN [:],
101- }
27+ const (
28+ maxEndpoints = 4
29+ )
10230
103- // Mass Storage Class bulk out endpoint
104- var endpointMSCOUT = [endpointTypeLen ]byte {
105- endpointTypeLen ,
106- TypeEndpoint ,
107- 0x07 , // EndpointAddress
108- TransferTypeBulk , // Attributes
109- 0x40 , // MaxPacketSizeL (64 bytes)
110- 0x00 , // MaxPacketSizeH
111- 0x00 , // Interval
112- }
31+ var (
32+ endpointEPIn = [maxEndpoints ][endpointTypeLen ]byte {}
33+ endpointEPOut = [maxEndpoints ][endpointTypeLen ]byte {}
34+ )
11335
114- var EndpointMSCOUT = EndpointType {
115- data : endpointMSCOUT [:],
36+ func EndpointIN (ep EndpointNumber , transferType uint8 , maxPacketSize uint16 , interval uint8 ) EndpointType {
37+ e := EndpointType {data : endpointEPIn [ep ][:]}
38+ e .Length (endpointTypeLen )
39+ e .Type (TypeEndpoint )
40+ e .EndpointAddress (uint8 (ep + 1 ) | 0x80 ) // EndpointNumber is 0-based, addresses are 1-based
41+ e .Attributes (transferType )
42+ e .MaxPacketSize (maxPacketSize )
43+ e .Interval (interval )
44+ return e
45+ }
46+
47+ func EndpointOUT (ep EndpointNumber , transferType uint8 , maxPacketSize uint16 , interval uint8 ) EndpointType {
48+ e := EndpointType {data : endpointEPOut [ep ][:]}
49+ e .Length (endpointTypeLen )
50+ e .Type (TypeEndpoint )
51+ e .EndpointAddress (uint8 (ep + 1 )) // EndpointNumber is 0-based, addresses are 1-based
52+ e .Attributes (transferType )
53+ e .MaxPacketSize (maxPacketSize )
54+ e .Interval (interval )
55+ return e
11656}
11757
11858const (
0 commit comments