Updated spectral display to used dBm scale and removed baseline/amplification items.

Updated sample handling code to use -1.0 to 1.0 float values throughout, to support P25 decoder and symbol filter.
This commit is contained in:
dennis.sheirer
2014-11-01 17:39:06 +00:00
parent 86f374bb88
commit ae0568ff3b
34 changed files with 821 additions and 412 deletions

View File

@@ -8,17 +8,32 @@ import java.util.ArrayList;
import java.util.List;
import sample.real.RealSampleListener;
import dsp.filter.C4FMSymbolFilter;
public class C4FMDecoder implements RealSampleListener, Instrumentable
{
private final String TAP_C4FM_INPUT = "C4FM Input";
private static final String TAP_C4FM_INPUT = "C4FM Decoder Input";
private static final String TAP_SYMBOL_FILTER_OUTPUT = "C4FM Symbol Filter Output";
private ArrayList<Tap> mTaps;
private FloatTap mInputTap;
private FloatTap mSymbolFilterOutputTap;
private C4FMSymbolFilter mSymbolFilter = new C4FMSymbolFilter();
private RealSampleListener mInput;
public C4FMDecoder()
{
mInput = mSymbolFilter;
}
@Override
public void receive( float sample )
{
mInput.receive( sample );
}
@Override
public List<Tap> getTaps()
{
@@ -28,6 +43,9 @@ public class C4FMDecoder implements RealSampleListener, Instrumentable
FloatTap floatTap = new FloatTap( TAP_C4FM_INPUT, 0, 1.0f );
mTaps.add( floatTap );
FloatTap symbolTap = new FloatTap( TAP_SYMBOL_FILTER_OUTPUT, 10, 0.1f );
mTaps.add( symbolTap );
}
return mTaps;
@@ -40,6 +58,12 @@ public class C4FMDecoder implements RealSampleListener, Instrumentable
{
case TAP_C4FM_INPUT:
mInputTap = (FloatTap)tap;
mInput = mInputTap;
mInputTap.setListener( mSymbolFilter );
break;
case TAP_SYMBOL_FILTER_OUTPUT:
mSymbolFilterOutputTap = (FloatTap)tap;
mSymbolFilter.setListener( mSymbolFilterOutputTap );
break;
}
}
@@ -50,17 +74,13 @@ public class C4FMDecoder implements RealSampleListener, Instrumentable
switch( tap.getName() )
{
case TAP_C4FM_INPUT:
mInputTap = null;
mInput = mSymbolFilter;
mInputTap = null;
break;
case TAP_SYMBOL_FILTER_OUTPUT:
mSymbolFilter.removeListener( mSymbolFilterOutputTap );
mSymbolFilterOutputTap = null;
break;
}
}
@Override
public void receive( float t )
{
if( mInputTap != null )
{
mInputTap.receive( t );
}
}
}