Skip to content

Commit e7c5719

Browse files
authored
Merge pull request arduino#117 from adafruit/tinyusb
Tinyusb branch
2 parents 6194fc3 + 918d820 commit e7c5719

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+10440
-6
lines changed

boards.txt

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ menu.cache=Cache
1818
menu.speed=CPU Speed
1919
menu.opt=Optimize
2020
menu.maxqspi=Max QSPI
21+
menu.usbstack=USB Stack
2122

2223
# Adafruit Feather M0 (SAMD21)
2324
# ------------------------------
@@ -50,6 +51,9 @@ adafruit_feather_m0.build.vid=0x239A
5051
adafruit_feather_m0.build.pid=0x800B
5152
adafruit_feather_m0.bootloader.tool=openocd
5253
adafruit_feather_m0.bootloader.file=featherM0/bootloader-feather_m0-v2.0.0-adafruit.5.bin
54+
adafruit_feather_m0.menu.usbstack.arduino=Arduino
55+
adafruit_feather_m0.menu.usbstack.tinyusb=TinyUSB
56+
adafruit_feather_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
5357

5458
# Adafruit Feather M0 Express (SAMD21)
5559
# ------------------------------
@@ -80,6 +84,9 @@ adafruit_feather_m0_express.build.vid=0x239A
8084
adafruit_feather_m0_express.build.pid=0x801B
8185
adafruit_feather_m0_express.bootloader.tool=openocd
8286
adafruit_feather_m0_express.bootloader.file=featherM0/bootloader-feather_m0-v2.0.0-adafruit.5.bin
87+
adafruit_feather_m0_express.menu.usbstack.arduino=Arduino
88+
adafruit_feather_m0_express.menu.usbstack.tinyusb=TinyUSB
89+
adafruit_feather_m0_express.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
8390

8491
#adafruit_radio_m0.name=Adafruit M0 Radio (Native USB Port)
8592
#adafruit_radio_m0.vid.0=0x239A
@@ -137,6 +144,9 @@ adafruit_metro_m0.build.vid=0x239A
137144
adafruit_metro_m0.build.pid=0x8013
138145
adafruit_metro_m0.bootloader.tool=openocd
139146
adafruit_metro_m0.bootloader.file=metroM0/bootloader-metro_m0-v2.0.0-adafruit.5.bin
147+
adafruit_metro_m0.menu.usbstack.arduino=Arduino
148+
adafruit_metro_m0.menu.usbstack.tinyusb=TinyUSB
149+
adafruit_metro_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
140150

141151
# Adafruit Circuit Playground Express (SAMD21)
142152
# ------------------------------
@@ -167,6 +177,9 @@ adafruit_circuitplayground_m0.build.vid=0x239A
167177
adafruit_circuitplayground_m0.build.pid=0x8018
168178
adafruit_circuitplayground_m0.bootloader.tool=openocd
169179
adafruit_circuitplayground_m0.bootloader.file=circuitplayM0/bootloader-circuitplay_m0-v2.0.0-adafruit.5.bin
180+
adafruit_circuitplayground_m0.menu.usbstack.arduino=Arduino
181+
adafruit_circuitplayground_m0.menu.usbstack.tinyusb=TinyUSB
182+
adafruit_circuitplayground_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
170183

171184
# Adafruit Gemma M0 (SAMD21)
172185
# ------------------------------
@@ -197,6 +210,9 @@ adafruit_gemma_m0.build.vid=0x239A
197210
adafruit_gemma_m0.build.pid=0x801C
198211
adafruit_gemma_m0.bootloader.tool=openocd
199212
adafruit_gemma_m0.bootloader.file=gemmaM0/bootloader-gemma_m0-v2.0.0-adafruit.5.bin
213+
adafruit_gemma_m0.menu.usbstack.arduino=Arduino
214+
adafruit_gemma_m0.menu.usbstack.tinyusb=TinyUSB
215+
adafruit_gemma_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
200216

