Updated rgb_led struct field modifier to flags (#5619)
[jackhill/qmk/firmware.git] / keyboards / planck / ez / ez.c
1 /* Copyright 2018 Jack Humbert <jack.humb@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 "ez.h"
17
18 const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
19 /* Refer to IS31 manual for these locations
20 * driver
21 * | R location
22 * | | G location
23 * | | | B location
24 * | | | | */
25 {0, B_12, A_12, C_12},
26 {0, B_11, A_11, C_11},
27 {0, B_10, A_10, C_10},
28 {0, B_9, A_9, C_9},
29 {0, B_8, A_8, C_8},
30 {0, B_7, A_7, C_7},
31
32 {0, H_12, G_12, I_12},
33 {0, H_11, G_11, I_11},
34 {0, H_10, G_10, I_10},
35 {0, H_9, G_9, I_9},
36 {0, H_8, G_8, I_8},
37 {0, H_7, G_7, I_7},
38
39 {0, B_6, A_6, C_6},
40 {0, B_5, A_5, C_5},
41 {0, B_4, A_4, C_4},
42 {0, B_3, A_3, C_3},
43 {0, B_2, A_2, C_2},
44 {0, B_1, A_1, C_1},
45
46 {0, H_6, G_6, I_6},
47 {0, H_5, G_5, I_5},
48 {0, H_4, G_4, I_4},
49 {0, H_3, G_3, I_3},
50 {0, H_2, G_2, I_2},
51 {0, H_1, G_1, I_1},
52
53 {0, E_12, D_12, F_12},
54 {0, E_11, D_11, F_11},
55 {0, E_10, D_10, F_10},
56 {0, E_9, D_9, F_9},
57 {0, E_8, D_8, F_8},
58 {0, E_7, D_7, F_7},
59
60 {0, K_12, J_12, L_12},
61 {0, K_11, J_11, L_11},
62 {0, K_10, J_10, L_10},
63 {0, K_9, J_9, L_9},
64 {0, K_8, J_8, L_8},
65 {0, K_7, J_7, L_7},
66
67 {0, E_6, D_6, F_6},
68 {0, E_5, D_5, F_5},
69 {0, E_4, D_4, F_4},
70 {0, E_3, D_3, F_3},
71 {0, E_2, D_2, F_2},
72 {0, E_1, D_1, F_1},
73
74 {0, K_6, J_6, L_6},
75 {0, K_5, J_5, L_5},
76 {0, K_4, J_4, L_4},
77 {0, K_3, J_3, L_3},
78 {0, K_2, J_2, L_2},
79
80 };
81
82 rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
83
84 /*{row | col << 4}
85 | {x=0..224, y=0..64}
86 | | flags
87 | | | */
88 {{0|(0<<4)}, {20.36*0, 21.33*0}, 1},
89 {{0|(1<<4)}, {20.36*1, 21.33*0}, 4},
90 {{0|(2<<4)}, {20.36*2, 21.33*0}, 4},
91 {{0|(3<<4)}, {20.36*3, 21.33*0}, 4},
92 {{0|(4<<4)}, {20.36*4, 21.33*0}, 4},
93 {{0|(5<<4)}, {20.36*5, 21.33*0}, 4},
94 {{4|(0<<4)}, {20.36*6, 21.33*0}, 4},
95 {{4|(1<<4)}, {20.36*7, 21.33*0}, 4},
96 {{4|(2<<4)}, {20.36*8, 21.33*0}, 4},
97 {{4|(3<<4)}, {20.36*9, 21.33*0}, 4},
98 {{4|(4<<4)}, {20.36*10,21.33*0}, 4},
99 {{4|(5<<4)}, {20.36*11,21.33*0}, 1},
100
101 {{1|(0<<4)}, {20.36*0, 21.33*1}, 1},
102 {{1|(1<<4)}, {20.36*1, 21.33*1}, 4},
103 {{1|(2<<4)}, {20.36*2, 21.33*1}, 4},
104 {{1|(3<<4)}, {20.36*3, 21.33*1}, 4},
105 {{1|(4<<4)}, {20.36*4, 21.33*1}, 4},
106 {{1|(5<<4)}, {20.36*5, 21.33*1}, 4},
107 {{5|(0<<4)}, {20.36*6, 21.33*1}, 4},
108 {{5|(1<<4)}, {20.36*7, 21.33*1}, 4},
109 {{5|(2<<4)}, {20.36*8, 21.33*1}, 4},
110 {{5|(3<<4)}, {20.36*9, 21.33*1}, 4},
111 {{5|(4<<4)}, {20.36*10,21.33*1}, 4},
112 {{5|(5<<4)}, {20.36*11,21.33*1}, 1},
113
114 {{2|(0<<4)}, {20.36*0, 21.33*2}, 1},
115 {{2|(1<<4)}, {20.36*1, 21.33*2}, 4},
116 {{2|(2<<4)}, {20.36*2, 21.33*2}, 4},
117 {{2|(3<<4)}, {20.36*3, 21.33*2}, 4},
118 {{2|(4<<4)}, {20.36*4, 21.33*2}, 4},
119 {{2|(5<<4)}, {20.36*5, 21.33*2}, 4},
120 {{6|(0<<4)}, {20.36*6, 21.33*2}, 4},
121 {{6|(1<<4)}, {20.36*7, 21.33*2}, 4},
122 {{6|(2<<4)}, {20.36*8, 21.33*2}, 4},
123 {{6|(3<<4)}, {20.36*9, 21.33*2}, 4},
124 {{6|(4<<4)}, {20.36*10,21.33*2}, 4},
125 {{6|(5<<4)}, {20.36*11,21.33*2}, 1},
126
127 {{3|(0<<4)}, {20.36*0, 21.33*3}, 1},
128 {{3|(1<<4)}, {20.36*1, 21.33*3}, 1},
129 {{3|(2<<4)}, {20.36*2, 21.33*3}, 1},
130 {{7|(3<<4)}, {20.36*3, 21.33*3}, 1},
131 {{7|(4<<4)}, {20.36*4, 21.33*3}, 1},
132 {{7|(5<<4)}, {20.36*5.5,21.33*3}, 4},
133 {{7|(0<<4)}, {20.36*7, 21.33*3}, 1},
134 {{7|(1<<4)}, {20.36*8, 21.33*3}, 1},
135 {{7|(2<<4)}, {20.36*9, 21.33*3}, 1},
136 {{3|(3<<4)}, {20.36*10,21.33*3}, 1},
137 {{3|(4<<4)}, {20.36*11,21.33*3}, 1}
138 };
139
140 void matrix_init_kb(void) {
141 matrix_init_user();
142
143 palSetPadMode(GPIOB, 8, PAL_MODE_OUTPUT_PUSHPULL);
144 palSetPadMode(GPIOB, 9, PAL_MODE_OUTPUT_PUSHPULL);
145
146 palClearPad(GPIOB, 8);
147 palClearPad(GPIOB, 9);
148 }
149
150 void matrix_scan_kb(void) {
151 matrix_scan_user();
152 }
153
154 uint32_t layer_state_set_kb(uint32_t state) {
155
156 palClearPad(GPIOB, 8);
157 palClearPad(GPIOB, 9);
158 state = layer_state_set_user(state);
159 uint8_t layer = biton32(state);
160 switch (layer) {
161 case 3:
162 palSetPad(GPIOB, 9);
163 break;
164 case 4:
165 palSetPad(GPIOB, 8);
166 break;
167 case 6:
168 palSetPad(GPIOB, 9);
169 palSetPad(GPIOB, 8);
170 break;
171 default:
172 break;
173 }
174 return state;
175 }