forked from mfulz_github/qmk_firmware
		
	usb_hid: workaround for compile on Windows.
This commit is contained in:
		
							parent
							
								
									c77c5043a1
								
							
						
					
					
						commit
						232ab308e3
					
				| @ -43,11 +43,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| #define TIMER_DIFF_8(a, b)      TIMER_DIFF(a, b, UINT8_MAX) | ||||
| #define TIMER_DIFF_16(a, b)     TIMER_DIFF(a, b, UINT16_MAX) | ||||
| #define TIMER_DIFF_32(a, b)     TIMER_DIFF(a, b, UINT32_MAX) | ||||
| #define TIMER_DIFF_RAW(a, b)    TIMER_DIFF_8(a, b) | ||||
| 
 | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| extern volatile uint32_t timer_count; | ||||
| 
 | ||||
| 
 | ||||
| @ -57,6 +59,7 @@ uint16_t timer_read(void); | ||||
| uint32_t timer_read32(void); | ||||
| uint16_t timer_elapsed(uint16_t last); | ||||
| uint32_t timer_elapsed32(uint32_t last); | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| @ -116,7 +116,6 @@ CONFIG_H = config.h | ||||
| # Search Path
 | ||||
| VPATH += $(TARGET_DIR) | ||||
| VPATH += $(TOP_DIR) | ||||
| #VPATH += $(TOP_DIR)/common
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -65,7 +65,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| 
 | ||||
| // Layers to switch by holding Fn key(0-7)
 | ||||
| static const uint8_t PROGMEM fn_layer[] =   { 5,       6,       0,       0,       0,       0,       0,       0     }; | ||||
| static const uint8_t PROGMEM fn_layer[] =   { 5,       6,       5,       0,       0,       0,       0,       0     }; | ||||
| 
 | ||||
| // Codes to register by clicking Fn key(0-7)
 | ||||
| static const uint8_t PROGMEM fn_keycode[] = { KB_SCLN, KB_SLSH, KB_NO,   KB_NO,   KB_NO,   KB_NO,   KB_NO,   KB_NO }; | ||||
| @ -90,12 +90,12 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|      * / = Fn1(to Layer 6) | ||||
|      */ | ||||
|     KEYMAP( | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,BRK, | ||||
|     GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS, | ||||
|     ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,     DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN0, QUOT,     ENT,                         P4,  P5,  P6,  PPLS, | ||||
|     LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN0, QUOT,     ENT,                         P4,  P5,  P6,  PPLS, | ||||
|     LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN1,           RSFT,          UP,           P1,  P2,  P3, | ||||
|     LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT | ||||
|     FN2, LGUI,LALT,          SPC,                     RALT,FN2, FN2, GRV,      LEFT,DOWN,RGHT,    P0,       PDOT,PENT | ||||
|     ), | ||||
| 
 | ||||
