docs: def init(self, address, hard_reset=False):
          """Open the serial connection to a dongle at the supplied address.
  
          Args:
              address (str): the serial port address of the BLED112 dongle, e.g. 'COM5'
              hard_reset (bool): not currently used
  
          Returns:
              True if a connection with the dongle was established, False otherwise.
          """
          self.address = address
  
          if hard_reset:
              # TODO (needs more work to be usable)
              # if not Dongle._hard_reset(address):
              #     return False
              # time.sleep(2.0)
              pass
  
          # TODO timeout not working if opened on valid, non Bluegiga port
          for i in range(Dongle.PORT_RETRIES):
              try:
                  logger.debug('Setting up BGAPI, attempt {}/{}'.format(i + 1, Dongle.PORT_RETRIES))
                  self.api = BlueGigaAPI(port=self.address, callbacks=self, baud=Dongle.BAUDRATE, timeout=DEF_TIMEOUT)
                  self.api.start_daemon()
                  break
              except serial.serialutil.SerialException as e:
                  logger.debug('Failed to init BlueGigaAPI: {}, attempt {}/{}'.format(e, i + 1, Dongle.PORT_RETRIES))
                  time.sleep(0.1)
  
          if self.api is None:
              return False
  
          time.sleep(0.5) # TODO
          self.get_supported_connections()
          logger.info('Dongle supports {} connections'.format(self.supported_connections))
          if self.supported_connections == -1:
              logger.error('Failed to retrieve number of supported connections from the dongle! (try reinserting it)')
              return False
          
          self.conn_state = {x: self._STATE_IDLE for x in range(self.supported_connections)}
          self.reset()
  
          self._cbthread = threading.Thread(target=self._cbthreadfunc)
          self._cbthread.setDaemon(True)
          self._cbthread_q = Queue()
          self._cbthread.start()
          return True