docs: def connect_direct(self, device, calibration=True):
          """Establish a connection to a single SK8.
  
          Args:
              device: either a :class:`ScanResult` or a plain hardware address string
                  in xx:xx:xx:xx:xx:xx format.
              calibration (bool): True to attempt to load calibration data for this
                  device after connection, False otherwise. See :meth:`SK8.load_calibration`.
  
          Returns:
              tuple (`result`, `device`), where `result` is a bool indicating if a 
              connection was created successfully. If `result` is True, `device` will
              be set to a new :class:`SK8` instance. Otherwise it will be None.
          """
  
          # convert string address into a ScanResult if needed
          if not isinstance(device, ScanResult):
              if isinstance(device, str):
                  device = ScanResult(device, fmt_addr_raw(device))
              elif isinstance(device, unicode):
                  device = device.encode('ascii')
                  device = ScanResult(device, fmt_addr_raw(device))
              else:
                  logger.warn('Expected ScanResult, found type {} instead!'.format(type(device)))
                  return (False, None)
  
          logger.debug('Connecting directly to device address'.format(device.addr))
          # TODO check number of active connections and fail if exceeds max
          self._set_state(self._STATE_CONNECTING)
  
          # TODO parameters here = ???
          self.api.ble_cmd_gap_connect_direct(device.raw_addr, 0, 6, 14, 100, 50)
          self._wait_for_state(self._STATE_CONNECTING, 5)
  
          if self.state != self._STATE_CONNECTED:
              logger.warn('Connection failed!')
              # send end procedure to cancel connection attempt
              self._set_state(self._STATE_GAP_END)
              self.api.ble_cmd_gap_end_procedure()
              self._wait_for_state(self._STATE_GAP_END)
              return (False, None)
  
          conn_handle = self.conn_handles[-1]
          logger.info('Connection OK, handle is 0x{:02X}'.format(conn_handle))
          sk8 = SK8(self, conn_handle, device, calibration)
          self._add_device(sk8)
          sk8._discover_services()
  
          return (True, sk8)