|     /* 1: plain Qwerty without layer switching
 | ||||
| @ -112,7 +112,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|      * `-----------------------------------------------------------' | ||||
|      */ | ||||
|     KEYMAP( | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,BRK, | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS, | ||||
|     GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,     DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,                         P4,  P5,  P6,  PPLS, | ||||
| @ -134,7 +134,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|      * `----------------------------------------------------------' | ||||
|      */ | ||||
|     KEYMAP( | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,BRK, | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS, | ||||
|     GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS,     DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,                         P4,  P5,  P6,  PPLS, | ||||
| @ -156,7 +156,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|      * `-----------------------------------------------------------' | ||||
|      */ | ||||
|     KEYMAP( | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,BRK, | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS, | ||||
|     GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS,     DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,                         P4,  P5,  P6,  PPLS, | ||||
| @ -178,7 +178,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|      * `-----------------------------------------------------------' | ||||
|      */ | ||||
|     KEYMAP( | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,BRK, | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS, | ||||
|     GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS,     DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,                         P4,  P5,  P6,  PPLS, | ||||
| @ -202,12 +202,12 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|      * Vo = Volume, Mut = Mute | ||||
|      */ | ||||
|     KEYMAP( | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,BRK, | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F8,  F10, F11, F12, BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     TAB, WH_L,WH_D,MS_U,WH_U,WH_R,WH_L,WH_D,WH_U,WH_R,NO,  NO,  NO,  BSLS,     DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     CAPS,NO,  MS_L,MS_D,MS_R,NO,  MS_L,MS_D,MS_U,MS_R,FN0, NO,       ENT,                         P4,  P5,  P6,  PPLS, | ||||
|     LSFT,VOLD,VOLU,MUTE,BTN2,BTN3,BTN2,BTN1,VOLD,VOLU,MUTE,          RSFT,          UP,           P1,  P2,  P3, | ||||
|     LCTL,LGUI,LALT,          BTN1,                    RALT,RGUI,APP, RCTL,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS, | ||||
|     GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F8,  F10, F11, F12, DEL,      INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     CAPS,NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,WH_U,WH_R,PSCR,SLCK,PAUS,INS,      DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     LCTL,VOLD,VOLU,MUTE,NO,  NO,  MS_L,MS_D,MS_U,MS_R,FN0, NO,       ENT,                         P4,  P5,  P6,  PPLS, | ||||
|     LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,NO,  NO,  NO,            RSFT,          UP,           P1,  P2,  P3, | ||||
|     FN2, LGUI,LALT,          BTN1,                    RALT,FN2, FN2, RCTL,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT | ||||
|     ), | ||||
| 
 | ||||
|     /* 6: Cursor keys
 | ||||
| @ -224,11 +224,11 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|      * `-----------------------------------------------------------' | ||||
|      */ | ||||
|     KEYMAP( | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,BRK, | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F8,  F10, F11, F12, BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     TAB, NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, NO,  NO,  NO,  BSLS,     DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     CAPS,NO,  NO,  NO,  NO,  NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,       ENT,                         P4,  P5,  P6,  PPLS, | ||||
|     LSFT,VOLD,VOLU,MUTE,NO,  NO,  HOME,PGDN,PGUP,END, FN1,           RSFT,          UP,           P1,  P2,  P3, | ||||
|     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS, | ||||
|     GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F8,  F10, F11, F12, DEL,      INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS, | ||||
|     CAPS,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, NO,  NO,  NO,  INS,      DEL, END, PGDN,    P7,  P8,  P9, | ||||
|     LCTL,NO,  NO,  NO,  NO,  NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,       ENT,                         P4,  P5,  P6,  PPLS, | ||||
|     LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN1,           RSFT,          UP,           P1,  P2,  P3, | ||||
|     LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT | ||||
|     ), | ||||
| }; | ||||
|  | ||||
| @ -2,7 +2,6 @@ | ||||
| #include <avr/wdt.h> | ||||
| #include <avr/power.h> | ||||
| #include <util/delay.h> | ||||
| #include <Arduino.h> | ||||
| 
 | ||||
| // USB HID host
 | ||||
| #include "Usb.h" | ||||
| @ -13,6 +12,7 @@ | ||||
| // LUFA
 | ||||
| #include "lufa.h" | ||||
| 
 | ||||
| #include "timer.h" | ||||
| #include "debug.h" | ||||
| #include "keyboard.h" | ||||
| 
 | ||||
| @ -71,19 +71,31 @@ int main(void) | ||||
|     LUFA_setup(); | ||||
|     sei(); | ||||
| 
 | ||||
| uint8_t ret; | ||||
|     // wait for startup of sendchar routine
 | ||||
|     while (USB_DeviceState != DEVICE_STATE_Configured) ; | ||||
|     if (debug_enable) { | ||||
|         _delay_ms(1000); | ||||
|     } | ||||
| 
 | ||||
|     debug("init: start\n"); | ||||
|     HID_setup(); | ||||
|      | ||||
|     debug("init: done\n"); | ||||
| 
 | ||||
| uint16_t timer; | ||||
| // to see loop pulse with oscillo scope
 | ||||
| DDRF = (1<<7); | ||||
|     for (;;) { | ||||
| PORTF ^= (1<<7); | ||||
|         keyboard_proc(); | ||||
| 
 | ||||
| timer = timer_read(); | ||||
|         usb_host.Task(); | ||||
| timer = timer_elapsed(timer); | ||||
| if (timer > 100) { | ||||
|     debug("host.Task: "); debug_hex16(timer);  debug("\n"); | ||||
| } | ||||
| 
 | ||||
| #if !defined(INTERRUPT_CONTROL_ENDPOINT) | ||||
|         // LUFA Task for control request
 | ||||
|  | ||||
| @ -1,56 +0,0 @@ | ||||
| # Target file name (without extension).
 | ||||
| TARGET = hbkb | ||||
| 
 | ||||
| # Directory common source filess exist
 | ||||
| TOP_DIR = ../.. | ||||
| 
 | ||||
| # Directory keyboard dependent files exist
 | ||||
| TARGET_DIR = . | ||||
| 
 | ||||
| # keyboard dependent files
 | ||||
| SRC =	main.c \
 | ||||
| 	keymap.c \
 | ||||
| 	matrix.c \
 | ||||
| 	led.c | ||||
| 
 | ||||
| CONFIG_H = config.h | ||||
| 
 | ||||
| 
 | ||||
| # MCU name, you MUST set this to match the board you are using
 | ||||
| # type "make clean" after changing this, so all files will be rebuilt
 | ||||
| #MCU = at90usb162       # Teensy 1.0
 | ||||
| MCU = atmega32u4       # Teensy 2.0 | ||||
| #MCU = at90usb646       # Teensy++ 1.0
 | ||||
| #MCU = at90usb1286      # Teensy++ 2.0
 | ||||
| 
 | ||||
| 
 | ||||
| # Processor frequency.
 | ||||
| #   Normally the first thing your program should do is set the clock prescaler,
 | ||||
| #   so your program will run at the correct speed.  You should also set this
 | ||||
| #   variable to same clock speed.  The _delay_ms() macro uses this, and many
 | ||||
| #   examples use this variable to calculate timings.  Do not add a "UL" here.
 | ||||
| F_CPU = 16000000 | ||||
| 
 | ||||
| 
 | ||||
| # Build Options
 | ||||
| #   comment out to disable the options.
 | ||||
| #
 | ||||
| MOUSEKEY_ENABLE = yes	# Mouse keys | ||||
| #PS2_MOUSE_ENABLE = yes	# PS/2 mouse(TrackPoint) support
 | ||||
| EXTRAKEY_ENABLE = yes	# Audio control and System control | ||||
| #NKRO_ENABLE = yes	# USB Nkey Rollover
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #---------------- Programming Options --------------------------
 | ||||
| #PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 | ||||
| PROGRAM_CMD = /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) erase && \
 | ||||
| 	      /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) flash $(TARGET).hex && \
 | ||||
