From 99b3deba6713f9c70ca37cff408799b6bc1354aa Mon Sep 17 00:00:00 2001 From: Jacob Alexander Date: Fri, 1 Feb 2013 20:30:14 -0500 Subject: [PATCH] Completing CMake variable generation for USB parameters (AVR Support) - Had to add the iSerialNumber parameter to the AVR USB descriptor - Removed a faulty pack command for avr-gcc that is not required --- CMakeLists.txt | 4 +-- Lib/_buildvars.h | 45 +++++++++++++++++++++++++++++++ USB/pjrc/arm/usb_desc.h | 4 --- USB/pjrc/avr/usb_keyboard_debug.c | 11 +++++--- USB/pjrc/avr/usb_keyboard_debug.h | 1 + avr.cmake | 2 +- setup.cmake | 2 +- 7 files changed, 58 insertions(+), 11 deletions(-) create mode 100644 Lib/_buildvars.h diff --git a/CMakeLists.txt b/CMakeLists.txt index c361cd0..d52b39e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,8 +27,8 @@ include( AddFileDependencies ) #| "avr" # Teensy++ 1.0 #| "avr" # Teensy++ 2.0 #| "arm" # Teensy 3.0 -set( COMPILER_FAMILY "arm" ) -#set( COMPILER_FAMILY "avr" ) +#set( COMPILER_FAMILY "arm" ) +set( COMPILER_FAMILY "avr" ) message( STATUS "Compiler Family:" ) message( "${COMPILER_FAMILY}" ) diff --git a/Lib/_buildvars.h b/Lib/_buildvars.h new file mode 100644 index 0000000..7a8c864 --- /dev/null +++ b/Lib/_buildvars.h @@ -0,0 +1,45 @@ +/* Copyright (C) 2013 by Jacob Alexander + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef __buildvars_h +#define __buildvars_h + +// ----- Includes ----- + + + +// ----- Defines ----- + +// You can change these to give your code its own name. +#define STR_MANUFACTURER L"@MANUFACTURER@" +#define STR_PRODUCT L"Keyboard - @ScanModule@ @MacroModule@ @USBModule@ @DebugModule@" +#define STR_SERIAL L"@GitLastCommitDate@" + + +// Mac OS-X and Linux automatically load the correct drivers. On +// Windows, even though the driver is supplied by Microsoft, an +// INF file is needed to load the driver. These numbers need to +// match the INF file. +#define VENDOR_ID @VENDOR_ID@ +#define PRODUCT_ID @PRODUCT_ID@ + +#endif + diff --git a/USB/pjrc/arm/usb_desc.h b/USB/pjrc/arm/usb_desc.h index a45ea76..dcd85cc 100644 --- a/USB/pjrc/arm/usb_desc.h +++ b/USB/pjrc/arm/usb_desc.h @@ -23,10 +23,6 @@ #define DEVICE_CLASS 0xEF #define DEVICE_SUBCLASS 0x02 #define DEVICE_PROTOCOL 0x01 -#define MANUFACTURER_NAME {'T','e','e','n','s','y','d','u','i','n','o'} -#define MANUFACTURER_NAME_LEN 11 -#define PRODUCT_NAME {'S','e','r','i','a','l','/','K','e','y','b','o','a','r','d','/','M','o','u','s','e','/','J','o','y','s','t','i','c','k'} -#define PRODUCT_NAME_LEN 30 #define EP0_SIZE 64 #define NUM_ENDPOINTS 15 #define NUM_INTERFACE 5 diff --git a/USB/pjrc/avr/usb_keyboard_debug.c b/USB/pjrc/avr/usb_keyboard_debug.c index 5e283ab..3a792cf 100644 --- a/USB/pjrc/avr/usb_keyboard_debug.c +++ b/USB/pjrc/avr/usb_keyboard_debug.c @@ -94,7 +94,7 @@ static const uint8_t PROGMEM device_descriptor[] = { 0x00, 0x01, // bcdDevice 1, // iManufacturer 2, // iProduct - 0, // iSerialNumber + 3, // iSerialNumber 1 // bNumConfigurations }; @@ -239,6 +239,11 @@ static const struct usb_string_descriptor_struct PROGMEM string2 = { 3, STR_PRODUCT }; +static const struct usb_string_descriptor_struct PROGMEM string3 = { + sizeof(STR_SERIAL), + 3, + STR_SERIAL +}; // This table defines which descriptor data is sent for each specific // request from the host (in wValue and wIndex). @@ -256,7 +261,8 @@ static const struct descriptor_list_struct { {0x2100, DEBUG_INTERFACE, config1_descriptor+DEBUG_HID_DESC_OFFSET, 9}, {0x0300, 0x0000, (const uint8_t *)&string0, 4}, {0x0301, 0x0409, (const uint8_t *)&string1, sizeof(STR_MANUFACTURER)}, - {0x0302, 0x0409, (const uint8_t *)&string2, sizeof(STR_PRODUCT)} + {0x0302, 0x0409, (const uint8_t *)&string2, sizeof(STR_PRODUCT)}, + {0x0303, 0x0409, (const uint8_t *)&string3, sizeof(STR_SERIAL)} }; #define NUM_DESC_LIST (sizeof(descriptor_list)/sizeof(struct descriptor_list_struct)) @@ -697,4 +703,3 @@ ISR(USB_COM_vect) UECONX = (1<