Changed FrequencyChangeListener interface to an event so that I could describe what event was causing the frequency change and to broadcast frequency and sample rate error values.

R820T - added a couple more sample rate settings to the enum and modified the periodic sample rate info logger.
This commit is contained in:
dennis.sheirer
2014-09-27 09:46:18 +00:00
parent e441ebf0c9
commit 550aed79d4
28 changed files with 600 additions and 500 deletions

View File

@@ -23,6 +23,8 @@ import settings.Setting;
import settings.SettingChangeListener;
import settings.SettingsManager;
import source.Source.SampleType;
import source.tuner.FrequencyChangeEvent;
import source.tuner.FrequencyChangeEvent.Attribute;
import spectrum.converter.DFTResultsConverter;
import spectrum.converter.RealDecibelConverter;
import spectrum.menu.AmplificationItem;
@@ -86,7 +88,8 @@ public class ChannelSpectrumPanel extends JPanel
mDecimatingSampleAssembler = new DecimatingSampleAssembler( mDFTProcessor );
/* Set the DFTProcessor to the decimated 24kHz sample rate */
mDFTProcessor.frequencyChanged( 0, 24000 );
mDFTProcessor.frequencyChanged(
new FrequencyChangeEvent( Attribute.SAMPLE_RATE, 24000 ) );
initGui();
}

View File

@@ -33,6 +33,7 @@ import org.slf4j.LoggerFactory;
import sample.Listener;
import source.Source;
import source.Source.SampleType;
import source.tuner.FrequencyChangeEvent;
import source.tuner.FrequencyChangeListener;
import spectrum.converter.DFTResultsConverter;
import dsp.filter.Window;
@@ -443,11 +444,19 @@ public class DFTProcessor implements Listener<Float[]>,
}
@Override
public void frequencyChanged( long frequency, int bandwidth )
public void frequencyChanged( FrequencyChangeEvent event )
{
mSampleRate = bandwidth;
calculateConsumptionRate();
switch( event.getAttribute() )
{
case SAMPLE_RATE_ERROR:
break;
case SAMPLE_RATE:
mSampleRate = (int)event.getValue();
calculateConsumptionRate();
break;
default:
break;
}
}
/**

View File

@@ -36,6 +36,7 @@ import settings.ColorSetting;
import settings.ColorSetting.ColorSettingName;
import settings.Setting;
import settings.SettingChangeListener;
import source.tuner.FrequencyChangeEvent;
import source.tuner.FrequencyChangeListener;
import source.tuner.TunerChannel;
import controller.ResourceManager;
@@ -523,10 +524,22 @@ public class OverlayPanel extends JPanel
* Frequency change event handler
*/
@Override
public void frequencyChanged( long frequency, int bandwidth )
public void frequencyChanged( FrequencyChangeEvent event )
{
mBandwidth = bandwidth;
mFrequency = frequency;
switch( event.getAttribute() )
{
case SAMPLE_RATE_ERROR:
// System.out.println( "OVerlay panel got a sample rate error update" );
break;
case SAMPLE_RATE:
mBandwidth = (int)event.getValue();
break;
case FREQUENCY:
mFrequency = (int)event.getValue();
break;
default:
break;
}
/**
* Reset the visible channel configs list

View File

@@ -55,9 +55,11 @@ import settings.SettingChangeListener;
import settings.SettingsManager;
import source.Source.SampleType;
import source.SourceException;
import source.tuner.FrequencyChangeEvent;
import source.tuner.FrequencyChangeListener;
import source.tuner.Tuner;
import source.tuner.TunerSelectionListener;
import source.tuner.FrequencyChangeEvent.Attribute;
import spectrum.converter.ComplexDecibelConverter;
import spectrum.converter.DFTResultsConverter;
import spectrum.menu.AmplificationItem;
@@ -340,10 +342,10 @@ public class SpectralDisplayPanel extends JPanel
* Receives frequency change events -- primarily from tuner components.
*/
@Override
public void frequencyChanged( long frequency, int bandwidth )
public void frequencyChanged( FrequencyChangeEvent event )
{
mOverlayPanel.frequencyChanged( frequency, bandwidth );
mDFTProcessor.frequencyChanged( frequency, bandwidth );
mOverlayPanel.frequencyChanged( event );
mDFTProcessor.frequencyChanged( event );
}
/**
@@ -381,11 +383,15 @@ public class SpectralDisplayPanel extends JPanel
//Register the dft processor to receive samples from the tuner
mTuner.addListener( (Listener<Float[]>)mDFTProcessor );
//Fire a frequency change event so that everyone can init
//Fire frequency and sample rate change events so that everyone
//can init
try
{
frequencyChanged( mTuner.getFrequency(),
mTuner.getSampleRate() );
frequencyChanged( new FrequencyChangeEvent(
Attribute.FREQUENCY, mTuner.getFrequency() ) );
frequencyChanged( new FrequencyChangeEvent(
Attribute.SAMPLE_RATE, mTuner.getSampleRate() ) );
}
catch ( SourceException e )
{