diff options
| author | Joshua Diamond <josh@windowoffire.com> | 2020-05-13 16:39:05 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-13 21:39:05 +0100 |
| commit | a8a8bf0ff3d6e1c9637079b925b30cf7eb8913fd (patch) | |
| tree | 3e7f1d53536711151fb7f8aebe63ab4d41f1d298 /quantum/rgblight.h | |
| parent | fadd3cb4617fe7e48c802c4470a50df36e6c5109 (diff) | |
| download | qmk_firmware-a8a8bf0ff3d6e1c9637079b925b30cf7eb8913fd.tar.gz qmk_firmware-a8a8bf0ff3d6e1c9637079b925b30cf7eb8913fd.zip | |
Allow expanding from 8 to 32 RGB Lighting Layers (#8941)
* Allow 16 lighting layers
* Require #define RGBLIGHT_LAYERS_16 to enable 16 layers
* Override RGBLIGHT_MAX_LAYERS to set maximum number of lighting layers
* Enforce lower bound on RGBLIGHT_MAX_LAYERS
Co-Authored-By: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
* Fix an error in the check for valid RGBLIGHT_MAX_LAYERS
* Don't use bitfield / PACKED, as it causes bloat
* Update documentation re: up to 32 lighting layers
* Run cformat
* Add note about increasing FW size in docs/config_options.md
Co-authored-by: Drashna Jaelre <drashna@live.com>
* Remove no-longer-valid comment
* Add doc note that split sync will be slower
Co-authored-by: Takeshi ISHII <2170248+mtei@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Diffstat (limited to 'quantum/rgblight.h')
| -rw-r--r-- | quantum/rgblight.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/quantum/rgblight.h b/quantum/rgblight.h index f93a30c5a..6fc3b6f17 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h | |||
| @@ -196,7 +196,20 @@ typedef struct { | |||
| 196 | # define RGBLIGHT_END_SEGMENT_INDEX (255) | 196 | # define RGBLIGHT_END_SEGMENT_INDEX (255) |
| 197 | # define RGBLIGHT_END_SEGMENTS \ | 197 | # define RGBLIGHT_END_SEGMENTS \ |
| 198 | { RGBLIGHT_END_SEGMENT_INDEX, 0, 0, 0 } | 198 | { RGBLIGHT_END_SEGMENT_INDEX, 0, 0, 0 } |
| 199 | # define RGBLIGHT_MAX_LAYERS 8 | 199 | # ifndef RGBLIGHT_MAX_LAYERS |
| 200 | # define RGBLIGHT_MAX_LAYERS 8 | ||
| 201 | # endif | ||
| 202 | # if RGBLIGHT_MAX_LAYERS <= 0 | ||
| 203 | # error invalid RGBLIGHT_MAX_LAYERS value (must be >= 1) | ||
| 204 | # elif RGBLIGHT_MAX_LAYERS <= 8 | ||
| 205 | typedef uint8_t rgblight_layer_mask_t; | ||
| 206 | # elif RGBLIGHT_MAX_LAYERS <= 16 | ||
| 207 | typedef uint16_t rgblight_layer_mask_t; | ||
| 208 | # elif RGBLIGHT_MAX_LAYERS <= 32 | ||
| 209 | typedef uint32_t rgblight_layer_mask_t; | ||
| 210 | # else | ||
| 211 | # error invalid RGBLIGHT_MAX_LAYERS value (must be <= 32) | ||
| 212 | # endif | ||
| 200 | # define RGBLIGHT_LAYER_SEGMENTS(...) \ | 213 | # define RGBLIGHT_LAYER_SEGMENTS(...) \ |
| 201 | { __VA_ARGS__, RGBLIGHT_END_SEGMENTS } | 214 | { __VA_ARGS__, RGBLIGHT_END_SEGMENTS } |
| 202 | # define RGBLIGHT_LAYERS_LIST(...) \ | 215 | # define RGBLIGHT_LAYERS_LIST(...) \ |
| @@ -247,7 +260,7 @@ typedef struct _rgblight_status_t { | |||
| 247 | uint8_t change_flags; | 260 | uint8_t change_flags; |
| 248 | # endif | 261 | # endif |
| 249 | # ifdef RGBLIGHT_LAYERS | 262 | # ifdef RGBLIGHT_LAYERS |
| 250 | uint8_t enabled_layer_mask; | 263 | rgblight_layer_mask_t enabled_layer_mask; |
| 251 | # endif | 264 | # endif |
| 252 | } rgblight_status_t; | 265 | } rgblight_status_t; |
| 253 | 266 | ||
