keychron_qmk_firmware/keyboards/bpiphany/frosty_flake
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
..
keymaps 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
config.h Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243) 2020-03-02 05:17:09 +00:00
frosty_flake.c Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243) 2020-03-02 05:17:09 +00:00
frosty_flake.h Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243) 2020-03-02 05:17:09 +00:00
info.json Keyboard: Bpiphany Frosty Flake Refactor, Configurator support and readme cleanup (#4648) 2018-12-14 13:01:04 -08:00
matrix.c Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243) 2020-03-02 05:17:09 +00:00
readme.md Keyboard: Bpiphany Frosty Flake Refactor, Configurator support and readme cleanup (#4648) 2018-12-14 13:01:04 -08:00
rules.mk Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243) 2020-03-02 05:17:09 +00:00

Frosty Flake Controller

This is the firmware for Rev. 20140521 of the Frosty Flake controller by Bathroom Epiphanies, a replacement controller for the Cooler Master Quick Fire Rapid.

The code was adapted from the BathroomEpiphanies TMK Firmware, but has been cleaned up to match the schematic and gone through some minor refactoring for QMK.

104 and 87 layout support

Support for both 104 key and 87 key layouts is provided. See the keymaps default (104) and tkl (87) for example layouts.

Keyboard Maintainer: QMK Community
Hardware Supported: Frosty Flake
Hardware Availability: 1upkeyboards

Make example for this keyboard (after setting up your build environment):

104 key default layout:

make bpiphany/frosty_flake:default

To directly flash the frosty_flake after compiling use:

make bpiphany/frosty_flake:default:dfu

87 key tkl layout:

make bpiphany/frosty_flake:tkl:dfu

See the build environment setup and the make instructions for more information. Brand new to QMK? Start with our Complete Newbs Guide.