summaryrefslogtreecommitdiff
path: root/src/class/midi
AgeCommit message (Collapse)Author
2026-05-07revert RX buffer size as it's not related to issueZixun LI
Even if CFG_TUH_MIDI_RX_BUFSIZE=100*TUH_EPSIZE_BULK_MAX, calling tuh_midi_stream_read without a loop can return only one 4-byte packet and preventing subsequent transfer. Signed-off-by: Zixun LI <[email protected]>
2026-04-22Revert MIDI TX buffer size definitionHakan Lindestaf
2026-04-22midi host: raise default RX FIFO above EP size, document drain requirementHakan Lindestaf
Follow-up to #3239. tuh_midi_stream_read terminates on cable-number transitions, leaving residue in the FIFO. With the default RX FIFO sized equal to one bulk packet, the next bulk IN transfer fails to queue and the driver silently stops receiving. Raising the default to 2x bulk gives single-call apps a full packet of headroom and documents the drain-loop expectation. Reproduced with Akai LPD8 mk1 (VID 09E8 PID 0075) on STM32H753 DWC2 host; fixed with this patch. See #3613 for full repro + captures.
2026-03-18fix bugs in fsdev hcd, dcd and midi host stream writehathach
- hcd_edpt_clear_stall: use ep_addr instead of hardcoded 0 (control endpoint) - hcd: add TUP_USBIP_FSDEV_DRD define for MCUs with host support (C0, G0, H5, U3, U5) and use it in hcd compile guard instead of enumerating MCUs - dcd_edpt_close_all: use FSDEV_EP_COUNT instead of CFG_TUD_ENDPPOINT_MAX for PMA btable offset to match handle_bus_reset - midi host tuh_midi_stream_write: add missing cable_num to system messages, SysEx, and real-time MIDI packets. Add 0xF mask for SysEx CIN checks. Aligns with midi_device.c tud_midi_n_stream_write implementation. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
2026-03-17fix midi host issue 3544hathach
2026-03-12refactor(config): separate endpoint buffer sizes into RX and TX definitions ↵hathach
for clarity and flexibility
2026-03-11Merge branch 'master' into zlp-hs-on-fshathach
2026-02-25midi device: add cable-aware stream read (tud_midi_n_demux_stream_read)Saulo Veríssimo
The existing tud_midi_n_stream_read() accepts a cable_num parameter but ignores it — all cables share a single FIFO and stream parser state, so data from different virtual cables is silently mixed together. Add tud_midi_n_demux_stream_read() which returns the cable number of the data that was actually read. It peeks at each USB-MIDI event packet header before consuming it and stops when the next packet belongs to a different cable, allowing callers to dispatch per-cable without losing data. Implementation details: - Mirrors the host-side tuh_midi_stream_read() approach: tu_edpt_stream_peek for cable inspection, CIN-based byte count (USB MIDI 1.0 Table 4-1), leftover handling via existing midi_driver_stream_t - *p_cable_num initialized to 0xff sentinel so callers can detect "no data" even when return value is 0 - Cable-change check (total_read > 0 guard) covers both leftover-originated reads and freshly consumed packets - TU_VERIFY uses explicit != NULL comparisons, consistent with codebase style - Note: shares stream->buffer with tud_midi_n_stream_read(); do not mix calls on the same interface - Adds single-interface convenience wrapper tud_midi_demux_stream_read() Closes #1838
2026-02-11fix ep size and midi bufferHiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2026-02-11fix rx transfer length when high speed capable device/host working at full speedHiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2025-12-12fix edpt stream write/read to endpoint not yet openedhathach
2025-12-11refactor usbh_class_driver_t's open() to return number of driver len instead ↵hathach
of bool. help to simplify parsing configuration
2025-12-10move hwid into edpt stream for consistent APIhathach
2025-11-26omit ep buffer for midi device if device support CFG_TUD_EDPT_DEDICATED_HWFIFOhathach
2025-11-13clear endpoint stream when open for cdc_host and midi_hosthathach
2025-11-12migrate cdc device to use edpt stream APIhathach
tu_edpt_stream_open() does not clear fifo, allow for persistent stream when disconnect/reconnect
2025-11-12migrate midi_device to use edpt stream APIhathach
also add tud_midi_n_packet_write/read_n()
2025-10-30Merge branch 'master' into uac1HiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2025-10-28fix Identifiers that start with '__' or '_[A-Z]' are reserved.hathach
fix compiling with nuc family
2025-09-30More descriptors workingHiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2025-09-29Update UAC2 namingHiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2025-09-17Update weak callbacks to new syntaxHiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2025-09-06fix #3239: discard poorly formed packetsrppicomidi
2025-08-02use tu_desc_in_bounds() for descriptor loophathach
2025-07-23Restore accidentally erased debug log messagerppicomidi
2025-07-23Delete debugging printfrppicomidi
2025-07-23Fix #3159: Handle MIDI interface descriptor after audio streaming interfacerppicomidi
2025-03-21Fix #3033: address review commentrppicomidi
2025-03-21Move misplaced statementrppicomidi
2025-03-20Fix #3033: Increase array bounds and test for overflowrppicomidi
2025-03-19Move iInterface per review commentrppicomidi
2025-03-18Fix compiler conversion error warningrppicomidi
2025-03-18fix tuh_midi_itf_get_info() desc->iInterface valuerppicomidi
2025-03-17Fix 3031: implement tuh_midi_itf_get_info()rppicomidi
2025-03-13Only clear stream_read & stream_write if they are definedrppicomidi
2025-03-06hack: force/overwrite endpoint mps to 64 for device that incorrectly report ↵hathach
512 bytes for bulk in fullspeed mode.
2025-03-06midi host: skip rx data with all zeroeshathach
2025-02-24add tuh_midi_mount_cb_t struct for tuh_midi_mount_cb()hathach
change tuh_midi_rx/tx_cb() to have xferred_bytes rename tuh_midi_get_num_rx/tx_cables() to tuh_midi_get_rx/tx_cable_count() use default empty callback instead of weak null to be compatible with keil compiler
2025-02-24add desc_audio_control to midi descriptor callbackhathach
2025-02-24change API to take index instead of dev address, this allow to support more ↵hathach
than 1 midi per device.
2025-02-24add tuh_midi_descriptor_cb()hathach
2025-02-21remove CFG_MIDI_HOST_DEVSTRINGS support, we will leave that for application ↵hathach
to parse/extract this information if needed rename tuh_midi_configure() to mounted() for consistency
2025-02-14- rename tuh_midi_stream_flush() to tuh_midi_write_flush()hathach
- add tuh_midi_packet_read_n() and tuh_midi_packet_write_n() - add CFG_TUH_MIDI_STREAM_API to opt out stream API
2025-02-14- change signature of tuh_midi_mount/umount_cb()hathach
- rename midi_stream_t to midi_driver_stream_t and move to midi.h (common for device and host)
2025-02-14- remove tuh_midi_read_poll(), auto schedule EP in when set_config() and ↵hathach
xfer_cb as well as ep read() - de-dup tuh_midi_get_num_rx/tx_cables - add tuh_midi_read_available()
2025-02-13update midi host to use endpoint stream APIhathach
2025-02-12- use CFG_TUH_MIDI as number of midi host instancehathach
- comment out tuh_descriptor_device_cb/tuh_desc_configuration_cb since it is unrelated to this PR
2025-02-12fix host midi buildhathach
2025-02-12pre-commit fixhathach
2025-02-12clean uphathach