code: private void fireFrameReceived(final KnxTunnelEmi emiType, final byte[] frame) throws KNXFormatException
  	{
  		logger.debug("received {} frame {}", emiType, DataUnitBuilder.toHex(frame, ""));
  		final FrameEvent fe = emiType == KnxTunnelEmi.CEmi
  				? new FrameEvent(this, CEMIFactory.create(frame, 0, frame.length)) : new FrameEvent(this, frame);
  		listeners.fire(l -> l.frameReceived(fe));
  	}
docs: Fires a frame received event ({@link KNXListener#frameReceived(FrameEvent)}) for the supplied EMI
  <code>frame</code>.
  
  @param frame the EMI1/EMI2/cEMI L-data frame to generate the event for
  @throws KNXFormatException on error creating cEMI message