Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						e199fb6190
					
				
					 5 changed files with 85 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -89,9 +89,16 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
 | 
			
		|||
 | 
			
		||||
    for (uint8_t i = 0; i < leds; i++) {
 | 
			
		||||
        // WS2812 protocol dictates grb order
 | 
			
		||||
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
 | 
			
		||||
        sendByte(ledarray[i].g);
 | 
			
		||||
        sendByte(ledarray[i].r);
 | 
			
		||||
        sendByte(ledarray[i].b);
 | 
			
		||||
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
 | 
			
		||||
        sendByte(ledarray[i].r);
 | 
			
		||||
        sendByte(ledarray[i].g);
 | 
			
		||||
        sendByte(ledarray[i].b);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGBW
 | 
			
		||||
        sendByte(ledarray[i].w);
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,6 +107,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#define WS2812_BIT(led, byte, bit) (24 * (led) + 8 * (byte) + (7 - (bit)))
 | 
			
		||||
 | 
			
		||||
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
 | 
			
		||||
/**
 | 
			
		||||
 * @brief   Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given red bit
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +118,7 @@
 | 
			
		|||
 *
 | 
			
		||||
 * @return                          The bit index
 | 
			
		||||
 */
 | 
			
		||||
#define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 1, (bit))
 | 
			
		||||
#   define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 1, (bit))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief   Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +130,7 @@
 | 
			
		|||
 *
 | 
			
		||||
 * @return                          The bit index
 | 
			
		||||
 */
 | 
			
		||||
#define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 0, (bit))
 | 
			
		||||
#   define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 0, (bit))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief   Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit
 | 
			
		||||
| 
						 | 
				
			
			@ -141,7 +142,45 @@
 | 
			
		|||
 *
 | 
			
		||||
 * @return                          The bit index
 | 
			
		||||
 */
 | 
			
		||||
#define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit))
 | 
			
		||||
#   define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit))
 | 
			
		||||
 | 
			
		||||
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
 | 
			
		||||
/**
 | 
			
		||||
 * @brief   Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given red bit
 | 
			
		||||
 *
 | 
			
		||||
 * @note    The red byte is the middle byte in the color packet
 | 
			
		||||
 *
 | 
			
		||||
 * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
 | 
			
		||||
 * @param[in] bit:                  The bit number [0, 7]
 | 
			
		||||
 *
 | 
			
		||||
 * @return                          The bit index
 | 
			
		||||
 */
 | 
			
		||||
#   define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 0, (bit))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief   Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit
 | 
			
		||||
 *
 | 
			
		||||
 * @note    The red byte is the first byte in the color packet
 | 
			
		||||
 *
 | 
			
		||||
 * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
 | 
			
		||||
 * @param[in] bit:                  The bit number [0, 7]
 | 
			
		||||
 *
 | 
			
		||||
 * @return                          The bit index
 | 
			
		||||
 */
 | 
			
		||||
#   define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 1, (bit))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief   Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit
 | 
			
		||||
 *
 | 
			
		||||
 * @note    The red byte is the last byte in the color packet
 | 
			
		||||
 *
 | 
			
		||||
 * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
 | 
			
		||||
 * @param[in] bit:                  The bit index [0, 7]
 | 
			
		||||
 *
 | 
			
		||||
 * @return                          The bit index
 | 
			
		||||
 */
 | 
			
		||||
#   define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* --- PRIVATE VARIABLES ---------------------------------------------------- */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,9 +62,15 @@ static uint8_t get_protocol_eq(uint8_t data, int pos) {
 | 
			
		|||
static void set_led_color_rgb(LED_TYPE color, int pos) {
 | 
			
		||||
    uint8_t* tx_start = &txbuf[PREAMBLE_SIZE];
 | 
			
		||||
 | 
			
		||||
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
 | 
			
		||||
    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.g, j);
 | 
			
		||||
    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.r, j);
 | 
			
		||||
    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j);
 | 
			
		||||
#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
 | 
			
		||||
    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.r, j);
 | 
			
		||||
    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j);
 | 
			
		||||
    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j);    
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ws2812_init(void) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue