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
24#warning This sketch should be used when USB is in OTG mode
35void setup (){}
46void loop (){}
@@ -15,13 +17,6 @@ void loop(){}
1517#if !ARDUINO_USB_MSC_ON_BOOT
1618FirmwareMSC MSC_Update;
1719#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
2520
2621USBHID HID;
2722USBHIDKeyboard Keyboard;
@@ -39,16 +34,16 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
3934 arduino_usb_event_data_t * data = (arduino_usb_event_data_t *)event_data;
4035 switch (event_id){
4136 case ARDUINO_USB_STARTED_EVENT:
42- HWSerial .println (" USB PLUGGED" );
37+ Serial .println (" USB PLUGGED" );
4338 break ;
4439 case ARDUINO_USB_STOPPED_EVENT:
45- HWSerial .println (" USB UNPLUGGED" );
40+ Serial .println (" USB UNPLUGGED" );
4641 break ;
4742 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 );
4944 break ;
5045 case ARDUINO_USB_RESUME_EVENT:
51- HWSerial .println (" USB RESUMED" );
46+ Serial .println (" USB RESUMED" );
5247 break ;
5348
5449 default :
@@ -58,28 +53,28 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
5853 arduino_usb_cdc_event_data_t * data = (arduino_usb_cdc_event_data_t *)event_data;
5954 switch (event_id){
6055 case ARDUINO_USB_CDC_CONNECTED_EVENT:
61- HWSerial .println (" CDC CONNECTED" );
56+ Serial .println (" CDC CONNECTED" );
6257 break ;
6358 case ARDUINO_USB_CDC_DISCONNECTED_EVENT:
64- HWSerial .println (" CDC DISCONNECTED" );
59+ Serial .println (" CDC DISCONNECTED" );
6560 break ;
6661 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 );
6863 break ;
6964 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 );
7166 break ;
7267 case ARDUINO_USB_CDC_RX_EVENT:
73- HWSerial .printf (" CDC RX [%u]:" , data->rx .len );
68+ Serial .printf (" CDC RX [%u]:" , data->rx .len );
7469 {
7570 uint8_t buf[data->rx .len ];
7671 size_t len = USBSerial.read (buf, data->rx .len );
77- HWSerial .write (buf, len);
72+ Serial .write (buf, len);
7873 }
79- HWSerial .println ();
74+ Serial .println ();
8075 break ;
8176 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 );
8378 break ;
8479
8580 default :
@@ -89,20 +84,20 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
8984 arduino_firmware_msc_event_data_t * data = (arduino_firmware_msc_event_data_t *)event_data;
9085 switch (event_id){
9186 case ARDUINO_FIRMWARE_MSC_START_EVENT:
92- HWSerial .println (" MSC Update Start" );
87+ Serial .println (" MSC Update Start" );
9388 break ;
9489 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 (" ." );
9792 break ;
9893 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 );
10095 break ;
10196 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 );
10398 break ;
10499 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 );
106101 break ;
107102
108103 default :
@@ -112,10 +107,10 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
112107 arduino_usb_hid_event_data_t * data = (arduino_usb_hid_event_data_t *)event_data;
113108 switch (event_id){
114109 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" );
116111 break ;
117112 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 );
119114 break ;
120115
121116 default :
@@ -125,7 +120,7 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
125120 arduino_usb_hid_keyboard_event_data_t * data = (arduino_usb_hid_keyboard_event_data_t *)event_data;
126121 switch (event_id){
127122 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 );
129124 break ;
130125
131126 default :
@@ -135,25 +130,25 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
135130 arduino_usb_hid_vendor_event_data_t * data = (arduino_usb_hid_vendor_event_data_t *)event_data;
136131 switch (event_id){
137132 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 );
139134 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]:' .' );
141136 }
142- HWSerial .println ();
137+ Serial .println ();
143138 break ;
144139 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 );
146141 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]:' .' );
148143 }
149- HWSerial .println ();
144+ Serial .println ();
150145 break ;
151146 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 );
153148 for (uint16_t i=0 ; i<data->len ; i++){
154- HWSerial .write (Vendor.read ());
149+ Serial .write (Vendor.read ());
155150 }
156- HWSerial .println ();
151+ Serial .println ();
157152 break ;
158153
159154 default :
@@ -163,8 +158,8 @@ static void usbEventCallback(void* arg, esp_event_base_t event_base, int32_t eve
163158}
164159
165160void setup () {
166- HWSerial .begin (115200 );
167- HWSerial .setDebugOutput (true );
161+ Serial .begin (115200 );
162+ Serial .setDebugOutput (true );
168163
169164 pinMode (buttonPin, INPUT_PULLUP);
170165
@@ -191,7 +186,7 @@ void loop() {
191186 if (HID.ready () && buttonState != previousButtonState) {
192187 previousButtonState = buttonState;
193188 if (buttonState == LOW) {
194- HWSerial .println (" Button Pressed" );
189+ if (Serial != USBSerial) Serial .println (" Button Pressed" );
195190 USBSerial.println (" Button Pressed" );
196191 Vendor.println (" Button Pressed" );
197192 Mouse.move (10 ,10 );
@@ -206,15 +201,15 @@ void loop() {
206201 // SystemControl.release();
207202 Vendor.println (" Button Released" );
208203 USBSerial.println (" Button Released" );
209- HWSerial .println (" Button Released" );
204+ if (Serial != USBSerial) Serial .println (" Button Released" );
210205 }
211206 delay (100 );
212207 }
213208
214- while (HWSerial .available ()){
215- size_t l = HWSerial .available ();
209+ while (Serial .available ()){
210+ size_t l = Serial .available ();
216211 uint8_t b[l];
217- l = HWSerial .read (b, l);
212+ l = Serial .read (b, l);
218213 USBSerial.write (b, l);
219214 if (HID.ready ()){
220215 Vendor.write (b,l);
0 commit comments