VFS: Check in select() if the UART driver is installed or not

Closes https://github.com/espressif/esp-idf/issues/4627
This commit is contained in:
Roland Dobai
2020-01-14 13:48:36 +01:00
parent 647cb628a1
commit a9c4dab4d3
3 changed files with 25 additions and 3 deletions

View File

@@ -109,6 +109,17 @@ esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_b
*/
esp_err_t uart_driver_delete(uart_port_t uart_num);
/**
* @brief Checks whether the driver is installed or not
*
* @param uart_num UART port number, the max port number is (UART_NUM_MAX -1).
*
* @return
* - true driver is installed
* - false driver is not installed
*/
bool uart_is_driver_installed(uart_port_t uart_num);
/**
* @brief Set UART data bits.
*

View File

@@ -1355,8 +1355,6 @@ err:
return r;
}
int a = 0;
//Make sure no other tasks are still using UART before you call this function
esp_err_t uart_driver_delete(uart_port_t uart_num)
{
@@ -1410,6 +1408,11 @@ esp_err_t uart_driver_delete(uart_port_t uart_num)
return ESP_OK;
}
bool uart_is_driver_installed(uart_port_t uart_num)
{
return uart_num < UART_NUM_MAX && (p_uart_obj[uart_num] != NULL);
}
void uart_set_select_notif_callback(uart_port_t uart_num, uart_select_notif_callback_t uart_select_notif_callback)
{
if (uart_num < UART_NUM_MAX && p_uart_obj[uart_num]) {
@@ -1538,4 +1541,4 @@ esp_err_t uart_set_loop_back(uart_port_t uart_num, bool loop_back_en)
UART_CHECK((uart_num < UART_NUM_MAX), "uart_num error", ESP_ERR_INVALID_ARG);
uart_hal_set_loop_back(&(uart_context[uart_num].hal), loop_back_en);
return ESP_OK;
}
}