Fix broken Lighting Layers when RGBLIGHT_MAX_LAYERS > 16 (#11406)
* fix incorrect bit math when RGBLIGHT_MAX_LAYERS > 16 * with 1UL cast is not needed * ...but just casting works and is even more efficient * cformat
This commit is contained in:
parent
c07543133a
commit
b3de903a3d
@ -628,7 +628,7 @@ void rgblight_sethsv_slave(uint8_t hue, uint8_t sat, uint8_t val) { rgblight_set
|
|||||||
|
|
||||||
#ifdef RGBLIGHT_LAYERS
|
#ifdef RGBLIGHT_LAYERS
|
||||||
void rgblight_set_layer_state(uint8_t layer, bool enabled) {
|
void rgblight_set_layer_state(uint8_t layer, bool enabled) {
|
||||||
rgblight_layer_mask_t mask = 1 << layer;
|
rgblight_layer_mask_t mask = (rgblight_layer_mask_t)1 << layer;
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
rgblight_status.enabled_layer_mask |= mask;
|
rgblight_status.enabled_layer_mask |= mask;
|
||||||
} else {
|
} else {
|
||||||
@ -649,7 +649,7 @@ void rgblight_set_layer_state(uint8_t layer, bool enabled) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool rgblight_get_layer_state(uint8_t layer) {
|
bool rgblight_get_layer_state(uint8_t layer) {
|
||||||
rgblight_layer_mask_t mask = 1 << layer;
|
rgblight_layer_mask_t mask = (rgblight_layer_mask_t)1 << layer;
|
||||||
return (rgblight_status.enabled_layer_mask & mask) != 0;
|
return (rgblight_status.enabled_layer_mask & mask) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -689,7 +689,7 @@ static uint16_t _blink_timer;
|
|||||||
|
|
||||||
void rgblight_blink_layer(uint8_t layer, uint16_t duration_ms) {
|
void rgblight_blink_layer(uint8_t layer, uint16_t duration_ms) {
|
||||||
rgblight_set_layer_state(layer, true);
|
rgblight_set_layer_state(layer, true);
|
||||||
_blinked_layer_mask |= 1 << layer;
|
_blinked_layer_mask |= (rgblight_layer_mask_t)1 << layer;
|
||||||
_blink_timer = timer_read();
|
_blink_timer = timer_read();
|
||||||
_blink_duration = duration_ms;
|
_blink_duration = duration_ms;
|
||||||
}
|
}
|
||||||
@ -697,7 +697,7 @@ void rgblight_blink_layer(uint8_t layer, uint16_t duration_ms) {
|
|||||||
void rgblight_unblink_layers(void) {
|
void rgblight_unblink_layers(void) {
|
||||||
if (_blinked_layer_mask != 0 && timer_elapsed(_blink_timer) > _blink_duration) {
|
if (_blinked_layer_mask != 0 && timer_elapsed(_blink_timer) > _blink_duration) {
|
||||||
for (uint8_t layer = 0; layer < RGBLIGHT_MAX_LAYERS; layer++) {
|
for (uint8_t layer = 0; layer < RGBLIGHT_MAX_LAYERS; layer++) {
|
||||||
if ((_blinked_layer_mask & 1 << layer) != 0) {
|
if ((_blinked_layer_mask & (rgblight_layer_mask_t)1 << layer) != 0) {
|
||||||
rgblight_set_layer_state(layer, false);
|
rgblight_set_layer_state(layer, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user