Merge remote-tracking branch 'qmk/master' into merge-2023-06-03
This commit is contained in:
@ -2,6 +2,9 @@
|
||||
#define RGB_MATRIX_EFFECT_TYPING_HEATMAP
|
||||
RGB_MATRIX_EFFECT(TYPING_HEATMAP)
|
||||
# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
# ifndef RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP
|
||||
# define RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP 32
|
||||
# endif
|
||||
|
||||
# ifndef RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS
|
||||
# define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 25
|
||||
@ -17,7 +20,7 @@ RGB_MATRIX_EFFECT(TYPING_HEATMAP)
|
||||
void process_rgb_matrix_typing_heatmap(uint8_t row, uint8_t col) {
|
||||
# ifdef RGB_MATRIX_TYPING_HEATMAP_SLIM
|
||||
// Limit effect to pressed keys
|
||||
g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], 32);
|
||||
g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP);
|
||||
# else
|
||||
if (g_led_config.matrix_co[row][col] == NO_LED) { // skip as pressed key doesn't have an led position
|
||||
return;
|
||||
@ -28,7 +31,7 @@ void process_rgb_matrix_typing_heatmap(uint8_t row, uint8_t col) {
|
||||
continue;
|
||||
}
|
||||
if (i_row == row && i_col == col) {
|
||||
g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], 32);
|
||||
g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP);
|
||||
} else {
|
||||
# define LED_DISTANCE(led_a, led_b) sqrt16(((int16_t)(led_a.x - led_b.x) * (int16_t)(led_a.x - led_b.x)) + ((int16_t)(led_a.y - led_b.y) * (int16_t)(led_a.y - led_b.y)))
|
||||
uint8_t distance = LED_DISTANCE(g_led_config.point[g_led_config.matrix_co[row][col]], g_led_config.point[g_led_config.matrix_co[i_row][i_col]]);
|
||||
|
@ -459,14 +459,7 @@ void rgb_matrix_indicators_advanced(effect_params_t *params) {
|
||||
* and not sure which would be better. Otherwise, this should be called from
|
||||
* rgb_task_render, right before the iter++ line.
|
||||
*/
|
||||
#if defined(RGB_MATRIX_LED_PROCESS_LIMIT) && RGB_MATRIX_LED_PROCESS_LIMIT > 0 && RGB_MATRIX_LED_PROCESS_LIMIT < RGB_MATRIX_LED_COUNT
|
||||
uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * (params->iter - 1);
|
||||
uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT;
|
||||
if (max > RGB_MATRIX_LED_COUNT) max = RGB_MATRIX_LED_COUNT;
|
||||
#else
|
||||
uint8_t min = 0;
|
||||
uint8_t max = RGB_MATRIX_LED_COUNT;
|
||||
#endif
|
||||
RGB_MATRIX_USE_LIMITS_ITER(min, max, params->iter - 1);
|
||||
rgb_matrix_indicators_advanced_kb(min, max);
|
||||
}
|
||||
|
||||
|
@ -28,6 +28,8 @@
|
||||
# include "is31fl3731.h"
|
||||
#elif defined(IS31FL3733)
|
||||
# include "is31fl3733.h"
|
||||
#elif defined(IS31FL3736)
|
||||
# include "is31fl3736.h"
|
||||
#elif defined(IS31FL3737)
|
||||
# include "is31fl3737.h"
|
||||
#elif defined(IS31FL3741)
|
||||
@ -52,34 +54,36 @@
|
||||
|
||||
#if defined(RGB_MATRIX_LED_PROCESS_LIMIT) && RGB_MATRIX_LED_PROCESS_LIMIT > 0 && RGB_MATRIX_LED_PROCESS_LIMIT < RGB_MATRIX_LED_COUNT
|
||||
# if defined(RGB_MATRIX_SPLIT)
|
||||
# define RGB_MATRIX_USE_LIMITS(min, max) \
|
||||
uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; \
|
||||
# define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter) \
|
||||
uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * (iter); \
|
||||
uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \
|
||||
if (max > RGB_MATRIX_LED_COUNT) max = RGB_MATRIX_LED_COUNT; \
|
||||
uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; \
|
||||
if (is_keyboard_left() && (max > k_rgb_matrix_split[0])) max = k_rgb_matrix_split[0]; \
|
||||
if (!(is_keyboard_left()) && (min < k_rgb_matrix_split[0])) min = k_rgb_matrix_split[0];
|
||||
# else
|
||||
# define RGB_MATRIX_USE_LIMITS(min, max) \
|
||||
uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; \
|
||||
uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \
|
||||
# define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter) \
|
||||
uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * (iter); \
|
||||
uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \
|
||||
if (max > RGB_MATRIX_LED_COUNT) max = RGB_MATRIX_LED_COUNT;
|
||||
# endif
|
||||
#else
|
||||
# if defined(RGB_MATRIX_SPLIT)
|
||||
# define RGB_MATRIX_USE_LIMITS(min, max) \
|
||||
# define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter) \
|
||||
uint8_t min = 0; \
|
||||
uint8_t max = RGB_MATRIX_LED_COUNT; \
|
||||
const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; \
|
||||
if (is_keyboard_left() && (max > k_rgb_matrix_split[0])) max = k_rgb_matrix_split[0]; \
|
||||
if (!(is_keyboard_left()) && (min < k_rgb_matrix_split[0])) min = k_rgb_matrix_split[0];
|
||||
# else
|
||||
# define RGB_MATRIX_USE_LIMITS(min, max) \
|
||||
uint8_t min = 0; \
|
||||
# define RGB_MATRIX_USE_LIMITS_ITER(min, max, iter) \
|
||||
uint8_t min = 0; \
|
||||
uint8_t max = RGB_MATRIX_LED_COUNT;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define RGB_MATRIX_USE_LIMITS(min, max) RGB_MATRIX_USE_LIMITS_ITER(min, max, params->iter)
|
||||
|
||||
#define RGB_MATRIX_INDICATOR_SET_COLOR(i, r, g, b) \
|
||||
if (i >= led_min && i < led_max) { \
|
||||
rgb_matrix_set_color(i, r, g, b); \
|
||||
|
@ -23,7 +23,7 @@
|
||||
* be here if shared between boards.
|
||||
*/
|
||||
|
||||
#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FL3737) || defined(IS31FL3741) || defined(IS31FLCOMMON) || defined(CKLED2001)
|
||||
#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FL3736) || defined(IS31FL3737) || defined(IS31FL3741) || defined(IS31FLCOMMON) || defined(CKLED2001)
|
||||
# include "i2c_master.h"
|
||||
|
||||
// TODO: Remove this at some later date
|
||||
@ -72,6 +72,18 @@ static void init(void) {
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(IS31FL3736)
|
||||
IS31FL3736_init(DRIVER_ADDR_1);
|
||||
# if defined(DRIVER_ADDR_2)
|
||||
IS31FL3736_init(DRIVER_ADDR_2);
|
||||
# if defined(DRIVER_ADDR_3)
|
||||
IS31FL3736_init(DRIVER_ADDR_3);
|
||||
# if defined(DRIVER_ADDR_4)
|
||||
IS31FL3736_init(DRIVER_ADDR_4);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(IS31FL3737)
|
||||
IS31FL3737_init(DRIVER_ADDR_1);
|
||||
# if defined(DRIVER_ADDR_2)
|
||||
@ -86,6 +98,15 @@ static void init(void) {
|
||||
|
||||
# elif defined(IS31FL3741)
|
||||
IS31FL3741_init(DRIVER_ADDR_1);
|
||||
# if defined(DRIVER_ADDR_2)
|
||||
IS31FL3741_init(DRIVER_ADDR_2);
|
||||
# if defined(DRIVER_ADDR_3)
|
||||
IS31FL3741_init(DRIVER_ADDR_3);
|
||||
# if defined(DRIVER_ADDR_4)
|
||||
IS31FL3741_init(DRIVER_ADDR_4);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(IS31FLCOMMON)
|
||||
IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1);
|
||||
@ -120,6 +141,8 @@ static void init(void) {
|
||||
IS31FL3731_set_led_control_register(index, enabled, enabled, enabled);
|
||||
# elif defined(IS31FL3733)
|
||||
IS31FL3733_set_led_control_register(index, enabled, enabled, enabled);
|
||||
# elif defined(IS31FL3736)
|
||||
IS31FL3736_set_led_control_register(index, enabled, enabled, enabled);
|
||||
# elif defined(IS31FL3737)
|
||||
IS31FL3737_set_led_control_register(index, enabled, enabled, enabled);
|
||||
# elif defined(IS31FL3741)
|
||||
@ -156,6 +179,18 @@ static void init(void) {
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(IS31FL3736)
|
||||
IS31FL3736_update_led_control_registers(DRIVER_ADDR_1, 0);
|
||||
# if defined(DRIVER_ADDR_2)
|
||||
IS31FL3736_update_led_control_registers(DRIVER_ADDR_2, 1);
|
||||
# if defined(DRIVER_ADDR_3)
|
||||
IS31FL3736_update_led_control_registers(DRIVER_ADDR_3, 2);
|
||||
# if defined(DRIVER_ADDR_4)
|
||||
IS31FL3736_update_led_control_registers(DRIVER_ADDR_4, 3);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(IS31FL3737)
|
||||
IS31FL3737_update_led_control_registers(DRIVER_ADDR_1, 0);
|
||||
# if defined(DRIVER_ADDR_2)
|
||||
@ -170,6 +205,15 @@ static void init(void) {
|
||||
|
||||
# elif defined(IS31FL3741)
|
||||
IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0);
|
||||
# if defined(DRIVER_ADDR_2)
|
||||
IS31FL3741_update_led_control_registers(DRIVER_ADDR_2, 1);
|
||||
# if defined(DRIVER_ADDR_3)
|
||||
IS31FL3741_update_led_control_registers(DRIVER_ADDR_3, 2);
|
||||
# if defined(DRIVER_ADDR_4)
|
||||
IS31FL3741_update_led_control_registers(DRIVER_ADDR_4, 3);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(IS31FLCOMMON)
|
||||
# ifdef ISSI_MANUAL_SCALING
|
||||
@ -242,6 +286,27 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
|
||||
.set_color_all = IS31FL3733_set_color_all,
|
||||
};
|
||||
|
||||
# elif defined(IS31FL3736)
|
||||
static void flush(void) {
|
||||
IS31FL3736_update_pwm_buffers(DRIVER_ADDR_1, 0);
|
||||
# if defined(DRIVER_ADDR_2)
|
||||
IS31FL3736_update_pwm_buffers(DRIVER_ADDR_2, 1);
|
||||
# if defined(DRIVER_ADDR_3)
|
||||
IS31FL3736_update_pwm_buffers(DRIVER_ADDR_3, 2);
|
||||
# if defined(DRIVER_ADDR_4)
|
||||
IS31FL3736_update_pwm_buffers(DRIVER_ADDR_4, 3);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
}
|
||||
|
||||
const rgb_matrix_driver_t rgb_matrix_driver = {
|
||||
.init = init,
|
||||
.flush = flush,
|
||||
.set_color = IS31FL3736_set_color,
|
||||
.set_color_all = IS31FL3736_set_color_all,
|
||||
};
|
||||
|
||||
# elif defined(IS31FL3737)
|
||||
static void flush(void) {
|
||||
IS31FL3737_update_pwm_buffers(DRIVER_ADDR_1, 0);
|
||||
@ -268,6 +333,12 @@ static void flush(void) {
|
||||
IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, 0);
|
||||
# if defined(DRIVER_ADDR_2)
|
||||
IS31FL3741_update_pwm_buffers(DRIVER_ADDR_2, 1);
|
||||
# if defined(DRIVER_ADDR_3)
|
||||
IS31FL3741_update_pwm_buffers(DRIVER_ADDR_3, 2);
|
||||
# if defined(DRIVER_ADDR_4)
|
||||
IS31FL3741_update_pwm_buffers(DRIVER_ADDR_4, 3);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
}
|
||||
|
||||
@ -359,7 +430,6 @@ LED_TYPE rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT];
|
||||
static void init(void) {}
|
||||
|
||||
static void flush(void) {
|
||||
// Assumes use of RGB_DI_PIN
|
||||
ws2812_setleds(rgb_matrix_ws2812_array, RGB_MATRIX_LED_COUNT);
|
||||
}
|
||||
|
||||
|
@ -83,16 +83,18 @@ typedef struct PACKED {
|
||||
} led_config_t;
|
||||
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
uint64_t raw;
|
||||
struct PACKED {
|
||||
uint8_t enable : 2;
|
||||
uint8_t mode : 6;
|
||||
HSV hsv;
|
||||
uint8_t speed; // EECONFIG needs to be increased to support this
|
||||
uint8_t speed;
|
||||
led_flags_t flags;
|
||||
};
|
||||
} rgb_config_t;
|
||||
|
||||
_Static_assert(sizeof(rgb_config_t) == sizeof(uint64_t), "RGB Matrix EECONFIG out of spec.");
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# pragma pack(pop)
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user