1 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 """Package entry-point.""" 6 7 import argparse 8 9 import netifaces 10 from tornado import ioloop 11 12 import echo_gadget 13 import hid_echo_gadget 14 import keyboard_gadget 15 import linux_gadgetfs 16 import mouse_gadget 17 import server 18 19 20 def ParseArgs(): 21 """Parse application arguments.""" 22 parser = argparse.ArgumentParser(description='USB gadget server.') 23 parser.add_argument( 24 '-i', '--interface', default='lo', 25 help='Listen for HTTP connections on this interface.') 26 parser.add_argument( 27 '-p', '--port', default=8080, 28 help='Listen for HTTP connections on this port.') 29 parser.add_argument( 30 '--hardware', default='beaglebone-black', 31 help='Hardware configuration.') 32 parser.add_argument( 33 '--start-claimed', 34 help='Start with the device claimed by this client.') 35 return parser.parse_args() 36 37 38 def main(): 39 args = ParseArgs() 40 41 server.interface = args.interface 42 server.port = args.port 43 server.hardware = args.hardware 44 server.claimed_by = args.start_claimed 45 46 addrs = netifaces.ifaddresses(server.interface) 47 ip_address = addrs[netifaces.AF_INET][0]['addr'] 48 server.address = '{}:{}'.format(ip_address, server.port) 49 50 server.chip = linux_gadgetfs.LinuxGadgetfs(server.hardware) 51 server.SwitchGadget(server.default) 52 53 echo_gadget.RegisterHandlers() 54 hid_echo_gadget.RegisterHandlers() 55 keyboard_gadget.RegisterHandlers() 56 mouse_gadget.RegisterHandlers() 57 58 server.http_server.listen(server.port) 59 60 ioloop.IOLoop.instance().start() 61 print 'Exiting...' 62 63 64 if __name__ == '__main__': 65 main() 66