code: public void writeMemory(Destination dst, int startAddr, byte[] data)
  		throws KNXDisconnectException, KNXTimeoutException, KNXRemoteException,
  		KNXLinkClosedException
  	{
  		if (startAddr < 0 || startAddr > 0xFFFF || data.length == 0 || data.length > 63)
  			throw new KNXIllegalArgumentException("argument value out of range");
  		final byte[] asdu = new byte[data.length + 3];
  		asdu[0] = (byte) data.length;
  		asdu[1] = (byte) (startAddr >> 8);
  		asdu[2] = (byte) startAddr;
  		for (int i = 0; i < data.length; ++i)
  			asdu[3 + i] = data[i];
  		if (dst.isConnectionOriented())
  			tl.connect(dst);
  		else
  			logger.error("doing write memory in connectionless mode, " + dst.toString());
  		final byte[] send = DataUnitBuilder.createCompactAPDU(MEMORY_WRITE, asdu);
  		if (dst.isVerifyMode()) {
  			// explicitly read back data
  			final byte[] apdu = sendWait(dst, priority, send, MEMORY_RESPONSE, 2, 65);
  			if ((apdu[1] & 0x3f) == 0)
  				throw new KNXRemoteException("remote app. could not write memory");
  			if (apdu.length - 4 != data.length)
  				throw new KNXInvalidResponseException("number of memory bytes differ");
  			for (int i = 4; i < apdu.length; ++i)
  				if (apdu[i] != asdu[i - 1])
  					throw new KNXRemoteException("verify failed (erroneous memory data)");
  		}
  		else
  			tl.sendData(dst, priority, send);
  	}
docs: /* (non-Javadoc)
  @see tuwien.auto.calimero.mgmt.ManagementClient#writeMemory
  (tuwien.auto.calimero.mgmt.Destination, int, byte[])