diff options
| author | Ryan <fauxpark@gmail.com> | 2024-10-06 19:01:07 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-06 21:01:07 +1300 |
| commit | 208ebf54a905ce6e4e563a6811eca8c8dc8b17e1 (patch) | |
| tree | 7bb6a8bdb5a641263c39236d0b655825ac37307b /keyboards/ibm | |
| parent | 43e82ed5c72b7386ca91d1bd363ee092f77c1b9a (diff) | |
WS2812 API rework (#24364)
* Begin WS2812 API rework
* Move RGBW conversion, clean up color.h, fix RGBW for AVR bitbang
* Formatting & update PS2AVRGB I2C driver (untested)
* Tested ARM bitbang RGB+RGBW
* Tested ARM SPI RGB - RGBW not working
* Tested ARM PWM RGB+RGBW
* Tested RP2040 PIO driver RGB+RGBW
* Update RGBLight
* Formatting
* Fix BM60HSRGB rev2
* Fix oddforge/vea
* Fix 1k and XD002 RGBLite
* Fix model_m/mschwingen
* Fix handwired/promethium
* Rename `WS2812_LED_TOTAL` for BM60HSRGB
* Fix work_louder boards
* Fix dawn60
* Fix rgbkb/pan
* Fix neson_design/700e and n6
* Fix ergodox_ez/shine
* ergodox_ez/shine: invert indices for left half
* Fix matrix/abelx
* Fix matrix/m20add
* Remove custom rgblight driver for matrix/noah - should be done with lighting layers
* Fix LED indexes for RGBLight split
* Rename `convert_rgb_to_rgbw()` to `ws2812_rgb_to_rgbw()`
* Update WS2812 API docs
* `ergodox_ez/shine`: simplify LED index calculation
* LED/RGB Matrix: Add weak function for LED index resolution
* Bandaid fix for RGB Matrix splits not using WS2812
* `steelseries/prime_plus`: redo custom RGBLight driver
* Update keyboards/steelseries/prime_plus/rgblight_custom.c
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
---------
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Diffstat (limited to 'keyboards/ibm')
| -rw-r--r-- | keyboards/ibm/model_m/mschwingen/config.h | 1 | ||||
| -rw-r--r-- | keyboards/ibm/model_m/mschwingen/mschwingen.c | 65 |
2 files changed, 36 insertions, 30 deletions
diff --git a/keyboards/ibm/model_m/mschwingen/config.h b/keyboards/ibm/model_m/mschwingen/config.h index b34d29649a..19fb3fcd6f 100644 --- a/keyboards/ibm/model_m/mschwingen/config.h +++ b/keyboards/ibm/model_m/mschwingen/config.h | |||
| @@ -65,6 +65,7 @@ | |||
| 65 | # define MODELM_LED_SCROLLOCK MODELM_LED3 | 65 | # define MODELM_LED_SCROLLOCK MODELM_LED3 |
| 66 | # define MODELM_LED_NUMLOCK MODELM_LED1 | 66 | # define MODELM_LED_NUMLOCK MODELM_LED1 |
| 67 | #elif defined(KEYBOARD_ibm_model_m_mschwingen_led_ws2812) | 67 | #elif defined(KEYBOARD_ibm_model_m_mschwingen_led_ws2812) |
| 68 | # define WS2812_LED_COUNT 3 | ||
| 68 | #else | 69 | #else |
| 69 | # error one of MODELM_LEDS_FFC, MODELM_LEDS_WIRED or MODELM_LEDS_WS2812 must be set! | 70 | # error one of MODELM_LEDS_FFC, MODELM_LEDS_WIRED or MODELM_LEDS_WS2812 must be set! |
| 70 | #endif | 71 | #endif |
diff --git a/keyboards/ibm/model_m/mschwingen/mschwingen.c b/keyboards/ibm/model_m/mschwingen/mschwingen.c index 7c0f1b2565..cb4854d8d1 100644 --- a/keyboards/ibm/model_m/mschwingen/mschwingen.c +++ b/keyboards/ibm/model_m/mschwingen/mschwingen.c | |||
| @@ -39,27 +39,10 @@ static uint8_t isRecording = 0; | |||
| 39 | # if RGBLIGHT_LED_COUNT < 3 | 39 | # if RGBLIGHT_LED_COUNT < 3 |
| 40 | # error we need at least 3 RGB LEDs! | 40 | # error we need at least 3 RGB LEDs! |
| 41 | # endif | 41 | # endif |
| 42 | static rgb_led_t led[RGBLIGHT_LED_COUNT] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}}; | ||
| 43 | 42 | ||
| 44 | # define BRIGHT 32 | 43 | # define BRIGHT 32 |
| 45 | # define DIM 6 | 44 | # define DIM 6 |
| 46 | 45 | ||
| 47 | static const rgb_led_t black = {.r = 0, .g = 0, .b = 0}; | ||
| 48 | |||
| 49 | static const __attribute__((unused)) rgb_led_t green = {.r = 0, .g = BRIGHT, .b = 0}; | ||
| 50 | static const __attribute__((unused)) rgb_led_t lgreen = {.r = 0, .g = DIM, .b = 0}; | ||
| 51 | |||
| 52 | static const __attribute__((unused)) rgb_led_t red = {.r = BRIGHT, .g = 0, .b = 0}; | ||
| 53 | static const __attribute__((unused)) rgb_led_t lred = {.r = DIM, .g = 0, .b = 0}; | ||
| 54 | |||
| 55 | static const __attribute__((unused)) rgb_led_t blue = {.r = 0, .g = 0, .b = BRIGHT}; | ||
| 56 | static const __attribute__((unused)) rgb_led_t lblue = {.r = 0, .g = 0, .b = DIM}; | ||
| 57 | |||
| 58 | static const __attribute__((unused)) rgb_led_t turq = {.r = 0, .g = BRIGHT, .b = BRIGHT}; | ||
| 59 | static const __attribute__((unused)) rgb_led_t lturq = {.r = 0, .g = DIM, .b = DIM}; | ||
| 60 | |||
| 61 | static const __attribute__((unused)) rgb_led_t white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT}; | ||
| 62 | |||
| 63 | static led_t led_state; | 46 | static led_t led_state; |
| 64 | static uint8_t layer; | 47 | static uint8_t layer; |
| 65 | static uint8_t default_layer; | 48 | static uint8_t default_layer; |
| @@ -81,17 +64,15 @@ void sleep_led_enable(void) { | |||
| 81 | suspend_active = true; | 64 | suspend_active = true; |
| 82 | gpio_write_pin_low(MODELM_STATUS_LED); | 65 | gpio_write_pin_low(MODELM_STATUS_LED); |
| 83 | #ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 | 66 | #ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 |
| 84 | led[0] = black; | 67 | ws2812_set_color_all(0, 0, 0); |
| 85 | led[1] = black; | 68 | ws2812_flush(); |
| 86 | led[2] = black; | ||
| 87 | ws2812_setleds(led, RGBLIGHT_LED_COUNT); | ||
| 88 | #endif | 69 | #endif |
| 89 | } | 70 | } |
| 90 | 71 | ||
| 91 | void keyboard_pre_init_kb(void) { | 72 | void keyboard_pre_init_kb(void) { |
| 92 | #ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 | 73 | #ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 |
| 93 | ws2812_init(); | 74 | ws2812_init(); |
| 94 | ws2812_setleds(led, RGBLIGHT_LED_COUNT); | 75 | ws2812_flush(); |
| 95 | #else | 76 | #else |
| 96 | /* Set status LEDs pins to output and Low (on) */ | 77 | /* Set status LEDs pins to output and Low (on) */ |
| 97 | gpio_set_pin_output(MODELM_LED_CAPSLOCK); | 78 | gpio_set_pin_output(MODELM_LED_CAPSLOCK); |
| @@ -121,35 +102,59 @@ void keyboard_pre_init_kb(void) { | |||
| 121 | #ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 | 102 | #ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 |
| 122 | static void led_update_rgb(void) { | 103 | static void led_update_rgb(void) { |
| 123 | if (isRecording && blink_state) { | 104 | if (isRecording && blink_state) { |
| 124 | led[0] = white; | 105 | ws2812_set_color(0, BRIGHT, BRIGHT, BRIGHT); |
| 125 | } else { | 106 | } else { |
| 126 | switch (default_layer) { | 107 | switch (default_layer) { |
| 127 | case 0: | 108 | case 0: |
| 128 | led[0] = led_state.num_lock ? blue : lblue; | 109 | if (led_state.num_lock) { |
| 110 | ws2812_set_color(0, 0, 0, BRIGHT); | ||
| 111 | } else { | ||
| 112 | ws2812_set_color(0, 0, 0, DIM); | ||
| 113 | } | ||
| 129 | break; | 114 | break; |
| 130 | case 1: | 115 | case 1: |
| 131 | led[0] = led_state.num_lock ? green : black; | 116 | if (led_state.num_lock) { |
| 117 | ws2812_set_color(0, 0, BRIGHT, 0); | ||
| 118 | } else { | ||
| 119 | ws2812_set_color(0, 0, 0, 0); | ||
| 120 | } | ||
| 132 | break; | 121 | break; |
| 133 | } | 122 | } |
| 134 | } | 123 | } |
| 135 | 124 | ||
| 136 | led[1] = led_state.caps_lock ? green : black; | 125 | if (led_state.caps_lock) { |
| 126 | ws2812_set_color(1, 0, BRIGHT, 0); | ||
| 127 | } else { | ||
| 128 | ws2812_set_color(1, 0, 0, 0); | ||
| 129 | } | ||
| 137 | 130 | ||
| 138 | switch (layer) { | 131 | switch (layer) { |
| 139 | case 0: | 132 | case 0: |
| 140 | case 1: | 133 | case 1: |
| 141 | default: | 134 | default: |
| 142 | led[2] = led_state.scroll_lock ? green : black; | 135 | if (led_state.scroll_lock) { |
| 136 | ws2812_set_color(2, 0, BRIGHT, 0); | ||
| 137 | } else { | ||
| 138 | ws2812_set_color(2, 0, 0, 0); | ||
| 139 | } | ||
| 143 | break; | 140 | break; |
| 144 | case 2: | 141 | case 2: |
| 145 | led[2] = led_state.scroll_lock ? red : lred; | 142 | if (led_state.scroll_lock) { |
| 143 | ws2812_set_color(2, BRIGHT, 0, 0); | ||
| 144 | } else { | ||
| 145 | ws2812_set_color(2, DIM, 0, 0); | ||
| 146 | } | ||
| 146 | break; | 147 | break; |
| 147 | case 3: | 148 | case 3: |
| 148 | led[2] = led_state.scroll_lock ? turq : lturq; | 149 | if (led_state.scroll_lock) { |
| 150 | ws2812_set_color(2, 0, BRIGHT, BRIGHT); | ||
| 151 | } else { | ||
| 152 | ws2812_set_color(2, 0, DIM, DIM); | ||
| 153 | } | ||
| 149 | break; | 154 | break; |
| 150 | } | 155 | } |
| 151 | if (!suspend_active) { | 156 | if (!suspend_active) { |
| 152 | ws2812_setleds(led, RGBLIGHT_LED_COUNT); | 157 | ws2812_flush(); |
| 153 | } | 158 | } |
| 154 | } | 159 | } |
| 155 | 160 | ||
