@@ -36,17 +36,41 @@ class USBDeviceClass
36
36
USBDeviceClass () {};
37
37
38
38
// USB Device API
39
- void init ();
39
+ bool begin ();
40
+ void end ();
40
41
bool attach ();
41
42
bool detach ();
42
- void poll ();
43
+ void wakeup ();
43
44
44
- bool configured ();
45
+ bool attached ();
45
46
bool connected ();
47
+ bool configured ();
46
48
bool suspended ();
47
49
50
+ void onConnect (void (*callback)(void ));
51
+ void onConnect (Callback callback);
52
+ void onDisconnect (void (*callback)(void ));
53
+ void onDisconnect (Callback callback);
54
+ void onSuspend (void (*callback)(void ));
55
+ void onSuspend (Callback callback);
56
+ void onResume (void (*callback)(void ));
57
+ void onResume (Callback callback);
58
+
59
+ void enableWakeup ();
60
+ void disableWakeup ();
61
+
48
62
private:
49
- bool _initialized;
63
+ bool _enabled;
64
+
65
+ Callback _connectCallback;
66
+ Callback _disconnectCallback;
67
+ Callback _suspendCallback;
68
+ Callback _resumeCallback;
69
+
70
+ static void connectCallback (void );
71
+ static void disconnectCallback (void );
72
+ static void suspendCallback (void );
73
+ static void resumeCallback (void );
50
74
};
51
75
52
76
extern USBDeviceClass USBDevice;
@@ -84,16 +108,16 @@ class CDC : public HardwareSerial
84
108
bool rts ();
85
109
86
110
enum {
87
- ONE_STOP_BIT = 0 ,
88
- ONE_AND_HALF_STOP_BIT = 1 ,
89
- TWO_STOP_BITS = 2 ,
111
+ ONE_STOP_BIT = 0 ,
112
+ ONE_AND_HALF_STOP_BIT = 1 ,
113
+ TWO_STOP_BITS = 2 ,
90
114
};
91
115
enum {
92
- NO_PARITY = 0 ,
93
- ODD_PARITY = 1 ,
94
- EVEN_PARITY = 2 ,
95
- MARK_PARITY = 3 ,
96
- SPACE_PARITY = 4 ,
116
+ NO_PARITY = 0 ,
117
+ ODD_PARITY = 1 ,
118
+ EVEN_PARITY = 2 ,
119
+ MARK_PARITY = 3 ,
120
+ SPACE_PARITY = 4 ,
97
121
};
98
122
99
123
// STM32L0 EXTENSTION: enable/disable non-blocking writes
@@ -134,10 +158,10 @@ class MouseClass
134
158
void begin (void );
135
159
void end (void );
136
160
void click (uint8_t b = MOUSE_LEFT);
137
- void move (signed char x, signed char y, signed char wheel = 0 );
138
- void press (uint8_t b = MOUSE_LEFT); // press LEFT by default
139
- void release (uint8_t b = MOUSE_LEFT); // release LEFT by default
140
- bool isPressed (uint8_t b = MOUSE_LEFT); // check LEFT by default
161
+ void move (signed char x, signed char y, signed char wheel = 0 );
162
+ void press (uint8_t b = MOUSE_LEFT); // press LEFT by default
163
+ void release (uint8_t b = MOUSE_LEFT); // release LEFT by default
164
+ bool isPressed (uint8_t b = MOUSE_LEFT); // check LEFT by default
141
165
142
166
private:
143
167
uint8_t _buttons;
@@ -146,44 +170,44 @@ class MouseClass
146
170
147
171
extern MouseClass Mouse;
148
172
149
- #define KEY_LEFT_CTRL 0x80
150
- #define KEY_LEFT_SHIFT 0x81
151
- #define KEY_LEFT_ALT 0x82
152
- #define KEY_LEFT_GUI 0x83
153
- #define KEY_RIGHT_CTRL 0x84
154
- #define KEY_RIGHT_SHIFT 0x85
155
- #define KEY_RIGHT_ALT 0x86
156
- #define KEY_RIGHT_GUI 0x87
157
-
158
- #define KEY_UP_ARROW 0xDA
159
- #define KEY_DOWN_ARROW 0xD9
160
- #define KEY_LEFT_ARROW 0xD8
161
- #define KEY_RIGHT_ARROW 0xD7
162
- #define KEY_BACKSPACE 0xB2
163
- #define KEY_TAB 0xB3
164
- #define KEY_RETURN 0xB0
165
- #define KEY_ESC 0xB1
166
- #define KEY_INSERT 0xD1
167
- #define KEY_DELETE 0xD4
168
- #define KEY_PAGE_UP 0xD3
169
- #define KEY_PAGE_DOWN 0xD6
170
- #define KEY_HOME 0xD2
171
- #define KEY_END 0xD5
172
- #define KEY_CAPS_LOCK 0xC1
173
- #define KEY_F1 0xC2
174
- #define KEY_F2 0xC3
175
- #define KEY_F3 0xC4
176
- #define KEY_F4 0xC5
177
- #define KEY_F5 0xC6
178
- #define KEY_F6 0xC7
179
- #define KEY_F7 0xC8
180
- #define KEY_F8 0xC9
181
- #define KEY_F9 xCA
182
- #define KEY_F10 0xCB
183
- #define KEY_F11 0xCC
184
- #define KEY_F12 0xCD
185
-
186
- // Low level key report: up to 6 keys and shift, ctrl etc at once
173
+ #define KEY_LEFT_CTRL 0x80
174
+ #define KEY_LEFT_SHIFT 0x81
175
+ #define KEY_LEFT_ALT 0x82
176
+ #define KEY_LEFT_GUI 0x83
177
+ #define KEY_RIGHT_CTRL 0x84
178
+ #define KEY_RIGHT_SHIFT 0x85
179
+ #define KEY_RIGHT_ALT 0x86
180
+ #define KEY_RIGHT_GUI 0x87
181
+
182
+ #define KEY_UP_ARROW 0xDA
183
+ #define KEY_DOWN_ARROW 0xD9
184
+ #define KEY_LEFT_ARROW 0xD8
185
+ #define KEY_RIGHT_ARROW 0xD7
186
+ #define KEY_BACKSPACE 0xB2
187
+ #define KEY_TAB 0xB3
188
+ #define KEY_RETURN 0xB0
189
+ #define KEY_ESC 0xB1
190
+ #define KEY_INSERT 0xD1
191
+ #define KEY_DELETE 0xD4
192
+ #define KEY_PAGE_UP 0xD3
193
+ #define KEY_PAGE_DOWN 0xD6
194
+ #define KEY_HOME 0xD2
195
+ #define KEY_END 0xD5
196
+ #define KEY_CAPS_LOCK 0xC1
197
+ #define KEY_F1 0xC2
198
+ #define KEY_F2 0xC3
199
+ #define KEY_F3 0xC4
200
+ #define KEY_F4 0xC5
201
+ #define KEY_F5 0xC6
202
+ #define KEY_F6 0xC7
203
+ #define KEY_F7 0xC8
204
+ #define KEY_F8 0xC9
205
+ #define KEY_F9 xCA
206
+ #define KEY_F10 0xCB
207
+ #define KEY_F11 0xCC
208
+ #define KEY_F12 0xCD
209
+
210
+ // Low level key report: up to 6 keys and shift, ctrl etc at once
187
211
typedef struct
188
212
{
189
213
uint8_t modifiers;
0 commit comments