mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 16:47:31 -05:00
Improved LTR FSK decoder for LTR, LTR-Net and Passport decoders. Added IIR DC blocking filter and used improved slicer from the FSK decoder.
Added instrumentation to Passport decoder and updated some of the instrumentation components.
This commit is contained in:
@@ -45,6 +45,8 @@ public class BinaryTapViewPanel extends TapViewPanel
|
||||
|
||||
getModel().setSampleCount(
|
||||
(int)( getModel().getSampleCount() * tap.getSampleRateRatio() ) );
|
||||
|
||||
getModel().setDelay( tap.getDelay() );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -29,10 +29,12 @@ import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
import javax.swing.JInternalFrame;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.JSeparator;
|
||||
|
||||
@@ -101,8 +103,12 @@ public class DecoderViewFrame extends JInternalFrame
|
||||
{
|
||||
JMenu tapMenu = new JMenu( "Taps" );
|
||||
popup.add( tapMenu );
|
||||
|
||||
|
||||
Instrumentable i = (Instrumentable)mDecoder;
|
||||
|
||||
tapMenu.add( new AddAllTapsItem( i.getTaps() ) );
|
||||
|
||||
tapMenu.add( new JSeparator() );
|
||||
|
||||
for( Tap tap: i.getTaps() )
|
||||
{
|
||||
@@ -157,13 +163,21 @@ public class DecoderViewFrame extends JInternalFrame
|
||||
break;
|
||||
}
|
||||
|
||||
add( panel, "span" );
|
||||
|
||||
validate();
|
||||
|
||||
mPanelMap.put( tap, panel );
|
||||
if( panel != null )
|
||||
{
|
||||
add( panel, "span" );
|
||||
|
||||
validate();
|
||||
|
||||
mPanelMap.put( tap, panel );
|
||||
|
||||
((Instrumentable)mDecoder).addTap( tap );
|
||||
((Instrumentable)mDecoder).addTap( tap );
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.info( "Tap panel is null, couldn't add for tap " +
|
||||
tap.getName() + "[" + tap.getType().toString() + "]" );
|
||||
}
|
||||
}
|
||||
|
||||
public void remove( Tap tap )
|
||||
@@ -178,9 +192,34 @@ public class DecoderViewFrame extends JInternalFrame
|
||||
|
||||
mPanelMap.remove( tap );
|
||||
}
|
||||
|
||||
public class AddAllTapsItem extends JMenuItem
|
||||
{
|
||||
private final List<Tap> mTaps;
|
||||
|
||||
public AddAllTapsItem( final List<Tap> taps )
|
||||
{
|
||||
super( "All Taps" );
|
||||
|
||||
mTaps = taps;
|
||||
|
||||
addActionListener( new ActionListener()
|
||||
{
|
||||
@Override
|
||||
public void actionPerformed( ActionEvent e )
|
||||
{
|
||||
for( Tap tap: mTaps )
|
||||
{
|
||||
DecoderViewFrame.this.add( tap );
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
||||
public class TapSelectionItem extends JCheckBoxMenuItem
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Tap mTap;
|
||||
|
||||
public TapSelectionItem( Tap tap )
|
||||
|
||||
@@ -28,8 +28,11 @@ import java.awt.geom.Point2D;
|
||||
import java.util.List;
|
||||
import java.util.Observable;
|
||||
|
||||
import log.Log;
|
||||
|
||||
public class FloatTapViewPanel extends TapViewPanel
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Tap mTap;
|
||||
private List<Float> mSamples;
|
||||
private int mSampleCount;
|
||||
@@ -40,16 +43,20 @@ public class FloatTapViewPanel extends TapViewPanel
|
||||
|
||||
mTap = tap;
|
||||
mTap.addListener( getModel() );
|
||||
|
||||
mSampleCount = (int)( 2000 * tap.getSampleRateRatio() );
|
||||
|
||||
getModel().setSampleCount( mSampleCount );
|
||||
getModel().setDelay( tap.getDelay() );
|
||||
|
||||
getModel().setSampleCount(
|
||||
(int)( getModel().getSampleCount() * tap.getSampleRateRatio() ) );
|
||||
Log.info( "Float Tap Panel [" + tap.getName() + "] count: " +
|
||||
getModel().getSampleCount() + " delay:" + getModel().getDelay() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update( Observable arg0, Object arg1 )
|
||||
{
|
||||
mSamples = (List<Float>)getModel().getSamples();
|
||||
mSampleCount = getModel().getSampleCount();
|
||||
repaint();
|
||||
}
|
||||
|
||||
@@ -68,7 +75,8 @@ public class FloatTapViewPanel extends TapViewPanel
|
||||
|
||||
g2.drawLine( 0, (int)middle, width, (int)middle );
|
||||
|
||||
if( mSamples != null && mSamples.size() > 0 )
|
||||
if( mSamples != null &&
|
||||
mSamples.size() > 0 )
|
||||
{
|
||||
g2.setColor( getForeground() );
|
||||
|
||||
|
||||
@@ -24,9 +24,13 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Observable;
|
||||
|
||||
import log.Log;
|
||||
import dsp.fsk.SymbolEvent;
|
||||
|
||||
public class SampleModel<T> extends Observable implements TapListener<T>
|
||||
{
|
||||
private int mSampleCount = 2000;
|
||||
private int mDelay = 0;
|
||||
private ArrayList<T> mSamples = new ArrayList<T>();
|
||||
|
||||
public SampleModel()
|
||||
@@ -56,15 +60,32 @@ public class SampleModel<T> extends Observable implements TapListener<T>
|
||||
|
||||
changed();
|
||||
}
|
||||
|
||||
public void setDelay( int delay )
|
||||
{
|
||||
mDelay = delay;
|
||||
}
|
||||
|
||||
public int getDelay()
|
||||
{
|
||||
return mDelay;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receive( T t )
|
||||
{
|
||||
mSamples.add( t );
|
||||
|
||||
while( mSamples.size() > mSampleCount )
|
||||
if( mDelay > 0 )
|
||||
{
|
||||
mSamples.remove( 0 );
|
||||
mDelay--;
|
||||
}
|
||||
else
|
||||
{
|
||||
mSamples.add( t );
|
||||
|
||||
while( mSamples.size() > mSampleCount )
|
||||
{
|
||||
mSamples.remove( 0 );
|
||||
}
|
||||
}
|
||||
|
||||
changed();
|
||||
|
||||
@@ -28,14 +28,16 @@ import java.awt.geom.Rectangle2D;
|
||||
import java.util.List;
|
||||
import java.util.Observable;
|
||||
|
||||
import log.Log;
|
||||
import dsp.fsk.SymbolEvent;
|
||||
|
||||
public class SymbolEventTapViewPanel extends TapViewPanel
|
||||
{
|
||||
private SymbolEventTap mTap;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SymbolEventTap mTap;
|
||||
private List<SymbolEvent> mSamples;
|
||||
private int mSampleCount;
|
||||
private int mOffset = 0;
|
||||
|
||||
public SymbolEventTapViewPanel( SymbolEventTap tap )
|
||||
{
|
||||
@@ -44,15 +46,18 @@ public class SymbolEventTapViewPanel extends TapViewPanel
|
||||
mTap = tap;
|
||||
mTap.addListener( getModel() );
|
||||
|
||||
getModel().setSampleCount(
|
||||
(int)( getModel().getSampleCount() * tap.getSampleRateRatio() ) );
|
||||
mSampleCount = (int)( getModel().getSampleCount() * tap.getSampleRateRatio() );
|
||||
|
||||
getModel().setSampleCount( mSampleCount );
|
||||
|
||||
getModel().setDelay( tap.getDelay() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update( Observable arg0, Object arg1 )
|
||||
{
|
||||
mSamples = (List<SymbolEvent>)getModel().getSamples();
|
||||
mSampleCount = getModel().getSampleCount();
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ import decode.DecoderType;
|
||||
import decode.fleetsync2.Fleetsync2Decoder;
|
||||
import decode.mdc1200.MDCDecoder;
|
||||
import decode.mpt1327.MPT1327Decoder;
|
||||
import decode.passport.PassportDecoder;
|
||||
|
||||
public class WaveSourceFrame extends JInternalFrame implements PositionListener
|
||||
{
|
||||
@@ -138,6 +139,8 @@ public class WaveSourceFrame extends JInternalFrame implements PositionListener
|
||||
case MPT1327:
|
||||
decoder = new MPT1327Decoder( SampleType.FLOAT, null );
|
||||
break;
|
||||
case PASSPORT:
|
||||
decoder = new PassportDecoder( SampleType.FLOAT, null );
|
||||
}
|
||||
|
||||
if( decoder != null )
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
******************************************************************************/
|
||||
package instrument.tap.stream;
|
||||
|
||||
import log.Log;
|
||||
import instrument.tap.TapListener;
|
||||
import instrument.tap.TapType;
|
||||
import sample.Listener;
|
||||
|
||||
Reference in New Issue
Block a user