 b72a1aa3fe
			
		
	
	
		b72a1aa3fe
		
			
		
	
	
	
	
		
			
			* Keyboard: revamp frosty-flake leds
This commit transitions bpiphany/frosty_flake to led_update_{kb,user}
and rewrites the AVR bit twiddling logic to use the standard QMK GPIO
API.
* Keyboard: rewrite frosty_flake's matrix reader to be a lite custom matrix
This commit replaces frosty_flake's custom matrix and debounce logic
with a "lite" custom matrix. In addition to being somewhat clearer, this
allows a consumer of the flake board to choose their own debouncing
algorithm. The one closest to the implementation originally in use is
sym_g, but this opens us up to supporting eager_pk and eager_pr.
The original matrix code was 18 columns for 8 rows, but using a single
row read and unpacking the bits into individual columns. To simplify,
I've changed the key layout to be 8C 18R instead of 18C 8R: this lets us
use a single read directly into the matrix _and_ drop down to a uint8_t
instead of a uint32_t for matrix_row_t.
Since we're no longer implementing our own debouncing and row unpacking,
we save ~400 bytes on the final firmware image.
Fully tested against a CM Storm QFR hosting the flake -- this commit
message was written using the new matrix code.
Firmware Sizes (assuming stock configuration as of 42d6270f2)
Matrix+Debounce     Size (bytes)
---------------     ------------
original            17740
new + sym_g         17284
new + eager_pr      18106
new + eager_pk      18204
I expect that there are some scanning speed benefits as well.
* Keyboard: update frosty_flake's UNUSED_PINS
* Keyboard: Remove meaningless weak redefinitions from frosty
These are not necessary (and all of them already live somewhere in
Quantum).
		
	
			
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			534 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			534 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "frosty_flake.h"
 | |
| 
 | |
| void keyboard_pre_init_kb() {
 | |
|     setPinOutput(B7); // num lock
 | |
|     writePinHigh(B7);
 | |
|     setPinOutput(C5); // caps lock
 | |
|     writePinHigh(C7);
 | |
|     setPinOutput(C6); // scroll lock
 | |
|     writePinHigh(C6);
 | |
| 
 | |
|     keyboard_pre_init_user();
 | |
| }
 | |
| 
 | |
| bool led_update_kb(led_t usb_led) {
 | |
|     // user requests no further processing
 | |
|     if (!led_update_user(usb_led))
 | |
|         return true;
 | |
| 
 | |
|     writePin(C5, !usb_led.caps_lock);
 | |
|     writePin(B7, !usb_led.num_lock);
 | |
|     writePin(C6, !usb_led.scroll_lock);
 | |
| 
 | |
|     return true;
 | |
| }
 |