]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
CMake generated strings that configure the USB info section
authorJacob Alexander <triplehaata@gmail.com>
Sat, 2 Feb 2013 01:02:55 +0000 (20:02 -0500)
committerJacob Alexander <triplehaata@gmail.com>
Sat, 2 Feb 2013 01:02:55 +0000 (20:02 -0500)
- Defined Manufacturer name
- Product name now references each of the selected modules
- Serial number refers to the last commit date, branch, and whether modified since the last commit

CMakeLists.txt
USB/pjrc/arm/usb_desc.c
USB/pjrc/usb_com.h
arm.cmake
avr.cmake
setup.cmake

index 01a31813e473086d88407c244fdb72782dafe85e..c361cd0d12d021668b0ed759ecadf449cde01a01 100644 (file)
@@ -74,6 +74,9 @@ set( SRCS
        ${DEBUG_SRCS}
 )
 
+#| Directories to include by default
+include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} )
+
 
 
 ###
index 99c94bd13d9cd69e8c7bb577867c6356098b2a66..9fe82ec59dd1e6012f2b71f3549befd38b57ab93 100644 (file)
@@ -408,19 +408,19 @@ static struct usb_string_descriptor_struct string0 = {
 };
 
 static struct usb_string_descriptor_struct string1 = {
-        2 + MANUFACTURER_NAME_LEN * 2,
+        sizeof(STR_MANUFACTURER),
         3,
-        MANUFACTURER_NAME
+        STR_MANUFACTURER
 };
 static struct usb_string_descriptor_struct string2 = {
-       2 + PRODUCT_NAME_LEN * 2,
+       sizeof(STR_PRODUCT),
         3,
-        PRODUCT_NAME
+        STR_PRODUCT
 };
 static struct usb_string_descriptor_struct string3 = {
-        12,
+       sizeof(STR_SERIAL),
         3,
-        {'1','2','3','4','5'}
+       STR_SERIAL
 };
 
 
@@ -447,9 +447,9 @@ const usb_descriptor_list_t usb_descriptor_list[] = {
         {0x2100, JOYSTICK_INTERFACE, config_descriptor+JOYSTICK_DESC_OFFSET, 9},
 #endif
         {0x0300, 0x0000, (const uint8_t *)&string0, 4},
-        {0x0301, 0x0409, (const uint8_t *)&string1, 2 + MANUFACTURER_NAME_LEN * 2},
-        {0x0302, 0x0409, (const uint8_t *)&string2, 2 + PRODUCT_NAME_LEN * 2},
-        {0x0303, 0x0409, (const uint8_t *)&string3, 12},
+        {0x0301, 0x0409, (const uint8_t *)&string1, sizeof(STR_MANUFACTURER)},
+        {0x0302, 0x0409, (const uint8_t *)&string2, sizeof(STR_PRODUCT)},
+        {0x0303, 0x0409, (const uint8_t *)&string3, sizeof(STR_SERIAL)},
        {0, 0, NULL, 0}
 };
 
