2222#if defined __cplusplus
2323
2424#include " RingBuffer.h"
25+ #include " Stream.h"
26+ #include < cstddef>
27+
28+ #define min (a, b ) Min(a, b)
2529
2630// ================================================================================
2731// ================================================================================
@@ -86,97 +90,6 @@ class Serial_ : public Stream
8690};
8791extern Serial_ SerialUSB;
8892
89- // ================================================================================
90- // ================================================================================
91- // Mouse
92-
93- #define MOUSE_LEFT 1
94- #define MOUSE_RIGHT 2
95- #define MOUSE_MIDDLE 4
96- #define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE)
97-
98- class Mouse_
99- {
100- private:
101- uint8_t _buttons;
102- void buttons (uint8_t b);
103- public:
104- Mouse_ (void );
105- void begin (void );
106- void end (void );
107- void click (uint8_t b = MOUSE_LEFT);
108- void move (signed char x, signed char y, signed char wheel = 0 );
109- void press (uint8_t b = MOUSE_LEFT); // press LEFT by default
110- void release (uint8_t b = MOUSE_LEFT); // release LEFT by default
111- bool isPressed (uint8_t b = MOUSE_ALL); // check all buttons by default
112- };
113- extern Mouse_ Mouse;
114-
115- // ================================================================================
116- // ================================================================================
117- // Keyboard
118-
119- #define KEY_LEFT_CTRL 0x80
120- #define KEY_LEFT_SHIFT 0x81
121- #define KEY_LEFT_ALT 0x82
122- #define KEY_LEFT_GUI 0x83
123- #define KEY_RIGHT_CTRL 0x84
124- #define KEY_RIGHT_SHIFT 0x85
125- #define KEY_RIGHT_ALT 0x86
126- #define KEY_RIGHT_GUI 0x87
127-
128- #define KEY_UP_ARROW 0xDA
129- #define KEY_DOWN_ARROW 0xD9
130- #define KEY_LEFT_ARROW 0xD8
131- #define KEY_RIGHT_ARROW 0xD7
132- #define KEY_BACKSPACE 0xB2
133- #define KEY_TAB 0xB3
134- #define KEY_RETURN 0xB0
135- #define KEY_ESC 0xB1
136- #define KEY_INSERT 0xD1
137- #define KEY_DELETE 0xD4
138- #define KEY_PAGE_UP 0xD3
139- #define KEY_PAGE_DOWN 0xD6
140- #define KEY_HOME 0xD2
141- #define KEY_END 0xD5
142- #define KEY_CAPS_LOCK 0xC1
143- #define KEY_F1 0xC2
144- #define KEY_F2 0xC3
145- #define KEY_F3 0xC4
146- #define KEY_F4 0xC5
147- #define KEY_F5 0xC6
148- #define KEY_F6 0xC7
149- #define KEY_F7 0xC8
150- #define KEY_F8 0xC9
151- #define KEY_F9 0xCA
152- #define KEY_F10 0xCB
153- #define KEY_F11 0xCC
154- #define KEY_F12 0xCD
155-
156- // Low level key report: up to 6 keys and shift, ctrl etc at once
157- typedef struct
158- {
159- uint8_t modifiers;
160- uint8_t reserved;
161- uint8_t keys[6 ];
162- } KeyReport;
163-
164- class Keyboard_ : public Print
165- {
166- private:
167- KeyReport _keyReport;
168- void sendReport (KeyReport* keys);
169- public:
170- Keyboard_ (void );
171- void begin (void );
172- void end (void );
173- virtual size_t write (uint8_t k);
174- virtual size_t press (uint8_t k);
175- virtual size_t release (uint8_t k);
176- virtual void releaseAll (void );
177- };
178- extern Keyboard_ Keyboard;
179-
18093// ================================================================================
18194// ================================================================================
18295// Low level API
@@ -189,24 +102,15 @@ typedef struct
189102 uint8_t wValueH;
190103 uint16_t wIndex;
191104 uint16_t wLength;
192- } Setup;
193-
194- // ================================================================================
195- // ================================================================================
196- // HID 'Driver'
197-
198- int HID_GetInterface (uint8_t * interfaceNum);
199- int HID_GetDescriptor (int i);
200- bool HID_Setup (Setup& setup);
201- void HID_SendReport (uint8_t id, const void * data, uint32_t len);
105+ } USBSetup;
202106
203107// ================================================================================
204108// ================================================================================
205109// MSC 'Driver'
206110
207111int MSC_GetInterface (uint8_t * interfaceNum);
208112int MSC_GetDescriptor (int i);
209- bool MSC_Setup (Setup & setup);
113+ bool MSC_Setup (USBSetup & setup);
210114bool MSC_Data (uint8_t rx,uint8_t tx);
211115
212116// ================================================================================
@@ -216,7 +120,7 @@ bool MSC_Data(uint8_t rx,uint8_t tx);
216120int CDC_GetInterface (uint8_t * interfaceNum);
217121int CDC_GetOtherInterface (uint8_t * interfaceNum);
218122int CDC_GetDescriptor (int i);
219- bool CDC_Setup (Setup & setup);
123+ bool CDC_Setup (USBSetup & setup);
220124
221125// ================================================================================
222126// ================================================================================
@@ -228,7 +132,7 @@ void USBD_InitControl(int end);
228132int USBD_SendControl (uint8_t flags, const void * d, uint32_t len);
229133int USBD_RecvControl (void * d, uint32_t len);
230134int USBD_SendInterfaces (void );
231- bool USBD_ClassInterfaceRequest (Setup & setup);
135+ bool USBD_ClassInterfaceRequest (USBSetup & setup);
232136
233137
234138uint32_t USBD_Available (uint32_t ep);
0 commit comments