trezor: try and allow transports to fail independently

related: #4060
This commit is contained in:
SomberNight 2018-03-08 02:45:39 +01:00
parent 192e895933
commit c1d14b9677

View file

@ -127,8 +127,28 @@ class TrezorPlugin(HW_PluginBase):
self.device_manager().register_enumerate_func(self.enumerate)
def enumerate(self):
from trezorlib.device import TrezorDevice
return [Device(d.get_path(), -1, d.get_path(), 'TREZOR', 0) for d in TrezorDevice.enumerate()]
try:
from trezorlib.transport import all_transports
except ImportError:
# compat for trezorlib < 0.9.2
def all_transports():
from trezorlib.transport_bridge import BridgeTransport
from trezorlib.transport_hid import HidTransport
from trezorlib.transport_udp import UdpTransport
from trezorlib.transport_webusb import WebUsbTransport
return (BridgeTransport, HidTransport, UdpTransport, WebUsbTransport)
devices = []
for transport in all_transports():
try:
new_devices = transport.enumerate()
except BaseException as e:
self.print_error('enumerate failed for {}. error {}'
.format(transport.__name__, str(e)))
else:
devices.extend(new_devices)
return [Device(d.get_path(), -1, d.get_path(), 'TREZOR', 0) for d in devices]
def create_client(self, device, handler):
from trezorlib.device import TrezorDevice