Skip to content

Commit 7f8f645

Browse files
authored
Merge pull request #298 from adafruit/develop
enable usb midi
2 parents f003094 + a0e82f6 commit 7f8f645

File tree

5 files changed

+43
-47
lines changed

5 files changed

+43
-47
lines changed

cores/nRF5/Adafruit_TinyUSB_Core/Adafruit_USBD_CDC.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Adafruit_USBD_CDC::Adafruit_USBD_CDC(void)
4040
uint16_t Adafruit_USBD_CDC::getDescriptor(uint8_t* buf, uint16_t bufsize)
4141
{
4242
// CDC is mostly always existed for DFU
43+
// usb core will automatically update interface number and endpoint number
4344
uint8_t desc[] = { TUD_CDC_DESCRIPTOR(0, 0, EPIN, 8, EPOUT, EPIN, 64) };
4445
uint16_t const len = sizeof(desc);
4546

@@ -52,9 +53,13 @@ uint16_t Adafruit_USBD_CDC::getDescriptor(uint8_t* buf, uint16_t bufsize)
5253
// Baud and config is ignore in CDC
5354
void Adafruit_USBD_CDC::begin (uint32_t baud)
5455
{
56+
(void) baud;
5557
}
58+
5659
void Adafruit_USBD_CDC::begin (uint32_t baud, uint8_t config)
5760
{
61+
(void) baud;
62+
(void) config;
5863
}
5964

6065
void Adafruit_USBD_CDC::end(void)
@@ -128,6 +133,7 @@ extern "C"
128133
void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts)
129134
{
130135
(void) itf; // interface ID, not used
136+
(void) rts;
131137

132138
// DTR = false is counted as disconnected
133139
if ( !dtr )

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/midi/midi_device.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ typedef struct
7474
//--------------------------------------------------------------------+
7575
CFG_TUSB_MEM_SECTION midid_interface_t _midid_itf[CFG_TUD_MIDI];
7676

77-
bool tud_midi_n_connected(uint8_t itf) {
77+
bool tud_midi_n_mounted (uint8_t itf)
78+
{
7879
midid_interface_t* midi = &_midid_itf[itf];
7980
return midi->itf_num != 0;
8081
}
@@ -126,15 +127,14 @@ void midi_rx_done_cb(midid_interface_t* midi, uint8_t const* buffer, uint32_t bu
126127

127128
static bool maybe_transmit(midid_interface_t* midi, uint8_t itf_index)
128129
{
129-
TU_VERIFY( !usbd_edpt_busy(TUD_OPT_RHPORT, midi->ep_in) ); // skip if previous transfer not complete
130+
TU_VERIFY( !usbd_edpt_busy(TUD_OPT_RHPORT, midi->ep_in) ); // skip if previous transfer not complete
130131

131-
uint16_t count = tu_fifo_read_n(&midi->tx_ff, midi->epin_buf, CFG_TUD_MIDI_EPSIZE);
132-
if (count > 0)
133-
{
134-
TU_VERIFY( tud_midi_n_connected(itf_index) ); // fifo is empty if not connected
135-
TU_ASSERT( usbd_edpt_xfer(TUD_OPT_RHPORT, midi->ep_in, midi->epin_buf, count) );
136-
}
137-
return true;
132+
uint16_t count = tu_fifo_read_n(&midi->tx_ff, midi->epin_buf, CFG_TUD_MIDI_EPSIZE);
133+
if (count > 0)
134+
{
135+
TU_ASSERT( usbd_edpt_xfer(TUD_OPT_RHPORT, midi->ep_in, midi->epin_buf, count) );
136+
}
137+
return true;
138138
}
139139

140140
uint32_t tud_midi_n_write(uint8_t itf, uint8_t jack_id, uint8_t const* buffer, uint32_t bufsize)

cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/midi/midi_device.h

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -53,25 +53,24 @@
5353
// Application API (Multiple Interfaces)
5454
// CFG_TUD_MIDI > 1
5555
//--------------------------------------------------------------------+
56-
bool tud_midi_n_connected (uint8_t itf);
57-
uint32_t tud_midi_n_available (uint8_t itf, uint8_t jack_id);
58-
uint32_t tud_midi_n_read (uint8_t itf, uint8_t jack_id, void* buffer, uint32_t bufsize);
59-
void tud_midi_n_read_flush (uint8_t itf, uint8_t jack_id);
60-
uint32_t tud_midi_n_write (uint8_t itf, uint8_t jack_id, uint8_t const* buffer, uint32_t bufsize);
61-
bool tud_midi_n_write_flush (uint8_t itf);
56+
bool tud_midi_n_mounted (uint8_t itf);
57+
uint32_t tud_midi_n_available (uint8_t itf, uint8_t jack_id);
58+
uint32_t tud_midi_n_read (uint8_t itf, uint8_t jack_id, void* buffer, uint32_t bufsize);
59+
void tud_midi_n_read_flush (uint8_t itf, uint8_t jack_id);
60+
uint32_t tud_midi_n_write (uint8_t itf, uint8_t jack_id, uint8_t const* buffer, uint32_t bufsize);
6261

63-
static inline uint32_t tud_midi_n_write24 (uint8_t itf, uint8_t jack_id, uint8_t b1, uint8_t b2, uint8_t b3);
62+
static inline
63+
uint32_t tud_midi_n_write24 (uint8_t itf, uint8_t jack_id, uint8_t b1, uint8_t b2, uint8_t b3);
6464

6565
//--------------------------------------------------------------------+
6666
// Application API (Interface0)
6767
//--------------------------------------------------------------------+
68-
static inline bool tud_midi_connected (void);
69-
static inline uint32_t tud_midi_available (void);
70-
static inline uint32_t tud_midi_read (void* buffer, uint32_t bufsize);
71-
static inline void tud_midi_read_flush (void);
72-
static inline uint32_t tud_midi_write (uint8_t jack_id, void const* buffer, uint32_t bufsize);
73-
static inline uint32_t tudi_midi_write24 (uint8_t jack_id, uint8_t b1, uint8_t b2, uint8_t b3);
74-
static inline bool tud_midi_write_flush (void);
68+
static inline bool tud_midi_mounted (void);
69+
static inline uint32_t tud_midi_available (void);
70+
static inline uint32_t tud_midi_read (void* buffer, uint32_t bufsize);
71+
static inline void tud_midi_read_flush (void);
72+
static inline uint32_t tud_midi_write (uint8_t jack_id, uint8_t const* buffer, uint32_t bufsize);
73+
static inline uint32_t tudi_midi_write24 (uint8_t jack_id, uint8_t b1, uint8_t b2, uint8_t b3);
7574

7675
//--------------------------------------------------------------------+
7776
// Application Callback API (weak is optional)
@@ -88,9 +87,9 @@ static inline uint32_t tud_midi_n_write24 (uint8_t itf, uint8_t jack_id, uint8_t
8887
return tud_midi_n_write(itf, jack_id, msg, 3);
8988
}
9089

91-
static inline bool tud_midi_connected (void)
90+
static inline bool tud_midi_mounted (void)
9291
{
93-
return tud_midi_n_connected(0);
92+
return tud_midi_n_mounted(0);
9493
}
9594

9695
static inline uint32_t tud_midi_available (void)
@@ -108,7 +107,7 @@ static inline void tud_midi_read_flush (void)
108107
tud_midi_n_read_flush(0, 0);
109108
}
110109

111-
static inline uint32_t tud_midi_write (uint8_t jack_id, void const* buffer, uint32_t bufsize)
110+
static inline uint32_t tud_midi_write (uint8_t jack_id, uint8_t const* buffer, uint32_t bufsize)
112111
{
113112
return tud_midi_n_write(0, jack_id, buffer, bufsize);
114113
}
@@ -119,11 +118,6 @@ static inline uint32_t tudi_midi_write24 (uint8_t jack_id, uint8_t b1, uint8_t b
119118
return tud_midi_write(jack_id, msg, 3);
120119
}
121120

122-
static inline bool tud_midi_write_flush (void)
123-
{
124-
return tud_midi_n_write_flush(0);
125-
}
126-
127121
//--------------------------------------------------------------------+
128122
// Internal Class Driver API
129123
//--------------------------------------------------------------------+

cores/nRF5/Adafruit_TinyUSB_Core/tusb_config.h

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,26 +54,22 @@
5454
#define CFG_TUD_CDC 1
5555
#define CFG_TUD_MSC 1
5656
#define CFG_TUD_HID 1
57-
58-
#define CFG_TUD_MIDI 0
57+
#define CFG_TUD_MIDI 1
5958
#define CFG_TUD_CUSTOM_CLASS 0
6059

61-
//------------- CDC -------------//
62-
63-
// FIFO size of CDC TX and RX
60+
// CDC FIFO size of TX and RX
6461
#define CFG_TUD_CDC_RX_BUFSIZE 256
6562
#define CFG_TUD_CDC_TX_BUFSIZE 256
6663

67-
//------------- MSC -------------//
68-
69-
// Buffer size of Device Mass storage
64+
// MSC Buffer size of Device Mass storage
7065
#define CFG_TUD_MSC_BUFSIZE 512
7166

72-
//------------- HID -------------//
73-
74-
// Should be sufficient to hold ID (if any) + Data
67+
// HID buffer size Should be sufficient to hold ID (if any) + Data
7568
#define CFG_TUD_HID_BUFSIZE 64
7669

70+
// MIDI FIFO size of TX and RX
71+
#define CFG_TUD_MIDI_RX_BUFSIZE 64
72+
#define CFG_TUD_MIDI_TX_BUFSIZE 64
7773

7874
#ifdef __cplusplus
7975
}

libraries/Bluefruit52Lib/src/services/BLEMidi.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ class BLEMidi: public BLEService, public Stream
7575
void autoMIDIread(void* midi_obj);
7676

7777
// Stream API for MIDI Interface
78-
virtual int read ( void );
79-
virtual size_t write ( uint8_t b );
80-
virtual int available ( void );
81-
virtual int peek ( void );
82-
virtual void flush ( void );
78+
virtual int read ( void );
79+
virtual size_t write ( uint8_t b );
80+
virtual int available ( void );
81+
virtual int peek ( void );
82+
virtual void flush ( void );
8383

8484
using Print::write; // pull in write(str) and write(buf, size) from Print
8585

0 commit comments

Comments
 (0)