From 2673b662af1fce9aa7ab25ed81a1a33020f425a2 Mon Sep 17 00:00:00 2001 From: Yegor Yefremov <yegorslists@googlemail.com> Date: Fri, 18 Jan 2019 11:03:10 +0100 Subject: [PATCH] tests/periph_uart: add tests for uart_mode Add positive and negative tests for data bits, stop bits and parity: - 7E1, 7O1 - 8E1, 8O1 - 8N2 Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com> --- tests/periph_uart/tests/periph_uart_if.py | 5 + tests/periph_uart/tests/test.py | 137 +++++++++++++++++++++- 2 files changed, 136 insertions(+), 6 deletions(-) diff --git a/tests/periph_uart/tests/periph_uart_if.py b/tests/periph_uart/tests/periph_uart_if.py index 213a3da7c1..6f1544b12c 100644 --- a/tests/periph_uart/tests/periph_uart_if.py +++ b/tests/periph_uart/tests/periph_uart_if.py @@ -19,6 +19,11 @@ class PeriphUartIf(DutShell): """Initialize DUT's UART.""" return self.send_cmd("init {} {}".format(dev, baud)) + def uart_mode(self, dev, data_bits, parity, stop_bits): + """Setup databits, parity and stopbits.""" + return self.send_cmd( + "mode {} {} {} {}".format(dev, data_bits, parity, stop_bits)) + def uart_send_string(self, dev, test_string): """Send data via DUT's UART.""" return self.send_cmd("send {} {}".format(dev, test_string)) diff --git a/tests/periph_uart/tests/test.py b/tests/periph_uart/tests/test.py index dc6181a188..c5b7caca48 100644 --- a/tests/periph_uart/tests/test.py +++ b/tests/periph_uart/tests/test.py @@ -17,7 +17,7 @@ import random import string from periph_uart_if import PeriphUartIf -from if_lib import PhilipIf +from riot_pal import LLMemMapIf, PHILIP_MEM_MAP_PATH def kwexpect(val1, val2, level="WARN"): @@ -120,7 +120,7 @@ def setup_test(bpt, t): bpt.reset_mcu() t.manual_test("Reset BPT") - bpt.set_uart_baud(115200) + bpt.write_reg('uart.baud', 115200) bpt.execute_changes() t.manual_test("BPT: setup default baudrate") @@ -154,6 +154,119 @@ def echo_test(bpt, uart, dut_uart, support_reset=False): return t +def even_parity_8_bits_test(bpt, uart, dut_uart, support_reset=False): + cmd_log = list() + t = Test('even parity and 8 bits test', + 'Tests DUT receive/transmit functionality with enabled even parity and 8 bits', + cmd_log) + + setup_test(bpt, t) + + bpt.write_reg('uart.ctrl.parity', 1) + bpt.execute_changes() + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 8, "E", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "t111"), "Success", ["t111"]) + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 8, "O", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "t111"), "Timeout") + + return t + + +def odd_parity_8_bits_test(bpt, uart, dut_uart, support_reset=False): + cmd_log = list() + t = Test('odd parity and 8 bits test', + 'Tests DUT receive/transmit functionality with enabled odd parity and 8 bits', + cmd_log) + + setup_test(bpt, t) + + bpt.write_reg('uart.ctrl.parity', 2) + bpt.execute_changes() + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 8, "O", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "t111"), "Success", ["t111"]) + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 8, "E", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "t111"), "Timeout") + + return t + + +def even_parity_7_bits_test(bpt, uart, dut_uart, support_reset=False): + cmd_log = list() + t = Test('even parity and 7 bits test', + 'Tests DUT receive/transmit functionality with enabled even parity and 7 bits', + cmd_log) + + setup_test(bpt, t) + + bpt.write_reg('uart.ctrl.parity', 1) + bpt.write_reg('uart.ctrl.data_bits', 1) + bpt.execute_changes() + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 7, "E", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "t111"), "Success", ["t111"]) + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 7, "O", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "t111"), "Timeout") + + return t + + +def odd_parity_7_bits_test(bpt, uart, dut_uart, support_reset=False): + cmd_log = list() + t = Test('odd parity and 7 bits test', + 'Tests DUT receive/transmit functionality with enabled odd parity and 7 bits', + cmd_log) + + setup_test(bpt, t) + + bpt.write_reg('uart.ctrl.parity', 2) + bpt.write_reg('uart.ctrl.data_bits', 1) + bpt.execute_changes() + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 7, "O", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "t111"), "Success", ["t111"]) + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 7, "E", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "t111"), "Timeout") + + return t + + +def two_stop_bits_test(bpt, uart, dut_uart, support_reset=False): + cmd_log = list() + t = Test('two stop bits test', + 'Tests DUT receive/transmit functionality with two stop bits', + cmd_log) + + setup_test(bpt, t) + + bpt.write_reg('uart.ctrl.parity', 2) + bpt.write_reg('uart.ctrl.data_bits', 0) + bpt.execute_changes() + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 8, "N", 2), "Success") + t.run_test(uart.uart_send_string(dut_uart, "tttt"), "Success", ["tttt"]) + + t.run_test(uart.uart_init(dut_uart, 115200), "Success") + t.run_test(uart.uart_mode(dut_uart, 8, "N", 1), "Success") + t.run_test(uart.uart_send_string(dut_uart, "tttt"), "Timeout") + + return t + + def echo_ext_test(bpt, uart, dut_uart, support_reset=False): cmd_log = list() t = Test('echo ext test', @@ -162,7 +275,7 @@ def echo_ext_test(bpt, uart, dut_uart, support_reset=False): setup_test(bpt, t) - bpt.set_uart_mode(1) + bpt.write_reg('uart.mode', 1) bpt.execute_changes() t.manual_test("BPT: set echo ext mode") @@ -182,13 +295,15 @@ def register_read_test(bpt, uart, dut_uart, support_reset=False): setup_test(bpt, t) - bpt.set_uart_mode(2) + bpt.write_reg('uart.mode', 2) bpt.execute_changes() t.manual_test("BPT: set echo ext mode") t.run_test(uart.uart_init(dut_uart, 115200), "Success") t.run_test(uart.uart_send_string( - dut_uart, "\"rr 152 10\""), "Success", ["0,0x09080706050403020100"]) + dut_uart, "\"wr 1 10 1\""), "Success") + t.run_test(uart.uart_send_string( + dut_uart, "\"rr 1 1\""), "Success", ["0,0x0A"]) t.run_test(uart.uart_send_string( dut_uart, "\"rr -1 10\""), "Success", [errno.EINVAL]) @@ -250,13 +365,23 @@ def main(): raise ValueError('Invalid log level: %s' % loglevel) logging.basicConfig(level=loglevel) - bpt = PhilipIf(port=args.bpt_port) + bpt = LLMemMapIf(PHILIP_MEM_MAP_PATH, 'serial', args.bpt_port) uart = PeriphUartIf(port=args.dut_port) print('Starting Test periph_uart') test_list = list() test_list.append(echo_test(bpt, uart, args.dut_uart)) print_full_result(test_list[-1]) + test_list.append(even_parity_8_bits_test(bpt, uart, args.dut_uart)) + print_full_result(test_list[-1]) + test_list.append(odd_parity_8_bits_test(bpt, uart, args.dut_uart)) + print_full_result(test_list[-1]) + test_list.append(even_parity_7_bits_test(bpt, uart, args.dut_uart)) + print_full_result(test_list[-1]) + test_list.append(odd_parity_7_bits_test(bpt, uart, args.dut_uart)) + print_full_result(test_list[-1]) + test_list.append(two_stop_bits_test(bpt, uart, args.dut_uart)) + print_full_result(test_list[-1]) test_list.append(echo_ext_test(bpt, uart, args.dut_uart)) print_full_result(test_list[-1]) test_list.append(register_read_test(bpt, uart, args.dut_uart)) -- GitLab