From 17170ba76d3c94edcf1ab263520238fdb0384774 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sun, 23 Oct 2016 23:00:43 -0500 Subject: Fixed some large keyboard bugs Fixed some bugs relating to keyboards with more than 16 columns. Also added the ability to mask off keyboard matrix bits. --- tmk_core/common/command.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'tmk_core/common') diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index f3e1bf6234..5f29bc0b4e 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -379,11 +379,11 @@ static bool command_common(uint8_t code) debug_enable = !debug_enable; if (debug_enable) { print("\ndebug: on\n"); - debug_matrix = true; - debug_keyboard = true; - debug_mouse = true; } else { print("\ndebug: off\n"); + debug_matrix = false; + debug_keyboard = false; + debug_mouse = false; } break; -- cgit v1.2.3 From 508eddf8ba8548d3f71e1c09a404839beb49f45c Mon Sep 17 00:00:00 2001 From: IBNobody Date: Fri, 28 Oct 2016 14:21:38 -0500 Subject: Fixing Debounce - WIP --- tmk_core/common/matrix.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tmk_core/common') diff --git a/tmk_core/common/matrix.h b/tmk_core/common/matrix.h index cee3593eee..84e066c673 100644 --- a/tmk_core/common/matrix.h +++ b/tmk_core/common/matrix.h @@ -31,6 +31,16 @@ typedef uint32_t matrix_row_t; #error "MATRIX_COLS: invalid value" #endif +#if (MATRIX_ROWS <= 8) +typedef uint8_t matrix_col_t; +#elif (MATRIX_ROWS <= 16) +typedef uint16_t matrix_col_t; +#elif (MATRIX_ROWS <= 32) +typedef uint32_t matrix_col_t; +#else +#error "MATRIX_COLS: invalid value" +#endif + #define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1< Date: Fri, 28 Oct 2016 16:24:20 -0500 Subject: Refactoring Matrix scanning --- tmk_core/common/matrix.h | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'tmk_core/common') diff --git a/tmk_core/common/matrix.h b/tmk_core/common/matrix.h index 84e066c673..cee3593eee 100644 --- a/tmk_core/common/matrix.h +++ b/tmk_core/common/matrix.h @@ -31,16 +31,6 @@ typedef uint32_t matrix_row_t; #error "MATRIX_COLS: invalid value" #endif -#if (MATRIX_ROWS <= 8) -typedef uint8_t matrix_col_t; -#elif (MATRIX_ROWS <= 16) -typedef uint16_t matrix_col_t; -#elif (MATRIX_ROWS <= 32) -typedef uint32_t matrix_col_t; -#else -#error "MATRIX_COLS: invalid value" -#endif - #define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1< Date: Mon, 21 Nov 2016 20:14:16 -0500 Subject: cleaning up midid --- tmk_core/common/host_driver.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'tmk_core/common') diff --git a/tmk_core/common/host_driver.h b/tmk_core/common/host_driver.h index edb9e5dd9c..588d1c0be8 100644 --- a/tmk_core/common/host_driver.h +++ b/tmk_core/common/host_driver.h @@ -20,7 +20,9 @@ along with this program. If not, see . #include #include "report.h" - +#ifdef MIDI_ENABLE + #include "midi.h" +#endif typedef struct { uint8_t (*keyboard_leds)(void); @@ -28,6 +30,11 @@ typedef struct { void (*send_mouse)(report_mouse_t *); void (*send_system)(uint16_t); void (*send_consumer)(uint16_t); +#ifdef MIDI_ENABLE + void (*usb_send_func)(MidiDevice *, uint16_t, uint8_t, uint8_t, uint8_t); + void (*usb_get_midi)(MidiDevice *); + void (*midi_usb_init)(MidiDevice *); +#endif } host_driver_t; #endif -- cgit v1.2.3 From d37becc0a9203c4c7d52aca6190b4b3d9fb69a59 Mon Sep 17 00:00:00 2001 From: PureSpider Date: Tue, 22 Nov 2016 22:12:57 +0100 Subject: Set backlight status to on if it's at maximum brightness already and the brightness increase keybind is used Before it was turned on but the status wasn't set to on, so you had to push the backlight toggle bind twice to turn it off again --- tmk_core/common/backlight.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tmk_core/common') diff --git a/tmk_core/common/backlight.c b/tmk_core/common/backlight.c index c9e8fd3fd2..0e0ad2d154 100644 --- a/tmk_core/common/backlight.c +++ b/tmk_core/common/backlight.c @@ -36,9 +36,9 @@ void backlight_increase(void) if(backlight_config.level < BACKLIGHT_LEVELS) { backlight_config.level++; - backlight_config.enable = 1; - eeconfig_update_backlight(backlight_config.raw); } + backlight_config.enable = 1; + eeconfig_update_backlight(backlight_config.raw); dprintf("backlight increase: %u\n", backlight_config.level); backlight_set(backlight_config.level); } -- cgit v1.2.3 From 5893f0fa1fcecfface25ce570f37e51031a14489 Mon Sep 17 00:00:00 2001 From: Wilba6582 Date: Wed, 23 Nov 2016 16:22:57 +1100 Subject: Fixed NO_SUSPEND_POWER_DOWN handling --- tmk_core/common/avr/suspend.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'tmk_core/common') diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 8a7272bbc5..939bda15eb 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -47,6 +47,7 @@ void suspend_idle(uint8_t time) sleep_disable(); } +#ifndef NO_SUSPEND_POWER_DOWN /* Power down MCU with watchdog timer * wdto: watchdog timer timeout defined in * WDTO_15MS @@ -61,6 +62,7 @@ void suspend_idle(uint8_t time) * WDTO_8S */ static uint8_t wdt_timeout = 0; + static void power_down(uint8_t wdto) { #ifdef PROTOCOL_LUFA @@ -98,10 +100,13 @@ static void power_down(uint8_t wdto) // Disable watchdog after sleep wdt_disable(); } +#endif void suspend_power_down(void) { +#ifndef NO_SUSPEND_POWER_DOWN power_down(WDTO_15MS); +#endif } __attribute__ ((weak)) void matrix_power_up(void) {} @@ -109,7 +114,9 @@ __attribute__ ((weak)) void matrix_power_down(void) {} bool suspend_wakeup_condition(void) { #ifdef BACKLIGHT_ENABLE +#ifndef NO_SUSPEND_POWER_DOWN backlight_set(0); +#endif #endif matrix_power_up(); matrix_scan(); @@ -126,7 +133,6 @@ void suspend_wakeup_init(void) // clear keyboard state clear_keyboard(); #ifdef BACKLIGHT_ENABLE - backlight_set(0); backlight_init(); #endif led_set(host_keyboard_leds()); -- cgit v1.2.3 From cf3926a8e13edb76193b8af25b497f9ef61161fd Mon Sep 17 00:00:00 2001 From: Wilba6582 Date: Wed, 23 Nov 2016 19:45:50 +1100 Subject: Fixed NO_SUSPEND_POWER_DOWN handling --- tmk_core/common/avr/suspend.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'tmk_core/common') diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 939bda15eb..0c81e83612 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -113,11 +113,6 @@ __attribute__ ((weak)) void matrix_power_up(void) {} __attribute__ ((weak)) void matrix_power_down(void) {} bool suspend_wakeup_condition(void) { -#ifdef BACKLIGHT_ENABLE -#ifndef NO_SUSPEND_POWER_DOWN - backlight_set(0); -#endif -#endif matrix_power_up(); matrix_scan(); matrix_power_down(); @@ -135,7 +130,7 @@ void suspend_wakeup_init(void) #ifdef BACKLIGHT_ENABLE backlight_init(); #endif -led_set(host_keyboard_leds()); + led_set(host_keyboard_leds()); } #ifndef NO_SUSPEND_POWER_DOWN -- cgit v1.2.3 From be4e75423a232d9d328bb23835e0fa5152292c95 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 27 Nov 2016 22:41:22 -0800 Subject: Tidy up atomicity in timer.c and ring_buffer.h Adopt the macros for saving/restoring the interrupt state that are provided by the avr gcc environment. Removing intialization of the timer value; this shaves off a few bytes because globals are default initialized to zero. --- tmk_core/common/avr/timer.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) (limited to 'tmk_core/common') diff --git a/tmk_core/common/avr/timer.c b/tmk_core/common/avr/timer.c index 292b41c3a6..84af444885 100644 --- a/tmk_core/common/avr/timer.c +++ b/tmk_core/common/avr/timer.c @@ -17,6 +17,7 @@ along with this program. If not, see . #include #include +#include #include #include "timer_avr.h" #include "timer.h" @@ -24,7 +25,7 @@ along with this program. If not, see . // counter resolution 1ms // NOTE: union { uint32_t timer32; struct { uint16_t dummy; uint16_t timer16; }} -volatile uint32_t timer_count = 0; +volatile uint32_t timer_count; void timer_init(void) { @@ -52,10 +53,9 @@ void timer_init(void) inline void timer_clear(void) { - uint8_t sreg = SREG; - cli(); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { timer_count = 0; - SREG = sreg; + } } inline @@ -63,10 +63,9 @@ uint16_t timer_read(void) { uint32_t t; - uint8_t sreg = SREG; - cli(); - t = timer_count; - SREG = sreg; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + t = timer_count; + } return (t & 0xFFFF); } @@ -76,10 +75,9 @@ uint32_t timer_read32(void) { uint32_t t; - uint8_t sreg = SREG; - cli(); - t = timer_count; - SREG = sreg; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + t = timer_count; + } return t; } @@ -89,10 +87,9 @@ uint16_t timer_elapsed(uint16_t last) { uint32_t t; - uint8_t sreg = SREG; - cli(); - t = timer_count; - SREG = sreg; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + t = timer_count; + } return TIMER_DIFF_16((t & 0xFFFF), last); } @@ -102,10 +99,9 @@ uint32_t timer_elapsed32(uint32_t last) { uint32_t t; - uint8_t sreg = SREG; - cli(); - t = timer_count; - SREG = sreg; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + t = timer_count; + } return TIMER_DIFF_32(t, last); } -- cgit v1.2.3 From fe001d46fd06924bb81fe8d506f5be8894db3df0 Mon Sep 17 00:00:00 2001 From: Wilba6582 Date: Mon, 28 Nov 2016 18:31:16 +1100 Subject: Initial version of Raw HID interface --- tmk_core/common/raw_hid.h | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tmk_core/common/raw_hid.h (limited to 'tmk_core/common') diff --git a/tmk_core/common/raw_hid.h b/tmk_core/common/raw_hid.h new file mode 100644 index 0000000000..86da02fd15 --- /dev/null +++ b/tmk_core/common/raw_hid.h @@ -0,0 +1,8 @@ +#ifndef _RAW_HID_H_ +#define _RAW_HID_H_ + +void raw_hid_receive( uint8_t *data, uint8_t length ); + +void raw_hid_send( uint8_t *data, uint8_t length ); + +#endif -- cgit v1.2.3 From d8a608f3ff4cb4d73cd57be500fd9881e230099d Mon Sep 17 00:00:00 2001 From: Wilba6582 Date: Thu, 29 Dec 2016 18:28:48 +1100 Subject: Keycode refactor --- tmk_core/common/keycode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tmk_core/common') diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h index 2f208c54e0..54e9c322c1 100644 --- a/tmk_core/common/keycode.h +++ b/tmk_core/common/keycode.h @@ -85,7 +85,7 @@ along with this program. If not, see . #define KC_LCAP KC_LOCKING_CAPS #define KC_LNUM KC_LOCKING_NUM #define KC_LSCR KC_LOCKING_SCROLL -#define KC_ERAS KC_ALT_ERASE, +#define KC_ERAS KC_ALT_ERASE #define KC_CLR KC_CLEAR /* Japanese specific */ #define KC_ZKHK KC_GRAVE -- cgit v1.2.3