diff --git a/Grbl_Esp32/src/PinUsers/Uart.cpp b/Grbl_Esp32/src/PinUsers/Uart.cpp index 37c060d0..8a971f22 100644 --- a/Grbl_Esp32/src/PinUsers/Uart.cpp +++ b/Grbl_Esp32/src/PinUsers/Uart.cpp @@ -65,6 +65,8 @@ namespace PinUsers { // TODO FIXME: We should set the UART mode somewhere better suited than here: if (uart_set_mode(uartPort_, UART_MODE_RS485_HALF_DUPLEX) != ESP_OK) { uart_driver_delete(uartPort_); + + UartResources().release(int(uartPort_) - 1); uartPort_ = UART_NUM_MAX; Assert(false, "UART set mode failed"); @@ -86,6 +88,8 @@ namespace PinUsers { // Tear down the uart, give back all resources. if (uartPort_ != UART_NUM_MAX) { uart_driver_delete(uartPort_); + + UartResources().release(int(uartPort_) - 1); } } }; diff --git a/Grbl_Esp32/src/PinUsers/Uart.h b/Grbl_Esp32/src/PinUsers/Uart.h index c18251fc..c617336d 100644 --- a/Grbl_Esp32/src/PinUsers/Uart.h +++ b/Grbl_Esp32/src/PinUsers/Uart.h @@ -30,7 +30,7 @@ namespace PinUsers { // Writes a buffer to the uart. Returns the number of _bytes_ written template int writePartial(const T& buffer, int byteOffset = 0) { - writePartial(&buffer, 1, byteOffset); + return writePartial(&buffer, 1, byteOffset); } // Writes a buffer to the uart. Returns the number of _bytes_ written