|  |  | @@ -68,7 +68,7 @@ | 
		
	
		
			
			|  |  |  | static uint8_t device_descriptor[] = { | 
		
	
		
			
			|  |  |  | 18,                                     // bLength | 
		
	
		
			
			|  |  |  | 1,                                      // bDescriptorType | 
		
	
		
			
			|  |  |  | 0x10, 0x01,                             // bcdUSB | 
		
	
		
			
			|  |  |  | 0x01, 0x01,                             // bcdUSB | 
		
	
		
			
			|  |  |  | #ifdef DEVICE_CLASS | 
		
	
		
			
			|  |  |  | DEVICE_CLASS,                           // bDeviceClass | 
		
	
		
			
			|  |  |  | #else | 
		
	
	
		
			
			|  |  | @@ -354,12 +354,12 @@ static uint8_t multitouch_report_desc[] = { | 
		
	
		
			
			|  |  |  | 0x75, 0x01,                     //     Report Size (1) | 
		
	
		
			
			|  |  |  | 0x95, 0x01,                     //     Report Count (1) | 
		
	
		
			
			|  |  |  | 0x81, 0x02,                     //     Input (variable,absolute) | 
		
	
		
			
			|  |  |  | 0x09, 0x51,                     //     Usage (Contact Identifier) | 
		
	
		
			
			|  |  |  | 0x09, 0x30,                     //     Usage (Pressure) | 
		
	
		
			
			|  |  |  | 0x25, 0x7F,                     //     Logical Maximum (127) | 
		
	
		
			
			|  |  |  | 0x75, 0x07,                     //     Report Size (7) | 
		
	
		
			
			|  |  |  | 0x95, 0x01,                     //     Report Count (1) | 
		
	
		
			
			|  |  |  | 0x81, 0x02,                     //     Input (variable,absolute) | 
		
	
		
			
			|  |  |  | 0x09, 0x30,                     //     Usage (Pressure) | 
		
	
		
			
			|  |  |  | 0x09, 0x51,                     //     Usage (Contact Identifier) | 
		
	
		
			
			|  |  |  | 0x26, 0xFF, 0x00,               //     Logical Maximum (255) | 
		
	
		
			
			|  |  |  | 0x75, 0x08,                     //     Report Size (8) | 
		
	
		
			
			|  |  |  | 0x95, 0x01,                     //     Report Count (1) | 
		
	
	
		
			
			|  |  | @@ -379,6 +379,11 @@ static uint8_t multitouch_report_desc[] = { | 
		
	
		
			
			|  |  |  | 0x95, 0x01,                     //   Report Count (1) | 
		
	
		
			
			|  |  |  | 0x09, 0x56,                     //   Usage (Scan Time) | 
		
	
		
			
			|  |  |  | 0x81, 0x02,                     //   Input (variable,absolute) | 
		
	
		
			
			|  |  |  | 0x09, 0x54,                     //   Usage (Contact Count) | 
		
	
		
			
			|  |  |  | 0x25, MULTITOUCH_FINGERS,       //   Logical Maximum (10) | 
		
	
		
			
			|  |  |  | 0x75, 0x08,                     //   Report Size (8) | 
		
	
		
			
			|  |  |  | 0x95, 0x01,                     //   Report Count (1) | 
		
	
		
			
			|  |  |  | 0x81, 0x02,                     //   Input (variable,absolute) | 
		
	
		
			
			|  |  |  | 0x05, 0x0D,                     //   Usage Page (Digitizers) | 
		
	
		
			
			|  |  |  | 0x09, 0x55,                     //   Usage (Contact Count Maximum) | 
		
	
		
			
			|  |  |  | 0x25, MULTITOUCH_FINGERS,       //   Logical Maximum (10) | 
		
	
	
		
			
			|  |  | @@ -681,14 +686,14 @@ static uint8_t config_descriptor[CONFIG_DESC_SIZE] = { | 
		
	
		
			
			|  |  |  | 0x02,                                   // bDescriptorSubtype = MIDI_IN_JACK | 
		
	
		
			
			|  |  |  | 0x01,                                   // bJackType = EMBEDDED | 
		
	
		
			
			|  |  |  | 1,                                      // bJackID, ID = 1 | 
		
	
		
			
			|  |  |  | 0,                                      // iJack | 
		
	
		
			
			|  |  |  | 0x05,                                      // iJack | 
		
	
		
			
			|  |  |  | // MIDI IN Jack Descriptor, B.4.3, Table B-8 (external), page 40 | 
		
	
		
			
			|  |  |  | 6,                                      // bLength | 
		
	
		
			
			|  |  |  | 0x24,                                   // bDescriptorType = CS_INTERFACE | 
		
	
		
			
			|  |  |  | 0x02,                                   // bDescriptorSubtype = MIDI_IN_JACK | 
		
	
		
			
			|  |  |  | 0x02,                                   // bJackType = EXTERNAL | 
		
	
		
			
			|  |  |  | 2,                                      // bJackID, ID = 2 | 
		
	
		
			
			|  |  |  | 0,                                      // iJack | 
		
	
		
			
			|  |  |  | 0x05,                                      // iJack | 
		
	
		
			
			|  |  |  | // MIDI OUT Jack Descriptor, B.4.4, Table B-9, page 41 | 
		
	
		
			
			|  |  |  | 9, | 
		
	
		
			
			|  |  |  | 0x24,                                   // bDescriptorType = CS_INTERFACE | 
		
	
	
		
			
			|  |  | @@ -698,7 +703,7 @@ static uint8_t config_descriptor[CONFIG_DESC_SIZE] = { | 
		
	
		
			
			|  |  |  | 1,                                      // bNrInputPins = 1 pin | 
		
	
		
			
			|  |  |  | 2,                                      // BaSourceID(1) = 2 | 
		
	
		
			
			|  |  |  | 1,                                      // BaSourcePin(1) = first pin | 
		
	
		
			
			|  |  |  | 0,                                      // iJack | 
		
	
		
			
			|  |  |  | 0x05,                                      // iJack | 
		
	
		
			
			|  |  |  | // MIDI OUT Jack Descriptor, B.4.4, Table B-10, page 41 | 
		
	
		
			
			|  |  |  | 9, | 
		
	
		
			
			|  |  |  | 0x24,                                   // bDescriptorType = CS_INTERFACE | 
		
	
	
		
			
			|  |  | @@ -708,56 +713,56 @@ static uint8_t config_descriptor[CONFIG_DESC_SIZE] = { | 
		
	
		
			
			|  |  |  | 1,                                      // bNrInputPins = 1 pin | 
		
	
		
			
			|  |  |  | 1,                                      // BaSourceID(1) = 1 | 
		
	
		
			
			|  |  |  | 1,                                      // BaSourcePin(1) = first pin | 
		
	
		
			
			|  |  |  | 0,                                      // iJack | 
		
	
		
			
			|  |  |  | 0x05,                                      // iJack | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 2 | 
		
	
		
			
			|  |  |  | #define MIDI_INTERFACE_JACK_PAIR(a, b, c, d) \ | 
		
	
		
			
			|  |  |  | 6, 0x24, 0x02, 0x01, (a), 0, \ | 
		
	
		
			
			|  |  |  | 6, 0x24, 0x02, 0x02, (b), 0, \ | 
		
	
		
			
			|  |  |  | 9, 0x24, 0x03, 0x01, (c), 1, (b), 1, 0, \ | 
		
	
		
			
			|  |  |  | 9, 0x24, 0x03, 0x02, (d), 1, (a), 1, 0, | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(5, 6, 7, 8) | 
		
	
		
			
			|  |  |  | #define MIDI_INTERFACE_JACK_PAIR(a, b, c, d, e) \ | 
		
	
		
			
			|  |  |  | 6, 0x24, 0x02, 0x01, (a), (e), \ | 
		
	
		
			
			|  |  |  | 6, 0x24, 0x02, 0x02, (b), (e), \ | 
		
	
		
			
			|  |  |  | 9, 0x24, 0x03, 0x01, (c), 1, (b), 1, (e), \ | 
		
	
		
			
			|  |  |  | 9, 0x24, 0x03, 0x02, (d), 1, (a), 1, (e), | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(5, 6, 7, 8, 0x06) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 3 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(9, 10, 11, 12) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(9, 10, 11, 12, 0x07) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 4 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(13, 14, 15, 16) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(13, 14, 15, 16, 0x08) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 5 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(17, 18, 19, 20) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(17, 18, 19, 20, 0x09) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 6 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(21, 22, 23, 24) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(21, 22, 23, 24, 0x0A) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 7 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(25, 26, 27, 28) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(25, 26, 27, 28, 0x0B) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 8 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(29, 30, 31, 32) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(29, 30, 31, 32, 0x0C) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 9 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(33, 34, 35, 36) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(33, 34, 35, 36, 0x0D) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 10 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(37, 38, 39, 40) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(37, 38, 39, 40, 0x0E) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 11 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(41, 42, 43, 44) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(41, 42, 43, 44, 0x0F) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 12 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(45, 46, 47, 48) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(45, 46, 47, 48, 0x10) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 13 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(49, 50, 51, 52) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(49, 50, 51, 52, 0x11) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 14 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(53, 54, 55, 56) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(53, 54, 55, 56, 0x12) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 15 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(57, 58, 59, 60) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(57, 58, 59, 60, 0x13) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 16 | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(61, 62, 63, 64) | 
		
	
		
			
			|  |  |  | MIDI_INTERFACE_JACK_PAIR(61, 62, 63, 64, 0x14) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | // Standard Bulk OUT Endpoint Descriptor, B.5.1, Table B-11, pae 42 | 
		
	
		
			
			|  |  |  | 9,                                      // bLength | 
		
	
	
		
			
			|  |  | @@ -1412,6 +1417,71 @@ extern struct usb_string_descriptor_struct usb_string_product_name | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_serial_number | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_serial_number_default"))); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | #ifdef MIDI_INTERFACE | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port1 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port1_default"))); | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 2 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port2 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port2_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 3 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port3 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port3_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 4 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port4 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port4_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 5 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port5 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port5_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 6 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port6 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port6_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 7 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port7 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port7_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 8 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port8 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port8_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 9 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port9 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port9_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 10 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port10 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port10_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 11 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port11 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port11_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 12 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port12 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port12_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 13 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port13 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port13_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 14 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port14 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port14_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 15 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port15 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port15_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 16 | 
		
	
		
			
			|  |  |  | extern struct usb_string_descriptor_struct usb_string_midi_port16 | 
		
	
		
			
			|  |  |  | __attribute__ ((weak, alias("usb_string_midi_port16_default"))); | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct string0 = { | 
		
	
		
			
			|  |  |  | 4, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
	
		
			
			|  |  | @@ -1433,6 +1503,119 @@ struct usb_string_descriptor_struct usb_string_serial_number_default = { | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {0,0,0,0,0,0,0,0,0,0} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #ifdef MIDI_INTERFACE | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port1_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','1'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 2 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port2_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','2'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 3 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port3_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','3'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 4 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port4_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','4'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 5 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port5_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','5'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 6 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port6_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','6'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 7 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port7_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','7'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 8 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port8_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','8'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 9 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port9_default = { | 
		
	
		
			
			|  |  |  | 14, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','9'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 10 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port10_default = { | 
		
	
		
			
			|  |  |  | 16, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','1','0'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 11 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port11_default = { | 
		
	
		
			
			|  |  |  | 16, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','1','1'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 12 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port12_default = { | 
		
	
		
			
			|  |  |  | 16, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','1','2'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 13 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port13_default = { | 
		
	
		
			
			|  |  |  | 16, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','1','3'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 14 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port14_default = { | 
		
	
		
			
			|  |  |  | 16, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','1','4'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 15 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port15_default = { | 
		
	
		
			
			|  |  |  | 16, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','1','5'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 16 | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_midi_port16_default = { | 
		
	
		
			
			|  |  |  | 16, | 
		
	
		
			
			|  |  |  | 3, | 
		
	
		
			
			|  |  |  | {'P','o','r','t',' ','1','6'} | 
		
	
		
			
			|  |  |  | }; | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | #ifdef MTP_INTERFACE | 
		
	
		
			
			|  |  |  | struct usb_string_descriptor_struct usb_string_mtp = { | 
		
	
		
			
			|  |  |  | 2 + 3 * 2, | 
		
	
	
		
			
			|  |  | @@ -1520,6 +1703,54 @@ const usb_descriptor_list_t usb_descriptor_list[] = { | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #ifdef MTP_INTERFACE | 
		
	
		
			
			|  |  |  | {0x0304, 0x0409, (const uint8_t *)&usb_string_mtp, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #ifdef MIDI_INTERFACE | 
		
	
		
			
			|  |  |  | {0x0305, 0x0409, (const uint8_t *)&usb_string_midi_port1, 0}, | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 2 | 
		
	
		
			
			|  |  |  | {0x0306, 0x0409, (const uint8_t *)&usb_string_midi_port2, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 3 | 
		
	
		
			
			|  |  |  | {0x0307, 0x0409, (const uint8_t *)&usb_string_midi_port3, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 4 | 
		
	
		
			
			|  |  |  | {0x0308, 0x0409, (const uint8_t *)&usb_string_midi_port4, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 5 | 
		
	
		
			
			|  |  |  | {0x0309, 0x0409, (const uint8_t *)&usb_string_midi_port5, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 6 | 
		
	
		
			
			|  |  |  | {0x030A, 0x0409, (const uint8_t *)&usb_string_midi_port6, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 7 | 
		
	
		
			
			|  |  |  | {0x030B, 0x0409, (const uint8_t *)&usb_string_midi_port7, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 8 | 
		
	
		
			
			|  |  |  | {0x030C, 0x0409, (const uint8_t *)&usb_string_midi_port8, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 9 | 
		
	
		
			
			|  |  |  | {0x030D, 0x0409, (const uint8_t *)&usb_string_midi_port9, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 10 | 
		
	
		
			
			|  |  |  | {0x030E, 0x0409, (const uint8_t *)&usb_string_midi_port10, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 11 | 
		
	
		
			
			|  |  |  | {0x030F, 0x0409, (const uint8_t *)&usb_string_midi_port11, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 12 | 
		
	
		
			
			|  |  |  | {0x0310, 0x0409, (const uint8_t *)&usb_string_midi_port12, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 13 | 
		
	
		
			
			|  |  |  | {0x0311, 0x0409, (const uint8_t *)&usb_string_midi_port13, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 14 | 
		
	
		
			
			|  |  |  | {0x0312, 0x0409, (const uint8_t *)&usb_string_midi_port14, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 15 | 
		
	
		
			
			|  |  |  | {0x0313, 0x0409, (const uint8_t *)&usb_string_midi_port15, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #if MIDI_NUM_CABLES >= 16 | 
		
	
		
			
			|  |  |  | {0x0314, 0x0409, (const uint8_t *)&usb_string_midi_port16, 0}, | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | {0x0300, 0x0000, (const uint8_t *)&string0, 0}, | 
		
	
		
			
			|  |  |  | {0x0301, 0x0409, (const uint8_t *)&usb_string_manufacturer_name, 0}, |