From ced0c52eac491da7d189cc2569a68092d514485d Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 9 Nov 2017 21:49:40 -0500 Subject: [PATCH] split led config into 2 arrays --- drivers/avr/is31fl3731.h | 14 --- keyboards/planck/light/light.c | 185 ++++++++++++++++++++++----------- quantum/rgb_matrix.c | 58 +++++------ quantum/rgb_matrix.h | 20 ++++ 4 files changed, 175 insertions(+), 102 deletions(-) diff --git a/drivers/avr/is31fl3731.h b/drivers/avr/is31fl3731.h index a6162c76..21a73429 100644 --- a/drivers/avr/is31fl3731.h +++ b/drivers/avr/is31fl3731.h @@ -21,24 +21,10 @@ #include #include -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]; diff --git a/keyboards/planck/light/light.c b/keyboards/planck/light/light.c index a18b42c4..cfc8b183 100644 --- a/keyboards/planck/light/light.c +++ b/keyboards/planck/light/light.c @@ -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}}, - - {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, 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, 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}}, + * | | 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, 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, 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, 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. diff --git a/quantum/rgb_matrix.c b/quantum/rgb_matrix.c index 9f8a5d05..b31430b3 100644 --- a/quantum/rgb_matrix.c +++ b/quantum/rgb_matrix.c @@ -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>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