From 359b68d35f0763ab0cafa2fb800e0a3497291f95 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 7 Mar 2013 03:30:08 +0900 Subject: Add eeconfig.c - eeprom stored paramerters --- common/command.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'common/command.c') diff --git a/common/command.c b/common/command.c index 202d531fd..40932e050 100644 --- a/common/command.c +++ b/common/command.c @@ -27,6 +27,7 @@ along with this program. If not, see . #include "keyboard.h" #include "bootloader.h" #include "layer_switch.h" +#include "eeconfig.h" #include "command.h" #ifdef MOUSEKEY_ENABLE @@ -108,6 +109,7 @@ static void command_common_help(void) print("v: print device version & info\n"); print("t: print timer count\n"); print("s: print status\n"); + print("e: print eeprom config\n"); #ifdef NKRO_ENABLE print("n: toggle NKRO\n"); #endif @@ -121,10 +123,30 @@ static void command_common_help(void) print("Paus: jump to bootloader\n"); } +static void print_eeprom_config(void) +{ + uint8_t eebyte; + + print("magic: "); print_hex16(eeprom_read_word((uint16_t)0)); print("\n"); + + eebyte = eeconfig_read_debug(); + print("debug: "); print_hex8(eebyte); print("\n"); + + eebyte = eeconfig_read_defalt_layer(); + print("defalt_layer: "); print_hex8(eebyte); print("\n"); + + eebyte = eeconfig_read_modifier(); + print("modifiers: "); print_hex8(eebyte); print("\n"); +} + static bool command_common(uint8_t code) { static host_driver_t *host_driver = 0; switch (code) { + case KC_E: + print("eeprom config\n"); + print_eeprom_config(); + break; case KC_CAPSLOCK: if (host_get_driver()) { host_driver = host_get_driver(); -- cgit v1.2.3-70-g09d2 From 4d64fd8faa8b1a0ceb9019446ba6915aaf1812ea Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 9 Mar 2013 11:22:27 +0900 Subject: Add bootmagic.c and fix bootloader_jump --- common.mk | 1 + common/bootloader.c | 100 +++++++++++++++++++++++++++++++++++++------------ common/bootmagic.c | 45 ++++++++++++++++++++++ common/bootmagic.h | 39 +++++++++++++++++++ common/command.c | 4 +- common/keyboard.c | 25 +------------ keyboard/gh60/keymap.c | 6 ++- protocol/lufa.mk | 4 +- protocol/pjrc.mk | 8 +++- 9 files changed, 178 insertions(+), 54 deletions(-) create mode 100644 common/bootmagic.c create mode 100644 common/bootmagic.h (limited to 'common/command.c') diff --git a/common.mk b/common.mk index a99e335ee..2735f5bec 100644 --- a/common.mk +++ b/common.mk @@ -10,6 +10,7 @@ SRC += $(COMMON_DIR)/host.c \ $(COMMON_DIR)/print.c \ $(COMMON_DIR)/debug.c \ $(COMMON_DIR)/bootloader.c \ + $(COMMON_DIR)/bootmagic.c \ $(COMMON_DIR)/eeconfig.c \ $(COMMON_DIR)/util.c diff --git a/common/bootloader.c b/common/bootloader.c index 6e04efbbd..77fa1b30a 100644 --- a/common/bootloader.c +++ b/common/bootloader.c @@ -1,15 +1,16 @@ +#include +#include #include #include +#include #include #include "bootloader.h" -/* Start Bootloader from Application - * See - * http://www.pjrc.com/teensy/jump_to_bootloader.html - * http://www.fourwalledcubicle.com/files/LUFA/Doc/120219/html/_page__software_bootloader_start.html - */ +#ifdef PROTOCOL_LUFA +#include +#endif + -// TODO: support usbasp /* Boot Section Size in bytes * Teensy halfKay 512 * Atmel DFU loader 4096 @@ -18,28 +19,82 @@ #ifndef BOOT_SIZE #define BOOT_SIZE 512 #endif - #define FLASH_SIZE (FLASHEND + 1) -#define BOOTLOADER_START (FLASHEND - BOOT_SIZE) +#define BOOTLOADER_START (FLASH_SIZE - BOOT_SIZE) + +/* + * Entering the Bootloader via Software + * http://www.fourwalledcubicle.com/files/LUFA/Doc/120730/html/_page__software_bootloader_start.html + */ +#define BOOTLOADER_RESET_KEY 0xB007B007 +uint32_t reset_key __attribute__ ((section (".noinit"))); + +/* initialize MCU status by watchdog reset */ void bootloader_jump(void) { +#ifdef PROTOCOL_LUFA + USB_Disable(); cli(); + _delay_ms(2000); +#endif - // - //Teensy - // -#if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) - // disable watchdog, if enabled - // disable all peripherals +#ifdef PROTOCOL_PJRC + cli(); UDCON = 1; - USBCON = (1< +#include +#include +#include "matrix.h" +#include "keymap.h" +#include "eeconfig.h" +#include "bootloader.h" +#include "bootmagic.h" + + +void bootmagic(void) +{ + /* do scans in case of bounce */ + uint8_t scan = 100; + while (scan--) { matrix_scan(); _delay_ms(1); } + + if (!BOOTMAGIC_IS_ENABLE()) { return; } + + if (bootmagic_scan_keycode(BOOTMAGIC_BOOTLOADER_KEY)) { + bootloader_jump(); + } + + if (bootmagic_scan_keycode(BOOTMAGIC_DEBUG_ENABLE_KEY)) { + eeconfig_write_debug(eeconfig_read_debug() ^ EECONFIG_DEBUG_ENABLE); + } + + if (bootmagic_scan_keycode(BOOTMAGIC_EEPROM_CLEAR_KEY)) { + eeconfig_init(); + } +} + +bool bootmagic_scan_keycode(uint8_t keycode) +{ + for (uint8_t r = 0; r < MATRIX_ROWS; r++) { + matrix_row_t matrix_row = matrix_get_row(r); + for (uint8_t c = 0; c < MATRIX_COLS; c++) { + if (matrix_row & ((matrix_row_t)1<. #include "command.h" #include "util.h" #include "sendchar.h" -#include "bootloader.h" +#include "bootmagic.h" #ifdef MOUSEKEY_ENABLE #include "mousekey.h" #endif @@ -64,27 +64,7 @@ void keyboard_init(void) ps2_mouse_init(); #endif - /* matrix scan for boot magic keys */ -#ifdef DEBOUNCE - uint8_t scan = DEBOUNCE * 2; - while (scan--) { matrix_scan(); _delay_ms(1); } -#else - matrix_scan(); -#endif - - /* boot magic keys */ -#ifdef IS_BOOTMAGIC_BOOTLOADER - /* kick up bootloader */ - if (IS_BOOTMAGIC_BOOTLOADER()) bootloader_jump(); -#endif -#ifdef IS_BOOTMAGIC_DEBUG - if (IS_BOOTMAGIC_DEBUG()) { - eeconfig_write_debug(eeconfig_read_debug() ^ EECONFIG_DEBUG_ENABLE); - } -#endif -#ifdef IS_BOOTMAGIC_EEPROM_CLEAR - if (IS_BOOTMAGIC_EEPROM_CLEAR()) eeconfig_init(); -#endif + bootmagic(); if (eeconfig_initialized()) { uint8_t config; @@ -96,7 +76,6 @@ void keyboard_init(void) } else { eeconfig_init(); } - } /* diff --git a/keyboard/gh60/keymap.c b/keyboard/gh60/keymap.c index 1f5344d4c..d6af16961 100644 --- a/keyboard/gh60/keymap.c +++ b/keyboard/gh60/keymap.c @@ -231,7 +231,8 @@ uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) if (layer < OVERLAYS_SIZE) { return pgm_read_byte(&overlays[(layer)][(key.row)][(key.col)]); } else { - debug("key_to_keycode: overlay "); debug_dec(layer); debug(" is invalid.\n"); + // XXX: this may cuaes bootlaoder_jump incositent fail. + //debug("key_to_keycode: overlay "); debug_dec(layer); debug(" is invalid.\n"); return KC_TRANSPARENT; } } @@ -240,8 +241,9 @@ uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } else { + // XXX: this may cuaes bootlaoder_jump incositent fail. + //debug("key_to_keycode: base "); debug_dec(layer); debug(" is invalid.\n"); // fall back to layer 0 - debug("key_to_keycode: base "); debug_dec(layer); debug(" is invalid.\n"); return pgm_read_byte(&keymaps[0][(key.row)][(key.col)]); } } diff --git a/protocol/lufa.mk b/protocol/lufa.mk index 443b85344..8ea071afb 100644 --- a/protocol/lufa.mk +++ b/protocol/lufa.mk @@ -39,4 +39,6 @@ LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENAB OPT_DEFS += -DF_USB=$(F_USB)UL OPT_DEFS += -DARCH=ARCH_$(ARCH) OPT_DEFS += $(LUFA_OPTS) -OPT_DEFS += -DHOST_LUFA + +# This indicates using LUFA stack +OPT_DEFS += -DPROTOCOL_LUFA diff --git a/protocol/pjrc.mk b/protocol/pjrc.mk index cccdf6204..f5693ba99 100644 --- a/protocol/pjrc.mk +++ b/protocol/pjrc.mk @@ -1,7 +1,5 @@ PJRC_DIR = protocol/pjrc -OPT_DEFS += -DHOST_PJRC - SRC += $(PJRC_DIR)/main.c \ $(PJRC_DIR)/pjrc.c \ $(PJRC_DIR)/usb_keyboard.c \ @@ -19,3 +17,9 @@ endif # Search Path VPATH += $(TOP_DIR)/$(PJRC_DIR) + +# This indicates using LUFA stack +# TODO: remove HOST_PJRC +OPT_DEFS += -DHOST_PJRC +OPT_DEFS += -DPROTOCOL_PJRC + -- cgit v1.2.3-70-g09d2 From de8ef18a534163b40e307418b3af603142d5d6b0 Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 10 Mar 2013 19:22:54 +0900 Subject: Add KEYCONF to eeconfig.c --- common/bootmagic.c | 22 ++++++++++++++++++++++ common/bootmagic.h | 40 ++++++++++++++++++++++++++++++++++++++-- common/command.c | 4 ++-- common/eeconfig.c | 19 +++++++++---------- common/eeconfig.h | 21 ++++++++++++--------- 5 files changed, 83 insertions(+), 23 deletions(-) (limited to 'common/command.c') diff --git a/common/bootmagic.c b/common/bootmagic.c index 31b8ae5e6..46fbc180a 100644 --- a/common/bootmagic.c +++ b/common/bootmagic.c @@ -27,6 +27,28 @@ void bootmagic(void) if (bootmagic_scan_keycode(BOOTMAGIC_EEPROM_CLEAR_KEY)) { eeconfig_init(); } + + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_CONTROL_CPASLOCK)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_CONTROL_CAPSLOCK); + } + if (bootmagic_scan_keycode(BOOTMAGIC_CAPSLOCK_TO_CONTROL)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_CAPSLOCK_TO_CONTROL); + } + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_LALT_LGUI)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_LALT_LGUI); + } + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_RALT_RGUI)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_RALT_RGUI); + } + if (bootmagic_scan_keycode(BOOTMAGIC_NO_GUI)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_NO_GUI); + } + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_GRAVE_ESC)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_GRAVE_ESC); + } + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_BACKSLASH_BACKSPACE)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_BACKSLASH_BACKSPACE); + } } bool bootmagic_scan_keycode(uint8_t keycode) diff --git a/common/bootmagic.h b/common/bootmagic.h index 7aa224def..d32a5bef8 100644 --- a/common/bootmagic.h +++ b/common/bootmagic.h @@ -6,7 +6,7 @@ #define BOOTMAGIC_IS_ENABLE() true #endif -/* bootloader */ +/* kick up bootloader */ #ifndef BOOTMAGIC_BOOTLOADER_KEY #define BOOTMAGIC_BOOTLOADER_KEY KC_B #endif @@ -19,7 +19,42 @@ #define BOOTMAGIC_EEPROM_CLEAR_KEY KC_BSPACE #endif -/* change default layer */ +/* + * key configure + */ +/* swap control and capslock */ +#ifndef BOOTMAGIC_SWAP_CONTROL_CPASLOCK +#define BOOTMAGIC_SWAP_CONTROL_CPASLOCK KC_LCTRL +#endif +/* capslock to control */ +#ifndef BOOTMAGIC_CAPSLOCK_TO_CONTROL +#define BOOTMAGIC_CAPSLOCK_TO_CONTROL KC_CAPSLOCK +#endif +/* swap alt and gui */ +#ifndef BOOTMAGIC_SWAP_LALT_LGUI +#define BOOTMAGIC_SWAP_LALT_LGUI KC_LALT +#endif +/* swap alt and gui */ +#ifndef BOOTMAGIC_SWAP_RALT_RGUI +#define BOOTMAGIC_SWAP_RALT_RGUI KC_RALT +#endif +/* no gui */ +#ifndef BOOTMAGIC_NO_GUI +#define BOOTMAGIC_NO_GUI KC_LGUI +#endif +/* swap esc and grave */ +#ifndef BOOTMAGIC_SWAP_GRAVE_ESC +#define BOOTMAGIC_SWAP_GRAVE_ESC KC_GRAVE +#endif +/* swap backslash and backspace */ +#ifndef BOOTMAGIC_SWAP_BACKSLASH_BACKSPACE +#define BOOTMAGIC_SWAP_BACKSLASH_BACKSPACE KC_BSLASH +#endif + + +/* + * change default layer + */ #ifndef BOOTMAGIC_DEFAULT_LAYER_0_KEY #define BOOTMAGIC_DEFAULT_LAYER_0_KEY KC_0 #endif @@ -33,6 +68,7 @@ #define BOOTMAGIC_DEFAULT_LAYER_3_KEY KC_3 #endif + void bootmagic(void); bool bootmagic_scan_keycode(uint8_t keycode); diff --git a/common/command.c b/common/command.c index b82d1884c..cf8d969f8 100644 --- a/common/command.c +++ b/common/command.c @@ -133,8 +133,8 @@ static void print_eeprom_config(void) eebyte = eeconfig_read_defalt_layer(); print("defalt_layer: "); print_hex8(eebyte); print("\n"); - eebyte = eeconfig_read_modifier(); - print("modifiers: "); print_hex8(eebyte); print("\n"); + eebyte = eeconfig_read_keyconf(); + print("keyconf: "); print_hex8(eebyte); print("\n"); } static bool command_common(uint8_t code) diff --git a/common/eeconfig.c b/common/eeconfig.c index a5834aa2c..f536dc06c 100644 --- a/common/eeconfig.c +++ b/common/eeconfig.c @@ -6,11 +6,11 @@ void eeconfig_init(void) { - eeprom_write_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); - eeprom_write_byte(EECONFIG_DEBUG, 0); - eeprom_write_byte(EECONFIG_DEFAULT_LAYER, 0); - eeprom_write_byte(EECONFIG_MODIFIER, 0); - eeprom_write_byte(EECONFIG_MOUSEKEY_ACCEL, 0); + eeprom_write_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); + eeprom_write_byte(EECONFIG_DEBUG, 0); + eeprom_write_byte(EECONFIG_DEFAULT_LAYER, 0); + eeprom_write_byte(EECONFIG_KEYCONF, 0); + eeprom_write_byte(EECONFIG_MOUSEKEY_ACCEL, 0); } bool eeconfig_initialized(void) @@ -18,12 +18,11 @@ bool eeconfig_initialized(void) return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); } -uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG); } +uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG); } void eeconfig_write_debug(uint8_t val) { eeprom_write_byte(EECONFIG_DEBUG, val); } -uint8_t eeconfig_read_defalt_layer(void) { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); } +uint8_t eeconfig_read_defalt_layer(void) { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); } void eeconfig_write_defalt_layer(uint8_t val) { eeprom_write_byte(EECONFIG_DEFAULT_LAYER, val); } -uint8_t eeconfig_read_modifier(void) { return eeprom_read_byte(EECONFIG_MODIFIER); } -void eeconfig_write_modifier(uint8_t val) { eeprom_write_byte(EECONFIG_MODIFIER, val); } - +uint8_t eeconfig_read_keyconf(void) { return eeprom_read_byte(EECONFIG_KEYCONF); } +void eeconfig_write_keyconf(uint8_t val) { eeprom_write_byte(EECONFIG_KEYCONF, val); } diff --git a/common/eeconfig.h b/common/eeconfig.h index 088171f57..9cf2ff680 100644 --- a/common/eeconfig.h +++ b/common/eeconfig.h @@ -26,21 +26,24 @@ along with this program. If not, see . #define EECONFIG_MAGIC (uint16_t *)0 #define EECONFIG_DEBUG (uint8_t *)2 #define EECONFIG_DEFAULT_LAYER (uint8_t *)3 -#define EECONFIG_MODIFIER (uint8_t *)4 +#define EECONFIG_KEYCONF (uint8_t *)4 #define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5 -/* config bit */ +/* debug bit */ #define EECONFIG_DEBUG_ENABLE (1<<0) #define EECONFIG_DEBUG_MATRIX (1<<1) #define EECONFIG_DEBUG_KEYBOARD (1<<2) #define EECONFIG_DEBUG_MOUSE (1<<3) -#define EECONFIG_MODIFIER_CONTROL_CAPSLOCK (1<<0) -#define EECONFIG_MODIFIER_ALT_GUI (1<<1) -#define EECONFIG_MODIFIER_ESC_GRAVE (1<<2) -#define EECONFIG_MODIFIER_BACKSPACE_BACKSLASH (1<<3) -#define EECONFIG_MODIFIER_NO_GUI (1<<4) +/* keyconf bit */ +#define EECONFIG_KEYCONF_SWAP_CONTROL_CAPSLOCK (1<<0) +#define EECONFIG_KEYCONF_CAPSLOCK_TO_CONTROL (1<<1) +#define EECONFIG_KEYCONF_SWAP_LALT_LGUI (1<<2) +#define EECONFIG_KEYCONF_SWAP_RALT_RGUI (1<<3) +#define EECONFIG_KEYCONF_NO_GUI (1<<4) +#define EECONFIG_KEYCONF_SWAP_GRAVE_ESC (1<<5) +#define EECONFIG_KEYCONF_SWAP_BACKSLASH_BACKSPACE (1<<6) bool eeconfig_initialized(void); @@ -53,7 +56,7 @@ void eeconfig_write_debug(uint8_t val); uint8_t eeconfig_read_defalt_layer(void); void eeconfig_write_defalt_layer(uint8_t val); -uint8_t eeconfig_read_modifier(void); -void eeconfig_write_modifier(uint8_t val); +uint8_t eeconfig_read_keyconf(void); +void eeconfig_write_keyconf(uint8_t val); #endif -- cgit v1.2.3-70-g09d2 From 09bd1aef12e42b44f90b8275ae95b578294957c0 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 11 Mar 2013 00:14:58 +0900 Subject: Rename HOST_* to PROTOCOL_* in protocol/*.mk --- common/command.c | 10 +++++----- common/report.h | 2 +- protocol/iwrap.mk | 2 +- protocol/iwrap/main.c | 14 +++++++------- protocol/pjrc.mk | 3 --- protocol/vusb.mk | 2 +- 6 files changed, 15 insertions(+), 18 deletions(-) (limited to 'common/command.c') diff --git a/common/command.c b/common/command.c index cf8d969f8..a18eb7800 100644 --- a/common/command.c +++ b/common/command.c @@ -34,14 +34,14 @@ along with this program. If not, see . #include "mousekey.h" #endif -#ifdef HOST_PJRC +#ifdef PROTOCOL_PJRC # include "usb_keyboard.h" # ifdef EXTRAKEY_ENABLE # include "usb_extra.h" # endif #endif -#ifdef HOST_VUSB +#ifdef PROTOCOL_VUSB # include "usbdrv.h" #endif @@ -238,7 +238,7 @@ static bool command_common(uint8_t code) case KC_S: print("\n\n----- Status -----\n"); print_val_hex8(host_keyboard_leds()); -#ifdef HOST_PJRC +#ifdef PROTOCOL_PJRC print_val_hex8(UDCON); print_val_hex8(UDIEN); print_val_hex8(UDINT); @@ -248,7 +248,7 @@ static bool command_common(uint8_t code) print_val_hex8(usb_keyboard_idle_count); #endif -#ifdef HOST_VUSB +#ifdef PROTOCOL_PJRC # if USB_COUNT_SOF print_val_hex8(usbSofCount); # endif @@ -267,7 +267,7 @@ static bool command_common(uint8_t code) #ifdef EXTRAKEY_ENABLE case KC_PSCREEN: // TODO: Power key should take this feature? otherwise any key during suspend. -#ifdef HOST_PJRC +#ifdef PROTOCOL_PJRC if (suspend && remote_wakeup) { usb_remote_wakeup(); } else { diff --git a/common/report.h b/common/report.h index 0995189b3..480102768 100644 --- a/common/report.h +++ b/common/report.h @@ -71,7 +71,7 @@ along with this program. If not, see . /* key report size(NKRO or boot mode) */ -#if defined(HOST_PJRC) +#if defined(PROTOCOL_PJRC) # include "usb.h" # if defined(KBD2_REPORT_KEYS) && KBD2_REPORT_KEYS > KBD_REPORT_KEYS # define REPORT_KEYS KBD2_REPORT_KEYS diff --git a/protocol/iwrap.mk b/protocol/iwrap.mk index 9c83075a4..96aa4140c 100644 --- a/protocol/iwrap.mk +++ b/protocol/iwrap.mk @@ -1,6 +1,6 @@ IWRAP_DIR = protocol/iwrap -OPT_DEFS += -DHOST_IWRAP +OPT_DEFS += -DPROTOCOL_IWRAP SRC += $(IWRAP_DIR)/iwrap.c \ $(IWRAP_DIR)/suart.S \ diff --git a/protocol/iwrap/main.c b/protocol/iwrap/main.c index 05a67337f..ac83280f1 100644 --- a/protocol/iwrap/main.c +++ b/protocol/iwrap/main.c @@ -26,7 +26,7 @@ along with this program. If not, see . #include "matrix.h" #include "host.h" #include "iwrap.h" -#ifdef HOST_VUSB +#ifdef PROTOCOL_VUSB # include "vusb.h" # include "usbdrv.h" #endif @@ -78,7 +78,7 @@ static void pullup_pins(void) */ -#ifdef HOST_VUSB +#ifdef PROTOCOL_VUSB static void disable_vusb(void) { // disable interrupt & disconnect to prevent host from enumerating @@ -131,7 +131,7 @@ int main(void) //pullup_pins(); //set_prr(); -#ifdef HOST_VUSB +#ifdef PROTOCOL_VUSB disable_vusb(); #endif uart_init(115200); @@ -159,12 +159,12 @@ int main(void) last_timer = timer_read(); while (true) { -#ifdef HOST_VUSB +#ifdef PROTOCOL_VUSB if (host_get_driver() == vusb_driver()) usbPoll(); #endif keyboard_task(); -#ifdef HOST_VUSB +#ifdef PROTOCOL_VUSB if (host_get_driver() == vusb_driver()) vusb_transfer_keyboard(); #endif @@ -258,7 +258,7 @@ static uint8_t console_command(uint8_t c) print("r: reset. software reset by watchdog\n"); print("i: insomniac. prevent KB from sleeping\n"); print("c: iwrap_call. CALL for BT connection.\n"); -#ifdef HOST_VUSB +#ifdef PROTOCOL_VUSB print("u: USB mode. switch to USB.\n"); print("w: BT mode. switch to Bluetooth.\n"); #endif @@ -281,7 +281,7 @@ static uint8_t console_command(uint8_t c) print("iwrap_call()\n"); iwrap_call(); return 1; -#ifdef HOST_VUSB +#ifdef PROTOCOL_VUSB case 'u': print("USB mode\n"); init_vusb(); diff --git a/protocol/pjrc.mk b/protocol/pjrc.mk index f5693ba99..27f908b1c 100644 --- a/protocol/pjrc.mk +++ b/protocol/pjrc.mk @@ -19,7 +19,4 @@ endif VPATH += $(TOP_DIR)/$(PJRC_DIR) # This indicates using LUFA stack -# TODO: remove HOST_PJRC -OPT_DEFS += -DHOST_PJRC OPT_DEFS += -DPROTOCOL_PJRC - diff --git a/protocol/vusb.mk b/protocol/vusb.mk index 4c5058115..77b1c6337 100644 --- a/protocol/vusb.mk +++ b/protocol/vusb.mk @@ -1,6 +1,6 @@ VUSB_DIR = protocol/vusb -OPT_DEFS += -DHOST_VUSB +OPT_DEFS += -DPROTOCOL_VUSB SRC += $(VUSB_DIR)/main.c \ $(VUSB_DIR)/vusb.c \ -- cgit v1.2.3-70-g09d2 From e4fbaf30be00d73a3fab2aee24c7a522a0ecdd31 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 11 Mar 2013 01:55:41 +0900 Subject: Add keyconf in eeconfig.c --- common/command.c | 9 +++++++++ common/eeconfig.h | 15 +++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'common/command.c') diff --git a/common/command.c b/common/command.c index a18eb7800..d7ba3f232 100644 --- a/common/command.c +++ b/common/command.c @@ -135,6 +135,15 @@ static void print_eeprom_config(void) eebyte = eeconfig_read_keyconf(); print("keyconf: "); print_hex8(eebyte); print("\n"); + + keyconf kc = (keyconf){ .raw = eebyte }; + print("keyconf.swap_control_capslock: "); print_hex8(kc.swap_control_capslock); print("\n"); + print("keyconf.capslock_to_control: "); print_hex8(kc.capslock_to_control); print("\n"); + print("keyconf.swap_lalt_lgui: "); print_hex8(kc.swap_lalt_lgui); print("\n"); + print("keyconf.swap_ralt_rgui: "); print_hex8(kc.swap_ralt_rgui); print("\n"); + print("keyconf.no_gui: "); print_hex8(kc.no_gui); print("\n"); + print("keyconf.swap_grave_esc: "); print_hex8(kc.swap_grave_esc); print("\n"); + print("keyconf.swap_backslash_backspace: "); print_hex8(kc.swap_backslash_backspace); print("\n"); } static bool command_common(uint8_t code) diff --git a/common/eeconfig.h b/common/eeconfig.h index 9cf2ff680..2786995a2 100644 --- a/common/eeconfig.h +++ b/common/eeconfig.h @@ -46,6 +46,21 @@ along with this program. If not, see . #define EECONFIG_KEYCONF_SWAP_BACKSLASH_BACKSPACE (1<<6) +/* XXX: Not portable. Bit field order depends on implementation */ +typedef union { + uint8_t raw; + struct { + bool swap_control_capslock:1; + bool capslock_to_control:1; + bool swap_lalt_lgui:1; + bool swap_ralt_rgui:1; + bool no_gui:1; + bool swap_grave_esc:1; + bool swap_backslash_backspace:1; + bool reserved:1; + }; +} keyconf; + bool eeconfig_initialized(void); void eeconfig_init(void); -- cgit v1.2.3-70-g09d2 From ef8439bddb2d7fe5fd95faf2b6bebd8235acf160 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 11 Mar 2013 15:28:14 +0900 Subject: Add build option BOOTMAGIC_ENABLE --- common.mk | 8 ++++++-- common/command.c | 4 ++++ common/keyboard.c | 6 +++--- keyboard/gh60/Makefile.lufa | 4 ++-- keyboard/gh60/Makefile.pjrc | 9 ++++----- 5 files changed, 19 insertions(+), 12 deletions(-) (limited to 'common/command.c') diff --git a/common.mk b/common.mk index 2735f5bec..f9faf2f95 100644 --- a/common.mk +++ b/common.mk @@ -10,12 +10,16 @@ SRC += $(COMMON_DIR)/host.c \ $(COMMON_DIR)/print.c \ $(COMMON_DIR)/debug.c \ $(COMMON_DIR)/bootloader.c \ - $(COMMON_DIR)/bootmagic.c \ - $(COMMON_DIR)/eeconfig.c \ $(COMMON_DIR)/util.c # Option modules +ifdef BOOTMAGIC_ENABLE + SRC += $(COMMON_DIR)/bootmagic.c + SRC += $(COMMON_DIR)/eeconfig.c + OPT_DEFS += -DBOOTMAGIC_ENABLE +endif + ifdef MOUSEKEY_ENABLE SRC += $(COMMON_DIR)/mousekey.c OPT_DEFS += -DMOUSEKEY_ENABLE diff --git a/common/command.c b/common/command.c index d7ba3f232..372ca291e 100644 --- a/common/command.c +++ b/common/command.c @@ -123,6 +123,7 @@ static void command_common_help(void) print("Paus: jump to bootloader\n"); } +#ifdef BOOTMAGIC_ENABLE static void print_eeprom_config(void) { uint8_t eebyte; @@ -145,15 +146,18 @@ static void print_eeprom_config(void) print("keyconf.swap_grave_esc: "); print_hex8(kc.swap_grave_esc); print("\n"); print("keyconf.swap_backslash_backspace: "); print_hex8(kc.swap_backslash_backspace); print("\n"); } +#endif static bool command_common(uint8_t code) { static host_driver_t *host_driver = 0; switch (code) { +#ifdef BOOTMAGIC_ENABLE case KC_E: print("eeprom config\n"); print_eeprom_config(); break; +#endif case KC_CAPSLOCK: if (host_get_driver()) { host_driver = host_get_driver(); diff --git a/common/keyboard.c b/common/keyboard.c index 1acb79861..401fdb4e1 100644 --- a/common/keyboard.c +++ b/common/keyboard.c @@ -29,10 +29,8 @@ along with this program. If not, see . #include "util.h" #include "sendchar.h" #include "bootmagic.h" -#ifdef MOUSEKEY_ENABLE -#include "mousekey.h" -#endif #include "eeconfig.h" +#include "mousekey.h" #ifdef MATRIX_HAS_GHOST @@ -64,6 +62,7 @@ void keyboard_init(void) ps2_mouse_init(); #endif +#ifdef BOOTMAGIC_ENABLE bootmagic(); if (eeconfig_is_enabled()) { @@ -77,6 +76,7 @@ void keyboard_init(void) } else { eeconfig_init(); } +#endif } /* diff --git a/keyboard/gh60/Makefile.lufa b/keyboard/gh60/Makefile.lufa index b885b7dfa..a5ff609a7 100644 --- a/keyboard/gh60/Makefile.lufa +++ b/keyboard/gh60/Makefile.lufa @@ -47,8 +47,7 @@ TOP_DIR = ../.. # Directory keyboard dependent files exist TARGET_DIR = . - -# List C source files here. (C dependencies are automatically generated.) +# project specific files SRC += keymap.c \ matrix.c \ led.c @@ -100,6 +99,7 @@ F_USB = $(F_CPU) # Build Options # comment out to disable the options. # +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboard/gh60/Makefile.pjrc b/keyboard/gh60/Makefile.pjrc index 2538c0c6b..f03ca9416 100644 --- a/keyboard/gh60/Makefile.pjrc +++ b/keyboard/gh60/Makefile.pjrc @@ -47,7 +47,7 @@ TOP_DIR = ../.. # Directory keyboard dependent files exist TARGET_DIR = . -# keyboard dependent files +# project specific files SRC = keymap.c \ matrix.c \ led.c @@ -57,10 +57,8 @@ 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 +MCU = atmega32u4 +#MCU = at90usb1286 # Processor frequency. @@ -79,6 +77,7 @@ OPT_DEFS += -DBOOT_SIZE=4096 # Build Options # comment out to disable the options. # +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+5000) EXTRAKEY_ENABLE = yes # Audio control and System control(+600) NKRO_ENABLE = yes # USB Nkey Rollover(+500) -- cgit v1.2.3-70-g09d2