[Bug] Realign and size check EECONFIG structures (#20541)
Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
parent
01be981843
commit
5c4b53a143
13 changed files with 59 additions and 58 deletions
|
@ -177,18 +177,19 @@ void rgblight_check_config(void) {
|
|||
}
|
||||
}
|
||||
|
||||
uint32_t eeconfig_read_rgblight(void) {
|
||||
uint64_t eeconfig_read_rgblight(void) {
|
||||
#ifdef EEPROM_ENABLE
|
||||
return eeprom_read_dword(EECONFIG_RGBLIGHT);
|
||||
return (uint64_t)((eeprom_read_dword(EECONFIG_RGBLIGHT)) | ((uint64_t)eeprom_read_byte(EECONFIG_RGBLIGHT_EXTENDED) << 32));
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void eeconfig_update_rgblight(uint32_t val) {
|
||||
void eeconfig_update_rgblight(uint64_t val) {
|
||||
#ifdef EEPROM_ENABLE
|
||||
rgblight_check_config();
|
||||
eeprom_update_dword(EECONFIG_RGBLIGHT, val);
|
||||
eeprom_update_dword(EECONFIG_RGBLIGHT, val & 0xFFFFFFFF);
|
||||
eeprom_update_byte(EECONFIG_RGBLIGHT_EXTENDED, (val >> 32) & 0xFF);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -263,13 +264,13 @@ void rgblight_reload_from_eeprom(void) {
|
|||
}
|
||||
}
|
||||
|
||||
uint32_t rgblight_read_dword(void) {
|
||||
uint64_t rgblight_read_qword(void) {
|
||||
return rgblight_config.raw;
|
||||
}
|
||||
|
||||
void rgblight_update_dword(uint32_t dword) {
|
||||
void rgblight_update_qword(uint64_t qword) {
|
||||
RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS;
|
||||
rgblight_config.raw = dword;
|
||||
rgblight_config.raw = qword;
|
||||
if (rgblight_config.enable)
|
||||
rgblight_mode_noeeprom(rgblight_config.mode);
|
||||
else {
|
||||
|
@ -489,7 +490,7 @@ void rgblight_increase_speed_helper(bool write_to_eeprom) {
|
|||
if (rgblight_config.speed < 3) rgblight_config.speed++;
|
||||
// RGBLIGHT_SPLIT_SET_CHANGE_HSVS; // NEED?
|
||||
if (write_to_eeprom) {
|
||||
eeconfig_update_rgblight(rgblight_config.raw); // EECONFIG needs to be increased to support this
|
||||
eeconfig_update_rgblight(rgblight_config.raw);
|
||||
}
|
||||
}
|
||||
void rgblight_increase_speed(void) {
|
||||
|
@ -503,7 +504,7 @@ void rgblight_decrease_speed_helper(bool write_to_eeprom) {
|
|||
if (rgblight_config.speed > 0) rgblight_config.speed--;
|
||||
// RGBLIGHT_SPLIT_SET_CHANGE_HSVS; // NEED??
|
||||
if (write_to_eeprom) {
|
||||
eeconfig_update_rgblight(rgblight_config.raw); // EECONFIG needs to be increased to support this
|
||||
eeconfig_update_rgblight(rgblight_config.raw);
|
||||
}
|
||||
}
|
||||
void rgblight_decrease_speed(void) {
|
||||
|
@ -612,7 +613,7 @@ uint8_t rgblight_get_speed(void) {
|
|||
void rgblight_set_speed_eeprom_helper(uint8_t speed, bool write_to_eeprom) {
|
||||
rgblight_config.speed = speed;
|
||||
if (write_to_eeprom) {
|
||||
eeconfig_update_rgblight(rgblight_config.raw); // EECONFIG needs to be increased to support this
|
||||
eeconfig_update_rgblight(rgblight_config.raw);
|
||||
dprintf("rgblight set speed [EEPROM]: %u\n", rgblight_config.speed);
|
||||
} else {
|
||||
dprintf("rgblight set speed [NOEEPROM]: %u\n", rgblight_config.speed);
|
||||
|
|
|
@ -244,19 +244,20 @@ extern const uint16_t RGBLED_RGBTEST_INTERVALS[1] PROGMEM;
|
|||
extern const uint8_t RGBLED_TWINKLE_INTERVALS[3] PROGMEM;
|
||||
extern bool is_rgblight_initialized;
|
||||
|
||||
// Should stay in sycn with rgb matrix config as we reuse eeprom storage for both (for now)
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
uint64_t raw;
|
||||
struct {
|
||||
bool enable : 1;
|
||||
uint8_t mode : 7;
|
||||
uint8_t hue : 8;
|
||||
uint8_t sat : 8;
|
||||
uint8_t val : 8;
|
||||
uint8_t speed : 8; // EECONFIG needs to be increased to support this
|
||||
uint8_t speed : 8;
|
||||
};
|
||||
} rgblight_config_t;
|
||||
|
||||
_Static_assert(sizeof(rgblight_config_t) == sizeof(uint64_t), "RGB Light EECONFIG out of spec.");
|
||||
|
||||
typedef struct _rgblight_status_t {
|
||||
uint8_t base_mode;
|
||||
bool timer_enabled;
|
||||
|
@ -367,10 +368,10 @@ HSV rgblight_get_hsv(void);
|
|||
void rgblight_init(void);
|
||||
void rgblight_suspend(void);
|
||||
void rgblight_wakeup(void);
|
||||
uint32_t rgblight_read_dword(void);
|
||||
void rgblight_update_dword(uint32_t dword);
|
||||
uint32_t eeconfig_read_rgblight(void);
|
||||
void eeconfig_update_rgblight(uint32_t val);
|
||||
uint64_t rgblight_read_qword(void);
|
||||
void rgblight_update_qword(uint64_t qword);
|
||||
uint64_t eeconfig_read_rgblight(void);
|
||||
void eeconfig_update_rgblight(uint64_t val);
|
||||
void eeconfig_update_rgblight_current(void);
|
||||
void eeconfig_update_rgblight_default(void);
|
||||
void eeconfig_debug_rgblight(void);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue