@@ -479,6 +479,10 @@ static bool _uartAttachPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t
479
479
ret &= perimanSetPinBus (rxPin , ESP32_BUS_TYPE_UART_RX , (void * )uart , uart_num , -1 );
480
480
if (ret ) {
481
481
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
+ }
482
486
}
483
487
}
484
488
if (!ret ) {
@@ -502,6 +506,10 @@ static bool _uartAttachPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t
502
506
ret &= perimanSetPinBus (txPin , ESP32_BUS_TYPE_UART_TX , (void * )uart , uart_num , -1 );
503
507
if (ret ) {
504
508
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
+ }
505
513
}
506
514
}
507
515
if (!ret ) {
@@ -525,6 +533,10 @@ static bool _uartAttachPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t
525
533
ret &= perimanSetPinBus (ctsPin , ESP32_BUS_TYPE_UART_CTS , (void * )uart , uart_num , -1 );
526
534
if (ret ) {
527
535
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
+ }
528
540
}
529
541
}
530
542
if (!ret ) {
@@ -548,6 +560,10 @@ static bool _uartAttachPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t
548
560
ret &= perimanSetPinBus (rtsPin , ESP32_BUS_TYPE_UART_RTS , (void * )uart , uart_num , -1 );
549
561
if (ret ) {
550
562
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
+ }
551
567
}
552
568
}
553
569
if (!ret ) {
@@ -567,14 +583,6 @@ int8_t uart_get_TxPin(uint8_t uart_num) {
567
583
return _uart_bus_array [uart_num ]._txPin ;
568
584
}
569
585
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
-
578
586
// Routines that take care of UART events will be in the HardwareSerial Class code
579
587
void uartGetEventQueue (uart_t * uart , QueueHandle_t * q ) {
580
588
// passing back NULL for the Queue pointer when UART is not initialized yet
0 commit comments