Skip to content

Commit

Permalink
Fix broken Lighting Layers when RGBLIGHT_MAX_LAYERS > 16 (#11406)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
spidey3 committed Jan 2, 2021
1 parent c075431 commit b3de903
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions quantum/rgblight.c
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ void rgblight_sethsv_slave(uint8_t hue, uint8_t sat, uint8_t val) { rgblight_set

#ifdef RGBLIGHT_LAYERS
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) {
rgblight_status.enabled_layer_mask |= mask;
} else {
Expand All @@ -649,7 +649,7 @@ void rgblight_set_layer_state(uint8_t layer, bool enabled) {
}

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;
}

Expand Down Expand Up @@ -689,15 +689,15 @@ static uint16_t _blink_timer;

void rgblight_blink_layer(uint8_t layer, uint16_t duration_ms) {
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_duration = duration_ms;
}

void rgblight_unblink_layers(void) {
if (_blinked_layer_mask != 0 && timer_elapsed(_blink_timer) > _blink_duration) {
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);
}
}
Expand Down

0 comments on commit b3de903

Please sign in to comment.