code: public void writeKey(Destination dst, int level, byte[] key)
  		throws KNXTimeoutException, KNXDisconnectException, KNXRemoteException,
  		KNXLinkClosedException
  	{
  		// level 255 is free access
  		if (level < 0 || level > 254 || key.length != 4)
  			throw new KNXIllegalArgumentException(
  				"level out of range or key length not 4 bytes");
  		if (dst.isConnectionOriented())
  			tl.connect(dst);
  		else
  			logger.error("doing write key in connectionless mode, " + dst.toString());
  		final byte[] apdu =
  			sendWait(dst, priority, DataUnitBuilder.createAPDU(KEY_WRITE, new byte[] {
  				(byte) level, key[0], key[1], key[2], key[3] }), KEY_RESPONSE, 1, 1);
  		if ((apdu[1] & 0xFF) == 0xFF)
  			throw new KNXRemoteException(
  				"access denied: current access level > write level");
  	}
docs: /* (non-Javadoc)
  @see tuwien.auto.calimero.mgmt.ManagementClient#writeKey
  (tuwien.auto.calimero.mgmt.Destination, int, byte[])