201217
# Adafruit Trinket M0 (SAMD21)
202218
# ------------------------------
@@ -227,6 +243,9 @@ adafruit_trinket_m0.build.vid=0x239A
227243
adafruit_trinket_m0.build.pid=0x801E
228244
adafruit_trinket_m0.bootloader.tool=openocd
229245
adafruit_trinket_m0.bootloader.file=trinketM0/bootloader-trinket_m0-v2.0.0-adafruit.5.bin
246+
adafruit_trinket_m0.menu.usbstack.arduino=Arduino
247+
adafruit_trinket_m0.menu.usbstack.tinyusb=TinyUSB
248+
adafruit_trinket_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
230249

231250
# Adafruit ItsyBitsy M0 (SAMD21)
232251
# ------------------------------
@@ -259,6 +278,9 @@ adafruit_itsybitsy_m0.build.vid=0x239A
259278
adafruit_itsybitsy_m0.build.pid=0x800F
260279
adafruit_itsybitsy_m0.bootloader.tool=openocd
261280
adafruit_itsybitsy_m0.bootloader.file=itsybitsyM0/bootloader-itsybitsy_m0-v2.0.0-adafruit.5.bin
281+
adafruit_itsybitsy_m0.menu.usbstack.arduino=Arduino
282+
adafruit_itsybitsy_m0.menu.usbstack.tinyusb=TinyUSB
283+
adafruit_itsybitsy_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
262284

263285
# Adafruit PIRkey (SAMD21)
264286
# ------------------------------
@@ -289,6 +311,9 @@ adafruit_pirkey.build.vid=0x239A
289311
adafruit_pirkey.build.pid=0x801E
290312
adafruit_pirkey.bootloader.tool=openocd
291313
adafruit_pirkey.bootloader.file=pirkey/bootloader-pirkey-v2.0.0-adafruit.5.bin
314+
adafruit_pirkey.menu.usbstack.arduino=Arduino
315+
adafruit_pirkey.menu.usbstack.tinyusb=TinyUSB
316+
adafruit_pirkey.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
292317

293318
# Adafruit Metro M4 (SAMD51)
294319
# ------------------------------
@@ -342,6 +367,9 @@ adafruit_metro_m4.menu.maxqspi.50=50 MHz (standard)
342367
adafruit_metro_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
343368
adafruit_metro_m4.menu.maxqspi.fcpu=CPU Speed / 2
344369
adafruit_metro_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
370+
adafruit_metro_m4.menu.usbstack.arduino=Arduino
371+
adafruit_metro_m4.menu.usbstack.tinyusb=TinyUSB
372+
adafruit_metro_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
345373

346374
# Adafruit Grand Central M4 (SAMD51)
347375
# ------------------------------
@@ -397,6 +425,9 @@ adafruit_grandcentral_m4.menu.maxqspi.50=50 MHz (standard)
397425
adafruit_grandcentral_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
398426
adafruit_grandcentral_m4.menu.maxqspi.fcpu=CPU Speed / 2
399427
adafruit_grandcentral_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
428+
adafruit_grandcentral_m4.menu.usbstack.arduino=Arduino
429+
adafruit_grandcentral_m4.menu.usbstack.tinyusb=TinyUSB
430+
adafruit_grandcentral_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
400431

401432
# Adafruit ItsyBitsy M4 (SAMD51)
402433
# ------------------------------
@@ -450,6 +481,9 @@ adafruit_itsybitsy_m4.menu.maxqspi.50=50 MHz (standard)
450481
adafruit_itsybitsy_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
451482
adafruit_itsybitsy_m4.menu.maxqspi.fcpu=CPU Speed / 2
452483
adafruit_itsybitsy_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
484+
adafruit_itsybitsy_m4.menu.usbstack.arduino=Arduino
485+
adafruit_itsybitsy_m4.menu.usbstack.tinyusb=TinyUSB
486+
adafruit_itsybitsy_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
453487

454488
# Adafruit Feather M4 Express (SAMD51)
455489
# ------------------------------
@@ -503,7 +537,9 @@ adafruit_feather_m4.menu.maxqspi.50=50 MHz (standard)
503537
adafruit_feather_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
504538
adafruit_feather_m4.menu.maxqspi.fcpu=CPU Speed / 2
505539
adafruit_feather_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
506-
540+
adafruit_feather_m4.menu.usbstack.arduino=Arduino
541+
adafruit_feather_m4.menu.usbstack.tinyusb=TinyUSB
542+
adafruit_feather_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
507543

