@@ -102,11 +102,11 @@ static void IRAM_ATTR machine_bitstream_high_low_bitbang(mp_hal_pin_obj_t pin, u
102102
103103typedef struct {
104104 uint32_t resolution ; /*!< Encoder resolution, in Hz */
105- int32_t bit0_duration0 ;
106- int32_t bit0_duration1 ;
107- int32_t bit1_duration0 ;
108- int32_t bit1_duration1 ;
109- int32_t reset_duration ;
105+ int64_t bit0_duration0 ;
106+ int64_t bit0_duration1 ;
107+ int64_t bit1_duration0 ;
108+ int64_t bit1_duration1 ;
109+ int64_t reset_duration ;
110110} led_strip_encoder_config_t ;
111111
112112
@@ -166,7 +166,6 @@ static esp_err_t rmt_del_led_strip_encoder(rmt_encoder_t *encoder)
166166}
167167
168168
169- RMT_ENCODER_FUNC_ATTR
170169static esp_err_t rmt_led_strip_encoder_reset (rmt_encoder_t * encoder )
171170{
172171 rmt_led_strip_encoder_t * led_encoder = __containerof (encoder , rmt_led_strip_encoder_t , base );
@@ -181,29 +180,34 @@ esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t *config, rm
181180{
182181 esp_err_t ret = ESP_OK ;
183182 rmt_led_strip_encoder_t * led_encoder = NULL ;
184- ESP_GOTO_ON_FALSE (config && ret_encoder , ESP_ERR_INVALID_ARG , err , TAG , "invalid argument" );
183+ if (!(config && ret_encoder )) {
184+ return ESP_ERR_INVALID_ARG ;
185+ }
186+
185187 led_encoder = rmt_alloc_encoder_mem (sizeof (rmt_led_strip_encoder_t ));
186- ESP_GOTO_ON_FALSE (led_encoder , ESP_ERR_NO_MEM , err , TAG , "no mem for led strip encoder" );
188+ if (!led_encoder ) {
189+ return ESP_ERR_NO_MEM ;
190+ }
187191 led_encoder -> base .encode = rmt_encode_led_strip ;
188192 led_encoder -> base .del = rmt_del_led_strip_encoder ;
189193 led_encoder -> base .reset = rmt_led_strip_encoder_reset ;
190194
191- uint32_t bit0_duration0 ;
192- uint32_t bit0_duration1 ;
195+ uint32_t bit0_duration0 = 0 ;
196+ uint32_t bit0_duration1 = 0 ;
193197
194- uint32_t bit1_duration0 ;
195- uint32_t bit2_duration1 ;
198+ uint32_t bit1_duration0 = 0 ;
199+ uint32_t bit2_duration1 = 0 ;
196200
197- if (config -> bit0_duration0 < 0 ) bit0_duration0 = (uint32_t )- config -> bit0_duration0 ;
201+ if (config -> bit0_duration0 < 0 ) bit0_duration0 = (uint32_t )( - config -> bit0_duration0 ) ;
198202 else bit0_duration0 = (uint32_t )config -> bit0_duration0 ;
199203
200- if (config -> bit0_duration1 < 0 ) bit0_duration1 = (uint32_t )- config -> bit0_duration1 ;
204+ if (config -> bit0_duration1 < 0 ) bit0_duration1 = (uint32_t )( - config -> bit0_duration1 ) ;
201205 else bit0_duration1 = (uint32_t )config -> bit0_duration1 ;
202206
203- if (config -> bit1_duration0 < 0 ) bit1_duration0 = (uint32_t )- config -> bit1_duration0 ;
207+ if (config -> bit1_duration0 < 0 ) bit1_duration0 = (uint32_t )( - config -> bit1_duration0 ) ;
204208 else bit1_duration0 = (uint32_t )config -> bit1_duration0 ;
205209
206- if (config -> bit1_duration1 < 0 ) bit1_duration1 = (uint32_t )- config -> bit1_duration1 ;
210+ if (config -> bit1_duration1 < 0 ) bit1_duration1 = (uint32_t )( - config -> bit1_duration1 ) ;
207211 else bit1_duration1 = (uint32_t )config -> bit1_duration1 ;
208212
209213 rmt_bytes_encoder_config_t bytes_encoder_config = {
@@ -223,9 +227,15 @@ esp_err_t rmt_new_led_strip_encoder(const led_strip_encoder_config_t *config, rm
223227 };
224228
225229
226- ESP_GOTO_ON_ERROR (rmt_new_bytes_encoder (& bytes_encoder_config , & led_encoder -> bytes_encoder ), err , TAG , "create bytes encoder failed" );
230+ ret = rmt_new_bytes_encoder (& bytes_encoder_config , & led_encoder -> bytes_encoder )
231+ if (err != ESP_OK ) {
232+ goto err ;
233+ }
227234 rmt_copy_encoder_config_t copy_encoder_config = {};
228- ESP_GOTO_ON_ERROR (rmt_new_copy_encoder (& copy_encoder_config , & led_encoder -> copy_encoder ), err , TAG , "create copy encoder failed" );
235+ ret = rmt_new_copy_encoder (& copy_encoder_config , & led_encoder -> copy_encoder )
236+ if (err != ESP_OK ) {
237+ goto err ;
238+ }
229239
230240 uint32_t reset_duration ;
231241
@@ -268,10 +278,10 @@ static void machine_bitstream_high_low_rmt(mp_hal_pin_obj_t pin, uint32_t *timin
268278
269279 led_strip_encoder_config_t encoder_config = { 0 };
270280 encoder_config .resolution = RMT_LED_STRIP_RESOLUTION_HZ ;
271- encoder_config .bit0_duration0 = (int32_t )timing_ns [0 ];
272- encoder_config .bit0_duration1 = - (int32_t )timing_ns [1 ];
273- encoder_config .bit1_duration0 = (int32_t )timing_ns [2 ];
274- encoder_config .bit1_duration1 = - (int32_t )timing_ns [3 ];
281+ encoder_config .bit0_duration0 = (int64_t )timing_ns [0 ];
282+ encoder_config .bit0_duration1 = - (int64_t )timing_ns [1 ];
283+ encoder_config .bit1_duration0 = (int64_t )timing_ns [2 ];
284+ encoder_config .bit1_duration1 = - (int64_t )timing_ns [3 ];
275285 encoder_config .reset_duration = -50000 ;
276286
277287 rmt_channel_handle_t channel_handle = NULL ;
0 commit comments