rgblight split transfer non-eeprom config (#5396)
* Make rgblight_update_dword not update eeprom (we already have eeconfig_update_rgblight for that). Make split i2c keyboards transfer active rgblight config rather than eeprom saved version of rgblight config, enabling runtime changes that aren't persisted to eeprom. * prev_level and prev_rgb only store successfully transmitted values
This commit is contained in:
parent
fabdb3c4e8
commit
9c4424ae2c
4 changed files with 14 additions and 8 deletions
|
@ -67,7 +67,7 @@ void process_api(uint16_t length, uint8_t * data) {
|
||||||
case DT_RGBLIGHT: {
|
case DT_RGBLIGHT: {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
uint32_t rgblight = bytes_to_dword(data, 2);
|
uint32_t rgblight = bytes_to_dword(data, 2);
|
||||||
rgblight_update_dword(rgblight);
|
eeconfig_update_rgblight(rgblight);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -225,11 +225,14 @@ void rgblight_init(void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t rgblight_read_dword(void) {
|
||||||
|
return rgblight_config.raw;
|
||||||
|
}
|
||||||
|
|
||||||
void rgblight_update_dword(uint32_t dword) {
|
void rgblight_update_dword(uint32_t dword) {
|
||||||
rgblight_config.raw = dword;
|
rgblight_config.raw = dword;
|
||||||
eeconfig_update_rgblight(rgblight_config.raw);
|
|
||||||
if (rgblight_config.enable)
|
if (rgblight_config.enable)
|
||||||
rgblight_mode(rgblight_config.mode);
|
rgblight_mode_noeeprom(rgblight_config.mode);
|
||||||
else {
|
else {
|
||||||
#ifdef RGBLIGHT_USE_TIMER
|
#ifdef RGBLIGHT_USE_TIMER
|
||||||
rgblight_timer_disable();
|
rgblight_timer_disable();
|
||||||
|
|
|
@ -174,6 +174,7 @@ void rgblight_step_reverse(void);
|
||||||
uint8_t rgblight_get_mode(void);
|
uint8_t rgblight_get_mode(void);
|
||||||
void rgblight_mode(uint8_t mode);
|
void rgblight_mode(uint8_t mode);
|
||||||
void rgblight_set(void);
|
void rgblight_set(void);
|
||||||
|
uint32_t rgblight_read_dword(void);
|
||||||
void rgblight_update_dword(uint32_t dword);
|
void rgblight_update_dword(uint32_t dword);
|
||||||
void rgblight_increase_hue(void);
|
void rgblight_increase_hue(void);
|
||||||
void rgblight_decrease_hue(void);
|
void rgblight_decrease_hue(void);
|
||||||
|
|
|
@ -39,18 +39,20 @@ bool transport_master(matrix_row_t matrix[]) {
|
||||||
static uint8_t prev_level = ~0;
|
static uint8_t prev_level = ~0;
|
||||||
uint8_t level = get_backlight_level();
|
uint8_t level = get_backlight_level();
|
||||||
if (level != prev_level) {
|
if (level != prev_level) {
|
||||||
i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIT_START, (void *)&level, sizeof(level), TIMEOUT);
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) {
|
||||||
prev_level = level;
|
prev_level = level;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifdef RGBLIGHT_ENABLE
|
# ifdef RGBLIGHT_ENABLE
|
||||||
static uint32_t prev_rgb = ~0;
|
static uint32_t prev_rgb = ~0;
|
||||||
uint32_t rgb = eeconfig_read_rgblight();
|
uint32_t rgb = rgblight_read_dword();
|
||||||
if (rgb != prev_rgb) {
|
if (rgb != prev_rgb) {
|
||||||
i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgb, sizeof(rgb), TIMEOUT);
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgb, sizeof(rgb), TIMEOUT) >= 0) {
|
||||||
prev_rgb = rgb;
|
prev_rgb = rgb;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in a new issue