508544
# Adafruit HalloWing M0 (SAMD21)
509545
# ------------------------------
@@ -536,6 +572,9 @@ adafruit_hallowing.build.vid=0x239A
536572
adafruit_hallowing.build.pid=0xDEAD
537573
adafruit_hallowing.bootloader.tool=openocd
538574
adafruit_hallowing.bootloader.file=hallowingM0/bootloader-hallowing_m0-v2.0.0-adafruit.0-21-g887cc30.bin
575+
adafruit_hallowing.menu.usbstack.arduino=Arduino
576+
adafruit_hallowing.menu.usbstack.tinyusb=TinyUSB
577+
adafruit_hallowing.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
539578

540579
# Adafruit Trellis M4 (SAMD51)
541580
# ------------------------------
@@ -591,6 +630,9 @@ adafruit_trellis_m4.menu.maxqspi.50=50 MHz (standard)
591630
adafruit_trellis_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
592631
adafruit_trellis_m4.menu.maxqspi.fcpu=CPU Speed / 2
593632
adafruit_trellis_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
633+
adafruit_trellis_m4.menu.usbstack.arduino=Arduino
634+
adafruit_trellis_m4.menu.usbstack.tinyusb=TinyUSB
635+
adafruit_trellis_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
594636

595637
# Adafruit Crickit M0 (SAMD21)
596638
# ------------------------------
@@ -623,6 +665,9 @@ adafruit_crickit_m0.build.vid=0x239A
623665
adafruit_crickit_m0.build.pid=0x802D
624666
adafruit_crickit_m0.bootloader.tool=openocd
625667
adafruit_crickit_m0.bootloader.file=crickit/samd21_sam_ba.bin
668+
adafruit_crickit_m0.menu.usbstack.arduino=Arduino
669+
adafruit_crickit_m0.menu.usbstack.tinyusb=TinyUSB
670+
adafruit_crickit_m0.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
626671

627672
# Adafruit PyPortal M4 (SAMD51)
628673
# ------------------------------
@@ -676,6 +721,9 @@ adafruit_pyportal_m4.menu.maxqspi.50=50 MHz (standard)
676721
adafruit_pyportal_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
677722
adafruit_pyportal_m4.menu.maxqspi.fcpu=CPU Speed / 2
678723
adafruit_pyportal_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
724+
adafruit_pyportal_m4.menu.usbstack.arduino=Arduino
725+
adafruit_pyportal_m4.menu.usbstack.tinyusb=TinyUSB
726+
adafruit_pyportal_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
679727

680728
# Adafruit pyBadge M4 (SAMD51)
681729
# ------------------------------
@@ -731,6 +779,10 @@ adafruit_pybadge_m4.menu.maxqspi.50=50 MHz (standard)
731779
adafruit_pybadge_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
732780
adafruit_pybadge_m4.menu.maxqspi.fcpu=CPU Speed / 2
733781
adafruit_pybadge_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
782+
adafruit_pybadge_m4.menu.usbstack.arduino=Arduino
783+
adafruit_pybadge_m4.menu.usbstack.tinyusb=TinyUSB
784+
adafruit_pybadge_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
785+
734786

735787
# Adafruit Metro M4 AirLift lite (SAMD51)
736788
# ------------------------------
@@ -784,6 +836,9 @@ adafruit_metro_m4_airliftlite.menu.maxqspi.50=50 MHz (standard)
784836
adafruit_metro_m4_airliftlite.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
785837
adafruit_metro_m4_airliftlite.menu.maxqspi.fcpu=CPU Speed / 2
786838
adafruit_metro_m4_airliftlite.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
839+
adafruit_metro_m4_airliftlite.menu.usbstack.arduino=Arduino
840+
adafruit_metro_m4_airliftlite.menu.usbstack.tinyusb=TinyUSB
841+
adafruit_metro_m4_airliftlite.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
787842

