tcv3.c 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /* Copyright 2019 MechMerlin <mechmerlin@gmail.com>
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #include "tcv3.h"
  17. #include "indicator_leds.h"
  18. enum BACKLIGHT_AREAS {
  19. BACKLIGHT_ALPHA = 0b0000001,
  20. BACKLIGHT_FROW = 0b0000010,
  21. BACKLIGHT_MOD = 0b0000100,
  22. BACKLIGHT_MACRO = 0b0001000,
  23. BACKLIGHT_SWITCH = 0b0001111
  24. };
  25. // uint8_t backlight_rgb_r = 255;
  26. // uint8_t backlight_rgb_g = 0;
  27. // uint8_t backlight_rgb_b = 0;
  28. // uint8_t backlight_os_state = 0;
  29. // uint32_t backlight_layer_state = 0;
  30. // void backlight_toggle_rgb(bool enabled)
  31. // {
  32. // if(enabled) {
  33. // uint8_t rgb[17][3] = {
  34. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  35. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  36. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  37. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  38. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  39. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  40. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  41. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  42. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  43. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  44. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  45. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  46. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  47. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  48. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  49. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b},
  50. // {backlight_rgb_r, backlight_rgb_g, backlight_rgb_b}
  51. // };
  52. // backlight_set_rgb(rgb);
  53. // } else {
  54. // uint8_t rgb[17][3] = {
  55. // {0, 0, 0},
  56. // {0, 0, 0},
  57. // {0, 0, 0},
  58. // {0, 0, 0},
  59. // {0, 0, 0},
  60. // {0, 0, 0},
  61. // {0, 0, 0},
  62. // {0, 0, 0},
  63. // {0, 0, 0},
  64. // {0, 0, 0},
  65. // {0, 0, 0},
  66. // {0, 0, 0},
  67. // {0, 0, 0},
  68. // {0, 0, 0},
  69. // {0, 0, 0},
  70. // {0, 0, 0},
  71. // {0, 0, 0}
  72. // };
  73. // backlight_set_rgb(rgb);
  74. // }
  75. // }
  76. // void backlight_set_rgb(uint8_t cfg[17][3])
  77. // {
  78. // cli();
  79. // for(uint8_t i = 0; i < 17; ++i) {
  80. // send_color(cfg[i][0], cfg[i][1], cfg[i][2], Device_PCBRGB);
  81. // }
  82. // sei();
  83. // show();
  84. // }
  85. // Q5, Q6, Q7 is connected to B1 - alphas
  86. // Q8, Q9 is connected to B2 - frow
  87. // Q1, Q2, Q3 is connected to B3 - mods
  88. // Q4 is connected to E6 - macro keys
  89. void backlight_set(uint8_t level) {
  90. level & BACKLIGHT_ALPHA ? (PORTB |= 0b00000010) : (PORTB &= ~0b00000010);
  91. level & BACKLIGHT_FROW ? (PORTB |= 0b00000100) : (PORTB &= ~0b00000100);
  92. level & BACKLIGHT_MOD ? (PORTB |= 0b00001000) : (PORTB &= ~0b00001000);
  93. level & BACKLIGHT_MACRO ? (PORTE |= 0b01000000) : (PORTE &= ~0b01000000);
  94. }
  95. // // Port from backlight_update_state
  96. // void led_set_kb(uint8_t usb_led) {
  97. // bool status[7] = {
  98. // backlight_os_state & (1<<USB_LED_CAPS_LOCK),
  99. // backlight_os_state & (1<<USB_LED_SCROLL_LOCK),
  100. // backlight_os_state & (1<<USB_LED_NUM_LOCK),
  101. // backlight_layer_state & (1<<1),
  102. // backlight_layer_state & (1<<2),
  103. // backlight_layer_state & (1<<3),
  104. // backlight_layer_state & (1<<4)
  105. // };
  106. // indicator_leds_set(status);
  107. // backlight_os_state & (1<<USB_LED_CAPS_LOCK) ? (PORTB &= ~0b00000001) : (PORTB |= 0b00000001);
  108. // backlight_os_state & (1<<USB_LED_SCROLL_LOCK) ? (PORTB &= ~0b00010000) : (PORTB |= 0b00010000);
  109. // }
  110. // bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
  111. // return process_record_user(keycode, record);
  112. // }
  113. // U5 Pin 1, 2, 3 connected to top left LEDs
  114. // U6 Pin 1, 2, 3 connected to bottom right leds col of 3
  115. // U7 Pin 1 connected to row connected to bottom right leds solo LED
  116. // U7 Pin 2, 3 connected to bottom right leds row of 2
  117. // U6 Pin 5 connected to U7 Pin 6
  118. // U5 pin 5 connected to U6 Pin 6
  119. // U5, U6, U7 Pin 8 VCC
  120. // U5, U6, U7 Pin 4 GRND
  121. // U5 Pin 6 connected to atmega32u4 D4