Skip to content

Commit 05686e7

Browse files
authored
Merge pull request #454 from adafruit/force-example-re_enum
force re-enumerate for all examples.
2 parents 2df6d29 + 59a651c commit 05686e7

File tree

24 files changed

+234
-108
lines changed

24 files changed

+234
-108
lines changed

examples/CDC/cdc_multi/cdc_multi.ino

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ void setup() {
5656
// initialize 2nd CDC interface
5757
USBSer1.begin(115200);
5858

59+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
60+
if (TinyUSBDevice.mounted()) {
61+
TinyUSBDevice.detach();
62+
delay(10);
63+
TinyUSBDevice.attach();
64+
}
65+
5966
while (!Serial || !USBSer1) {
6067
if (Serial) {
6168
Serial.println("Waiting for other USB ports");

examples/CDC/no_serial/no_serial.ino

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ void setup()
3131
// clear configuration will remove all USB interfaces including CDC (Serial)
3232
TinyUSBDevice.clearConfiguration();
3333

34+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
35+
if (TinyUSBDevice.mounted()) {
36+
TinyUSBDevice.detach();
37+
delay(10);
38+
TinyUSBDevice.attach();
39+
}
40+
3441
pinMode(led, OUTPUT);
3542
}
3643

examples/Composite/mouse_ramdisk/mouse_ramdisk.ino

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ void setup() {
7474
TinyUSBDevice.begin(0);
7575
}
7676

77+
Serial.begin(115200);
78+
7779
// Set disk vendor id, product id and revision with string up to 8, 16, 4 characters respectively
7880
usb_msc.setID("Adafruit", "Mass Storage", "1.0");
7981

@@ -97,7 +99,13 @@ void setup() {
9799
usb_hid.setPollInterval(2);
98100
usb_hid.begin();
99101

100-
Serial.begin(115200);
102+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
103+
if (TinyUSBDevice.mounted()) {
104+
TinyUSBDevice.detach();
105+
delay(10);
106+
TinyUSBDevice.attach();
107+
}
108+
101109
Serial.println("Adafruit TinyUSB Mouse + Mass Storage (ramdisk) example");
102110
}
103111

examples/HID/hid_boot_keyboard/hid_boot_keyboard.ino

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ void setup() {
6666

6767
usb_hid.begin();
6868

69+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
70+
if (TinyUSBDevice.mounted()) {
71+
TinyUSBDevice.detach();
72+
delay(10);
73+
TinyUSBDevice.attach();
74+
}
75+
6976
// led pin
7077
pinMode(LED_BUILTIN, OUTPUT);
7178
digitalWrite(LED_BUILTIN, LOW);

examples/HID/hid_boot_mouse/hid_boot_mouse.ino

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ void setup() {
5959
TinyUSBDevice.begin(0);
6060
}
6161

62+
Serial.begin(115200);
63+
6264
// Set up button, pullup opposite to active state
6365
pinMode(pin, activeState ? INPUT_PULLDOWN : INPUT_PULLUP);
6466

@@ -67,10 +69,15 @@ void setup() {
6769
usb_hid.setPollInterval(2);
6870
usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));
6971
usb_hid.setStringDescriptor("TinyUSB Mouse");
70-
7172
usb_hid.begin();
7273

73-
Serial.begin(115200);
74+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
75+
if (TinyUSBDevice.mounted()) {
76+
TinyUSBDevice.detach();
77+
delay(10);
78+
TinyUSBDevice.attach();
79+
}
80+
7481
Serial.println("Adafruit TinyUSB HID Mouse example");
7582
}
7683

examples/HID/hid_composite/hid_composite.ino

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,24 @@ void setup() {
7070
TinyUSBDevice.begin(0);
7171
}
7272

73+
Serial.begin(115200);
74+
7375
// Set up HID
7476
usb_hid.setPollInterval(2);
7577
usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));
7678
usb_hid.setStringDescriptor("TinyUSB HID Composite");
77-
7879
usb_hid.begin();
7980

81+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
82+
if (TinyUSBDevice.mounted()) {
83+
TinyUSBDevice.detach();
84+
delay(10);
85+
TinyUSBDevice.attach();
86+
}
87+
8088
// Set up button, pullup opposite to active state
8189
pinMode(pin, activeState ? INPUT_PULLDOWN : INPUT_PULLUP);
8290

83-
Serial.begin(115200);
8491
Serial.println("Adafruit TinyUSB HID Composite example");
8592
}
8693

