From dbf2b1ca26abb04be6f6d2224343c57c164da6b9 Mon Sep 17 00:00:00 2001 From: Rowan Decker Date: Sun, 8 Mar 2015 16:59:34 -0700 Subject: [PATCH] Set DFU bootloader name Fixes #22 Each (dfu) interface may have more than one a ltsetting each with their own index and name. According to the DFU_1.1 pdf section 4.2.3, "* Alternate settings can be used by an application to access additional memory segments. In this case, it is suggested that each alternate setting employ a string descriptor to indicate the target memory segment; e.g., 'EEPROM'." Whether or not we end up using multiple memory segments it is still good to have a descriptive name incase there are other dfu devices connected. --- Bootloader/_buildvars.h | 1 + Bootloader/dfu.desc.c | 3 ++- Lib/CMake/arm.cmake | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Bootloader/_buildvars.h b/Bootloader/_buildvars.h index 17a3557..08d1a7e 100644 --- a/Bootloader/_buildvars.h +++ b/Bootloader/_buildvars.h @@ -32,6 +32,7 @@ #define STR_MANUFACTURER u"Kiibohd" #define STR_PRODUCT u"Kiibohd DFU Bootloader" #define STR_SERIAL u"@CHIP@" +#define STR_ALTNAME u"@BOOT_DFU_ALTNAME@" // Mac OS-X and Linux automatically load the correct drivers. On diff --git a/Bootloader/dfu.desc.c b/Bootloader/dfu.desc.c index 5d7d69c..52377ea 100644 --- a/Bootloader/dfu.desc.c +++ b/Bootloader/dfu.desc.c @@ -50,7 +50,7 @@ static const struct usb_config_1 usb_config_1 = { .bInterfaceClass = USB_DEV_CLASS_APP, .bInterfaceSubClass = USB_DEV_SUBCLASS_APP_DFU, .bInterfaceProtocol = USB_DEV_PROTO_DFU_DFU, - .iInterface = 0 + .iInterface = 4 }, .dfu = { @@ -101,6 +101,7 @@ static const struct usb_desc_string_t * const dfu_device_str_desc[] = { USB_DESC_STRING(STR_MANUFACTURER), USB_DESC_STRING(STR_PRODUCT), USB_DESC_STRING(STR_SERIAL), + USB_DESC_STRING(STR_ALTNAME), NULL }; diff --git a/Lib/CMake/arm.cmake b/Lib/CMake/arm.cmake index b468ae2..3efbe7c 100644 --- a/Lib/CMake/arm.cmake +++ b/Lib/CMake/arm.cmake @@ -113,6 +113,7 @@ if ( "${CHIP}" MATCHES "mk20dx128vlf5" OR "${CHIP}" MATCHES "mk20dx256vlh7" ) set( PRODUCT_ID "0xB04D" ) set( BOOT_VENDOR_ID "0x1C11" ) set( BOOT_PRODUCT_ID "0xB007" ) + set( BOOT_DFU_ALTNAME "Kiibohd DFU" ) set( DFU 1 ) message( "dfu" ) elseif ( "${CHIP}" MATCHES "mk20dx128" OR "${CHIP}" MATCHES "mk20dx256" )