<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tinyusb.git/test/unit-test, branch hil-report</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/tinyusb.git/atom/test/unit-test?h=hil-report</id>
<link rel='self' href='http://cgit.235523.xyz/tinyusb.git/atom/test/unit-test?h=hil-report'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/'/>
<updated>2026-08-13T04:45:36Z</updated>
<entry>
<title>usbd: clear endpoint busy/claimed when a completion event is dropped</title>
<updated>2026-08-13T04:45:36Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-12T16:05:59Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=91fbbd192ca9539221d3dc096f00ce77836a5d3d'/>
<id>urn:sha1:91fbbd192ca9539221d3dc096f00ce77836a5d3d</id>
<content type='text'>
An XFER_COMPLETE dropped by a full event queue leaves its endpoint's
BUSY|CLAIMED state set forever - the consumer that normally clears it
never sees the event, so usbd_edpt_claim()/usbd_edpt_xfer() fail from
then on and the class never re-arms the endpoint. Clear both flags when
the enqueue fails: the completion is lost either way, but the endpoint
stays usable.

Unit test: arm a bulk endpoint, drop its completion against a full
queue, verify the endpoint can be claimed and re-armed.
</content>
</entry>
<entry>
<title>usbd: don't leak the queued-setup counter when the event queue is full</title>
<updated>2026-08-12T15:41:17Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-08-12T15:36:49Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=a0249ada9096365697340031a7b4a285beb18a2b'/>
<id>urn:sha1:a0249ada9096365697340031a7b4a285beb18a2b</id>
<content type='text'>
A SETUP arriving while the event queue is full is silently dropped by
queue_event(), but _usbd_queued_setup has already been incremented. The
leaked count makes the event handler skip every subsequent SETUP
("Skipped since there is other SETUP in queue") forever: EP0 stays deaf
until tud_init() while the device otherwise looks alive - enumerated,
endpoints armed. Undo the increment when the enqueue fails.

Unit test: fill the queue so a SETUP is dropped, then verify the next
SETUP still completes a GET_DESCRIPTOR control transfer.
</content>
</entry>
<entry>
<title>device: clamp EP0 OUT data copy to the control transfer buffer (#3705)</title>
<updated>2026-06-16T10:36:17Z</updated>
<author>
<name>Ha Thach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-06-16T10:36:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=7b791916a702c28f8f39e9bfc5eb8455d0942865'/>
<id>urn:sha1:7b791916a702c28f8f39e9bfc5eb8455d0942865</id>
<content type='text'>
* device: clamp EP0 OUT data copy to the control transfer buffer

usbd_control_xfer_cb() copied xferred_bytes from the EP0 bounce buffer
into the requester's buffer with no bound. A non-compliant host that
sends an OUT data packet larger than the control transfer's data_len
(= min(len, wLength), the buffer capacity) would overflow that buffer
and over-count total_xferred. Clamp xferred_bytes to the remaining
buffer space before the memcpy and accounting.</content>
</entry>
<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>test: add MIDI 2.0 Device and Host unit tests</title>
<updated>2026-05-12T14:07:44Z</updated>
<author>
<name>Saulo Veríssimo</name>
<email>sauloverissimo@gmail.com</email>
</author>
<published>2026-03-25T02:38:14Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=77cef83304c92402a133fc936c44d182fc99ecf0'/>
<id>urn:sha1:77cef83304c92402a133fc936c44d182fc99ecf0</id>
<content type='text'>
Add unit tests for MIDI 2.0 drivers:
- Device: UMP word count (all 16 message types), descriptor macro
  validation (length, byte layout, alt settings, endpoints),
  CS endpoint subtypes, traversal integrity
- Host: UMP word count, callback struct validation, CS endpoint
  subtypes

Also add Sphinx documentation for MIDI 2.0 class drivers (Device
and Host API reference, lifecycle, configuration, examples).

Tests: 60/60 PASS (FIFO 26/26, USBD 5/5, MIDI2 Device 18/18,
MIDI2 Host 6/6, USBD internal 5/5)
</content>
</entry>
<entry>
<title>deprecated `usbd_control.c` and merge its functionality into `usbd.c`</title>
<updated>2026-04-29T10:27:59Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-04-29T10:27:59Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=9d3ad336bfad062fa1e6f6d63feb97a9851cc9e1'/>
<id>urn:sha1:9d3ad336bfad062fa1e6f6d63feb97a9851cc9e1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>add tu_hwfifo_access_t param to hwfifo API</title>
<updated>2026-01-02T17:47:40Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-01-02T17:34:49Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=c87f0db45978b6b1f11f151bf5c061b926dba245'/>
<id>urn:sha1:c87f0db45978b6b1f11f151bf5c061b926dba245</id>
<content type='text'>
</content>
</entry>
<entry>
<title>support multiple data stride if configured</title>
<updated>2026-01-02T10:16:02Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-01-02T08:55:00Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=36e8f9d7a184ea5d8ff67331f9a12dd5c809ab30'/>
<id>urn:sha1:36e8f9d7a184ea5d8ff67331f9a12dd5c809ab30</id>
<content type='text'>
</content>
</entry>
<entry>
<title>minor refactor</title>
<updated>2026-01-01T04:59:29Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2026-01-01T04:35:09Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=009750c747ff1d5a25d976de9161b974eb5f18e7'/>
<id>urn:sha1:009750c747ff1d5a25d976de9161b974eb5f18e7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>update tu_fifo to work with fsdev hwfifo with increased address 16/32bit</title>
<updated>2025-12-31T09:26:24Z</updated>
<author>
<name>hathach</name>
<email>thach@tinyusb.org</email>
</author>
<published>2025-12-31T09:26:24Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/tinyusb.git/commit/?id=f20ad05d71919dd5656aa7f92b9e27582744348a'/>
<id>urn:sha1:f20ad05d71919dd5656aa7f92b9e27582744348a</id>
<content type='text'>
</content>
</entry>
</feed>
