aboutsummaryrefslogtreecommitdiff
path: root/drivers/led/apa102.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/led/apa102.c')
-rw-r--r--drivers/led/apa102.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c
index b171b07b12..0cf0ecb401 100644
--- a/drivers/led/apa102.c
+++ b/drivers/led/apa102.c
@@ -53,7 +53,8 @@
io_wait; \
} while (0)
-uint8_t apa102_led_brightness = APA102_DEFAULT_BRIGHTNESS;
+rgb_led_t apa102_leds[APA102_LED_COUNT];
+uint8_t apa102_led_brightness = APA102_DEFAULT_BRIGHTNESS;
static void apa102_send_byte(uint8_t byte) {
APA102_SEND_BIT(byte, 7);
@@ -121,14 +122,24 @@ void apa102_init(void) {
gpio_set_pin_output(APA102_CI_PIN);
}
-void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) {
- rgb_led_t *end = start_led + num_leds;
+void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue) {
+ apa102_leds[index].r = red;
+ apa102_leds[index].g = green;
+ apa102_leds[index].b = blue;
+}
+
+void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ for (uint16_t i = 0; i < APA102_LED_COUNT; i++) {
+ apa102_set_color(i, red, green, blue);
+ }
+}
+void apa102_flush(void) {
apa102_start_frame();
- for (rgb_led_t *led = start_led; led < end; led++) {
- apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness);
+ for (uint8_t i = 0; i < APA102_LED_COUNT; i++) {
+ apa102_send_frame(apa102_leds[i].r, apa102_leds[i].g, apa102_leds[i].b, apa102_led_brightness);
}
- apa102_end_frame(num_leds);
+ apa102_end_frame(APA102_LED_COUNT);
}
void apa102_set_brightness(uint8_t brightness) {