# # USB HID test # # Test connect and disconnect 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 x86_64] } { puts "Run script does not support autopilot mode on this platform" exit 0 } # # Build # set build_components { core init drivers/timer drivers/usb test/input server/dynamic_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 { } install_config $config # # Boot modules # # generic modules set boot_modules { core ld.lib.so init timer usb_drv test-input dynamic_rom } lappend_if [have_spec gpio] boot_modules [gpio_drv] append_platform_drv_boot_modules build_boot_image $boot_modules append qemu_args " -device nec-usb-xhci,id=xhci -device usb-kbd,bus=xhci.0 -nographic" # autopilot test #run_genode_until forever # wait for keyboard run_genode_until {.*USB HID.*Keyboard.*} 60 set spawn_id $qemu_spawn_id # send Ctrl-a+c to enter Qemu's monitor mode send "\x01\x63" # wait for monitor to become ready run_genode_until {(qemu)} 20 $spawn_id for {set i 0} {$i < 50} {incr i} { # connect keyboard send "device_add usb-kbd,id=ukb1\n" # wait for keyboard run_genode_until {.*USB HID.*Keyboard.*\n} 20 $spawn_id # disconnect keyboard send "device_del ukb1\n" # wait for disconnect run_genode_until {.*USB disconnect.*\n} 20 $spawn_id }