Esempio n. 1
0
 def __init__(self, view, known_devices=Devices.all):
     """
     :param view: called with update((port,device)) when a device is connected and update(None) when disconnected
     """
     self.view = view
     self.connected = None
     self.scan = USBScanner(known_devices)
     self.mgr = SetManager()
     self.mgr.events += lambda item, added: self.device_changed(item, added)
Esempio n. 2
0
class ConnectedDeviceModel:
    """
    Keeps track of the first device connected, until it becomes disconnected.
    The client is responsible for calling update() regularly. The connected attribute is (port, USBDevice) or None when
    no connected device.

    """
    def __init__(self, view, known_devices=Devices.all):
        """
        :param view: called with update((port,device)) when a device is connected and update(None) when disconnected
        """
        self.view = view
        self.connected = None
        self.scan = USBScanner(known_devices)
        self.mgr = SetManager()
        self.mgr.events += lambda item, added: self.device_changed(item, added)

    def device_changed(self, item, added):
        if added != self.connected:  # when added, we don't have a connection, and when removed we do
            self.connected = (item if added else None)
            self.view.update(self.connected)

    def update(self):
        current = self.scan.scan()
        self.mgr.update(current)