qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

phoenix.c (1770B)


      1 #include <hal.h>
      2 #include "usb_main.h"
      3 #include "phoenix.h"
      4 
      5 void bootmagic_scan(void) {
      6     matrix_scan();
      7     wait_ms(5);
      8     matrix_scan();
      9 
     10     if ((matrix_get_row(0) & 1) || (matrix_get_row(6) & 1)) {
     11         palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL);
     12         palSetPadMode(GPIOB, 5, PAL_MODE_OUTPUT_PUSHPULL);
     13         palSetPadMode(GPIOB, 6, PAL_MODE_OUTPUT_PUSHPULL);
     14         led1_off();
     15         led2_off();
     16         led3_off();
     17 
     18         led3_on();
     19         wait_ms(50);
     20         led2_on();
     21         wait_ms(50);
     22         led1_on();
     23         wait_ms(50);
     24 
     25         led3_off();
     26         wait_ms(50);
     27         led2_off();
     28         wait_ms(50);
     29         led1_off();
     30         wait_ms(50);
     31 
     32         bootloader_jump();
     33     }
     34 }
     35 
     36 void keyboard_pre_init_kb(void) {
     37     palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL);
     38     palSetPadMode(GPIOB, 5, PAL_MODE_OUTPUT_PUSHPULL);
     39     palSetPadMode(GPIOB, 6, PAL_MODE_OUTPUT_PUSHPULL);
     40     led1_off();
     41     led2_off();
     42     led3_off();
     43 
     44     keyboard_pre_init_user();
     45 }
     46 
     47 void keyboard_post_init_kb(void) {
     48     led1_on();
     49     wait_ms(50);
     50     led2_on();
     51     wait_ms(50);
     52     led3_on();
     53     wait_ms(50);
     54 
     55     led1_off();
     56     wait_ms(50);
     57     led2_off();
     58     wait_ms(50);
     59     led3_off();
     60     wait_ms(50);
     61 
     62     keyboard_post_init_user();
     63 }
     64 
     65 void manipulate_led(uint32_t led, bool on) {
     66     switch (led) {
     67     case 1:
     68         on ? led1_on() : led1_off();
     69     case 2:
     70         on ? led2_on() : led2_off();
     71     case 3:
     72         on ? led3_on() : led3_off();
     73     }
     74 }
     75 
     76 
     77 layer_state_t layer_state_set_kb(layer_state_t state) {
     78     state = layer_state_set_user(state);
     79 
     80     uint8_t layer = get_highest_layer(state);
     81     manipulate_led(1, layer  & 1);
     82     manipulate_led(2, layer >> 1 & 1);
     83     manipulate_led(3, layer >> 2 & 1);
     84     return state;
     85 }