Given a characteristic UUID, return a :class:`Characteristic` object
        containing information about that characteristic

        Args:
            uuid (str): a string containing the hex-encoded UUID

        Returns:
            None if an error occurs, otherwise a :class:`Characteristic` object

def get_characteristic_from_uuid(self, uuid):
        """Given a characteristic UUID, return a :class:`Characteristic` object
        containing information about that characteristic

        Args:
            uuid (str): a string containing the hex-encoded UUID

        Returns:
            None if an error occurs, otherwise a :class:`Characteristic` object
        """

        if uuid in self.uuid_chars:
            logger.debug('Returning cached info for char: {}'.format(uuid))
            return self.uuid_chars[uuid]

        for service in self.services.values():
            char = service.get_characteristic_by_uuid(uuid)
            if char is not None:
                self.uuid_chars[uuid] = char
                logger.debug('Found char for UUID: {}'.format(uuid))
                return char

        logger.info('Failed to find char for UUID: {}'.format(uuid))
        return None