Skip to content

Commit c75c28f

Browse files
authored
fix(uart): replacing mutex lock to avoid double lock
1 parent 14acad7 commit c75c28f

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

Diff for: cores/esp32/esp32-hal-uart.c

+4-10
Original file line numberDiff line numberDiff line change
@@ -585,17 +585,11 @@ uart_t *uartBegin(
585585
uartEnd(uart_nr);
586586
} else {
587587
bool retCode = true;
588-
UART_MUTEX_LOCK();
589588
//User may just want to change some parameters, such as baudrate, data length, parity, stop bits or pins
590589
if (uart->_baudrate != baudrate) {
591-
if (!uartSetBaudRate(uart, baudrate)) {
592-
log_e("UART%d changing baudrate failed.", uart_nr);
593-
retCode = false;
594-
} else {
595-
log_v("UART%d changed baudrate to %d", uart_nr, baudrate);
596-
uart->_baudrate = baudrate;
597-
}
590+
retCode = uartSetBaudRate(uart, baudrate);
598591
}
592+
UART_MUTEX_LOCK();
599593
uart_word_length_t data_bits = (config & 0xc) >> 2;
600594
uart_parity_t parity = config & 0x3;
601595
uart_stop_bits_t stop_bits = (config & 0x30) >> 4;
@@ -994,11 +988,11 @@ bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
994988
uart_ll_set_sclk(UART_LL_GET_HW(uart->num), newClkSrc);
995989
#endif
996990
if (uart_set_baudrate(uart->num, baud_rate) == ESP_OK) {
997-
log_v("Setting UART%d baud rate to %d.", uart->num, baud_rate);
991+
log_v("Setting UART%d baud rate to %ld.", uart->num, baud_rate);
998992
uart->_baudrate = baud_rate;
999993
} else {
1000994
retCode = false;
1001-
log_e("Setting UART%d baud rate to %d has failed.", uart->num, baud_rate);
995+
log_e("Setting UART%d baud rate to %ld has failed.", uart->num, baud_rate);
1002996
}
1003997
UART_MUTEX_UNLOCK();
1004998
return retCode;

0 commit comments

Comments
 (0)