Get an uid for your controller.

        :param addr: Address of the controller
        :param port: Port of the controller
        :type addr: str
        :type port: int
        :return: Unique id of the controller
        :rtype: str

def _new_controller(self, addr, port):
        """
        Get an uid for your controller.

        :param addr: Address of the controller
        :param port: Port of the controller
        :type addr: str
        :type port: int
        :return: Unique id of the controller
        :rtype: str
        """
        for uid, controller in self.controllers.items():
            if controller[0] == addr:
                # duplicate address. sending the uid again
                #print('/uid/{} => {}:{}'.format(uid, addr, port))
                self.sock.sendto('/uid/{}'.format(uid).encode('utf-8'), (addr, port))
                return False

        # get an uid and add the controller to the game
        uid = str(uuid4())
        self.controllers[uid] = [addr, port, '00000000000000', time.time()]

        # tell the controller about it
        #print('/uid/{} => {}:{}'.format(uid, addr, port))
        self.sock.sendto('/uid/{}'.format(uid).encode('utf-8'), (addr, port))

        # create event for pymlgame
        e = Event(uid, E_NEWCTLR)
        self.queue.put_nowait(e)

        return uid