diff options
Diffstat (limited to 'drivers/led/apa102.c')
| -rw-r--r-- | drivers/led/apa102.c | 23 | 
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) { | 
