micro.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. // Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "micro.h"
  4. #if defined(ENCODER_ENABLE)
  5. bool encoder_update_kb(uint8_t index, bool clockwise) {
  6. if (!encoder_update_user(index, clockwise)) {
  7. return false;
  8. }
  9. if (index == 0) {
  10. if (clockwise) {
  11. tap_code_delay(KC_VOLU, 10);
  12. } else {
  13. tap_code_delay(KC_VOLD, 10);
  14. }
  15. } else if (index == 1) {
  16. if (clockwise) {
  17. tap_code_delay(MS_WHLU, 10);
  18. } else {
  19. tap_code_delay(MS_WHLD, 10);
  20. }
  21. }
  22. return true;
  23. }
  24. #endif
  25. void work_louder_micro_led_1_on(void) {
  26. gpio_set_pin_output(WORK_LOUDER_LED_PIN_1);
  27. gpio_write_pin(WORK_LOUDER_LED_PIN_1, true);
  28. }
  29. void work_louder_micro_led_2_on(void) {
  30. gpio_set_pin_output(WORK_LOUDER_LED_PIN_2);
  31. gpio_write_pin(WORK_LOUDER_LED_PIN_2, true);
  32. }
  33. void work_louder_micro_led_3_on(void) {
  34. gpio_set_pin_output(WORK_LOUDER_LED_PIN_3);
  35. gpio_write_pin(WORK_LOUDER_LED_PIN_3, true);
  36. }
  37. void work_louder_micro_led_1_off(void) {
  38. gpio_set_pin_input(WORK_LOUDER_LED_PIN_1);
  39. gpio_write_pin(WORK_LOUDER_LED_PIN_1, false);
  40. }
  41. void work_louder_micro_led_2_off(void) {
  42. gpio_set_pin_input(WORK_LOUDER_LED_PIN_2);
  43. gpio_write_pin(WORK_LOUDER_LED_PIN_2, false);
  44. }
  45. void work_louder_micro_led_3_off(void) {
  46. gpio_set_pin_input(WORK_LOUDER_LED_PIN_3);
  47. gpio_write_pin(WORK_LOUDER_LED_PIN_3, false);
  48. }
  49. void work_louder_micro_led_all_on(void) {
  50. work_louder_micro_led_1_on();
  51. work_louder_micro_led_2_on();
  52. work_louder_micro_led_3_on();
  53. }
  54. void work_louder_micro_led_all_off(void) {
  55. work_louder_micro_led_1_off();
  56. work_louder_micro_led_2_off();
  57. work_louder_micro_led_3_off();
  58. }
  59. void work_louder_micro_led_1_set(uint8_t n) {
  60. #if WORK_LOUDER_LED_PIN_1 == B6
  61. OCR1B = n;
  62. #else
  63. n ? work_louder_micro_led_1_on() : work_louder_micro_led_1_off();
  64. #endif
  65. }
  66. void work_louder_micro_led_2_set(uint8_t n) {
  67. #if WORK_LOUDER_LED_PIN_2 == B7
  68. OCR1C = n;
  69. #else
  70. n ? work_louder_micro_led_2_on() : work_louder_micro_led_2_off();
  71. #endif
  72. }
  73. void work_louder_micro_led_3_set(uint8_t n) {
  74. #if WORK_LOUDER_LED_PIN_3 == B5
  75. OCR1A = n;
  76. #else
  77. n ? work_louder_micro_led_3_on() : work_louder_micro_led_3_off();
  78. #endif
  79. }
  80. void work_louder_micro_led_all_set(uint8_t n) {
  81. work_louder_micro_led_1_set(n);
  82. work_louder_micro_led_2_set(n);
  83. work_louder_micro_led_3_set(n);
  84. }
  85. void keyboard_post_init_kb(void) {
  86. TCCR1A = 0b10101001; // set and configure fast PWM
  87. TCCR1B = 0b00001001; // set and configure fast PWM
  88. keyboard_post_init_user();
  89. }
  90. void work_louder_led_init_animation(void) {
  91. work_louder_micro_led_all_off();
  92. wait_ms(500);
  93. work_louder_micro_led_1_on();
  94. wait_ms(100);
  95. work_louder_micro_led_2_on();
  96. wait_ms(100);
  97. work_louder_micro_led_3_on();
  98. wait_ms(100);
  99. work_louder_micro_led_1_off();
  100. wait_ms(100);
  101. work_louder_micro_led_2_off();
  102. wait_ms(100);
  103. work_louder_micro_led_3_off();
  104. wait_ms(200);
  105. }
  106. void suspend_power_down_kb(void) {
  107. suspend_power_down_user();
  108. work_louder_micro_led_all_off();
  109. }
  110. void suspend_wakeup_init_kb(void) {
  111. work_louder_led_init_animation();
  112. suspend_wakeup_init_user();
  113. }