diff options
-rw-r--r-- | keyboards/ergodox_infinity/config.h | 19 | ||||
-rw-r--r-- | keyboards/ergodox_infinity/ergodox_infinity.c | 126 | ||||
-rw-r--r-- | keyboards/ergodox_infinity/led.c | 26 | ||||
-rw-r--r-- | keyboards/ergodox_infinity/matrix.c | 172 | ||||
-rw-r--r-- | keyboards/ergodox_infinity/rules.mk | 11 | ||||
-rw-r--r-- | keyboards/ergodox_infinity/visualizer.c | 3 | ||||
-rw-r--r-- | quantum/led_matrix/led_matrix.c | 2 |
7 files changed, 36 insertions, 323 deletions
diff --git a/keyboards/ergodox_infinity/config.h b/keyboards/ergodox_infinity/config.h index 275d4e1dc..e0208ba4d 100644 --- a/keyboards/ergodox_infinity/config.h +++ b/keyboards/ergodox_infinity/config.h | |||
@@ -54,7 +54,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
54 | /* key matrix size */ | 54 | /* key matrix size */ |
55 | #define MATRIX_ROWS 18 | 55 | #define MATRIX_ROWS 18 |
56 | #define MATRIX_COLS 5 | 56 | #define MATRIX_COLS 5 |
57 | #define LOCAL_MATRIX_ROWS 9 | 57 | |
58 | // For some reason, the rows are colums in the schematic, and vice versa | ||
59 | #define MATRIX_ROW_PINS { B2, B3, B18, B19, C0, C9, C10, C11, D0 } | ||
60 | #define MATRIX_COL_PINS { D1, D4, D5, D6, D7 } | ||
61 | #define UNUSED_PINS | ||
62 | |||
63 | /* COL2ROW, ROW2COL */ | ||
64 | #define DIODE_DIRECTION ROW2COL | ||
65 | |||
66 | /* Serial config (for communication between halves) */ | ||
67 | #define SERIAL_USART_DRIVER SD1 // Only true for the master half | ||
68 | #define SERIAL_USART_CONFIG { (SERIAL_USART_SPEED), } // Only field is speed | ||
69 | #define SERIAL_USART_FULL_DUPLEX | ||
70 | #define SERIAL_USART_TIMEOUT 50 | ||
58 | 71 | ||
59 | /* number of backlight levels */ | 72 | /* number of backlight levels */ |
60 | #define BACKLIGHT_LEVELS 3 | 73 | #define BACKLIGHT_LEVELS 3 |
@@ -103,10 +116,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
103 | /* Set 0 if debouncing isn't needed */ | 116 | /* Set 0 if debouncing isn't needed */ |
104 | #define DEBOUNCE 5 | 117 | #define DEBOUNCE 5 |
105 | 118 | ||
106 | #define SERIAL_LINK_BAUD 562500 | ||
107 | #define SERIAL_LINK_THREAD_PRIORITY (NORMALPRIO - 1) | ||
108 | |||
109 | #define VISUALIZER_USER_DATA_SIZE 16 | 119 | #define VISUALIZER_USER_DATA_SIZE 16 |
120 | |||
110 | /* | 121 | /* |
111 | * Feature disable options | 122 | * Feature disable options |
112 | * These options are also useful to firmware size reduction. | 123 | * These options are also useful to firmware size reduction. |
diff --git a/keyboards/ergodox_infinity/ergodox_infinity.c b/keyboards/ergodox_infinity/ergodox_infinity.c index b802bf014..76cbca07f 100644 --- a/keyboards/ergodox_infinity/ergodox_infinity.c +++ b/keyboards/ergodox_infinity/ergodox_infinity.c | |||
@@ -8,47 +8,6 @@ | |||
8 | # include "lcd_backlight.h" | 8 | # include "lcd_backlight.h" |
9 | #endif | 9 | #endif |
10 | 10 | ||
11 | #if (defined(LED_MATRIX_ENABLE) || defined(WPM_ENABLE)) | ||
12 | # include "serial_link/protocol/transport.h" | ||
13 | |||
14 | # ifdef LED_MATRIX_ENABLE | ||
15 | MASTER_TO_ALL_SLAVES_OBJECT(led_matrix, led_eeconfig_t); | ||
16 | MASTER_TO_ALL_SLAVES_OBJECT(led_suspend_state, bool); | ||
17 | static led_eeconfig_t last_sent_led_matrix; | ||
18 | static uint16_t led_matrix_sent_timer = 0; | ||
19 | |||
20 | void send_led_suspend_state(void) { | ||
21 | if (is_serial_link_master()) { | ||
22 | *begin_write_led_suspend_state() = led_matrix_get_suspend_state(); | ||
23 | end_write_led_suspend_state(); | ||
24 | } | ||
25 | } | ||
26 | # endif | ||
27 | |||
28 | # ifdef WPM_ENABLE | ||
29 | # include "wpm.h" | ||
30 | MASTER_TO_ALL_SLAVES_OBJECT(current_wpm, uint8_t); | ||
31 | static uint8_t last_sent_wpm = 0; | ||
32 | # endif | ||
33 | |||
34 | static remote_object_t *remote_objects[] = { | ||
35 | # ifdef LED_MATRIX_ENABLE | ||
36 | REMOTE_OBJECT(led_matrix), | ||
37 | REMOTE_OBJECT(led_suspend_state), | ||
38 | # endif | ||
39 | # ifdef WPM_ENABLE | ||
40 | REMOTE_OBJECT(current_wpm), | ||
41 | # endif | ||
42 | }; | ||
43 | #endif | ||
44 | |||
45 | void init_serial_link_hal(void) { | ||
46 | PORTA->PCR[1] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(2); | ||
47 | PORTA->PCR[2] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(2); | ||
48 | PORTE->PCR[0] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(3); | ||
49 | PORTE->PCR[1] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(3); | ||
50 | } | ||
51 | |||
52 | #define RED_PIN 1 | 11 | #define RED_PIN 1 |
53 | #define GREEN_PIN 2 | 12 | #define GREEN_PIN 2 |
54 | #define BLUE_PIN 3 | 13 | #define BLUE_PIN 3 |
@@ -176,70 +135,15 @@ void matrix_init_kb(void) { | |||
176 | #endif | 135 | #endif |
177 | 136 | ||
178 | matrix_init_user(); | 137 | matrix_init_user(); |
179 | #if (defined(LED_MATRIX_ENABLE) || defined(WPM_ENABLE)) | ||
180 | add_remote_objects(remote_objects, sizeof(remote_objects) / sizeof(remote_object_t *)); | ||
181 | #endif | ||
182 | } | 138 | } |
183 | 139 | ||
184 | void matrix_scan_kb(void) { | 140 | void matrix_scan_kb(void) { |
185 | // put your looping keyboard code here | 141 | // put your looping keyboard code here |
186 | // runs every cycle (a lot) | 142 | // runs every cycle (a lot) |
187 | 143 | ||
188 | #ifdef LED_MATRIX_ENABLE | ||
189 | if (is_serial_link_master()) { | ||
190 | if (!led_matrix_get_suspend_state()) { | ||
191 | if (timer_elapsed(led_matrix_sent_timer) >= 5000 || memcmp((void *)&last_sent_led_matrix, (void *)&led_matrix_eeconfig, sizeof(last_sent_led_matrix))) { | ||
192 | led_matrix_sent_timer = timer_read(); | ||
193 | memcpy((void *)&last_sent_led_matrix, (void *)&led_matrix_eeconfig, sizeof(last_sent_led_matrix)); | ||
194 | *begin_write_led_matrix() = last_sent_led_matrix; | ||
195 | end_write_led_matrix(); | ||
196 | } | ||
197 | } | ||
198 | } else if (is_serial_link_connected()) { | ||
199 | bool *new_led_suspend_state = read_led_suspend_state(); | ||
200 | if (new_led_suspend_state) { | ||
201 | led_matrix_set_suspend_state(*new_led_suspend_state); | ||
202 | } | ||
203 | if (!led_matrix_get_suspend_state()) { | ||
204 | led_eeconfig_t *new_led_matrix = read_led_matrix(); | ||
205 | if (new_led_matrix) { | ||
206 | memcpy((void *)&led_matrix_eeconfig, (void *)new_led_matrix, sizeof(last_sent_led_matrix)); | ||
207 | } | ||
208 | } | ||
209 | } | ||
210 | #endif | ||
211 | |||
212 | #ifdef WPM_ENABLE | ||
213 | if (is_serial_link_master()) { | ||
214 | uint8_t current_wpm = get_current_wpm(); | ||
215 | if (current_wpm != last_sent_wpm) { | ||
216 | *begin_write_current_wpm() = current_wpm; | ||
217 | end_write_current_wpm(); | ||
218 | last_sent_wpm = current_wpm; | ||
219 | } | ||
220 | } else if (is_serial_link_connected()) { | ||
221 | uint8_t *new_wpm = read_current_wpm(); | ||
222 | if (new_wpm) { | ||
223 | set_current_wpm(*new_wpm); | ||
224 | } | ||
225 | } | ||
226 | #endif | ||
227 | |||
228 | matrix_scan_user(); | 144 | matrix_scan_user(); |
229 | } | 145 | } |
230 | 146 | ||
231 | bool is_keyboard_master(void) { return is_serial_link_master(); } | ||
232 | |||
233 | bool is_keyboard_left(void) { | ||
234 | #if defined(EE_HANDS) | ||
235 | return eeconfig_read_handedness(); | ||
236 | #elif defined(MASTER_IS_ON_RIGHT) | ||
237 | return !is_keyboard_master(); | ||
238 | #else | ||
239 | return is_keyboard_master(); | ||
240 | #endif | ||
241 | } | ||
242 | |||
243 | __attribute__ ((weak)) void ergodox_board_led_on(void) {} | 147 | __attribute__ ((weak)) void ergodox_board_led_on(void) {} |
244 | 148 | ||
245 | __attribute__ ((weak)) void ergodox_right_led_1_on(void) {} | 149 | __attribute__ ((weak)) void ergodox_right_led_1_on(void) {} |
@@ -262,20 +166,6 @@ __attribute__ ((weak)) void ergodox_right_led_2_set(uint8_t n) {} | |||
262 | 166 | ||
263 | __attribute__ ((weak)) void ergodox_right_led_3_set(uint8_t n) {} | 167 | __attribute__ ((weak)) void ergodox_right_led_3_set(uint8_t n) {} |
264 | 168 | ||
265 | void suspend_power_down_kb(void) { | ||
266 | #ifdef LED_MATRIX_ENABLE | ||
267 | send_led_suspend_state(); | ||
268 | #endif | ||
269 | suspend_power_down_user(); | ||
270 | } | ||
271 | |||
272 | void suspend_wakeup_init_kb(void) { | ||
273 | #ifdef LED_MATRIX_ENABLE | ||
274 | send_led_suspend_state(); | ||
275 | #endif | ||
276 | suspend_wakeup_init_user(); | ||
277 | } | ||
278 | |||
279 | #ifdef SWAP_HANDS_ENABLE | 169 | #ifdef SWAP_HANDS_ENABLE |
280 | __attribute__ ((weak)) | 170 | __attribute__ ((weak)) |
281 | const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { | 171 | const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { |
@@ -472,3 +362,19 @@ __attribute__((weak)) void st7565_task_user(void) { | |||
472 | } | 362 | } |
473 | } | 363 | } |
474 | #endif | 364 | #endif |
365 | |||
366 | #if defined(SPLIT_KEYBOARD) | ||
367 | void usart_master_init(SerialDriver **driver) { | ||
368 | PORTA->PCR[1] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(2); | ||
369 | PORTA->PCR[2] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(2); | ||
370 | |||
371 | // driver is set to SD1 in config.h | ||
372 | } | ||
373 | |||
374 | void usart_slave_init(SerialDriver **driver) { | ||
375 | PORTE->PCR[0] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(3); | ||
376 | PORTE->PCR[1] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(3); | ||
377 | |||
378 | *driver = &SD2; | ||
379 | } | ||
380 | #endif | ||
diff --git a/keyboards/ergodox_infinity/led.c b/keyboards/ergodox_infinity/led.c deleted file mode 100644 index 0b50247d7..000000000 --- a/keyboards/ergodox_infinity/led.c +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
3 | |||
4 | This program is free software: you can redistribute it and/or modify | ||
5 | it under the terms of the GNU General Public License as published by | ||
6 | the Free Software Foundation, either version 2 of the License, or | ||
7 | (at your option) any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #include <hal.h> | ||
19 | |||
20 | #include "led.h" | ||
21 | |||
22 | |||
23 | void led_set(uint8_t usb_led) { | ||
24 | //TODO: Add led emulation if there's no customized visualization | ||
25 | (void)usb_led; | ||
26 | } | ||
diff --git a/keyboards/ergodox_infinity/matrix.c b/keyboards/ergodox_infinity/matrix.c deleted file mode 100644 index 0fca56a97..000000000 --- a/keyboards/ergodox_infinity/matrix.c +++ /dev/null | |||
@@ -1,172 +0,0 @@ | |||
1 | /* | ||
2 | Copyright 2016 Fred Sundvik <fsundvik@gmail.com> | ||
3 | Jun Wako <wakojun@gmail.com> | ||
4 | |||
5 | This program is free software: you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation, either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | */ | ||
18 | #include <stdint.h> | ||
19 | #include <stdbool.h> | ||
20 | #include <string.h> | ||
21 | #include <hal.h> | ||
22 | #include "timer.h" | ||
23 | #include "wait.h" | ||
24 | #include "print.h" | ||
25 | #include "debug.h" | ||
26 | #include "matrix.h" | ||
27 | #include "keyboard.h" | ||
28 | #include "serial_link/system/serial_link.h" | ||
29 | |||
30 | |||
31 | /* | ||
32 | * Infinity ErgoDox Pinusage: | ||
33 | * Column pins are input with internal pull-down. Row pins are output and strobe with high. | ||
34 | * Key is high or 1 when it turns on. | ||
35 | * | ||
36 | * col: { PTD1, PTD4, PTD5, PTD6, PTD7 } | ||
37 | * row: { PTB2, PTB3, PTB18, PTB19, PTC0, PTC9, PTC10, PTC11, PTD0 } | ||
38 | */ | ||
39 | /* matrix state(1:on, 0:off) */ | ||
40 | static matrix_row_t matrix[MATRIX_ROWS]; | ||
41 | static matrix_row_t matrix_debouncing[LOCAL_MATRIX_ROWS]; | ||
42 | static bool debouncing = false; | ||
43 | static uint16_t debouncing_time = 0; | ||
44 | |||
45 | |||
46 | void matrix_init(void) | ||
47 | { | ||
48 | /* Row(sense) */ | ||
49 | palSetPadMode(GPIOD, 1, PAL_MODE_INPUT_PULLDOWN); | ||
50 | palSetPadMode(GPIOD, 4, PAL_MODE_INPUT_PULLDOWN); | ||
51 | palSetPadMode(GPIOD, 5, PAL_MODE_INPUT_PULLDOWN); | ||
52 | palSetPadMode(GPIOD, 6, PAL_MODE_INPUT_PULLDOWN); | ||
53 | palSetPadMode(GPIOD, 7, PAL_MODE_INPUT_PULLDOWN); | ||
54 | |||
55 | /* Column(strobe) */ | ||
56 | palSetPadMode(GPIOB, 2, PAL_MODE_OUTPUT_PUSHPULL); | ||
57 | palSetPadMode(GPIOB, 3, PAL_MODE_OUTPUT_PUSHPULL); | ||
58 | palSetPadMode(GPIOB, 18, PAL_MODE_OUTPUT_PUSHPULL); | ||
59 | palSetPadMode(GPIOB, 19, PAL_MODE_OUTPUT_PUSHPULL); | ||
60 | palSetPadMode(GPIOC, 0, PAL_MODE_OUTPUT_PUSHPULL); | ||
61 | palSetPadMode(GPIOC, 9, PAL_MODE_OUTPUT_PUSHPULL); | ||
62 | palSetPadMode(GPIOC, 10, PAL_MODE_OUTPUT_PUSHPULL); | ||
63 | palSetPadMode(GPIOC, 11, PAL_MODE_OUTPUT_PUSHPULL); | ||
64 | palSetPadMode(GPIOD, 0, PAL_MODE_OUTPUT_PUSHPULL); | ||
65 | |||
66 | memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t)); | ||
67 | memset(matrix_debouncing, 0, LOCAL_MATRIX_ROWS * sizeof(matrix_row_t)); | ||
68 | |||
69 | matrix_init_quantum(); | ||
70 | } | ||
71 | |||
72 | uint8_t matrix_scan(void) | ||
73 | { | ||
74 | for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) { | ||
75 | matrix_row_t data = 0; | ||
76 | |||
77 | // strobe row | ||
78 | switch (row) { | ||
79 | case 0: palSetPad(GPIOB, 2); break; | ||
80 | case 1: palSetPad(GPIOB, 3); break; | ||
81 | case 2: palSetPad(GPIOB, 18); break; | ||
82 | case 3: palSetPad(GPIOB, 19); break; | ||
83 | case 4: palSetPad(GPIOC, 0); break; | ||
84 | case 5: palSetPad(GPIOC, 9); break; | ||
85 | case 6: palSetPad(GPIOC, 10); break; | ||
86 | case 7: palSetPad(GPIOC, 11); break; | ||
87 | case 8: palSetPad(GPIOD, 0); break; | ||
88 | } | ||
89 | |||
90 | // need wait to settle pin state | ||
91 | // if you wait too short, or have a too high update rate | ||
92 | // the keyboard might freeze, or there might not be enough | ||
93 | // processing power to update the LCD screen properly. | ||
94 | // 20us, or two ticks at 100000Hz seems to be OK | ||
95 | wait_us(20); | ||
96 | |||
97 | // read col data: { PTD1, PTD4, PTD5, PTD6, PTD7 } | ||
98 | data = ((palReadPort(GPIOD) & 0xF0) >> 3) | | ||
99 | ((palReadPort(GPIOD) & 0x02) >> 1); | ||
100 | |||
101 | // un-strobe row | ||
102 | switch (row) { | ||
103 | case 0: palClearPad(GPIOB, 2); break; | ||
104 | case 1: palClearPad(GPIOB, 3); break; | ||
105 | case 2: palClearPad(GPIOB, 18); break; | ||
106 | case 3: palClearPad(GPIOB, 19); break; | ||
107 | case 4: palClearPad(GPIOC, 0); break; | ||
108 | case 5: palClearPad(GPIOC, 9); break; | ||
109 | case 6: palClearPad(GPIOC, 10); break; | ||
110 | case 7: palClearPad(GPIOC, 11); break; | ||
111 | case 8: palClearPad(GPIOD, 0); break; | ||
112 | } | ||
113 | |||
114 | if (matrix_debouncing[row] != data) { | ||
115 | matrix_debouncing[row] = data; | ||
116 | debouncing = true; | ||
117 | debouncing_time = timer_read(); | ||
118 | } | ||
119 | } | ||
120 | |||
121 | uint8_t offset = 0; | ||
122 | if (is_serial_link_master() && !is_keyboard_left()) { | ||
123 | offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS; | ||
124 | } | ||
125 | |||
126 | if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { | ||
127 | for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) { | ||
128 | matrix[offset + row] = matrix_debouncing[row]; | ||
129 | } | ||
130 | debouncing = false; | ||
131 | } | ||
132 | matrix_scan_quantum(); | ||
133 | return 1; | ||
134 | } | ||
135 | |||
136 | bool matrix_is_on(uint8_t row, uint8_t col) | ||
137 | { | ||
138 | return (matrix[row] & (1<<col)); | ||
139 | } | ||
140 | |||
141 | matrix_row_t matrix_get_row(uint8_t row) | ||
142 | { | ||
143 | return matrix[row]; | ||
144 | } | ||
145 | |||
146 | void matrix_print(void) | ||
147 | { | ||
148 | xprintf("\nr/c 01234567\n"); | ||
149 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { | ||
150 | xprintf("%X0: ", row); | ||
151 | matrix_row_t data = matrix_get_row(row); | ||
152 | for (int col = 0; col < MATRIX_COLS; col++) { | ||
153 | if (data & (1<<col)) | ||
154 | xprintf("1"); | ||
155 | else | ||
156 | xprintf("0"); | ||
157 | } | ||
158 | xprintf("\n"); | ||
159 | } | ||
160 | } | ||
161 | |||
162 | void matrix_set_remote(matrix_row_t* rows, uint8_t index) { | ||
163 | uint8_t offset = 0; | ||
164 | if (is_keyboard_left()) { | ||
165 | offset = LOCAL_MATRIX_ROWS * (index + 1); | ||
166 | } else { | ||
167 | offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS * (index + 2); | ||
168 | } | ||
169 | for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) { | ||
170 | matrix[offset + row] = rows[row]; | ||
171 | } | ||
172 | } | ||
diff --git a/keyboards/ergodox_infinity/rules.mk b/keyboards/ergodox_infinity/rules.mk index c7ff07d4e..fbd52cd25 100644 --- a/keyboards/ergodox_infinity/rules.mk +++ b/keyboards/ergodox_infinity/rules.mk | |||
@@ -12,18 +12,17 @@ MOUSEKEY_ENABLE = yes # Mouse keys | |||
12 | EXTRAKEY_ENABLE = yes # Audio control and System control | 12 | EXTRAKEY_ENABLE = yes # Audio control and System control |
13 | CONSOLE_ENABLE = no # Console for debug | 13 | CONSOLE_ENABLE = no # Console for debug |
14 | COMMAND_ENABLE = yes # Commands for debug and configuration | 14 | COMMAND_ENABLE = yes # Commands for debug and configuration |
15 | CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ | ||
16 | SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend | 15 | SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend |
17 | NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | 16 | NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work |
18 | UNICODE_ENABLE = yes # Unicode | 17 | UNICODE_ENABLE = yes # Unicode |
19 | SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard | 18 | SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard |
20 | 19 | ||
21 | CUSTOM_MATRIX = yes # Custom matrix file | ||
22 | SERIAL_LINK_ENABLE = yes | ||
23 | |||
24 | MIDI_ENABLE = no | 20 | MIDI_ENABLE = no |
25 | RGBLIGHT_ENABLE = no | 21 | RGBLIGHT_ENABLE = no |
26 | 22 | ||
23 | SPLIT_KEYBOARD = yes | ||
24 | SERIAL_DRIVER = usart | ||
25 | |||
27 | ST7565_ENABLE = yes | 26 | ST7565_ENABLE = yes |
28 | 27 | ||
29 | LED_MATRIX_ENABLE = yes | 28 | LED_MATRIX_ENABLE = yes |
@@ -36,8 +35,4 @@ LCD_DRIVER = st7565 | |||
36 | LCD_WIDTH = 128 | 35 | LCD_WIDTH = 128 |
37 | LCD_HEIGHT = 32 | 36 | LCD_HEIGHT = 32 |
38 | 37 | ||
39 | # project specific files | ||
40 | SRC = matrix.c \ | ||
41 | led.c | ||
42 | |||
43 | LAYOUTS = ergodox | 38 | LAYOUTS = ergodox |
diff --git a/keyboards/ergodox_infinity/visualizer.c b/keyboards/ergodox_infinity/visualizer.c index 4b16021ab..1ea891e83 100644 --- a/keyboards/ergodox_infinity/visualizer.c +++ b/keyboards/ergodox_infinity/visualizer.c | |||
@@ -30,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
30 | #include "visualizer_keyframes.h" | 30 | #include "visualizer_keyframes.h" |
31 | #include "lcd_keyframes.h" | 31 | #include "lcd_keyframes.h" |
32 | #include "lcd_backlight_keyframes.h" | 32 | #include "lcd_backlight_keyframes.h" |
33 | #include "system/serial_link.h" | ||
34 | #include "default_animations.h" | 33 | #include "default_animations.h" |
35 | 34 | ||
36 | static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF); | 35 | static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF); |
@@ -177,7 +176,7 @@ static void update_emulated_leds(visualizer_state_t* state, visualizer_keyboard_ | |||
177 | uint8_t new_index; | 176 | uint8_t new_index; |
178 | uint8_t old_index; | 177 | uint8_t old_index; |
179 | 178 | ||
180 | if (is_serial_link_master()) { | 179 | if (is_keyboard_master()) { |
181 | new_index = get_led_index_master(user_data_new); | 180 | new_index = get_led_index_master(user_data_new); |
182 | old_index = get_led_index_master(user_data_old); | 181 | old_index = get_led_index_master(user_data_old); |
183 | } | 182 | } |
diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c index fe7f1f039..bcf258b26 100644 --- a/quantum/led_matrix/led_matrix.c +++ b/quantum/led_matrix/led_matrix.c | |||
@@ -459,7 +459,7 @@ void led_matrix_init(void) { | |||
459 | 459 | ||
460 | void led_matrix_set_suspend_state(bool state) { | 460 | void led_matrix_set_suspend_state(bool state) { |
461 | #ifdef LED_DISABLE_WHEN_USB_SUSPENDED | 461 | #ifdef LED_DISABLE_WHEN_USB_SUSPENDED |
462 | if (state) { | 462 | if (state && is_keyboard_master()) { |
463 | led_matrix_set_value_all(0); // turn off all LEDs when suspending | 463 | led_matrix_set_value_all(0); // turn off all LEDs when suspending |
464 | } | 464 | } |
465 | suspend_state = state; | 465 | suspend_state = state; |