1
- #if ARDUINO_USB_MODE
1
+ #ifndef ARDUINO_USB_MODE
2
+ #error This ESP32 SoC has no Native USB interface
3
+ #elif ARDUINO_USB_MODE == 1
2
4
#warning This sketch should be used when USB is in OTG mode
3
5
void setup (){}
4
6
void loop (){}
@@ -15,13 +17,6 @@ void loop(){}
15
17
#if !ARDUINO_USB_MSC_ON_BOOT
16
18
FirmwareMSC MSC_Update;
17
19
#endif
18
- #if ARDUINO_USB_CDC_ON_BOOT
19
- #define HWSerial Serial0
20
- #define USBSerial Serial
21
- #else
22
- #define HWSerial Serial
23
- USBCDC USBSerial;
24
- #endif
25
20
26
21
USBHID HID;
27
22
USBHIDKeyboard Keyboard;
@@ -39,16 +34,16 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
39
34
arduino_usb_event_data_t * data = (arduino_usb_event_data_t *)event_data;
40
35
switch (event_id){
41
36
case ARDUINO_USB_STARTED_EVENT:
42
- HWSerial .println (" USB PLUGGED" );
37
+ Serial .println (" USB PLUGGED" );
43
38
break ;
44
39
case ARDUINO_USB_STOPPED_EVENT:
45
- HWSerial .println (" USB UNPLUGGED" );
40
+ Serial .println (" USB UNPLUGGED" );
46
41
break ;
47
42
case ARDUINO_USB_SUSPEND_EVENT:
48
- HWSerial .printf (" USB SUSPENDED: remote_wakeup_en: %u\n " , data->suspend .remote_wakeup_en );
43
+ Serial .printf (" USB SUSPENDED: remote_wakeup_en: %u\n " , data->suspend .remote_wakeup_en );
49
44
break ;
50
45
case ARDUINO_USB_RESUME_EVENT:
51
- HWSerial .println (" USB RESUMED" );
46
+ Serial .println (" USB RESUMED" );
52
47
break ;
53
48
54
49
default :
@@ -58,28 +53,28 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
58
53
arduino_usb_cdc_event_data_t * data = (arduino_usb_cdc_event_data_t *)event_data;
59
54
switch (event_id){
60
55
case ARDUINO_USB_CDC_CONNECTED_EVENT:
61
- HWSerial .println (" CDC CONNECTED" );
56
+ Serial .println (" CDC CONNECTED" );
62
57
break ;
63
58
case ARDUINO_USB_CDC_DISCONNECTED_EVENT:
64
- HWSerial .println (" CDC DISCONNECTED" );
59
+ Serial .println (" CDC DISCONNECTED" );
65
60
break ;
66
61
case ARDUINO_USB_CDC_LINE_STATE_EVENT:
67
- HWSerial .printf (" CDC LINE STATE: dtr: %u, rts: %u\n " , data->line_state .dtr , data->line_state .rts );
62
+ Serial .printf (" CDC LINE STATE: dtr: %u, rts: %u\n " , data->line_state .dtr , data->line_state .rts );
68
63
break ;
69
64
case ARDUINO_USB_CDC_LINE_CODING_EVENT:
70
- HWSerial .printf (" CDC LINE CODING: bit_rate: %lu, data_bits: %u, stop_bits: %u, parity: %u\n " , data->line_coding .bit_rate , data->line_coding .data_bits , data->line_coding .stop_bits , data->line_coding .parity );
65
+ Serial .printf (" CDC LINE CODING: bit_rate: %lu, data_bits: %u, stop_bits: %u, parity: %u\n " , data->line_coding .bit_rate , data->line_coding .data_bits , data->line_coding .stop_bits , data->line_coding .parity );
71
66
break ;
72
67
case ARDUINO_USB_CDC_RX_EVENT:
73
- HWSerial .printf (" CDC RX [%u]:" , data->rx .len );
68
+ Serial .printf (" CDC RX [%u]:" , data->rx .len );
74
69
{
75
70
uint8_t buf[data->rx .len ];
76
71
size_t len = USBSerial.read (buf, data->rx .len );
77
- HWSerial .write (buf, len);
72
+ Serial .write (buf, len);
78
73
}
79
- HWSerial .println ();
74
+ Serial .println ();
80
75
break ;
81
76
case ARDUINO_USB_CDC_RX_OVERFLOW_EVENT:
82
- HWSerial .printf (" CDC RX Overflow of %d bytes" , data->rx_overflow .dropped_bytes );
77
+ Serial .printf (" CDC RX Overflow of %d bytes" , data->rx_overflow .dropped_bytes );
83
78
break ;
84
79
85
80
default :
@@ -89,20 +84,20 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
89
84
arduino_firmware_msc_event_data_t * data = (arduino_firmware_msc_event_data_t *)event_data;
90
85
switch (event_id){
91
86
case ARDUINO_FIRMWARE_MSC_START_EVENT:
92
- HWSerial .println (" MSC Update Start" );
87
+ Serial .println (" MSC Update Start" );
93
88
break ;
94
89
case ARDUINO_FIRMWARE_MSC_WRITE_EVENT:
95
- // HWSerial .printf("MSC Update Write %u bytes at offset %u\n", data->write.size, data->write.offset);
96
- HWSerial .print (" ." );
90
+ // Serial .printf("MSC Update Write %u bytes at offset %u\n", data->write.size, data->write.offset);
91
+ Serial .print (" ." );
97
92
break ;
98
93
case ARDUINO_FIRMWARE_MSC_END_EVENT:
99
- HWSerial .printf (" \n MSC Update End: %u bytes\n " , data->end .size );
94
+ Serial .printf (" \n MSC Update End: %u bytes\n " , data->end .size );
100
95
break ;
101
96
case ARDUINO_FIRMWARE_MSC_ERROR_EVENT:
102
- HWSerial .printf (" MSC Update ERROR! Progress: %u bytes\n " , data->error .size );
97
+ Serial .printf (" MSC Update ERROR! Progress: %u bytes\n " , data->error .size );
103
98
break ;
104
99
case ARDUINO_FIRMWARE_MSC_POWER_EVENT:
105
- HWSerial .printf (" MSC Update Power: power: %u, start: %u, eject: %u\n " , data->power .power_condition , data->power .start , data->power .load_eject );
100
+ Serial .printf (" MSC Update Power: power: %u, start: %u, eject: %u\n " , data->power .power_condition , data->power .start , data->power .load_eject );
106
101
break ;
107
102
108
103
default :
@@ -112,10 +107,10 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
112
107
arduino_usb_hid_event_data_t * data = (arduino_usb_hid_event_data_t *)event_data;
113
108
switch (event_id){
114
109
case ARDUINO_USB_HID_SET_PROTOCOL_EVENT:
115
- HWSerial .printf (" HID SET PROTOCOL: %s\n " , data->set_protocol .protocol ?" REPORT" :" BOOT" );
110
+ Serial .printf (" HID SET PROTOCOL: %s\n " , data->set_protocol .protocol ?" REPORT" :" BOOT" );
116
111
break ;
117
112
case ARDUINO_USB_HID_SET_IDLE_EVENT:
118
- HWSerial .printf (" HID SET IDLE: %u\n " , data->set_idle .idle_rate );
113
+ Serial .printf (" HID SET IDLE: %u\n " , data->set_idle .idle_rate );
119
114
break ;
120
115
121
116
default :
@@ -125,7 +120,7 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
125
120
arduino_usb_hid_keyboard_event_data_t * data = (arduino_usb_hid_keyboard_event_data_t *)event_data;
126
121
switch (event_id){
127
122
case ARDUINO_USB_HID_KEYBOARD_LED_EVENT:
128
- HWSerial .printf (" HID KEYBOARD LED: NumLock:%u, CapsLock:%u, ScrollLock:%u\n " , data->numlock , data->capslock , data->scrolllock );
123
+ Serial .printf (" HID KEYBOARD LED: NumLock:%u, CapsLock:%u, ScrollLock:%u\n " , data->numlock , data->capslock , data->scrolllock );
129
124
break ;
130
125
131
126
default :
@@ -135,25 +130,25 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
135
130
arduino_usb_hid_vendor_event_data_t * data = (arduino_usb_hid_vendor_event_data_t *)event_data;
136
131
switch (event_id){
137
132
case ARDUINO_USB_HID_VENDOR_GET_FEATURE_EVENT:
138
- HWSerial .printf (" HID VENDOR GET FEATURE: len:%u\n " , data->len );
133
+ Serial .printf (" HID VENDOR GET FEATURE: len:%u\n " , data->len );
139
134
for (uint16_t i=0 ; i<data->len ; i++){
140
- HWSerial .write (data->buffer [i]?data->buffer [i]:' .' );
135
+ Serial .write (data->buffer [i]?data->buffer [i]:' .' );
141
136
}
142
- HWSerial .println ();
137
+ Serial .println ();
143
138
break ;
144
139
case ARDUINO_USB_HID_VENDOR_SET_FEATURE_EVENT:
145
- HWSerial .printf (" HID VENDOR SET FEATURE: len:%u\n " , data->len );
140
+ Serial .printf (" HID VENDOR SET FEATURE: len:%u\n " , data->len );
146
141
for (uint16_t i=0 ; i<data->len ; i++){
147
- HWSerial .write (data->buffer [i]?data->buffer [i]:' .' );
142
+ Serial .write (data->buffer [i]?data->buffer [i]:' .' );
148
143
}
149
- HWSerial .println ();
144
+ Serial .println ();
150
145
break ;
151
146
case ARDUINO_USB_HID_VENDOR_OUTPUT_EVENT:
152
- HWSerial .printf (" HID VENDOR OUTPUT: len:%u\n " , data->len );
147
+ Serial .printf (" HID VENDOR OUTPUT: len:%u\n " , data->len );
153
148
for (uint16_t i=0 ; i<data->len ; i++){
154
- HWSerial .write (Vendor.read ());
149
+ Serial .write (Vendor.read ());
155
150
}
156
- HWSerial .println ();
151
+ Serial .println ();
157
152
break ;
158
153
159
154
default :
@@ -163,8 +158,8 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
163
158
}
164
159
165
160
void setup () {
166
- HWSerial .begin (115200 );
167
- HWSerial .setDebugOutput (true );
161
+ Serial .begin (115200 );
162
+ Serial .setDebugOutput (true );
168
163
169
164
pinMode (buttonPin, INPUT_PULLUP);
170
165
@@ -191,7 +186,7 @@ void loop() {
191
186
if (HID.ready () && buttonState != previousButtonState) {
192
187
previousButtonState = buttonState;
193
188
if (buttonState == LOW) {
194
- HWSerial .println (" Button Pressed" );
189
+ if (Serial != USBSerial) Serial .println (" Button Pressed" );
195
190
USBSerial.println (" Button Pressed" );
196
191
Vendor.println (" Button Pressed" );
197
192
Mouse.move (10 ,10 );
@@ -206,15 +201,15 @@ void loop() {
206
201
// SystemControl.release();
207
202
Vendor.println (" Button Released" );
208
203
USBSerial.println (" Button Released" );
209
- HWSerial .println (" Button Released" );
204
+ if (Serial != USBSerial) Serial .println (" Button Released" );
210
205
}
211
206
delay (100 );
212
207
}
213
208
214
- while (HWSerial .available ()){
215
- size_t l = HWSerial .available ();
209
+ while (Serial .available ()){
210
+ size_t l = Serial .available ();
216
211
uint8_t b[l];
217
- l = HWSerial .read (b, l);
212
+ l = Serial .read (b, l);
218
213
USBSerial.write (b, l);
219
214
if (HID.ready ()){
220
215
Vendor.write (b,l);
0 commit comments