Scan for and then connect to a set of one or more SK8s.

        This method is intended to be a simple way to combine the steps of 
        running a BLE scan, checking the results and connecting to one or more
        devices. When called, a scan is started for a period equal to `timeout`,
        and a list of devices is collected. If at any point during the scan all of
        the supplied devices are detected, the scan will be ended immediately. 
        
        After the scan has completed, the method will only proceed to creating
        connections if the scan results contain all the specified devices. 

        Args:
            devnames (list): a list of device names (1 or more)
            timeout (float): a time period in seconds to run the scanning process 
                (will be terminated early if all devices in `devnames` are discovered)

        Returns:
            Returns the same results as :meth:`connect`.

def scan_and_connect(self, devnames, timeout=DEF_TIMEOUT, calibration=True):
        """Scan for and then connect to a set of one or more SK8s.

        This method is intended to be a simple way to combine the steps of 
        running a BLE scan, checking the results and connecting to one or more
        devices. When called, a scan is started for a period equal to `timeout`,
        and a list of devices is collected. If at any point during the scan all of
        the supplied devices are detected, the scan will be ended immediately. 
        
        After the scan has completed, the method will only proceed to creating
        connections if the scan results contain all the specified devices. 

        Args:
            devnames (list): a list of device names (1 or more)
            timeout (float): a time period in seconds to run the scanning process 
                (will be terminated early if all devices in `devnames` are discovered)

        Returns:
            Returns the same results as :meth:`connect`.
        """
        responses = self.scan_devices(devnames, timeout)

        for dev in devnames:
            if dev not in responses:
                logger.error('Failed to find device {} during scan'.format(dev))
                return (False, [])

        return self.connect([responses.get_device(dev) for dev in devnames], calibration)