public void run()
		{
			try {
				while (!quit) {
					final int c = is.read();
					if (c > -1) {
						if (c == ACK) {
							if (state == ACK_PENDING)
								synchronized (lock) {
									state = OK;
									lock.notify();
								}
						}
						else if (c == START)
							readFrame();
						else if (c == START_FIXED)
							readShortFrame();
						else
							logger.trace("received unexpected start byte 0x"
									+ Integer.toHexString(c) + " - ignored");
					}
				}
			}
			catch (final IOException e) {
				if (!quit)
					close(false, "receiver communication failure");
			}
		}