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.

93 lines
3.2 KiB

  1. // Copyright 2022 QMK
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <stdint.h>
  5. #include "gpio.h"
  6. #include "wait.h"
  7. // All this for ergodox led compatibility...
  8. #ifdef CONVERT_TO_PROTON_C
  9. # define ERGODOX_BOARD_LED_ON_STATE 1
  10. #else
  11. # define ERGODOX_BOARD_LED_ON_STATE 0
  12. #endif
  13. #define LED_BRIGHTNESS_LO 15
  14. #define LED_BRIGHTNESS_HI 255
  15. static inline void ergodox_right_led_1_off(void) { gpio_set_pin_output(LED_NUM_LOCK_PIN); gpio_write_pin(LED_NUM_LOCK_PIN, 0); }
  16. static inline void ergodox_right_led_1_on(void) { gpio_set_pin_output(LED_NUM_LOCK_PIN); gpio_write_pin(LED_NUM_LOCK_PIN, 1); }
  17. static inline void ergodox_right_led_2_off(void) { gpio_set_pin_output(LED_CAPS_LOCK_PIN); gpio_write_pin(LED_CAPS_LOCK_PIN, 0); }
  18. static inline void ergodox_right_led_2_on(void) { gpio_set_pin_output(LED_CAPS_LOCK_PIN); gpio_write_pin(LED_CAPS_LOCK_PIN, 1); }
  19. static inline void ergodox_right_led_3_off(void) { gpio_set_pin_output(LED_SCROLL_LOCK_PIN); gpio_write_pin(LED_SCROLL_LOCK_PIN, 0); }
  20. static inline void ergodox_right_led_3_on(void) { gpio_set_pin_output(LED_SCROLL_LOCK_PIN); gpio_write_pin(LED_SCROLL_LOCK_PIN, 1); }
  21. static inline void ergodox_right_led_on(uint8_t l) {
  22. switch (l) {
  23. case 1:
  24. ergodox_right_led_1_on();
  25. break;
  26. case 2:
  27. ergodox_right_led_2_on();
  28. break;
  29. case 3:
  30. ergodox_right_led_3_on();
  31. break;
  32. default:
  33. break;
  34. }
  35. }
  36. static inline void ergodox_right_led_off(uint8_t l) {
  37. switch (l) {
  38. case 1:
  39. ergodox_right_led_1_off();
  40. break;
  41. case 2:
  42. ergodox_right_led_2_off();
  43. break;
  44. case 3:
  45. ergodox_right_led_3_off();
  46. break;
  47. default:
  48. break;
  49. }
  50. }
  51. static inline void ergodox_board_led_off(void) { gpio_set_pin_output(D5); gpio_write_pin(D5, !ERGODOX_BOARD_LED_ON_STATE); }
  52. static inline void ergodox_board_led_on(void) { gpio_set_pin_output(D5); gpio_write_pin(D5, ERGODOX_BOARD_LED_ON_STATE); }
  53. static inline void ergodox_led_all_on(void) {
  54. ergodox_right_led_1_on();
  55. ergodox_right_led_2_on();
  56. ergodox_right_led_3_on();
  57. ergodox_board_led_on();
  58. }
  59. static inline void ergodox_led_all_off(void) {
  60. ergodox_right_led_1_off();
  61. ergodox_right_led_2_off();
  62. ergodox_right_led_3_off();
  63. ergodox_board_led_off();
  64. }
  65. static inline void ergodox_right_led_1_set(uint8_t n) {}
  66. static inline void ergodox_right_led_2_set(uint8_t n) {}
  67. static inline void ergodox_right_led_3_set(uint8_t n) {}
  68. static inline void ergodox_right_led_set(uint8_t l, uint8_t n) {}
  69. static inline void ergodox_led_all_set(uint8_t n) {}
  70. static inline void ergodox_led_init(void) {}
  71. static inline void ergodox_blink_all_leds(void) {
  72. ergodox_led_all_off();
  73. ergodox_board_led_on();
  74. wait_ms(50);
  75. ergodox_right_led_1_on();
  76. wait_ms(50);
  77. ergodox_right_led_2_on();
  78. wait_ms(50);
  79. ergodox_right_led_3_on();
  80. wait_ms(50);
  81. ergodox_right_led_1_off();
  82. wait_ms(50);
  83. ergodox_right_led_2_off();
  84. wait_ms(50);
  85. ergodox_right_led_3_off();
  86. wait_ms(50);
  87. ergodox_board_led_off();
  88. //ergodox_led_all_on();
  89. //wait_ms(333);
  90. ergodox_led_all_off();
  91. }