diff --git a/src/class/midi/midi_device.c b/src/class/midi/midi_device.c index b20903d68f..5ac3f04525 100644 --- a/src/class/midi/midi_device.c +++ b/src/class/midi/midi_device.c @@ -294,6 +294,16 @@ bool tud_midi_n_packet_write (uint8_t itf, const uint8_t packet[4]) { return true; } +uint32_t tud_midi_n_tx_available(uint8_t itf) { + midid_interface_t *p_midi = &_midid_itf[itf]; + tu_edpt_stream_t *ep_str = &p_midi->ep_stream.tx; + return tu_edpt_stream_write_available(p_midi->rhport, ep_str); +} + +uint32_t tud_midi_n_rx_available(uint8_t itf) { + return tud_midi_n_available(itf, 0); +} + uint32_t tud_midi_n_packet_write_n(uint8_t itf, const uint8_t packets[], uint32_t n_packets) { midid_interface_t *p_midi = &_midid_itf[itf]; tu_edpt_stream_t *ep_str = &p_midi->ep_stream.tx; diff --git a/src/class/midi/midi_device.h b/src/class/midi/midi_device.h index ddbc2f9f01..5a2c70699d 100644 --- a/src/class/midi/midi_device.h +++ b/src/class/midi/midi_device.h @@ -81,6 +81,12 @@ bool tud_midi_n_packet_write(uint8_t itf, const uint8_t packet[4]); // Write multiple event packets, return number of written packets uint32_t tud_midi_n_packet_write_n(uint8_t itf, const uint8_t packets[], uint32_t n_packets); +// Get the number of bytes available for writing +uint32_t tud_midi_n_tx_available(uint8_t itf); + +// Get the number of bytes available for reading +uint32_t tud_midi_n_rx_available(uint8_t itf); + //--------------------------------------------------------------------+ // Application API (Single Interface) //--------------------------------------------------------------------+ @@ -117,6 +123,14 @@ TU_ATTR_ALWAYS_INLINE static inline uint32_t tud_midi_packet_write_n(const uint8 return tud_midi_n_packet_write_n(0, packets, n_packets); } +TU_ATTR_ALWAYS_INLINE static inline uint32_t tud_midi_tx_available(void) { + return tud_midi_n_tx_available(0); +} + +TU_ATTR_ALWAYS_INLINE static inline uint32_t tud_midi_rx_available(void) { + return tud_midi_n_rx_available(0); +} + //--------------------------------------------------------------------+ // Internal Class Driver API //--------------------------------------------------------------------+