keychron_qmk_firmware/keyboards/bpiphany
Dustin L. Howett b72a1aa3fe
Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243)
* 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).
2020-03-02 05:17:09 +00:00
..
frosty_flake Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243) 2020-03-02 05:17:09 +00:00
kitten_paw Trim firmware sizes from default rules.mk, part 1 (#8027) 2020-01-29 12:51:25 -05:00
pegasushoof Trim firmware sizes from default rules.mk, part 1 (#8027) 2020-01-29 12:51:25 -05:00
sixshooter [Keyboard] Use DIRECT_PINS instead of empty MATRIX_ROW_PINS: sixshooter (#8130) 2020-02-10 17:22:37 -08:00
tiger_lily Trim firmware sizes from default rules.mk, part 1 (#8027) 2020-01-29 12:51:25 -05:00
unloved_bastard Trim firmware sizes from default rules.mk, part 1 (#8027) 2020-01-29 12:51:25 -05:00
readme.md

Bathroom Epiphanies

bpiphany is the owner and designer of Bathroom Epiphanies.

He is based in Sweden and creates several controller boards as a swappable component for some off the shelf keyboards.