def transceive bits
      raise ::LegoNXT::BadOpCodeError unless bytestring(DirectOps::REQUIRE_RESPONSE, SystemOps::REQUIRE_RESPONSE).include? bits[0]
      raise ::LegoNXT::TransmitError unless transmit! bits
      bytes_received = @handle.bulk_transfer dataIn: 64, endpoint: USB_ENDPOINT_IN
      return bytes_received
    end
def transceive bits
      raise ::LegoNXT::BadOpCodeError unless bytestring(DirectOps::REQUIRE_RESPONSE, SystemOps::REQUIRE_RESPONSE).include? bits[0]
      raise ::LegoNXT::TransmitError unless transmit! bits
      bytes_received = @handle.bulk_transfer dataIn: 64, endpoint: USB_ENDPOINT_IN
      return bytes_received
    end
Sends a packet string of bits and then receives a result.

 Example:

     # Causes the brick to beep
     conn.transceive [0x80, 0x03, 0xf4, 0x01, 0xf4, 0x01].pack('C*')'

 @see The LEGO MINDSTORMS NXT Communications Protocol (Appendex 1 of the Bluetooth Development Kit)

 @param {String} bits This must be a binary string. Use `Array#pack('C*')` to generate the string.
 @raise {LegoNXT::TransmitError} Raised if the {#transmit} fails.
 @return [String] A packed string of the response bits. Use `String#unpack('C*')`.