forked from mfulz_github/qmk_firmware
		
	Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						296552e358
					
				@ -34,9 +34,10 @@ Some variants of the WS2812 may have their color components in a different physi
 | 
				
			|||||||
In this case, you can change the byte order by defining `WS2812_BYTE_ORDER` as one of the following values:
 | 
					In this case, you can change the byte order by defining `WS2812_BYTE_ORDER` as one of the following values:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
|Byte order                       |Known devices                |
 | 
					|Byte order                       |Known devices                |
 | 
				
			||||||
|-----------------------------------|-------------------------------|
 | 
					|---------------------------------|-----------------------------|
 | 
				
			||||||
|`WS2812_BYTE_ORDER_GRB` (default)|Most WS2812's, SK6812, SK6805|
 | 
					|`WS2812_BYTE_ORDER_GRB` (default)|Most WS2812's, SK6812, SK6805|
 | 
				
			||||||
|`WS2812_BYTE_ORDER_RGB`          |WS2812B-2020                 |
 | 
					|`WS2812_BYTE_ORDER_RGB`          |WS2812B-2020                 |
 | 
				
			||||||
 | 
					|`WS2812_BYTE_ORDER_BGR`          |TM1812                       |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Bitbang
 | 
					### Bitbang
 | 
				
			||||||
 | 
				
			|||||||
@ -97,6 +97,10 @@ void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) {
 | 
				
			|||||||
        sendByte(ledarray[i].r);
 | 
					        sendByte(ledarray[i].r);
 | 
				
			||||||
        sendByte(ledarray[i].g);
 | 
					        sendByte(ledarray[i].g);
 | 
				
			||||||
        sendByte(ledarray[i].b);
 | 
					        sendByte(ledarray[i].b);
 | 
				
			||||||
 | 
					#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR)
 | 
				
			||||||
 | 
					        sendByte(ledarray[i].b);
 | 
				
			||||||
 | 
					        sendByte(ledarray[i].g);
 | 
				
			||||||
 | 
					        sendByte(ledarray[i].r);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RGBW
 | 
					#ifdef RGBW
 | 
				
			||||||
 | 
				
			|||||||
@ -180,6 +180,43 @@
 | 
				
			|||||||
 * @return                          The bit index
 | 
					 * @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_BGR)
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @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), 2, (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), 0, (bit))
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* --- PRIVATE VARIABLES ---------------------------------------------------- */
 | 
					/* --- PRIVATE VARIABLES ---------------------------------------------------- */
 | 
				
			||||||
 | 
				
			|||||||
@ -70,6 +70,10 @@ static void set_led_color_rgb(LED_TYPE color, int pos) {
 | 
				
			|||||||
    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 + 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 + 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);
 | 
					    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_BGR)
 | 
				
			||||||
 | 
					    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.b, 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.r, j);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -37,6 +37,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define WS2812_BYTE_ORDER_RGB 0
 | 
					#define WS2812_BYTE_ORDER_RGB 0
 | 
				
			||||||
#define WS2812_BYTE_ORDER_GRB 1
 | 
					#define WS2812_BYTE_ORDER_GRB 1
 | 
				
			||||||
 | 
					#define WS2812_BYTE_ORDER_BGR 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef WS2812_BYTE_ORDER
 | 
					#ifndef WS2812_BYTE_ORDER
 | 
				
			||||||
#    define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_GRB
 | 
					#    define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_GRB
 | 
				
			||||||
@ -51,6 +52,10 @@ typedef struct PACKED {
 | 
				
			|||||||
    uint8_t r;
 | 
					    uint8_t r;
 | 
				
			||||||
    uint8_t g;
 | 
					    uint8_t g;
 | 
				
			||||||
    uint8_t b;
 | 
					    uint8_t b;
 | 
				
			||||||
 | 
					#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR)
 | 
				
			||||||
 | 
					    uint8_t b;
 | 
				
			||||||
 | 
					    uint8_t g;
 | 
				
			||||||
 | 
					    uint8_t r;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
} cRGB;
 | 
					} cRGB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -66,6 +71,10 @@ typedef struct PACKED {
 | 
				
			|||||||
    uint8_t r;
 | 
					    uint8_t r;
 | 
				
			||||||
    uint8_t g;
 | 
					    uint8_t g;
 | 
				
			||||||
    uint8_t b;
 | 
					    uint8_t b;
 | 
				
			||||||
 | 
					#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR)
 | 
				
			||||||
 | 
					    uint8_t b;
 | 
				
			||||||
 | 
					    uint8_t g;
 | 
				
			||||||
 | 
					    uint8_t r;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    uint8_t w;
 | 
					    uint8_t w;
 | 
				
			||||||
} cRGBW;
 | 
					} cRGBW;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user