| /* |
| * Copyright (c) 2016 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /* |
| * @addtogroup t_uart_basic |
| * @{ |
| * @defgroup t_uart_poll test_uart_poll |
| * @brief TestPurpose: verify UART works well in poll mode |
| * @details |
| * - Test Steps |
| * - Poll Output: |
| * -# Output the prepared data using uart_poll_out(), and compare |
| * the output characters with the original characters. |
| * - Poll Input: |
| * -# Wait for data from UART console using uart_poll_in(). User sends |
| * data to UART console using echo "qwer" > /dev/ttyUSB* and waits |
| * for uart_poll_in() exit. |
| * - Expected Results |
| * -# When test UART poll out, the return value from uart_poll_out() |
| * will be equal to the character sent out. |
| * -# When test UART poll in, the app will wait for input from UART |
| * console and exit after receiving '\n'. |
| * @} |
| */ |
| |
| #include <test_uart.h> |
| |
| static const char *poll_data = "This is a POLL test.\r\n"; |
| |
| static int test_poll_in(void) |
| { |
| unsigned char recvChar; |
| struct device *uart_dev = device_get_binding(UART_DEVICE_NAME); |
| |
| if (!uart_dev) { |
| TC_PRINT("Cannot get UART device\n"); |
| return TC_FAIL; |
| } |
| |
| TC_PRINT("Please send characters to serial console\n"); |
| |
| /* Verify uart_poll_in() */ |
| while (1) { |
| while (uart_poll_in(uart_dev, &recvChar) < 0) |
| ; |
| |
| TC_PRINT("%c", recvChar); |
| |
| if (recvChar == '\n') { |
| break; |
| } |
| } |
| |
| return TC_PASS; |
| } |
| |
| static int test_poll_out(void) |
| { |
| int i; |
| unsigned char sentChar; |
| struct device *uart_dev = device_get_binding(UART_DEVICE_NAME); |
| |
| if (!uart_dev) { |
| TC_PRINT("Cannot get UART device\n"); |
| return TC_FAIL; |
| } |
| |
| /* Verify uart_poll_out() */ |
| for (i = 0; i < strlen(poll_data); i++) { |
| sentChar = uart_poll_out(uart_dev, poll_data[i]); |
| |
| if (sentChar != poll_data[i]) { |
| TC_PRINT("expect send %c, actaul send %c\n", |
| poll_data[i], sentChar); |
| return TC_FAIL; |
| } |
| } |
| |
| return TC_PASS; |
| } |
| |
| void test_uart_poll_out(void) |
| { |
| assert_true(test_poll_out() == TC_PASS, NULL); |
| } |
| |
| void test_uart_poll_in(void) |
| { |
| assert_true(test_poll_in() == TC_PASS, NULL); |
| } |