X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=common%2Fcommand.c;h=971ef7f0af4ba9f4ba1cbd5a80c4327818b424f9;hb=47bc3016d36cbfd83904fff5947acb6436dd37c3;hp=d7ba3f232a31a60ed94d5a971b9601d09fe4bbce;hpb=e4fbaf30be00d73a3fab2aee24c7a522a0ecdd31;p=tmk_firmware.git diff --git a/common/command.c b/common/command.c index d7ba3f2..971ef7f 100644 --- a/common/command.c +++ b/common/command.c @@ -26,9 +26,13 @@ along with this program. If not, see . #include "timer.h" #include "keyboard.h" #include "bootloader.h" -#include "layer_switch.h" +#include "action_layer.h" +#include "action_util.h" #include "eeconfig.h" +#include "sleep_led.h" +#include "led.h" #include "command.h" +#include "backlight.h" #ifdef MOUSEKEY_ENABLE #include "mousekey.h" @@ -59,19 +63,22 @@ static uint8_t numkey2num(uint8_t code); static void switch_default_layer(uint8_t layer); -typedef enum { ONESHOT, CONSOLE, MOUSEKEY } cmdstate_t; -static cmdstate_t state = ONESHOT; +command_state_t command_state = ONESHOT; bool command_proc(uint8_t code) { - switch (state) { + switch (command_state) { case ONESHOT: if (!IS_COMMAND()) return false; return (command_extra(code) || command_common(code)); + break; case CONSOLE: - command_console(code); + if (IS_COMMAND()) + return (command_extra(code) || command_common(code)); + else + return (command_console_extra(code) || command_console(code)); break; #ifdef MOUSEKEY_ENABLE case MOUSEKEY: @@ -79,12 +86,13 @@ bool command_proc(uint8_t code) break; #endif default: - state = ONESHOT; + command_state = ONESHOT; return false; } return true; } +/* TODO: Refactoring is needed. */ /* This allows to define extra commands. return false when not processed. */ bool command_extra(uint8_t code) __attribute__ ((weak)); bool command_extra(uint8_t code) @@ -92,24 +100,31 @@ bool command_extra(uint8_t code) return false; } +bool command_console_extra(uint8_t code) __attribute__ ((weak)); +bool command_console_extra(uint8_t code) +{ + return false; +} + /*********************************************************** * Command common ***********************************************************/ static void command_common_help(void) { - print_enable = true; print("\n\n----- Command Help -----\n"); print("c: enter console mode\n"); print("d: toggle debug enable\n"); print("x: toggle matrix debug\n"); print("k: toggle keyboard debug\n"); print("m: toggle mouse debug\n"); - print("p: toggle print enable\n"); +#ifdef SLEEP_LED_ENABLE + print("z: toggle sleep LED test\n"); +#endif print("v: print device version & info\n"); print("t: print timer count\n"); print("s: print status\n"); - print("e: print eeprom boot config\n"); + print("e: print eeprom config\n"); #ifdef NKRO_ENABLE print("n: toggle NKRO\n"); #endif @@ -123,37 +138,59 @@ static void command_common_help(void) print("Paus: jump to bootloader\n"); } -static void print_eeprom_config(void) +#ifdef BOOTMAGIC_ENABLE +static void print_eeconfig(void) { - uint8_t eebyte; - - 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_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"); + print("default_layer: "); print_dec(eeconfig_read_default_layer()); print("\n"); + + debug_config_t dc; + dc.raw = eeconfig_read_debug(); + print("debug_config.raw: "); print_hex8(dc.raw); print("\n"); + print(".enable: "); print_dec(dc.enable); print("\n"); + print(".matrix: "); print_dec(dc.matrix); print("\n"); + print(".keyboard: "); print_dec(dc.keyboard); print("\n"); + print(".mouse: "); print_dec(dc.mouse); print("\n"); + + keymap_config_t kc; + kc.raw = eeconfig_read_keymap(); + print("keymap_config.raw: "); print_hex8(kc.raw); print("\n"); + print(".swap_control_capslock: "); print_dec(kc.swap_control_capslock); print("\n"); + print(".capslock_to_control: "); print_dec(kc.capslock_to_control); print("\n"); + print(".swap_lalt_lgui: "); print_dec(kc.swap_lalt_lgui); print("\n"); + print(".swap_ralt_rgui: "); print_dec(kc.swap_ralt_rgui); print("\n"); + print(".no_gui: "); print_dec(kc.no_gui); print("\n"); + print(".swap_grave_esc: "); print_dec(kc.swap_grave_esc); print("\n"); + print(".swap_backslash_backspace: "); print_dec(kc.swap_backslash_backspace); print("\n"); + print(".nkro: "); print_dec(kc.nkro); print("\n"); + +#ifdef BACKLIGHT_ENABLE + backlight_config_t bc; + bc.raw = eeconfig_read_backlight(); + print("backlight_config.raw: "); print_hex8(bc.raw); print("\n"); + print(".enable: "); print_dec(bc.enable); print("\n"); + print(".level: "); print_dec(bc.level); print("\n"); +#endif } +#endif static bool command_common(uint8_t code) { static host_driver_t *host_driver = 0; switch (code) { +#ifdef SLEEP_LED_ENABLE + case KC_Z: + // test breathing sleep LED + print("Sleep LED test\n"); + sleep_led_toggle(); + led_set(host_keyboard_leds()); + break; +#endif +#ifdef BOOTMAGIC_ENABLE case KC_E: - print("eeprom config\n"); - print_eeprom_config(); + print("eeconfig:\n"); + print_eeconfig(); break; +#endif case KC_CAPSLOCK: if (host_get_driver()) { host_driver = host_get_driver(); @@ -169,7 +206,6 @@ static bool command_common(uint8_t code) command_common_help(); break; case KC_C: - print_enable = true; debug_matrix = false; debug_keyboard = false; debug_mouse = false; @@ -177,7 +213,7 @@ static bool command_common(uint8_t code) command_console_help(); print("\nEnter Console Mode\n"); print("C> "); - state = CONSOLE; + command_state = CONSOLE; break; case KC_PAUSE: clear_keyboard(); @@ -227,33 +263,62 @@ static bool command_common(uint8_t code) break; case KC_V: // print version & information print("\n\n----- Version -----\n"); - print(STR(DESCRIPTION) "\n"); - print(STR(MANUFACTURER) "(" STR(VENDOR_ID) ")/"); - print(STR(PRODUCT) "(" STR(PRODUCT_ID) ") "); - print("VERSION: " STR(DEVICE_VER) "\n"); + print("DESC: " STR(DESCRIPTION) "\n"); + print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") " + "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") " + "VER: " STR(DEVICE_VER) "\n"); + print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n"); + /* build options */ + print("OPTIONS:" +#ifdef PROTOCOL_PJRC + " PJRC" +#endif +#ifdef PROTOCOL_LUFA + " LUFA" +#endif +#ifdef PROTOCOL_VUSB + " VUSB" +#endif +#ifdef BOOTMAGIC_ENABLE + " BOOTMAGIC" +#endif +#ifdef MOUSEKEY_ENABLE + " MOUSEKEY" +#endif +#ifdef EXTRAKEY_ENABLE + " EXTRAKEY" +#endif +#ifdef CONSOLE_ENABLE + " CONSOLE" +#endif +#ifdef COMMAND_ENABLE + " COMMAND" +#endif +#ifdef NKRO_ENABLE + " NKRO" +#endif +#ifdef KEYMAP_SECTION_ENABLE + " KEYMAP_SECTION" +#endif + " " STR(BOOTLOADER_SIZE) "\n"); + + print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__) + " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__ + " AVR_ARCH: avr" STR(__AVR_ARCH__) "\n"); break; case KC_T: // print timer print_val_hex32(timer_count); break; - case KC_P: // print toggle - if (print_enable) { - print("print disabled.\n"); - print_enable = false; - } else { - print_enable = true; - print("print enabled.\n"); - } - break; case KC_S: print("\n\n----- Status -----\n"); print_val_hex8(host_keyboard_leds()); + print_val_hex8(keyboard_protocol); + print_val_hex8(keyboard_idle); #ifdef PROTOCOL_PJRC print_val_hex8(UDCON); print_val_hex8(UDIEN); print_val_hex8(UDINT); print_val_hex8(usb_keyboard_leds); - print_val_hex8(usb_keyboard_protocol); - print_val_hex8(usb_keyboard_idle_config); print_val_hex8(usb_keyboard_idle_count); #endif @@ -316,7 +381,6 @@ static bool command_common(uint8_t code) ***********************************************************/ static void command_console_help(void) { - print_enable = true; print("\n\n----- Console Help -----\n"); print("ESC/q: quit\n"); #ifdef MOUSEKEY_ENABLE @@ -334,14 +398,14 @@ static bool command_console(uint8_t code) case KC_Q: case KC_ESC: print("\nQuit Console Mode\n"); - state = ONESHOT; + command_state = ONESHOT; return false; #ifdef MOUSEKEY_ENABLE case KC_M: mousekey_console_help(); print("\nEnter Mousekey Console\n"); print("M0>"); - state = MOUSEKEY; + command_state = MOUSEKEY; return true; #endif default: @@ -501,7 +565,7 @@ static bool mousekey_console(uint8_t code) mousekey_param = 0; print("\nQuit Mousekey Console\n"); print("C> "); - state = CONSOLE; + command_state = CONSOLE; return false; case KC_P: mousekey_param_print(); @@ -572,8 +636,8 @@ static uint8_t numkey2num(uint8_t code) static void switch_default_layer(uint8_t layer) { - print("switch_default_layer: "); print_dec(default_layer); print(" to "); print_dec(layer); print("\n"); - default_layer_set(layer); - overlay_clear(); + print("switch_default_layer: "); print_dec(biton32(default_layer_state)); + print(" to "); print_dec(layer); print("\n"); + default_layer_set(1UL<