From 583cde398a28e429485b440de38a2ed9ec528830 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 22 Mar 2024 17:04:13 +1100 Subject: [PATCH] Un-`extern` RGBLight `led[]` array (#23322) --- docs/feature_rgblight.md | 15 ---- keyboards/hineybush/hbcp/hbcp.c | 5 +- .../hineybush/hbcp/keymaps/hiney/keymap.c | 50 ++--------- keyboards/neson_design/nico/info.json | 3 +- keyboards/neson_design/nico/nico.c | 90 ------------------- keyboards/neson_design/nico/rules.mk | 1 - keyboards/snes_macropad/snes_macropad.c | 16 ---- quantum/rgblight/rgblight.c | 18 ++-- quantum/rgblight/rgblight.h | 7 -- 9 files changed, 17 insertions(+), 188 deletions(-) delete mode 100644 keyboards/neson_design/nico/nico.c diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md index b7ba075731..a6a89d1d00 100644 --- a/docs/feature_rgblight.md +++ b/docs/feature_rgblight.md @@ -356,27 +356,12 @@ Usually lighting layers apply their configured brightness once activated. If you If you need to change your RGB lighting in code, for example in a macro to change the color whenever you switch layers, QMK provides a set of functions to assist you. See [`rgblight.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight/rgblight.h) for the full list, but the most commonly used functions include: -### Utility Functions -|Function |Description | -|--------------------------------------------|-------------------------------------------------------------------| -|`sethsv(hue, sat, val, ledbuf)` |Set ledbuf to the given HSV value | -|`sethsv_raw(hue, sat, val, ledbuf)` |Set ledbuf to the given HSV value without RGBLIGHT_LIMIT_VAL check | -|`setrgb(r, g, b, ledbuf)` |Set ledbuf to the given RGB value where `r`/`g`/`b` | - ### Low level Functions |Function |Description | |--------------------------------------------|-------------------------------------------| |`rgblight_set()` |Flush out led buffers to LEDs | |`rgblight_set_clipping_range(pos, num)` |Set clipping Range. see [Clipping Range](#clipping-range) | -Example: -```c -sethsv(HSV_WHITE, (rgb_led_t *)&led[0]); // led 0 -sethsv(HSV_RED, (rgb_led_t *)&led[1]); // led 1 -sethsv(HSV_GREEN, (rgb_led_t *)&led[2]); // led 2 -rgblight_set(); // Utility functions do not call rgblight_set() automatically, so they need to be called explicitly. -``` - ### Effects and Animations Functions #### effect range setting |Function |Description | diff --git a/keyboards/hineybush/hbcp/hbcp.c b/keyboards/hineybush/hbcp/hbcp.c index 5b22c69007..e422b46fdc 100644 --- a/keyboards/hineybush/hbcp/hbcp.c +++ b/keyboards/hineybush/hbcp/hbcp.c @@ -82,12 +82,9 @@ void keyboard_post_init_user(void) { __attribute__ ((weak)) void hbcp_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end) { - rgb_led_t tmp_led; - sethsv_raw(hue, sat, val, &tmp_led); for (uint8_t i = start; i < end; i++) { - led[i] = tmp_led; + rgblight_sethsv_at(hue, sat, val, i); } - rgblight_set(); } #endif diff --git a/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c b/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c index 2311d4020f..2d73326c9a 100644 --- a/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c +++ b/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c @@ -15,13 +15,6 @@ */ #include QMK_KEYBOARD_H -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - QMKBEST = SAFE_RANGE, - ALTCUT, - QMKURL -}; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_wkl( /* Base */ @@ -45,55 +38,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case ALTCUT: - if (record->event.pressed) { - // when keycode QMKBEST is pressed - send_string_with_delay_P(PSTR(SS_TAP(X_TAB)SS_TAP(X_T)SS_TAP(X_V)SS_TAP(X_B)), 20); // altium macro - } else { - // when keycode QMKBEST is released - } - break; - case QMKURL: - if (record->event.pressed) { - // when keycode QMKURL is pressed - SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); - } else { - // when keycode QMKURL is released - } - break; - } - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - #ifdef RGBLIGHT_ENABLE // The first three LEDs are used as indicators for CAPS_LOCK, NUM_LOCK and SCROLL_LOCK. bool led_update_user(led_t led_state) { if (led_state.caps_lock) { - sethsv_raw(HSV_SOFT_RED, (rgb_led_t *)&led[0]); + rgblight_sethsv_at(HSV_SOFT_RED, 0); } else { - sethsv(HSV_BLACK, (rgb_led_t *)&led[0]); + rgblight_sethsv_at(HSV_BLACK, 0); } if (led_state.num_lock) { - sethsv_raw(HSV_WARM_WHITE, (rgb_led_t *)&led[1]); + rgblight_sethsv_at(HSV_WARM_WHITE, 1); } else { - sethsv(HSV_BLACK, (rgb_led_t *)&led[1]); + rgblight_sethsv_at(HSV_BLACK, 1); } if (led_state.scroll_lock) { - sethsv_raw(HSV_SOFT_BLUE, (rgb_led_t *)&led[2]); + rgblight_sethsv_at(HSV_SOFT_BLUE, 2); } else { - sethsv(HSV_BLACK, (rgb_led_t *)&led[2]); + rgblight_sethsv_at(HSV_BLACK, 2); } - rgblight_set(); return false; } diff --git a/keyboards/neson_design/nico/info.json b/keyboards/neson_design/nico/info.json index 1c86d9a1ae..477ac3ba7c 100644 --- a/keyboards/neson_design/nico/info.json +++ b/keyboards/neson_design/nico/info.json @@ -25,8 +25,7 @@ "pin": "B0" }, "rgblight": { - "led_count": 5, - "driver": "custom" + "led_count": 5 }, "url": "", "usb": { diff --git a/keyboards/neson_design/nico/nico.c b/keyboards/neson_design/nico/nico.c deleted file mode 100644 index 0738a3ee98..0000000000 --- a/keyboards/neson_design/nico/nico.c +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @file nico.c - * - Copyright 2023 astro - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - */ - -#include "quantum.h" -#include "ws2812.h" -#ifdef RGBLIGHT_ENABLE - -static bool alert = false; -static bool backup = false; -static rgb_led_t caps_led; -static uint16_t last_ticks = 0; - -#define ALERT_INTERVAL 500 -#define ALERM_LED_R 0xFF -#define ALERM_LED_G 0xA5 -#define ALERM_LED_B 0x00 -//golden 0xFF, 0xD9, 0x00 - -void housekeeping_task_kb(void) -{ - if (host_keyboard_led_state().caps_lock) { - if (!backup) { - caps_led.r = led[4].r; - caps_led.g = led[4].g; - caps_led.b = led[4].b; - backup = true; - } - if(alert) { - led[4].r = ALERM_LED_G; - led[4].g = ALERM_LED_R; - led[4].b = ALERM_LED_B; - } else { - led[4].r = 0; - led[4].g = 0; - led[4].b = 0; - } - if (timer_elapsed(last_ticks) > ALERT_INTERVAL) { - alert = !alert; - last_ticks = timer_read(); - } - ws2812_setleds(led, RGBLIGHT_LED_COUNT); - } else { - if (backup) { - led[4].r = caps_led.r; - led[4].g = caps_led.g; - led[4].b = caps_led.b; - backup = false; - ws2812_setleds(led, RGBLIGHT_LED_COUNT); - } - } - housekeeping_task_user(); -} - -void setleds_custom(rgb_led_t *start_led, uint16_t num_leds) -{ - start_led[2].r = start_led[0].r; - start_led[2].g = start_led[0].g; - start_led[2].b = start_led[0].b; - - start_led[3].r = start_led[1].r; - start_led[3].g = start_led[1].g; - start_led[3].b = start_led[1].b; - - uint8_t tmp = start_led[4].g; - start_led[4].g = start_led[4].r; - start_led[4].r = tmp; - ws2812_setleds(start_led, RGBLIGHT_LED_COUNT); -} - -const rgblight_driver_t rgblight_driver = { - .init = ws2812_init, - .setleds = setleds_custom, -}; -#endif \ No newline at end of file diff --git a/keyboards/neson_design/nico/rules.mk b/keyboards/neson_design/nico/rules.mk index 9a69649289..e69de29bb2 100644 --- a/keyboards/neson_design/nico/rules.mk +++ b/keyboards/neson_design/nico/rules.mk @@ -1 +0,0 @@ -WS2812_DRIVER_REQUIRED = yes diff --git a/keyboards/snes_macropad/snes_macropad.c b/keyboards/snes_macropad/snes_macropad.c index 9f4f410fa3..74fa434fb2 100644 --- a/keyboards/snes_macropad/snes_macropad.c +++ b/keyboards/snes_macropad/snes_macropad.c @@ -86,22 +86,6 @@ static void setupForFlashing(void) { // Force data to be rendered oled_render_dirty(true); - - // Set alternating backlight colors - const uint8_t max = 20; - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - for (size_t i = 0; i < RGBLIGHT_LED_COUNT; ++i) { - rgb_led_t *led_ = (rgb_led_t *)&led[i]; - switch (i % 2) { - case 0: - setrgb(max, 0, max, led_); - break; - case 1: - setrgb(0, max, max, led_); - break; - } - } - rgblight_set(); } bool process_record_kb(uint16_t keycode, keyrecord_t *record) { diff --git a/quantum/rgblight/rgblight.c b/quantum/rgblight/rgblight.c index 28b58feea6..b17a501eef 100644 --- a/quantum/rgblight/rgblight.c +++ b/quantum/rgblight/rgblight.c @@ -145,6 +145,15 @@ __attribute__((weak)) RGB rgblight_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv); } +void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1) { + led1->r = r; + led1->g = g; + led1->b = b; +#ifdef RGBW + led1->w = 0; +#endif +} + void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) { HSV hsv = {hue, sat, val}; RGB rgb = rgblight_hsv_to_rgb(hsv); @@ -155,15 +164,6 @@ void sethsv(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) { sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1); } -void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1) { - led1->r = r; - led1->g = g; - led1->b = b; -#ifdef RGBW - led1->w = 0; -#endif -} - void rgblight_check_config(void) { /* Add some out of bound checks for RGB light config */ diff --git a/quantum/rgblight/rgblight.h b/quantum/rgblight/rgblight.h index 9e2b073776..0ed67ff6e3 100644 --- a/quantum/rgblight/rgblight.h +++ b/quantum/rgblight/rgblight.h @@ -240,8 +240,6 @@ void rgblight_unblink_all_but_layer(uint8_t layer); #endif -extern rgb_led_t led[RGBLIGHT_LED_COUNT]; - extern const uint8_t RGBLED_BREATHING_INTERVALS[4] PROGMEM; extern const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[3] PROGMEM; extern const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[3] PROGMEM; @@ -290,11 +288,6 @@ typedef struct _rgblight_ranges_t { extern rgblight_ranges_t rgblight_ranges; -/* === Utility Functions ===*/ -void sethsv(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1); -void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1); // without RGBLIGHT_LIMIT_VAL check -void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1); - /* === Low level Functions === */ void rgblight_set(void); void rgblight_set_clipping_range(uint8_t start_pos, uint8_t num_leds);