summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLen Trigg <lenbok@gmail.com>2019-03-16 09:46:49 +1300
committerDrashna Jaelre <drashna@live.com>2019-03-15 13:46:49 -0700
commit9c4424ae2cd86002cd2f4140eff7108212ef884e (patch)
tree02885c02070df4a3f7ee0feb36a28123faf425f0
parentfabdb3c4e8ce4659539a2b0fa4cafc56a07d6c2d (diff)
downloadqmk_firmware-9c4424ae2cd86002cd2f4140eff7108212ef884e.tar.gz
qmk_firmware-9c4424ae2cd86002cd2f4140eff7108212ef884e.zip
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.c2
-rw-r--r--quantum/rgblight.c7
-rw-r--r--quantum/rgblight.h1
-rw-r--r--quantum/split_common/transport.c12
4 files changed, 14 insertions, 8 deletions
diff --git a/quantum/api.c b/quantum/api.c
index 52dfe23e17..233f99636d 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 52e0be8ba0..119ca1b9ee 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 f92388c961..36e436b899 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 b16852bc16..3696a2abaa 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