@@ -312,7 +312,7 @@ void ICACHE_FLASH_ATTR pwmt_read_time_array(uint8 arr)
312
312
313
313
void ICACHE_FLASH_ATTR uart_receive_timer_func (void ) // call every cfg_glo.pwmt_read_timeout
314
314
{
315
- if (uart_queue_len && ! sleep_after_errors_cnt ) {
315
+ if (uart_queue_len && sleep_after_errors_cnt == 0 ) {
316
316
uint32 dt = system_get_time () - uart_queue [0 ].time ;
317
317
uint8 fl = uart_queue [0 ].flag ;
318
318
if (fl == UART_SEND_WAITING ) {
@@ -361,10 +361,17 @@ void ICACHE_FLASH_ATTR uart_receive_timer_func(void) // call every cfg_glo.pwmt_
361
361
GPIO_OUT_W1TC = (1 <<0 );//I2C_SCL_PIN);
362
362
}
363
363
364
- if (pwmt_connect_status == PWMT_CONNECTING || pwmt_repeat_on_error_cnt > 0 ) { // reconnect after cfg_glo.pwmt_delay_after_err
365
- if (pwmt_connect_status != PWMT_CONNECTING ) pwmt_repeat_on_error_cnt -- ;
366
- uart_queue [0 ].flag = UART_SEND_WAITING ;
367
- uart_queue [0 ].time = system_get_time ();
364
+ if (pwmt_connect_status != PWMT_CONNECTED || pwmt_repeat_on_error_cnt > 0 ) { // reconnect after cfg_glo.pwmt_delay_after_err
365
+ if (pwmt_repeat_on_error_cnt == 0 && cfg_glo .sleep_after_series_errors != 0 ) { // UART0 off
366
+ sleep_after_errors_cnt = cfg_glo .sleep_after_series_errors ;
367
+ dbg_printf ("ErrSleepC\n" );
368
+ uart_drv_close ();
369
+ disable_mux_uart0 ();
370
+ } else {
371
+ uart_queue [0 ].flag = UART_SEND_WAITING ;
372
+ uart_queue [0 ].time = system_get_time ();
373
+ }
374
+ if (pwmt_repeat_on_error_cnt ) pwmt_repeat_on_error_cnt -- ;
368
375
} else {
369
376
pwmt_repeat_on_error_cnt = cfg_glo .pwmt_on_error_repeat_cnt ;
370
377
dbg_printf ("Eu%u,%u:%d,%d=" , dbg_next_time (), dt , pwmt_last_response , UART_Buffer_idx );
@@ -375,8 +382,9 @@ void ICACHE_FLASH_ATTR uart_receive_timer_func(void) // call every cfg_glo.pwmt_
375
382
//dbg_printf("\n");
376
383
dbg_printf (", del\n" );
377
384
uart_queue [0 ].flag = UART_DELETED ;
378
- if (cfg_glo .sleep_after_series_errors ) { // UART0 off
385
+ if (cfg_glo .sleep_after_series_errors != 0 ) { // UART0 off
379
386
sleep_after_errors_cnt = cfg_glo .sleep_after_series_errors ;
387
+ dbg_printf ("ErrSleep\n" );
380
388
uart_drv_close ();
381
389
disable_mux_uart0 ();
382
390
} else pwmt_send_to_uart ();
@@ -520,7 +528,7 @@ void ICACHE_FLASH_ATTR uart_receive_timer_func(void) // call every cfg_glo.pwmt_
520
528
521
529
void ICACHE_FLASH_ATTR pwmt_request_timer_func (void ) // call every: cfg_glo.request_period
522
530
{
523
- if (sleep_after_errors_cnt ) return ;
531
+ if (sleep_after_errors_cnt != 0 ) return ;
524
532
uint8 autosend = !uart_queue_len ;
525
533
if ((uart_queue_len == 0 && pwmt_connect_status == PWMT_NOT_CONNECTED )
526
534
|| (pwmt_last_response == 6 && pwmt_connect_status != PWMT_CONNECTING )) {
@@ -538,6 +546,7 @@ void ICACHE_FLASH_ATTR irda_init(void)
538
546
pwmt_connect_status = PWMT_NOT_CONNECTED ;
539
547
pwmt_time_was_corrected_today = 0 ;
540
548
pwmt_repeated_errors = 0 ;
549
+ pwmt_repeat_on_error_cnt = cfg_glo .pwmt_on_error_repeat_cnt ;
541
550
uart_queue_len = 0 ;
542
551
ets_timer_disarm (& uart_receive_timer );
543
552
os_timer_setfn (& uart_receive_timer , (os_timer_func_t * )uart_receive_timer_func , NULL );
0 commit comments