'Return True, device_info if a device handled by this plugin is currently connected.
:param devices_on_system: List of devices currently connected'

def is_usb_connected(self, devices_on_system, debug=False, only_presence=False):

    vendors_on_system = {x[0] for x in devices_on_system}
    vendors = (set(self.VENDOR_ID) if hasattr(self.VENDOR_ID, '__len__') else {self.VENDOR_ID})
    if hasattr(self.VENDOR_ID, 'keys'):
        products = []
        for ven in self.VENDOR_ID:
            products.extend(self.VENDOR_ID[ven].keys())
    else:
        products = (self.PRODUCT_ID if hasattr(self.PRODUCT_ID, '__len__') else [self.PRODUCT_ID])
    ch = (self.can_handle_windows if iswindows else self.can_handle)
    for vid in vendors_on_system.intersection(vendors):
        for dev in devices_on_system:
            (cvid, pid, bcd) = dev[:3]
            if (cvid == vid):
                if (pid in products):
                    if hasattr(self.VENDOR_ID, 'keys'):
                        try:
                            cbcd = self.VENDOR_ID[vid][pid]
                        except KeyError:
                            continue
                    else:
                        cbcd = self.BCD
                    if self.test_bcd(bcd, cbcd):
                        if debug:
                            prints(dev)
                        if ch(dev, debug=debug):
                            return (True, dev)
    return (False, None)