788843
# Adafruit pyGamer M4 Express (SAMD51)
789844
# ------------------------------
@@ -839,3 +894,6 @@ adafruit_pygamer_m4.menu.maxqspi.50=50 MHz (standard)
839894
adafruit_pygamer_m4.menu.maxqspi.50.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=50000000
840895
adafruit_pygamer_m4.menu.maxqspi.fcpu=CPU Speed / 2
841896
adafruit_pygamer_m4.menu.maxqspi.fcpu.build.flags.maxqspi=-DVARIANT_QSPI_BAUD_DEFAULT=({build.f_cpu})
897+
adafruit_pygamer_m4.menu.usbstack.arduino=Arduino
898+
adafruit_pygamer_m4.menu.usbstack.tinyusb=TinyUSB
899+
adafruit_pygamer_m4.menu.usbstack.tinyusb.build.flags.usbstack=-DUSE_TINYUSB
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
/*
2+
* The MIT License (MIT)
3+
*
4+
* Copyright (c) 2018, hathach for Adafruit
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in
14+
* all copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+
* THE SOFTWARE.
23+
*/
24+
25+
#ifdef USE_TINYUSB
26+
27+
#include "Arduino.h"
28+
#include "Adafruit_TinyUSB_Core.h"
29+
#include <Reset.h> // Needed for auto-reset with 1200bps port touch
30+
31+
//--------------------------------------------------------------------+
32+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
33+
//--------------------------------------------------------------------+
34+
35+
// Init usb hardware when starting up. Softdevice is not enabled yet
36+
static void usb_hardware_init(void)
37+
{
38+
#ifdef PIN_LED_TXL
39+
// txLEDPulse = 0;
40+
pinMode(PIN_LED_TXL, OUTPUT);
41+
digitalWrite(PIN_LED_TXL, HIGH);
42+
#endif
43+
44+
#ifdef PIN_LED_RXL
45+
// rxLEDPulse = 0;
46+
pinMode(PIN_LED_RXL, OUTPUT);
47+
digitalWrite(PIN_LED_RXL, HIGH);
48+
#endif
49+
50+
/* Enable USB clock */
51+
#if defined(__SAMD51__)
52+
MCLK->APBBMASK.reg |= MCLK_APBBMASK_USB;
53+
MCLK->AHBMASK.reg |= MCLK_AHBMASK_USB;
54+
55+
// Set up the USB DP/DN pins
56+
PORT->Group[0].PINCFG[PIN_PA24H_USB_DM].bit.PMUXEN = 1;
57+
PORT->Group[0].PMUX[PIN_PA24H_USB_DM/2].reg &= ~(0xF << (4 * (PIN_PA24H_USB_DM & 0x01u)));
58+
PORT->Group[0].PMUX[PIN_PA24H_USB_DM/2].reg |= MUX_PA24H_USB_DM << (4 * (PIN_PA24H_USB_DM & 0x01u));
59+
PORT->Group[0].PINCFG[PIN_PA25H_USB_DP].bit.PMUXEN = 1;
60+
PORT->Group[0].PMUX[PIN_PA25H_USB_DP/2].reg &= ~(0xF << (4 * (PIN_PA25H_USB_DP & 0x01u)));
61+
PORT->Group[0].PMUX[PIN_PA25H_USB_DP/2].reg |= MUX_PA25H_USB_DP << (4 * (PIN_PA25H_USB_DP & 0x01u));
62+
63+
64+
GCLK->PCHCTRL[USB_GCLK_ID].reg = GCLK_PCHCTRL_GEN_GCLK1_Val | (1 << GCLK_PCHCTRL_CHEN_Pos);
65+
#else
66+
PM->APBBMASK.reg |= PM_APBBMASK_USB;
67+
68+
// Set up the USB DP/DN pins
69+
PORT->Group[0].PINCFG[PIN_PA24G_USB_DM].bit.PMUXEN = 1;
70+
PORT->Group[0].PMUX[PIN_PA24G_USB_DM/2].reg &= ~(0xF << (4 * (PIN_PA24G_USB_DM & 0x01u)));
71+
PORT->Group[0].PMUX[PIN_PA24G_USB_DM/2].reg |= MUX_PA24G_USB_DM << (4 * (PIN_PA24G_USB_DM & 0x01u));
72+
PORT->Group[0].PINCFG[PIN_PA25G_USB_DP].bit.PMUXEN = 1;
73+
PORT->Group[0].PMUX[PIN_PA25G_USB_DP/2].reg &= ~(0xF << (4 * (PIN_PA25G_USB_DP & 0x01u)));
74+
PORT->Group[0].PMUX[PIN_PA25G_USB_DP/2].reg |= MUX_PA25G_USB_DP << (4 * (PIN_PA25G_USB_DP & 0x01u));
75+
76+
// Put Generic Clock Generator 0 as source for Generic Clock Multiplexer 6 (USB reference)
77+
GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID(6) | // Generic Clock Multiplexer 6
78+
GCLK_CLKCTRL_GEN_GCLK0 | // Generic Clock Generator 0 is source
79+
GCLK_CLKCTRL_CLKEN;
80+
while (GCLK->STATUS.bit.SYNCBUSY)
81+
;
82+
#endif
83+
}
84+
85+
uint8_t load_serial_number(uint16_t* serial_str)
86+
{
87+
#ifdef __SAMD51__
88+
uint32_t* id_addresses[4] = {(uint32_t *) 0x008061FC, (uint32_t *) 0x00806010,
89+
(uint32_t *) 0x00806014, (uint32_t *) 0x00806018};
90+
#else // samd21
91+
uint32_t* id_addresses[4] = {(uint32_t *) 0x0080A00C, (uint32_t *) 0x0080A040,
92+
(uint32_t *) 0x0080A044, (uint32_t *) 0x0080A048};
93+
94+
#endif
95+
96+
uint8_t raw_id[8];
97+
for (int i=0; i<4; i++) {
98+
for (int k=0; k<4; k++) {
99+
raw_id[4 * i + k] = (*(id_addresses[i]) >> k * 8) & 0xff;
100+
}
101+
}
102+
103+
static const char nibble_to_hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
104+
105+
for (int i = 0; i < sizeof(raw_id); i++) {
106+
for (int j = 0; j < 2; j++) {
107+
uint8_t nibble = (raw_id[i] >> (j * 4)) & 0xf;
108+
// Strings are UTF-16-LE encoded.
109+
serial_str[i * 2 + j] = nibble_to_hex[nibble];
110+
}
111+
}
112+
113+
return 16;
114+
}
115+
116+
void Adafruit_TinyUSB_Core_init(void)
117+
{
118+
USBDevice.addInterface( (Adafruit_USBD_Interface&) Serial);
119+
USBDevice.setID(USB_VID, USB_PID);
120+
USBDevice.begin();
121+
122+
usb_hardware_init();
123+
124+
// Init tinyusb stack
125+
tusb_init();
126+
}
127+
128+
void Adafruit_TinyUSB_Core_touch1200(void)
129+
{
130+
initiateReset(250);
131+
}
132+
133+
134+
extern "C"
135+
{
136+
137+
void yield(void)
138+
139+
{
140+
tud_task();
141+
tud_cdc_write_flush();
142+
}
143+
144+
}
145+
146+
#endif // USE_TINYUSB
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* The MIT License (MIT)
3+
*
4+
* Copyright (c) 2019 Ha Thach for Adafruit Industries
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in
14+
* all copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+
* THE SOFTWARE.
23+
*/
24+
25+
#ifndef ADAFRUIT_TINYUSB_CORE_H_
26+
#define ADAFRUIT_TINYUSB_CORE_H_
27+
28+
#ifndef USE_TINYUSB
29+
#error TinyUSB is not selected, please select it in Tools->Menu->USB Stack
30+
#endif
31+
32+
#include "tusb.h"
33+
34+
#ifdef __cplusplus
35+
#include "Adafruit_USBD_Device.h"
36+
#include "Adafruit_USBD_CDC.h"
37+
#endif
38+
39+
// Called by main.cpp to initialize usb device typically with CDC device for Serial
40+
void Adafruit_TinyUSB_Core_init(void);
41+
42+
// Invoked when host disconnects cdc at baud 1200, usually touch feature to go into DFU mode
43+
void Adafruit_TinyUSB_Core_touch1200(void);
44+
45+
#endif /* ADAFRUIT_TINYUSB_CORE_H_ */

0 commit comments

Comments
 (0)