APA102: API rework (#23355)
This commit is contained in:
		
							parent
							
								
									c4a74be7f0
								
							
						
					
					
						commit
						55538b2e1e
					
				
					 4 changed files with 70 additions and 29 deletions
				
			
		| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    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);
 | 
			
		||||
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);
 | 
			
		||||
    }
 | 
			
		||||
    apa102_end_frame(num_leds);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void apa102_flush(void) {
 | 
			
		||||
    apa102_start_frame();
 | 
			
		||||
    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(APA102_LED_COUNT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void apa102_set_brightness(uint8_t brightness) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,17 +32,8 @@
 | 
			
		|||
#define APA102_MAX_BRIGHTNESS 31
 | 
			
		||||
 | 
			
		||||
void apa102_init(void);
 | 
			
		||||
 | 
			
		||||
/* User Interface
 | 
			
		||||
 *
 | 
			
		||||
 * Input:
 | 
			
		||||
 *         start_led:          An array of GRB data describing the LED colors
 | 
			
		||||
 *         num_leds:           The number of LEDs to write
 | 
			
		||||
 *
 | 
			
		||||
 * The functions will perform the following actions:
 | 
			
		||||
 *         - Set the data-out pin as output
 | 
			
		||||
 *         - Send out the LED data
 | 
			
		||||
 */
 | 
			
		||||
void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds);
 | 
			
		||||
void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue);
 | 
			
		||||
void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
 | 
			
		||||
void apa102_flush(void);
 | 
			
		||||
 | 
			
		||||
void apa102_set_brightness(uint8_t brightness);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue