From 62ba66d61821fec6a5ad3bdccdf738e15e082461 Mon Sep 17 00:00:00 2001 From: XScorpion2 Date: Fri, 10 May 2019 18:55:02 -0500 Subject: Cleanup/rgb matrix (#5811) * clean up rgb matrix extern usage Moved rgb matrix boiler plate into macros Rebased onto typing heatmap pr * Fixing the reversed frame buffer access in digital rain * Fixing digital rain & typing heatmap if keyreactive effects are not enabled * Apply suggestions from code review Co-Authored-By: Drashna Jaelre * Adding parenthesizes to DRIVER_LED_TOTAL where necessary * Updated docs * added notes about parentheses --- tmk_core/protocol/arm_atsam/led_matrix.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'tmk_core') diff --git a/tmk_core/protocol/arm_atsam/led_matrix.c b/tmk_core/protocol/arm_atsam/led_matrix.c index ea067a7439..42dfccbc50 100644 --- a/tmk_core/protocol/arm_atsam/led_matrix.c +++ b/tmk_core/protocol/arm_atsam/led_matrix.c @@ -27,8 +27,6 @@ led_instruction_t led_instructions[] = { { .end = 1 } }; static void led_matrix_massdrop_config_override(int i); #endif // USE_MASSDROP_CONFIGURATOR -extern rgb_config_t rgb_matrix_config; -extern rgb_counters_t g_rgb_counters; void SERCOM1_0_Handler( void ) { @@ -431,7 +429,6 @@ static void led_run_pattern(led_setup_t *f, float* ro, float* go, float* bo, flo } } -extern led_config_t g_led_config; static void led_matrix_massdrop_config_override(int i) { float ro = 0; -- cgit v1.2.3 From 48b01446ba6b74d7e0793f972873a10fceef2f62 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Thu, 16 May 2019 10:28:06 -0700 Subject: Make delay for Capslock in Hold-Tap functions configurable (#5497) * Increase delay for Hold-Tap register for CAPSLOCK Because it seems that the 80ms delay wasn't too much * Screw it, make the caps delay a define and make it configurable --- tmk_core/common/action.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'tmk_core') diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index d4d4ac28da..bb4e66c9c8 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -44,6 +44,9 @@ int retro_tapping_counter = 0; #include #endif +#ifndef TAP_HOLD_CAPS_DELAY +# define TAP_HOLD_CAPS_DELAY 200 +#endif /** \brief Called to execute an action. * * FIXME: Needs documentation. @@ -518,7 +521,7 @@ void process_action(keyrecord_t *record, action_t action) if (tap_count > 0) { dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n"); if (action.layer_tap.code == KC_CAPS) { - wait_ms(80); + wait_ms(TAP_HOLD_CAPS_DELAY); } unregister_code(action.layer_tap.code); } else { @@ -853,8 +856,13 @@ void unregister_code(uint8_t code) */ void tap_code(uint8_t code) { register_code(code); + if (code == KC_CAPS) { + wait_ms(TAP_HOLD_CAPS_DELAY); + } #if TAP_CODE_DELAY > 0 + else { wait_ms(TAP_CODE_DELAY); + } #endif unregister_code(code); } -- cgit v1.2.3 From 00d1d7828c63538122d9d3db7336b9a40c9ffe80 Mon Sep 17 00:00:00 2001 From: Alex Ong Date: Sat, 18 May 2019 06:47:50 +1000 Subject: Typedef'ed layer_state_t to uint32_t (#3637) * Typedef'ed layer_state_t to uint32_t. This enables future work with layer_state_t to uint8_t for optimization purposes. * Removed accidental xeal60 commit * Revert to egyptian brackets, added sizeof(layer_state_t) so when layer_state_t is redefined it will automagically work. * Add additional typedefs * Add checks for setting layer state * Update tmk_core/common/action_layer.h Co-Authored-By: alex-ong * Revert commit. --- tmk_core/common/action.c | 8 ++++---- tmk_core/common/action_layer.c | 36 ++++++++++++++++++------------------ tmk_core/common/action_layer.h | 38 +++++++++++++++++++++++--------------- tmk_core/common/bootmagic.c | 4 ++-- tmk_core/common/magic.c | 2 +- 5 files changed, 48 insertions(+), 40 deletions(-) (limited to 'tmk_core') diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index bb4e66c9c8..3991a8a9ef 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -406,8 +406,8 @@ void process_action(keyrecord_t *record, action_t action) /* Default Layer Bitwise Operation */ if (!event.pressed) { uint8_t shift = action.layer_bitop.part*4; - uint32_t bits = ((uint32_t)action.layer_bitop.bits)<= 0; i--) { + for (int8_t i = sizeof(layer_state_t)-1; i >= 0; i--) { if (layers & (1UL << i)) { action = action_for_key(i, key); if (action.code != ACTION_TRANSPARENT) { diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h index 6e2f35d90d..7fa30c86d6 100644 --- a/tmk_core/common/action_layer.h +++ b/tmk_core/common/action_layer.h @@ -21,24 +21,32 @@ along with this program. If not, see . #include "keyboard.h" #include "action.h" +#if defined(LAYER_STATE_8BIT) || ( defined(DYNAMIC_KEYMAP_ENABLE) && DYNAMIC_KEYMAP_LAYER_COUNT >= 8 ) +typedef uint8_t layer_state_t; +#elif defined(LAYER_STATE_16BIT) +typedef uint16_t layer_state_t; +#else +typedef uint32_t layer_state_t; +#endif + /* * Default Layer */ -extern uint32_t default_layer_state; +extern layer_state_t default_layer_state; void default_layer_debug(void); -void default_layer_set(uint32_t state); +void default_layer_set(layer_state_t state); __attribute__((weak)) -uint32_t default_layer_state_set_kb(uint32_t state); +layer_state_t default_layer_state_set_kb(layer_state_t state); __attribute__((weak)) -uint32_t default_layer_state_set_user(uint32_t state); +layer_state_t default_layer_state_set_user(layer_state_t state); #ifndef NO_ACTION_LAYER /* bitwise operation */ -void default_layer_or(uint32_t state); -void default_layer_and(uint32_t state); -void default_layer_xor(uint32_t state); +void default_layer_or(layer_state_t state); +void default_layer_and(layer_state_t state); +void default_layer_xor(layer_state_t state); #else #define default_layer_or(state) #define default_layer_and(state) @@ -50,11 +58,11 @@ void default_layer_xor(uint32_t state); * Keymap Layer */ #ifndef NO_ACTION_LAYER -extern uint32_t layer_state; +extern layer_state_t layer_state; -void layer_state_set(uint32_t state); +void layer_state_set(layer_state_t state); bool layer_state_is(uint8_t layer); -bool layer_state_cmp(uint32_t layer1, uint8_t layer2); +bool layer_state_cmp(layer_state_t layer1, uint8_t layer2); void layer_debug(void); void layer_clear(void); @@ -63,9 +71,9 @@ void layer_on(uint8_t layer); void layer_off(uint8_t layer); void layer_invert(uint8_t layer); /* bitwise operation */ -void layer_or(uint32_t state); -void layer_and(uint32_t state); -void layer_xor(uint32_t state); +void layer_or(layer_state_t state); +void layer_and(layer_state_t state); +void layer_xor(layer_state_t state); #else #define layer_state 0 @@ -84,8 +92,8 @@ void layer_xor(uint32_t state); #define layer_xor(state) #endif -uint32_t layer_state_set_user(uint32_t state); -uint32_t layer_state_set_kb(uint32_t state); +layer_state_t layer_state_set_user(layer_state_t state); +layer_state_t layer_state_set_kb(layer_state_t state); /* pressed actions cache */ #if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE) diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c index 9f79fb8eed..cc780d17ab 100644 --- a/tmk_core/common/bootmagic.c +++ b/tmk_core/common/bootmagic.c @@ -99,10 +99,10 @@ void bootmagic(void) if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_7)) { default_layer |= (1<<7); } if (default_layer) { eeconfig_update_default_layer(default_layer); - default_layer_set((uint32_t)default_layer); + default_layer_set((layer_state_t)default_layer); } else { default_layer = eeconfig_read_default_layer(); - default_layer_set((uint32_t)default_layer); + default_layer_set((layer_state_t)default_layer); } } diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c index 714acc0f54..2b1a6a6ad2 100644 --- a/tmk_core/common/magic.c +++ b/tmk_core/common/magic.c @@ -33,6 +33,6 @@ void magic(void) uint8_t default_layer = 0; default_layer = eeconfig_read_default_layer(); - default_layer_set((uint32_t)default_layer); + default_layer_set((layer_state_t)default_layer); } -- cgit v1.2.3 From ba26736d7e0679e87e34add2445cdae541e2a0b8 Mon Sep 17 00:00:00 2001 From: Ryan Caltabiano Date: Sat, 18 May 2019 15:12:35 -0500 Subject: Fix bit count calculation for iterating layers --- tmk_core/common/action_layer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tmk_core') diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c index be28107b63..dfcbc110ad 100644 --- a/tmk_core/common/action_layer.c +++ b/tmk_core/common/action_layer.c @@ -303,7 +303,7 @@ uint8_t layer_switch_get_layer(keypos_t key) { layer_state_t layers = layer_state | default_layer_state; /* check top layer first */ - for (int8_t i = sizeof(layer_state_t)-1; i >= 0; i--) { + for (int8_t i = sizeof(layer_state_t) * 8 - 1; i >= 0; i--) { if (layers & (1UL << i)) { action = action_for_key(i, key); if (action.code != ACTION_TRANSPARENT) { -- cgit v1.2.3 From d16056e60a4ac20ad4b2d7bef3ecebe82d22674b Mon Sep 17 00:00:00 2001 From: fauxpark Date: Thu, 30 May 2019 00:45:28 +1000 Subject: Fix TO() and DF() calling layer_state_set_[kb,user] twice (#6003) --- tmk_core/common/action.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tmk_core') diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 3991a8a9ef..6a560229a6 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -412,7 +412,7 @@ void process_action(keyrecord_t *record, action_t action) case OP_BIT_AND: default_layer_and(bits | mask); break; case OP_BIT_OR: default_layer_or(bits | mask); break; case OP_BIT_XOR: default_layer_xor(bits | mask); break; - case OP_BIT_SET: default_layer_and(mask); default_layer_or(bits); break; + case OP_BIT_SET: default_layer_set(bits | mask); break; } } } else { @@ -426,7 +426,7 @@ void process_action(keyrecord_t *record, action_t action) case OP_BIT_AND: layer_and(bits | mask); break; case OP_BIT_OR: layer_or(bits | mask); break; case OP_BIT_XOR: layer_xor(bits | mask); break; - case OP_BIT_SET: layer_and(mask); layer_or(bits); break; + case OP_BIT_SET: layer_state_set(bits | mask); break; } } } -- cgit v1.2.3 From 2f7a57a6de1af48262702eabad39c2563c02f253 Mon Sep 17 00:00:00 2001 From: zvecr Date: Fri, 31 May 2019 00:53:49 +0100 Subject: Copy avr teensy flash logic to arm (#6016) --- tmk_core/chibios.mk | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'tmk_core') diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index 44c00bdd15..11715cf346 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -260,6 +260,19 @@ dfu-util-wait: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst + +# Autodetect teensy loader +ifndef TEENSY_LOADER_CLI + ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) + TEENSY_LOADER_CLI ?= teensy-loader-cli + else + TEENSY_LOADER_CLI ?= teensy_loader_cli + endif +endif + +teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter + $(TEENSY_LOADER_CLI) -mmcu=$(MCU_LDSCRIPT) -w -v $(BUILD_DIR)/$(TARGET).hex + bin: $(BUILD_DIR)/$(TARGET).bin sizeafter if [ ! -z "$(DFU_SUFFIX_ARGS)" ]; then \ $(DFU_SUFFIX) $(DFU_SUFFIX_ARGS) -a $(BUILD_DIR)/$(TARGET).bin 1>/dev/null ;\ -- cgit v1.2.3 From 7ddf3c28f46f8582c897ad118c28734cd9332841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Dos=C3=A9?= Date: Sun, 2 Jun 2019 13:34:17 -0700 Subject: Fixes compile errors for massdrop keyboards --- tmk_core/protocol/arm_atsam/md_bootloader.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'tmk_core') diff --git a/tmk_core/protocol/arm_atsam/md_bootloader.h b/tmk_core/protocol/arm_atsam/md_bootloader.h index 956145c313..6b80ef4922 100644 --- a/tmk_core/protocol/arm_atsam/md_bootloader.h +++ b/tmk_core/protocol/arm_atsam/md_bootloader.h @@ -11,7 +11,7 @@ extern uint32_t _erom; //WARNING: These are only for CTRL bootloader release "v2.18Jun 22 2018 17:28:08" for bootloader_jump support extern uint32_t _eram; #define BOOTLOADER_MAGIC 0x3B9ACA00 -#define MAGIC_ADDR (uint32_t *)(&_eram - 4) +#define MAGIC_ADDR (uint32_t *)((intptr_t)(&_eram) - 4) #endif #ifdef MD_BOOTLOADER @@ -22,4 +22,3 @@ extern uint32_t _eram; #endif //MD_BOOTLOADER #endif //_MD_BOOTLOADER_H_ - -- cgit v1.2.3 From 75795186135e6d83de1ff3bb108f9c5471742ba4 Mon Sep 17 00:00:00 2001 From: skullydazed Date: Sun, 7 Jul 2019 09:08:49 -0700 Subject: Fix chibios so the dfu-suffix is only applied once. (#6270) --- tmk_core/chibios.mk | 6 ------ tmk_core/rules.mk | 8 ++++++++ 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'tmk_core') diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index 11715cf346..4aebb47762 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -201,7 +201,6 @@ DFU_ARGS ?= ifneq ("$(SERIAL)","") DFU_ARGS += -S $(SERIAL) endif -DFU_SUFFIX_ARGS ?= ST_LINK_ARGS ?= @@ -209,7 +208,6 @@ ST_LINK_ARGS ?= EXTRALIBDIRS = $(RULESPATH)/ld DFU_UTIL ?= dfu-util -DFU_SUFFIX ?= dfu-suffix ST_LINK_CLI ?= st-link_cli # Generate a .qmk for the QMK-FF @@ -274,7 +272,3 @@ teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter $(TEENSY_LOADER_CLI) -mmcu=$(MCU_LDSCRIPT) -w -v $(BUILD_DIR)/$(TARGET).hex bin: $(BUILD_DIR)/$(TARGET).bin sizeafter - if [ ! -z "$(DFU_SUFFIX_ARGS)" ]; then \ - $(DFU_SUFFIX) $(DFU_SUFFIX_ARGS) -a $(BUILD_DIR)/$(TARGET).bin 1>/dev/null ;\ - fi - $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 6d2bb51f07..8f876a383c 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -223,6 +223,10 @@ $(foreach LOBJ, $(NO_LTO_OBJ), $(eval $(call NO_LTO,$(LOBJ)))) MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@) +# Add QMK specific flags +DFU_SUFFIX ?= dfu-suffix +DFU_SUFFIX_ARGS ?= + elf: $(BUILD_DIR)/$(TARGET).elf hex: $(BUILD_DIR)/$(TARGET).hex @@ -279,6 +283,10 @@ gccversion : @$(SILENT) || printf "$(MSG_BIN) $@" | $(AWK_CMD) $(eval CMD=$(BIN) $< $@ || exit 0) @$(BUILD_CMD) + if [ ! -z "$(DFU_SUFFIX_ARGS)" ]; then \ + $(DFU_SUFFIX) $(DFU_SUFFIX_ARGS) -a $(BUILD_DIR)/$(TARGET).bin 1>/dev/null ;\ + fi + $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; BEGIN = gccversion sizebefore -- cgit v1.2.3 From 8e348c427d2b8dc670a2967e6cb8d2de4f897f7a Mon Sep 17 00:00:00 2001 From: fauxpark Date: Fri, 12 Jul 2019 05:05:13 +1000 Subject: Display firmware size percentage (#6307) --- tmk_core/rules.mk | 1 + 1 file changed, 1 insertion(+) (limited to 'tmk_core') diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index 8f876a383c..96b6e3a271 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -398,6 +398,7 @@ check-size: $(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi)) $(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE))) $(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE))) + $(eval PERCENT_SIZE=$(shell expr $(CURRENT_SIZE) \* 100 / $(MAX_SIZE))) if [ $(MAX_SIZE) -gt 0 ] && [ $(CURRENT_SIZE) -gt 0 ]; then \ $(SILENT) || printf "$(MSG_CHECK_FILESIZE)" | $(AWK_CMD); \ if [ $(CURRENT_SIZE) -gt $(MAX_SIZE) ]; then \ -- cgit v1.2.3