def send_cmd_recv_rsp(self, target, data, timeout):
        """Exchange data with a remote Target

        Sends command *data* to the remote *target* discovered in the
        most recent call to one of the sense_xxx() methods. Note that
        *target* becomes invalid with any call to mute(), sense_xxx()
        or listen_xxx()

        Arguments:

          target (nfc.clf.RemoteTarget): The target returned by the
            last successful call of a sense_xxx() method.

          data (bytearray): The binary data to send to the remote
            device.

          timeout (float): The maximum number of seconds to wait for
            response data from the remote device.

        Returns:

          bytearray: Response data received from the remote device.

        Raises:

          nfc.clf.CommunicationError: When no data was received.

        """
        fname = "send_cmd_recv_rsp"
        cname = self.__class__.__module__ + '.' + self.__class__.__name__
        raise NotImplementedError("%s.%s() is required" % (cname, fname))
Exchange data with a remote Target

        Sends command *data* to the remote *target* discovered in the
        most recent call to one of the sense_xxx() methods. Note that
        *target* becomes invalid with any call to mute(), sense_xxx()
        or listen_xxx()

        Arguments:

          target (nfc.clf.RemoteTarget): The target returned by the
            last successful call of a sense_xxx() method.

          data (bytearray): The binary data to send to the remote
            device.

          timeout (float): The maximum number of seconds to wait for
            response data from the remote device.

        Returns:

          bytearray: Response data received from the remote device.

        Raises:

          nfc.clf.CommunicationError: When no data was received.