summaryrefslogtreecommitdiff
path: root/src/class/midi
AgeCommit message (Collapse)Author
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
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
2025-02-12Merge branch 'master' into fork/atoktoto/midihosthathach
# Conflicts: # hw/bsp/rp2040/family.cmake # src/class/midi/midi.h # src/class/midi/midi_device.c # src/device/usbd_control.c # src/host/hcd.h # src/host/usbh.c # src/host/usbh.h
2024-11-25try to fix circleci with kinetishathach
2024-11-21use TUD_EPBUF_DEF to declare buffer memory for midihathach
2024-11-21- move freertos_hooks to board.chathach
- add device/midi_test_freertos example - update bth/dfu/midi device for cache line size
2024-04-08add class driver deinithathach
2023-07-24rename CFG_TUSB_MEM_SECTION to CFG_TUD_MEM_SECTION in device stackhathach
CFG_TUD_MEM_SECTION is default to CFG_TUSB_MEM_SECTION
2023-04-18Merge pull request #1920 from mikee47/fix/midi-definitionHa Thach
MIDI_CIN_NOTE_ON definition transposed with MIDI_CIN_NOTE_OFF
2023-03-17fix trailing space and new linehathach
temporarily disable codespell
2023-02-27Merge pull request #1852 from silvergasp/mem_sHa Thach
fix: Replace device calls to memcpy with tu_memcpy_s