<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git/src/device/usbd.h, branch 0.21.0</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/src/device/usbd.h?h=0.21.0</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/src/device/usbd.h?h=0.21.0'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-05-12T14:07:45Z</updated>
<entry>
<title>midi2: align descriptors with USB-MIDI 2.0 spec</title>
<updated>2026-05-12T14:07:45Z</updated>
<author>
<name>Saulo Veríssimo</name>
<email>sauloverissimo@gmail.com</email>
</author>
<published>2026-04-22T21:04:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=97852816e873bf7f91f3a81f093ad08f96179656'/>
<id>urn:sha1:97852816e873bf7f91f3a81f093ad08f96179656</id>
<content type='text'>
Brings the MIDI 2.0 device driver into full conformance with USB
Device Class Definition for MIDI Devices v2.0 (USB-IF, May 2020).

- Alt 1 MS Interface Header wTotalLength now reports 0x0007 per
  Table 5-2 ("set to match bLength"), replacing the prior 0x0011
  carried over from USB-MIDI 1.0 conventions.
- GET_DESCRIPTOR class request now validates bmRequestType direction,
  type and recipient plus wIndex and wValue high byte per Section 6.
- iBlockItem in the default Group Terminal Block is driven by
  CFG_TUD_MIDI2_BLOCK_STRIDX so applications can attach a UI string
  descriptor to the block per Table 5-6.
- UMP word byte order assumption (little-endian host per Section
  3.2.2) is documented inline so future big-endian ports know where
  to wrap access with tu_htole32 / tu_le32toh.

Validated on RP2040 and ESP32-P4 under Linux kernel 6.17: lsusb -v
reports wTotalLength = 0x0007 on Alt 1 MS Header (raw bytes
07 24 01 00 02 07 00). amidi -l enumerates Group Terminals exposed
via the class-specific GET_DESCRIPTOR response.
</content>
</entry>
<entry>
<title>fix: address PR review feedback for MIDI 2.0 drivers</title>
<updated>2026-05-12T14:07:44Z</updated>
<author>
<name>Saulo Veríssimo</name>
<email>sauloverissimo@gmail.com</email>
</author>
<published>2026-03-25T10:05:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=fa9edeff9c00ee1fc4ee7ab9938b1a5955a6281a'/>
<id>urn:sha1:fa9edeff9c00ee1fc4ee7ab9938b1a5955a6281a</id>
<content type='text'>
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 &gt; 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)
</content>
</entry>
<entry>
<title>feat: add MIDI 2.0 Device class driver (USB-MIDI 2.0)</title>
<updated>2026-05-12T14:07:44Z</updated>
<author>
<name>Saulo Veríssimo</name>
<email>sauloverissimo@gmail.com</email>
</author>
<published>2026-03-25T02:37:48Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=bc8ce76ae800b312b4d3ef591cc42e8726e68d7f'/>
<id>urn:sha1:bc8ce76ae800b312b4d3ef591cc42e8726e68d7f</id>
<content type='text'>
Add native USB-MIDI 2.0 Device class driver to TinyUSB. Implements the
USB-MIDI 2.0 specification with both Alt Setting 0 (MIDI 1.0 fallback)
and Alt Setting 1 (UMP native) descriptor support.

Driver features:
- UMP (Universal MIDI Packet) read/write with atomic message framing
- Protocol negotiation: Endpoint Discovery, Config Request/Notify,
  Function Block Discovery (embedded in driver)
- Group Terminal Block descriptor via GET_DESCRIPTOR
- Alt Setting switch handler with endpoint re-arm
- Static allocation, no dynamic memory, ISR-safe

Build system:
- Register midi2d_* in usbd.c driver table
- Add TUD_MIDI2_DESCRIPTOR macros to usbd.h
- Add config defaults (CFG_TUD_MIDI2_*) to tusb_option.h
- Add midi2_ump_word_count() to midi.h (shared by Device and Host)
- Add midi2_device.c/h to family.cmake and CMakeLists.txt
- Add midi2_device.h include to tusb.h

All changes guarded by #if CFG_TUD_MIDI2 (default 0). Zero impact on
existing drivers and examples.

Tested: Raspberry Pi Pico (RP2040), Linux ALSA, Windows MIDI Services
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'tinyusb/master' into ncm_packet_filter</title>
<updated>2026-05-08T11:13:08Z</updated>
<author>
<name>HiFiPhile</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-05-08T11:13:01Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=21fbee1e63e3f756bb991ccb6477ec2b69f53eb8'/>
<id>urn:sha1:21fbee1e63e3f756bb991ccb6477ec2b69f53eb8</id>
<content type='text'>
Signed-off-by: HiFiPhile &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>ncm: implement GetNtbInputSize request</title>
<updated>2026-05-01T11:54:22Z</updated>
<author>
<name>Zixun LI</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-04-30T13:56:23Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=8db6084acac03acc1b98721f78d22587968ed5b2'/>
<id>urn:sha1:8db6084acac03acc1b98721f78d22587968ed5b2</id>
<content type='text'>
Signed-off-by: HiFiPHile &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>refactor capability</title>
<updated>2026-04-30T13:03:09Z</updated>
<author>
<name>Zixun LI</name>
<email>admin@hifiphile.com</email>
</author>
<published>2026-04-30T13:03:09Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=2931121b072cd49d4a144359da422980d9bf017a'/>
<id>urn:sha1:2931121b072cd49d4a144359da422980d9bf017a</id>
<content type='text'>
Signed-off-by: Zixun LI &lt;admin@hifiphile.com&gt;
</content>
</entry>
<entry>
<title>NCM caps enum</title>
<updated>2026-04-27T11:40:18Z</updated>
<author>
<name>nminaylov</name>
<email>nm29719@gmail.com</email>
</author>
<published>2026-04-27T11:40:18Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=2cdd98104ece869f3a5eda3dd9c2b02f5b4c318d'/>
<id>urn:sha1:2cdd98104ece869f3a5eda3dd9c2b02f5b4c318d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>NCM packet filter support</title>
<updated>2026-04-24T19:39:02Z</updated>
<author>
<name>nminaylov</name>
<email>nm29719@gmail.com</email>
</author>
<published>2026-04-24T19:39:02Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=0649b18b2e8b2e76b38f6280796ba48a51882eac'/>
<id>urn:sha1:0649b18b2e8b2e76b38f6280796ba48a51882eac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>net: upgrade net_lwip_webserver to separate FS/HS descriptors and add bInterval to TUD_CDC_NCM_DESCRIPTOR</title>
<updated>2026-03-22T19:43:46Z</updated>
<author>
<name>copilot-swe-agent[bot]</name>
<email>198982749+Copilot@users.noreply.github.com</email>
</author>
<published>2026-03-22T19:43:46Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=3e5b79282a66a33a8cefc1f8584923819ff97eda'/>
<id>urn:sha1:3e5b79282a66a33a8cefc1f8584923819ff97eda</id>
<content type='text'>
Co-authored-by: HiFiPhile &lt;4375114+HiFiPhile@users.noreply.github.com&gt;
Agent-Logs-Url: https://github.com/hathach/tinyusb/sessions/e212b526-e279-4a83-88bf-a742df293165
</content>
</entry>
<entry>
<title>update printer class: enhance descriptors, buffer sizes, and callbacks</title>
<updated>2026-03-06T08:11:59Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-03-06T08:11:59Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=5838c7f09dda8921fe6f350871211f8bd5a97208'/>
<id>urn:sha1:5838c7f09dda8921fe6f350871211f8bd5a97208</id>
<content type='text'>
</content>
</entry>
</feed>
