mirror of
https://github.com/espressif/esp-idf
synced 2025-03-10 01:29:21 -04:00
Function example_configure_stdin_stdout() was used for simple UART I/O operation in CI to enter test env configuration (wifi ssid, IPs, etc). It could be called multiple times, but didn't handle the situation where we install UART interrupt from multiple source (e.g. in ICMP tests, where we first need to enter wifi credentials of test AP and then we start ping-cmd console to handle ping commands)
33 lines
1.3 KiB
C
33 lines
1.3 KiB
C
/* Common functions for protocol examples, to configure stdin and stdout.
|
|
|
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
|
|
|
Unless required by applicable law or agreed to in writing, this
|
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
CONDITIONS OF ANY KIND, either express or implied.
|
|
*/
|
|
|
|
#include "protocol_examples_common.h"
|
|
#include "esp_err.h"
|
|
#include "driver/uart_vfs.h"
|
|
#include "driver/uart.h"
|
|
#include "sdkconfig.h"
|
|
|
|
esp_err_t example_configure_stdin_stdout(void)
|
|
{
|
|
if (uart_is_driver_installed((uart_port_t)CONFIG_ESP_CONSOLE_UART_NUM)) {
|
|
return ESP_OK;
|
|
}
|
|
// Initialize VFS & UART so we can use std::cout/cin
|
|
setvbuf(stdin, NULL, _IONBF, 0);
|
|
/* Install UART driver for interrupt-driven reads and writes */
|
|
ESP_ERROR_CHECK( uart_driver_install( (uart_port_t)CONFIG_ESP_CONSOLE_UART_NUM,
|
|
256, 0, 0, NULL, 0) );
|
|
/* Tell VFS to use UART driver */
|
|
uart_vfs_dev_use_driver(CONFIG_ESP_CONSOLE_UART_NUM);
|
|
uart_vfs_dev_port_set_rx_line_endings(CONFIG_ESP_CONSOLE_UART_NUM, ESP_LINE_ENDINGS_CR);
|
|
/* Move the caret to the beginning of the next line on '\n' */
|
|
uart_vfs_dev_port_set_tx_line_endings(CONFIG_ESP_CONSOLE_UART_NUM, ESP_LINE_ENDINGS_CRLF);
|
|
return ESP_OK;
|
|
}
|