diff options
author | Ryan <fauxpark@gmail.com> | 2023-03-30 12:21:02 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-30 12:21:02 +1100 |
commit | 647c2835e65995339fb9380830c53725a62f6299 (patch) | |
tree | 8e5b96ea65f2a4c5e0990ac09dfc7f019ac1b90e /keyboards/oddforge | |
parent | 7e1e662dc704736b88cc4a7487457638b72f54e8 (diff) |
WS2812 driver improvements (#20262)
Diffstat (limited to 'keyboards/oddforge')
-rw-r--r-- | keyboards/oddforge/vea/info.json | 2 | ||||
-rw-r--r-- | keyboards/oddforge/vea/vea.c | 33 | ||||
-rw-r--r-- | keyboards/oddforge/vea/vea.h | 11 | ||||
-rw-r--r-- | keyboards/oddforge/vea/ws2812_custom.c | 34 |
4 files changed, 36 insertions, 44 deletions
diff --git a/keyboards/oddforge/vea/info.json b/keyboards/oddforge/vea/info.json index daf69e8a42..713ea5186e 100644 --- a/keyboards/oddforge/vea/info.json +++ b/keyboards/oddforge/vea/info.json @@ -12,7 +12,7 @@ "pin": "D4" }, "ws2812": { - "driver": "i2c" + "driver": "custom" }, "indicators": { "caps_lock": "D1", diff --git a/keyboards/oddforge/vea/vea.c b/keyboards/oddforge/vea/vea.c deleted file mode 100644 index 220083e403..0000000000 --- a/keyboards/oddforge/vea/vea.c +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2021 MajorKoos <github.com/majorkoos> - -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 <http://www.gnu.org/licenses/>. -*/ -#include "vea.h" - -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { vea_setleds(start_led, num_leds); } - -void vea_rgb_init(void) { i2c_init(); } - -// Setleds for standard RGB -void vea_setleds(LED_TYPE *ledarray, uint16_t leds) { - static bool s_init = false; - if (!s_init) { - vea_rgb_init(); - s_init = true; - } - - i2c_transmit(WS2812_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * (leds >> 1), WS2812_TIMEOUT); - i2c_transmit(WS2812_ADDRESS_SPLIT, (uint8_t *)ledarray+(sizeof(LED_TYPE) * (leds >> 1)), sizeof(LED_TYPE) * (leds - (leds >> 1)), WS2812_TIMEOUT); -}; diff --git a/keyboards/oddforge/vea/vea.h b/keyboards/oddforge/vea/vea.h index 8e5851b84d..158b82d944 100644 --- a/keyboards/oddforge/vea/vea.h +++ b/keyboards/oddforge/vea/vea.h @@ -16,17 +16,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #pragma once -#include "quantum.h" -#include "i2c_master.h" -#include "rgblight.h" -#include "ws2812.h" -#include "led.h" - -#define WS2812_ADDRESS 0xb0 -#define WS2812_ADDRESS_SPLIT 0xb8 -#define WS2812_TIMEOUT 100 -void vea_setleds(LED_TYPE *ledarray, uint16_t leds); +#include "quantum.h" /* LEFT diff --git a/keyboards/oddforge/vea/ws2812_custom.c b/keyboards/oddforge/vea/ws2812_custom.c new file mode 100644 index 0000000000..0dc5a2d0f1 --- /dev/null +++ b/keyboards/oddforge/vea/ws2812_custom.c @@ -0,0 +1,34 @@ +#include "ws2812.h" +#include "i2c_master.h" + +#ifdef RGBW +# error "RGBW not supported" +#endif + +#ifndef WS2812_I2C_ADDRESS +# define WS2812_I2C_ADDRESS 0xB0 +#endif + +#ifndef WS2812_I2C_ADDRESS_RIGHT +# define WS2812_I2C_ADDRESS_RIGHT 0xB8 +#endif + +#ifndef WS2812_I2C_TIMEOUT +# define WS2812_I2C_TIMEOUT 100 +#endif + +void ws2812_init(void) { + i2c_init(); +} + +// Setleds for standard RGB +void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { + static bool s_init = false; + if (!s_init) { + ws2812_init(); + s_init = true; + } + + i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * (leds >> 1), WS2812_I2C_TIMEOUT); + i2c_transmit(WS2812_I2C_ADDRESS_RIGHT, (uint8_t *)ledarray+(sizeof(LED_TYPE) * (leds >> 1)), sizeof(LED_TYPE) * (leds - (leds >> 1)), WS2812_I2C_TIMEOUT); +} |