From 7f7ac74899fdbede1d3913a566f1a427f6ab99cf Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 7 Mar 2025 12:20:53 +0700 Subject: [PATCH 1/3] support esp32p4 --- .github/workflows/githubci.yml | 2 ++ README.md | 2 +- examples/MIDI/midi_test/midi_test.ino | 2 -- src/arduino/Adafruit_USBD_CDC.cpp | 8 ++++---- src/arduino/Adafruit_USBD_Device.cpp | 16 +++------------- src/arduino/Adafruit_USBD_Device.h | 13 +++++++------ src/arduino/msc/Adafruit_USBD_MSC.cpp | 6 +++--- src/arduino/ports/esp32/tusb_config_esp32.h | 3 +-- 8 files changed, 21 insertions(+), 31 deletions(-) diff --git a/.github/workflows/githubci.yml b/.github/workflows/githubci.yml index 019f5652..53391d20 100644 --- a/.github/workflows/githubci.yml +++ b/.github/workflows/githubci.yml @@ -50,6 +50,7 @@ jobs: # ESP32 ci use dev json - 'feather_esp32s2' - 'feather_esp32s3' + - 'esp32p4' # nRF52 - 'cpb' - 'nrf52840' @@ -69,6 +70,7 @@ jobs: uses: actions/checkout@v4 with: repository: adafruit/ci-arduino + ref: add-esp32p4 path: ci - name: pre-install diff --git a/README.md b/README.md index 83d24d91..5b346b2a 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Following core has TinyUSB as either the primary usb stack or selectable via men - [adafruit/Adafruit_nRF52_Arduino](https://github.com/adafruit/Adafruit_nRF52_Arduino) - [adafruit/ArduinoCore-samd](https://github.com/adafruit/ArduinoCore-samd) - [earlephilhower/arduino-pico](https://github.com/earlephilhower/arduino-pico) -- [espressif/arduino-esp32](https://github.com/espressif/arduino-esp32) additional Tools menu is needed +- [espressif/arduino-esp32](https://github.com/espressif/arduino-esp32) Host mode using MAX3421E controller should work with all chips. Device mode only support S2/S3/P4 and additional Tools menu are needed - `USB Mode=USB-OTG (TinyUSB)` for S3 and P4 - `USB CDC On Boot=Enabled`, `USB Firmware MSC On Boot=Disabled`, `USB DFU On Boot=Disabled` - [openwch/arduino_core_ch32](https://github.com/openwch/arduino_core_ch32) diff --git a/examples/MIDI/midi_test/midi_test.ino b/examples/MIDI/midi_test/midi_test.ino index d2f790a4..6e8f8a41 100644 --- a/examples/MIDI/midi_test/midi_test.ino +++ b/examples/MIDI/midi_test/midi_test.ino @@ -44,8 +44,6 @@ void setup() { Serial.begin(115200); - pinMode(LED_BUILTIN, OUTPUT); - usb_midi.setStringDescriptor("TinyUSB MIDI"); // Initialize MIDI, and listen to all MIDI channels diff --git a/src/arduino/Adafruit_USBD_CDC.cpp b/src/arduino/Adafruit_USBD_CDC.cpp index 893db83e..11c5673e 100644 --- a/src/arduino/Adafruit_USBD_CDC.cpp +++ b/src/arduino/Adafruit_USBD_CDC.cpp @@ -38,8 +38,6 @@ #define TINYUSB_API_VERSION 0 #endif -#define BULK_PACKET_SIZE (TUD_OPT_HIGH_SPEED ? 512 : 64) - // SerialTinyUSB can be macro expanding to "Serial" on supported cores Adafruit_USBD_CDC SerialTinyUSB; @@ -71,8 +69,10 @@ uint16_t Adafruit_USBD_CDC::getInterfaceDescriptor(uint8_t itfnum_deprecated, uint8_t _strid = 0; #endif - uint8_t const desc[] = {TUD_CDC_DESCRIPTOR(itfnum, _strid, ep_notif, 8, - ep_out, ep_in, BULK_PACKET_SIZE)}; + uint16_t const mps = + (TUD_OPT_HIGH_SPEED ? 512 : 64); // TODO actual link speed + uint8_t const desc[] = { + TUD_CDC_DESCRIPTOR(itfnum, _strid, ep_notif, 8, ep_out, ep_in, mps)}; uint16_t const len = sizeof(desc); diff --git a/src/arduino/Adafruit_USBD_Device.cpp b/src/arduino/Adafruit_USBD_Device.cpp index 068a9890..b6d10687 100644 --- a/src/arduino/Adafruit_USBD_Device.cpp +++ b/src/arduino/Adafruit_USBD_Device.cpp @@ -161,18 +161,6 @@ void Adafruit_USBD_Device::task(void) { #endif } -bool Adafruit_USBD_Device::mounted(void) { return tud_mounted(); } - -bool Adafruit_USBD_Device::suspended(void) { return tud_suspended(); } - -bool Adafruit_USBD_Device::ready(void) { return tud_ready(); } - -bool Adafruit_USBD_Device::remoteWakeup(void) { return tud_remote_wakeup(); } - -bool Adafruit_USBD_Device::detach(void) { return tud_disconnect(); } - -bool Adafruit_USBD_Device::attach(void) { return tud_connect(); } - void Adafruit_USBD_Device::clearConfiguration(void) { tusb_desc_device_t const desc_dev = {.bLength = sizeof(tusb_desc_device_t), .bDescriptorType = TUSB_DESC_DEVICE, @@ -257,8 +245,10 @@ bool Adafruit_USBD_Device::begin(uint8_t rhport) { // follow USBCDC cdc descriptor uint8_t itfnum = allocInterface(2); uint8_t strid = addStringDescriptor("TinyUSB Serial"); + uint16_t const mps = + (TUD_OPT_HIGH_SPEED ? 512 : 64); // TODO actual link speed uint8_t const desc_cdc[TUD_CDC_DESC_LEN] = { - TUD_CDC_DESCRIPTOR(itfnum, strid, 0x85, 64, 0x03, 0x84, 64)}; + TUD_CDC_DESCRIPTOR(itfnum, strid, 0x85, 64, 0x03, 0x84, mps)}; memcpy(_desc_cfg + _desc_cfg_len, desc_cdc, sizeof(desc_cdc)); _desc_cfg_len += sizeof(desc_cdc); diff --git a/src/arduino/Adafruit_USBD_Device.h b/src/arduino/Adafruit_USBD_Device.h index 7bbc25dc..42f73516 100644 --- a/src/arduino/Adafruit_USBD_Device.h +++ b/src/arduino/Adafruit_USBD_Device.h @@ -119,14 +119,15 @@ class Adafruit_USBD_Device { void task(void); // physical disable/enable pull-up - bool detach(void); - bool attach(void); + bool detach(void) { return tud_disconnect(); } + bool attach(void) { return tud_connect(); } //------------- status -------------// - bool mounted(void); - bool suspended(void); - bool ready(void); - bool remoteWakeup(void); + bool mounted(void) { return tud_mounted(); } + bool suspended(void) { return tud_suspended(); } + bool ready(void) { return tud_ready(); } + bool remoteWakeup(void) { return tud_remote_wakeup(); } + tusb_speed_t getSpeed(void) { return tud_speed_get(); } private: uint16_t const *descriptor_string_cb(uint8_t index, uint16_t langid); diff --git a/src/arduino/msc/Adafruit_USBD_MSC.cpp b/src/arduino/msc/Adafruit_USBD_MSC.cpp index a580d6ff..c23c7990 100644 --- a/src/arduino/msc/Adafruit_USBD_MSC.cpp +++ b/src/arduino/msc/Adafruit_USBD_MSC.cpp @@ -28,8 +28,6 @@ #include "Adafruit_USBD_MSC.h" -#define BULK_PACKET_SIZE (TUD_OPT_HIGH_SPEED ? 512 : 64) - static Adafruit_USBD_MSC *_msc_dev = NULL; Adafruit_USBD_MSC::Adafruit_USBD_MSC(void) { @@ -51,8 +49,10 @@ uint16_t Adafruit_USBD_MSC::getInterfaceDescriptor(uint8_t itfnum_deprecated, uint8_t const ep_in = TinyUSBDevice.allocEndpoint(TUSB_DIR_IN); uint8_t const ep_out = TinyUSBDevice.allocEndpoint(TUSB_DIR_OUT); + uint16_t const mps = + (TUD_OPT_HIGH_SPEED ? 512 : 64); // TODO actual link speed uint8_t const desc[] = { - TUD_MSC_DESCRIPTOR(itfnum, _strid, ep_out, ep_in, BULK_PACKET_SIZE)}; + TUD_MSC_DESCRIPTOR(itfnum, _strid, ep_out, ep_in, mps)}; uint16_t const len = sizeof(desc); if (bufsize < len) { diff --git a/src/arduino/ports/esp32/tusb_config_esp32.h b/src/arduino/ports/esp32/tusb_config_esp32.h index 4f0b4cd2..98cc0e4a 100644 --- a/src/arduino/ports/esp32/tusb_config_esp32.h +++ b/src/arduino/ports/esp32/tusb_config_esp32.h @@ -68,10 +68,8 @@ extern "C" { #if CONFIG_IDF_TARGET_ESP32P4 #define CFG_TUD_MAX_SPEED OPT_MODE_HIGH_SPEED -#define CFG_TUH_MAX_SPEED OPT_MODE_HIGH_SPEED #else #define CFG_TUD_MAX_SPEED OPT_MODE_FULL_SPEED -#define CFG_TUH_MAX_SPEED OPT_MODE_FULL_SPEED #endif #ifndef CFG_TUSB_OS @@ -141,6 +139,7 @@ extern "C" { // Enable host stack with MAX3421E (host shield) #define CFG_TUH_ENABLED 1 #define CFG_TUH_MAX3421 1 +#define CFG_TUH_MAX_SPEED OPT_MODE_FULL_SPEED #ifndef CFG_TUH_MAX3421_ENDPOINT_TOTAL #define CFG_TUH_MAX3421_ENDPOINT_TOTAL (8 + 4 * (CFG_TUH_DEVICE_MAX - 1)) From cfe6da84d19da79ad600ad5d6a8379de529e8767 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 7 Mar 2025 12:48:59 +0700 Subject: [PATCH 2/3] fix build with host native --- src/arduino/Adafruit_USBD_Device.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/arduino/Adafruit_USBD_Device.h b/src/arduino/Adafruit_USBD_Device.h index 42f73516..0033ca96 100644 --- a/src/arduino/Adafruit_USBD_Device.h +++ b/src/arduino/Adafruit_USBD_Device.h @@ -33,6 +33,8 @@ #include "esp32-hal-tinyusb.h" #endif +#if CFG_TUD_ENABLED + class Adafruit_USBD_Device { private: enum { STRING_DESCRIPTOR_MAX = 12 }; @@ -146,4 +148,5 @@ extern Adafruit_USBD_Device TinyUSBDevice; #define USBDevice TinyUSBDevice #endif -#endif /* ADAFRUIT_USBD_DEVICE_H_ */ +#endif /* CFG_TUD_ENABLED */ +#endif /* ADAFRUIT_USBD_DEVICE_H_ */ \ No newline at end of file From 36396f4f9e7d86dcb751532e929d0cea446efc89 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 7 Mar 2025 16:24:17 +0700 Subject: [PATCH 3/3] fix esp32p4 build due to lack of LED_BUILTIN --- .github/workflows/githubci.yml | 1 - examples/CDC/cdc_multi/.skip.txt | 1 + examples/CDC/cdc_multi/cdc_multi.ino | 16 +++++++++----- examples/CDC/no_serial/no_serial.ino | 15 ++++++------- .../msc_data_logger/msc_data_logger.ino | 6 +++++ .../hid_boot_keyboard/hid_boot_keyboard.ino | 4 ++++ .../midi_multi_ports/midi_multi_ports.ino | 4 ++++ .../msc_external_flash/msc_external_flash.ino | 9 ++++++-- .../msc_external_flash_sdcard.ino | 22 ++++++++++++------- examples/MassStorage/msc_sd/.skip.txt | 1 + examples/MassStorage/msc_sdfat/msc_sdfat.ino | 9 ++++++-- .../WebUSB/webusb_serial/webusb_serial.ino | 12 +++++----- 12 files changed, 68 insertions(+), 32 deletions(-) diff --git a/.github/workflows/githubci.yml b/.github/workflows/githubci.yml index 53391d20..09d32de7 100644 --- a/.github/workflows/githubci.yml +++ b/.github/workflows/githubci.yml @@ -70,7 +70,6 @@ jobs: uses: actions/checkout@v4 with: repository: adafruit/ci-arduino - ref: add-esp32p4 path: ci - name: pre-install diff --git a/examples/CDC/cdc_multi/.skip.txt b/examples/CDC/cdc_multi/.skip.txt index 1618b4ed..21ef78ca 100644 --- a/examples/CDC/cdc_multi/.skip.txt +++ b/examples/CDC/cdc_multi/.skip.txt @@ -3,4 +3,5 @@ feather_esp32s3 funhouse magtag metroesp32s2 +esp32p4 pico_rp2040_tinyusb_host diff --git a/examples/CDC/cdc_multi/cdc_multi.ino b/examples/CDC/cdc_multi/cdc_multi.ino index c6bf3f43..6e2cd2ea 100644 --- a/examples/CDC/cdc_multi/cdc_multi.ino +++ b/examples/CDC/cdc_multi/cdc_multi.ino @@ -25,11 +25,9 @@ #include -#define LED LED_BUILTIN - // Create 2nd instance of CDC Ports. #ifdef ARDUINO_ARCH_ESP32 - #error "Currently multiple CDCs on ESP32-Sx is not yet supported. An PR to update core/esp32/USBCDC and/or pre-built libusb are needed." + #error "Currently multiple CDCs on ESP32 is not yet supported" // for ESP32, we need to specify instance number when declaring object Adafruit_USBD_CDC USBSer1(1); #else @@ -37,13 +35,17 @@ #endif void setup() { - pinMode(LED, OUTPUT); +#ifdef LED_BUILTIN + pinMode(LED_BUILTIN, OUTPUT); +#endif Serial.begin(115200); // check to see if multiple CDCs are enabled if ( CFG_TUD_CDC < 2 ) { - digitalWrite(LED, HIGH); // LED on for error indicator + #ifdef LED_BUILTIN + digitalWrite(LED_BUILTIN, HIGH); // LED on for error indicator + #endif while(1) { Serial.printf("CFG_TUD_CDC must be at least 2, current value is %u\n", CFG_TUD_CDC); @@ -96,7 +98,9 @@ void loop() { if (delay_without_delaying(500)) { LEDstate = !LEDstate; - digitalWrite(LED, LEDstate); + #ifdef LED_BUILTIN + digitalWrite(LED_BUILTIN, LEDstate); + #endif } } diff --git a/examples/CDC/no_serial/no_serial.ino b/examples/CDC/no_serial/no_serial.ino index b189126f..e87020d3 100644 --- a/examples/CDC/no_serial/no_serial.ino +++ b/examples/CDC/no_serial/no_serial.ino @@ -18,11 +18,7 @@ * Note: this will cause device to loose the touch1200 and require * user manual interaction to put device into bootloader/DFU mode. */ - -int led = LED_BUILTIN; - -void setup() -{ +void setup() { // Manual begin() is required on core without built-in support e.g. mbed rp2040 if (!TinyUSBDevice.isInitialized()) { TinyUSBDevice.begin(0); @@ -38,11 +34,12 @@ void setup() TinyUSBDevice.attach(); } - pinMode(led, OUTPUT); + #ifdef LED_BUILTIN + pinMode(LED_BUILTIN, OUTPUT); + #endif } -void loop() -{ +void loop() { #ifdef TINYUSB_NEED_POLLING_TASK // Manual call tud_task since it isn't called by Core's background TinyUSBDevice.task(); @@ -53,6 +50,8 @@ void loop() static uint8_t led_state = 0; if (millis() - ms > 1000) { ms = millis(); + #ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, 1-led_state); + #endif } } diff --git a/examples/DualRole/MassStorage/msc_data_logger/msc_data_logger.ino b/examples/DualRole/MassStorage/msc_data_logger/msc_data_logger.ino index d386ee0a..98691862 100644 --- a/examples/DualRole/MassStorage/msc_data_logger/msc_data_logger.ino +++ b/examples/DualRole/MassStorage/msc_data_logger/msc_data_logger.ino @@ -73,7 +73,9 @@ void data_log(void) { } // Turn on LED when start writing + #ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); + #endif f_log = fatfs.open(LOG_FILE, O_WRITE | O_APPEND | O_CREAT); @@ -112,7 +114,9 @@ void usbhost_rtos_task(void *param) { void setup() { Serial.begin(115200); + #ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); + #endif #if defined(CFG_TUH_MAX3421) && CFG_TUH_MAX3421 // init host stack on controller (rhport) 1 @@ -172,10 +176,12 @@ bool write_complete_callback(uint8_t dev_addr, tuh_msc_complete_data_t const *cb (void) dev_addr; (void) cb_data; + #ifdef LED_BUILTIN // turn off LED after write is complete // Note this only marks the usb transfer is complete, device can take longer to actual // write data to physical flash digitalWrite(LED_BUILTIN, LOW); + #endif return true; } diff --git a/examples/HID/hid_boot_keyboard/hid_boot_keyboard.ino b/examples/HID/hid_boot_keyboard/hid_boot_keyboard.ino index 0951c44c..e666e220 100644 --- a/examples/HID/hid_boot_keyboard/hid_boot_keyboard.ino +++ b/examples/HID/hid_boot_keyboard/hid_boot_keyboard.ino @@ -74,8 +74,10 @@ void setup() { } // led pin +#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); +#endif // overwrite input pin with PIN_BUTTONx #ifdef PIN_BUTTON1 @@ -176,6 +178,8 @@ void hid_report_callback(uint8_t report_id, hid_report_type_t report_type, uint8 // Kana (4) | Compose (3) | ScrollLock (2) | CapsLock (1) | Numlock (0) uint8_t ledIndicator = buffer[0]; +#ifdef LED_BUILTIN // turn on LED if capslock is set digitalWrite(LED_BUILTIN, ledIndicator & KEYBOARD_LED_CAPSLOCK); +#endif } diff --git a/examples/MIDI/midi_multi_ports/midi_multi_ports.ino b/examples/MIDI/midi_multi_ports/midi_multi_ports.ino index d4a6acd4..6271ae9e 100644 --- a/examples/MIDI/midi_multi_ports/midi_multi_ports.ino +++ b/examples/MIDI/midi_multi_ports/midi_multi_ports.ino @@ -20,7 +20,9 @@ Adafruit_USBD_MIDI usb_midi(3); void setup() { +#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); +#endif // Manual begin() is required on core without built-in support e.g. mbed rp2040 if (!TinyUSBDevice.isInitialized()) { @@ -52,6 +54,8 @@ void loop() { static uint8_t led_state = 0; if (millis() - ms > 1000) { ms = millis(); +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, 1-led_state); +#endif } } diff --git a/examples/MassStorage/msc_external_flash/msc_external_flash.ino b/examples/MassStorage/msc_external_flash/msc_external_flash.ino index 0a933fd5..06dba7fd 100644 --- a/examples/MassStorage/msc_external_flash/msc_external_flash.ino +++ b/examples/MassStorage/msc_external_flash/msc_external_flash.ino @@ -48,9 +48,10 @@ bool fs_formatted = false; bool fs_changed = true;; // the setup function runs once when you press reset or power the board -void setup() -{ +void setup() { +#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); +#endif Serial.begin(115200); @@ -150,7 +151,9 @@ int32_t msc_read_cb (uint32_t lba, void* buffer, uint32_t bufsize) { // Process data in buffer to disk's storage and // return number of written bytes (must be multiple of block size) int32_t msc_write_cb (uint32_t lba, uint8_t* buffer, uint32_t bufsize) { +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); +#endif // Note: SPIFLash Block API: readBlocks/writeBlocks/syncBlocks // already include 4K sector caching internally. We don't need to cache it, yahhhh!! @@ -168,5 +171,7 @@ void msc_flush_cb (void) { fs_changed = true; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); +#endif } diff --git a/examples/MassStorage/msc_external_flash_sdcard/msc_external_flash_sdcard.ino b/examples/MassStorage/msc_external_flash_sdcard/msc_external_flash_sdcard.ino index 3c212f02..3d9fc413 100644 --- a/examples/MassStorage/msc_external_flash_sdcard/msc_external_flash_sdcard.ino +++ b/examples/MassStorage/msc_external_flash_sdcard/msc_external_flash_sdcard.ino @@ -67,7 +67,9 @@ bool flash_changed = false; // the setup function runs once when you press reset or power the board void setup() { +#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); +#endif Serial.begin(115200); // MSC with 2 Logical Units: LUN0: External Flash, LUN1: SDCard @@ -234,11 +236,12 @@ int32_t sdcard_read_cb (uint32_t lba, void* buffer, uint32_t bufsize) // Callback invoked when received WRITE10 command. // Process data in buffer to disk's storage and // return number of written bytes (must be multiple of block size) -int32_t sdcard_write_cb (uint32_t lba, uint8_t* buffer, uint32_t bufsize) -{ +int32_t sdcard_write_cb (uint32_t lba, uint8_t* buffer, uint32_t bufsize) { bool rc; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); +#endif #if SD_FAT_VERSION >= 20000 rc = sd.card()->writeSectors(lba, buffer, bufsize/512); @@ -264,7 +267,9 @@ void sdcard_flush_cb (void) sd_changed = true; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); +#endif } #ifdef SDCARD_DETECT @@ -299,8 +304,7 @@ bool sdcard_ready_callback(void) // Callback invoked when received READ10 command. // Copy disk's data to buffer (up to bufsize) and // return number of copied bytes (must be multiple of block size) -int32_t external_flash_read_cb (uint32_t lba, void* buffer, uint32_t bufsize) -{ +int32_t external_flash_read_cb (uint32_t lba, void* buffer, uint32_t bufsize) { // Note: SPIFLash Bock API: readBlocks/writeBlocks/syncBlocks // already include 4K sector caching internally. We don't need to cache it, yahhhh!! return flash.readBlocks(lba, (uint8_t*) buffer, bufsize/512) ? bufsize : -1; @@ -309,9 +313,10 @@ int32_t external_flash_read_cb (uint32_t lba, void* buffer, uint32_t bufsize) // Callback invoked when received WRITE10 command. // Process data in buffer to disk's storage and // return number of written bytes (must be multiple of block size) -int32_t external_flash_write_cb (uint32_t lba, uint8_t* buffer, uint32_t bufsize) -{ +int32_t external_flash_write_cb (uint32_t lba, uint8_t* buffer, uint32_t bufsize) { +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); +#endif // Note: SPIFLash Bock API: readBlocks/writeBlocks/syncBlocks // already include 4K sector caching internally. We don't need to cache it, yahhhh!! @@ -320,8 +325,7 @@ int32_t external_flash_write_cb (uint32_t lba, uint8_t* buffer, uint32_t bufsize // Callback invoked when WRITE10 command is completed (status received and accepted by host). // used to flush any pending cache. -void external_flash_flush_cb (void) -{ +void external_flash_flush_cb (void) { flash.syncBlocks(); // clear file system's cache to force refresh @@ -329,5 +333,7 @@ void external_flash_flush_cb (void) flash_changed = true; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); +#endif } diff --git a/examples/MassStorage/msc_sd/.skip.txt b/examples/MassStorage/msc_sd/.skip.txt index b5c66f7f..1b92dd1f 100644 --- a/examples/MassStorage/msc_sd/.skip.txt +++ b/examples/MassStorage/msc_sd/.skip.txt @@ -3,6 +3,7 @@ feather_esp32s3 funhouse magtag metroesp32s2 +esp32p4 feather_rp2040_tinyusb pico_rp2040_tinyusb_host CH32V20x_EVT diff --git a/examples/MassStorage/msc_sdfat/msc_sdfat.ino b/examples/MassStorage/msc_sdfat/msc_sdfat.ino index 28397c4f..014dac20 100644 --- a/examples/MassStorage/msc_sdfat/msc_sdfat.ino +++ b/examples/MassStorage/msc_sdfat/msc_sdfat.ino @@ -32,11 +32,12 @@ Adafruit_USBD_MSC usb_msc; bool fs_changed; // the setup function runs once when you press reset or power the board -void setup() -{ +void setup() { Serial.begin(115200); +#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); +#endif // Set disk vendor id, product id and revision with string up to 8, 16, 4 characters respectively usb_msc.setID("Adafruit", "SD Card", "1.0"); @@ -138,7 +139,9 @@ int32_t msc_read_cb (uint32_t lba, void* buffer, uint32_t bufsize) { int32_t msc_write_cb (uint32_t lba, uint8_t* buffer, uint32_t bufsize) { bool rc; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); +#endif #if SD_FAT_VERSION >= 20000 rc = sd.card()->writeSectors(lba, buffer, bufsize/512); @@ -163,5 +166,7 @@ void msc_flush_cb (void) { fs_changed = true; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); +#endif } diff --git a/examples/WebUSB/webusb_serial/webusb_serial.ino b/examples/WebUSB/webusb_serial/webusb_serial.ino index 2b1b92e2..f9ca6030 100644 --- a/examples/WebUSB/webusb_serial/webusb_serial.ino +++ b/examples/WebUSB/webusb_serial/webusb_serial.ino @@ -34,8 +34,6 @@ Adafruit_USBD_WebUSB usb_web; // Page source can be found at https://github.com/hathach/tinyusb-webusb-page/tree/main/webusb-serial WEBUSB_URL_DEF(landingPage, 1 /*https*/, "example.tinyusb.org/webusb-serial/index.html"); -int led_pin = LED_BUILTIN; - // the setup function runs once when you press reset or power the board void setup() { // Manual begin() is required on core without built-in support e.g. mbed rp2040 @@ -44,8 +42,10 @@ void setup() { } Serial.begin(115200); - pinMode(led_pin, OUTPUT); - digitalWrite(led_pin, LOW); +#ifdef LED_BUILTIN + pinMode(LED_BUILTIN, OUTPUT); + digitalWrite(LED_BUILTIN, LOW); +#endif usb_web.setLandingPage(&landingPage); usb_web.setLineStateCallback(line_state_callback); @@ -104,7 +104,9 @@ void loop() { } void line_state_callback(bool connected) { - digitalWrite(led_pin, connected); +#ifdef LED_BUILTIN + digitalWrite(LED_BUILTIN, connected); +#endif if (connected) { usb_web.println("WebUSB interface connected !!");