mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
[WIP] Updates the passport decoder to use the new LTRDecoder.
Deprecates the Listener<Boolean> interface method in the MessageFramer to optimize for primitive booleans and reduce impact on memory. Will remove this interface once the AFSK1200 decoders are updated.
This commit is contained in:
@@ -66,8 +66,7 @@ public class MessageFramer implements Listener<Boolean>, SyncDetectProvider
|
||||
mMessageAssemblers.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receive(Boolean bit)
|
||||
public void receive(boolean bit)
|
||||
{
|
||||
mMatcher.receive(bit);
|
||||
|
||||
@@ -105,6 +104,13 @@ public class MessageFramer implements Listener<Boolean>, SyncDetectProvider
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated //Legacy support ... remove once all producers are converted to use receive(boolean bit) method
|
||||
@Override
|
||||
public void receive(Boolean bit)
|
||||
{
|
||||
receive(bit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Causes all messages currently under assembly to be forcibly
|
||||
* sent (ie flushed) to all registered message listeners, and
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
******************************************************************************/
|
||||
package io.github.dsheirer.dsp.fsk;
|
||||
|
||||
import io.github.dsheirer.bits.MessageFramer;
|
||||
import io.github.dsheirer.dsp.filter.dc.IIRSinglePoleDCRemovalFilter;
|
||||
import io.github.dsheirer.dsp.filter.design.FilterDesignException;
|
||||
import io.github.dsheirer.dsp.filter.fir.FIRFilterSpecification;
|
||||
@@ -89,7 +90,7 @@ public class LTRDecoder implements Listener<ReusableBuffer>, ISyncDetectListener
|
||||
protected SynchronizationMonitor mSynchronizationMonitor;
|
||||
private IIRSinglePoleDCRemovalFilter mDCFilter = new IIRSinglePoleDCRemovalFilter(0.99999f);
|
||||
private RealFIRFilter2 mLowPassFilter = new RealFIRFilter2(sLowPassFilterCoefficients);
|
||||
private Listener<Boolean> mSymbolDecisionListener;
|
||||
private MessageFramer mMessageFramer;
|
||||
|
||||
private boolean mSampleDecision;
|
||||
|
||||
@@ -155,9 +156,9 @@ public class LTRDecoder implements Listener<ReusableBuffer>, ISyncDetectListener
|
||||
|
||||
if(mSampleBuffer.hasSymbol())
|
||||
{
|
||||
if(mSymbolDecisionListener != null)
|
||||
if(mMessageFramer != null)
|
||||
{
|
||||
mSymbolDecisionListener.receive(mSampleBuffer.getSymbol());
|
||||
mMessageFramer.receive(mSampleBuffer.getSymbol());
|
||||
}
|
||||
|
||||
mSampleBuffer.resetAndAdjust(-mTimingErrorDetector.getError());
|
||||
@@ -172,11 +173,11 @@ public class LTRDecoder implements Listener<ReusableBuffer>, ISyncDetectListener
|
||||
/**
|
||||
* Registers a listener to receive decoded LTR symbols.
|
||||
*
|
||||
* @param listener to receive symbols.
|
||||
* @param messageFramer to receive symbols.
|
||||
*/
|
||||
public void setListener(Listener<Boolean> listener)
|
||||
public void setMessageFramer(MessageFramer messageFramer)
|
||||
{
|
||||
mSymbolDecisionListener = listener;
|
||||
mMessageFramer = messageFramer;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -184,7 +185,7 @@ public class LTRDecoder implements Listener<ReusableBuffer>, ISyncDetectListener
|
||||
*/
|
||||
public void removeListener()
|
||||
{
|
||||
mSymbolDecisionListener = null;
|
||||
mMessageFramer = null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,253 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* SDR Trunk
|
||||
* Copyright (C) 2014 Dennis Sheirer
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
******************************************************************************/
|
||||
package io.github.dsheirer.dsp.fsk;
|
||||
|
||||
import io.github.dsheirer.dsp.filter.Filters;
|
||||
import io.github.dsheirer.dsp.filter.FloatHalfBandFilter;
|
||||
import io.github.dsheirer.dsp.filter.FloatHalfBandNoDecimateFilter;
|
||||
import io.github.dsheirer.dsp.filter.LTRPulseShapingFilter;
|
||||
import io.github.dsheirer.dsp.filter.SquaringFilter;
|
||||
import io.github.dsheirer.dsp.filter.Window.WindowType;
|
||||
import io.github.dsheirer.dsp.filter.cic.RealPrimeCICDecimate;
|
||||
import io.github.dsheirer.dsp.filter.dc.IIRSinglePoleDCRemovalFilter;
|
||||
import io.github.dsheirer.dsp.symbol.Slicer;
|
||||
import io.github.dsheirer.dsp.symbol.Slicer.Output;
|
||||
import io.github.dsheirer.instrument.Instrumentable;
|
||||
import io.github.dsheirer.instrument.tap.Tap;
|
||||
import io.github.dsheirer.instrument.tap.TapGroup;
|
||||
import io.github.dsheirer.instrument.tap.stream.BinaryTap;
|
||||
import io.github.dsheirer.instrument.tap.stream.FloatBufferTap;
|
||||
import io.github.dsheirer.instrument.tap.stream.FloatTap;
|
||||
import io.github.dsheirer.instrument.tap.stream.SymbolEventTap;
|
||||
import io.github.dsheirer.sample.Listener;
|
||||
import io.github.dsheirer.sample.real.RealBuffer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LTRFSKDecoderLegacy implements Listener<RealBuffer>, Instrumentable
|
||||
{
|
||||
private RealPrimeCICDecimate mCICDecimator;
|
||||
|
||||
private FloatHalfBandFilter mHBFilter1;
|
||||
private FloatHalfBandFilter mHBFilter2;
|
||||
private FloatHalfBandFilter mHBFilter3;
|
||||
private FloatHalfBandFilter mHBFilter4;
|
||||
private FloatHalfBandFilter mHBFilter5;
|
||||
private FloatHalfBandNoDecimateFilter mHBFilter6;
|
||||
private IIRSinglePoleDCRemovalFilter mDCFilter;
|
||||
private SquaringFilter mSquaringFilter;
|
||||
private LTRPulseShapingFilter mPulseShaper;
|
||||
private Slicer mSlicer;
|
||||
|
||||
private List<TapGroup> mAvailableTaps;
|
||||
private final String TAP_F1_F2 = "LTR FSK Demod Filter1 >< Filter2";
|
||||
private final String TAP_F2_F3 = "LTR FSK Demod Filter2 >< Filter3";
|
||||
private final String TAP_F3_F4 = "LTR FSK Demod Filter3 >< Filter4";
|
||||
private final String TAP_F4_F5 = "LTR FSK Demod Filter4 >< Filter5";
|
||||
private final String TAP_F5_F6 = "LTR FSK Demod Filter5 >< Filter6";
|
||||
private final String TAP_F6_DT = "LTR FSK Demod Filter6 >< DC Filter";
|
||||
private final String TAP_CIC = "LTR FSK Demod CIC Decimator";
|
||||
private final String TAP_DT_SF1 = "LTR FSK Demod DC Filter >< Squaring Filter";
|
||||
private final String TAP_SF1_PS = "LTR FSK Demod Squaring Filter >< Pulse Shaper";
|
||||
private final String TAP_PS_SLICER = "LTR FSK Demod Pulse Shaper >< Slicer";
|
||||
private final String TAP_SYMBOL_EVENT = "LTR FSK Demod Symbol Event";
|
||||
|
||||
/**
|
||||
* Implements a Logic Trunked Radio sub-audible 300 baud FSK signaling
|
||||
* decoder. Expects a 48000 sample rate input.
|
||||
*/
|
||||
public LTRFSKDecoderLegacy()
|
||||
{
|
||||
mCICDecimator = new RealPrimeCICDecimate( 32, 1, 375, 60, WindowType.HAMMING, 2 );
|
||||
|
||||
mHBFilter1 = new FloatHalfBandFilter(
|
||||
Filters.FIR_HALF_BAND_31T_ONE_EIGHTH_FCO, 1.1002f );
|
||||
|
||||
mHBFilter2 = new FloatHalfBandFilter(
|
||||
Filters.FIR_HALF_BAND_31T_ONE_EIGHTH_FCO, 1.1002f );
|
||||
mHBFilter1.setListener( mHBFilter2 );
|
||||
|
||||
mHBFilter3 = new FloatHalfBandFilter(
|
||||
Filters.FIR_HALF_BAND_31T_ONE_EIGHTH_FCO, 1.1002f );
|
||||
mHBFilter2.setListener( mHBFilter3 );
|
||||
|
||||
mHBFilter4 = new FloatHalfBandFilter(
|
||||
Filters.FIR_HALF_BAND_31T_ONE_EIGHTH_FCO, 1.1002f );
|
||||
mHBFilter3.setListener( mHBFilter4 );
|
||||
|
||||
mHBFilter5 = new FloatHalfBandFilter(
|
||||
Filters.FIR_HALF_BAND_31T_ONE_EIGHTH_FCO, 1.1002f );
|
||||
mHBFilter4.setListener( mHBFilter5 );
|
||||
|
||||
mHBFilter6 = new FloatHalfBandNoDecimateFilter(
|
||||
Filters.FIR_HALF_BAND_31T_ONE_EIGHTH_FCO, 1.1002f );
|
||||
mHBFilter5.setListener( mHBFilter6 );
|
||||
|
||||
mDCFilter = new IIRSinglePoleDCRemovalFilter( 0.9946f );
|
||||
mHBFilter6.setListener( mDCFilter );
|
||||
|
||||
mSquaringFilter = new SquaringFilter();
|
||||
mDCFilter.setListener( mSquaringFilter );
|
||||
|
||||
mPulseShaper = new LTRPulseShapingFilter();
|
||||
mSquaringFilter.setListener( mPulseShaper );
|
||||
|
||||
mSlicer = new Slicer( Output.NORMAL, 5 );
|
||||
mPulseShaper.setListener( mSlicer );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receive( RealBuffer buffer )
|
||||
{
|
||||
for( float sample: buffer.getSamples() )
|
||||
{
|
||||
mHBFilter1.receive( sample );
|
||||
}
|
||||
|
||||
mCICDecimator.receive(buffer);
|
||||
}
|
||||
|
||||
public void addListener( Listener<Boolean> listener )
|
||||
{
|
||||
mSlicer.setListener( listener );
|
||||
}
|
||||
|
||||
public void removeListener( Listener<Boolean> listener )
|
||||
{
|
||||
mSlicer.removeListener( listener );
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TapGroup> getTapGroups()
|
||||
{
|
||||
if( mAvailableTaps == null )
|
||||
{
|
||||
mAvailableTaps = new ArrayList<TapGroup>();
|
||||
|
||||
TapGroup group = new TapGroup( "LTR FSK Decoder" );
|
||||
|
||||
group.add( new FloatTap( TAP_F1_F2, 0, 1.0f ) );
|
||||
group.add( new FloatTap( TAP_F2_F3, 8, 0.5f ) );
|
||||
group.add( new FloatTap( TAP_F3_F4, 12, 0.25f ) );
|
||||
group.add( new FloatTap( TAP_F4_F5, 14, 0.125f ) );
|
||||
group.add( new FloatTap( TAP_F5_F6, 15, 0.0625f ) );
|
||||
group.add( new FloatTap( TAP_F6_DT, 31, 0.0625f ) );
|
||||
group.add( new FloatBufferTap( TAP_CIC, 31, 0.0625f ) );
|
||||
group.add( new FloatTap( TAP_DT_SF1, 31, 0.0625f ) );
|
||||
group.add( new BinaryTap( TAP_SF1_PS, 33, 0.0625f ) );
|
||||
group.add( new BinaryTap( TAP_PS_SLICER, 33, 0.0625f ) );
|
||||
group.add( new SymbolEventTap( TAP_SYMBOL_EVENT, 7, 0.0125f ) );
|
||||
|
||||
mAvailableTaps.add( group );
|
||||
}
|
||||
|
||||
return mAvailableTaps;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTap( Tap tap )
|
||||
{
|
||||
switch( tap.getName() )
|
||||
{
|
||||
case TAP_CIC:
|
||||
mCICDecimator.setListener( (FloatBufferTap)tap );
|
||||
break;
|
||||
case TAP_F1_F2:
|
||||
mHBFilter1.setListener( (FloatTap)tap );
|
||||
((FloatTap)tap).setListener( mHBFilter2 );
|
||||
break;
|
||||
case TAP_F2_F3:
|
||||
mHBFilter2.setListener( (FloatTap)tap );
|
||||
((FloatTap)tap).setListener( mHBFilter3 );
|
||||
break;
|
||||
case TAP_F3_F4:
|
||||
mHBFilter3.setListener( (FloatTap)tap );
|
||||
((FloatTap)tap).setListener( mHBFilter4 );
|
||||
break;
|
||||
case TAP_F4_F5:
|
||||
mHBFilter4.setListener( (FloatTap)tap );
|
||||
((FloatTap)tap).setListener( mHBFilter5 );
|
||||
break;
|
||||
case TAP_F5_F6:
|
||||
mHBFilter5.setListener( (FloatTap)tap );
|
||||
((FloatTap)tap).setListener( mHBFilter6 );
|
||||
break;
|
||||
case TAP_F6_DT:
|
||||
mHBFilter6.setListener( (FloatTap)tap );
|
||||
((FloatTap)tap).setListener( mDCFilter );
|
||||
break;
|
||||
case TAP_DT_SF1:
|
||||
mDCFilter.setListener( (FloatTap)tap );
|
||||
((FloatTap)tap).setListener( mSquaringFilter );
|
||||
break;
|
||||
case TAP_SF1_PS:
|
||||
mSquaringFilter.setListener( (BinaryTap)tap );
|
||||
((BinaryTap)tap).setListener( mPulseShaper );
|
||||
break;
|
||||
case TAP_PS_SLICER:
|
||||
mPulseShaper.setListener( (BinaryTap)tap );
|
||||
((BinaryTap)tap).setListener( mSlicer );
|
||||
break;
|
||||
case TAP_SYMBOL_EVENT:
|
||||
mSlicer.addTap( (SymbolEventTap)tap );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterTap( Tap tap )
|
||||
{
|
||||
switch( tap.getName() )
|
||||
{
|
||||
case TAP_CIC:
|
||||
mCICDecimator.removeListener();
|
||||
break;
|
||||
case TAP_F1_F2:
|
||||
mHBFilter1.setListener( mHBFilter2 );
|
||||
break;
|
||||
case TAP_F2_F3:
|
||||
mHBFilter2.setListener( mHBFilter3 );
|
||||
break;
|
||||
case TAP_F3_F4:
|
||||
mHBFilter3.setListener( mHBFilter4 );
|
||||
break;
|
||||
case TAP_F4_F5:
|
||||
mHBFilter4.setListener( mHBFilter5 );
|
||||
break;
|
||||
case TAP_F5_F6:
|
||||
mHBFilter5.setListener( mHBFilter6 );
|
||||
break;
|
||||
case TAP_F6_DT:
|
||||
mHBFilter6.setListener( mDCFilter );
|
||||
break;
|
||||
case TAP_DT_SF1:
|
||||
mDCFilter.setListener( mSquaringFilter );
|
||||
break;
|
||||
case TAP_SF1_PS:
|
||||
mSquaringFilter.setListener( mPulseShaper );
|
||||
break;
|
||||
case TAP_PS_SLICER:
|
||||
mPulseShaper.setListener( mSlicer );
|
||||
break;
|
||||
case TAP_SYMBOL_EVENT:
|
||||
mSlicer.removeTap();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -50,7 +50,7 @@ public class LTRNetDecoder extends Decoder implements IReusableBufferListener, L
|
||||
mLTRMessageFramer = new MessageFramer(SyncPattern.LTR_STANDARD_ISW.getPattern(), LTR_NET_MESSAGE_LENGTH);
|
||||
}
|
||||
|
||||
mLTRDecoder.setListener(mLTRMessageFramer);
|
||||
mLTRDecoder.setMessageFramer(mLTRMessageFramer);
|
||||
mLTRMessageFramer.setSyncDetectListener(mLTRDecoder);
|
||||
mLTRMessageProcessor = new LTRNetMessageProcessor(config.getMessageDirection(), aliasList);
|
||||
mLTRMessageFramer.addMessageListener(mLTRMessageProcessor);
|
||||
|
||||
@@ -51,7 +51,7 @@ public class LTRStandardDecoder extends Decoder implements IReusableBufferListen
|
||||
mLTRMessageFramer = new MessageFramer(SyncPattern.LTR_STANDARD_ISW.getPattern(), LTR_STANDARD_MESSAGE_LENGTH);
|
||||
}
|
||||
|
||||
mLTRDecoder.setListener(mLTRMessageFramer);
|
||||
mLTRDecoder.setMessageFramer(mLTRMessageFramer);
|
||||
mLTRMessageFramer.setSyncDetectListener(mLTRDecoder);
|
||||
mLTRMessageProcessor = new LTRStandardMessageProcessor(direction, aliasList);
|
||||
mLTRMessageFramer.addMessageListener(mLTRMessageProcessor);
|
||||
|
||||
@@ -1,110 +1,77 @@
|
||||
/*******************************************************************************
|
||||
* SDR Trunk
|
||||
* Copyright (C) 2014 Dennis Sheirer
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
* sdr-trunk
|
||||
* Copyright (C) 2014-2018 Dennis Sheirer
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
||||
* License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this program.
|
||||
* If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
******************************************************************************/
|
||||
package io.github.dsheirer.module.decode.passport;
|
||||
|
||||
import io.github.dsheirer.alias.AliasList;
|
||||
import io.github.dsheirer.bits.MessageFramer;
|
||||
import io.github.dsheirer.bits.SyncPattern;
|
||||
import io.github.dsheirer.dsp.fsk.LTRFSKDecoderLegacy;
|
||||
import io.github.dsheirer.instrument.Instrumentable;
|
||||
import io.github.dsheirer.instrument.tap.Tap;
|
||||
import io.github.dsheirer.instrument.tap.TapGroup;
|
||||
import io.github.dsheirer.dsp.fsk.LTRDecoder;
|
||||
import io.github.dsheirer.module.decode.Decoder;
|
||||
import io.github.dsheirer.module.decode.DecoderType;
|
||||
import io.github.dsheirer.module.decode.config.DecodeConfiguration;
|
||||
import io.github.dsheirer.sample.Listener;
|
||||
import io.github.dsheirer.sample.real.IUnFilteredRealBufferListener;
|
||||
import io.github.dsheirer.sample.real.RealBuffer;
|
||||
import io.github.dsheirer.sample.buffer.IReusableBufferListener;
|
||||
import io.github.dsheirer.sample.buffer.ReusableBuffer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PassportDecoder extends Decoder
|
||||
implements IUnFilteredRealBufferListener, Instrumentable
|
||||
public class PassportDecoder extends Decoder implements IReusableBufferListener, Listener<ReusableBuffer>
|
||||
{
|
||||
public static final int PASSPORT_MESSAGE_LENGTH = 68;
|
||||
public static final int PASSPORT_SYNC_LENGTH = 9;
|
||||
public static final int PASSPORT_MESSAGE_LENGTH = 68;
|
||||
|
||||
private LTRFSKDecoderLegacy mPassportFSKDecoder;
|
||||
private MessageFramer mPassportMessageFramer;
|
||||
private PassportMessageProcessor mPassportMessageProcessor;
|
||||
|
||||
private List<TapGroup> mAvailableTaps;
|
||||
private LTRDecoder mLTRDecoder;
|
||||
private MessageFramer mPassportMessageFramer;
|
||||
private PassportMessageProcessor mPassportMessageProcessor;
|
||||
|
||||
/**
|
||||
* Passport Decoder. Decodes unfiltered (e.g. demodulated but with no DC or
|
||||
* audio filtering) samples and produces Passport messages.
|
||||
*/
|
||||
public PassportDecoder(DecodeConfiguration config, AliasList aliasList )
|
||||
{
|
||||
mPassportFSKDecoder = new LTRFSKDecoderLegacy();
|
||||
|
||||
mPassportMessageFramer =
|
||||
new MessageFramer( SyncPattern.PASSPORT.getPattern(),
|
||||
PASSPORT_MESSAGE_LENGTH );
|
||||
|
||||
mPassportFSKDecoder.addListener( mPassportMessageFramer );
|
||||
|
||||
mPassportMessageProcessor = new PassportMessageProcessor( aliasList );
|
||||
mPassportMessageFramer.addMessageListener( mPassportMessageProcessor );
|
||||
mPassportMessageProcessor.setMessageListener( getMessageListener() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Listener<RealBuffer> getUnFilteredRealBufferListener()
|
||||
{
|
||||
return mPassportFSKDecoder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DecoderType getDecoderType()
|
||||
{
|
||||
return DecoderType.PASSPORT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TapGroup> getTapGroups()
|
||||
public PassportDecoder(DecodeConfiguration config, AliasList aliasList)
|
||||
{
|
||||
if( mAvailableTaps == null )
|
||||
{
|
||||
mAvailableTaps = new ArrayList<>();
|
||||
|
||||
mAvailableTaps.addAll( mPassportFSKDecoder.getTapGroups() );
|
||||
}
|
||||
mLTRDecoder = new LTRDecoder(PASSPORT_MESSAGE_LENGTH);
|
||||
|
||||
return mAvailableTaps;
|
||||
mPassportMessageFramer = new MessageFramer(SyncPattern.PASSPORT.getPattern(), PASSPORT_MESSAGE_LENGTH);
|
||||
|
||||
mLTRDecoder.setMessageFramer(mPassportMessageFramer);
|
||||
mPassportMessageFramer.setSyncDetectListener(mLTRDecoder);
|
||||
mPassportMessageProcessor = new PassportMessageProcessor(aliasList);
|
||||
mPassportMessageFramer.addMessageListener(mPassportMessageProcessor);
|
||||
mPassportMessageProcessor.setMessageListener(getMessageListener());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTap( Tap tap )
|
||||
@Override
|
||||
public Listener<ReusableBuffer> getReusableBufferListener()
|
||||
{
|
||||
mPassportFSKDecoder.registerTap( tap );
|
||||
return mLTRDecoder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterTap( Tap tap )
|
||||
@Override
|
||||
public void receive(ReusableBuffer reusableBuffer)
|
||||
{
|
||||
mPassportFSKDecoder.unregisterTap( tap );
|
||||
mLTRDecoder.receive(reusableBuffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset()
|
||||
{
|
||||
mPassportMessageFramer.reset();
|
||||
}
|
||||
@Override
|
||||
public DecoderType getDecoderType()
|
||||
{
|
||||
return DecoderType.PASSPORT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset()
|
||||
{
|
||||
mPassportMessageFramer.reset();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user