mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
Resolved issue with LJ1200 decoder using inverted bit output
This commit is contained in:
@@ -42,7 +42,7 @@ import decode.mdc1200.MDCDecoder;
|
||||
import decode.mpt1327.MPT1327ChannelState;
|
||||
import decode.mpt1327.MPT1327Decoder;
|
||||
import decode.nbfm.NBFMChannelState;
|
||||
import decode.nbfm.NBFMConventionalDecoder;
|
||||
import decode.nbfm.NBFMDecoder;
|
||||
import decode.p25.P25ChannelState;
|
||||
import decode.p25.P25Decoder;
|
||||
import decode.passport.PassportChannelState;
|
||||
@@ -71,7 +71,7 @@ public class DecoderFactory
|
||||
retVal = new AMDecoder( sampleType );
|
||||
break;
|
||||
case NBFM:
|
||||
retVal = new NBFMConventionalDecoder( sampleType );
|
||||
retVal = new NBFMDecoder( sampleType );
|
||||
break;
|
||||
case LTR_STANDARD:
|
||||
DecodeConfigLTRStandard ltrStandardConfig =
|
||||
|
||||
@@ -80,7 +80,7 @@ public class LJ1200Decoder extends Decoder implements Instrumentable
|
||||
mDecimationFilter.setListener( mBandPassFilter );
|
||||
|
||||
mFSKDecoder = new FSK2Decoder( DECIMATED_SAMPLE_RATE,
|
||||
SYMBOL_RATE, Output.INVERTED );
|
||||
SYMBOL_RATE, Output.NORMAL );
|
||||
mBandPassFilter.setListener( mFSKDecoder );
|
||||
|
||||
mMessageFramer = new MessageFramer(
|
||||
|
||||
@@ -119,6 +119,7 @@ public class LJ1200Message extends Message
|
||||
sb.append( "VRC: " + getVRC() );
|
||||
sb.append( " LRC: " + getLRC() );
|
||||
sb.append( " FUNCTION: " + getFunction() );
|
||||
sb.append( "ADDRESS:" + getAddress() );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import decode.DecoderType;
|
||||
import dsp.filter.DCRemovalFilter2;
|
||||
import dsp.nbfm.FilteringNBFMDemodulator;
|
||||
|
||||
public class NBFMConventionalDecoder extends Decoder
|
||||
public class NBFMDecoder extends Decoder
|
||||
{
|
||||
/**
|
||||
* This value determines how quickly the DC remove filter responds to
|
||||
@@ -35,7 +35,7 @@ public class NBFMConventionalDecoder extends Decoder
|
||||
private FilteringNBFMDemodulator mDemodulator;
|
||||
private DCRemovalFilter2 mDCRemovalFilter;
|
||||
|
||||
public NBFMConventionalDecoder( SampleType sampleType )
|
||||
public NBFMDecoder( SampleType sampleType )
|
||||
{
|
||||
super( sampleType );
|
||||
|
||||
@@ -2,6 +2,7 @@ package dsp.agc;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import sample.real.RealBuffer;
|
||||
import sample.real.RealSampleListener;
|
||||
import sample.real.RealSampleProvider;
|
||||
import buffer.DoubleCircularBuffer;
|
||||
@@ -145,7 +146,32 @@ public class RealAutomaticGainControl implements RealSampleListener,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receive( float currentSample )
|
||||
public void receive( float currentSample )
|
||||
{
|
||||
float processed = process( currentSample );
|
||||
|
||||
if( mListener != null )
|
||||
{
|
||||
mListener.receive( processed );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies AGC to a buffer of real (float) samples
|
||||
*/
|
||||
public RealBuffer process( RealBuffer buffer )
|
||||
{
|
||||
float[] samples = buffer.getSamples();
|
||||
|
||||
for( int x = 0; x < samples.length; x++ )
|
||||
{
|
||||
samples[ x ] = process( samples[ x ] );
|
||||
}
|
||||
|
||||
return new RealBuffer( samples );
|
||||
}
|
||||
|
||||
public float process( float currentSample )
|
||||
{
|
||||
float delayedSample = mDelayBuffer.get( currentSample );
|
||||
|
||||
@@ -208,11 +234,8 @@ public class RealAutomaticGainControl implements RealSampleListener,
|
||||
}
|
||||
|
||||
delayedSample = (float)( delayedSample * gain );
|
||||
|
||||
if( mListener != null )
|
||||
{
|
||||
mListener.receive( delayedSample );
|
||||
}
|
||||
|
||||
return delayedSample;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,6 +46,7 @@ import source.wave.WaveSource.PositionListener;
|
||||
import decode.Decoder;
|
||||
import decode.DecoderType;
|
||||
import decode.fleetsync2.Fleetsync2Decoder;
|
||||
import decode.lj1200.LJ1200Decoder;
|
||||
import decode.ltrnet.LTRNetDecoder;
|
||||
import decode.mdc1200.MDCDecoder;
|
||||
import decode.mpt1327.MPT1327Decoder;
|
||||
@@ -144,6 +145,9 @@ public class WaveSourceFrame extends JInternalFrame implements PositionListener
|
||||
case FLEETSYNC2:
|
||||
decoder = new Fleetsync2Decoder( null );
|
||||
break;
|
||||
case LJ_1200:
|
||||
decoder = new LJ1200Decoder( null );
|
||||
break;
|
||||
case LTR_NET:
|
||||
decoder = new LTRNetDecoder( SampleType.REAL, null, MessageDirection.OSW );
|
||||
break;
|
||||
|
||||
@@ -29,6 +29,7 @@ import javax.sound.sampled.TargetDataLine;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import dsp.agc.RealAutomaticGainControl;
|
||||
import sample.Listener;
|
||||
import sample.adapter.SampleAdapter;
|
||||
import sample.real.RealBuffer;
|
||||
@@ -49,6 +50,7 @@ public class RealMixerSource extends RealSource
|
||||
private String mDisplayName;
|
||||
private int mBytesPerFrame = 0;
|
||||
private SampleAdapter mSampleAdapter;
|
||||
private RealAutomaticGainControl mAGC = new RealAutomaticGainControl();
|
||||
|
||||
CopyOnWriteArrayList<Listener<RealBuffer>> mSampleListeners =
|
||||
new CopyOnWriteArrayList<Listener<RealBuffer>>();
|
||||
@@ -118,10 +120,12 @@ public class RealMixerSource extends RealSource
|
||||
* buffer, otherwise send him a copy of the buffer */
|
||||
if( it.hasNext() )
|
||||
{
|
||||
// next.receive( mAGC.process( samples.copyOf() ) );
|
||||
next.receive( samples.copyOf() );
|
||||
}
|
||||
else
|
||||
{
|
||||
// next.receive( mAGC.process( samples ) );
|
||||
next.receive( samples );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user