split led config into 2 arrays
This commit is contained in:
parent
b3e36c734a
commit
ced0c52eac
@ -21,24 +21,10 @@
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct Point {
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
} __attribute__((packed)) Point;
|
||||
|
||||
typedef struct is31_led {
|
||||
uint8_t driver:2;
|
||||
uint8_t matrix:1;
|
||||
uint8_t modifier:1;
|
||||
uint8_t control_index;
|
||||
union {
|
||||
uint8_t raw;
|
||||
struct {
|
||||
uint8_t row:4; // 16 max
|
||||
uint8_t col:4; // 16 max
|
||||
};
|
||||
} matrix_co;
|
||||
Point point;
|
||||
} __attribute__((packed)) is31_led;
|
||||
|
||||
extern const is31_led g_is31_leds[DRIVER_LED_TOTAL];
|
||||
|
@ -20,71 +20,138 @@
|
||||
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
|
||||
/* driver
|
||||
* | matrix
|
||||
* | | modifier
|
||||
* | | | control_index
|
||||
* | | | | {row | col << 4}
|
||||
* | | | | | {x=0..224, y=0..64} */
|
||||
{0, 0, 1, 3, {0|(0<<4)}, {20.36*0, 21.33*0}},
|
||||
{0, 0, 0, 4, {0|(1<<4)}, {20.36*1, 21.33*0}},
|
||||
{0, 0, 0, 5, {0|(2<<4)}, {20.36*2, 21.33*0}},
|
||||
{0, 1, 0, 3, {0|(3<<4)}, {20.36*3, 21.33*0}},
|
||||
{0, 1, 0, 4, {0|(4<<4)}, {20.36*4, 21.33*0}},
|
||||
{0, 1, 0, 5, {0|(5<<4)}, {20.36*5, 21.33*0}},
|
||||
{1, 0, 0, 3, {0|(6<<4)}, {20.36*6, 21.33*0}},
|
||||
{1, 0, 0, 4, {0|(7<<4)}, {20.36*7, 21.33*0}},
|
||||
{1, 0, 0, 5, {0|(8<<4)}, {20.36*8, 21.33*0}},
|
||||
{1, 1, 0, 3, {0|(9<<4)}, {20.36*9, 21.33*0}},
|
||||
{1, 1, 0, 4, {0|(10<<4)}, {20.36*10,21.33*0}},
|
||||
{1, 1, 1, 5, {0|(11<<4)}, {20.36*11,21.33*0}},
|
||||
* | | control_index
|
||||
* | | |
|
||||
* | | | */
|
||||
{0, 0, 3},
|
||||
{0, 0, 4},
|
||||
{0, 0, 5},
|
||||
{0, 1, 3},
|
||||
{0, 1, 4},
|
||||
{0, 1, 5},
|
||||
{1, 0, 3},
|
||||
{1, 0, 4},
|
||||
{1, 0, 5},
|
||||
{1, 1, 3},
|
||||
{1, 1, 4},
|
||||
{1, 1, 5},
|
||||
|
||||
{0, 0, 1, 6, {1|(0<<4)}, {20.36*0, 21.33*1}},
|
||||
{0, 0, 0, 7, {1|(1<<4)}, {20.36*1, 21.33*1}},
|
||||
{0, 0, 0, 8, {1|(2<<4)}, {20.36*2, 21.33*1}},
|
||||
{0, 1, 0, 6, {1|(3<<4)}, {20.36*3, 21.33*1}},
|
||||
{0, 1, 0, 7, {1|(4<<4)}, {20.36*4, 21.33*1}},
|
||||
{0, 1, 0, 8, {1|(5<<4)}, {20.36*5, 21.33*1}},
|
||||
{1, 0, 0, 6, {1|(6<<4)}, {20.36*6, 21.33*1}},
|
||||
{1, 0, 0, 7, {1|(7<<4)}, {20.36*7, 21.33*1}},
|
||||
{1, 0, 0, 8, {1|(8<<4)}, {20.36*8, 21.33*1}},
|
||||
{1, 1, 0, 6, {1|(9<<4)}, {20.36*9, 21.33*1}},
|
||||
{1, 1, 0, 7, {1|(10<<4)}, {20.36*10,21.33*1}},
|
||||
{1, 1, 1, 8, {1|(11<<4)}, {20.36*11,21.33*1}},
|
||||
{0, 0, 6},
|
||||
{0, 0, 7},
|
||||
{0, 0, 8},
|
||||
{0, 1, 6},
|
||||
{0, 1, 7},
|
||||
{0, 1, 8},
|
||||
{1, 0, 6},
|
||||
{1, 0, 7},
|
||||
{1, 0, 8},
|
||||
{1, 1, 6},
|
||||
{1, 1, 7},
|
||||
{1, 1, 8},
|
||||
|
||||
{0, 0, 1, 9, {2|(0<<4)}, {20.36*0, 21.33*2}},
|
||||
{0, 0, 0, 10, {2|(1<<4)}, {20.36*1, 21.33*2}},
|
||||
{0, 0, 0, 11, {2|(2<<4)}, {20.36*2, 21.33*2}},
|
||||
{0, 1, 0, 9, {2|(3<<4)}, {20.36*3, 21.33*2}},
|
||||
{0, 1, 0, 10, {2|(4<<4)}, {20.36*4, 21.33*2}},
|
||||
{0, 1, 0, 11, {2|(5<<4)}, {20.36*5, 21.33*2}},
|
||||
{1, 0, 0, 9, {2|(6<<4)}, {20.36*6, 21.33*2}},
|
||||
{1, 0, 0, 10, {2|(7<<4)}, {20.36*7, 21.33*2}},
|
||||
{1, 0, 0, 11, {2|(8<<4)}, {20.36*8, 21.33*2}},
|
||||
{1, 1, 0, 9, {2|(9<<4)}, {20.36*9, 21.33*2}},
|
||||
{1, 1, 0, 10, {2|(10<<4)}, {20.36*10,21.33*2}},
|
||||
{1, 1, 1, 11, {2|(11<<4)}, {20.36*11,21.33*2}},
|
||||
{0, 0, 9},
|
||||
{0, 0, 10},
|
||||
{0, 0, 11},
|
||||
{0, 1, 9},
|
||||
{0, 1, 10},
|
||||
{0, 1, 11},
|
||||
{1, 0, 9},
|
||||
{1, 0, 10},
|
||||
{1, 0, 11},
|
||||
{1, 1, 9},
|
||||
{1, 1, 10},
|
||||
{1, 1, 11},
|
||||
|
||||
{0, 0, 1, 12, {3|(0<<4)}, {20.36*0, 21.33*3}},
|
||||
{0, 0, 1, 13, {3|(1<<4)}, {20.36*1, 21.33*3}},
|
||||
{0, 0, 1, 14, {3|(2<<4)}, {20.36*2, 21.33*3}},
|
||||
{0, 1, 1, 12, {3|(3<<4)}, {20.36*3, 21.33*3}},
|
||||
{0, 1, 1, 13, {3|(4<<4)}, {20.36*4, 21.33*3}},
|
||||
{0, 0, 12},
|
||||
{0, 0, 13},
|
||||
{0, 0, 14},
|
||||
{0, 1, 12},
|
||||
{0, 1, 13},
|
||||
#ifdef PLANCK_MIT_LAYOUT
|
||||
{0, 1, 0, 14, {3|(5<<4)}, {20.36*5, 21.33*3}},
|
||||
{0, 1, 0, 15, {3|(5<<4)}, {20.36*5.5, 21.33*3}},
|
||||
{1, 0, 0, 12, {3|(5<<4)}, {20.36*6, 21.33*3}},
|
||||
{0, 1, 14},
|
||||
{0, 1, 15},
|
||||
{1, 0, 12},
|
||||
#else
|
||||
{0, 1, 0, 14, {3|(5<<4)}, {20.36*5, 21.33*3}},
|
||||
{0, 1, 0, 15, {0xFF}, {20.36*5.5, 21.33*3}},
|
||||
{1, 0, 0, 12, {3|(6<<4)}, {20.36*6, 21.33*3}},
|
||||
{0, 1, 14},
|
||||
{0, 1, 15},
|
||||
{1, 0, 12},
|
||||
#endif
|
||||
{1, 0, 1, 13, {3|(7<<4)}, {20.36*7, 21.33*3}},
|
||||
{1, 0, 1, 14, {3|(8<<4)}, {20.36*8, 21.33*3}},
|
||||
{1, 1, 1, 12, {3|(9<<4)}, {20.36*9, 21.33*3}},
|
||||
{1, 1, 1, 13, {3|(10<<4)}, {20.36*10,21.33*3}},
|
||||
{1, 1, 1, 14, {3|(11<<4)}, {20.36*11,21.33*3}}
|
||||
{1, 0, 13},
|
||||
{1, 0, 14},
|
||||
{1, 1, 12},
|
||||
{1, 1, 13},
|
||||
{1, 1, 14},
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
|
||||
|
||||
/*{row | col << 4}
|
||||
| {x=0..224, y=0..64}
|
||||
| | modifier
|
||||
| | | */
|
||||
{{0|(0<<4)}, {20.36*0, 21.33*0}, 1},
|
||||
{{0|(1<<4)}, {20.36*1, 21.33*0}, 0},
|
||||
{{0|(2<<4)}, {20.36*2, 21.33*0}, 0},
|
||||
{{0|(3<<4)}, {20.36*3, 21.33*0}, 0},
|
||||
{{0|(4<<4)}, {20.36*4, 21.33*0}, 0},
|
||||
{{0|(5<<4)}, {20.36*5, 21.33*0}, 0},
|
||||
{{0|(6<<4)}, {20.36*6, 21.33*0}, 0},
|
||||
{{0|(7<<4)}, {20.36*7, 21.33*0}, 0},
|
||||
{{0|(8<<4)}, {20.36*8, 21.33*0}, 0},
|
||||
{{0|(9<<4)}, {20.36*9, 21.33*0}, 0},
|
||||
{{0|(10<<4)}, {20.36*10,21.33*0}, 0},
|
||||
{{0|(11<<4)}, {20.36*11,21.33*0}, 1},
|
||||
|
||||
{{1|(0<<4)}, {20.36*0, 21.33*1}, 1},
|
||||
{{1|(1<<4)}, {20.36*1, 21.33*1}, 0},
|
||||
{{1|(2<<4)}, {20.36*2, 21.33*1}, 0},
|
||||
{{1|(3<<4)}, {20.36*3, 21.33*1}, 0},
|
||||
{{1|(4<<4)}, {20.36*4, 21.33*1}, 0},
|
||||
{{1|(5<<4)}, {20.36*5, 21.33*1}, 0},
|
||||
{{1|(6<<4)}, {20.36*6, 21.33*1}, 0},
|
||||
{{1|(7<<4)}, {20.36*7, 21.33*1}, 0},
|
||||
{{1|(8<<4)}, {20.36*8, 21.33*1}, 0},
|
||||
{{1|(9<<4)}, {20.36*9, 21.33*1}, 0},
|
||||
{{1|(10<<4)}, {20.36*10,21.33*1}, 0},
|
||||
{{1|(11<<4)}, {20.36*11,21.33*1}, 1},
|
||||
|
||||
{{2|(0<<4)}, {20.36*0, 21.33*2}, 1},
|
||||
{{2|(1<<4)}, {20.36*1, 21.33*2}, 0},
|
||||
{{2|(2<<4)}, {20.36*2, 21.33*2}, 0},
|
||||
{{2|(3<<4)}, {20.36*3, 21.33*2}, 0},
|
||||
{{2|(4<<4)}, {20.36*4, 21.33*2}, 0},
|
||||
{{2|(5<<4)}, {20.36*5, 21.33*2}, 0},
|
||||
{{2|(6<<4)}, {20.36*6, 21.33*2}, 0},
|
||||
{{2|(7<<4)}, {20.36*7, 21.33*2}, 0},
|
||||
{{2|(8<<4)}, {20.36*8, 21.33*2}, 0},
|
||||
{{2|(9<<4)}, {20.36*9, 21.33*2}, 0},
|
||||
{{2|(10<<4)}, {20.36*10,21.33*2}, 0},
|
||||
{{2|(11<<4)}, {20.36*11,21.33*2}, 1},
|
||||
|
||||
{{3|(0<<4)}, {20.36*0, 21.33*3}, 1},
|
||||
{{3|(1<<4)}, {20.36*1, 21.33*3}, 1},
|
||||
{{3|(2<<4)}, {20.36*2, 21.33*3}, 1},
|
||||
{{3|(3<<4)}, {20.36*3, 21.33*3}, 1},
|
||||
{{3|(4<<4)}, {20.36*4, 21.33*3}, 1},
|
||||
#ifdef PLANCK_MIT_LAYOUT
|
||||
{{3|(5<<4)}, {20.36*5, 21.33*3}, 0},
|
||||
{{3|(5<<4)}, {20.36*5.5, 21.33*3}, 0},
|
||||
{{3|(5<<4)}, {20.36*6, 21.33*3}, 0},
|
||||
#else
|
||||
{{3|(5<<4)}, {20.36*5, 21.33*3}, 0},
|
||||
{{0xFF}, {20.36*5.5, 21.33*3}, 0},
|
||||
{{3|(6<<4)}, {20.36*6, 21.33*3}, 0},
|
||||
#endif
|
||||
{{3|(7<<4)}, {20.36*7, 21.33*3}, 1},
|
||||
{{3|(8<<4)}, {20.36*8, 21.33*3}, 1},
|
||||
{{3|(9<<4)}, {20.36*9, 21.33*3}, 1},
|
||||
{{3|(10<<4)}, {20.36*10,21.33*3}, 1},
|
||||
{{3|(11<<4)}, {20.36*11,21.33*3}, 1}
|
||||
};
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
|
||||
// Initialize LED drivers for backlight.
|
||||
|
@ -65,12 +65,12 @@ uint8_t g_last_led_count = 0;
|
||||
|
||||
void map_row_column_to_led( uint8_t row, uint8_t column, uint8_t *led_i, uint8_t *led_count)
|
||||
{
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
*led_count = 0;
|
||||
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
// map_index_to_led(i, &led);
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
if (row == led.matrix_co.row && column == led.matrix_co.col) {
|
||||
led_i[*led_count] = i;
|
||||
(*led_count)++;
|
||||
@ -274,9 +274,9 @@ void backlight_effect_alphas_mods(void)
|
||||
RGB rgb1 = hsv_to_rgb( (HSV){ .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness } );
|
||||
RGB rgb2 = hsv_to_rgb( (HSV){ .h = g_config.color_2.h, .s = g_config.color_2.s, .v = g_config.brightness } );
|
||||
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
if ( led.matrix_co.raw < 0xFF ) {
|
||||
if ( led.modifier )
|
||||
{
|
||||
@ -318,7 +318,7 @@ void backlight_effect_gradient_up_down(void)
|
||||
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
||||
{
|
||||
// map_led_to_point( i, &point );
|
||||
point = g_is31_leds[i].point;
|
||||
point = g_rgb_leds[i].point;
|
||||
// The y range will be 0..64, map this to 0..4
|
||||
uint8_t y = (point.y>>4);
|
||||
// Relies on hue being 8-bit and wrapping
|
||||
@ -377,13 +377,13 @@ void backlight_effect_cycle_all(void)
|
||||
{
|
||||
uint8_t offset = g_tick & 0xFF;
|
||||
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
|
||||
// Relies on hue being 8-bit and wrapping
|
||||
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
||||
{
|
||||
// map_index_to_led(i, &led);
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
if (led.matrix_co.raw < 0xFF) {
|
||||
uint16_t offset2 = g_key_hit[i]<<2;
|
||||
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
||||
@ -401,17 +401,17 @@ void backlight_effect_cycle_left_right(void)
|
||||
HSV hsv = { .h = 0, .s = 255, .v = g_config.brightness };
|
||||
RGB rgb;
|
||||
Point point;
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
||||
{
|
||||
// map_index_to_led(i, &led);
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
if (led.matrix_co.raw < 0xFF) {
|
||||
uint16_t offset2 = g_key_hit[i]<<2;
|
||||
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
||||
|
||||
// map_led_to_point( i, &point );
|
||||
point = g_is31_leds[i].point;
|
||||
point = g_rgb_leds[i].point;
|
||||
// Relies on hue being 8-bit and wrapping
|
||||
hsv.h = point.x + offset + offset2;
|
||||
rgb = hsv_to_rgb( hsv );
|
||||
@ -426,17 +426,17 @@ void backlight_effect_cycle_up_down(void)
|
||||
HSV hsv = { .h = 0, .s = 255, .v = g_config.brightness };
|
||||
RGB rgb;
|
||||
Point point;
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for ( int i=0; i<DRIVER_LED_TOTAL; i++ )
|
||||
{
|
||||
// map_index_to_led(i, &led);
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
if (led.matrix_co.raw < 0xFF) {
|
||||
uint16_t offset2 = g_key_hit[i]<<2;
|
||||
offset2 = (offset2<=63) ? (63-offset2) : 0;
|
||||
|
||||
// map_led_to_point( i, &point );
|
||||
point = g_is31_leds[i].point;
|
||||
point = g_rgb_leds[i].point;
|
||||
// Relies on hue being 8-bit and wrapping
|
||||
hsv.h = point.y + offset + offset2;
|
||||
rgb = hsv_to_rgb( hsv );
|
||||
@ -449,9 +449,9 @@ void backlight_effect_cycle_up_down(void)
|
||||
void backlight_effect_dual_beacon(void) {
|
||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||
RGB rgb;
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
hsv.h = ((led.point.y - 32.0)* cos(g_tick * PI / 128) / 32 + (led.point.x - 112.0) * sin(g_tick * PI / 128) / (112)) * (g_config.color_2.h - g_config.color_1.h) + g_config.color_1.h;
|
||||
rgb = hsv_to_rgb( hsv );
|
||||
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
||||
@ -461,9 +461,9 @@ void backlight_effect_dual_beacon(void) {
|
||||
void backlight_effect_rainbow_beacon(void) {
|
||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||
RGB rgb;
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
hsv.h = 1.5 * (led.point.y - 32.0)* cos(g_tick * PI / 128) + 1.5 * (led.point.x - 112.0) * sin(g_tick * PI / 128) + g_config.color_1.h;
|
||||
rgb = hsv_to_rgb( hsv );
|
||||
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
||||
@ -473,9 +473,9 @@ void backlight_effect_rainbow_beacon(void) {
|
||||
void backlight_effect_rainbow_pinwheels(void) {
|
||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||
RGB rgb;
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
hsv.h = 2 * (led.point.y - 32.0)* cos(g_tick * PI / 128) + 2 * (66 - abs(led.point.x - 112.0)) * sin(g_tick * PI / 128) + g_config.color_1.h;
|
||||
rgb = hsv_to_rgb( hsv );
|
||||
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
|
||||
@ -485,9 +485,9 @@ void backlight_effect_rainbow_pinwheels(void) {
|
||||
void backlight_effect_rainbow_moving_chevron(void) {
|
||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||
RGB rgb;
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
// uint8_t r = g_tick;
|
||||
uint8_t r = 32;
|
||||
hsv.h = 1.5 * abs(led.point.y - 32.0)* sin(r * PI / 128) + 1.5 * (led.point.x - (g_tick / 256.0 * 224)) * cos(r * PI / 128) + g_config.color_1.h;
|
||||
@ -526,14 +526,14 @@ void backlight_effect_multisplash(void) {
|
||||
// if (g_any_key_hit < 0xFF) {
|
||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||
RGB rgb;
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
uint16_t c = 0, d = 0;
|
||||
is31_led last_led;
|
||||
rgb_led last_led;
|
||||
// if (g_last_led_count) {
|
||||
for (uint8_t last_i = 0; last_i < g_last_led_count; last_i++) {
|
||||
last_led = g_is31_leds[g_last_led_hit[last_i]];
|
||||
last_led = g_rgb_leds[g_last_led_hit[last_i]];
|
||||
uint16_t dist = (uint16_t)sqrt(pow(led.point.x - last_led.point.x, 2) + pow(led.point.y - last_led.point.y, 2));
|
||||
uint16_t effect = (g_key_hit[g_last_led_hit[last_i]] << 2) - dist;
|
||||
c += MIN(MAX(effect, 0), 255);
|
||||
@ -563,14 +563,14 @@ void backlight_effect_solid_multisplash(void) {
|
||||
// if (g_any_key_hit < 0xFF) {
|
||||
HSV hsv = { .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness };
|
||||
RGB rgb;
|
||||
is31_led led;
|
||||
rgb_led led;
|
||||
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_is31_leds[i];
|
||||
led = g_rgb_leds[i];
|
||||
uint16_t d = 0;
|
||||
is31_led last_led;
|
||||
rgb_led last_led;
|
||||
// if (g_last_led_count) {
|
||||
for (uint8_t last_i = 0; last_i < g_last_led_count; last_i++) {
|
||||
last_led = g_is31_leds[g_last_led_hit[last_i]];
|
||||
last_led = g_rgb_leds[g_last_led_hit[last_i]];
|
||||
uint16_t dist = (uint16_t)sqrt(pow(led.point.x - last_led.point.x, 2) + pow(led.point.y - last_led.point.y, 2));
|
||||
uint16_t effect = (g_key_hit[g_last_led_hit[last_i]] << 2) - dist;
|
||||
d += 255 - MIN(MAX(effect, 0), 255);
|
||||
|
@ -24,6 +24,26 @@
|
||||
#include "is31fl3731.h"
|
||||
#include "quantum.h"
|
||||
|
||||
typedef struct Point {
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
} __attribute__((packed)) Point;
|
||||
|
||||
typedef struct rgb_led {
|
||||
union {
|
||||
uint8_t raw;
|
||||
struct {
|
||||
uint8_t row:4; // 16 max
|
||||
uint8_t col:4; // 16 max
|
||||
};
|
||||
} matrix_co;
|
||||
Point point;
|
||||
uint8_t modifier:1;
|
||||
} __attribute__((packed)) rgb_led;
|
||||
|
||||
|
||||
extern const rgb_led g_rgb_leds[DRIVER_LED_TOTAL];
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HSV color;
|
||||
|
Loading…
Reference in New Issue
Block a user