Skip to content

Commit 55b823c

Browse files
authored
feat(uart): refactor PeriMan detaching function init
Removed uart_init_PeriMan function and related comments.
1 parent e8d0d31 commit 55b823c

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

cores/esp32/esp32-hal-uart.c

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,10 @@ static bool _uartAttachPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t
479479
ret &= perimanSetPinBus(rxPin, ESP32_BUS_TYPE_UART_RX, (void *)uart, uart_num, -1);
480480
if (ret) {
481481
uart->_rxPin = rxPin;
482+
// set Peripheral Manager deInit Callback for this UART pin
483+
if (perimanGetBusDeinit(ESP32_BUS_TYPE_UART_RX) == NULL) {
484+
perimanSetBusDeinit(ESP32_BUS_TYPE_UART_RX, _uartDetachBus_RX);
485+
}
482486
}
483487
}
484488
if (!ret) {
@@ -502,6 +506,10 @@ static bool _uartAttachPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t
502506
ret &= perimanSetPinBus(txPin, ESP32_BUS_TYPE_UART_TX, (void *)uart, uart_num, -1);
503507
if (ret) {
504508
uart->_txPin = txPin;
509+
// set Peripheral Manager deInit Callback for this UART pin
510+
if (perimanGetBusDeinit(ESP32_BUS_TYPE_UART_TX) == NULL) {
511+
perimanSetBusDeinit(ESP32_BUS_TYPE_UART_TX, _uartDetachBus_TX);
512+
}
505513
}
506514
}
507515
if (!ret) {
@@ -525,6 +533,10 @@ static bool _uartAttachPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t
525533
ret &= perimanSetPinBus(ctsPin, ESP32_BUS_TYPE_UART_CTS, (void *)uart, uart_num, -1);
526534
if (ret) {
527535
uart->_ctsPin = ctsPin;
536+
// set Peripheral Manager deInit Callback for this UART pin
537+
if (perimanGetBusDeinit(ESP32_BUS_TYPE_UART_CTS) == NULL) {
538+
perimanSetBusDeinit(ESP32_BUS_TYPE_UART_CTS, _uartDetachBus_CTS);
539+
}
528540
}
529541
}
530542
if (!ret) {
@@ -548,6 +560,10 @@ static bool _uartAttachPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t
548560
ret &= perimanSetPinBus(rtsPin, ESP32_BUS_TYPE_UART_RTS, (void *)uart, uart_num, -1);
549561
if (ret) {
550562
uart->_rtsPin = rtsPin;
563+
// set Peripheral Manager deInit Callback for this UART pin
564+
if (perimanGetBusDeinit(ESP32_BUS_TYPE_UART_RTS) == NULL) {
565+
perimanSetBusDeinit(ESP32_BUS_TYPE_UART_RTS, _uartDetachBus_RTS);
566+
}
551567
}
552568
}
553569
if (!ret) {
@@ -567,14 +583,6 @@ int8_t uart_get_TxPin(uint8_t uart_num) {
567583
return _uart_bus_array[uart_num]._txPin;
568584
}
569585

570-
void uart_init_PeriMan(void) {
571-
// set Peripheral Manager deInit Callback for each UART pin
572-
perimanSetBusDeinit(ESP32_BUS_TYPE_UART_RX, _uartDetachBus_RX);
573-
perimanSetBusDeinit(ESP32_BUS_TYPE_UART_TX, _uartDetachBus_TX);
574-
perimanSetBusDeinit(ESP32_BUS_TYPE_UART_CTS, _uartDetachBus_CTS);
575-
perimanSetBusDeinit(ESP32_BUS_TYPE_UART_RTS, _uartDetachBus_RTS);
576-
}
577-
578586
// Routines that take care of UART events will be in the HardwareSerial Class code
579587
void uartGetEventQueue(uart_t *uart, QueueHandle_t *q) {
580588
// passing back NULL for the Queue pointer when UART is not initialized yet

0 commit comments

Comments
 (0)