1use snled27351_driver::{
4 driver::Led,
5 led_address::{
6 CB1_CA1,
7 CB1_CA2,
8 CB1_CA3,
9 CB1_CA4,
10 CB1_CA5,
11 CB1_CA6,
12 CB1_CA7,
13 CB1_CA8,
14 CB1_CA9,
15 CB1_CA10,
16 CB1_CA11,
17 CB1_CA12,
18 CB1_CA13,
19 CB1_CA14,
20 CB1_CA15,
21 CB1_CA16,
22 CB2_CA1,
23 CB2_CA2,
24 CB2_CA3,
25 CB2_CA4,
26 CB2_CA5,
27 CB2_CA6,
28 CB2_CA7,
29 CB2_CA8,
30 CB2_CA9,
31 CB2_CA10,
32 CB2_CA11,
33 CB2_CA12,
34 CB2_CA13,
35 CB2_CA14,
36 CB2_CA15,
37 CB2_CA16,
38 CB3_CA1,
39 CB3_CA2,
40 CB3_CA3,
41 CB3_CA4,
42 CB3_CA5,
43 CB3_CA6,
44 CB3_CA7,
45 CB3_CA8,
46 CB3_CA9,
47 CB3_CA10,
48 CB3_CA11,
49 CB3_CA12,
50 CB3_CA13,
51 CB3_CA14,
52 CB3_CA15,
53 CB3_CA16,
54 CB4_CA1,
55 CB4_CA2,
56 CB4_CA3,
57 CB4_CA4,
58 CB4_CA5,
59 CB4_CA6,
60 CB4_CA7,
61 CB4_CA8,
62 CB4_CA9,
63 CB4_CA10,
64 CB4_CA11,
65 CB4_CA12,
66 CB4_CA13,
67 CB4_CA14,
68 CB4_CA15,
69 CB4_CA16,
70 CB5_CA1,
71 CB5_CA2,
72 CB5_CA3,
73 CB5_CA4,
74 CB5_CA5,
75 CB5_CA6,
76 CB5_CA7,
77 CB5_CA8,
78 CB5_CA9,
79 CB5_CA10,
80 CB5_CA11,
81 CB5_CA12,
82 CB5_CA13,
83 CB5_CA14,
84 CB5_CA15,
85 CB5_CA16,
86 CB6_CA1,
87 CB6_CA2,
88 CB6_CA3,
89 CB6_CA4,
90 CB6_CA5,
91 CB6_CA6,
92 CB6_CA7,
93 CB6_CA8,
94 CB6_CA9,
95 CB6_CA10,
96 CB6_CA11,
97 CB6_CA12,
98 CB6_CA13,
99 CB6_CA14,
100 CB6_CA15,
101 CB6_CA16,
102 CB7_CA1,
103 CB7_CA2,
104 CB7_CA3,
105 CB7_CA4,
106 CB7_CA5,
107 CB7_CA6,
108 CB7_CA7,
109 CB7_CA8,
110 CB7_CA9,
111 CB7_CA10,
112 CB7_CA11,
113 CB7_CA12,
114 CB7_CA13,
115 CB7_CA14,
116 CB7_CA15,
117 CB7_CA16,
118 CB8_CA1,
119 CB8_CA2,
120 CB8_CA3,
121 CB8_CA4,
122 CB8_CA5,
123 CB8_CA6,
124 CB8_CA7,
125 CB8_CA8,
126 CB8_CA9,
127 CB8_CA10,
128 CB8_CA11,
129 CB8_CA12,
130 CB8_CA13,
131 CB8_CA14,
132 CB8_CA15,
133 CB8_CA16,
134 CB9_CA1,
135 CB9_CA2,
136 CB9_CA3,
137 CB9_CA4,
138 CB9_CA5,
139 CB9_CA6,
140 CB9_CA7,
141 CB9_CA8,
142 CB9_CA9,
143 CB9_CA10,
144 CB9_CA11,
145 CB9_CA12,
146 CB9_CA13,
147 CB9_CA14,
148 CB9_CA15,
149 CB9_CA16,
150 CB10_CA1,
151 CB10_CA2,
152 CB10_CA3,
153 CB10_CA4,
154 CB10_CA5,
155 CB10_CA6,
156 CB10_CA7,
157 CB10_CA8,
158 CB10_CA9,
159 CB10_CA10,
160 CB10_CA11,
161 CB10_CA12,
162 CB11_CA1,
163 CB11_CA2,
164 CB11_CA3,
165 CB11_CA4,
166 CB11_CA5,
167 CB11_CA6,
168 CB11_CA7,
169 CB11_CA8,
170 CB11_CA9,
171 CB11_CA10,
172 CB11_CA11,
173 CB11_CA12,
174 CB12_CA1,
175 CB12_CA2,
176 CB12_CA3,
177 CB12_CA4,
178 CB12_CA5,
179 CB12_CA6,
180 CB12_CA7,
181 CB12_CA8,
182 CB12_CA9,
183 CB12_CA10,
184 CB12_CA11,
185 CB12_CA12,
186 },
187};
188
189pub const LED_LAYOUT: &[Led] = &[
191 Led { driver: 0, red: CB7_CA16, green: CB9_CA16, blue: CB8_CA16 },
192 Led { driver: 0, red: CB7_CA15, green: CB9_CA15, blue: CB8_CA15 },
193 Led { driver: 0, red: CB7_CA14, green: CB9_CA14, blue: CB8_CA14 },
194 Led { driver: 0, red: CB7_CA13, green: CB9_CA13, blue: CB8_CA13 },
195 Led { driver: 0, red: CB7_CA12, green: CB9_CA12, blue: CB8_CA12 },
196 Led { driver: 0, red: CB7_CA11, green: CB9_CA11, blue: CB8_CA11 },
197 Led { driver: 0, red: CB7_CA10, green: CB9_CA10, blue: CB8_CA10 },
198 Led { driver: 0, red: CB7_CA9, green: CB9_CA9, blue: CB8_CA9 },
199 Led { driver: 0, red: CB7_CA8, green: CB9_CA8, blue: CB8_CA8 },
200 Led { driver: 0, red: CB7_CA7, green: CB9_CA7, blue: CB8_CA7 },
201 Led { driver: 0, red: CB7_CA6, green: CB9_CA6, blue: CB8_CA6 },
202 Led { driver: 0, red: CB7_CA5, green: CB9_CA5, blue: CB8_CA5 },
203 Led { driver: 0, red: CB7_CA4, green: CB9_CA4, blue: CB8_CA4 },
204 Led { driver: 0, red: CB7_CA2, green: CB9_CA2, blue: CB8_CA2 },
205 Led { driver: 0, red: CB7_CA1, green: CB9_CA1, blue: CB8_CA1 },
206 Led { driver: 1, red: CB1_CA3, green: CB3_CA3, blue: CB2_CA3 },
207 Led { driver: 0, red: CB10_CA4, green: CB12_CA4, blue: CB11_CA4 },
208 Led { driver: 0, red: CB10_CA3, green: CB12_CA3, blue: CB11_CA3 },
209 Led { driver: 0, red: CB10_CA2, green: CB12_CA2, blue: CB11_CA2 },
210 Led { driver: 0, red: CB10_CA1, green: CB12_CA1, blue: CB11_CA1 },
211 Led { driver: 0, red: CB1_CA16, green: CB3_CA16, blue: CB2_CA16 },
212 Led { driver: 0, red: CB1_CA15, green: CB3_CA15, blue: CB2_CA15 },
213 Led { driver: 0, red: CB1_CA14, green: CB3_CA14, blue: CB2_CA14 },
214 Led { driver: 0, red: CB1_CA13, green: CB3_CA13, blue: CB2_CA13 },
215 Led { driver: 0, red: CB1_CA12, green: CB3_CA12, blue: CB2_CA12 },
216 Led { driver: 0, red: CB1_CA11, green: CB3_CA11, blue: CB2_CA11 },
217 Led { driver: 0, red: CB1_CA10, green: CB3_CA10, blue: CB2_CA10 },
218 Led { driver: 0, red: CB1_CA9, green: CB3_CA9, blue: CB2_CA9 },
219 Led { driver: 0, red: CB1_CA8, green: CB3_CA8, blue: CB2_CA8 },
220 Led { driver: 0, red: CB1_CA7, green: CB3_CA7, blue: CB2_CA7 },
221 Led { driver: 0, red: CB1_CA6, green: CB3_CA6, blue: CB2_CA6 },
222 Led { driver: 0, red: CB1_CA5, green: CB3_CA5, blue: CB2_CA5 },
223 Led { driver: 0, red: CB1_CA4, green: CB3_CA4, blue: CB2_CA4 },
224 Led { driver: 0, red: CB1_CA3, green: CB3_CA3, blue: CB2_CA3 },
225 Led { driver: 0, red: CB1_CA2, green: CB3_CA2, blue: CB2_CA2 },
226 Led { driver: 0, red: CB1_CA1, green: CB3_CA1, blue: CB2_CA1 },
227 Led { driver: 1, red: CB1_CA2, green: CB3_CA2, blue: CB2_CA2 },
228 Led { driver: 0, red: CB10_CA8, green: CB12_CA8, blue: CB11_CA8 },
229 Led { driver: 0, red: CB10_CA7, green: CB12_CA7, blue: CB11_CA7 },
230 Led { driver: 0, red: CB10_CA6, green: CB12_CA6, blue: CB11_CA6 },
231 Led { driver: 0, red: CB10_CA5, green: CB12_CA5, blue: CB11_CA5 },
232 Led { driver: 0, red: CB4_CA16, green: CB6_CA16, blue: CB5_CA16 },
233 Led { driver: 0, red: CB4_CA15, green: CB6_CA15, blue: CB5_CA15 },
234 Led { driver: 0, red: CB4_CA14, green: CB6_CA14, blue: CB5_CA14 },
235 Led { driver: 0, red: CB4_CA13, green: CB6_CA13, blue: CB5_CA13 },
236 Led { driver: 0, red: CB4_CA12, green: CB6_CA12, blue: CB5_CA12 },
237 Led { driver: 0, red: CB4_CA11, green: CB6_CA11, blue: CB5_CA11 },
238 Led { driver: 0, red: CB4_CA10, green: CB6_CA10, blue: CB5_CA10 },
239 Led { driver: 0, red: CB4_CA9, green: CB6_CA9, blue: CB5_CA9 },
240 Led { driver: 0, red: CB4_CA8, green: CB6_CA8, blue: CB5_CA8 },
241 Led { driver: 0, red: CB4_CA7, green: CB6_CA7, blue: CB5_CA7 },
242 Led { driver: 0, red: CB4_CA6, green: CB6_CA6, blue: CB5_CA6 },
243 Led { driver: 0, red: CB4_CA5, green: CB6_CA5, blue: CB5_CA5 },
244 Led { driver: 0, red: CB4_CA4, green: CB6_CA4, blue: CB5_CA4 },
245 Led { driver: 0, red: CB4_CA3, green: CB6_CA3, blue: CB5_CA3 },
246 Led { driver: 0, red: CB4_CA2, green: CB6_CA2, blue: CB5_CA2 },
247 Led { driver: 0, red: CB4_CA1, green: CB6_CA1, blue: CB5_CA1 },
248 Led { driver: 1, red: CB1_CA1, green: CB3_CA1, blue: CB2_CA1 },
249 Led { driver: 0, red: CB10_CA12, green: CB12_CA12, blue: CB11_CA12 },
250 Led { driver: 0, red: CB10_CA11, green: CB12_CA11, blue: CB11_CA11 },
251 Led { driver: 0, red: CB10_CA10, green: CB12_CA10, blue: CB11_CA10 },
252 Led { driver: 0, red: CB10_CA9, green: CB12_CA9, blue: CB11_CA9 },
253 Led { driver: 1, red: CB1_CA16, green: CB3_CA16, blue: CB2_CA16 },
254 Led { driver: 1, red: CB1_CA15, green: CB3_CA15, blue: CB2_CA15 },
255 Led { driver: 1, red: CB1_CA14, green: CB3_CA14, blue: CB2_CA14 },
256 Led { driver: 1, red: CB1_CA13, green: CB3_CA13, blue: CB2_CA13 },
257 Led { driver: 1, red: CB1_CA12, green: CB3_CA12, blue: CB2_CA12 },
258 Led { driver: 1, red: CB1_CA11, green: CB3_CA11, blue: CB2_CA11 },
259 Led { driver: 1, red: CB1_CA10, green: CB3_CA10, blue: CB2_CA10 },
260 Led { driver: 1, red: CB1_CA9, green: CB3_CA9, blue: CB2_CA9 },
261 Led { driver: 1, red: CB1_CA8, green: CB3_CA8, blue: CB2_CA8 },
262 Led { driver: 1, red: CB1_CA7, green: CB3_CA7, blue: CB2_CA7 },
263 Led { driver: 1, red: CB1_CA6, green: CB3_CA6, blue: CB2_CA6 },
264 Led { driver: 1, red: CB1_CA5, green: CB3_CA5, blue: CB2_CA5 },
265 Led { driver: 1, red: CB1_CA4, green: CB3_CA4, blue: CB2_CA4 },
266 Led { driver: 1, red: CB10_CA9, green: CB12_CA9, blue: CB11_CA9 },
267 Led { driver: 1, red: CB10_CA8, green: CB12_CA8, blue: CB11_CA8 },
268 Led { driver: 1, red: CB10_CA7, green: CB12_CA7, blue: CB11_CA7 },
269 Led { driver: 1, red: CB7_CA16, green: CB9_CA16, blue: CB8_CA16 },
270 Led { driver: 1, red: CB7_CA14, green: CB9_CA14, blue: CB8_CA14 },
271 Led { driver: 1, red: CB7_CA13, green: CB9_CA13, blue: CB8_CA13 },
272 Led { driver: 1, red: CB7_CA12, green: CB9_CA12, blue: CB8_CA12 },
273 Led { driver: 1, red: CB7_CA11, green: CB9_CA11, blue: CB8_CA11 },
274 Led { driver: 1, red: CB7_CA10, green: CB9_CA10, blue: CB8_CA10 },
275 Led { driver: 1, red: CB7_CA9, green: CB9_CA9, blue: CB8_CA9 },
276 Led { driver: 1, red: CB7_CA8, green: CB9_CA8, blue: CB8_CA8 },
277 Led { driver: 1, red: CB7_CA7, green: CB9_CA7, blue: CB8_CA7 },
278 Led { driver: 1, red: CB7_CA6, green: CB9_CA6, blue: CB8_CA6 },
279 Led { driver: 1, red: CB7_CA5, green: CB9_CA5, blue: CB8_CA5 },
280 Led { driver: 1, red: CB7_CA3, green: CB9_CA3, blue: CB8_CA3 },
281 Led { driver: 1, red: CB7_CA1, green: CB9_CA1, blue: CB8_CA1 },
282 Led { driver: 1, red: CB10_CA6, green: CB12_CA6, blue: CB11_CA6 },
283 Led { driver: 1, red: CB10_CA5, green: CB12_CA5, blue: CB11_CA5 },
284 Led { driver: 1, red: CB10_CA4, green: CB12_CA4, blue: CB11_CA4 },
285 Led { driver: 1, red: CB10_CA3, green: CB12_CA3, blue: CB11_CA3 },
286 Led { driver: 1, red: CB4_CA16, green: CB6_CA16, blue: CB5_CA16 },
287 Led { driver: 1, red: CB4_CA15, green: CB6_CA15, blue: CB5_CA15 },
288 Led { driver: 1, red: CB4_CA14, green: CB6_CA14, blue: CB5_CA14 },
289 Led { driver: 1, red: CB4_CA10, green: CB6_CA10, blue: CB5_CA10 },
290 Led { driver: 1, red: CB4_CA7, green: CB6_CA7, blue: CB5_CA7 },
291 Led { driver: 1, red: CB4_CA6, green: CB6_CA6, blue: CB5_CA6 },
292 Led { driver: 1, red: CB4_CA5, green: CB6_CA5, blue: CB5_CA5 },
293 Led { driver: 1, red: CB4_CA4, green: CB6_CA4, blue: CB5_CA4 },
294 Led { driver: 1, red: CB4_CA2, green: CB6_CA2, blue: CB5_CA2 },
295 Led { driver: 1, red: CB4_CA1, green: CB6_CA1, blue: CB5_CA1 },
296 Led { driver: 1, red: CB7_CA2, green: CB9_CA2, blue: CB8_CA2 },
297 Led { driver: 1, red: CB10_CA2, green: CB12_CA2, blue: CB11_CA2 },
298 Led { driver: 1, red: CB10_CA1, green: CB12_CA1, blue: CB11_CA1 },
299];
300
301pub const MATRIX_TO_LED: [[Option<u8>; 21]; 6] = [
313 [
315 Some(0),
316 Some(1),
317 Some(2),
318 Some(3),
319 Some(4),
320 Some(5),
321 Some(6),
322 Some(7),
323 Some(8),
324 Some(9),
325 Some(10),
326 Some(11),
327 Some(12),
328 None,
329 Some(13),
330 Some(14),
331 Some(15),
332 Some(16),
333 Some(17),
334 Some(18),
335 Some(19),
336 ],
337 [
339 Some(20),
340 Some(21),
341 Some(22),
342 Some(23),
343 Some(24),
344 Some(25),
345 Some(26),
346 Some(27),
347 Some(28),
348 Some(29),
349 Some(30),
350 Some(31),
351 Some(32),
352 Some(33),
353 Some(34),
354 Some(35),
355 Some(36),
356 Some(37),
357 Some(38),
358 Some(39),
359 Some(40),
360 ],
361 [
363 Some(41),
364 Some(42),
365 Some(43),
366 Some(44),
367 Some(45),
368 Some(46),
369 Some(47),
370 Some(48),
371 Some(49),
372 Some(50),
373 Some(51),
374 Some(52),
375 Some(53),
376 Some(54),
377 Some(55),
378 Some(56),
379 Some(57),
380 Some(58),
381 Some(59),
382 Some(60),
383 Some(61),
384 ],
385 [
388 Some(62),
389 Some(63),
390 Some(64),
391 Some(65),
392 Some(66),
393 Some(67),
394 Some(68),
395 Some(69),
396 Some(70),
397 Some(71),
398 Some(72),
399 Some(73),
400 Some(74),
401 None,
402 None,
403 None,
404 None,
405 Some(75),
406 Some(76),
407 Some(77),
408 None,
409 ],
410 [
413 Some(78),
414 None,
415 Some(79),
416 Some(80),
417 Some(81),
418 Some(82),
419 Some(83),
420 Some(84),
421 Some(85),
422 Some(86),
423 Some(87),
424 Some(88),
425 None,
426 Some(89),
427 None,
428 Some(90),
429 None,
430 Some(91),
431 Some(92),
432 Some(93),
433 Some(94),
434 ],
435 [
438 Some(95),
439 Some(96),
440 Some(97),
441 None,
442 None,
443 None,
444 Some(98),
445 None,
446 None,
447 Some(99),
448 Some(100),
449 Some(101),
450 Some(102),
451 None,
452 Some(103),
453 Some(104),
454 Some(105),
455 Some(106),
456 Some(107),
457 None,
458 None,
459 ],
460];
461
462const _: () = assert!(LED_LAYOUT.len() <= 128, "LED_LAYOUT exceeds the 128-LED capacity of the calib_leds_done bitset");
465
466const _: () = {
469 let led_count = LED_LAYOUT.len();
470 let mut row = 0;
471 while row < MATRIX_TO_LED.len() {
472 let mut col = 0;
473 while col < MATRIX_TO_LED[row].len() {
474 if let Some(idx) = MATRIX_TO_LED[row][col] {
475 assert!(
476 usize::from(idx) < led_count,
477 "MATRIX_TO_LED contains an LED index that exceeds LED_LAYOUT length"
478 );
479 }
480 col = col.saturating_add(1);
481 }
482 row = row.saturating_add(1);
483 }
484};