@Override public void removeTap(Tap tap) { if (mSymbolFilter != null) { mSymbolFilter.removeTap(tap); } if (mCQPSKDemodulator != null) { mCQPSKDemodulator.removeTap(tap); } switch (tap.getName()) { case INSTRUMENT_COMPLEX_INPUT: removeComplexListener((ComplexTap) tap); break; case INSTRUMENT_BASEBAND_FILTER_OUTPUT: mBasebandFilter.setListener(mAGC); break; case INSTRUMENT_AGC_OUTPUT: mAGC.setListener(mCQPSKDemodulator); break; case INSTRUMENT_QPSK_DEMODULATOR_OUTPUT: mCQPSKDemodulator.setListener(mCQPSKSlicer); break; case INSTRUMENT_CQPSK_SLICER_OUTPUT: mCQPSKSlicer.removeListener((DibitTap) tap); break; case INSTRUMENT_REAL_INPUT: FloatTap inputAGC = (FloatTap) tap; removeRealListener(inputAGC); addRealSampleListener(mDGC); break; case INSTRUMENT_DGC_OUTPUT: mDGC.setListener(mSymbolFilter); break; case INSTRUMENT_C4FM_SYMBOL_FILTER_OUTPUT: mSymbolFilter.setListener(mC4FMSlicer); break; case INSTRUMENT_C4FM_SLICER_OUTPUT: DibitTap slicerTap = (DibitTap) tap; if (mC4FMSlicer != null) { mC4FMSlicer.removeListener(slicerTap); } break; } }