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:
		
				
					committed by
					
						 Drashna Jaelre
						Drashna Jaelre
					
				
			
			
				
	
			
			
			
						parent
						
							fabdb3c4e8
						
					
				
				
					commit
					9c4424ae2c
				
			| @@ -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; | ||||
|                 } | ||||
|   | ||||
| @@ -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(); | ||||
|   | ||||
| @@ -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); | ||||
|   | ||||
| @@ -39,18 +39,20 @@ 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); | ||||
|     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); | ||||
|     if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgb, sizeof(rgb), TIMEOUT) >= 0) { | ||||
|       prev_rgb = rgb; | ||||
|     } | ||||
|   } | ||||
| #  endif | ||||
|  | ||||
|   return true; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user