def transceive *bits
      bitstring = bits.map(&:byte_string).join("")
      retval = connection.transceive bitstring
      # Check that it's a response bit.
      raise ::LegoNXT::BadResponseError unless retval[0] == "\x02"
      # Check that it's for this command.
      raise ::LegoNXT::BadResponseError unless retval[1] == bitstring[1]
      # Check that there is no error.
      # TODO: This should raise a specific error based on the status bit.
      raise ::LegoNXT::StatusError unless retval[2] == "\x00"
      return retval[3..-1]
    end
def transceive *bits
      bitstring = bits.map(&:byte_string).join("")
      retval = connection.transceive bitstring
      # Check that it's a response bit.
      raise ::LegoNXT::BadResponseError unless retval[0] == "\x02"
      # Check that it's for this command.
      raise ::LegoNXT::BadResponseError unless retval[1] == bitstring[1]
      # Check that there is no error.
      # TODO: This should raise a specific error based on the status bit.
      raise ::LegoNXT::StatusError unless retval[2] == "\x00"
      return retval[3..-1]
    end
A wrapper around the transceive function for the connection.

 The first three bytes of the return value are stripped off. Errors are
 raised if they show a problem.

 @param [LegoNXT::Type] bits A list of bytes.
 @return [String] The bytes returned; bytes 0 through 2 are stripped.