public synchronized void setFrame(final CEMILData frame)
	{
		if (!frame.getDestination().equals(getKey()))
			throw new KNXIllegalArgumentException("frame key differs from this key");
		if (!max)
			ensureCapacity();
		else if (!overwrite && size == timestamps.length)
			return;
		final CEMILData[] c = (CEMILData[]) value;
		// notify on first time queue fills up
		final boolean notifyListener = max && size == c.length - 1;
	
		resetTimestamp();
		c[next] = frame;
		timestamps[next] = getTimestamp();
		++next;
		next %= c.length;
		if (size < c.length)
			++size;
		if (notifyListener)
			fireQueueFilled();
	}