/*
 * led_sk6x_spi.h
 *
 *  Created on: Jun 19, 2023
 *      Author: true
 */

#ifndef CODE_INC_LED_SK6X_SPI_H_
#define CODE_INC_LED_SK6X_SPI_H_



#include <stdint.h>

#define SK6X_LED_MAX_COUNT		8

#define SK6X_BUF_SIZE			(((SK6X_LED_MAX_COUNT * 24) * 5) / 8)	// always a whole number

#define SK6X_HI					0x10		// 0b000_10000, or 0.25/1.00uS on/off
#define SK6X_LO					0x1c		// 0b000_11100, or 0.75/0.50uS on/off
//#define SK6X_HI				0xc0		// 0b11000000,  or 0.25/0.75uS on/off
//#define SK6X_LO				0xfc		// 0b11111100,  or 0.75/0.25uS on/off

#define SK6X_ZONE_MAIN			0x01
#define SK6X_ZONE_SIDE			0x02
#define SK6X_ZONE_REAR			0x04
#define SK6X_ZONE_ALL			(SK6X_ZONE_MAIN | SK6X_ZONE_SIDE | SK6X_ZONE_REAR)



void led_sk6x_init();

void led_sk6x_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b);
void led_sk6x_set_all(uint8_t r, uint8_t g, uint8_t b);

void led_sk6x_process();
void led_sk6x_update();

void led_sk6x_zone_ena(uint8_t zone_mask);
void led_sk6x_brightness(uint8_t brightness);



#endif /* CODE_INC_LED_SK6X_SPI_H_ */