index 73cb5440716ed9d744b63084062a3dbda0ebab69..f62e90c8c517010a0c19fc4b7e25ba972130b01d 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 by Jacob Alexander
+/* 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
@@ -28,6 +28,7 @@
 #include <stdint.h>
 
 // Local Includes
+#include <buildvars.h> // Defines USB Parameters, partially generated by CMake
 
 
 
 #define USB_MAX_KEY_SEND 6
 
 
-// You can change these to give your code its own name.
-// TODO Add to Teensy 3
-#define STR_MANUFACTURER       L"MfgName"
-#define STR_PRODUCT            L"Keyboard"
-
-
-// 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              0x16C0
-#define PRODUCT_ID             0x0487 // New ID for Teensy 3
-//#define PRODUCT_ID           0x047D // Old ID for Teensy 2
-
-
 
 // ----- Variables -----
 
index f84fb256b5269a2a538c13b42012e2d49708ecb8..025cbe2eafa4f269a43ee60f656d4fee11b03d0e 100644 (file)
--- a/arm.cmake
+++ b/arm.cmake
@@ -62,6 +62,11 @@ message( STATUS "Compiler Source Files:" )
 message( "${COMPILER_SRCS}" )
 
 
+#| USB Defines
+set( VENDOR_ID  "0x16C0" )
+set( PRODUCT_ID "0x0487" )
+
+
 #| Compiler flag to set the C Standard level.
 #|     c89   = "ANSI" C
 #|     gnu89 = c89 plus GCC extensions
@@ -77,7 +82,8 @@ set( WARN "-Wall -g" )
 
 #| Tuning Options
 #|  -f...:        tuning, see GCC manual
-set( TUNING "-mthumb -nostdlib -fdata-sections -ffunction-sections" )
+#| NOTE: -fshort-wchar is specified to allow USB strings be passed conveniently
+set( TUNING "-mthumb -nostdlib -fdata-sections -ffunction-sections -fshort-wchar" )
 
 
 #| Optimization level, can be [0, 1, 2, 3, s]. 
@@ -105,11 +111,11 @@ set( GENDEPFLAGS "-MMD" )
 
 
 #| Compiler Flags
-add_definitions( "-mcpu=${CPU} -DF_CPU=${F_CPU} -D_${CHIP}_=1 -O${OPT} ${TUNING} ${WARN} ${CSTANDARD} ${GENDEPFLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}" )
+add_definitions( "-mcpu=${CPU} -DF_CPU=${F_CPU} -D_${CHIP}_=1 -O${OPT} ${TUNING} ${WARN} ${CSTANDARD} ${GENDEPFLAGS}" )
 
 
 #| Linker Flags
-set( LINKER_FLAGS "-mcpu=${CPU} -Wl,-Map=${TARGET}.map,--cref -Wl,--gc-sections -mthumb -T${CMAKE_CURRENT_SOURCE_DIR}/Lib/${CHIP}.ld" )
+set( LINKER_FLAGS "-mcpu=${CPU} -Wl,-Map=${TARGET}.map,--cref -Wl,--gc-sections -mthumb -Wl,--no-wchar-size-warning -T${CMAKE_CURRENT_SOURCE_DIR}/Lib/${CHIP}.ld" )
 
 
 #| Hex Flags (XXX, CMake seems to have issues if you quote the arguments for the custom commands...)
index 43e1880aee71496ac625fded6738705f84032130..7bed316539c65ae266a7850d3482a29657beed03 100644 (file)
--- a/avr.cmake
+++ b/avr.cmake
@@ -51,6 +51,11 @@ set( COMPILER_SRCS
 )
 
 
+#| USB Defines
+set( VENDOR_ID  "0x16C0" )
+set( PRODUCT_ID "0x047D" )
+
+
 #| Compiler flag to set the C Standard level.
 #|     c89   = "ANSI" C
 #|     gnu89 = c89 plus GCC extensions
@@ -66,7 +71,8 @@ set( WARN "-Wall -Wstrict-prototypes" )
 
 #| Tuning Options
 #|  -f...:        tuning, see GCC manual and avr-libc documentation
-set( TUNING "-funsigned-char -funsigned-bitfields -ffunction-sections -fpack-struct -fshort-enums" )
+#| NOTE: -fshort-wchar is specified to allow USB strings be passed conveniently
+set( TUNING "-funsigned-char -funsigned-bitfields -ffunction-sections -fpack-struct -fshort-enums -fshort-wchar" )
 
 
 #| Optimization level, can be [0, 1, 2, 3, s]. 
@@ -94,7 +100,7 @@ set( GENDEPFLAGS "-MMD -MP" )
 
 
 #| Compiler Flags
-add_definitions( "-mmcu=${MCU} -DF_CPU=${F_CPU} -D_${MCU}_=1 -O${OPT} ${TUNING} ${WARN} ${CSTANDARD} ${GENDEPFLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}" )
+add_definitions( "-mmcu=${MCU} -DF_CPU=${F_CPU} -D_${MCU}_=1 -O${OPT} ${TUNING} ${WARN} ${CSTANDARD} ${GENDEPFLAGS}" )
 
 
 #| Linker Flags
index 90340bb500b0bf5c8220658389ec6a4e973056ea..4971e5ed17f32c0d54616ab7a853ed6afa947e7e 100644 (file)
@@ -142,3 +142,60 @@ message( "${USB_SRCS}" )
 message( STATUS "Detected Debug Module Source Files:" )
 message( "${DEBUG_SRCS}" )
 
+
+
+###
+# Generate USB Defines
+#
+
+#| Manufacturer name
+set( MANUFACTURER "Kiibohd" )
+
+
+#| Serial Number
+#| Attempt to call Git to get the branch, last commit date, and whether code modified since last commit
+
+#| Modified
+#| Takes a bit of work to extract the "M " using CMake, and not using it if there are not modifications
+execute_process( COMMAND git status -s -uno --porcelain
+       WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+       OUTPUT_VARIABLE Git_Modified_INFO
+       ERROR_QUIET
+       OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+string( LENGTH "${Git_Modified_INFO}" Git_Modified_LENGTH )
+if ( ${Git_Modified_LENGTH} GREATER 2 )
+       string( SUBSTRING "${Git_Modified_INFO}" 1 2 Git_Modified_Flag_INFO )
+endif ( ${Git_Modified_LENGTH} GREATER 2 )
+
+#| Branch
+execute_process( COMMAND git rev-parse --abbrev-ref HEAD
+       WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+       OUTPUT_VARIABLE Git_Branch_INFO
+       ERROR_QUIET
+       OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+#| Date
+execute_process( COMMAND git show -s --format=%ci
+       WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+       OUTPUT_VARIABLE Git_Date_INFO
+       RESULT_VARIABLE Git_RETURN
+       ERROR_QUIET
+       OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+
+#| Only use Git variables if we were successful in calling the commands
+if ( ${Git_RETURN} EQUAL 0 )
+       set( GitLastCommitDate "${Git_Modified_Flag_INFO}${Git_Branch_INFO} - ${Git_Date_INFO}" )
+else ( ${Git_RETURN} EQUAL 0 )
+       # TODO Figure out a good way of finding the current branch + commit date + modified
+       set( GitLastCommitDate "Pft...Windows Build" )
+endif ( ${Git_RETURN} EQUAL 0 )
+
+
+#| Uses CMake variables to include as defines
+#| Primarily for USB configuration
+configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Lib/_buildvars.h buildvars.h )
+