diff options
author | Len Trigg <lenbok@gmail.com> | 2019-03-15 21:46:49 +0100 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2019-03-15 21:46:49 +0100 |
commit | 9c4424ae2cd86002cd2f4140eff7108212ef884e (patch) | |
tree | 02885c02070df4a3f7ee0feb36a28123faf425f0 | |
parent | fabdb3c4e8ce4659539a2b0fa4cafc56a07d6c2d (diff) | |
download | qmk_firmware-9c4424ae2cd86002cd2f4140eff7108212ef884e.tar.gz qmk_firmware-9c4424ae2cd86002cd2f4140eff7108212ef884e.tar.xz |
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
-rw-r--r-- | quantum/api.c | 2 | ||||
-rw-r--r-- | quantum/rgblight.c | 7 | ||||
-rw-r--r-- | quantum/rgblight.h | 1 | ||||
-rw-r--r-- | quantum/split_common/transport.c | 12 |
4 files changed, 14 insertions, 8 deletions
diff --git a/quantum/api.c b/quantum/api.c index 52dfe23e1..233f99636 100644 --- a/quantum/api.c +++ b/quantum/api.c @@ -67,7 +67,7 @@ void process_api(uint16_t length, uint8_t * data) { case DT_RGBLIGHT: { #ifdef RGBLIGHT_ENABLE uint32_t rgblight = bytes_to_dword(data, 2); - rgblight_update_dword(rgblight); + eeconfig_update_rgblight(rgblight); #endif break; } diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 52e0be8ba..119ca1b9e 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -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) { rgblight_config.raw = dword; - eeconfig_update_rgblight(rgblight_config.raw); if (rgblight_config.enable) - rgblight_mode(rgblight_config.mode); + rgblight_mode_noeeprom(rgblight_config.mode); else { #ifdef RGBLIGHT_USE_TIMER rgblight_timer_disable(); diff --git a/quantum/rgblight.h b/quantum/rgblight.h index f92388c96..36e436b89 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -174,6 +174,7 @@ void rgblight_step_reverse(void); uint8_t rgblight_get_mode(void); void rgblight_mode(uint8_t mode); void rgblight_set(void); +uint32_t rgblight_read_dword(void); void rgblight_update_dword(uint32_t dword); void rgblight_increase_hue(void); void rgblight_decrease_hue(void); diff --git a/quantum/split_common/transport.c b/quantum/split_common/transport.c index b16852bc1..3696a2aba 100644 --- a/quantum/split_common/transport.c +++ b/quantum/split_common/transport.c @@ -39,17 +39,19 @@ bool transport_master(matrix_row_t matrix[]) { static uint8_t prev_level = ~0; uint8_t level = get_backlight_level(); if (level != prev_level) { - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIT_START, (void *)&level, sizeof(level), TIMEOUT); - prev_level = level; + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) { + prev_level = level; + } } # endif # ifdef RGBLIGHT_ENABLE static uint32_t prev_rgb = ~0; - uint32_t rgb = eeconfig_read_rgblight(); + uint32_t rgb = rgblight_read_dword(); if (rgb != prev_rgb) { - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgb, sizeof(rgb), TIMEOUT); - prev_rgb = rgb; + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgb, sizeof(rgb), TIMEOUT) >= 0) { + prev_rgb = rgb; + } } # endif |