Skip to content

Commit 9f8d37d

Browse files
committed
stm32f4: usb midi: use unique serial numbers
The unique serial number from the device unique signature block was never used in any examples. Add it to the these two usb midi examples, to have a user for this api available for reference.
1 parent 2092a67 commit 9f8d37d

File tree

2 files changed

+16
-4
lines changed
  • examples/stm32/f4

2 files changed

+16
-4
lines changed

examples/stm32/f4/stm32f4-discovery/usb_midi/usbmidi.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <libopencm3/usb/audio.h>
2323
#include <libopencm3/usb/midi.h>
2424
#include <libopencm3/cm3/scb.h>
25+
#include <libopencm3/stm32/desig.h>
2526
#include <libopencm3/stm32/rcc.h>
2627
#include <libopencm3/stm32/gpio.h>
2728

@@ -46,7 +47,7 @@ static const struct usb_device_descriptor dev = {
4647
.bcdDevice = 0x0100,
4748
.iManufacturer = 1, /* index to string desc */
4849
.iProduct = 2, /* index to string desc */
49-
.iSerialNumber = 0,
50+
.iSerialNumber = 3, /* index to string desc */
5051
.bNumConfigurations = 1,
5152
};
5253

@@ -267,9 +268,12 @@ static const struct usb_config_descriptor config = {
267268
.interface = ifaces,
268269
};
269270

271+
static char usb_serial_number[25]; /* 12 bytes of desig and a \0 */
272+
270273
static const char * usb_strings[] = {
271274
"libopencm3.org",
272275
"MIDI demo",
276+
usb_serial_number
273277
};
274278

275279
/* Buffer to be used for control requests. */
@@ -371,11 +375,13 @@ int main(void)
371375
GPIO9 | GPIO11 | GPIO12);
372376
gpio_set_af(GPIOA, GPIO_AF10, GPIO9 | GPIO11 | GPIO12);
373377

378+
desig_get_unique_id_as_string(usb_serial_number, sizeof(usb_serial_number));
379+
374380
/* Button pin */
375381
gpio_mode_setup(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO0);
376382

377383
usbd_dev = usbd_init(&otgfs_usb_driver, &dev, &config,
378-
usb_strings, 2,
384+
usb_strings, 3,
379385
usbd_control_buffer, sizeof(usbd_control_buffer));
380386

381387
usbd_register_set_config_callback(usbd_dev, usbmidi_set_config);

examples/stm32/f4/stm32f429i-discovery/usb_midi/usbmidi.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <libopencm3/usb/audio.h>
2424
#include <libopencm3/usb/midi.h>
2525
#include <libopencm3/cm3/scb.h>
26+
#include <libopencm3/stm32/desig.h>
2627
#include <libopencm3/stm32/rcc.h>
2728
#include <libopencm3/stm32/gpio.h>
2829

@@ -47,7 +48,7 @@ static const struct usb_device_descriptor dev = {
4748
.bcdDevice = 0x0100,
4849
.iManufacturer = 1, /* index to string desc */
4950
.iProduct = 2, /* index to string desc */
50-
.iSerialNumber = 0,
51+
.iSerialNumber = 3, /* index to string desc */
5152
.bNumConfigurations = 1,
5253
};
5354

@@ -268,9 +269,12 @@ static const struct usb_config_descriptor config = {
268269
.interface = ifaces,
269270
};
270271

272+
static char usb_serial_number[25]; /* 12 bytes of desig and a \0 */
273+
271274
static const char *usb_strings[] = {
272275
"libopencm3.org",
273276
"MIDI demo",
277+
usb_serial_number
274278
};
275279

276280
/* Buffer to be used for control requests. */
@@ -373,11 +377,13 @@ int main(void)
373377
GPIO13 | GPIO14 | GPIO15);
374378
gpio_set_af(GPIOB, GPIO_AF12, GPIO13 | GPIO14 | GPIO15);
375379

380+
desig_get_unique_id_as_string(usb_serial_number, sizeof(usb_serial_number));
381+
376382
/* Button pin */
377383
gpio_mode_setup(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO0);
378384

379385
usbd_dev = usbd_init(&otghs_usb_driver, &dev, &config,
380-
usb_strings, 2,
386+
usb_strings, 3,
381387
usbd_control_buffer, sizeof(usbd_control_buffer));
382388

383389
usbd_register_set_config_callback(usbd_dev, usbmidi_set_config);

0 commit comments

Comments
 (0)