forked from micropython/micropython
-
Notifications
You must be signed in to change notification settings - Fork 5
/
usb.c
167 lines (146 loc) · 3.82 KB
/
usb.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#include <stdint.h>
#include <generated/csr.h>
#include <usb.h>
struct usb_setup_request;
void epfifo_usb_isr(void);
void epfifo_usb_init(void);
void epfifo_usb_connect(void);
void epfifo_usb_idle(void);
void epfifo_usb_disconnect(void);
void epfifo_usb_set_address(uint8_t address);
void epfifo_usb_ack_in(uint8_t epno);
void epfifo_usb_ack_out(uint8_t epno);
void epfifo_usb_err_in(uint8_t epno);
void epfifo_usb_err_out(uint8_t epno);
void epfifo_usb_send(const void *data, int total_count);
int epfifo_usb_can_getc(void);
int epfifo_usb_can_putc(void);
int epfifo_usb_write(const char *buf, int count);
int epfifo_usb_getc(void);
void epfifo_usb_putc(char c);
void epfifo_usb_poll(void);
void eptri_usb_isr(void);
void eptri_usb_init(void);
void eptri_usb_connect(void);
void eptri_usb_idle(void);
void eptri_usb_disconnect(void);
void eptri_usb_set_address(uint8_t address);
void eptri_usb_ack_in(uint8_t epno);
void eptri_usb_ack_out(uint8_t epno);
void eptri_usb_err_in(uint8_t epno);
void eptri_usb_err_out(uint8_t epno);
void eptri_usb_send(const void *data, int total_count);
int eptri_usb_can_getc(void);
int eptri_usb_can_putc(void);
int eptri_usb_write(const char *buf, int count);
int eptri_usb_getc(void);
void eptri_usb_putc(char c);
void eptri_usb_poll(void);
void usb_isr(void) {
if (version_major_read() == 2)
eptri_usb_isr();
else
epfifo_usb_isr();
}
void usb_init(void) {
if (version_major_read() == 2)
eptri_usb_init();
else
epfifo_usb_init();
}
void usb_connect(void) {
if (version_major_read() == 2)
eptri_usb_connect();
else
epfifo_usb_connect();
}
void usb_idle(void) {
if (version_major_read() == 2)
eptri_usb_idle();
else
epfifo_usb_idle();
}
void usb_disconnect(void) {
if (version_major_read() == 2)
eptri_usb_disconnect();
else
epfifo_usb_disconnect();
}
void usb_set_address(uint8_t address) {
if (version_major_read() == 2)
eptri_usb_set_address(address);
else
epfifo_usb_set_address(address);
}
void usb_ack_in(uint8_t epno) {
if (version_major_read() == 2)
eptri_usb_ack_in(epno);
else
epfifo_usb_ack_in(epno);
}
void usb_ack_out(uint8_t epno) {
if (version_major_read() == 2)
eptri_usb_ack_out(epno);
else
epfifo_usb_ack_out(epno);
}
void usb_err_in(uint8_t epno) {
if (version_major_read() == 2)
eptri_usb_err_in(epno);
else
epfifo_usb_err_in(epno);
}
void usb_err_out(uint8_t epno) {
if (version_major_read() == 2)
eptri_usb_err_out(epno);
else
epfifo_usb_err_out(epno);
}
void usb_send(const void *data, int total_count) {
if (version_major_read() == 2)
eptri_usb_send(data, total_count);
else
epfifo_usb_send(data, total_count);
}
int usb_can_getc(void) {
if (version_major_read() == 2)
return eptri_usb_can_getc();
else
return epfifo_usb_can_getc();
}
int usb_can_putc(void) {
if (version_major_read() == 2)
return eptri_usb_can_putc();
else
return epfifo_usb_can_putc();
}
int usb_write(const char *buf, int count) {
if (version_major_read() == 2)
return eptri_usb_write(buf, count);
else
return epfifo_usb_write(buf, count);
}
int usb_getc(void) {
if (version_major_read() == 2)
return eptri_usb_getc();
else
return epfifo_usb_getc();
}
void usb_putc(char c) {
if (version_major_read() == 2)
eptri_usb_putc(c);
else
epfifo_usb_putc(c);
}
void usb_poll(void) {
if (version_major_read() == 2)
eptri_usb_poll();
else
epfifo_usb_poll();
}
int usb_recv(void *buffer, unsigned int buffer_len) {
if (version_major_read() == 2)
return eptri_usb_recv(buffer, buffer_len);
else
return epfifo_usb_recv(buffer, buffer_len);
}