@@ -76,6 +76,7 @@ esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t *config, rm
76
76
esp_err_t ret = ESP_OK ;
77
77
rmt_led_strip_encoder_t * led_encoder = NULL ;
78
78
ESP_GOTO_ON_FALSE (config && ret_encoder , ESP_ERR_INVALID_ARG , err , TAG , "invalid argument" );
79
+ ESP_GOTO_ON_FALSE (config -> led_model < LED_MODEL_INVALID , ESP_ERR_INVALID_ARG , err , TAG , "invalid led model" );
79
80
led_encoder = calloc (1 , sizeof (rmt_led_strip_encoder_t ));
80
81
ESP_GOTO_ON_FALSE (led_encoder , ESP_ERR_NO_MEM , err , TAG , "no mem for led strip encoder" );
81
82
led_encoder -> base .encode = rmt_encode_led_strip ;
@@ -96,9 +97,9 @@ esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t *config, rm
96
97
.level1 = 0 ,
97
98
.duration1 = 0.6 * config -> resolution / 1000000 , // T1L=0.6us
98
99
},
99
- .flags .msb_first = 1 // SK6812 transfer bit order: G7...G0R7...R0B7...B0W7 ...W0
100
+ .flags .msb_first = 1 // SK6812 transfer bit order: G7...G0R7...R0B7...B0(W7 ...W0)
100
101
};
101
- } else {
102
+ } else if ( config -> led_model == LED_MODEL_WS2812 ) {
102
103
// different led strip might have its own timing requirements, following parameter is for WS2812
103
104
bytes_encoder_config = (rmt_bytes_encoder_config_t ) {
104
105
.bit0 = {
@@ -115,6 +116,8 @@ esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t *config, rm
115
116
},
116
117
.flags .msb_first = 1 // WS2812 transfer bit order: G7...G0R7...R0B7...B0
117
118
};
119
+ } else {
120
+ assert (false);
118
121
}
119
122
ESP_GOTO_ON_ERROR (rmt_new_bytes_encoder (& bytes_encoder_config , & led_encoder -> bytes_encoder ), err , TAG , "create bytes encoder failed" );
120
123
rmt_copy_encoder_config_t copy_encoder_config = {};
0 commit comments