code: public byte[] readProperty(Destination dst, int objIndex, int propID, int start,
  		int elements) throws KNXTimeoutException, KNXRemoteException,
  		KNXDisconnectException, KNXLinkClosedException
  	{
  		if (objIndex < 0 || objIndex > 255 || propID < 0 || propID > 255 || start < 0
  			|| start > 0xFFF || elements < 0 || elements > 15)
  			throw new KNXIllegalArgumentException("argument value out of range");
  		final byte[] asdu = new byte[4];
  		asdu[0] = (byte) objIndex;
  		asdu[1] = (byte) propID;
  		asdu[2] = (byte) ((elements << 4) | ((start >>> 8) & 0xF));
  		asdu[3] = (byte) start;
  
  		final byte[] apdu = sendWait2(dst, priority, DataUnitBuilder.createAPDU(
  			PROPERTY_READ, asdu), PROPERTY_RESPONSE, 4, 14);
  		// check if number of elements is 0, indicates access problem
  		final int number = (apdu[4] & 0xFF) >>> 4;
  		if (number == 0)
  			throw new KNXRemoteException("property access failed/forbidden");
  		if (number != elements)
  			throw new KNXInvalidResponseException("number of elements differ");
  		final byte[] prop = new byte[apdu.length - 6];
  		for (int i = 0; i < prop.length; ++i)
  			prop[i] = apdu[i + 6];
  		return prop;
  	}
docs: /* (non-Javadoc)
  @see tuwien.auto.calimero.mgmt.ManagementClient#readProperty
  (tuwien.auto.calimero.mgmt.Destination, int, int, int, int)