def choose_device(devices): if not len(devices): raise Exception("No KeepKey connected!") if len(devices) == 1: try: return HidTransport(devices[0]) except IOError: raise Exception("Device is currently in use") i = 0 sys.stderr.write("----------------------------\n") sys.stderr.write("Available devices:\n") for d in devices: try: t = HidTransport(d) except IOError: sys.stderr.write("[-] <device is currently in use>\n") continue client = KeepKeyClient(t) if client.features.label: sys.stderr.write("[%d] %s\n" % (i, client.features.label)) else: sys.stderr.write("[%d] <no label>\n" % i) t.close() i += 1 sys.stderr.write("----------------------------\n") sys.stderr.write("Please choose device to use: ") try: device_id = int(raw_input()) return HidTransport(devices[device_id]) except: raise Exception("Invalid choice, exiting...")