examples/HID/hid_composite_joy_featherwing/hid_composite_joy_featherwing.ino

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,20 @@ void setup() {
5656
if (!TinyUSBDevice.isInitialized()) {
5757
TinyUSBDevice.begin(0);
5858
}
59+
Serial.begin(115200);
5960

6061
// Notes: following commented-out functions has no affect on ESP32
6162
// usb_hid.setPollInterval(2);
6263
// usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));
6364
usb_hid.begin();
6465

65-
Serial.begin(115200);
66+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
67+
if (TinyUSBDevice.mounted()) {
68+
TinyUSBDevice.detach();
69+
delay(10);
70+
TinyUSBDevice.attach();
71+
}
72+
6673
Serial.println("Adafruit TinyUSB HID Mouse with Joy FeatherWing example");
6774

6875
if (!ss.begin(0x49)) {

examples/HID/hid_dual_interfaces/hid_dual_interfaces.ino

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ void setup() {
6767
TinyUSBDevice.begin(0);
6868
}
6969

70+
Serial.begin(115200);
71+
7072
// HID Keyboard
7173
usb_keyboard.setPollInterval(2);
7274
usb_keyboard.setBootProtocol(HID_ITF_PROTOCOL_KEYBOARD);
@@ -81,10 +83,16 @@ void setup() {
8183
usb_mouse.setStringDescriptor("TinyUSB HID Keyboard");
8284
usb_mouse.begin();
8385

86+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
87+
if (TinyUSBDevice.mounted()) {
88+
TinyUSBDevice.detach();
89+
delay(10);
90+
TinyUSBDevice.attach();
91+
}
92+
8493
// Set up button, pullup opposite to active state
8594
pinMode(pin, activeState ? INPUT_PULLDOWN : INPUT_PULLUP);
8695

87-
Serial.begin(115200);
8896
Serial.println("Adafruit TinyUSB HID Composite example");
8997
}
9098

examples/HID/hid_gamepad/hid_gamepad.ino

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ void setup() {
4747
usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));
4848
usb_hid.begin();
4949

50+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
51+
if (TinyUSBDevice.mounted()) {
52+
TinyUSBDevice.detach();
53+
delay(10);
54+
TinyUSBDevice.attach();
55+
}
56+
5057
Serial.println("Adafruit TinyUSB HID Gamepad example");
5158
}
5259

examples/HID/hid_generic_inout/hid_generic_inout.ino

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,23 @@ void setup() {
5353
TinyUSBDevice.begin(0);
5454
}
5555

56+
Serial.begin(115200);
57+
5658
// Notes: following commented-out functions has no affect on ESP32
5759
usb_hid.enableOutEndpoint(true);
5860
usb_hid.setPollInterval(2);
5961
usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));
6062
usb_hid.setStringDescriptor("TinyUSB HID Generic");
61-
6263
usb_hid.setReportCallback(get_report_callback, set_report_callback);
6364
usb_hid.begin();
6465

65-
Serial.begin(115200);
66+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
67+
if (TinyUSBDevice.mounted()) {
68+
TinyUSBDevice.detach();
69+
delay(10);
70+
TinyUSBDevice.attach();
71+
}
72+
6673
Serial.println("Adafruit TinyUSB HID Generic In Out example");
6774
}
6875

examples/MIDI/midi_multi_ports/midi_multi_ports.ino

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
// USB MIDI object with 3 ports
2020
Adafruit_USBD_MIDI usb_midi(3);
2121

22-
void setup()
23-
{
22+
void setup() {
2423
pinMode(LED_BUILTIN, OUTPUT);
2524

2625
// Manual begin() is required on core without built-in support e.g. mbed rp2040
@@ -32,12 +31,17 @@ void setup()
3231
usb_midi.setCableName(1, "Keyboard");
3332
usb_midi.setCableName(2, "Drum Pads");
3433
usb_midi.setCableName(3, "Lights");
35-
3634
usb_midi.begin();
35+
36+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
37+
if (TinyUSBDevice.mounted()) {
38+
TinyUSBDevice.detach();
39+
delay(10);
40+
TinyUSBDevice.attach();
41+
}
3742
}
3843

39-
void loop()
40-
{
44+
void loop() {
4145
#ifdef TINYUSB_NEED_POLLING_TASK
4246
// Manual call tud_task since it isn't called by Core's background
4347
TinyUSBDevice.task();

examples/MIDI/midi_test/midi_test.ino

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ void setup() {
4242
TinyUSBDevice.begin(0);
4343
}
4444

45+
Serial.begin(115200);
46+
4547
pinMode(LED_BUILTIN, OUTPUT);
4648

4749
usb_midi.setStringDescriptor("TinyUSB MIDI");
@@ -50,14 +52,19 @@ void setup() {
5052
// This will also call usb_midi's begin()
5153
MIDI.begin(MIDI_CHANNEL_OMNI);
5254

55+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
56+
if (TinyUSBDevice.mounted()) {
57+
TinyUSBDevice.detach();
58+
delay(10);
59+
TinyUSBDevice.attach();
60+
}
61+
5362
// Attach the handleNoteOn function to the MIDI Library. It will
5463
// be called whenever the Bluefruit receives MIDI Note On messages.
5564
MIDI.setHandleNoteOn(handleNoteOn);
5665

5766
// Do the same for MIDI Note Off messages.
5867
MIDI.setHandleNoteOff(handleNoteOff);
59-
60-
Serial.begin(115200);
6168
}
6269

6370
void loop() {

examples/MassStorage/msc_esp32_file_browser/msc_esp32_file_browser.ino

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,19 @@ void setupMassStorage(void)
9393
// MSC is ready for read/write
9494
fs_changed = false;
9595
usb_msc.setReadyCallback(0, msc_ready_callback);
96-
9796
usb_msc.begin();
9897

98+
// If already enumerated, additional class driverr begin() e.g msc, hid, midi won't take effect until re-enumeration
99+
if (TinyUSBDevice.mounted()) {
100+
TinyUSBDevice.detach();
101+
delay(10);
102+
TinyUSBDevice.attach();
103+
}
104+
99105
// Init file system on the flash
100106
fs_formatted = fatfs.begin(&flash);
101107

102-
if ( !fs_formatted )
103-
{
108+
if ( !fs_formatted ) {
104109
DBG_SERIAL.println("Failed to init files system, flash may not be formatted");
105110
}
106111
}

0 commit comments

Comments
 (0)