keyboard layout for qmk firmware
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.

102 lines
1.9 KiB

  1. #ifndef SPLIT_LEDS_H
  2. #define SPLIT_LEDS_H
  3. #ifdef USE_I2C
  4. #include <stddef.h>
  5. #ifdef __AVR__
  6. #include <avr/io.h>
  7. #include <avr/interrupt.h>
  8. #endif
  9. #endif
  10. #include "split_util.h"
  11. #define LED_RED 1
  12. #define LED_GREEN 2
  13. #define LED_BLUE 3
  14. enum led_state{
  15. LED_OFF = 0,
  16. LED_ON
  17. };
  18. typedef enum led_state led_state_t;
  19. inline void _led_1_off(void) { DDRF &= ~(1<<PF4); PORTF &= ~(1<<PF4); }
  20. inline void _led_1_on(void) { DDRF |= (1<<PF4); PORTF |= (1<<PF4); }
  21. inline void _led_2_off(void) { DDRF &= ~(1<<PF5); PORTF &= ~(1<<PF5); }
  22. inline void _led_2_on(void) { DDRF |= (1<<PF5); PORTF |= (1<<PF5); }
  23. inline void _led_3_off(void) { DDRF &= ~(1<<PF6); PORTF &= ~(1<<PF6); }
  24. inline void _led_3_on(void) { DDRF |= (1<<PF6); PORTF |= (1<<PF6); }
  25. inline void _led_all_off(void) { _led_1_off(); _led_2_off(); _led_3_off(); }
  26. inline void _led_all_on(void) { _led_1_on(); _led_2_on(); _led_3_on(); }
  27. uint8_t _slave_led_1;
  28. uint8_t _slave_led_2;
  29. uint8_t _slave_led_3;
  30. // MASTER LEDS: ////////////////////////////
  31. inline void _led_set_master(uint8_t num, led_state_t state)
  32. {
  33. switch (num) {
  34. case 1:
  35. if (state == LED_ON)
  36. _led_1_on();
  37. else
  38. _led_1_off();
  39. break;
  40. case 2:
  41. if (state == LED_ON)
  42. _led_2_on();
  43. else
  44. _led_2_off();
  45. break;
  46. case 3:
  47. if (state == LED_ON)
  48. _led_3_on();
  49. else
  50. _led_3_off();
  51. break;
  52. default:
  53. break;
  54. }
  55. }
  56. inline void _led_set_slave(uint8_t num, led_state_t state)
  57. {
  58. switch (num) {
  59. case 1:
  60. _slave_led_1 = state;
  61. break;
  62. case 2:
  63. _slave_led_2 = state;
  64. break;
  65. case 3:
  66. _slave_led_3 = state;
  67. break;
  68. default:
  69. break;
  70. }
  71. }
  72. void left_led_set(uint8_t num, led_state_t state);
  73. void right_led_set(uint8_t num, led_state_t state);
  74. void both_led_set(uint8_t num, led_state_t state);
  75. void left_led_all_on(void);
  76. void left_led_all_off(void);
  77. void right_led_all_on(void);
  78. void right_led_all_off(void);
  79. void both_led_all_on(void);
  80. void both_led_all_off(void);
  81. void _led_init(void);
  82. void _led_boot_animation(void);
  83. #endif