/reactor

Reactor is the firmware generator part of Fusion

Primary LanguageCMIT LicenseMIT

Reactor

Reactor is the firmware generator part of Fusion.

It takes the JSON's exported by the Fusion project and process them in to ready-to-be-downloaded firmware.

Reactor uses the awesome qmk_firmware by Jack Humbert. The firmware is included through a git subtree. To update the firmware, check out updating the firmware.

General process

  • Take JSON input
  • Generate a .c template file based on the JSON and the liquid template. Name it something unique
  • Create a hex file by compiling that c file. Name it something unique too
  • Read .hex file and return it

Local development

You can run the tests with be guard - which will watch for changes in ruby files and run whenever they do.

Testing is done in ruby 2.2.2

Updating the firmware

The qmk_firmware is included in this repository as a git subtree. Any changes to qmk_firmware should be made to the qmk_firmware repository not this repository.

To update the subtree from the qmk_firmware repository, pull the updates from qmk_firmware into this repository.

If you don't have the remote and the subtree setup:

  1. Add the remote for qmk_firmware

    git remote add -f qmk_firmware git@github.com:jackhumbert/qmk_firmware.git

  2. Add the subtree

    git subtree add --prefix lib/firmware qmk_firmware master --squash

If you have the remote and subtree setup:

  1. Fetch the updates

    git fetch qmk_firmware master

  2. Update the subtree

    git subtree pull --prefix lib/firmware qmk_firmware master --squash

Read more about git subtrees here

Compiling firmware

Linux

Using the instructions from the teensy loader build environment:

sudo apt-get install gcc-avr binutils-avr avr-libc

Mac OSX

Using homebrew it's easy to compile the firmware:

brew tap osx-cross/avr
brew install avr-libc

Next cd into the appropriate folder of the qmk_firmware, say keyboard/ergodox_ez

cd keyboard/ergodox_ez

Then run make for the default keymap, or

make KEYMAP="yourown"

for your own keymap. This requires a files keymap_yourown.c in the subfolder keymaps. You should end up with a ergodox_ez.hex file, which you can use with the Teensy loader or Teensy GUI