Skip to content

Commit 0b79cf2

Browse files
committed
MIDI: support port name strings
1 parent 91df381 commit 0b79cf2

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

src/arduino/Adafruit_USBD_Device.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,15 @@ void Adafruit_USBD_Device::setSerialDescriptor(const char *s) {
126126
_desc_str_arr[STRID_SERIAL] = s;
127127
}
128128

129+
uint8_t Adafruit_USBD_Device::addStringToIndex(const char *s) {
130+
if (_desc_str_count >= STRING_DESCRIPTOR_MAX)
131+
return 0;
132+
133+
uint8_t index = _desc_str_count++;
134+
_desc_str_arr[index] = s;
135+
return index;
136+
}
137+
129138
void Adafruit_USBD_Device::task(void) { tud_task(); }
130139

131140
bool Adafruit_USBD_Device::mounted(void) { return tud_mounted(); }

src/arduino/Adafruit_USBD_Device.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ class Adafruit_USBD_Device {
8787
void setProductDescriptor(const char *s);
8888
void setSerialDescriptor(const char *s);
8989
uint8_t getSerialDescriptor(uint16_t *serial_utf16);
90+
uint8_t addStringToIndex(const char *s);
9091

9192
//------------- Control -------------//
9293

src/arduino/midi/Adafruit_USBD_MIDI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ uint16_t Adafruit_USBD_MIDI::makeItfDesc(uint8_t itfnum, uint8_t *buf,
105105

106106
// Jack
107107
for (uint8_t i = 1; i <= _n_cables; i++) {
108-
uint8_t jack[] = {TUD_MIDI_DESC_JACK(i)};
108+
uint8_t jack[] = {TUD_MIDI_DESC_JACK_DESC(i, _cable_name_strings[i])};
109109
memcpy(buf + len, jack, sizeof(jack));
110110
len += sizeof(jack);
111111
}

src/arduino/midi/Adafruit_USBD_MIDI.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ class Adafruit_USBD_MIDI : public Stream, public Adafruit_USBD_Interface {
3434

3535
void setCables(uint8_t n_cables);
3636

37+
// Register the index number of a USB device descriptor string, which was
38+
// added with Adafruit_USBD_Device::addStringToIndex().
39+
void setCableNameStringIndex(uint8_t index, uint8_t string_index) {
40+
_cable_name_strings[index] = string_index;
41+
}
42+
3743
bool begin(void);
3844

3945
// for MIDI library
@@ -65,6 +71,7 @@ class Adafruit_USBD_MIDI : public Stream, public Adafruit_USBD_Interface {
6571

6672
private:
6773
uint8_t _n_cables;
74+
uint8_t _cable_name_strings[16]{};
6875
};
6976

7077
#endif /* ADAFRUIT_USBD_MIDI_H_ */

0 commit comments

Comments
 (0)