You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
1.7 KiB

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