Commit Graph

1974 Commits

Author SHA1 Message Date
5145b67f79 Merge remote-tracking branch 'origin/master' into stm32c5
# Conflicts:
#	README.rst
2026-06-11 17:20:15 +07:00
6f35e76667 HIL: replace build.flags_on with named build variants (#3687)
* test/hil: replace build.flags_on with named variant schema

Boards declare build variants as `variant: [{name, flags}]` instead of
`build.flags_on`. The variant `name` is the build dir (cmake-build-<name>) and
the HIL report row; `flags` is the raw CFLAGS string (-D...=1) injected via
CFLAGS_CLI. No `variant` => a single build named after the board.

- build.py: --build-name <name> (dir) + --cflag=<token> (raw CFLAGS, repeatable,
  =form survives the matrix's shell word-splitting); drop -f1/CFLAGS wrapping.
- hil_ci_set_matrix.py: emit one build arg per variant.
- hil_test.py: iterate variants; report row + build dir = variant name.
- hil_ci.sh: copy all cmake-build-<board>* dirs for -b runs.
- get_deps.py: accept (ignore) --build-name/--cflag from matrix args.
- tinyusb.json: migrate all 6 flags_on boards to variant.

* board_test: park CI build with busy spin instead of wfe
2026-06-11 08:16:43 +07:00
575a8fbcd0 Merge pull request #3690 from hathach/claude/board-test-idle-park
hil: park boards with idle board_test instead of erasing flash
2026-06-10 18:04:54 +07:00
bbdb41995d Merge pull request #3657 from hathach/usbh-add-control-queue
Add control transfer fifo for host stack
2026-06-01 12:42:03 +07:00
7e0fcaa41e ultrareview nits: keep xfer_result table in sync, hoist blinky loop
- src/tusb.c: extend tu_str_xfer_result[] with "ABORTED" and "INVALID"
  to match the new enum size. Not reachable today (no HCD posts those
  values through hcd_event_xfer_complete), but keeps the enum/table
  invariant intact so future HCDs that surface ABORTED don't index OOB.

- examples/dual/dynamic_switch/src/main.c: apply the same while(1)
  hoist already done for cdc_task / print_devinfo_task to
  led_blinking_task. On OS_NONE the loop returned mid-iteration, which
  on first call could fire multiple back-to-back toggles while
  start_ms (initially 0) caught up to uptime.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-01 10:05:17 +07:00
08381d4421 esp32 build fixes
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-30 11:46:18 +02:00
a64eb336c4 dynamic_switch: hoist while(1) out for OS_NONE
Sonar flagged the loop body as executing only once on OS_NONE because
the OS_NONE branch returns inside the first iteration (main() drives
the task again). Make the while(1) conditional on RTOS so the OS_NONE
build is a straight-line function with no misleading loop.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 00:52:22 +07:00
fc933e341d midi2_host: silence IAR Pe550 for midi2_idx
The variable is set in mount/umount callbacks but not read elsewhere
in the example (rx_cb already receives idx as a parameter). IAR
treats Pe550 as an error under --warnings_are_errors. Tag it
TU_ATTR_UNUSED so the example still shows the pattern of tracking
the device index without erroring on unused-set.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 00:46:16 +07:00
0761df7420 midi2_host: drop unreachable return 0 for IAR Pe111
Same fix as midi2_device — IAR rejects the unreachable statement
after the while(1) superloop. Let int main fall off the end.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 00:42:14 +07:00
28beb0fe4d ci: fix IAR Pe111 and stm32h7s3 flash overflow
- examples/device/midi2_device/src/main.c: drop the unreachable
  `return 0;` after the `while(1)` superloop. IAR with
  --warnings_are_errors rejects Pe111 (statement is unreachable);
  C99 lets `int main` fall off the end, matching midi_test.

- examples/host/msc_file_explorer_freertos/skip.txt: skip
  stm32h7s3nucleo. The board has only 64 KB on-chip FLASH and the
  FreeRTOS + FatFS host MSC explorer now overflows by ~248 bytes
  after the async control queue refactor.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 00:11:19 +07:00
24700ea8ef midi2_device: gate -Wno-type-limits to GCC/Clang for IAR build
iccarm rejects -Wno-type-limits, breaking the hil-hfp-iar CI matrix
(stm32l412nucleo, stm32f746disco, lpcxpresso43s67). Apply the same
CMAKE_C_COMPILER_ID guard used in hw/bsp/family_support.cmake so IAR
builds skip the flag without losing the GCC warning suppression.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:59:15 +07:00
3be8226b18 Merge branch 'master' into usbh-add-control-queue 2026-05-29 23:55:25 +07:00
c5676382c7 abstract OS logic with CFG_TUSB_OS_HAS_SCHEDULER to simplify conditional checks 2026-05-28 18:23:46 +07:00
c954c8c4c7 remove sync() in tinyusb callback since it cause issue with RTOS when usbh task is blocking 2026-05-28 18:20:22 +07:00
44a897bff0 Fix typo in CDC stack size constant here too 2026-05-26 17:25:10 +02:00
4ba1c39a22 Fix typo in CDC stack size constant 2026-05-26 16:47:12 +02:00
d4aa0dd653 Merge remote-tracking branch 'tinyusb/master' into stm32c5
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-24 18:46:26 +02:00
1fc308fb87 tweak examples
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-23 19:37:47 +02:00
b3141bb259 set ch32v20x EP on supported audio examples
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-23 13:00:41 +02:00
4c87db341e Merge pull request #3571 from sauloverissimo/feat/midi2-device-host-driver
feat: Add USB-MIDI 2.0 Device and Host class drivers
2026-05-19 22:12:28 +02:00
b54c8666ec update example
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-18 23:08:03 +02:00
b31e7cdbbe midi2: drain pattern for RX FIFO
Default RX/TX buffers to EPSIZE for both device and host. Document
drain-in-loop on ump_read; example device callback drains until
empty.
2026-05-17 19:56:04 -03:00
116395a1b2 bsp: fix tcpp0203 lto uninit error
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-17 14:05:03 +02:00
2a58e8256e midi2: skip.txt comments 2026-05-16 22:54:25 -03:00
7cf579dd49 midi2: skip 3 more boards with same tcpp0203 BSP bug
stm32h573i_dk, stm32n657nucleo and stm32n6570dk have the same
pre-existing uninitialized io_ctx.GetTick in their board.h that we
already skip on stm32h7s3nucleo. Trips with Make+LTO; CMake passes.
2026-05-16 22:37:45 -03:00
478e04778b midi2: remove unused ump_noop helper
arm-clang fails with -Werror=unused-function; arm-gcc was silently
omitting it via LTO. The helper was never called.
2026-05-16 21:44:22 -03:00
7c214f9d4f midi2: add sources to TINYUSB_SRC_C, skip family
Make build was missing midi2_device.c/midi2_host.c from
src/tinyusb.mk. Skip stm32h7s3nucleo board which exposes a
pre-existing uninitialized warning in its board.h (board_init2)
under Make+LTO.
2026-05-16 21:35:21 -03:00
214de5181c midi2: fix CI matrix with only.txt and skip.txt
Restrict midi2_host build to MCUs with USB host support (cloned from
midi_rx) and skip SAMD11 from midi2_device (ROM overflow on link).
2026-05-16 20:39:20 -03:00
3efac1b28c midi2: host example - simplify and rename to midi2_host
Drop Feather-specific scaffolding (SSD1306 display, font, PIO-USB pin
override) and rename the directory to midi2_host. The example is now a
single main.c + tusb_config.h pair following the midi_rx pattern, with a
printf-only UMP decoder for Channel Voice messages.

Build-tested on adafruit_feather_rp2040_usb_host, daisyseed (stm32h7),
mimxrt1010_evk, stm32f407disco, raspberry_pi_pico2, b_u585i_iot2a,
portenta_c33, stm32h503nucleo, stlinkv3mini, feather_stm32f405.

Ref #3571
2026-05-16 13:00:30 -03:00
43a72cb614 midi2: device example - portable, add protocol fallback
Remove the rp2040-only guard; the example now follows the audio_test
pattern (only Espressif uses its own build system). Add CMakePresets.json
and generic product strings.

The runtime fallback picks the path that matches the host state, per
message, mirroring the idea behind the UAC examples:
  Alt 0                   USB-MIDI 1.0 32-bit Event Packets (packet_write)
  Alt 1 + MIDI 1.0 negotiated   UMP MT 0x2 (ump_write)
  Alt 1 + MIDI 2.0 negotiated   UMP MT 0x4 (ump_write)

Build-tested on rp2040, rp2350, stm32f0/f1/f2/f3/f4/f7/g0/g4/h5/h7/l0/l4/u0/u5/wb/c0,
samd2x_l2x, samd5x_e5x, same7x, nrf, imxrt, lpc17, lpc55, mcx, ra,
da1469x, efm32.

Ref #3571
2026-05-16 13:00:05 -03:00
24440cfc2e enable iperf
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-14 14:09:06 +02:00
09f8208f5b Add GetPartialObject to MTP example
Added support for GetPartialObject for better compatibility with Linux file explorers.
2026-05-13 22:27:57 +02:00
b4880761bc refactor: replace midi2_host (Waveshare) with midi2_host_feather
Remove the Waveshare RP2350-USB-A host example and board definition.
The Feather RP2040 USB Host is the TinyUSB reference board for
PIO-USB host and does not require the CFG_TUSB_DEBUG workaround
needed by the Waveshare (R13 pull-up issue).

One host example is sufficient for the PR. The Feather variant has
an improved display with splash, spinner, and 6-line live view.
2026-05-12 11:07:45 -03:00
c4847006db fix: skip midi2_host_feather build on non-RP2040 platforms
The Makefile was missing the FAMILY=rp2040 guard, causing CI failures
on stm32h7rs and other non-RP2040 targets. Matches the approach used
by midi2_host.
2026-05-12 11:07:44 -03:00
13c6f6a2c7 example: add MIDI 2.0 Host example for Adafruit Feather RP2040 USB Host
Board-specific variant of midi2_host targeting the Adafruit Feather
RP2040 with USB Type A Host (product 5723).

Hardware differences from the Waveshare RP2350-USB-A example:
- PIO-USB on GP16/GP17 (vs GP12/GP13)
- I2C1 via STEMMA QT on GP2/GP3 (vs I2C0 GP4/GP5)
- USB Host 5V power enable on GP18

Display uses three phases: splash screen, spinner while waiting for
a device, then live scrolling UMP message view with 6 visible lines.

Tested board-to-board: RP2040 Pico (Device) to Feather RP2040 (Host),
SSD1306 128x64 OLED showing decoded MIDI 2.0 messages in real time.
2026-05-12 11:07:44 -03:00
f8a5fc37f3 fix: CI build failures on non-RP2040 platforms
- Use UINT32_C(1) instead of 1u for bit shifts >= 16 in
  midi2_device.c to avoid shift-count-overflow on 16-bit
  platforms (MSP430)
- Add Makefiles for midi2_device and midi2_host examples with
  family guard (skip if FAMILY != rp2040). These examples
  require Pico SDK and board-specific hardware
- Restrict midi2_device CMakeLists.txt to rp2040 family
  (matching midi2_host)
2026-05-12 11:07:44 -03:00
fa9edeff9c fix: address PR review feedback for MIDI 2.0 drivers
Host driver (midi2_host.c):
- midih2_open() now returns actual parsed length instead of max_len,
  preventing composite device interface conflicts
- Parsers (alt0/alt1) refactored to return const uint8_t* end pointer
  following midi_host.c switch/case pattern
- Alt 1 CS Endpoint now parses MIDI 2.0 layout (bNumGrpTrmBlk at
  offset 3 with MIDI_CS_ENDPOINT_GENERAL_2_0 subtype check) instead
  of reusing MIDI 1.0 struct (bNumEmbMIDIJack)
- midih2_set_config() now issues SET_INTERFACE control request via
  tuh_interface_set() before completing configuration. Falls back to
  alt 0 if SET_INTERFACE fails
- Extracted midih2_set_config_complete() and midih2_set_interface_cb()
  for async SET_INTERFACE handling

Device driver (midi2_device.c):
- midi2d_open() skip loop now checks bInterfaceNumber, stopping at
  interfaces that belong to other functions in composite devices
- SET_INTERFACE handler now rejects alt > 1 (returns false/stall)
- Named constants for GTB descriptor types and MIDI protocol values

Descriptor macros (usbd.h):
- TUD_MIDI2_DESC_ALT1_HEAD: iInterface set to 0 (consistent with
  Alt 0), wTotalLength now uses TUD_MIDI2_DESC_ALT1_CS_LEN to cover
  all Alt 1 class-specific descriptors
- TUD_MIDI2_DESC_ALT1_EP: now accepts GTB ID list via variadic args,
  emitting complete CS endpoint descriptor

Host example:
- CMakeLists.txt restricted to rp2040 family (display.c requires
  Pico SDK headers)
- display.c: null terminator after strncpy in log scroll

Documentation:
- class_drivers.rst updated to reflect SET_INTERFACE behavior and
  auto-select with fallback

Addresses: Codex P1 (#1, #2, #3), Copilot (#4-#9)
2026-05-12 11:07:44 -03:00
d5c5ac586b example: add MIDI 2.0 Host example with display (midi2_host)
Add Host example that receives UMP from a MIDI 2.0 Device via PIO-USB
and displays received messages on a SSD1306 OLED (I2C, 128x64).

Features:
- Boot checklist on display (PWR, TinyUSB, USB bus, Device, Descriptor,
  Alt Setting UMP, Mount, Receiving)
- Decode and display all MIDI 2.0 Channel Voice messages
- PIO-USB Host on rhport 1 (GP12/GP13 for Waveshare RP2350-USB-A)
- SSD1306 display via I2C0 (GP4=SDA, GP5=SCL)

Also add board definition for Waveshare RP2350-USB-A.

Tested: Waveshare RP2350-USB-A (Host) receiving UMP from Raspberry Pi
Pico (Device) via USB cable, notes displayed on SSD1306 OLED
2026-05-12 11:07:44 -03:00
290470bda3 example: add MIDI 2.0 Device example (midi2_device)
Add Device example that plays Twinkle Twinkle Little Star using native
UMP format. Demonstrates all MIDI 2.0 Channel Voice message types:
16-bit velocity, 32-bit CC, 32-bit pitch bend, 32-bit channel/poly
pressure, per-note management, program change with bank select, and
JR timestamps.

USB descriptor exposes both Alt Setting 0 (MIDI 1.0) and Alt Setting 1
(UMP) per USB-MIDI 2.0 specification.

Tested on: Raspberry Pi Pico (RP2040), Linux (ALSA), Windows (MIDI
Services)
2026-05-12 11:07:44 -03:00
4242ef7ac6 Merge remote-tracking branch 'tinyusb/master' into stm32c5 2026-05-11 21:11:28 +02:00
4e64f3e91c Merge pull request #3632 from hathach/msc_os
hcd/dwc2: fix txfifo full check
2026-05-11 16:02:50 +02:00
5ea1979e29 add stm32c5 support
Signed-off-by: HiFiPHile <admin@hifiphile.com>
2026-05-10 14:17:00 +02:00
040ee395d4 reduce NTM size
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-08 18:57:09 +02:00
216d7c43f1 lpc55 works with net_lwip
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-08 18:16:04 +02:00
439e0975e1 fix iperf server is always excluded
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-08 18:15:40 +02:00
21fbee1e63 Merge remote-tracking branch 'tinyusb/master' into ncm_packet_filter
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-08 13:13:08 +02:00
f61b99f479 Apply suggestions from code review
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-05 11:36:41 +02:00
25ddb7ff0c minor clean up 2026-05-04 09:22:11 +07:00
db084551cf add msc_file_explorer_freertos example
Co-authored-by: Copilot <copilot@github.com>
Signed-off-by: HiFiPhile <admin@hifiphile.com>
2026-05-03 20:25:40 +02:00
ea2de8be7e Merge branch 'master' into copilot/upgrade-net-lwip-webserver-descriptors 2026-05-03 14:36:25 +02:00