From 35a2cebe03b7837fbf4d868c5db9962a7deeed5e Mon Sep 17 00:00:00 2001 From: "dennis.sheirer" Date: Tue, 8 Jul 2014 14:40:11 +0000 Subject: [PATCH] Converted frequency to long primitive type (from integer) in anticipation of HackRF support which requires frequencies greater than 2.147 GHz, which is the max hertz value that can be represented by an integer primitive. --- .../ConfigurationControllerModel.java | 2 +- src/controller/activity/CallEvent.java | 2 +- src/controller/activity/CallEventModel.java | 1 - src/controller/channel/Channel.java | 2 +- src/controller/channel/ChannelMap.java | 2 +- src/controller/channel/ChannelRange.java | 2 +- src/decode/fleetsync2/FleetsyncCallEvent.java | 2 +- src/decode/ltrnet/LTRCallEvent.java | 10 +- src/decode/ltrnet/LTRNetChannelState.java | 1 - src/decode/mdc1200/MDCCallEvent.java | 2 +- src/decode/mpt1327/MPT1327CallEvent.java | 10 +- src/decode/mpt1327/MPT1327ChannelState.java | 4 +- src/decode/passport/PassportCallEvent.java | 10 +- src/decode/passport/PassportChannelState.java | 2 +- src/decode/passport/PassportMessage.java | 24 ++- src/dsp/filter/FilterFactory.java | 36 +++-- src/dsp/filter/GoertzelFilter.java | 12 +- src/dsp/filter/IIRBiQuadraticFilter.java | 24 ++- src/gui/control/JFrequencyControl.java | 18 +-- src/sample/complex/ComplexSample.java | 27 ---- .../complex/ComplexSampleRateCounter.java | 2 +- src/source/Source.java | 2 +- src/source/config/SourceConfigTuner.java | 6 +- src/source/mixer/MixerSource.java | 6 +- src/source/tuner/DigitalDropChannel.java | 152 ------------------ src/source/tuner/FrequencyChangeListener.java | 2 +- src/source/tuner/FrequencyController.java | 36 ++--- .../NumericallyControlledOscillator.java | 10 +- src/source/tuner/Tuner.java | 6 +- src/source/tuner/TunerChannel.java | 14 +- src/source/tuner/TunerChannelSource.java | 10 +- src/source/tuner/TunerController.java | 24 +-- src/source/tuner/TunerNode.java | 4 +- src/source/tuner/ettus/B100Tuner.java | 2 +- src/source/tuner/fcd/FCDTuner.java | 2 +- src/source/tuner/fcd/FCDTunerController.java | 7 +- .../tuner/fcd/proV1/FCD1TunerEditorPanel.java | 2 +- .../fcd/proplusV2/FCD2TunerEditorPanel.java | 2 +- src/source/tuner/rtl/RTL2832Tuner.java | 2 +- .../tuner/rtl/RTL2832TunerController.java | 4 +- .../tuner/rtl/e4k/E4KTunerController.java | 46 +++--- .../tuner/rtl/e4k/E4KTunerEditorPanel.java | 9 +- .../tuner/rtl/r820t/R820TTunerController.java | 56 +++---- .../rtl/r820t/R820TTunerEditorPanel.java | 2 +- src/source/wave/ComplexWaveSource.java | 6 +- src/source/wave/FloatWaveSource.java | 4 +- src/spectrum/DFTProcessor.java | 2 +- src/spectrum/OverlayPanel.java | 30 ++-- src/spectrum/SpectralDisplayPanel.java | 8 +- src/spectrum/WaterfallPanel.java | 4 +- src/util/Oscillator.java | 4 +- 51 files changed, 240 insertions(+), 419 deletions(-) delete mode 100644 src/source/tuner/DigitalDropChannel.java diff --git a/src/controller/ConfigurationControllerModel.java b/src/controller/ConfigurationControllerModel.java index a441cf21..982ccaa1 100644 --- a/src/controller/ConfigurationControllerModel.java +++ b/src/controller/ConfigurationControllerModel.java @@ -167,7 +167,7 @@ public class ConfigurationControllerModel extends DefaultTreeModel * Convenience method to add a new default system, site and channel to * the tree */ - public void createChannel( int frequency, DecoderType decoder ) + public void createChannel( long frequency, DecoderType decoder ) { System system = new System(); diff --git a/src/controller/activity/CallEvent.java b/src/controller/activity/CallEvent.java index 9bbc7bcf..be62110f 100644 --- a/src/controller/activity/CallEvent.java +++ b/src/controller/activity/CallEvent.java @@ -118,7 +118,7 @@ public abstract class CallEvent public abstract int getChannel(); - public abstract int getFrequency(); + public abstract long getFrequency(); public static String getCSVHeader() { diff --git a/src/controller/activity/CallEventModel.java b/src/controller/activity/CallEventModel.java index 0618e2a4..f94058cb 100644 --- a/src/controller/activity/CallEventModel.java +++ b/src/controller/activity/CallEventModel.java @@ -23,7 +23,6 @@ import java.util.LinkedList; import javax.swing.table.AbstractTableModel; -import log.Log; import sample.Broadcaster; import sample.Listener; diff --git a/src/controller/channel/Channel.java b/src/controller/channel/Channel.java index ee964ea9..8cde4d5c 100644 --- a/src/controller/channel/Channel.java +++ b/src/controller/channel/Channel.java @@ -829,7 +829,7 @@ public class Channel extends Configuration * Indicates if any part of this channel is contained within the * minimum and maximum frequency values. */ - public boolean isWithin( int minimum, int maximum ) + public boolean isWithin( long minimum, long maximum ) { return getTunerChannel() != null && getTunerChannel().isWithin( minimum, maximum ); diff --git a/src/controller/channel/ChannelMap.java b/src/controller/channel/ChannelMap.java index 92bb2ce7..60079530 100644 --- a/src/controller/channel/ChannelMap.java +++ b/src/controller/channel/ChannelMap.java @@ -94,7 +94,7 @@ public class ChannelMap mName = name; } - public int getFrequency( int channelNumber ) + public long getFrequency( int channelNumber ) { for( ChannelRange range: mRanges ) { diff --git a/src/controller/channel/ChannelRange.java b/src/controller/channel/ChannelRange.java index e641f8a0..edc861b1 100644 --- a/src/controller/channel/ChannelRange.java +++ b/src/controller/channel/ChannelRange.java @@ -56,7 +56,7 @@ public class ChannelRange return mFirst <= channel && channel <= mLast; } - public int getFrequency( int channel ) + public long getFrequency( int channel ) { if( hasChannel( channel ) ) { diff --git a/src/decode/fleetsync2/FleetsyncCallEvent.java b/src/decode/fleetsync2/FleetsyncCallEvent.java index bd3468b9..a15bbb0c 100644 --- a/src/decode/fleetsync2/FleetsyncCallEvent.java +++ b/src/decode/fleetsync2/FleetsyncCallEvent.java @@ -63,7 +63,7 @@ public class FleetsyncCallEvent extends CallEvent } @Override - public int getFrequency() + public long getFrequency() { return 0; } diff --git a/src/decode/ltrnet/LTRCallEvent.java b/src/decode/ltrnet/LTRCallEvent.java index 5adc7fd5..b1ba797b 100644 --- a/src/decode/ltrnet/LTRCallEvent.java +++ b/src/decode/ltrnet/LTRCallEvent.java @@ -25,14 +25,14 @@ import decode.DecoderType; public class LTRCallEvent extends CallEvent { private int mChannel; - private int mFrequency; + private long mFrequency; public LTRCallEvent( CallEventType callEventType, AliasList aliasList, String fromID, String toID, int channel, - int frequency, + long frequency, String details ) { super( DecoderType.LTR_STANDARD, callEventType, @@ -101,7 +101,7 @@ public class LTRCallEvent extends CallEvent } @Override - public int getFrequency() + public long getFrequency() { return mFrequency; } @@ -117,7 +117,7 @@ public class LTRCallEvent extends CallEvent private String mToID; private String mDetails; private int mChannel; - private int mFrequency; + private long mFrequency; public Builder( CallEventType callEventType ) { @@ -148,7 +148,7 @@ public class LTRCallEvent extends CallEvent return this; } - public Builder frequency( int frequency ) + public Builder frequency( long frequency ) { mFrequency = frequency; return this; diff --git a/src/decode/ltrnet/LTRNetChannelState.java b/src/decode/ltrnet/LTRNetChannelState.java index 4dfb07c8..b5b46a51 100644 --- a/src/decode/ltrnet/LTRNetChannelState.java +++ b/src/decode/ltrnet/LTRNetChannelState.java @@ -33,7 +33,6 @@ public class LTRNetChannelState extends ChannelState private Alias mFromTalkgroupAlias; private String mFromTalkgroupType; private int mChannelNumber; - private String mUniqueID; private LTRCallEvent mCurrentCallEvent; private LTRNetActivitySummary mActivitySummary; diff --git a/src/decode/mdc1200/MDCCallEvent.java b/src/decode/mdc1200/MDCCallEvent.java index 2a4637be..b34cb726 100644 --- a/src/decode/mdc1200/MDCCallEvent.java +++ b/src/decode/mdc1200/MDCCallEvent.java @@ -63,7 +63,7 @@ public class MDCCallEvent extends CallEvent } @Override - public int getFrequency() + public long getFrequency() { return 0; } diff --git a/src/decode/mpt1327/MPT1327CallEvent.java b/src/decode/mpt1327/MPT1327CallEvent.java index a795797c..bca0e9c5 100644 --- a/src/decode/mpt1327/MPT1327CallEvent.java +++ b/src/decode/mpt1327/MPT1327CallEvent.java @@ -25,14 +25,14 @@ import decode.DecoderType; public class MPT1327CallEvent extends CallEvent { private int mChannel; - private int mFrequency; + private long mFrequency; public MPT1327CallEvent( CallEventType callEventType, AliasList aliasList, String fromID, String toID, int channel, - int frequency, + long frequency, String details ) { super( DecoderType.MPT1327, callEventType, @@ -71,7 +71,7 @@ public class MPT1327CallEvent extends CallEvent } @Override - public int getFrequency() + public long getFrequency() { return mFrequency; } @@ -87,7 +87,7 @@ public class MPT1327CallEvent extends CallEvent private String mToID; private String mDetails; private int mChannel; - private int mFrequency; + private long mFrequency; public Builder( CallEventType callEventType ) { @@ -118,7 +118,7 @@ public class MPT1327CallEvent extends CallEvent return this; } - public Builder frequency( int frequency ) + public Builder frequency( long frequency ) { mFrequency = frequency; return this; diff --git a/src/decode/mpt1327/MPT1327ChannelState.java b/src/decode/mpt1327/MPT1327ChannelState.java index 62b57c21..f9b9880e 100644 --- a/src/decode/mpt1327/MPT1327ChannelState.java +++ b/src/decode/mpt1327/MPT1327ChannelState.java @@ -191,7 +191,7 @@ public class MPT1327ChannelState extends ChannelState .build() ); } - int frequency = mChannelMap.getFrequency( channelNumber ); + long frequency = mChannelMap.getFrequency( channelNumber ); break; case CLEAR: @@ -330,7 +330,7 @@ public class MPT1327ChannelState extends ChannelState SourceConfigTuner source = new SourceConfigTuner(); - int frequency = mChannelMap.getFrequency( channelNumber ); + long frequency = mChannelMap.getFrequency( channelNumber ); source.setFrequency( frequency ); diff --git a/src/decode/passport/PassportCallEvent.java b/src/decode/passport/PassportCallEvent.java index 08d0f96e..c81e9803 100644 --- a/src/decode/passport/PassportCallEvent.java +++ b/src/decode/passport/PassportCallEvent.java @@ -25,14 +25,14 @@ import decode.DecoderType; public class PassportCallEvent extends CallEvent { private int mChannel; - private int mFrequency; + private long mFrequency; public PassportCallEvent( CallEventType callEventType, AliasList aliasList, String fromID, String toID, int channel, - int frequency, + long frequency, String details ) { super( DecoderType.PASSPORT, callEventType, @@ -81,7 +81,7 @@ public class PassportCallEvent extends CallEvent } @Override - public int getFrequency() + public long getFrequency() { return mFrequency; } @@ -97,7 +97,7 @@ public class PassportCallEvent extends CallEvent private String mToID; private String mDetails; private int mChannel; - private int mFrequency; + private long mFrequency; public Builder( CallEventType callEventType ) { @@ -128,7 +128,7 @@ public class PassportCallEvent extends CallEvent return this; } - public Builder frequency( int frequency ) + public Builder frequency( long frequency ) { mFrequency = frequency; return this; diff --git a/src/decode/passport/PassportChannelState.java b/src/decode/passport/PassportChannelState.java index 3fe452ad..c47609d9 100644 --- a/src/decode/passport/PassportChannelState.java +++ b/src/decode/passport/PassportChannelState.java @@ -34,7 +34,7 @@ public class PassportChannelState extends ChannelState private String mMobileID; private Alias mMobileIDAlias; private int mChannelNumber; - private int mFrequency; + private long mFrequency; private PassportCallEvent mCurrentCallEvent; private PassportActivitySummary mActivitySummary; diff --git a/src/decode/passport/PassportMessage.java b/src/decode/passport/PassportMessage.java index 8379405d..414964a1 100644 --- a/src/decode/passport/PassportMessage.java +++ b/src/decode/passport/PassportMessage.java @@ -34,8 +34,6 @@ import decode.DecoderType; public class PassportMessage extends Message { private static final String sUNKNOWN = "**UNKNOWN**"; - private static final int sINT_NULL_VALUE = -1; - private static final double sDOUBLE_NULL_VALUE = -1.0D; private SimpleDateFormat mSDF = new SimpleDateFormat( "yyyyMMdd HHmmss" ); private DecimalFormat mDecimalFormatter = new DecimalFormat("0.00000"); @@ -189,7 +187,7 @@ public class PassportMessage extends Message return getInt( sLCN ); } - public int getLCNFrequency() + public long getLCNFrequency() { return getSiteFrequency( getLCN() ); } @@ -209,7 +207,7 @@ public class PassportMessage extends Message return PassportBand.lookup( getInt( sNEIGHBOR_BAND ) ); } - public int getFrequency( int base, int channel ) + public long getFrequency( int base, int channel ) { return ( base + ( channel * 12500 ) ); } @@ -219,7 +217,7 @@ public class PassportMessage extends Message return getInt( sFREE ); } - public int getFreeFrequency() + public long getFreeFrequency() { return getSiteFrequency( getFree() ); } @@ -229,18 +227,16 @@ public class PassportMessage extends Message return mDecimalFormatter.format( (double)getFreeFrequency() / 1000000.0d ); } - public int getNeighborFrequency() + public long getNeighborFrequency() { - int retVal = 0; - if( getMessageType() == MessageType.SY_IDLE ) { PassportBand band = getNeighborBand(); - retVal = getFrequency( band.getBase(), getFree() ); + return getFrequency( band.getBase(), getFree() ); } - return retVal; + return 0; } /** @@ -392,10 +388,8 @@ public class PassportMessage extends Message return null; } - public int getSiteFrequency( int channel ) + public long getSiteFrequency( int channel ) { - int freq = 0; - if( mIdleMessage != null && 0 < channel && channel < 1792 ) { PassportBand band = mIdleMessage.getSiteBand(); @@ -404,11 +398,11 @@ public class PassportMessage extends Message { int base = band.getBase(); - freq = getFrequency( base, channel ); + return getFrequency( base, channel ); } } - return freq; + return 0; } @Override diff --git a/src/dsp/filter/FilterFactory.java b/src/dsp/filter/FilterFactory.java index dbea3a2d..2a9a1a4f 100644 --- a/src/dsp/filter/FilterFactory.java +++ b/src/dsp/filter/FilterFactory.java @@ -50,7 +50,7 @@ public class FilterFactory * @return */ public static double[] getSinc( int sampleRate, - int frequency, + long frequency, int length, WindowType window ) { @@ -129,7 +129,7 @@ public class FilterFactory * @return */ public static double[] getUnityResponseArray( int sampleRate, - int frequency, + long frequency, int length ) { double[] unityArray = new double[ length * 2 ]; @@ -215,7 +215,7 @@ public class FilterFactory * @return */ public static double[] getLowPass( int sampleRate, - int cutoff, + long cutoff, int filterLength, WindowType windowType ) { @@ -293,14 +293,14 @@ public class FilterFactory * @return */ public static double[] getHighPass( int sampleRate, - int cutoff, + long cutoff, int filterLength, WindowType windowType ) { //Convert the high frequency cutoff to its low frequency cutoff //equivalent, so that when we generate the low pass filter, prior to //inversion, its at the correct frequency - int convertedCutoff = sampleRate / 2 - cutoff; + long convertedCutoff = sampleRate / 2 - cutoff; return invert( getSinc( sampleRate, convertedCutoff, @@ -309,8 +309,8 @@ public class FilterFactory } public static double[] getHighPass( int sampleRate, - int stopFrequency, - int passFrequency, + long stopFrequency, + long passFrequency, int attenuation, WindowType windowType, boolean forceOddLength ) @@ -376,8 +376,8 @@ public class FilterFactory * @return */ public static int getTapCount( int sampleRate, - int pass, - int stop, + long pass, + long stop, int attenuation ) { double frequency = ( (double)stop - (double)pass ) / (double)sampleRate; @@ -386,8 +386,10 @@ public class FilterFactory } public static ComplexFilter[] getDecimationFilters( int sampleRate, - int decimatedRate, int passFrequency, int attenuation, - WindowType windowType ) + int decimatedRate, + long passFrequency, + int attenuation, + WindowType windowType ) { ComplexFilter[] filters; @@ -480,9 +482,9 @@ public class FilterFactory * @throws - AssertionException if sample rate is not a multiple of 48 kHz */ public static int[] getPolyphaseDecimationRates( int sampleRate, - int decimatedRate, - int passFrequency, - int stopFrequency ) + int decimatedRate, + long passFrequency, + long stopFrequency ) { int[] rates; @@ -609,8 +611,8 @@ public class FilterFactory */ public static int getOptimalStageOneRate( int sampleRate, int decimation, - int passFrequency, - int stopFrequency ) + long passFrequency, + long stopFrequency ) { double ratio = getBandwidthRatio( passFrequency, stopFrequency ); @@ -637,7 +639,7 @@ public class FilterFactory * Used in conjunction with the optimal stage one decimation rate method * above. */ - private static double getBandwidthRatio( int passFrequency, int stopFrequency ) + private static double getBandwidthRatio( long passFrequency, long stopFrequency ) { assert( passFrequency < stopFrequency ); diff --git a/src/dsp/filter/GoertzelFilter.java b/src/dsp/filter/GoertzelFilter.java index 9747425d..a421f912 100644 --- a/src/dsp/filter/GoertzelFilter.java +++ b/src/dsp/filter/GoertzelFilter.java @@ -30,7 +30,7 @@ import dsp.filter.Window.WindowType; public class GoertzelFilter { private int mSampleRate; - private int mTargetFrequency; + private long mTargetFrequency; private int mBlockSize; private double[] mWindowCoefficients; @@ -51,7 +51,7 @@ public class GoertzelFilter * the magnitude */ public GoertzelFilter( int sampleRate, - int targetFrequency, + long targetFrequency, int blockSize, WindowType window ) { @@ -139,15 +139,15 @@ public class GoertzelFilter */ public int getSampleRate() { - return mSampleRate; + return mSampleRate; } /** * @return the Target Frequency */ - public int getTargetFrequency() + public long getTargetFrequency() { - return mTargetFrequency; + return mTargetFrequency; } /** @@ -155,7 +155,7 @@ public class GoertzelFilter */ public int getBlockSize() { - return mBlockSize; + return mBlockSize; } } diff --git a/src/dsp/filter/IIRBiQuadraticFilter.java b/src/dsp/filter/IIRBiQuadraticFilter.java index 7e17042b..67833080 100644 --- a/src/dsp/filter/IIRBiQuadraticFilter.java +++ b/src/dsp/filter/IIRBiQuadraticFilter.java @@ -58,19 +58,23 @@ final public class IIRBiQuadraticFilter { } // constructor without gain setting - public IIRBiQuadraticFilter(Type type, double center_freq, double sample_rate, double Q) { + public IIRBiQuadraticFilter(Type type, double center_freq, double sample_rate, double Q) + { configure(type, center_freq, sample_rate, Q, 0); } - public void reset() { + public void reset() + { x1 = x2 = y1 = y2 = 0; } - public double frequency() { + public double frequency() + { return center_freq; } - public void configure(Type type, double center_freq, double sample_rate, double Q, double gainDB) { + public void configure(Type type, double center_freq, double sample_rate, double Q, double gainDB) + { reset(); Q = (Q == 0) ? 1e-9 : Q; this.type = type; @@ -80,7 +84,8 @@ final public class IIRBiQuadraticFilter { reconfigure(center_freq); } - public void configure(Type type, double center_freq, double sample_rate, double Q) { + public void configure(Type type, double center_freq, double sample_rate, double Q) + { configure(type, center_freq, sample_rate, Q, 0); } @@ -167,7 +172,8 @@ final public class IIRBiQuadraticFilter { } // provide a static decibel result for testing - public double log_result(double f) { + public double log_result(double f) + { double r; try { r = 10 * Math.log10(result(f)); @@ -181,12 +187,14 @@ final public class IIRBiQuadraticFilter { } // return the constant set for this filter - public double[] constants() { + public double[] constants() + { return new double[]{b0, b1, b2, a1, a2}; } // perform one filtering step - public double filter(double x) { + public double filter(double x) + { y = b0 * x + b1 * x1 + b2 * x2 - a1 * y1 - a2 * y2; x2 = x1; x1 = x; diff --git a/src/gui/control/JFrequencyControl.java b/src/gui/control/JFrequencyControl.java index 56d9fba1..5f4fa260 100644 --- a/src/gui/control/JFrequencyControl.java +++ b/src/gui/control/JFrequencyControl.java @@ -51,7 +51,7 @@ public class JFrequencyControl extends JPanel implements FrequencyChangeListener private Color mHighlightColor = Color.YELLOW; - private int mFrequency; + private long mFrequency; private Cursor mBlankCursor; @@ -62,7 +62,7 @@ public class JFrequencyControl extends JPanel implements FrequencyChangeListener init(); } - public JFrequencyControl( int value ) + public JFrequencyControl( long value ) { this(); mFrequency = value; @@ -127,7 +127,7 @@ public class JFrequencyControl extends JPanel implements FrequencyChangeListener * rebroadcast this event, just set the control to indicate the new frequency. */ @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { setFrequency( frequency, false ); } @@ -136,7 +136,7 @@ public class JFrequencyControl extends JPanel implements FrequencyChangeListener * Loads the frequency into the display and optionally fires a change event * to all registered listeners */ - public void setFrequency( int frequency, boolean fireChangeEvent ) + public void setFrequency( long frequency, boolean fireChangeEvent ) { mFrequency = frequency; @@ -146,14 +146,14 @@ public class JFrequencyControl extends JPanel implements FrequencyChangeListener } } - public int getFrequency() + public long getFrequency() { return mFrequency; } private void updateFrequency() { - int frequency = 0; + long frequency = 0; for( Digit digit: mDigits.values() ) { @@ -209,10 +209,10 @@ public class JFrequencyControl extends JPanel implements FrequencyChangeListener * to the power (ie column) set for this digit. Optionally, fires a * value change event to all listeners. */ - public void setFrequency( int frequency, boolean fireChangeEvent ) + public void setFrequency( long frequency, boolean fireChangeEvent ) { //Strip the digits higher than this one - int lower = frequency % (int)( Math.pow( 10, mPower + 1) ); + long lower = frequency % (int)( Math.pow( 10, mPower + 1) ); //Set the value to int value of dividing by 10 to this power int value = (int)( lower / (int)( Math.pow( 10, mPower ) ) ); @@ -220,7 +220,7 @@ public class JFrequencyControl extends JPanel implements FrequencyChangeListener set( value, fireChangeEvent ); } - public int getFrequency() + public long getFrequency() { return mValue * (int)Math.pow( 10, mPower ); } diff --git a/src/sample/complex/ComplexSample.java b/src/sample/complex/ComplexSample.java index 7c7ecd0d..2f383f62 100644 --- a/src/sample/complex/ComplexSample.java +++ b/src/sample/complex/ComplexSample.java @@ -38,33 +38,6 @@ public class ComplexSample implements Serializable mRight = right; } - public static void main( String[] args ) - { - Log.info( "Starting ... " ); - - int frequency = 15000; - int sampleRate = 2000000; - - float anglePerSample = (float)( 2.0d * Math.PI * (float)frequency / (float)sampleRate ); - - ComplexSample current = new ComplexSample( 0.0f, -1.0f ); - - ComplexSample stepPerSample = ComplexSample.fromAngle( anglePerSample ); - - long start = System.currentTimeMillis(); - - for( int x = 0; x < sampleRate; x++ ) - { -// Log.info( x + " " + current.toString() ); - current.multiply( stepPerSample ); - current.fastNormalize(); - } - - Log.info( "Elapsed: " + ( System.currentTimeMillis() - start ) ); - - Log.info( "Finished!" ); - } - public ComplexSample copy() { return new ComplexSample( mLeft, mRight ); diff --git a/src/sample/complex/ComplexSampleRateCounter.java b/src/sample/complex/ComplexSampleRateCounter.java index b7f48ecf..4fa42855 100644 --- a/src/sample/complex/ComplexSampleRateCounter.java +++ b/src/sample/complex/ComplexSampleRateCounter.java @@ -100,7 +100,7 @@ public class ComplexSampleRateCounter implements Listener, } @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { mExpectedSampleRate = bandwidth; } diff --git a/src/source/Source.java b/src/source/Source.java index 256e258d..8f53a979 100644 --- a/src/source/Source.java +++ b/src/source/Source.java @@ -40,7 +40,7 @@ public abstract class Source public abstract int getSampleRate() throws SourceException; - public abstract int getFrequency() throws SourceException; + public abstract long getFrequency() throws SourceException; public abstract void dispose(); diff --git a/src/source/config/SourceConfigTuner.java b/src/source/config/SourceConfigTuner.java index 6273318a..ee4c5f54 100644 --- a/src/source/config/SourceConfigTuner.java +++ b/src/source/config/SourceConfigTuner.java @@ -27,7 +27,7 @@ public class SourceConfigTuner extends SourceConfiguration { private static DecimalFormat sFORMAT = new DecimalFormat( "0.00000" ); - private int mFrequency = 0; + private long mFrequency = 0; public SourceConfigTuner() { @@ -35,12 +35,12 @@ public class SourceConfigTuner extends SourceConfiguration } @XmlAttribute( name = "frequency" ) - public int getFrequency() + public long getFrequency() { return mFrequency; } - public void setFrequency( int frequency ) + public void setFrequency( long frequency ) { mFrequency = frequency; } diff --git a/src/source/mixer/MixerSource.java b/src/source/mixer/MixerSource.java index cfb6c205..5ce90ca4 100644 --- a/src/source/mixer/MixerSource.java +++ b/src/source/mixer/MixerSource.java @@ -34,7 +34,7 @@ import source.SourceException; public class MixerSource extends FloatArraySource { - private int mFrequency = 0; + private long mFrequency = 0; private int mBufferSize = 16384; private BufferReader mBufferReader = new BufferReader(); @@ -141,7 +141,7 @@ public class MixerSource extends FloatArraySource /** * Returns the frequency of this source. Default is 0. */ - public int getFrequency() throws SourceException + public long getFrequency() throws SourceException { return mFrequency; } @@ -151,7 +151,7 @@ public class MixerSource extends FloatArraySource * be useful if you are streaming an external audio source in through the * sound card and you want to specify a frequency for that source */ - public void setFrequency( int frequency ) + public void setFrequency( long frequency ) { mFrequency = frequency; } diff --git a/src/source/tuner/DigitalDropChannel.java b/src/source/tuner/DigitalDropChannel.java deleted file mode 100644 index 73bbc796..00000000 --- a/src/source/tuner/DigitalDropChannel.java +++ /dev/null @@ -1,152 +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 - ******************************************************************************/ -package source.tuner; - -import sample.Broadcaster; -import sample.Listener; -import sample.complex.ComplexSample; -import dsp.filter.ComplexFilter; -import dsp.filter.FilterFactory; -import dsp.filter.Window.WindowType; - -@Deprecated -public class DigitalDropChannel implements Listener, - FrequencyChangeListener -{ - /** - * Implements a frequency translating, decimating FIR filter channelizer. - * - * Uses multiple cascaded half-band low pass filters that each decimate by - * two, to achieve an overall power-of-two decimation factor. - * - * @param decimation - power of 2 decimation factor - * - * @param frequencyShift +/- frequency shift in hertz - */ - - private static int sCHANNEL_RATE = 48000; - private static int sCHANNEL_PASS_FREQUENCY = 12500; - - private NumericallyControlledOscillator mFrequencyTranslator; - - private ComplexFilter[] mFilters; - - private Broadcaster mComplexSampleBroadcaster = - new Broadcaster(); - - private int mSampleRate; - private int mFrequencyShift; - - public DigitalDropChannel( int sampleRate, int frequencyShift ) - { - if( sampleRate % sCHANNEL_RATE != 0 ) - { - throw new IllegalArgumentException( "Sample rate must be an " - + "integer multiple of 48000" ); - } - - mFrequencyShift = frequencyShift; - - setSampleRate( sampleRate ); - } - - private void setSampleRate( int sampleRate ) - { - if( sampleRate != mSampleRate ) - { - /* Setup or adjust the frequency translator */ - if( mFrequencyTranslator == null ) - { - mFrequencyTranslator = - new NumericallyControlledOscillator( mFrequencyShift, - sampleRate ); - } - else - { - mFrequencyTranslator.setSampleRate( sampleRate ); - } - - /* Get new decimation filters */ - mFilters = FilterFactory - .getDecimationFilters( sampleRate, - sCHANNEL_RATE, - sCHANNEL_PASS_FREQUENCY, - 48, //dB attenuation - WindowType.HAMMING ); - - /* wire the first filter stage to the frequency translator */ -// mFrequencyTranslator.setListener( mFilters[ 0 ] ); - - /* wire the remaining filters together */ - if( mFilters.length > 1 ) - { - for( int x = 1; x < mFilters.length; x++ ) - { - mFilters[ x - 1 ].setListener( mFilters[ x ] ); - } - } - - /* Add the sample broadcaster as a listener to the final filter */ -// mFilters[ mFilters.length - 1 ].setListener( mComplexSampleBroadcaster ); - - mSampleRate = sampleRate; - } - } - - @Override - public void frequencyChanged( int frequency, int bandwidth ) - { - mFrequencyTranslator.setFrequency( frequency ); - - if( bandwidth != mSampleRate ) - { - setSampleRate( bandwidth ); - } - } - - public int getFrequencyOffset() - { - return mFrequencyTranslator.getFrequency(); - } - - public void addListener( Listener listener ) - { - mComplexSampleBroadcaster.addListener( listener ); - } - - public void removeListener( Listener listener ) - { - mComplexSampleBroadcaster.removeListener( listener ); - } - - public int getListenerCount() - { - return mComplexSampleBroadcaster.getListenerCount(); - } - - public void removeListeners() - { - mComplexSampleBroadcaster.clear(); - } - - @Override - public void receive( ComplexSample sample ) - { - mFrequencyTranslator.receive( sample ); - } -} diff --git a/src/source/tuner/FrequencyChangeListener.java b/src/source/tuner/FrequencyChangeListener.java index a42aa797..ef8fea34 100644 --- a/src/source/tuner/FrequencyChangeListener.java +++ b/src/source/tuner/FrequencyChangeListener.java @@ -34,5 +34,5 @@ public interface FrequencyChangeListener * @param frequency - uncorrected frequency in hertz * @param bandwidth - bandwidth in hertz */ - public void frequencyChanged( int frequency, int bandwidth ); + public void frequencyChanged( long frequency, int bandwidth ); } diff --git a/src/source/tuner/FrequencyController.java b/src/source/tuner/FrequencyController.java index a8d04378..cf80af6b 100644 --- a/src/source/tuner/FrequencyController.java +++ b/src/source/tuner/FrequencyController.java @@ -24,10 +24,10 @@ import source.SourceException; public class FrequencyController { private Tunable mTunable; - private int mFrequency = 101100000; - private int mTunedFrequency = 101100000; - private int mMinimumFrequency; - private int mMaximumFrequency; + private long mFrequency = 101100000; + private long mTunedFrequency = 101100000; + private long mMinimumFrequency; + private long mMaximumFrequency; private double mFrequencyCorrection = 0d; private int mBandwidth = 0; @@ -35,8 +35,8 @@ public class FrequencyController new ArrayList(); public FrequencyController( Tunable tunable, - int minFrequency, - int maxFrequency, + long minFrequency, + long maxFrequency, double frequencyCorrection ) throws SourceException { mTunable = tunable; @@ -66,7 +66,7 @@ public class FrequencyController /** * Get frequency in hertz */ - public int getFrequency() + public long getFrequency() { return mFrequency; } @@ -77,7 +77,7 @@ public class FrequencyController * @throws SourceException if tunable doesn't support tuning a corrected * version of the requested frequency */ - public void setFrequency( int frequency ) throws SourceException + public void setFrequency( long frequency ) throws SourceException { setFrequency( frequency, true ); } @@ -87,10 +87,10 @@ public class FrequencyController * method supports changing the frequency correction value without * broadcasting a frequency change event. */ - private void setFrequency( int frequency, boolean broadcastChange ) + private void setFrequency( long frequency, boolean broadcastChange ) throws SourceException { - int tunedFrequency = getTunedFrequency( frequency ); + long tunedFrequency = getTunedFrequency( frequency ); if( tunedFrequency < mMinimumFrequency || tunedFrequency > mMaximumFrequency ) @@ -114,17 +114,17 @@ public class FrequencyController } } - public int getTunedFrequency() + public long getTunedFrequency() { return mTunedFrequency; } - public int getMinimumFrequency() + public long getMinimumFrequency() { return mMinimumFrequency; } - public int getMaximumFrequency() + public long getMaximumFrequency() { return mMaximumFrequency; } @@ -134,9 +134,9 @@ public class FrequencyController * corrected frequency. * @param correctedFrequency */ - private int getTunedFrequency( int correctedFrequency ) + private long getTunedFrequency( long correctedFrequency ) { - return (int)( (double)correctedFrequency / + return (long)( (double)correctedFrequency / ( 1.0 + ( mFrequencyCorrection / 1000000.0 ) ) ); } @@ -145,7 +145,7 @@ public class FrequencyController * from the tuned frequency. * @param tunedFrequency */ - private int getCorrectedFrequency( int tunedFrequency ) + private long getCorrectedFrequency( long tunedFrequency ) { return (int)( (double)tunedFrequency / ( 1.0 - ( mFrequencyCorrection / 1000000.0 ) ) ); @@ -205,12 +205,12 @@ public class FrequencyController /** * Gets the tuned frequency of the device */ - public int getTunedFrequency() throws SourceException; + public long getTunedFrequency() throws SourceException; /** * Sets the tuned frequency of the device */ - public void setTunedFrequency( int frequency ) throws SourceException; + public void setTunedFrequency( long frequency ) throws SourceException; /** * Gets the current bandwidth setting of the device diff --git a/src/source/tuner/NumericallyControlledOscillator.java b/src/source/tuner/NumericallyControlledOscillator.java index e15d3f00..9c909acb 100644 --- a/src/source/tuner/NumericallyControlledOscillator.java +++ b/src/source/tuner/NumericallyControlledOscillator.java @@ -26,7 +26,7 @@ import util.Oscillator; public class NumericallyControlledOscillator implements Listener, FrequencyChangeListener { - private int mFrequency; + private long mFrequency; private int mSampleRate; private Oscillator mSineWaveGenerator; private Listener mListener; @@ -39,7 +39,7 @@ public class NumericallyControlledOscillator implements Listener, * shifted outside of the sampling bandwidth will wrap around, due to the * nature of quadrature sampling. */ - public NumericallyControlledOscillator( int frequencyShift, int sampleRate ) + public NumericallyControlledOscillator( long frequencyShift, int sampleRate ) { mFrequency = frequencyShift; mSampleRate = sampleRate; @@ -66,7 +66,7 @@ public class NumericallyControlledOscillator implements Listener, } @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { if( frequency != mFrequency ) { @@ -84,7 +84,7 @@ public class NumericallyControlledOscillator implements Listener, * all subsequent samples will be output at the new translated frequency * @param frequency - hertz */ - public void setFrequency( int frequency ) + public void setFrequency( long frequency ) { Log.info( "NumericallyControlledOscillator - setting sine wave gen to freq:" + frequency ); @@ -96,7 +96,7 @@ public class NumericallyControlledOscillator implements Listener, * Current frequency shift setting * @return - frequency - hertz */ - public int getFrequency() + public long getFrequency() { return mFrequency; } diff --git a/src/source/tuner/Tuner.java b/src/source/tuner/Tuner.java index a1341244..7c7ca34e 100644 --- a/src/source/tuner/Tuner.java +++ b/src/source/tuner/Tuner.java @@ -98,7 +98,7 @@ public abstract class Tuner implements FrequencyChangeBroadcaster, * Tuner Local Oscillator Frequency * @return - frequency in Hertz */ - public abstract int getFrequency() throws SourceException; + public abstract long getFrequency() throws SourceException; /** * Returns a tuner frequency channel source, tuned to the correct frequency @@ -171,7 +171,7 @@ public abstract class Tuner implements FrequencyChangeBroadcaster, /** * Broadcasts a frequency change event to all registered listeners */ - public void broadcastFrequencyChange( int frequency, int bandwidth ) + public void broadcastFrequencyChange( long frequency, int bandwidth ) { for( FrequencyChangeListener listener: mFrequencyChangeListeners ) { @@ -183,7 +183,7 @@ public abstract class Tuner implements FrequencyChangeBroadcaster, * Frequency change listener method. We receive change events from the * controller and rebroadcast them to all registered listeners. */ - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { broadcastFrequencyChange( frequency, bandwidth ); } diff --git a/src/source/tuner/TunerChannel.java b/src/source/tuner/TunerChannel.java index 42974b65..c873753c 100644 --- a/src/source/tuner/TunerChannel.java +++ b/src/source/tuner/TunerChannel.java @@ -20,10 +20,10 @@ package source.tuner; public class TunerChannel implements Comparable { private Type mType; - private int mFrequency; + private long mFrequency; private int mBandwidth; - public TunerChannel( Type type, int frequency, int bandwidth ) + public TunerChannel( Type type, long frequency, int bandwidth ) { mType = type; mFrequency = frequency; @@ -40,12 +40,12 @@ public class TunerChannel implements Comparable mType = type; } - public int getFrequency() + public long getFrequency() { return mFrequency; } - public void setFrequency( int frequency ) + public void setFrequency( long frequency ) { mFrequency = frequency; } @@ -60,12 +60,12 @@ public class TunerChannel implements Comparable mBandwidth = bandwidth; } - public int getMinFrequency() + public long getMinFrequency() { return mFrequency - ( mBandwidth / 2 ); } - public int getMaxFrequency() + public long getMaxFrequency() { return mFrequency + ( mBandwidth / 2 ); } @@ -74,7 +74,7 @@ public class TunerChannel implements Comparable * Indicates if any part of this tuner channel is contained within the * minimum and maximum frequency values. */ - public boolean isWithin( int minimum, int maximum ) + public boolean isWithin( long minimum, long maximum ) { return ( ( minimum <= getMinFrequency() && getMinFrequency() <= maximum ) || ( minimum <= getMaxFrequency() && getMaxFrequency() <= maximum ) ); diff --git a/src/source/tuner/TunerChannelSource.java b/src/source/tuner/TunerChannelSource.java index b9baca1e..b00f1486 100644 --- a/src/source/tuner/TunerChannelSource.java +++ b/src/source/tuner/TunerChannelSource.java @@ -55,7 +55,7 @@ public class TunerChannelSource extends ComplexSource private ComplexSampleAssembler mBufferAssembler = new ComplexSampleAssembler( 3000 ); - private int mTunerFrequency; + private long mTunerFrequency; private int mTunerSampleRate; private ThreadPoolManager mThreadPoolManager; private ScheduledFuture mTaskHandle; @@ -153,13 +153,13 @@ public class TunerChannelSource extends ComplexSource } @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { /* Frequency change */ if( frequency != mTunerFrequency ) { - int frequencyOffset = frequency - mTunerChannel.getFrequency(); + long frequencyOffset = frequency - mTunerChannel.getFrequency(); if( mSineWaveGenerator == null ) { @@ -180,7 +180,7 @@ public class TunerChannelSource extends ComplexSource /* Bandwidth/Sample rate change */ if( bandwidth != mTunerSampleRate ) { - int frequencyOffset = frequency - mTunerChannel.getFrequency(); + long frequencyOffset = frequency - mTunerChannel.getFrequency(); if( mSineWaveGenerator == null ) { @@ -225,7 +225,7 @@ public class TunerChannelSource extends ComplexSource return mTuner.getSampleRate(); } - public int getFrequency() throws SourceException + public long getFrequency() throws SourceException { return mTuner.getFrequency(); } diff --git a/src/source/tuner/TunerController.java b/src/source/tuner/TunerController.java index efbb31cd..b02888f4 100644 --- a/src/source/tuner/TunerController.java +++ b/src/source/tuner/TunerController.java @@ -45,7 +45,7 @@ public abstract class TunerController implements Tunable * @throws SourceException - for any issues related to constructing the * class, tuning a frequency, or setting the bandwidth */ - public TunerController( int minimumFrequency, int maximumFrequency ) + public TunerController( long minimumFrequency, long maximumFrequency ) throws SourceException { mFrequencyController = new FrequencyController( this, @@ -71,7 +71,7 @@ public abstract class TunerController implements Tunable * @param frequency in hertz * @throws SourceException - if the tuner has any issues */ - public void setFrequency( int frequency ) throws SourceException + public void setFrequency( long frequency ) throws SourceException { mFrequencyController.setFrequency( frequency ); } @@ -81,7 +81,7 @@ public abstract class TunerController implements Tunable * * @return frequency in hertz */ - public int getFrequency() + public long getFrequency() { return mFrequencyController.getFrequency(); } @@ -96,12 +96,12 @@ public abstract class TunerController implements Tunable mFrequencyController.setFrequencyCorrection( correction ); } - public int getMinFrequency() + public long getMinFrequency() { return mFrequencyController.getMinimumFrequency(); } - public int getMaxFrequency() + public long getMaxFrequency() { return mFrequencyController.getMaximumFrequency(); } @@ -127,8 +127,8 @@ public abstract class TunerController implements Tunable //Sort the existing locks and get the min/max locked frequencies Collections.sort( mTunedChannels ); - int minLockedFrequency = mTunedChannels.get( 0 ).getMinFrequency(); - int maxLockedFrequency = mTunedChannels + long minLockedFrequency = mTunedChannels.get( 0 ).getMinFrequency(); + long maxLockedFrequency = mTunedChannels .get( mTunedChannels.size() - 1 ).getMaxFrequency(); //Requested channel is higher than min locked frequency @@ -195,14 +195,14 @@ public abstract class TunerController implements Tunable { Collections.sort( mTunedChannels ); - int minLockedFrequency = mTunedChannels.get( 0 ).getMinFrequency(); - int maxLockedFrequency = mTunedChannels + long minLockedFrequency = mTunedChannels.get( 0 ).getMinFrequency(); + long maxLockedFrequency = mTunedChannels .get( mTunedChannels.size() - 1 ).getMaxFrequency(); - int middle = minLockedFrequency + + long middle = minLockedFrequency + ( ( maxLockedFrequency - minLockedFrequency ) / 2 ); - int middleMin = middle - 10000; - int middleMax = middle + 10000; + long middleMin = middle - 10000; + long middleMax = middle + 10000; Iterator it = mTunedChannels.iterator(); diff --git a/src/source/tuner/TunerNode.java b/src/source/tuner/TunerNode.java index e5b45229..5adcae4e 100644 --- a/src/source/tuner/TunerNode.java +++ b/src/source/tuner/TunerNode.java @@ -36,7 +36,7 @@ public class TunerNode extends BaseNode implements FrequencyChangeListener private static DecimalFormat FREQUENCY_FORMAT = new DecimalFormat( "0.00000" ); private static DecimalFormat SAMPLE_RATE_FORMAT = new DecimalFormat( "0.000" ); - private int mFrequency; + private long mFrequency; private int mBandwidth; public TunerNode( Tuner tuner ) @@ -117,7 +117,7 @@ public class TunerNode extends BaseNode implements FrequencyChangeListener } @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { mFrequency = frequency; mBandwidth = bandwidth; diff --git a/src/source/tuner/ettus/B100Tuner.java b/src/source/tuner/ettus/B100Tuner.java index 7187d88a..e8d91283 100644 --- a/src/source/tuner/ettus/B100Tuner.java +++ b/src/source/tuner/ettus/B100Tuner.java @@ -78,7 +78,7 @@ public class B100Tuner extends Tuner } @Override - public int getFrequency() throws SourceException + public long getFrequency() throws SourceException { return 0; } diff --git a/src/source/tuner/fcd/FCDTuner.java b/src/source/tuner/fcd/FCDTuner.java index 8aa69767..410ccfde 100644 --- a/src/source/tuner/fcd/FCDTuner.java +++ b/src/source/tuner/fcd/FCDTuner.java @@ -92,7 +92,7 @@ public class FCDTuner extends MixerTuner } @Override - public int getFrequency() throws SourceException + public long getFrequency() throws SourceException { return mController.getFrequency(); } diff --git a/src/source/tuner/fcd/FCDTunerController.java b/src/source/tuner/fcd/FCDTunerController.java index 11b9043b..79088a55 100644 --- a/src/source/tuner/fcd/FCDTunerController.java +++ b/src/source/tuner/fcd/FCDTunerController.java @@ -55,7 +55,6 @@ public abstract class FCDTunerController extends TunerController private UsbPipe mPipeIn; private UsbPipe mPipeOut; private FCDConfiguration mConfiguration = new FCDConfiguration(); - private int mSampleRate; public FCDTunerController( USBTunerDevice device, int minTunableFrequency, @@ -147,7 +146,7 @@ public abstract class FCDTunerController extends TunerController /** * Sets the actual (uncorrected) device frequency */ - public void setTunedFrequency( int frequency ) throws SourceException + public void setTunedFrequency( long frequency ) throws SourceException { try { @@ -163,11 +162,11 @@ public abstract class FCDTunerController extends TunerController /** * Gets the actual (uncorrected) device frequency */ - public int getTunedFrequency() throws SourceException + public long getTunedFrequency() throws SourceException { try { - return (int)send( FCDCommand.APP_GET_FREQUENCY_HZ ); + return send( FCDCommand.APP_GET_FREQUENCY_HZ ); } catch( Exception e ) { diff --git a/src/source/tuner/fcd/proV1/FCD1TunerEditorPanel.java b/src/source/tuner/fcd/proV1/FCD1TunerEditorPanel.java index 488286cb..7757b47c 100644 --- a/src/source/tuner/fcd/proV1/FCD1TunerEditorPanel.java +++ b/src/source/tuner/fcd/proV1/FCD1TunerEditorPanel.java @@ -86,7 +86,7 @@ public class FCD1TunerEditorPanel extends JPanel implements FrequencyChangeListe } @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { //Disregard the bandwidth value, which shouldn't be changing try diff --git a/src/source/tuner/fcd/proplusV2/FCD2TunerEditorPanel.java b/src/source/tuner/fcd/proplusV2/FCD2TunerEditorPanel.java index 1e665402..0778781d 100644 --- a/src/source/tuner/fcd/proplusV2/FCD2TunerEditorPanel.java +++ b/src/source/tuner/fcd/proplusV2/FCD2TunerEditorPanel.java @@ -85,7 +85,7 @@ public class FCD2TunerEditorPanel extends JPanel implements FrequencyChangeListe } @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { //Disregard the bandwidth, which shouldn't be changing try diff --git a/src/source/tuner/rtl/RTL2832Tuner.java b/src/source/tuner/rtl/RTL2832Tuner.java index f226202c..ac80035d 100644 --- a/src/source/tuner/rtl/RTL2832Tuner.java +++ b/src/source/tuner/rtl/RTL2832Tuner.java @@ -119,7 +119,7 @@ public class RTL2832Tuner extends Tuner } @Override - public int getFrequency() throws SourceException + public long getFrequency() throws SourceException { return mController.getFrequency(); } diff --git a/src/source/tuner/rtl/RTL2832TunerController.java b/src/source/tuner/rtl/RTL2832TunerController.java index 4341e301..3e525847 100644 --- a/src/source/tuner/rtl/RTL2832TunerController.java +++ b/src/source/tuner/rtl/RTL2832TunerController.java @@ -166,8 +166,8 @@ public abstract class RTL2832TunerController extends TunerController * tuner controller class for that tuner type. */ public RTL2832TunerController( USBTunerDevice tunerDevice, - int minTunableFrequency, - int maxTunableFrequency ) throws SourceException + long minTunableFrequency, + long maxTunableFrequency ) throws SourceException { super( minTunableFrequency, maxTunableFrequency ); diff --git a/src/source/tuner/rtl/e4k/E4KTunerController.java b/src/source/tuner/rtl/e4k/E4KTunerController.java index 47c4e9b9..76a0ba42 100644 --- a/src/source/tuner/rtl/e4k/E4KTunerController.java +++ b/src/source/tuner/rtl/e4k/E4KTunerController.java @@ -36,10 +36,10 @@ public class E4KTunerController extends RTL2832TunerController * * TODO: change frequency to a long primitive type */ - public static final int sMIN_FREQUENCY = 52000000; - public static final int sMIN_FREQUENCY_EXTENDED = 52000000; - public static final int sMAX_FREQUENCY = 2147000000; - public static final int sMAX_FREQUENCY_EXTENDED = 2147000000; + public static final long sMIN_FREQUENCY = 52000000; + public static final long sMIN_FREQUENCY_EXTENDED = 52000000; + public static final long sMAX_FREQUENCY = 2200000000l; + public static final long sMAX_FREQUENCY_EXTENDED = 2200000000l; public static final long sMIN_VCO = 2600000000l; //2.6 GHz public static final long sMAX_VCO = 3900000000l; //3.9 GHz @@ -236,7 +236,7 @@ public class E4KTunerController extends RTL2832TunerController } @Override - public int getTunedFrequency() throws SourceException + public long getTunedFrequency() throws SourceException { try { @@ -276,7 +276,7 @@ public class E4KTunerController extends RTL2832TunerController } @Override - public void setTunedFrequency( int frequency ) throws SourceException + public void setTunedFrequency( long frequency ) throws SourceException { /* Get the phase locked loop setting */ PLL pll = PLL.fromFrequency( frequency ); @@ -288,13 +288,13 @@ public class E4KTunerController extends RTL2832TunerController /* remainder is just as it describes. It is what is left over after we * carve out scaled oscillator frequency increments (z) from the desired * frequency. */ - int remainder = frequency - ( ( z & 0xFF ) * pll.getScaledOscillator() ); + int remainder = (int)( frequency - ( ( z & 0xFF ) * pll.getScaledOscillator() ) ); /* X is a 16-bit representation of the remainder */ int x = (int)( (double)remainder / (double)pll.getScaledOscillator() * sE4K_PLL_Y ); /* Calculate the exact (tunable) frequency and apply that to the tuner */ - int actualFrequency = calculateActualFrequency( pll, z, x ); + long actualFrequency = calculateActualFrequency( pll, z, x ); /** * Hack: if we're trying to set the minimum frequency for the E4K, due @@ -353,9 +353,9 @@ public class E4KTunerController extends RTL2832TunerController } } - private int calculateActualFrequency( PLL pll, byte z, int x ) + private long calculateActualFrequency( PLL pll, byte z, int x ) { - int whole = (int)( pll.getScaledOscillator() * ( z & 0xFF ) ); + long whole = pll.getScaledOscillator() * ( z & 0xFF ); int fractional = (int)( pll.getScaledOscillator() * ( (double)x / (double)sE4K_PLL_Y ) ); @@ -880,7 +880,7 @@ public class E4KTunerController extends RTL2832TunerController } } - public void setBand( int frequency, + public void setBand( long frequency, boolean controlI2CRepeater ) throws UsbException { if( controlI2CRepeater ) @@ -918,7 +918,7 @@ public class E4KTunerController extends RTL2832TunerController } } - private void setRFFilter( int frequency, + private void setRFFilter( long frequency, boolean controlI2CRepeater ) throws UsbException { RFFilter filter = RFFilter.fromFrequency( frequency ); @@ -1057,7 +1057,7 @@ public class E4KTunerController extends RTL2832TunerController return toString(); } - public static Band fromFrequency( int frequency ) + public static Band fromFrequency( long frequency ) { if( frequency < 140000000 ) //140 MHz { @@ -1092,14 +1092,14 @@ public class E4KTunerController extends RTL2832TunerController PLL_1200M0( 0x01, 1200000000, 4, 7200000, false, "1200.0 MHz" ); private int mValue; - private int mFrequency; + private long mFrequency; private int mMultiplier; private int mScaledOscillator; private boolean mRequires3PhaseMixing; private String mLabel; private PLL( int value, - int frequency, + long frequency, int multiplier, int scaledOscillator, boolean requires3Phase, @@ -1119,7 +1119,7 @@ public class E4KTunerController extends RTL2832TunerController return (byte)mValue; } - public int getFrequency() + public long getFrequency() { return mFrequency; } @@ -1151,7 +1151,7 @@ public class E4KTunerController extends RTL2832TunerController /* Returns the PLL setting with the closest frequency that is greater * than the frequency argument */ - public static PLL fromFrequency( int frequency ) + public static PLL fromFrequency( long frequency ) { for( PLL pll: values() ) { @@ -1235,10 +1235,10 @@ public class E4KTunerController extends RTL2832TunerController M1750( 15, 1735000000, 2147000000 ); private int mValue; - private int mMinFrequency; - private int mMaxFrequency; + private long mMinFrequency; + private long mMaxFrequency; - private RFFilter( int value, int minFrequency, int maxFrequency ) + private RFFilter( int value, long minFrequency, long maxFrequency ) { mValue = value; mMinFrequency = minFrequency; @@ -1263,7 +1263,7 @@ public class E4KTunerController extends RTL2832TunerController /** * Minimum frequency for this filter. */ - public int getMinimumFrequency() + public long getMinimumFrequency() { return mMinFrequency; } @@ -1272,7 +1272,7 @@ public class E4KTunerController extends RTL2832TunerController * Maximum frequency for this filter is less than this value, but does * not include this value. */ - public int getMaximumFrequency() + public long getMaximumFrequency() { return mMaxFrequency; } @@ -1285,7 +1285,7 @@ public class E4KTunerController extends RTL2832TunerController * @throws IllegalArgumentException if the frequency is outside the * max value (2200 MHz) */ - public static RFFilter fromFrequency( int frequency ) + public static RFFilter fromFrequency( long frequency ) { if( frequency < 350000000 ) { diff --git a/src/source/tuner/rtl/e4k/E4KTunerEditorPanel.java b/src/source/tuner/rtl/e4k/E4KTunerEditorPanel.java index 909bd93f..0b0aada1 100644 --- a/src/source/tuner/rtl/e4k/E4KTunerEditorPanel.java +++ b/src/source/tuner/rtl/e4k/E4KTunerEditorPanel.java @@ -22,18 +22,17 @@ import gui.control.JFrequencyControl; import java.awt.Color; import java.awt.EventQueue; -import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; -import com.jidesoft.swing.JideTabbedPane; - import log.Log; import net.miginfocom.swing.MigLayout; -import source.SourceComponentEditor; import source.SourceException; import source.tuner.FrequencyChangeListener; import source.tuner.rtl.RTL2832InfoPanel; + +import com.jidesoft.swing.JideTabbedPane; + import controller.ResourceManager; public class E4KTunerEditorPanel extends JPanel implements FrequencyChangeListener @@ -89,7 +88,7 @@ public class E4KTunerEditorPanel extends JPanel implements FrequencyChangeListen * apply end-user requested frequency changes against the tuner */ @Override - public void frequencyChanged( final int frequency, int bandwidth ) + public void frequencyChanged( final long frequency, int bandwidth ) { EventQueue.invokeLater( new Runnable() { diff --git a/src/source/tuner/rtl/r820t/R820TTunerController.java b/src/source/tuner/rtl/r820t/R820TTunerController.java index 3b6ac486..a9be2a37 100644 --- a/src/source/tuner/rtl/r820t/R820TTunerController.java +++ b/src/source/tuner/rtl/r820t/R820TTunerController.java @@ -35,8 +35,8 @@ import controller.ResourceManager; public class R820TTunerController extends RTL2832TunerController { - public static final int MIN_FREQUENCY = 24000000; - public static final int MAX_FREQUENCY = 1766000000; + public static final long MIN_FREQUENCY = 24000000; + public static final long MAX_FREQUENCY = 1766000000; public static final int R820T_IF_FREQUENCY = 3570000; public static final byte VERSION = (byte)49; @@ -136,7 +136,7 @@ public class R820TTunerController extends RTL2832TunerController * Not implemented. */ @Override - public int getTunedFrequency() throws SourceException + public long getTunedFrequency() throws SourceException { return 0; } @@ -146,7 +146,7 @@ public class R820TTunerController extends RTL2832TunerController * of setting the multiplexer and then setting the Oscillator (PLL). */ @Override - public void setTunedFrequency( int frequency ) throws SourceException + public void setTunedFrequency( long frequency ) throws SourceException { try { @@ -154,7 +154,7 @@ public class R820TTunerController extends RTL2832TunerController boolean controlI2C = false; - int offsetFrequency = frequency + R820T_IF_FREQUENCY; + long offsetFrequency = frequency + R820T_IF_FREQUENCY; setMux( offsetFrequency, controlI2C ); @@ -205,7 +205,7 @@ public class R820TTunerController extends RTL2832TunerController /** * Sets the multiplexer for the desired center frequency. */ - private void setMux( int frequency, boolean controlI2C ) throws UsbException + private void setMux( long frequency, boolean controlI2C ) throws UsbException { FrequencyRange range = FrequencyRange.getRangeForFrequency( frequency ); @@ -401,7 +401,7 @@ public class R820TTunerController extends RTL2832TunerController /** * Sets the system IF frequency */ - private void systemFrequencySelect( int frequency, boolean controlI2C ) + private void systemFrequencySelect( long frequency, boolean controlI2C ) throws UsbException { /* LNA top? */ @@ -472,7 +472,7 @@ public class R820TTunerController extends RTL2832TunerController * @param controlI2C - control the I2C repeater locally * @throws UsbException - if unable to set any of the R820T registers */ - private void setPLL( int frequency, boolean controlI2C ) throws UsbException + private void setPLL( long frequency, boolean controlI2C ) throws UsbException { /* Set reference divider to 0 */ writeR820TRegister( Register.REFERENCE_DIVIDER_2, (byte)0x00, controlI2C ); @@ -970,16 +970,16 @@ public class R820TTunerController extends RTL2832TunerController RANGE_650( 650000000, 1766000000, 0x00, 0x40, 0x00, 0x00, 0x00 ), RANGE_UNK( 0, 0, 0, 0, 0, 0, 0 ); - private int mMinFrequency; - private int mMaxFrequency; + private long mMinFrequency; + private long mMaxFrequency; private int mOpenDrain; private int mRFMux_PolyMux; private int mTF_c; private int mXtalCap20p; private int mXtalCap10p; - private FrequencyRange( int minFrequency, - int maxFrequency, + private FrequencyRange( long minFrequency, + long maxFrequency, int openDrain, int rfMuxPloy, int tf_c, @@ -995,12 +995,12 @@ public class R820TTunerController extends RTL2832TunerController mXtalCap10p = xtalCap10p; } - public boolean contains( int frequency ) + public boolean contains( long frequency ) { return mMinFrequency <= frequency && frequency <= mMaxFrequency; } - public static FrequencyRange getRangeForFrequency( int frequency ) + public static FrequencyRange getRangeForFrequency( long frequency ) { for( FrequencyRange range: values() ) { @@ -1013,12 +1013,12 @@ public class R820TTunerController extends RTL2832TunerController return RANGE_UNK; } - public int getMinFrequency() + public long getMinFrequency() { return mMinFrequency; } - public int getMaxFrequency() + public long getMaxFrequency() { return mMaxFrequency; } @@ -1100,16 +1100,16 @@ public class R820TTunerController extends RTL2832TunerController private int mDividerNumber; private int mMixerDivider; - private int mMinimumFrequency; - private int mMaximumFrequency; + private long mMinimumFrequency; + private long mMaximumFrequency; private int mRegisterSetting; private int mIntegralValue; private static final int mVCOPowerReference = 2; private FrequencyDivider( int dividerNumber, int mixerDivider, - int minimumFrequency, - int maximumFrequency, + long minimumFrequency, + long maximumFrequency, int registerSetting, int integralValue ) { @@ -1144,12 +1144,12 @@ public class R820TTunerController extends RTL2832TunerController return mMixerDivider; } - public int getMinimumFrequency() + public long getMinimumFrequency() { return mMinimumFrequency; } - public int getMaximumFrequency() + public long getMaximumFrequency() { return mMaximumFrequency; } @@ -1159,7 +1159,7 @@ public class R820TTunerController extends RTL2832TunerController return (byte)mRegisterSetting; } - public boolean contains( int frequency ) + public boolean contains( long frequency ) { return mMinimumFrequency <= frequency && frequency <= mMaximumFrequency; @@ -1172,7 +1172,7 @@ public class R820TTunerController extends RTL2832TunerController * @param frequency - desired frequency * @return - FrequencyDivider to use for the specified frequency */ - public static FrequencyDivider fromFrequency( int frequency ) + public static FrequencyDivider fromFrequency( long frequency ) { for( FrequencyDivider divider: FrequencyDivider.values() ) { @@ -1188,11 +1188,11 @@ public class R820TTunerController extends RTL2832TunerController /** * Returns the integral to use for this frequency */ - public Integral getIntegral( int frequency ) + public Integral getIntegral( long frequency ) { if( contains( frequency ) ) { - int delta = frequency - mMinimumFrequency; + int delta = (int)( frequency - mMinimumFrequency ); int integral = (int)Math.round( (double)delta / (double)mIntegralValue ); @@ -1212,11 +1212,11 @@ public class R820TTunerController extends RTL2832TunerController * by the integral value to derive a 16-bit fractional value, returned * as an integer */ - public int getSDM( Integral integral, int frequency ) + public int getSDM( Integral integral, long frequency ) { if( contains( frequency ) ) { - int delta = frequency - ( integral.getNumber() * mIntegralValue ); + int delta = (int)( frequency - ( integral.getNumber() * mIntegralValue ) ); double fractional = (double)delta / (double)mIntegralValue; diff --git a/src/source/tuner/rtl/r820t/R820TTunerEditorPanel.java b/src/source/tuner/rtl/r820t/R820TTunerEditorPanel.java index 59f9ba62..334f6e02 100644 --- a/src/source/tuner/rtl/r820t/R820TTunerEditorPanel.java +++ b/src/source/tuner/rtl/r820t/R820TTunerEditorPanel.java @@ -88,7 +88,7 @@ public class R820TTunerEditorPanel extends JPanel implements FrequencyChangeList * apply end-user requested frequency changes against the tuner */ @Override - public void frequencyChanged( final int frequency, int bandwidth ) + public void frequencyChanged( final long frequency, int bandwidth ) { EventQueue.invokeLater( new Runnable() { diff --git a/src/source/wave/ComplexWaveSource.java b/src/source/wave/ComplexWaveSource.java index d1f2f273..71775393 100644 --- a/src/source/wave/ComplexWaveSource.java +++ b/src/source/wave/ComplexWaveSource.java @@ -41,7 +41,7 @@ public class ComplexWaveSource extends WaveSource private AudioInputStream mInputStream = null; private int mBytesPerFrame = 0; - private int mFrequency = 0; + private long mFrequency = 0; private byte[] mBuffer; private int mBufferPointer = 0; @@ -86,7 +86,7 @@ public class ComplexWaveSource extends WaveSource * Returns the frequency set for this file. Normally returns zero, but * the value can be set with setFrequency() method. */ - public int getFrequency() + public long getFrequency() { return mFrequency; } @@ -94,7 +94,7 @@ public class ComplexWaveSource extends WaveSource /** * Changes the value returned from getFrequency() for this source. */ - public void setFrequency( int frequency ) + public void setFrequency( long frequency ) { mFrequency = frequency; } diff --git a/src/source/wave/FloatWaveSource.java b/src/source/wave/FloatWaveSource.java index ee81d7ee..bb9a7439 100644 --- a/src/source/wave/FloatWaveSource.java +++ b/src/source/wave/FloatWaveSource.java @@ -38,7 +38,7 @@ public class FloatWaveSource extends WaveSource private AudioInputStream mInputStream = null; private int mBytesPerFrame = 0; - private int mFrequency = 0; + private long mFrequency = 0; private byte[] mBuffer; private int mBufferPointer = 0; @@ -84,7 +84,7 @@ public class FloatWaveSource extends WaveSource * Returns the frequency set for this file. Normally returns zero, but * the value can be set with setFrequency() method. */ - public int getFrequency() + public long getFrequency() { return mFrequency; } diff --git a/src/spectrum/DFTProcessor.java b/src/spectrum/DFTProcessor.java index 09b06295..9b5c9b66 100644 --- a/src/spectrum/DFTProcessor.java +++ b/src/spectrum/DFTProcessor.java @@ -519,7 +519,7 @@ public class DFTProcessor implements Listener, } @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { mSampleRate = bandwidth; diff --git a/src/spectrum/OverlayPanel.java b/src/spectrum/OverlayPanel.java index a54a70bc..1abad4ab 100644 --- a/src/spectrum/OverlayPanel.java +++ b/src/spectrum/OverlayPanel.java @@ -53,7 +53,7 @@ public class OverlayPanel extends JPanel private static DecimalFormat sFORMAT = new DecimalFormat( "000.000" ); private static DecimalFormat sCURSOR_FORMAT = new DecimalFormat( "000.00000" ); - private int mFrequency = 0; + private long mFrequency = 0; private int mBandwidth = 0; private Point mCursorLocation = new Point( 0, 0 ); private boolean mCursorVisible = false; @@ -239,13 +239,13 @@ public class OverlayPanel extends JPanel */ private void drawFrequencies( Graphics2D graphics ) { - int minFrequency = getMinFrequency(); - int maxFrequency = getMaxFrequency(); + long minFrequency = getMinFrequency(); + long maxFrequency = getMaxFrequency(); //TODO: the increment should be changeable according to the overall bandwidth // so that when we move to higher sample rates, the display reacts accordingly - int frequency; + long frequency; if( mBandwidth < 200000 ) { @@ -280,7 +280,7 @@ public class OverlayPanel extends JPanel /** * Draws a vertical line and a corresponding frequency label at the bottom */ - private void drawFrequencyLineAndLabel( Graphics2D graphics, int frequency ) + private void drawFrequencyLineAndLabel( Graphics2D graphics, long frequency ) { float xAxis = getAxisFromFrequency( frequency ); @@ -305,12 +305,12 @@ public class OverlayPanel extends JPanel /** * Returns the x-axis value corresponding to the frequency */ - public float getAxisFromFrequency( int frequency ) + public float getAxisFromFrequency( long frequency ) { float canvasMiddle = (float)getSize().getWidth() / 2; //Determine frequency offset from middle - int frequencyOffset = mFrequency - frequency; + long frequencyOffset = mFrequency - frequency; //Determine ratio of offset to bandwidth float ratio = (float)frequencyOffset / (float)mBandwidth; @@ -325,7 +325,7 @@ public class OverlayPanel extends JPanel /** * Returns the frequency corresponding to the x-axis value */ - public int getFrequencyFromAxis( double xAxis ) + public long getFrequencyFromAxis( double xAxis ) { float width = (float)getSize().getWidth(); @@ -339,7 +339,7 @@ public class OverlayPanel extends JPanel */ private void drawFrequencyLabel( Graphics2D graphics, float xaxis, - int frequency ) + long frequency ) { String label = sFORMAT.format( (float)frequency / 1000000.0f ); @@ -483,7 +483,7 @@ public class OverlayPanel extends JPanel * Frequency change event handler */ @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { mBandwidth = bandwidth; mFrequency = frequency; @@ -493,8 +493,8 @@ public class OverlayPanel extends JPanel */ mVisibleChannels.clear(); - int minimum = getMinFrequency(); - int maximum = getMaxFrequency(); + long minimum = getMinFrequency(); + long maximum = getMaxFrequency(); for( Channel channel: mChannels ) { @@ -545,7 +545,7 @@ public class OverlayPanel extends JPanel /** * Currently displayed minimum frequency */ - private int getMinFrequency() + private long getMinFrequency() { return mFrequency - ( mBandwidth / 2 ); } @@ -553,7 +553,7 @@ public class OverlayPanel extends JPanel /** * Currently displayed maximum frequency */ - private int getMaxFrequency() + private long getMaxFrequency() { return mFrequency + ( mBandwidth / 2 ); } @@ -562,7 +562,7 @@ public class OverlayPanel extends JPanel * Returns a list of channel configs that contain the frequency within their * min/max frequency settings. */ - public ArrayList getChannelsAtFrequency( int frequency ) + public ArrayList getChannelsAtFrequency( long frequency ) { ArrayList configs = new ArrayList(); diff --git a/src/spectrum/SpectralDisplayPanel.java b/src/spectrum/SpectralDisplayPanel.java index 784b2964..437a337c 100644 --- a/src/spectrum/SpectralDisplayPanel.java +++ b/src/spectrum/SpectralDisplayPanel.java @@ -319,7 +319,7 @@ public class SpectralDisplayPanel extends JPanel * Receives frequency change events -- primarily from tuner components. */ @Override - public void frequencyChanged( int frequency, int bandwidth ) + public void frequencyChanged( long frequency, int bandwidth ) { mChannelPanel.frequencyChanged( frequency, bandwidth ); mDFTProcessor.frequencyChanged( frequency, bandwidth ); @@ -479,7 +479,7 @@ public class SpectralDisplayPanel extends JPanel contextMenu.add( new PauseItem( mWaterfallPanel, "Pause" ) ); } - int frequency = + long frequency = mChannelPanel.getFrequencyFromAxis( event.getX() ); if( event.getComponent() == mChannelPanel ) @@ -757,10 +757,10 @@ public class SpectralDisplayPanel extends JPanel private static final long serialVersionUID = 1L; private ResourceManager mResourceManager; - private int mFrequency; + private long mFrequency; private DecoderType mDecoder; - public DecoderItem( ResourceManager manager, int frequency, DecoderType type ) + public DecoderItem( ResourceManager manager, long frequency, DecoderType type ) { super( type.getDisplayString() ); diff --git a/src/spectrum/WaterfallPanel.java b/src/spectrum/WaterfallPanel.java index f1ef4d1a..b19101e6 100644 --- a/src/spectrum/WaterfallPanel.java +++ b/src/spectrum/WaterfallPanel.java @@ -69,7 +69,7 @@ public class WaterfallPanel extends JPanel implements DFTResultsListener, private Point mCursorLocation = new Point( 0, 0 ); private boolean mCursorVisible = false; - private int mCursorFrequency = 0; + private long mCursorFrequency = 0; private AtomicBoolean mPaused = new AtomicBoolean(); private ResourceManager mResourceManager; @@ -162,7 +162,7 @@ public class WaterfallPanel extends JPanel implements DFTResultsListener, repaint(); } - public void setCursorFrequency( int frequency ) + public void setCursorFrequency( long frequency ) { mCursorFrequency = frequency; } diff --git a/src/util/Oscillator.java b/src/util/Oscillator.java index 8ffa044d..3ed02d84 100644 --- a/src/util/Oscillator.java +++ b/src/util/Oscillator.java @@ -34,7 +34,7 @@ public class Oscillator * @param frequency - positive or negative frequency in hertz * @param sampleRate - in hertz */ - public Oscillator( int frequency, int sampleRate ) + public Oscillator( long frequency, int sampleRate ) { mSampleRate = (double)sampleRate; mFrequency = (double)frequency; @@ -53,7 +53,7 @@ public class Oscillator /** * Sets or changes the frequency of this oscillator */ - public void setFrequency( int frequency ) + public void setFrequency( long frequency ) { mFrequency = (double)frequency; update();