| 	      /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) start | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| include $(TOP_DIR)/protocol/pjrc.mk | ||||
| include $(TOP_DIR)/protocol.mk | ||||
| include $(TOP_DIR)/common.mk | ||||
| include $(TOP_DIR)/rules.mk | ||||
| @ -65,3 +65,9 @@ VPATH += $(TOP_DIR)/$(ARDUINO_CORES_DIR) | ||||
| 
 | ||||
| # for #include "pins_arduino.h"
 | ||||
| VPATH += $(TOP_DIR)/$(ARDUINO_DIR)/variants/leonardo | ||||
| 
 | ||||
| # ad hoc workaround for compile problem on Windows:
 | ||||
| #    Windows doesn't know difference between common/print.h and arduino/Print.h.
 | ||||
| #    On Linux no problem.
 | ||||
| #    Change file name common/print.h to console.h ?
 | ||||
| VPATH := $(TOP_DIR)/common $(VPATH) | ||||
|  | ||||
							
								
								
									
										10
									
								
								protocol/usb_hid/README
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										10
									
								
								protocol/usb_hid/README
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @ -27,6 +27,11 @@ Restriction and Bug | ||||
| ------------------- | ||||
| Not statble yet. | ||||
| 
 | ||||
| Switching power on VBUS: | ||||
|     To power reset device. | ||||
|     http://www.circuitsathome.com/camera-control/simulating-cable-disconnect-on-usb-host-shield-2-0 | ||||
|     This is needed for a device which are not initilized with 'USB Bus Reset'(long SE0) | ||||
| 
 | ||||
| Can't bus-reset a keyboard which already attached on bus properly. | ||||
|     Slow start up of Leonardo's bootloader causes this? | ||||
|     Need to unplug/plug a keyboard after firmware starts up. | ||||
| @ -34,3 +39,8 @@ Can't bus-reset a keyboard which already attached on bus properly. | ||||
| 
 | ||||
| Keyboard with other endpoints than boot keyboard may go wrong. | ||||
|     On my keyboard with mouse key the converter locks up when using mouse key function. | ||||
| 
 | ||||
| Can't compile on Windows filesystem. | ||||
|     On Linux no problem. | ||||
|     Windows doesn't know difference between common/print.h and arduino/Print.h. | ||||
|     Change file name common/print.h to console.h ? | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 tmk
						tmk