diff --git a/dist/tests/if_lib/README.md b/dist/tests/if_lib/README.md new file mode 100644 index 0000000000..1fd649fb46 --- /dev/null +++ b/dist/tests/if_lib/README.md @@ -0,0 +1,8 @@ +Test Simulator Interface Library +================================ + +Introduction +------------ + +This library provides a Python interface to the test simulator board +using a serial link. diff --git a/dist/tests/if_lib/__init__.py b/dist/tests/if_lib/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/periph_i2c/tests/tools/base_device.py b/dist/tests/if_lib/base_device.py similarity index 98% rename from tests/periph_i2c/tests/tools/base_device.py rename to dist/tests/if_lib/base_device.py index 580da7f181..c146805f66 100644 --- a/tests/periph_i2c/tests/tools/base_device.py +++ b/dist/tests/if_lib/base_device.py @@ -8,7 +8,7 @@ This module provice the base interface for a device to a driver. """ import logging -import driver_manager +from . import driver_manager class BaseDevice: diff --git a/dist/tests/if_lib/bpt_if.py b/dist/tests/if_lib/bpt_if.py new file mode 100644 index 0000000000..f76319b190 --- /dev/null +++ b/dist/tests/if_lib/bpt_if.py @@ -0,0 +1,739 @@ +# Copyright (C) 2018 Kevin Weiss +# +# This file is subject to the terms and conditions of the GNU Lesser +# General Public License v2.1. See the file LICENSE in the top level +# directory for more details. +"""@package PyToAPI +This module handles offset and sizes dictated by the memory map for the BPT. + +This module is autogenerated based on the memory map. +""" +import logging +from .ll_shell import LLShell + + +class BptIf(LLShell): + """Getters and setters for the memory map.""" + DEVICE_NUM = 0x42A5 + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def is_connected_to_board(self): + """Checks if board is connected.""" + return self.get_sys_device_num()["data"] == self.DEVICE_NUM + + def get_sys_sn_12(self): + """Unique ID of the device""" + return self.read_bytes(0, 12) + + def get_sys_fw_rev(self): + """Firmware revision""" + return self.read_bytes(12, 4) + + def get_sys_build_time_second(self): + """The seconds in decimal""" + return self.read_bytes(16, 1) + + def get_sys_build_time_minute(self): + """The minutes in decimal""" + return self.read_bytes(17, 1) + + def get_sys_build_time_hour(self): + """The hours in decimal""" + return self.read_bytes(18, 1) + + def get_sys_build_time_day_of_month(self): + """The months in decimal""" + return self.read_bytes(19, 1) + + def get_sys_build_time_day_of_week(self): + """The week in decimal""" + return self.read_bytes(20, 1) + + def get_sys_build_time_month(self): + """The month in decimal""" + return self.read_bytes(21, 1) + + def get_sys_build_time_year(self): + """The last two digits of the year in decimal (20xx)""" + return self.read_bytes(22, 1) + + def get_sys_build_time_res_1(self): + """Reserved bytes""" + return self.read_bytes(23, 1) + + def get_sys_device_num(self): + """A constant number that should always be the same""" + return self.read_bytes(24, 4) + + def set_sys_device_num(self, data=0): + """A constant number that should always be the same""" + return self.write_bytes(24, data, 4) + + def get_sys_cr(self): + """Specific modes for I2C""" + return self.read_bytes(28, 1) + + def set_sys_cr(self, data=0): + """Specific modes for I2C""" + return self.write_bytes(28, data, 1) + + def get_sys_cr_dut_rst(self): + """resets the DUT""" + return self.read_bits(28, 1, 1) + + def set_sys_cr_dut_rst(self, data=0): + """resets the DUT""" + return self.write_bits(28, 1, 1, data) + + def get_sys_res_3(self): + """Reserved bytes""" + return self.read_bytes(29, 3) + + def get_i2c_mode(self): + """Specific modes for I2C""" + return self.read_bytes(32, 1) + + def set_i2c_mode(self, data=0): + """Specific modes for I2C""" + return self.write_bytes(32, data, 1) + + def get_i2c_mode_addr_10_bit(self): + """10 bit address enable""" + return self.read_bits(32, 1, 1) + + def set_i2c_mode_addr_10_bit(self, data=0): + """10 bit address enable""" + return self.write_bits(32, 1, 1, data) + + def get_i2c_mode_general_call(self): + """general call enable""" + return self.read_bits(32, 2, 1) + + def set_i2c_mode_general_call(self, data=0): + """general call enable""" + return self.write_bits(32, 2, 1, data) + + def get_i2c_mode_no_clk_stretch(self): + """disable for clk stretch""" + return self.read_bits(32, 3, 1) + + def set_i2c_mode_no_clk_stretch(self, data=0): + """disable for clk stretch""" + return self.write_bits(32, 3, 1, data) + + def get_i2c_mode_reg_16_bit(self): + """16 bit register access mode""" + return self.read_bits(32, 4, 1) + + def set_i2c_mode_reg_16_bit(self, data=0): + """16 bit register access mode""" + return self.write_bits(32, 4, 1, data) + + def get_i2c_mode_nack_data(self): + """Forces a data nack""" + return self.read_bits(32, 5, 1) + + def set_i2c_mode_nack_data(self, data=0): + """Forces a data nack""" + return self.write_bits(32, 5, 1, data) + + def get_i2c_status(self): + """Specific modes for I2C""" + return self.read_bytes(33, 1) + + def set_i2c_status(self, data=0): + """Specific modes for I2C""" + return self.write_bytes(33, data, 1) + + def get_i2c_status_OVR(self): + """Overrun/Underrun: Request for new byte when not ready""" + return self.read_bits(33, 1, 1) + + def set_i2c_status_OVR(self, data=0): + """Overrun/Underrun: Request for new byte when not ready""" + return self.write_bits(33, 1, 1, data) + + def get_i2c_status_AF(self): + """Acknowledge failure""" + return self.read_bits(33, 2, 1) + + def set_i2c_status_AF(self, data=0): + """Acknowledge failure""" + return self.write_bits(33, 2, 1, data) + + def get_i2c_status_BERR(self): + """Bus error: Non-valid position during a byte transfer""" + return self.read_bits(33, 3, 1) + + def set_i2c_status_BERR(self, data=0): + """Bus error: Non-valid position during a byte transfer""" + return self.write_bits(33, 3, 1, data) + + def get_i2c_status_GENCALL(self): + """General call address recieved""" + return self.read_bits(33, 4, 1) + + def set_i2c_status_GENCALL(self, data=0): + """General call address recieved""" + return self.write_bits(33, 4, 1, data) + + def get_i2c_status_BUSY(self): + """Forces a data nack""" + return self.read_bits(33, 5, 1) + + def set_i2c_status_BUSY(self, data=0): + """Forces a data nack""" + return self.write_bits(33, 5, 1, data) + + def get_i2c_status_RSR(self): + """Repeated start detected""" + return self.read_bits(33, 6, 1) + + def set_i2c_status_RSR(self, data=0): + """Repeated start detected""" + return self.write_bits(33, 6, 1, data) + + def get_i2c_clk_stretch_delay(self): + """delay in us for clock stretch""" + return self.read_bytes(34, 2) + + def set_i2c_clk_stretch_delay(self, data=0): + """delay in us for clock stretch""" + return self.write_bytes(34, data, 2) + + def get_i2c_slave_addr_1(self): + """Primary slave address""" + return self.read_bytes(36, 2) + + def set_i2c_slave_addr_1(self, data=85): + """Primary slave address""" + return self.write_bytes(36, data, 2) + + def get_i2c_slave_addr_2(self): + """Secondary slave address""" + return self.read_bytes(38, 2) + + def set_i2c_slave_addr_2(self, data=64): + """Secondary slave address""" + return self.write_bytes(38, data, 2) + + def get_i2c_r_count(self): + """last read frame byte count""" + return self.read_bytes(40, 1) + + def set_i2c_r_count(self, data=0): + """last read frame byte count""" + return self.write_bytes(40, data, 1) + + def get_i2c_w_count(self): + """last write frame byte count""" + return self.read_bytes(41, 1) + + def set_i2c_w_count(self, data=0): + """last write frame byte count""" + return self.write_bytes(41, data, 1) + + def get_i2c_res_6(self): + """Reserved bytes""" + return self.read_bytes(42, 6) + + def get_spi_mode(self): + """""" + return self.read_bytes(48, 1) + + def set_spi_mode(self, data=0): + """""" + return self.write_bytes(48, data, 1) + + def get_spi_error_code(self): + """""" + return self.read_bytes(49, 4) + + def set_spi_error_code(self, data=0): + """""" + return self.write_bytes(49, data, 4) + + def get_spi_res_11(self): + """Reserved bytes""" + return self.read_bytes(53, 11) + + def get_uart_mode(self): + """Test mode""" + return self.read_bytes(64, 1) + + def set_uart_mode(self, data=0): + """Test mode""" + return self.write_bytes(64, data, 1) + + def get_uart_baud(self): + """Baudrate""" + return self.read_bytes(65, 4) + + def set_uart_baud(self, data=0): + """Baudrate""" + return self.write_bytes(65, data, 4) + + def get_uart_rx_count(self): + """Number of received bytes""" + return self.read_bytes(69, 2) + + def set_uart_rx_count(self, data=0): + """Number of received bytes""" + return self.write_bytes(69, data, 2) + + def get_uart_tx_count(self): + """Number of transmitted bytes""" + return self.read_bytes(71, 2) + + def set_uart_tx_count(self, data=0): + """Number of transmitted bytes""" + return self.write_bytes(71, data, 2) + + def get_uart_ctrl(self): + """UART control register""" + return self.read_bytes(73, 1) + + def set_uart_ctrl(self, data=0): + """UART control register""" + return self.write_bytes(73, data, 1) + + def get_uart_ctrl_stop_bits(self): + """Number of stop bits""" + return self.read_bits(73, 1, 1) + + def set_uart_ctrl_stop_bits(self, data=0): + """Number of stop bits""" + return self.write_bits(73, 1, 1, data) + + def get_uart_ctrl_parity(self): + """Parity""" + return self.read_bits(73, 3, 2) + + def set_uart_ctrl_parity(self, data=0): + """Parity""" + return self.write_bits(73, 3, 2, data) + + def get_uart_ctrl_rts(self): + """RTS pin state""" + return self.read_bits(73, 4, 1) + + def set_uart_ctrl_rts(self, data=0): + """RTS pin state""" + return self.write_bits(73, 4, 1, data) + + def get_uart_status(self): + """UART status register""" + return self.read_bytes(74, 1) + + def set_uart_status(self, data=0): + """UART status register""" + return self.write_bytes(74, data, 1) + + def get_uart_status_cts(self): + """CTS pin state""" + return self.read_bits(74, 1, 1) + + def set_uart_status_cts(self, data=0): + """CTS pin state""" + return self.write_bits(74, 1, 1, data) + + def get_uart_res_5(self): + """Reserved bytes""" + return self.read_bytes(75, 5) + + def get_rtc_second(self): + """The seconds in decimal""" + return self.read_bytes(80, 1) + + def set_rtc_second(self, data=0): + """The seconds in decimal""" + return self.write_bytes(80, data, 1) + + def get_rtc_minute(self): + """The minutes in decimal""" + return self.read_bytes(81, 1) + + def set_rtc_minute(self, data=0): + """The minutes in decimal""" + return self.write_bytes(81, data, 1) + + def get_rtc_hour(self): + """The hours in decimal""" + return self.read_bytes(82, 1) + + def set_rtc_hour(self, data=0): + """The hours in decimal""" + return self.write_bytes(82, data, 1) + + def get_rtc_day_of_month(self): + """The months in decimal""" + return self.read_bytes(83, 1) + + def set_rtc_day_of_month(self, data=0): + """The months in decimal""" + return self.write_bytes(83, data, 1) + + def get_rtc_day_of_week(self): + """The week in decimal""" + return self.read_bytes(84, 1) + + def set_rtc_day_of_week(self, data=0): + """The week in decimal""" + return self.write_bytes(84, data, 1) + + def get_rtc_month(self): + """The month in decimal""" + return self.read_bytes(85, 1) + + def set_rtc_month(self, data=0): + """The month in decimal""" + return self.write_bytes(85, data, 1) + + def get_rtc_year(self): + """The last two digits of the year in decimal (20xx)""" + return self.read_bytes(86, 1) + + def set_rtc_year(self, data=0): + """The last two digits of the year in decimal (20xx)""" + return self.write_bytes(86, data, 1) + + def get_rtc_res_1(self): + """Reserved bytes""" + return self.read_bytes(87, 1) + + def get_adc_0_mode(self): + """""" + return self.read_bytes(88, 1) + + def set_adc_0_mode(self, data=0): + """""" + return self.write_bytes(88, data, 1) + + def get_adc_0_error_code(self): + """""" + return self.read_bytes(89, 2) + + def set_adc_0_error_code(self, data=0): + """""" + return self.write_bytes(89, data, 2) + + def get_adc_0_sample_rate(self): + """""" + return self.read_bytes(91, 1) + + def set_adc_0_sample_rate(self, data=0): + """""" + return self.write_bytes(91, data, 1) + + def get_adc_0_value(self): + """""" + return self.read_bytes(92, 4) + + def set_adc_0_value(self, data=0): + """""" + return self.write_bytes(92, data, 4) + + def get_adc_0_res_8(self): + """Reserved bytes""" + return self.read_bytes(96, 8) + + def get_adc_1_mode(self): + """""" + return self.read_bytes(104, 1) + + def set_adc_1_mode(self, data=0): + """""" + return self.write_bytes(104, data, 1) + + def get_adc_1_error_code(self): + """""" + return self.read_bytes(105, 2) + + def set_adc_1_error_code(self, data=0): + """""" + return self.write_bytes(105, data, 2) + + def get_adc_1_sample_rate(self): + """""" + return self.read_bytes(107, 1) + + def set_adc_1_sample_rate(self, data=0): + """""" + return self.write_bytes(107, data, 1) + + def get_adc_1_value(self): + """""" + return self.read_bytes(108, 4) + + def set_adc_1_value(self, data=0): + """""" + return self.write_bytes(108, data, 4) + + def get_adc_1_res_8(self): + """Reserved bytes""" + return self.read_bytes(112, 8) + + def get_pwm_mode(self): + """""" + return self.read_bytes(120, 1) + + def set_pwm_mode(self, data=0): + """""" + return self.write_bytes(120, data, 1) + + def get_pwm_error_code(self): + """""" + return self.read_bytes(121, 2) + + def set_pwm_error_code(self, data=0): + """""" + return self.write_bytes(121, data, 2) + + def get_pwm_duty(self): + """""" + return self.read_bytes(123, 1) + + def set_pwm_duty(self, data=0): + """""" + return self.write_bytes(123, data, 1) + + def get_pwm_freq(self): + """""" + return self.read_bytes(124, 4) + + def set_pwm_freq(self, data=0): + """""" + return self.write_bytes(124, data, 4) + + def get_pwm_res_8(self): + """Reserved bytes""" + return self.read_bytes(128, 8) + + def get_tmr_mode(self): + """""" + return self.read_bytes(136, 1) + + def set_tmr_mode(self, data=0): + """""" + return self.write_bytes(136, data, 1) + + def get_tmr_error_code(self): + """""" + return self.read_bytes(137, 2) + + def set_tmr_error_code(self, data=0): + """""" + return self.write_bytes(137, data, 2) + + def get_tmr_duty(self): + """""" + return self.read_bytes(139, 1) + + def set_tmr_duty(self, data=0): + """""" + return self.write_bytes(139, data, 1) + + def get_tmr_freq(self): + """""" + return self.read_bytes(140, 4) + + def set_tmr_freq(self, data=0): + """""" + return self.write_bytes(140, data, 4) + + def get_tmr_hi_us(self): + """""" + return self.read_bytes(144, 4) + + def set_tmr_hi_us(self, data=0): + """""" + return self.write_bytes(144, data, 4) + + def get_tmr_lo_us(self): + """""" + return self.read_bytes(148, 4) + + def set_tmr_lo_us(self, data=0): + """""" + return self.write_bytes(148, data, 4) + + def get_user_reg_64(self): + """Writeable registers for user testing""" + return self.read_bytes(152, 64) + + def set_user_reg_64(self, data=0): + """Writeable registers for user testing""" + return self.write_bytes(152, data, 64) + + def get_res_40(self): + """Reserved bytes""" + return self.read_bytes(216, 40) + + def get_command_list(self): + """A list of all possible commands""" + cmds = list() + cmds.append(self.get_sys_sn_12) + cmds.append(self.get_sys_fw_rev) + cmds.append(self.get_sys_build_time_second) + cmds.append(self.get_sys_build_time_minute) + cmds.append(self.get_sys_build_time_hour) + cmds.append(self.get_sys_build_time_day_of_month) + cmds.append(self.get_sys_build_time_day_of_week) + cmds.append(self.get_sys_build_time_month) + cmds.append(self.get_sys_build_time_year) + cmds.append(self.get_sys_build_time_res_1) + cmds.append(self.get_sys_device_num) + cmds.append(self.set_sys_device_num) + cmds.append(self.get_sys_cr) + cmds.append(self.set_sys_cr) + cmds.append(self.get_sys_cr_dut_rst) + cmds.append(self.set_sys_cr_dut_rst) + cmds.append(self.get_sys_res_3) + cmds.append(self.get_i2c_mode) + cmds.append(self.set_i2c_mode) + cmds.append(self.get_i2c_mode_addr_10_bit) + cmds.append(self.set_i2c_mode_addr_10_bit) + cmds.append(self.get_i2c_mode_general_call) + cmds.append(self.set_i2c_mode_general_call) + cmds.append(self.get_i2c_mode_no_clk_stretch) + cmds.append(self.set_i2c_mode_no_clk_stretch) + cmds.append(self.get_i2c_mode_reg_16_bit) + cmds.append(self.set_i2c_mode_reg_16_bit) + cmds.append(self.get_i2c_mode_nack_data) + cmds.append(self.set_i2c_mode_nack_data) + cmds.append(self.get_i2c_status) + cmds.append(self.set_i2c_status) + cmds.append(self.get_i2c_status_OVR) + cmds.append(self.set_i2c_status_OVR) + cmds.append(self.get_i2c_status_AF) + cmds.append(self.set_i2c_status_AF) + cmds.append(self.get_i2c_status_BERR) + cmds.append(self.set_i2c_status_BERR) + cmds.append(self.get_i2c_status_GENCALL) + cmds.append(self.set_i2c_status_GENCALL) + cmds.append(self.get_i2c_status_BUSY) + cmds.append(self.set_i2c_status_BUSY) + cmds.append(self.get_i2c_status_RSR) + cmds.append(self.set_i2c_status_RSR) + cmds.append(self.get_i2c_clk_stretch_delay) + cmds.append(self.set_i2c_clk_stretch_delay) + cmds.append(self.get_i2c_slave_addr_1) + cmds.append(self.set_i2c_slave_addr_1) + cmds.append(self.get_i2c_slave_addr_2) + cmds.append(self.set_i2c_slave_addr_2) + cmds.append(self.get_i2c_r_count) + cmds.append(self.set_i2c_r_count) + cmds.append(self.get_i2c_w_count) + cmds.append(self.set_i2c_w_count) + cmds.append(self.get_i2c_res_6) + cmds.append(self.get_spi_mode) + cmds.append(self.set_spi_mode) + cmds.append(self.get_spi_error_code) + cmds.append(self.set_spi_error_code) + cmds.append(self.get_spi_res_11) + cmds.append(self.get_uart_mode) + cmds.append(self.set_uart_mode) + cmds.append(self.get_uart_baud) + cmds.append(self.set_uart_baud) + cmds.append(self.get_uart_rx_count) + cmds.append(self.set_uart_rx_count) + cmds.append(self.get_uart_tx_count) + cmds.append(self.set_uart_tx_count) + cmds.append(self.get_uart_ctrl) + cmds.append(self.set_uart_ctrl) + cmds.append(self.get_uart_ctrl_stop_bits) + cmds.append(self.set_uart_ctrl_stop_bits) + cmds.append(self.get_uart_ctrl_parity) + cmds.append(self.set_uart_ctrl_parity) + cmds.append(self.get_uart_ctrl_rts) + cmds.append(self.set_uart_ctrl_rts) + cmds.append(self.get_uart_status) + cmds.append(self.set_uart_status) + cmds.append(self.get_uart_status_cts) + cmds.append(self.set_uart_status_cts) + cmds.append(self.get_uart_res_5) + cmds.append(self.get_rtc_second) + cmds.append(self.set_rtc_second) + cmds.append(self.get_rtc_minute) + cmds.append(self.set_rtc_minute) + cmds.append(self.get_rtc_hour) + cmds.append(self.set_rtc_hour) + cmds.append(self.get_rtc_day_of_month) + cmds.append(self.set_rtc_day_of_month) + cmds.append(self.get_rtc_day_of_week) + cmds.append(self.set_rtc_day_of_week) + cmds.append(self.get_rtc_month) + cmds.append(self.set_rtc_month) + cmds.append(self.get_rtc_year) + cmds.append(self.set_rtc_year) + cmds.append(self.get_rtc_res_1) + cmds.append(self.get_adc_0_mode) + cmds.append(self.set_adc_0_mode) + cmds.append(self.get_adc_0_error_code) + cmds.append(self.set_adc_0_error_code) + cmds.append(self.get_adc_0_sample_rate) + cmds.append(self.set_adc_0_sample_rate) + cmds.append(self.get_adc_0_value) + cmds.append(self.set_adc_0_value) + cmds.append(self.get_adc_0_res_8) + cmds.append(self.get_adc_1_mode) + cmds.append(self.set_adc_1_mode) + cmds.append(self.get_adc_1_error_code) + cmds.append(self.set_adc_1_error_code) + cmds.append(self.get_adc_1_sample_rate) + cmds.append(self.set_adc_1_sample_rate) + cmds.append(self.get_adc_1_value) + cmds.append(self.set_adc_1_value) + cmds.append(self.get_adc_1_res_8) + cmds.append(self.get_pwm_mode) + cmds.append(self.set_pwm_mode) + cmds.append(self.get_pwm_error_code) + cmds.append(self.set_pwm_error_code) + cmds.append(self.get_pwm_duty) + cmds.append(self.set_pwm_duty) + cmds.append(self.get_pwm_freq) + cmds.append(self.set_pwm_freq) + cmds.append(self.get_pwm_res_8) + cmds.append(self.get_tmr_mode) + cmds.append(self.set_tmr_mode) + cmds.append(self.get_tmr_error_code) + cmds.append(self.set_tmr_error_code) + cmds.append(self.get_tmr_duty) + cmds.append(self.set_tmr_duty) + cmds.append(self.get_tmr_freq) + cmds.append(self.set_tmr_freq) + cmds.append(self.get_tmr_hi_us) + cmds.append(self.set_tmr_hi_us) + cmds.append(self.get_tmr_lo_us) + cmds.append(self.set_tmr_lo_us) + cmds.append(self.get_user_reg_64) + cmds.append(self.set_user_reg_64) + cmds.append(self.get_res_40) + return cmds + + +def main(): + """Tests all functions with default values.""" + logging.getLogger().setLevel(logging.DEBUG) + try: + bpt = BptIf.from_autodetect(baud=9600) + except Exception as ex: + logging.debug("Failed to autodetect BptIf: " + str(ex)) + bpt = BptIf.from_autodetect() + bpt2 = BptIf.copy_driver(bpt) + bpt.execute_changes() + bpt2.execute_changes() + bpt.reset_mcu() + cmds = bpt.get_command_list() + logging.debug("==========================================================") + for cmd in cmds: + cmd() + logging.debug("------------------------------------------------------") + logging.debug("==========================================================") + bpt.reset_mcu() + + +if __name__ == "__main__": + main() diff --git a/tests/periph_i2c/tests/tools/driver_manager.py b/dist/tests/if_lib/driver_manager.py similarity index 94% rename from tests/periph_i2c/tests/tools/driver_manager.py rename to dist/tests/if_lib/driver_manager.py index 2c8fb3981e..f51b7b5916 100644 --- a/tests/periph_i2c/tests/tools/driver_manager.py +++ b/dist/tests/if_lib/driver_manager.py @@ -7,8 +7,8 @@ This module assigns the drivers to the devices. """ import logging -from serial_driver import SerialDriver -from riot_driver import RiotDriver +from .serial_driver import SerialDriver +from .riot_driver import RiotDriver def driver_from_config(dev_type='serial', *args, **kwargs): diff --git a/tests/periph_i2c/tests/tools/dut_shell.py b/dist/tests/if_lib/dut_shell.py similarity index 98% rename from tests/periph_i2c/tests/tools/dut_shell.py rename to dist/tests/if_lib/dut_shell.py index 3938e5ff98..1b6f83fcca 100644 --- a/tests/periph_i2c/tests/tools/dut_shell.py +++ b/dist/tests/if_lib/dut_shell.py @@ -7,7 +7,7 @@ This module handles parsing of information from RIOT shell base tests. """ import logging -from base_device import BaseDevice +from .base_device import BaseDevice class DutShell(BaseDevice): diff --git a/tests/periph_i2c/tests/tools/ll_shell.py b/dist/tests/if_lib/ll_shell.py similarity index 99% rename from tests/periph_i2c/tests/tools/ll_shell.py rename to dist/tests/if_lib/ll_shell.py index f751487bff..2cae64a41c 100644 --- a/tests/periph_i2c/tests/tools/ll_shell.py +++ b/dist/tests/if_lib/ll_shell.py @@ -10,7 +10,7 @@ This module handles functions for a low level shell interface. import logging import errno import os -from base_device import BaseDevice +from .base_device import BaseDevice class LLShell(BaseDevice): diff --git a/tests/periph_i2c/tests/tools/riot_driver.py b/dist/tests/if_lib/riot_driver.py similarity index 100% rename from tests/periph_i2c/tests/tools/riot_driver.py rename to dist/tests/if_lib/riot_driver.py diff --git a/tests/periph_i2c/tests/tools/serial_driver.py b/dist/tests/if_lib/serial_driver.py similarity index 100% rename from tests/periph_i2c/tests/tools/serial_driver.py rename to dist/tests/if_lib/serial_driver.py diff --git a/tests/periph_i2c/tests/tools/periph_i2c_if.py b/tests/periph_i2c/tests/periph_i2c_if.py similarity index 99% rename from tests/periph_i2c/tests/tools/periph_i2c_if.py rename to tests/periph_i2c/tests/periph_i2c_if.py index 80180a43e1..7c0306d9e4 100644 --- a/tests/periph_i2c/tests/tools/periph_i2c_if.py +++ b/tests/periph_i2c/tests/periph_i2c_if.py @@ -7,7 +7,8 @@ This module handles parsing of information from RIOT periph_i2c test. """ import logging -from dut_shell import DutShell + +from if_lib.dut_shell import DutShell class PeriphI2CIf(DutShell): diff --git a/tests/periph_i2c/tests/test.py b/tests/periph_i2c/tests/test.py index dc114d8035..6af0943638 100644 --- a/tests/periph_i2c/tests/test.py +++ b/tests/periph_i2c/tests/test.py @@ -10,12 +10,12 @@ A test that can be used for now but should be adapted to a framework. TODO: REMOVE and adapt to a proper testing platform """ -import sys -import os import argparse import time import logging +import periph_i2c_if +from if_lib import bpt_if BPT_ADDR = 85 BPT_USER_REG = 152 @@ -319,10 +319,6 @@ def print_results(test_list): def main(): - sys.path.append(os.path.join(os.path.dirname(__file__), 'tools')) - print(sys.path) - import periph_i2c_if - import bpt_if parser = argparse.ArgumentParser() parser.add_argument("--log", help='Set the log level (DEBUG, INFO, WARN)') diff --git a/tests/periph_i2c/tests/tools/bpt_if.py b/tests/periph_i2c/tests/tools/bpt_if.py deleted file mode 100644 index dd7d00f952..0000000000 --- a/tests/periph_i2c/tests/tools/bpt_if.py +++ /dev/null @@ -1,542 +0,0 @@ -# Copyright (C) 2018 Kevin Weiss -# -# This file is subject to the terms and conditions of the GNU Lesser -# General Public License v2.1. See the file LICENSE in the top level -# directory for more details. -"""@package PyToAPI -This module handles offset and sizes dictated by the memory map for the BPT. - -This module is autogenerated based on the memory map. -""" -import logging -from ll_shell import LLShell - - -class BptIf(LLShell): - """Getters and setters for the memory map.""" - DEVICE_NUM = 0x42A5 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - def is_connected_to_board(self): - """Checks if board is connected.""" - return self.get_sys_device_num()["data"] == self.DEVICE_NUM - - def get_sys_sn12(self): - return self.read_bytes(0, 12) - - def set_sys_sn12(self, data=0): - return self.write_bytes(0, data, 12) - - def get_sys_fw_rev(self): - return self.read_bytes(12, 4) - - def set_sys_fw_rev(self, data=0): - return self.write_bytes(12, data, 4) - - def get_sys_build_time_second(self): - return self.read_bytes(16, 1) - - def set_sys_build_time_second(self, data=0): - return self.write_bytes(16, data, 1) - - def get_sys_build_time_minute(self): - return self.read_bytes(17, 1) - - def set_sys_build_time_minute(self, data=0): - return self.write_bytes(17, data, 1) - - def get_sys_build_time_hour(self): - return self.read_bytes(18, 1) - - def set_sys_build_time_hour(self, data=0): - return self.write_bytes(18, data, 1) - - def get_sys_build_time_day_of_month(self): - return self.read_bytes(19, 1) - - def set_sys_build_time_day_of_month(self, data=0): - return self.write_bytes(19, data, 1) - - def get_sys_build_time_day_of_week(self): - return self.read_bytes(20, 1) - - def set_sys_build_time_day_of_week(self, data=0): - return self.write_bytes(20, data, 1) - - def get_sys_build_time_month(self): - return self.read_bytes(21, 1) - - def set_sys_build_time_month(self, data=0): - return self.write_bytes(21, data, 1) - - def get_sys_build_time_year(self): - return self.read_bytes(22, 1) - - def set_sys_build_time_year(self, data=0): - return self.write_bytes(22, data, 1) - - def get_sys_build_time_res1(self): - return self.read_bytes(23, 1) - - def set_sys_build_time_res1(self, data=0): - return self.write_bytes(23, data, 1) - - def get_sys_device_num(self): - return self.read_bytes(24, 4) - - def set_sys_device_num(self, data=0): - return self.write_bytes(24, data, 4) - - def get_sys_cr(self): - return self.read_bytes(28, 1) - - def set_sys_cr(self, data=0): - return self.write_bytes(28, data, 1) - - def get_sys_res3(self): - return self.read_bytes(29, 3) - - def set_sys_res3(self, data=0): - return self.write_bytes(29, data, 3) - - def get_i2c_mode(self): - return self.read_bytes(32, 1) - - def set_i2c_mode(self, data=0): - return self.write_bytes(32, data, 1) - - def get_i2c_error_code(self): - return self.read_bytes(33, 2) - - def set_i2c_error_code(self, data=0): - return self.write_bytes(33, data, 2) - - def get_i2c_clk_stretch_delay(self): - return self.read_bytes(35, 2) - - def set_i2c_clk_stretch_delay(self, data=0): - return self.write_bytes(35, data, 2) - - def get_i2c_inject_failure_mode(self): - return self.read_bytes(37, 1) - - def set_i2c_inject_failure_mode(self, data=0): - return self.write_bytes(37, data, 1) - - def get_i2c_slave_addr_1(self): - return self.read_bytes(38, 2) - - def set_i2c_slave_addr_1(self, data=0): - return self.write_bytes(38, data, 2) - - def get_i2c_slave_addr_2(self): - return self.read_bytes(40, 2) - - def set_i2c_slave_addr_2(self, data=0): - return self.write_bytes(40, data, 2) - - def get_i2c_r_count(self): - return self.read_bytes(42, 1) - - def set_i2c_r_count(self, data=0): - return self.write_bytes(42, data, 1) - - def get_i2c_w_count(self): - return self.read_bytes(43, 1) - - def set_i2c_w_count(self, data=0): - return self.write_bytes(43, data, 1) - - def get_i2c_res4(self): - return self.read_bytes(44, 4) - - def set_i2c_res4(self, data=0): - return self.write_bytes(44, data, 4) - - def get_spi_mode(self): - return self.read_bytes(48, 1) - - def set_spi_mode(self, data=0): - return self.write_bytes(48, data, 1) - - def get_spi_error_code(self): - return self.read_bytes(49, 4) - - def set_spi_error_code(self, data=0): - return self.write_bytes(49, data, 4) - - def get_spi_res11(self): - return self.read_bytes(53, 11) - - def set_spi_res11(self, data=0): - return self.write_bytes(53, data, 11) - - def get_uart_mode(self): - return self.read_bytes(64, 1) - - def set_uart_mode(self, data=0): - return self.write_bytes(64, data, 1) - - def get_uart_error_code(self): - return self.read_bytes(65, 2) - - def set_uart_error_code(self, data=0): - return self.write_bytes(65, data, 2) - - def get_uart_baud(self): - return self.read_bytes(67, 4) - - def set_uart_baud(self, data=0): - return self.write_bytes(67, data, 4) - - def get_uart_reg_output(self): - return self.read_bytes(71, 1) - - def set_uart_reg_output(self, data=0): - return self.write_bytes(71, data, 1) - - def get_uart_size(self): - return self.read_bytes(72, 1) - - def set_uart_size(self, data=0): - return self.write_bytes(72, data, 1) - - def get_uart_res7(self): - return self.read_bytes(73, 7) - - def set_uart_res7(self, data=0): - return self.write_bytes(73, data, 7) - - def get_rtc_second(self): - return self.read_bytes(80, 1) - - def set_rtc_second(self, data=0): - return self.write_bytes(80, data, 1) - - def get_rtc_minute(self): - return self.read_bytes(81, 1) - - def set_rtc_minute(self, data=0): - return self.write_bytes(81, data, 1) - - def get_rtc_hour(self): - return self.read_bytes(82, 1) - - def set_rtc_hour(self, data=0): - return self.write_bytes(82, data, 1) - - def get_rtc_day_of_month(self): - return self.read_bytes(83, 1) - - def set_rtc_day_of_month(self, data=0): - return self.write_bytes(83, data, 1) - - def get_rtc_day_of_week(self): - return self.read_bytes(84, 1) - - def set_rtc_day_of_week(self, data=0): - return self.write_bytes(84, data, 1) - - def get_rtc_month(self): - return self.read_bytes(85, 1) - - def set_rtc_month(self, data=0): - return self.write_bytes(85, data, 1) - - def get_rtc_year(self): - return self.read_bytes(86, 1) - - def set_rtc_year(self, data=0): - return self.write_bytes(86, data, 1) - - def get_rtc_res1(self): - return self.read_bytes(87, 1) - - def set_rtc_res1(self, data=0): - return self.write_bytes(87, data, 1) - - def get_adc0_mode(self): - return self.read_bytes(88, 1) - - def set_adc0_mode(self, data=0): - return self.write_bytes(88, data, 1) - - def get_adc0_error_code(self): - return self.read_bytes(89, 2) - - def set_adc0_error_code(self, data=0): - return self.write_bytes(89, data, 2) - - def get_adc0_sample_rate(self): - return self.read_bytes(91, 1) - - def set_adc0_sample_rate(self, data=0): - return self.write_bytes(91, data, 1) - - def get_adc0_value(self): - return self.read_bytes(92, 4) - - def set_adc0_value(self, data=0): - return self.write_bytes(92, data, 4) - - def get_adc0_res8(self): - return self.read_bytes(96, 8) - - def set_adc0_res8(self, data=0): - return self.write_bytes(96, data, 8) - - def get_adc1_mode(self): - return self.read_bytes(104, 1) - - def set_adc1_mode(self, data=0): - return self.write_bytes(104, data, 1) - - def get_adc1_error_code(self): - return self.read_bytes(105, 2) - - def set_adc1_error_code(self, data=0): - return self.write_bytes(105, data, 2) - - def get_adc1_sample_rate(self): - return self.read_bytes(107, 1) - - def set_adc1_sample_rate(self, data=0): - return self.write_bytes(107, data, 1) - - def get_adc1_value(self): - return self.read_bytes(108, 4) - - def set_adc1_value(self, data=0): - return self.write_bytes(108, data, 4) - - def get_adc1_res8(self): - return self.read_bytes(112, 8) - - def set_adc1_res8(self, data=0): - return self.write_bytes(112, data, 8) - - def get_pwm_mode(self): - return self.read_bytes(120, 1) - - def set_pwm_mode(self, data=0): - return self.write_bytes(120, data, 1) - - def get_pwm_error_code(self): - return self.read_bytes(121, 2) - - def set_pwm_error_code(self, data=0): - return self.write_bytes(121, data, 2) - - def get_pwm_duty(self): - return self.read_bytes(123, 1) - - def set_pwm_duty(self, data=0): - return self.write_bytes(123, data, 1) - - def get_pwm_freq(self): - return self.read_bytes(124, 4) - - def set_pwm_freq(self, data=0): - return self.write_bytes(124, data, 4) - - def get_pwm_res8(self): - return self.read_bytes(128, 8) - - def set_pwm_res8(self, data=0): - return self.write_bytes(128, data, 8) - - def get_tmr_mode(self): - return self.read_bytes(136, 1) - - def set_tmr_mode(self, data=0): - return self.write_bytes(136, data, 1) - - def get_tmr_error_code(self): - return self.read_bytes(137, 2) - - def set_tmr_error_code(self, data=0): - return self.write_bytes(137, data, 2) - - def get_tmr_duty(self): - return self.read_bytes(139, 1) - - def set_tmr_duty(self, data=0): - return self.write_bytes(139, data, 1) - - def get_tmr_freq(self): - return self.read_bytes(140, 4) - - def set_tmr_freq(self, data=0): - return self.write_bytes(140, data, 4) - - def get_tmr_hi_us(self): - return self.read_bytes(144, 4) - - def set_tmr_hi_us(self, data=0): - return self.write_bytes(144, data, 4) - - def get_tmr_lo_us(self): - return self.read_bytes(148, 4) - - def set_tmr_lo_us(self, data=0): - return self.write_bytes(148, data, 4) - - def get_res104(self): - return self.read_bytes(152, 104) - - def set_res104(self, data=0): - return self.write_bytes(152, data, 104) - - def get_command_list(self): - """Gets a list of all functions to make an easy test.""" - cmds = list() - cmds.append(self.set_sys_sn12) - cmds.append(self.get_sys_sn12) - cmds.append(self.set_sys_fw_rev) - cmds.append(self.get_sys_fw_rev) - cmds.append(self.set_sys_build_time_second) - cmds.append(self.get_sys_build_time_second) - cmds.append(self.set_sys_build_time_minute) - cmds.append(self.get_sys_build_time_minute) - cmds.append(self.set_sys_build_time_hour) - cmds.append(self.get_sys_build_time_hour) - cmds.append(self.set_sys_build_time_day_of_month) - cmds.append(self.get_sys_build_time_day_of_month) - cmds.append(self.set_sys_build_time_day_of_week) - cmds.append(self.get_sys_build_time_day_of_week) - cmds.append(self.set_sys_build_time_month) - cmds.append(self.get_sys_build_time_month) - cmds.append(self.set_sys_build_time_year) - cmds.append(self.get_sys_build_time_year) - cmds.append(self.set_sys_build_time_res1) - cmds.append(self.get_sys_build_time_res1) - cmds.append(self.set_sys_device_num) - cmds.append(self.get_sys_device_num) - cmds.append(self.set_sys_cr) - cmds.append(self.get_sys_cr) - cmds.append(self.set_sys_res3) - cmds.append(self.get_sys_res3) - cmds.append(self.set_i2c_mode) - cmds.append(self.get_i2c_mode) - cmds.append(self.set_i2c_error_code) - cmds.append(self.get_i2c_error_code) - cmds.append(self.set_i2c_clk_stretch_delay) - cmds.append(self.get_i2c_clk_stretch_delay) - cmds.append(self.set_i2c_inject_failure_mode) - cmds.append(self.get_i2c_inject_failure_mode) - cmds.append(self.set_i2c_slave_addr_1) - cmds.append(self.get_i2c_slave_addr_1) - cmds.append(self.set_i2c_slave_addr_2) - cmds.append(self.get_i2c_slave_addr_2) - cmds.append(self.set_i2c_r_count) - cmds.append(self.get_i2c_r_count) - cmds.append(self.set_i2c_w_count) - cmds.append(self.get_i2c_w_count) - cmds.append(self.set_i2c_res4) - cmds.append(self.get_i2c_res4) - cmds.append(self.set_spi_mode) - cmds.append(self.get_spi_mode) - cmds.append(self.set_spi_error_code) - cmds.append(self.get_spi_error_code) - cmds.append(self.set_spi_res11) - cmds.append(self.get_spi_res11) - cmds.append(self.set_uart_mode) - cmds.append(self.get_uart_mode) - cmds.append(self.set_uart_error_code) - cmds.append(self.get_uart_error_code) - cmds.append(self.set_uart_baud) - cmds.append(self.get_uart_baud) - cmds.append(self.set_uart_reg_output) - cmds.append(self.get_uart_reg_output) - cmds.append(self.set_uart_size) - cmds.append(self.get_uart_size) - cmds.append(self.set_uart_res7) - cmds.append(self.get_uart_res7) - cmds.append(self.set_rtc_second) - cmds.append(self.get_rtc_second) - cmds.append(self.set_rtc_minute) - cmds.append(self.get_rtc_minute) - cmds.append(self.set_rtc_hour) - cmds.append(self.get_rtc_hour) - cmds.append(self.set_rtc_day_of_month) - cmds.append(self.get_rtc_day_of_month) - cmds.append(self.set_rtc_day_of_week) - cmds.append(self.get_rtc_day_of_week) - cmds.append(self.set_rtc_month) - cmds.append(self.get_rtc_month) - cmds.append(self.set_rtc_year) - cmds.append(self.get_rtc_year) - cmds.append(self.set_rtc_res1) - cmds.append(self.get_rtc_res1) - cmds.append(self.set_adc0_mode) - cmds.append(self.get_adc0_mode) - cmds.append(self.set_adc0_error_code) - cmds.append(self.get_adc0_error_code) - cmds.append(self.set_adc0_sample_rate) - cmds.append(self.get_adc0_sample_rate) - cmds.append(self.set_adc0_value) - cmds.append(self.get_adc0_value) - cmds.append(self.set_adc0_res8) - cmds.append(self.get_adc0_res8) - cmds.append(self.set_adc1_mode) - cmds.append(self.get_adc1_mode) - cmds.append(self.set_adc1_error_code) - cmds.append(self.get_adc1_error_code) - cmds.append(self.set_adc1_sample_rate) - cmds.append(self.get_adc1_sample_rate) - cmds.append(self.set_adc1_value) - cmds.append(self.get_adc1_value) - cmds.append(self.set_adc1_res8) - cmds.append(self.get_adc1_res8) - cmds.append(self.set_pwm_mode) - cmds.append(self.get_pwm_mode) - cmds.append(self.set_pwm_error_code) - cmds.append(self.get_pwm_error_code) - cmds.append(self.set_pwm_duty) - cmds.append(self.get_pwm_duty) - cmds.append(self.set_pwm_freq) - cmds.append(self.get_pwm_freq) - cmds.append(self.set_pwm_res8) - cmds.append(self.get_pwm_res8) - cmds.append(self.set_tmr_mode) - cmds.append(self.get_tmr_mode) - cmds.append(self.set_tmr_error_code) - cmds.append(self.get_tmr_error_code) - cmds.append(self.set_tmr_duty) - cmds.append(self.get_tmr_duty) - cmds.append(self.set_tmr_freq) - cmds.append(self.get_tmr_freq) - cmds.append(self.set_tmr_hi_us) - cmds.append(self.get_tmr_hi_us) - cmds.append(self.set_tmr_lo_us) - cmds.append(self.get_tmr_lo_us) - cmds.append(self.set_res104) - cmds.append(self.get_res104) - return cmds - - -def main(): - """Tests all functions with default values.""" - logging.getLogger().setLevel(logging.DEBUG) - try: - bpt = BptIf.from_autodetect(baud=9600) - except Exception as ex: - logging.debug("Failed to autodetect BptIf: " + str(ex)) - bpt = BptIf.from_autodetect() - bpt2 = BptIf.copy_driver(bpt) - bpt.execute_changes() - bpt2.execute_changes() - bpt.reset_mcu() - cmds = bpt.get_command_list() - logging.debug("==========================================================") - for cmd in cmds: - cmd() - logging.debug("------------------------------------------------------") - logging.debug("==========================================================") - bpt.reset_mcu() - - -if __name__ == "__main__": - main()