diff --git a/repos/dde_linux/run/usb_hid.run b/repos/dde_linux/run/usb_hid.run index 71f1509751..e36a1630ff 100644 --- a/repos/dde_linux/run/usb_hid.run +++ b/repos/dde_linux/run/usb_hid.run @@ -64,11 +64,9 @@ if { [get_cmd_switch --autopilot] && set build_components { core init timer - drivers/usb_host - drivers/usb_hid + drivers/usb test/input server/dynamic_rom - server/report_rom } lappend_if [have_spec gpio] build_components drivers/gpio @@ -120,39 +118,27 @@ append config { - - - - - - - - - } -append config "" -append config { + - - - - - - - - - - - - - - + + + - - + + + + + + + + + @@ -201,10 +187,9 @@ install_config $config # generic modules set boot_modules { - core ld.lib.so init timer usb_hid_drv test-input dynamic_rom report_rom + core ld.lib.so init timer usb_drv test-input dynamic_rom } -append boot_modules [usb_host_drv_binary] lappend_if [have_spec gpio] boot_modules [gpio_drv] append_platform_drv_boot_modules @@ -230,7 +215,7 @@ run_genode_until {\[init -\> test-input\] Input event #11.*\n} 40 [output_spawn_ grep_output {^\[init } unify_output { number [0-9]+} "" -unify_output {(?n)on usb-usbbus.*$} "" +unify_output {(?n)on usb-dummy.*$} "" unify_output {(?n)using .*$} "" unify_output {(?n)^.*__wait_event.*$} "" unify_output {(?n)^.*Failed to submit URB.*$} "" @@ -247,8 +232,10 @@ compare_output_to { [init -> test-input] Input event #5 RELEASE BTN_LEFT [init -> usb_drv] dev_info: USB disconnect, device [init -> usb_drv] dev_info: new full-speed USB device -[init -> usb_hid_drv] dev_info: input: USB HID v1.11 Keyboard [HID 03eb:204d] -[init -> usb_hid_drv] dev_info: input: USB HID v1.11 Mouse [HID 03eb:204d] +[init -> usb_drv] dev_info: D L +[init -> usb_drv] dev_info: input: USB HID v1.11 Keyboard [D L] +[init -> usb_drv] dev_info: D L +[init -> usb_drv] dev_info: input: USB HID v1.11 Mouse [D L] [init -> test-input] Input event #6 PRESS KEY_X 0 [init -> test-input] Input event #7 RELEASE KEY_X [init -> test-input] Input event #8 PRESS BTN_LEFT 0 diff --git a/repos/dde_linux/run/usb_hid_raw.run b/repos/dde_linux/run/usb_hid_raw.run new file mode 100644 index 0000000000..71f1509751 --- /dev/null +++ b/repos/dde_linux/run/usb_hid_raw.run @@ -0,0 +1,258 @@ +# +# USB HID test +# +# By default, the run script runs interactively and reports any received USB +# input events to the console. +# +# When run with the '--autopilot' run option, the run script tests the USB +# input events generated by a 'Pro Micro' microcontroller. +# +# Pro Micro setup instructions +# ---------------------------- +# +# Install prerequisites (example for Xubuntu 16.04): +# +# $ sudo apt-get install gcc-avr avr-libc avrdude +# +# Checkout and build the microcontroller software: +# +# $ git clone https://github.com/cproc/lufa.git +# $ cd lufa +# $ git checkout genode_usb_tests +# $ cd Demos/Device/ClassDriver/KeyboardMouseGenode +# $ make +# +# Connect the 'RST' pin with the 'GND' pin to hold the Pro Micro in the reset +# state. +# +# Connect the Pro Micro to the host PC +# +# Check the device file name with 'dmesg'. If it is not 'ttyACM0', change +# 'AVRDUDE_PORT' in 'makefile' accordingly. +# +# Release the RST/GND pin connection and within the next 8 seconds run: +# +# $ make avrdude +# +# Disconnect the Pro Micro or put it into reset state again to avoid unexpected +# input events on the host PC. +# + +if { [have_spec linux] || [have_spec muen] } { + puts "Run script does not support Linux and Muen." + exit 0 +} + +if { [get_cmd_switch --autopilot] && [have_include "power_on/qemu"] } { + puts "Run script does not support autopilot mode on Qemu" + exit 0 +} + +if { [get_cmd_switch --autopilot] && + ![have_spec arndale] && + ![have_spec panda] && + ![have_spec rpi] && + ![have_spec x86] && + ![have_spec imx6q_sabrelite]} { + puts "Run script does not support autopilot mode on this platform" + exit 0 +} + +# +# Build +# + +set build_components { + core init timer + drivers/usb_host + drivers/usb_hid + test/input + server/dynamic_rom + server/report_rom +} + +lappend_if [have_spec gpio] build_components drivers/gpio + +source ${genode_dir}/repos/base/run/platform_drv.inc +append_platform_drv_build_components + +build $build_components + +proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv } + if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv } + return gpio_drv } + +create_boot_directory + +# +# Generate config +# + +append config { + + + + + + + + + + + + + + + } + +append_if [have_spec gpio] config " + + + + + " + +append_platform_drv_config + +append config { + + + + + + + + + + + + + + } +append config "" +append config { + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +install_config $config + +# +# Boot modules +# + +# generic modules +set boot_modules { + core ld.lib.so init timer usb_hid_drv test-input dynamic_rom report_rom +} + +append boot_modules [usb_host_drv_binary] +lappend_if [have_spec gpio] boot_modules [gpio_drv] + +append_platform_drv_boot_modules + +build_boot_image $boot_modules + +append qemu_args " -usb -usbdevice mouse -usbdevice keyboard" +append qemu_args " -device usb-ehci,id=ehci" +append xen_args { usbdevice=\["mouse","keyboard"\] } + +if { [have_include "power_on/qemu"] || ![get_cmd_switch --autopilot] } { run_genode_until forever } + +# autopilot test + +run_genode_until {\[init -\> test-input\] Input event #0\t} 60 + +# remove everything before the first interesting line +regexp {(\[init -\> test-input\] Input event #0\t.*)} $output all output + +run_genode_until {\[init -\> test-input\] Input event #11.*\n} 40 [output_spawn_id] + +# pay only attention to the output of init and its children +grep_output {^\[init } + +unify_output { number [0-9]+} "" +unify_output {(?n)on usb-usbbus.*$} "" +unify_output {(?n)using .*$} "" +unify_output {(?n)^.*__wait_event.*$} "" +unify_output {(?n)^.*Failed to submit URB.*$} "" +unify_output {(?n)^.*dev_warn.*$} "" +filter_out_color_escape_sequences +trim_lines + +compare_output_to { +[init -> test-input] Input event #0 PRESS KEY_X 0 +[init -> test-input] Input event #1 RELEASE KEY_X +[init -> test-input] Input event #2 PRESS BTN_LEFT 0 +[init -> test-input] Input event #3 REL_MOTION -1+0 +[init -> test-input] Input event #4 REL_MOTION +0+1 +[init -> test-input] Input event #5 RELEASE BTN_LEFT +[init -> usb_drv] dev_info: USB disconnect, device +[init -> usb_drv] dev_info: new full-speed USB device +[init -> usb_hid_drv] dev_info: input: USB HID v1.11 Keyboard [HID 03eb:204d] +[init -> usb_hid_drv] dev_info: input: USB HID v1.11 Mouse [HID 03eb:204d] +[init -> test-input] Input event #6 PRESS KEY_X 0 +[init -> test-input] Input event #7 RELEASE KEY_X +[init -> test-input] Input event #8 PRESS BTN_LEFT 0 +[init -> test-input] Input event #9 REL_MOTION -1+0 +[init -> test-input] Input event #10 REL_MOTION +0+1 +[init -> test-input] Input event #11 RELEASE BTN_LEFT +} diff --git a/repos/ports/run/vbox5_genode_usb_hid.run b/repos/ports/run/vbox5_genode_usb_hid.run index 6b16ef0a77..d801135e01 100644 --- a/repos/ports/run/vbox5_genode_usb_hid.run +++ b/repos/ports/run/vbox5_genode_usb_hid.run @@ -237,7 +237,7 @@ regexp {(\[init -\> log_terminal\] \[init -\> test-input\] Input event #0\t.*)} run_genode_until {.*\[init -\> test-input\] Input event #11.*\n} 60 [output_spawn_id] unify_output { number [0-9]+} "" -unify_output {(?n)on usb-usbbus.*$} "" +unify_output {(?n)on usb-dummy.*$} "" unify_output {(?n)using .*$} "" unify_output {(?n)^.*__wait_event.*$} "" unify_output {(?n)^.*Failed to submit URB.*$} "" @@ -260,8 +260,10 @@ compare_output_to { [init -> usb_drv] dev_info: new full-speed USB device [init -> virtualbox] Attach USB device (vendor=3eb, product=204d) [init -> log_terminal] [init -> usb_drv] dev_info: new full-speed USB device -[init -> log_terminal] [init -> usb_hid_drv] dev_info: input: USB HID v1.11 Keyboard [HID 03eb:204d] -[init -> log_terminal] [init -> usb_hid_drv] dev_info: input: USB HID v1.11 Mouse [HID 03eb:204d] +[init -> log_terminal] [init -> usb_drv] dev_info: D L +[init -> log_terminal] [init -> usb_drv] dev_info: input: USB HID v1.11 Keyboard [D L] +[init -> log_terminal] [init -> usb_drv] dev_info: D L +[init -> log_terminal] [init -> usb_drv] dev_info: input: USB HID v1.11 Mouse [D L] [init -> log_terminal] [init -> test-input] Input event #6 PRESS KEY_X 0 [init -> log_terminal] [init -> test-input] Input event #7 RELEASE KEY_X [init -> log_terminal] [init -> test-input] Input event #8 PRESS BTN_LEFT 0 diff --git a/tool/autopilot.list b/tool/autopilot.list index 4c7ecdbc53..fec8a9e109 100644 --- a/tool/autopilot.list +++ b/tool/autopilot.list @@ -57,6 +57,7 @@ timeout timer_accuracy tz_vmm usb_hid +usb_hid_raw vbox4_ubuntu_14_04_32 vbox4_ubuntu_14_04_64 vbox4_ubuntu_16_04_32