diff --git a/.classpath b/.classpath index 495e4bc4..8022163d 100644 --- a/.classpath +++ b/.classpath @@ -24,6 +24,6 @@ - + diff --git a/src/alias/AliasList.java b/src/alias/AliasList.java index 1c97bd25..0f182e40 100644 --- a/src/alias/AliasList.java +++ b/src/alias/AliasList.java @@ -23,7 +23,6 @@ import java.util.HashMap; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSeeAlso; -import javax.xml.bind.annotation.XmlTransient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/alias/action/AliasActionManager.java b/src/alias/action/AliasActionManager.java index 007902e4..3451dbdb 100644 --- a/src/alias/action/AliasActionManager.java +++ b/src/alias/action/AliasActionManager.java @@ -2,11 +2,11 @@ package alias.action; import java.util.List; +import message.Message; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import message.Message; -import module.decode.p25.P25_LSMDecoder; import sample.Listener; import alias.Alias; import controller.ResourceManager; diff --git a/src/alias/action/clip/ClipActionEditor.java b/src/alias/action/clip/ClipActionEditor.java index 07bcceba..e07b4aee 100644 --- a/src/alias/action/clip/ClipActionEditor.java +++ b/src/alias/action/clip/ClipActionEditor.java @@ -42,7 +42,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import alias.action.RecurringAction.Interval; -import alias.action.script.ScriptActionEditor; public class ClipActionEditor extends JPanel implements ActionListener { @@ -52,7 +51,6 @@ public class ClipActionEditor extends JPanel implements ActionListener LoggerFactory.getLogger( ClipActionEditor.class ); private ClipActionNode mClipActionNode; - private JTextField mTextSiteID; private JComboBox mComboInterval; private JSpinner mSpinnerPeriod; private JTextField mTextFilePath; diff --git a/src/alias/esn/ESNEditor.java b/src/alias/esn/ESNEditor.java index c58f66a1..9f8db499 100644 --- a/src/alias/esn/ESNEditor.java +++ b/src/alias/esn/ESNEditor.java @@ -20,7 +20,6 @@ package alias.esn; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; diff --git a/src/alias/fleetsync/FleetsyncIDEditor.java b/src/alias/fleetsync/FleetsyncIDEditor.java index 8ce289dd..b0be3ddb 100644 --- a/src/alias/fleetsync/FleetsyncIDEditor.java +++ b/src/alias/fleetsync/FleetsyncIDEditor.java @@ -20,7 +20,6 @@ package alias.fleetsync; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; diff --git a/src/alias/mdc/MDC1200IDEditor.java b/src/alias/mdc/MDC1200IDEditor.java index 39c43f83..a0c53b77 100644 --- a/src/alias/mdc/MDC1200IDEditor.java +++ b/src/alias/mdc/MDC1200IDEditor.java @@ -20,7 +20,6 @@ package alias.mdc; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; diff --git a/src/alias/mobileID/MINEditor.java b/src/alias/mobileID/MINEditor.java index c64d6f4e..b24bf3ca 100644 --- a/src/alias/mobileID/MINEditor.java +++ b/src/alias/mobileID/MINEditor.java @@ -20,7 +20,6 @@ package alias.mobileID; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; diff --git a/src/alias/talkgroup/TalkgroupIDEditor.java b/src/alias/talkgroup/TalkgroupIDEditor.java index 6fb73d03..5c52855e 100644 --- a/src/alias/talkgroup/TalkgroupIDEditor.java +++ b/src/alias/talkgroup/TalkgroupIDEditor.java @@ -20,7 +20,6 @@ package alias.talkgroup; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; diff --git a/src/audio/AudioChannelPanel.java b/src/audio/AudioChannelPanel.java index 8197842a..7922db3f 100644 --- a/src/audio/AudioChannelPanel.java +++ b/src/audio/AudioChannelPanel.java @@ -347,6 +347,8 @@ public class AudioChannelPanel extends JPanel mToLabel.setForeground( mDetailsColor ); } break; + default: + break; } } } diff --git a/src/bits/MultiSyncPatternMatcher.java b/src/bits/MultiSyncPatternMatcher.java index 38f4188a..41f967ae 100644 --- a/src/bits/MultiSyncPatternMatcher.java +++ b/src/bits/MultiSyncPatternMatcher.java @@ -45,6 +45,11 @@ public class MultiSyncPatternMatcher mMask = (long)( ( Math.pow( 2, syncSize ) ) - 1 ); } + public void dispose() + { + mSyncProcessors.clear(); + } + /** * Processes two bits before checking sync processors for a match. */ diff --git a/src/bits/SoftSyncDetector.java b/src/bits/SoftSyncDetector.java index 15cbc858..c23ca430 100644 --- a/src/bits/SoftSyncDetector.java +++ b/src/bits/SoftSyncDetector.java @@ -18,6 +18,11 @@ public class SoftSyncDetector implements ISyncProcessor mPattern = pattern; mThreshold = threshold; } + + public void dispose() + { + mListener = null; + } @Override public void checkSync( long value ) diff --git a/src/controller/ControllerTreeCellRenderer.java b/src/controller/ControllerTreeCellRenderer.java index fc1ef590..42a791d4 100644 --- a/src/controller/ControllerTreeCellRenderer.java +++ b/src/controller/ControllerTreeCellRenderer.java @@ -19,7 +19,6 @@ package controller; import java.awt.Color; import java.awt.Component; -import java.awt.Font; import java.awt.Image; import java.util.HashMap; diff --git a/src/controller/ResourceManager.java b/src/controller/ResourceManager.java index 15e14016..1e186a7c 100644 --- a/src/controller/ResourceManager.java +++ b/src/controller/ResourceManager.java @@ -18,6 +18,7 @@ package controller; import map.MapService; +import module.log.EventLogManager; import playlist.PlaylistManager; import record.RecorderManager; import settings.SettingsManager; @@ -26,7 +27,6 @@ import source.recording.RecordingSourceManager; import source.tuner.TunerManager; import audio.AudioManager; import controller.channel.ChannelManager; -import eventlog.EventLogManager; /** * Manager for system wide resources diff --git a/src/controller/ThreadPoolManager.java b/src/controller/ThreadPoolManager.java index b7d5bf41..8915ffbe 100644 --- a/src/controller/ThreadPoolManager.java +++ b/src/controller/ThreadPoolManager.java @@ -19,14 +19,10 @@ package controller; import java.util.HashMap; import java.util.concurrent.Executors; -import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/controller/channel/Channel.java b/src/controller/channel/Channel.java index 08af502d..398b8092 100644 --- a/src/controller/channel/Channel.java +++ b/src/controller/channel/Channel.java @@ -40,6 +40,8 @@ import module.decode.config.DecodeConfiguration; import module.decode.event.CallEventModel; import module.decode.event.MessageActivityModel; import module.decode.state.ChannelState; +import module.log.MessageEventLogger; +import module.log.config.EventLogConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,8 +63,6 @@ import controller.channel.ChannelEvent.Event; import controller.config.Configuration; import controller.site.Site; import controller.system.System; -import eventlog.MessageEventLogger; -import eventlog.config.EventLogConfiguration; import filter.FilterSet; @XmlSeeAlso( { Configuration.class } ) @@ -739,10 +739,34 @@ public class Channel extends Configuration setupSource(); - //TODO: Add logging + setupLogging(); //TODO: Add recorder(s) } + private void setupLogging() + { + mLog.debug( "Setting up logging ..." ); + if( mProcessingChain != null ) + { + StringBuilder sb = new StringBuilder(); + sb.append( mSystem ); + sb.append( "_" ); + sb.append( mSite ); + sb.append( "_" ); + sb.append( mName ); + + List loggers = mResourceManager.getEventLogManager() + .getLoggers( mEventLogConfiguration, sb.toString() ); + + mLog.debug( "Created [" + loggers.size() + "] loggers for [" + sb.toString() + "]" ); + + if( !loggers.isEmpty() ) + { + mProcessingChain.addModules( loggers ); + } + } + } + private void setupProcessingChain() { if( mProcessingChain == null ) @@ -764,7 +788,7 @@ public class Channel extends Configuration mProcessingChain.addModules( modules ); /* Get message filters for the set of processing modules */ - FilterSet messageFilter = DecoderFactory.getMessageFilters( modules ); + FilterSet messageFilter = DecoderFactory.getMessageFilters( modules ); /* Setup the message activity model and add message listeners */ mMessageActivityModel = new MessageActivityModel( messageFilter ); diff --git a/src/controller/channel/ChannelEditor.java b/src/controller/channel/ChannelEditor.java index 7f3d5bd0..b50c47f1 100644 --- a/src/controller/channel/ChannelEditor.java +++ b/src/controller/channel/ChannelEditor.java @@ -37,6 +37,7 @@ import javax.swing.tree.TreePath; import module.decode.AuxDecodeComponentEditor; import module.decode.DecodeComponentEditor; +import module.log.EventLogComponentEditor; import net.miginfocom.swing.MigLayout; import org.slf4j.Logger; @@ -49,7 +50,6 @@ import alias.AliasList; import com.jidesoft.swing.JideTabbedPane; import controller.Editor; -import eventlog.EventLogComponentEditor; public class ChannelEditor extends Editor implements ActionListener { diff --git a/src/controller/channel/ChannelManager.java b/src/controller/channel/ChannelManager.java index 221b1253..c6aaf30a 100644 --- a/src/controller/channel/ChannelManager.java +++ b/src/controller/channel/ChannelManager.java @@ -17,16 +17,15 @@ ******************************************************************************/ package controller.channel; -import gui.SDRTrunk; - import java.util.ArrayList; +import message.Message; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import alias.action.AliasActionManager; -import message.Message; import sample.Listener; +import alias.action.AliasActionManager; import controller.ResourceManager; public class ChannelManager implements ChannelEventListener diff --git a/src/controller/channel/ChannelSelectionListener.java b/src/controller/channel/ChannelSelectionListener.java deleted file mode 100644 index 5bd1a8c9..00000000 --- a/src/controller/channel/ChannelSelectionListener.java +++ /dev/null @@ -1,25 +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 controller.channel; - -import module.ProcessingChainOld; - -public interface ChannelSelectionListener -{ - public void channelSelected( ProcessingChainOld channel ); -} diff --git a/src/controller/config/Configuration.java b/src/controller/config/Configuration.java index 8a46d301..53bc1929 100644 --- a/src/controller/config/Configuration.java +++ b/src/controller/config/Configuration.java @@ -22,9 +22,9 @@ import javax.xml.bind.annotation.XmlSeeAlso; import module.decode.config.AuxDecodeConfiguration; import module.decode.config.DecodeConfiguration; +import module.log.config.EventLogConfiguration; import record.config.RecordConfiguration; import source.config.SourceConfiguration; -import eventlog.config.EventLogConfiguration; @XmlSeeAlso( { AuxDecodeConfiguration.class, DecodeConfiguration.class, diff --git a/src/controller/system/SystemNode.java b/src/controller/system/SystemNode.java index e5f2e13f..a9c4e3b9 100644 --- a/src/controller/system/SystemNode.java +++ b/src/controller/system/SystemNode.java @@ -30,7 +30,6 @@ import javax.swing.JSeparator; import javax.swing.tree.DefaultMutableTreeNode; import controller.ConfigurableNode; -import controller.channel.ChannelNode; import controller.site.Site; import controller.site.SiteNode; diff --git a/src/dsp/filter/FilterFactory.java b/src/dsp/filter/FilterFactory.java index 5f35da33..8f6b0065 100644 --- a/src/dsp/filter/FilterFactory.java +++ b/src/dsp/filter/FilterFactory.java @@ -26,7 +26,6 @@ import java.util.Arrays; import java.util.Set; import java.util.TreeSet; -import org.jtransforms.fft.DoubleFFT_1D; import org.jtransforms.fft.FloatFFT_1D; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/dsp/filter/PolyphaseFIRInterpolatingFilter.java b/src/dsp/filter/PolyphaseFIRInterpolatingFilter.java index 0a0829ad..00c76261 100644 --- a/src/dsp/filter/PolyphaseFIRInterpolatingFilter.java +++ b/src/dsp/filter/PolyphaseFIRInterpolatingFilter.java @@ -1,7 +1,5 @@ package dsp.filter; -import java.util.Arrays; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/dsp/fm/FMDemodulator_CB.java b/src/dsp/fm/FMDemodulator_CB.java index 30ae35b0..55b58c6e 100644 --- a/src/dsp/fm/FMDemodulator_CB.java +++ b/src/dsp/fm/FMDemodulator_CB.java @@ -20,7 +20,6 @@ package dsp.fm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import record.wave.ComplexWaveRecorder; import sample.Listener; import sample.complex.ComplexBuffer; import sample.real.RateCounter_RB; diff --git a/src/dsp/gain/ComplexFeedForwardGainControl.java b/src/dsp/gain/ComplexFeedForwardGainControl.java index 89d3f057..b5a8c033 100644 --- a/src/dsp/gain/ComplexFeedForwardGainControl.java +++ b/src/dsp/gain/ComplexFeedForwardGainControl.java @@ -3,7 +3,6 @@ package dsp.gain; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sample.Listener; import sample.complex.Complex; import sample.complex.ComplexSampleListener; import buffer.FloatCircularBuffer; @@ -62,6 +61,11 @@ public class ComplexFeedForwardGainControl implements ComplexSampleListener { mEnvelopeHistory = new FloatCircularBuffer( window ); } + + public void dispose() + { + mListener = null; + } @Override public void receive( float inphase, float quadrature ) diff --git a/src/dsp/gain/DirectGainControl.java b/src/dsp/gain/DirectGainControl.java index 72ed0f6e..97fec10e 100644 --- a/src/dsp/gain/DirectGainControl.java +++ b/src/dsp/gain/DirectGainControl.java @@ -57,6 +57,11 @@ public class DirectGainControl implements GainController, RealSampleListener mMaximum = maximum; mIncrement = increment; } + + public void dispose() + { + mListener = null; + } @Override public void receive( float sample ) diff --git a/src/dsp/psk/CQPSKDemodulator.java b/src/dsp/psk/CQPSKDemodulator.java index c968c685..5fe83468 100644 --- a/src/dsp/psk/CQPSKDemodulator.java +++ b/src/dsp/psk/CQPSKDemodulator.java @@ -84,6 +84,12 @@ public class CQPSKDemodulator implements Instrumentable, ComplexSampleListener { } + public void dispose() + { + mSymbolListener = null; + mFrequencyChangeListener = null; + } + public void setSymbolListener( Listener listener ) { mSymbolListener = listener; diff --git a/src/dsp/psk/CQPSKDemodulator2.java b/src/dsp/psk/CQPSKDemodulator2.java index def7d62c..c242ef34 100644 --- a/src/dsp/psk/CQPSKDemodulator2.java +++ b/src/dsp/psk/CQPSKDemodulator2.java @@ -127,6 +127,7 @@ public class CQPSKDemodulator2 implements Instrumentable, ComplexSampleListener, * Constrains timing error to +/- the maximum value and corrects any * floating point invalid numbers */ + @SuppressWarnings("unused") private float normalize( float error, float maximum ) { if( Float.isNaN( error ) ) diff --git a/src/edac/BCH_63_16_11.java b/src/edac/BCH_63_16_11.java index f7e925af..6807bfca 100644 --- a/src/edac/BCH_63_16_11.java +++ b/src/edac/BCH_63_16_11.java @@ -1,7 +1,5 @@ package edac; -import java.util.Arrays; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/gui/SDRTrunk.java b/src/gui/SDRTrunk.java index d4104990..d4a55a49 100644 --- a/src/gui/SDRTrunk.java +++ b/src/gui/SDRTrunk.java @@ -27,16 +27,12 @@ import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Iterator; -import java.util.ServiceLoader; import javax.imageio.ImageIO; -import javax.sound.sampled.spi.FormatConversionProvider; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; diff --git a/src/instrument/tap/stream/ComplexSampleTap.java b/src/instrument/tap/stream/ComplexSampleTap.java index 9b7ee035..a13b0c33 100644 --- a/src/instrument/tap/stream/ComplexSampleTap.java +++ b/src/instrument/tap/stream/ComplexSampleTap.java @@ -19,7 +19,6 @@ package instrument.tap.stream; import instrument.tap.TapListener; import instrument.tap.TapType; -import sample.Listener; import sample.complex.Complex; import sample.complex.ComplexSampleListener; diff --git a/src/instrument/tap/stream/EyeDiagramDataTap.java b/src/instrument/tap/stream/EyeDiagramDataTap.java index 4f446746..2424e9df 100644 --- a/src/instrument/tap/stream/EyeDiagramDataTap.java +++ b/src/instrument/tap/stream/EyeDiagramDataTap.java @@ -17,13 +17,12 @@ ******************************************************************************/ package instrument.tap.stream; -import module.decode.p25.P25_LSMDecoder; +import instrument.tap.TapListener; +import instrument.tap.TapType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import instrument.tap.TapListener; -import instrument.tap.TapType; import sample.Listener; public class EyeDiagramDataTap extends StreamTap implements Listener diff --git a/src/instrument/tap/stream/EyeDiagramDataTapPanel.java b/src/instrument/tap/stream/EyeDiagramDataTapPanel.java index b4cbd84d..c715c7b1 100644 --- a/src/instrument/tap/stream/EyeDiagramDataTapPanel.java +++ b/src/instrument/tap/stream/EyeDiagramDataTapPanel.java @@ -20,7 +20,6 @@ package instrument.tap.stream; import instrument.gui.SampleModel; import instrument.tap.TapViewPanel; -import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; diff --git a/src/instrument/tap/stream/FloatTapPhaseViewPanel.java b/src/instrument/tap/stream/FloatTapPhaseViewPanel.java index 33044e93..5c942fd9 100644 --- a/src/instrument/tap/stream/FloatTapPhaseViewPanel.java +++ b/src/instrument/tap/stream/FloatTapPhaseViewPanel.java @@ -17,7 +17,6 @@ ******************************************************************************/ package instrument.tap.stream; -import gui.SDRTrunk; import instrument.gui.SampleModel; import instrument.tap.Tap; import instrument.tap.TapViewPanel; diff --git a/src/map/IconManager.java b/src/map/IconManager.java index 517429cf..220ca034 100644 --- a/src/map/IconManager.java +++ b/src/map/IconManager.java @@ -17,8 +17,6 @@ ******************************************************************************/ package map; -import gui.SDRTrunk; - import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; @@ -45,10 +43,11 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.filechooser.FileFilter; +import net.miginfocom.swing.MigLayout; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import net.miginfocom.swing.MigLayout; import settings.Setting; import settings.SettingChangeListener; import controller.ResourceManager; @@ -420,6 +419,8 @@ public class IconManager extends JFrame JOptionPane.ERROR_MESSAGE ); } + break; + default: break; } diff --git a/src/module/ProcessingChain.java b/src/module/ProcessingChain.java index c11e85d0..a25c6540 100644 --- a/src/module/ProcessingChain.java +++ b/src/module/ProcessingChain.java @@ -24,10 +24,12 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import message.IMessageListener; import message.IMessageProvider; import message.Message; import module.decode.Decoder; import module.decode.event.CallEvent; +import module.decode.event.ICallEventListener; import module.decode.event.ICallEventProvider; import module.decode.state.DecoderStateEvent; import module.decode.state.DecoderStateEvent.Event; @@ -82,7 +84,7 @@ import controller.channel.IChannelEventProvider; * 5) Invoke the stop() method to stop processing. * * Optional: if you want to reuse the processing chain with a new sample source, - * invoke the following method sequence: stop(), reset(), setSource(), start() + * invoke the following method sequence: stop(), setSource(), start() */ public class ProcessingChain implements IChannelEventListener { @@ -271,11 +273,11 @@ public class ProcessingChain implements IChannelEventListener { mModules.add( module ); - /* Listeners */ - if( module instanceof IMetadataListener ) + /* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Listeners <<<<<<<<<<<<<<<<<<<<<<<<<<< */ + if( module instanceof ICallEventListener ) { - mMetadataBroadcaster.addListener( - ((IMetadataListener)module).getMetadataListener() ); + mCallEventBroadcaster.addListener( + ((ICallEventListener)module).getCallEventListener() ); } if( module instanceof IChannelEventListener ) @@ -295,6 +297,18 @@ public class ProcessingChain implements IChannelEventListener mDecoderStateEventBroadcaster.addListener( ((IDecoderStateEventListener)module).getDecoderStateListener() ); } + + if( module instanceof IMessageListener ) + { + mMessageBroadcaster.addListener( + ((IMessageListener)module).getMessageListener() ); + } + + if( module instanceof IMetadataListener ) + { + mMetadataBroadcaster.addListener( + ((IMetadataListener)module).getMetadataListener() ); + } if( module instanceof IRealBufferListener ) { @@ -308,13 +322,7 @@ public class ProcessingChain implements IChannelEventListener ((ISquelchStateListener)module).getSquelchStateListener() ); } - /* Providers */ - if( module instanceof IMetadataProvider ) - { - ((IMetadataProvider)module).setMetadataListener( - mMetadataBroadcaster ); - } - + /* >>>>>>>>>>>>>>>>>>> Providers <<<<<<<<<<<<<<<<<<<<<<<<< */ if( module instanceof IAudioPacketProvider ) { ((IAudioPacketProvider)module).setAudioPacketListener( @@ -348,6 +356,12 @@ public class ProcessingChain implements IChannelEventListener ((IMessageProvider)module).addMessageListener( mMessageBroadcaster ); } + if( module instanceof IMetadataProvider ) + { + ((IMetadataProvider)module).setMetadataListener( + mMetadataBroadcaster ); + } + if( module instanceof IRealBufferProvider ) { ((IRealBufferProvider)module).setRealBufferListener( mRealBufferBroadcaster ); diff --git a/src/module/ProcessingChainOld.java b/src/module/ProcessingChainOld.java deleted file mode 100644 index 2d97275a..00000000 --- a/src/module/ProcessingChainOld.java +++ /dev/null @@ -1,747 +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 module; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.LinkedTransferQueue; -import java.util.concurrent.RejectedExecutionException; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; - -import message.Message; -import module.decode.Decoder; -import module.decode.state.ChannelState; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import record.Recorder; -import record.wave.ComplexWaveRecorder; -import record.wave.FloatWaveRecorder; -import sample.Broadcaster; -import sample.Listener; -import sample.complex.Complex; -import sample.real.RealBuffer; -import sample.real.RealSampleListener; -import source.ComplexSource; -import source.RealSource; -import source.Source; -import source.config.SourceConfigMixer; -import source.tuner.Tuner; -import source.tuner.TunerChannelSource; -import source.tuner.frequency.AutomaticFrequencyControl_R; -import alias.AliasList; -import controller.ResourceManager; -import controller.ThreadPoolManager.ThreadType; -import controller.channel.Channel; -import controller.channel.Channel.ChannelType; -import eventlog.EventLogType; -import eventlog.EventLogger; - -/** - * A channel has all of the pieces needed to wire together a source, decoder, - * event logger and recorder and be started and stopped. - */ -public class ProcessingChainOld implements Listener -{ - private final static Logger mLog = LoggerFactory.getLogger( ProcessingChainOld.class ); - - protected AtomicBoolean mRunning = new AtomicBoolean(); - protected Channel mChannel; - protected Source mSource; - protected Decoder mDecoder; - protected List mRecorders = new ArrayList(); - protected ArrayList mEventLoggers = new ArrayList(); - protected AutomaticFrequencyControl_R mAFC; - protected ChannelState mChannelState; - protected ResourceManager mResourceManager; - private ScheduledFuture mSampleProcessorTask; - private AliasList mAliasList; - - private ComplexSampleReceiver mComplexReceiver = new ComplexSampleReceiver(); - private LinkedTransferQueue> mComplexQueue = - new LinkedTransferQueue>(); - - private RealSampleReceiver mRealReceiver = new RealSampleReceiver(); - private LinkedTransferQueue mRealQueue = - new LinkedTransferQueue(); - - protected Broadcaster mBroadcaster = new Broadcaster(); - - public ProcessingChainOld( Channel channel, ResourceManager resourceManager ) - { - mChannel = channel; - mResourceManager = resourceManager; - - if( mResourceManager != null ) - { - mAliasList = mResourceManager.getPlaylistManager() - .getPlayist().getAliasDirectory().getAliasList( - mChannel.getAliasListName() ); - } - } - -// public IAudioOutput getAudioOutput() -// { -// if( mDecoder != null ) -// { -// return mDecoder.getAudioOutput(); -// } -// -// return null; -// } - - public Listener> getComplexReceiver() - { - return mComplexReceiver; - } - - public Listener getRealReceiver() - { - return (Listener)mRealReceiver; - } - - public String toString() - { - return mChannel.getName(); - } - - public AliasList getAliasList() - { - return mAliasList; - } - - public void dispose() - { - if( mSampleProcessorTask != null ) - { - mResourceManager.getThreadPoolManager().cancel( mSampleProcessorTask ); - } - - if( mChannelState != null ) - { - mChannelState.dispose(); - } - - mChannelState = null; - - if( mDecoder != null ) - { - mDecoder.dispose(); - } - - mBroadcaster.dispose(); - mEventLoggers.clear(); - mRecorders.clear(); - - mResourceManager = null; - } - - public ResourceManager getResourceManager() - { - return mResourceManager; - } - - public void start() - { - if( !mRunning.get() && mChannel.getEnabled() ) - { - updateSource(); - - updateDecoder(); - - updateEventLogging(); - - updateRecording(); - - mRunning.set( true ); - } - else - { - mLog.info( getLogPrefix() + "start() invoked, but processing chain is " - + "already started" ); - } - } - - /** - * Performs closeout operations to prepare for channel deletion - */ - public void stop() - { - if( mRunning.get() ) - { - updateSource(); - - updateDecoder(); - - updateRecording(); - - /* Flush call events to the logger */ - if( getChannel().getChannelType() == ChannelType.STANDARD ) - { -// getChannelState().getCallEventModel().flush(); - } - - updateEventLogging(); - - mRunning.set( false ); - } - else - { - mLog.info( getLogPrefix() + "stop() invoked, but processing chain was " - + "already stopped" ); - } - } - - private String getLogPrefix() - { - return "Channel [" + mChannel.getName() + "] - "; - } - - private void releaseSource() - { - if( mSource != null ) - { - if( mSource instanceof ComplexSource ) - { -// ((ComplexSource)mSource).removeAttributeListener( this.getComplexReceiver() ); - } - else if( mSource instanceof RealSource ) - { - ((RealSource)mSource) - .removeListener( this.getRealReceiver() ); - } - - if( mSampleProcessorTask != null ) - { - mResourceManager.getThreadPoolManager().cancel( mSampleProcessorTask ); - } - - mSource.dispose(); - - mSource = null; - } - } - - private void obtainSource() - { - if( mSource != null ) - { - releaseSource(); - } - - if( mChannel.getEnabled() && mResourceManager != null ) - { -// try -// { -// mSource = mResourceManager.getSourceManager() -// .getSource( ProcessingChainOld.this ); -// } -// catch ( SourceException e ) -// { -// mLog.error( "Couldn't obtain source for processing chain [" + -// toString() + "]", e ); -// -// mSource = null; -// } - - if( mSource != null ) - { - if( mSource instanceof ComplexSource ) - { - try - { - mSampleProcessorTask = - mResourceManager.getThreadPoolManager() - .scheduleFixedRate( ThreadType.DECODER, - new ComplexProcessor(), - 50, TimeUnit.MILLISECONDS ); - -// ((ComplexSource)mSource) -// .setListener( this.getComplexReceiver() ); - } - catch( RejectedExecutionException ree ) - { - mLog.error( getLogPrefix() + "ProcessingChain - " - + "error scheduling complex sample processing " - + "thread - " + ree.getLocalizedMessage() ); - - mSource.dispose(); - } - } - else if( mSource instanceof RealSource ) - { - try - { - mSampleProcessorTask = - mResourceManager.getThreadPoolManager() - .scheduleFixedRate( ThreadType.DECODER, - new RealProcessor(), - 50, TimeUnit.MILLISECONDS ); - - ((RealSource)mSource) - .setListener( this.getRealReceiver() ); - } - catch( RejectedExecutionException ree ) - { - mLog.error( getLogPrefix() + "ProcessingChain - " - + "error scheduling float sample processing " - + "thread", ree ); - - mSource.dispose(); - } - } - } - } - } - - public void updateSource() - { - /* Cleanup existing source */ - releaseSource(); - - /* Get a new source if needed and start the sample processor thread */ - obtainSource(); - } - - public void updateDecoder() - { - if( mChannel.getEnabled() ) - { - if( mDecoder != null ) - { - mDecoder.init(); - } - else - { -// /* Setup the channel state */ -// mChannelState = DecoderFactory.getChannelStateNew( this, mAliasList ); - - if( mSource == null ) - { -// mChannelState.setState( State.NO_TUNER ); - } - else - { -// mDecoder = DecoderFactory. -// getDecoder( this, mSource.getSampleType(), mAliasList ); - - if( mDecoder != null ) - { - /* Register to receive decoded messages and auxiliary messages */ - mDecoder.addMessageListener( ProcessingChainOld.this ); - - /* Establish two-way communication between the frequency - * correction controller and the tuner channel source */ -// if( mSource instanceof TunerChannelSource && -// mDecoder.hasFrequencyCorrectionControl() ) -// { -// TunerChannelSource tcs = (TunerChannelSource)mSource; -// -// FrequencyCorrectionControl fcc = -// mDecoder.getFrequencyCorrectionController(); -// -// if( fcc != null ) -// { -// tcs.addListener( fcc ); -// fcc.setListener( tcs ); -// } - } - - /* Register audio output to be controlled by the channel state */ -// mChannelState.addListener( (SquelchListener)mDecoder.getAudioOutput() ); -// mChannelState.setListener( (IAudioTypeListener)mDecoder.getAudioOutput() ); - } - } - } - } -// } - - /** - * Starts, stops or changes event logging - */ - public void updateEventLogging() - { - /* Shutdown and remove existing event loggers */ - if( mEventLoggers != null ) - { - for( EventLogger logger: mEventLoggers ) - { - logger.stop(); - } - - mEventLoggers.clear(); - } - - /* Construct event loggers and add as message listeners */ - if( mChannel.getEnabled() && - mResourceManager != null ) - { - //Get the event loggers - ArrayList types = getChannel() - .getEventLogConfiguration().getLoggers(); - - for( EventLogType type: types ) - { - EventLogger logger; - - if( type == EventLogType.CALL_EVENT ) - { - logger = mResourceManager.getEventLogManager() - .getLogger( this, type ); - -// getChannelState().getCallEventModel() -// .addListener( (Listener)logger ); - } - else - { - logger = mResourceManager.getEventLogManager() - .getLogger( this, type ); - - addListener( (Listener)logger ); - } - - logger.start(); - - mEventLoggers.add( logger ); - } - } - } - - /** - * Starts, stops or changes data recording - */ - public void updateRecording() - { - /* Remove any existing recorders */ - if( mRecorders != null ) - { - for( Recorder recorder: mRecorders ) - { - if( recorder != null ) - { - try - { - recorder.stop(); - } - catch ( IOException ioe ) - { - mLog.error( getLogPrefix() + "Couldn't stop recorder [" + - recorder.getFileName() + "]", ioe ); - } - } - } - } - - /* Start any new recorders */ - if( mChannel.getEnabled() && - mResourceManager != null && - mDecoder != null ) - { - mRecorders = mResourceManager.getRecorderManager() - .getRecorder( this ); - - /* Iterate any returned recorders and start/add them */ - for( Recorder recorder: mRecorders ) - { - try - { - recorder.start(); - - if( recorder instanceof FloatWaveRecorder ) - { - mLog.info( getLogPrefix() + "- started audio recording [" + - recorder.getFileName() + "]" ); - -// mDecoder.addRealSampleListener( (FloatWaveRecorder)recorder ); - } - else if( recorder instanceof ComplexWaveRecorder ) - { - mLog.info( getLogPrefix() + "- started baseband recording [" + - recorder.getFileName() + "]" ); - -// mDecoder.addComplexListener( (ComplexWaveRecorder )recorder ); - } - - } - catch ( IOException e ) - { - mLog.error( getLogPrefix() + "Unable to start recorder [" + - recorder.getFileName() + "]" ); - } - } - } - } - - public Channel getChannel() - { - return mChannel; - } - - public Source getSource() - { - return mSource; - } - - /** - * Returns the tuner that is sourcing this channel, or null if it's being - * sourced from some other source - */ - public Tuner getTuner() - { - Tuner retVal = null; - - if( mSource instanceof TunerChannelSource ) - { - retVal = ((TunerChannelSource)mSource).getTuner(); - } - - return retVal; - } - - public Decoder getDecoder() - { - return mDecoder; - } - - public ChannelState getChannelState() - { - return mChannelState; - } - - public boolean isRunning() - { - return mRunning.get(); - } - - public boolean isProcessing() - { - return isRunning() && mSource != null; - } - - private source.mixer.MixerChannel getMixerChannel() - { - source.mixer.MixerChannel retVal = null; - - if( mChannel.getSourceConfiguration() instanceof SourceConfigMixer ) - { - SourceConfigMixer mixer = (SourceConfigMixer)mChannel.getSourceConfiguration(); - - retVal = mixer.getChannel(); - } - - return retVal; - } - - @Override - public void receive( Message message ) - { - if( message.isValid() ) - { - mBroadcaster.receive( message ); - } - - } - - /** - * Adds the listener to receive demodulated samples from the decoder - */ - public void addRealListener( RealSampleListener listener ) - { - if( mDecoder != null ) - { -// mDecoder.addRealSampleListener( listener ); - } - } - - /** - * Removes the listener from receiving demodulated samples from the decoder - */ - public void removeRealListener( RealSampleListener listener ) - { - if( mDecoder != null ) - { -// mDecoder.removeRealSampleListener( listener ); - } - } - - /** - * Adds a listener to receive a copy of complex (I/Q) baseband samples - * received by this processing chain - */ - public void addComplexListener( Listener listener ) - { - if( mDecoder != null ) - { -// mDecoder.addComplexListener( listener ); - } - else - { - mLog.error( getLogPrefix() + "attempt to add a complex sample " - + "listener, but the decoder is null" ); - } - } - - /** - * Removes the listener from receiving a copy of complex (I/Q) baseband - * samples received by this processing chain - */ - public void removeComplexListener( Listener listener ) - { - if( mDecoder != null ) - { -// mDecoder.removeComplexListener( listener ); - } - else - { - mLog.error( getLogPrefix() + "attempt to remove a complex sample " - + "listener, but the decoder is null" ); - } - } - - /** - * Registers the listener to receive messages - */ - public void addListener( Listener listener ) - { - mBroadcaster.addListener( listener ); - } - - /** - * Registers all listeners in the list to receive messages - */ - public void addListeners( List> listeners ) - { - for( Listener listener: listeners ) - { - addListener( listener ); - } - } - - /** - * Removes the listener from receiving messages - */ - public void removeListener( Listener listener ) - { - mBroadcaster.removeListener( listener ); - } - - /** - * Manages the real sample queue and distributes samples to the decoder. - */ - private class RealProcessor implements Runnable - { - @Override - public void run() - { - try - { - List sampleBuffers = new ArrayList(); - - mRealQueue.drainTo( sampleBuffers, 4 ); - - for( RealBuffer sampleBuffer: sampleBuffers ) - { - if( mDecoder != null ) - { - float[] samples = sampleBuffer.getSamples(); - - for( float sample: samples ) - { -// mDecoder.getRealReceiver().receive( sample ); - } - } - - sampleBuffer.dispose(); - } - - sampleBuffers.clear(); - } - catch( Exception e ) - { - mLog.error( "error during processing chain real processor run", e ); - } - } - } - - /** - * Manages the complex sample queue and distributes samples to the decoder. - */ - private class ComplexProcessor implements Runnable - { - @Override - public void run() - { - try - { - List> sampleSets = - new ArrayList>(); - - mComplexQueue.drainTo( sampleSets, 16 ); - - for( List samples: sampleSets ) - { - for( Complex sample: samples ) - { - if( sample != null && mDecoder != null ) - { -// mDecoder.getComplexReceiver().receive( sample ); - } - } - - samples.clear(); - } - - sampleSets.clear(); - } - catch( Exception e ) - { - mLog.error( "error during processing chain complex processor run", e ); - } - } - } - - /** - * Internal listener to receive complex (I/Q) baseband samples. Places - * received samples into the queue managed by the ComplexProcessor. - */ - public class ComplexSampleReceiver implements Listener> - { - @Override - public void receive( List samples ) - { - mComplexQueue.add( samples ); - } - } - - /** - * Internal listener to receive real(ie demodulated) samples. Places - * received samples into the queue managed by the RealProcessor - */ - public class RealSampleReceiver implements Listener - { - @Override - public void receive( RealBuffer samples ) - { - mRealQueue.add( samples ); - } - } -} diff --git a/src/module/decode/AuxDecodeComponentEditor.java b/src/module/decode/AuxDecodeComponentEditor.java index 209018f5..dd55ee59 100644 --- a/src/module/decode/AuxDecodeComponentEditor.java +++ b/src/module/decode/AuxDecodeComponentEditor.java @@ -25,10 +25,8 @@ import javax.swing.JCheckBox; import javax.swing.SwingUtilities; import module.decode.config.AuxDecodeConfiguration; -import controller.Editor; import controller.channel.AbstractChannelEditor; import controller.channel.ChannelNode; -import controller.channel.ChannelValidationException; public class AuxDecodeComponentEditor extends AbstractChannelEditor { diff --git a/src/module/decode/DecodeEditor.java b/src/module/decode/DecodeEditor.java index a3e37865..dcebf156 100644 --- a/src/module/decode/DecodeEditor.java +++ b/src/module/decode/DecodeEditor.java @@ -29,11 +29,9 @@ import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import net.miginfocom.swing.MigLayout; import module.decode.config.DecodeConfiguration; +import net.miginfocom.swing.MigLayout; import controller.Editor; -import controller.channel.Channel; -import controller.channel.ChannelValidationException; public class DecodeEditor extends Editor { diff --git a/src/module/decode/DecoderFactory.java b/src/module/decode/DecoderFactory.java index a02f4a99..28a092f3 100644 --- a/src/module/decode/DecoderFactory.java +++ b/src/module/decode/DecoderFactory.java @@ -258,6 +258,9 @@ public class DecoderFactory case TAIT_1200: decoders.add( new Tait1200Decoder( aliasList ) ); break; + default: + throw new IllegalArgumentException( "Unrecognized auxiliary " + + "decoder type [" + auxDecoder + "]" ); } } diff --git a/src/module/decode/event/ActivitySummaryFrame.java b/src/module/decode/event/ActivitySummaryFrame.java index 18188d2a..2530cfc0 100644 --- a/src/module/decode/event/ActivitySummaryFrame.java +++ b/src/module/decode/event/ActivitySummaryFrame.java @@ -21,7 +21,6 @@ import java.awt.Component; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.lang.reflect.InvocationTargetException; import javax.swing.JButton; import javax.swing.JFrame; diff --git a/src/module/decode/event/ICallEventListener.java b/src/module/decode/event/ICallEventListener.java new file mode 100644 index 00000000..f1727e2c --- /dev/null +++ b/src/module/decode/event/ICallEventListener.java @@ -0,0 +1,8 @@ +package module.decode.event; + +import sample.Listener; + +public interface ICallEventListener +{ + public Listener getCallEventListener(); +} diff --git a/src/module/decode/fleetsync1/Fleetsync1Message.java b/src/module/decode/fleetsync1/Fleetsync1Message.java index 73694103..c3a898f7 100644 --- a/src/module/decode/fleetsync1/Fleetsync1Message.java +++ b/src/module/decode/fleetsync1/Fleetsync1Message.java @@ -19,7 +19,6 @@ package module.decode.fleetsync1; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Collections; import java.util.Date; import java.util.List; diff --git a/src/module/decode/fleetsync2/FleetsyncCallEvent.java b/src/module/decode/fleetsync2/FleetsyncCallEvent.java index 4b7b2121..706656c2 100644 --- a/src/module/decode/fleetsync2/FleetsyncCallEvent.java +++ b/src/module/decode/fleetsync2/FleetsyncCallEvent.java @@ -167,6 +167,8 @@ public class FleetsyncCallEvent extends CallEvent sbDetails.append( message.getStatusAlias().getName() ); } break; + default: + break; } if( type == CallEventType.ID_ANI || diff --git a/src/module/decode/lj1200/LJ1200Message.java b/src/module/decode/lj1200/LJ1200Message.java index d174e2f2..687aee6d 100644 --- a/src/module/decode/lj1200/LJ1200Message.java +++ b/src/module/decode/lj1200/LJ1200Message.java @@ -85,6 +85,8 @@ public class LJ1200Message extends Message case PASSED: mLog.debug( "PASS:" + message.toString() ); break; + default: + break; } } diff --git a/src/module/decode/lj1200/LJ1200TransponderMessage.java b/src/module/decode/lj1200/LJ1200TransponderMessage.java index fecfc8fd..5400cabc 100644 --- a/src/module/decode/lj1200/LJ1200TransponderMessage.java +++ b/src/module/decode/lj1200/LJ1200TransponderMessage.java @@ -29,7 +29,6 @@ import alias.Alias; import alias.AliasList; import bits.BinaryMessage; import edac.CRC; -import edac.CRCLJ; public class LJ1200TransponderMessage extends Message { @@ -66,6 +65,8 @@ public class LJ1200TransponderMessage extends Message case UNKNOWN: mLog.debug( "UNKNOWN:" + message.toString() ); break; + default: + break; } } diff --git a/src/module/decode/ltrnet/LTRNetDecoderPanel.java b/src/module/decode/ltrnet/LTRNetDecoderPanel.java index 3f4e4a8d..3416a10e 100644 --- a/src/module/decode/ltrnet/LTRNetDecoderPanel.java +++ b/src/module/decode/ltrnet/LTRNetDecoderPanel.java @@ -160,6 +160,8 @@ public class LTRNetDecoderPanel extends DecoderPanel mDescription.setForeground( mColorLabelDecoder ); } break; + default: + break; } } } diff --git a/src/module/decode/ltrnet/LTRNetDecoderState.java b/src/module/decode/ltrnet/LTRNetDecoderState.java index cecfb04d..e5d1463f 100644 --- a/src/module/decode/ltrnet/LTRNetDecoderState.java +++ b/src/module/decode/ltrnet/LTRNetDecoderState.java @@ -23,7 +23,6 @@ import java.util.Iterator; import java.util.TreeSet; import message.Message; -import module.decode.event.CallEvent; import module.decode.event.CallEvent.CallEventType; import module.decode.state.ChangedAttribute; import module.decode.state.DecoderState; diff --git a/src/module/decode/ltrnet/LTRNetEditor.java b/src/module/decode/ltrnet/LTRNetEditor.java index f35bb2ce..7d7d920e 100644 --- a/src/module/decode/ltrnet/LTRNetEditor.java +++ b/src/module/decode/ltrnet/LTRNetEditor.java @@ -21,7 +21,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultComboBoxModel; -import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; diff --git a/src/module/decode/ltrstandard/LTRStandardDecoder.java b/src/module/decode/ltrstandard/LTRStandardDecoder.java index 25620a4c..987af45b 100644 --- a/src/module/decode/ltrstandard/LTRStandardDecoder.java +++ b/src/module/decode/ltrstandard/LTRStandardDecoder.java @@ -17,13 +17,12 @@ ******************************************************************************/ package module.decode.ltrstandard; -import sample.Listener; -import sample.real.IRealBufferListener; -import sample.real.RealBuffer; import message.MessageDirection; import module.decode.Decoder; import module.decode.DecoderType; -import module.decode.config.DecodeConfiguration; +import sample.Listener; +import sample.real.IRealBufferListener; +import sample.real.RealBuffer; import alias.AliasList; import bits.MessageFramer; import bits.SyncPattern; diff --git a/src/module/decode/mdc1200/MDCCallEvent.java b/src/module/decode/mdc1200/MDCCallEvent.java index e2fc1dcd..0b47482c 100644 --- a/src/module/decode/mdc1200/MDCCallEvent.java +++ b/src/module/decode/mdc1200/MDCCallEvent.java @@ -148,6 +148,8 @@ public class MDCCallEvent extends CallEvent case PAGING: type = CallEventType.PAGE; break; + default: + break; } return new MDCCallEvent.Builder( type ) diff --git a/src/module/decode/mpt1327/MPT1327DecoderPanel.java b/src/module/decode/mpt1327/MPT1327DecoderPanel.java index da4f6a5f..579aa112 100644 --- a/src/module/decode/mpt1327/MPT1327DecoderPanel.java +++ b/src/module/decode/mpt1327/MPT1327DecoderPanel.java @@ -216,6 +216,8 @@ public class MPT1327DecoderPanel extends DecoderPanel mToTalkgroupLabel.setForeground( mColorLabelDetails ); } break; + default: + break; } } } diff --git a/src/module/decode/mpt1327/MPT1327DecoderState.java b/src/module/decode/mpt1327/MPT1327DecoderState.java index 32461577..3e4db86e 100644 --- a/src/module/decode/mpt1327/MPT1327DecoderState.java +++ b/src/module/decode/mpt1327/MPT1327DecoderState.java @@ -238,6 +238,8 @@ public class MPT1327DecoderState extends DecoderState case MAINT: broadcast( new DecoderStateEvent( this, Event.END, State.END ) ); break; + default: + break; } } } diff --git a/src/module/decode/mpt1327/MPT1327Message.java b/src/module/decode/mpt1327/MPT1327Message.java index 206fafa9..8e0d1f4b 100644 --- a/src/module/decode/mpt1327/MPT1327Message.java +++ b/src/module/decode/mpt1327/MPT1327Message.java @@ -581,6 +581,7 @@ public class MPT1327Message extends Message sb.append( " " ); sb.append( type.getLabel() ); sb.append( " REQUEST" ); + break; } break; case ACKI: @@ -726,8 +727,6 @@ public class MPT1327Message extends Message sb.append( getChannel() ); sb.append( " SER:" ); sb.append( getAdjacentSiteSerialNumber() ); - //debug - sb.append( " *************************" ); break; case SPECIFY_CALL_MAINTENANCE_PARAMETERS: sb.append( " PERIODIC MAINT MSG REQD:" ); @@ -738,6 +737,8 @@ public class MPT1327Message extends Message sb.append( getPresselOnRequired() ); sb.append( " IDENT1 VALUE:" ); sb.append( getMaintMessageIDENT1Value() ); + default: + break; } break; case CLEAR: @@ -777,6 +778,8 @@ public class MPT1327Message extends Message sb.append( " " ); sb.append( getSDM() ); break; + default: + break; } return sb.toString(); @@ -849,6 +852,8 @@ public class MPT1327Message extends Message sb.append( "SEND SHORT DATA MESSAGE USING " ); sb.append( slots.getLabel() ); break; + default: + break; } } else @@ -1253,6 +1258,8 @@ public class MPT1327Message extends Message 12 ) ); } break; + default: + break; } return sb.toString(); @@ -1278,6 +1285,8 @@ public class MPT1327Message extends Message case HEAD_PLUS4: blocks = 4; break; + default: + break; } if( blocks >= 1 ) @@ -1347,6 +1356,8 @@ public class MPT1327Message extends Message case HEAD_PLUS4: blocks = 4; break; + default: + break; } if( blocks >= 1 ) @@ -1446,6 +1457,8 @@ public class MPT1327Message extends Message case HEAD_PLUS4: blocks = 4; break; + default: + break; } if( blocks >= 1 ) diff --git a/src/module/decode/mpt1327/MPT1327MessageProcessor.java b/src/module/decode/mpt1327/MPT1327MessageProcessor.java index 1d1d01e2..b4d6b805 100644 --- a/src/module/decode/mpt1327/MPT1327MessageProcessor.java +++ b/src/module/decode/mpt1327/MPT1327MessageProcessor.java @@ -17,11 +17,11 @@ ******************************************************************************/ package module.decode.mpt1327; +import message.Message; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import message.Message; -import module.decode.DecoderFactory; import sample.Listener; import alias.AliasList; import bits.BinaryMessage; diff --git a/src/module/decode/mpt1327/MPT1327TrafficPanel.java b/src/module/decode/mpt1327/MPT1327TrafficPanel.java index f52d47fc..e38a4b79 100644 --- a/src/module/decode/mpt1327/MPT1327TrafficPanel.java +++ b/src/module/decode/mpt1327/MPT1327TrafficPanel.java @@ -171,6 +171,8 @@ public class MPT1327TrafficPanel extends DecoderPanel case CHANNEL_STATE_LABEL_DETAILS: mToLabel.setForeground( mColorLabelDetails ); break; + default: + break; } } } diff --git a/src/module/decode/p25/C4FMSlicer.java b/src/module/decode/p25/C4FMSlicer.java index 6a7d92e3..2d13b588 100644 --- a/src/module/decode/p25/C4FMSlicer.java +++ b/src/module/decode/p25/C4FMSlicer.java @@ -18,6 +18,12 @@ public class C4FMSlicer implements RealSampleListener private Broadcaster mBroadcaster = new Broadcaster(); + public void dispose() + { + mBroadcaster.dispose(); + mBroadcaster = null; + } + /** * Primary method for receiving output from the C4FMSymbolFilter. Slices * (converts) the filtered sample value into a C4FMSymbol decision. diff --git a/src/module/decode/p25/C4FMSymbolFilter.java b/src/module/decode/p25/C4FMSymbolFilter.java index 339be4ff..3edb6d7f 100644 --- a/src/module/decode/p25/C4FMSymbolFilter.java +++ b/src/module/decode/p25/C4FMSymbolFilter.java @@ -229,6 +229,13 @@ public class C4FMSymbolFilter implements FrequencyCorrectionResetListener, mFrequencyCorrectionControl.setListener( this ); } + public void dispose() + { + mGainController = null; + mFrequencyCorrectionControl = null; + mListener = null; + } + @Override public void receive( float sample ) { diff --git a/src/module/decode/p25/P25Decoder.java b/src/module/decode/p25/P25Decoder.java index 26ccce3b..da1ad452 100644 --- a/src/module/decode/p25/P25Decoder.java +++ b/src/module/decode/p25/P25Decoder.java @@ -19,6 +19,14 @@ public abstract class P25Decoder extends Decoder mMessageProcessor = new P25MessageProcessor( aliasList ); mMessageProcessor.setMessageListener( mMessageBroadcaster ); } + + public void dispose() + { + super.dispose(); + + mMessageProcessor.dispose(); + mMessageProcessor = null; + } @Override public DecoderType getDecoderType() diff --git a/src/module/decode/p25/P25DecoderPanel.java b/src/module/decode/p25/P25DecoderPanel.java index 97701a17..ac19e58a 100644 --- a/src/module/decode/p25/P25DecoderPanel.java +++ b/src/module/decode/p25/P25DecoderPanel.java @@ -21,10 +21,9 @@ import java.awt.EventQueue; import javax.swing.JLabel; -import net.miginfocom.swing.MigLayout; import module.decode.state.ChangedAttribute; import module.decode.state.DecoderPanel; -import module.decode.state.State; +import net.miginfocom.swing.MigLayout; import settings.ColorSetting; import settings.Setting; import settings.SettingsManager; @@ -168,6 +167,8 @@ public class P25DecoderPanel extends DecoderPanel mToAlias.setIcon( null ); } break; + default: + break; } repaint(); diff --git a/src/module/decode/p25/P25DecoderState.java b/src/module/decode/p25/P25DecoderState.java index 61de6752..55dd03b7 100644 --- a/src/module/decode/p25/P25DecoderState.java +++ b/src/module/decode/p25/P25DecoderState.java @@ -2264,43 +2264,45 @@ public class P25DecoderState extends DecoderState { switch( message.getOpcode() ) { - case GROUP_DATA_CHANNEL_ANNOUNCEMENT: - GroupDataChannelAnnouncement gdca = (GroupDataChannelAnnouncement)message; - - broadcast( new P25CallEvent.Builder( CallEventType.ANNOUNCEMENT ) - .aliasList( getAliasList() ) - .channel( gdca.getChannel1() ) - .details( ( gdca.isEncrypted() ? "ENCRYPTED" : "" ) + - ( gdca.isEmergency() ? " EMERGENCY" : "") ) - .frequency( gdca.getDownlinkFrequency1() ) - .to( gdca.getGroupAddress1() ) - .build() ); - - if( gdca.hasChannelNumber2() ) - { + case GROUP_DATA_CHANNEL_ANNOUNCEMENT: + GroupDataChannelAnnouncement gdca = (GroupDataChannelAnnouncement)message; + broadcast( new P25CallEvent.Builder( CallEventType.ANNOUNCEMENT ) .aliasList( getAliasList() ) - .channel( gdca.getChannel2() ) + .channel( gdca.getChannel1() ) .details( ( gdca.isEncrypted() ? "ENCRYPTED" : "" ) + ( gdca.isEmergency() ? " EMERGENCY" : "") ) - .frequency( gdca.getDownlinkFrequency2() ) - .to( gdca.getGroupAddress2() ) + .frequency( gdca.getDownlinkFrequency1() ) + .to( gdca.getGroupAddress1() ) .build() ); - } - break; - case GROUP_DATA_CHANNEL_ANNOUNCEMENT_EXPLICIT: - GroupDataChannelAnnouncementExplicit gdcae = - (GroupDataChannelAnnouncementExplicit)message; - - broadcast( new P25CallEvent.Builder( CallEventType.DATA_CALL ) - .aliasList( getAliasList() ) - .channel( gdcae.getTransmitChannel() ) - .details( ( gdcae.isEncrypted() ? "ENCRYPTED" : "" ) + - ( gdcae.isEmergency() ? " EMERGENCY" : "") ) - .frequency( gdcae.getDownlinkFrequency() ) - .to( gdcae.getGroupAddress() ) - .build() ); - break; + + if( gdca.hasChannelNumber2() ) + { + broadcast( new P25CallEvent.Builder( CallEventType.ANNOUNCEMENT ) + .aliasList( getAliasList() ) + .channel( gdca.getChannel2() ) + .details( ( gdca.isEncrypted() ? "ENCRYPTED" : "" ) + + ( gdca.isEmergency() ? " EMERGENCY" : "") ) + .frequency( gdca.getDownlinkFrequency2() ) + .to( gdca.getGroupAddress2() ) + .build() ); + } + break; + case GROUP_DATA_CHANNEL_ANNOUNCEMENT_EXPLICIT: + GroupDataChannelAnnouncementExplicit gdcae = + (GroupDataChannelAnnouncementExplicit)message; + + broadcast( new P25CallEvent.Builder( CallEventType.DATA_CALL ) + .aliasList( getAliasList() ) + .channel( gdcae.getTransmitChannel() ) + .details( ( gdcae.isEncrypted() ? "ENCRYPTED" : "" ) + + ( gdcae.isEmergency() ? " EMERGENCY" : "") ) + .frequency( gdcae.getDownlinkFrequency() ) + .to( gdcae.getGroupAddress() ) + .build() ); + break; + default: + break; } } diff --git a/src/module/decode/p25/P25MessageFramer.java b/src/module/decode/p25/P25MessageFramer.java index 32e41b21..d76ecd8c 100644 --- a/src/module/decode/p25/P25MessageFramer.java +++ b/src/module/decode/p25/P25MessageFramer.java @@ -31,7 +31,6 @@ import bits.MultiSyncPatternMatcher; import bits.SoftSyncDetector; import bits.SyncDetector; import dsp.psk.CQPSKDemodulator; -import dsp.psk.CQPSKDemodulator2; import dsp.symbol.Dibit; import dsp.symbol.FrameSync; import edac.BCH_63_16_11; @@ -47,20 +46,12 @@ public class P25MessageFramer implements Listener private static final int SYNC_MATCH_THRESHOLD = 2; private static final int SYNC_IN_CALL_THRESHOLD = 4; - private SoftSyncDetector mPrimarySyncDetector = new SoftSyncDetector( - FrameSync.P25_PHASE1_NORMAL.getSync(), SYNC_MATCH_THRESHOLD ); - /* Costas Loop phase lock error correction values. A phase lock error of * 90 degrees requires a correction of 1/4 of the symbol rate (1200Hz). An * error of 180 degrees requires a correction of 1/2 of the symbol rate */ public static final double SYMBOL_FREQUENCY = 2.0d * Math.PI * 4800.0d / 48000.0d; public static final double PHASE_CORRECTION_90_DEGREES = SYMBOL_FREQUENCY / 4.0d; public static final double PHASE_CORRECTION_180_DEGREES = SYMBOL_FREQUENCY / 2.0d; - - private MultiSyncPatternMatcher mMatcher = new MultiSyncPatternMatcher( 48 ); - private ArrayList mAssemblers = - new ArrayList(); - public static final int TSBK_BEGIN = 64; public static final int TSBK_CRC_START = 144; public static final int TSBK_END = 260; @@ -77,6 +68,13 @@ public class P25MessageFramer implements Listener public static final int PDU3_END = 548; public static final int PDU3_DECODED_END = 448; + private SoftSyncDetector mPrimarySyncDetector = new SoftSyncDetector( + FrameSync.P25_PHASE1_NORMAL.getSync(), SYNC_MATCH_THRESHOLD ); + + private MultiSyncPatternMatcher mMatcher = new MultiSyncPatternMatcher( 48 ); + private ArrayList mAssemblers = + new ArrayList(); + private Listener mListener; private AliasList mAliasList; @@ -143,6 +141,26 @@ public class P25MessageFramer implements Listener } } + public void dispose() + { + for( P25MessageAssembler a: mAssemblers ) + { + a.dispose(); + } + + mAssemblers.clear(); + + mListener = null; + mAliasList = null; + + mMatcher.dispose(); + mMatcher = null; + + mPrimarySyncDetector.dispose(); + mPrimarySyncDetector = null; + + } + private void dispatch( Message message ) { if( mListener != null ) diff --git a/src/module/decode/p25/P25MessageProcessor.java b/src/module/decode/p25/P25MessageProcessor.java index c7c8e597..0ef49de5 100644 --- a/src/module/decode/p25/P25MessageProcessor.java +++ b/src/module/decode/p25/P25MessageProcessor.java @@ -10,7 +10,6 @@ import module.decode.p25.message.ldu.LDUMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sample.Broadcaster; import sample.Listener; import alias.AliasList; diff --git a/src/module/decode/p25/P25_C4FMDecoder.java b/src/module/decode/p25/P25_C4FMDecoder.java index 4e425d86..e5b5fe73 100644 --- a/src/module/decode/p25/P25_C4FMDecoder.java +++ b/src/module/decode/p25/P25_C4FMDecoder.java @@ -110,6 +110,33 @@ public class P25_C4FMDecoder extends P25Decoder implements IRealBufferListener /* Process and broadcast messages */ mMessageFramer.setListener( getMessageProcessor() ); } + + @Override + public void dispose() + { + super.dispose(); + + mC4FMPreFilter.dispose(); + mC4FMPreFilter = null; + + mDGC.dispose(); + mDGC = null; + + mStreamConverter.dispose(); + mStreamConverter = null; + + mFrequencyCorrectionControl.dispose(); + mFrequencyCorrectionControl = null; + + mSymbolFilter.dispose(); + mSymbolFilter = null; + + mMessageFramer.dispose(); + mMessageFramer = null; + + mC4FMSlicer.dispose(); + mC4FMSlicer = null; + } public Modulation getModulation() { diff --git a/src/module/decode/p25/P25_LSMDecoder.java b/src/module/decode/p25/P25_LSMDecoder.java index 60999e97..af581ae3 100644 --- a/src/module/decode/p25/P25_LSMDecoder.java +++ b/src/module/decode/p25/P25_LSMDecoder.java @@ -21,7 +21,6 @@ import instrument.tap.Tap; import instrument.tap.stream.ComplexSampleTap; import instrument.tap.stream.ComplexTap; import instrument.tap.stream.DibitTap; -import instrument.tap.stream.FloatTap; import instrument.tap.stream.QPSKTap; import java.util.ArrayList; @@ -30,13 +29,13 @@ import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import controller.channel.Channel.ChannelType; import sample.Listener; import sample.complex.ComplexBuffer; import sample.complex.ComplexBufferToStreamConverter; import sample.complex.IComplexBufferListener; import source.tuner.frequency.FrequencyCorrectionControl; import alias.AliasList; +import controller.channel.Channel.ChannelType; import dsp.filter.FilterFactory; import dsp.filter.Window.WindowType; import dsp.filter.fir.complex.ComplexFIRFilter_CB_CB; @@ -88,6 +87,29 @@ public class P25_LSMDecoder extends P25Decoder implements IComplexBufferListener mMessageFramer.setListener( getMessageProcessor() ); } + public void dispose() + { + super.dispose(); + + mBasebandFilter.dispose(); + mBasebandFilter = null; + + mStreamConverter.dispose(); + mStreamConverter = null; + + mAGC.dispose(); + mAGC = null; + + mCQPSKDemodulator.dispose(); + mCQPSKDemodulator = null; + + mCQPSKSlicer.dispose(); + mCQPSKSlicer = null; + + mMessageFramer.dispose(); + mMessageFramer = null; + } + @Override public Listener getComplexBufferListener() { diff --git a/src/module/decode/p25/Trellis_1_2_Rate.java b/src/module/decode/p25/Trellis_1_2_Rate.java index ee35c5ad..7a6c096d 100644 --- a/src/module/decode/p25/Trellis_1_2_Rate.java +++ b/src/module/decode/p25/Trellis_1_2_Rate.java @@ -67,35 +67,35 @@ public class Trellis_1_2_Rate mConstellationNodes.clear(); } - private String constellationsToString( String label ) - { - StringBuilder sb = new StringBuilder(); - - sb.append( label ); - - for( ConstellationNode node: mConstellationNodes ) - { - sb.append( " " + node.getConstellation().name() ); - } - - return sb.toString(); - } - - private String inputsToString() - { - StringBuilder sb = new StringBuilder(); - - sb.append( " INPUTS: " ); - - for( ConstellationNode node: mConstellationNodes ) - { - sb.append( " " ); - sb.append( ( node.getConstellation().getInput().getBit1() ? "1" : "0" ) ); - sb.append( ( node.getConstellation().getInput().getBit2() ? "1" : "0" ) ); - } - - return sb.toString(); - } +// private String constellationsToString( String label ) +// { +// StringBuilder sb = new StringBuilder(); +// +// sb.append( label ); +// +// for( ConstellationNode node: mConstellationNodes ) +// { +// sb.append( " " + node.getConstellation().name() ); +// } +// +// return sb.toString(); +// } +// +// private String inputsToString() +// { +// StringBuilder sb = new StringBuilder(); +// +// sb.append( " INPUTS: " ); +// +// for( ConstellationNode node: mConstellationNodes ) +// { +// sb.append( " " ); +// sb.append( ( node.getConstellation().getInput().getBit1() ? "1" : "0" ) ); +// sb.append( ( node.getConstellation().getInput().getBit2() ? "1" : "0" ) ); +// } +// +// return sb.toString(); +// } public boolean decode( BinaryMessage message, int start, int end ) { diff --git a/src/module/decode/p25/message/filter/HDUMessageFilter.java b/src/module/decode/p25/message/filter/HDUMessageFilter.java index 0f716691..c43cbda8 100644 --- a/src/module/decode/p25/message/filter/HDUMessageFilter.java +++ b/src/module/decode/p25/message/filter/HDUMessageFilter.java @@ -5,7 +5,6 @@ import java.util.List; import message.Message; import module.decode.p25.message.hdu.HDUMessage; -import module.decode.p25.message.tdu.lc.TDULinkControlMessage; import filter.Filter; import filter.FilterElement; diff --git a/src/module/decode/p25/message/filter/TDULCMessageFilter.java b/src/module/decode/p25/message/filter/TDULCMessageFilter.java index dbf38811..6bcb7d1a 100644 --- a/src/module/decode/p25/message/filter/TDULCMessageFilter.java +++ b/src/module/decode/p25/message/filter/TDULCMessageFilter.java @@ -4,7 +4,6 @@ import java.util.Collections; import java.util.List; import message.Message; -import module.decode.p25.message.tdu.TDUMessage; import module.decode.p25.message.tdu.lc.TDULinkControlMessage; import filter.Filter; import filter.FilterElement; diff --git a/src/module/decode/p25/message/ldu/lc/GroupVoiceChannelUpdateExplicit.java b/src/module/decode/p25/message/ldu/lc/GroupVoiceChannelUpdateExplicit.java index cd946525..f3aa25f3 100644 --- a/src/module/decode/p25/message/ldu/lc/GroupVoiceChannelUpdateExplicit.java +++ b/src/module/decode/p25/message/ldu/lc/GroupVoiceChannelUpdateExplicit.java @@ -2,8 +2,6 @@ package module.decode.p25.message.ldu.lc; import module.decode.p25.message.IBandIdentifier; import module.decode.p25.message.IdentifierReceiver; -import module.decode.p25.message.P25Message.DuplexMode; -import module.decode.p25.message.P25Message.SessionMode; import module.decode.p25.message.ldu.LDU1Message; import module.decode.p25.reference.LinkControlOpcode; diff --git a/src/module/decode/p25/message/ldu/lc/TelephoneInterconnectVoiceChannelUser.java b/src/module/decode/p25/message/ldu/lc/TelephoneInterconnectVoiceChannelUser.java index af1fe0a7..09cd49ae 100644 --- a/src/module/decode/p25/message/ldu/lc/TelephoneInterconnectVoiceChannelUser.java +++ b/src/module/decode/p25/message/ldu/lc/TelephoneInterconnectVoiceChannelUser.java @@ -1,7 +1,5 @@ package module.decode.p25.message.ldu.lc; -import module.decode.p25.message.P25Message.DuplexMode; -import module.decode.p25.message.P25Message.SessionMode; import module.decode.p25.message.ldu.LDU1Message; import module.decode.p25.reference.LinkControlOpcode; diff --git a/src/module/decode/p25/message/ldu/lc/UnitToUnitAnswerRequest.java b/src/module/decode/p25/message/ldu/lc/UnitToUnitAnswerRequest.java index 9309578f..297a7c19 100644 --- a/src/module/decode/p25/message/ldu/lc/UnitToUnitAnswerRequest.java +++ b/src/module/decode/p25/message/ldu/lc/UnitToUnitAnswerRequest.java @@ -1,7 +1,5 @@ package module.decode.p25.message.ldu.lc; -import module.decode.p25.message.P25Message.DuplexMode; -import module.decode.p25.message.P25Message.SessionMode; import module.decode.p25.message.ldu.LDU1Message; import module.decode.p25.reference.LinkControlOpcode; diff --git a/src/module/decode/p25/message/ldu/lc/UnitToUnitVoiceChannelUser.java b/src/module/decode/p25/message/ldu/lc/UnitToUnitVoiceChannelUser.java index 383cb9b7..70da5b3f 100644 --- a/src/module/decode/p25/message/ldu/lc/UnitToUnitVoiceChannelUser.java +++ b/src/module/decode/p25/message/ldu/lc/UnitToUnitVoiceChannelUser.java @@ -1,7 +1,5 @@ package module.decode.p25.message.ldu.lc; -import module.decode.p25.message.P25Message.DuplexMode; -import module.decode.p25.message.P25Message.SessionMode; import module.decode.p25.message.ldu.LDU1Message; import module.decode.p25.reference.LinkControlOpcode; diff --git a/src/module/decode/p25/message/pdu/UnitToUnitChannelGrantExtended.java b/src/module/decode/p25/message/pdu/UnitToUnitChannelGrantExtended.java index d54c1011..ac8a1f30 100644 --- a/src/module/decode/p25/message/pdu/UnitToUnitChannelGrantExtended.java +++ b/src/module/decode/p25/message/pdu/UnitToUnitChannelGrantExtended.java @@ -3,7 +3,6 @@ package module.decode.p25.message.pdu; import module.decode.p25.message.IBandIdentifier; import module.decode.p25.message.IdentifierReceiver; import module.decode.p25.reference.DataUnitID; -import module.decode.p25.reference.Opcode; import alias.AliasList; import bits.BinaryMessage; import edac.CRCP25; diff --git a/src/module/decode/p25/message/pdu/confirmed/SNDCPActivateTDSContextAccept.java b/src/module/decode/p25/message/pdu/confirmed/SNDCPActivateTDSContextAccept.java index d6ddbd4b..41a5a77a 100644 --- a/src/module/decode/p25/message/pdu/confirmed/SNDCPActivateTDSContextAccept.java +++ b/src/module/decode/p25/message/pdu/confirmed/SNDCPActivateTDSContextAccept.java @@ -1,20 +1,10 @@ package module.decode.p25.message.pdu.confirmed; -import module.decode.p25.message.pdu.PDUMessage; -import module.decode.p25.reference.DataUnitID; import module.decode.p25.reference.MDPConfigurationOption; -import module.decode.p25.reference.PDUType; -import module.decode.p25.reference.SNDCPActivationRejectReason; -import module.decode.p25.reference.Vendor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import alias.AliasList; -import bits.BinaryMessage; -import edac.CRC; -import edac.CRCP25; - public class SNDCPActivateTDSContextAccept extends PDUConfirmedMessage { public final static Logger mLog = diff --git a/src/module/decode/p25/message/pdu/confirmed/SNDCPDeactivateTDSContext.java b/src/module/decode/p25/message/pdu/confirmed/SNDCPDeactivateTDSContext.java index 000b4f0a..859303be 100644 --- a/src/module/decode/p25/message/pdu/confirmed/SNDCPDeactivateTDSContext.java +++ b/src/module/decode/p25/message/pdu/confirmed/SNDCPDeactivateTDSContext.java @@ -1,7 +1,6 @@ package module.decode.p25.message.pdu.confirmed; import module.decode.p25.reference.PDUType; -import module.decode.p25.reference.SNDCPActivationRejectReason; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/module/decode/p25/message/pdu/osp/data/GroupDataChannelGrantExtended.java b/src/module/decode/p25/message/pdu/osp/data/GroupDataChannelGrantExtended.java index d6354d45..e196f10a 100644 --- a/src/module/decode/p25/message/pdu/osp/data/GroupDataChannelGrantExtended.java +++ b/src/module/decode/p25/message/pdu/osp/data/GroupDataChannelGrantExtended.java @@ -1,7 +1,5 @@ package module.decode.p25.message.pdu.osp.data; -import java.util.Date; - import module.decode.p25.message.IBandIdentifier; import module.decode.p25.message.IdentifierReceiver; import module.decode.p25.message.pdu.PDUMessage; diff --git a/src/module/decode/p25/message/tdu/lc/AdjacentSiteStatusBroadcast.java b/src/module/decode/p25/message/tdu/lc/AdjacentSiteStatusBroadcast.java index 2cc67bc7..154d3af0 100644 --- a/src/module/decode/p25/message/tdu/lc/AdjacentSiteStatusBroadcast.java +++ b/src/module/decode/p25/message/tdu/lc/AdjacentSiteStatusBroadcast.java @@ -2,7 +2,6 @@ package module.decode.p25.message.tdu.lc; import module.decode.p25.message.IBandIdentifier; import module.decode.p25.message.IdentifierReceiver; -import module.decode.p25.message.tsbk.osp.control.SystemService; import module.decode.p25.reference.LinkControlOpcode; import module.decode.p25.reference.Service; diff --git a/src/module/decode/p25/message/tdu/lc/AdjacentSiteStatusBroadcastExplicit.java b/src/module/decode/p25/message/tdu/lc/AdjacentSiteStatusBroadcastExplicit.java index d0863292..ad3f83f0 100644 --- a/src/module/decode/p25/message/tdu/lc/AdjacentSiteStatusBroadcastExplicit.java +++ b/src/module/decode/p25/message/tdu/lc/AdjacentSiteStatusBroadcastExplicit.java @@ -1,6 +1,5 @@ package module.decode.p25.message.tdu.lc; -import module.decode.p25.message.tsbk.osp.control.SystemService; import module.decode.p25.reference.LinkControlOpcode; import org.slf4j.Logger; diff --git a/src/module/decode/p25/message/tdu/lc/GroupVoiceChannelUpdateExplicit.java b/src/module/decode/p25/message/tdu/lc/GroupVoiceChannelUpdateExplicit.java index 16a0211b..174f988f 100644 --- a/src/module/decode/p25/message/tdu/lc/GroupVoiceChannelUpdateExplicit.java +++ b/src/module/decode/p25/message/tdu/lc/GroupVoiceChannelUpdateExplicit.java @@ -2,8 +2,6 @@ package module.decode.p25.message.tdu.lc; import module.decode.p25.message.IBandIdentifier; import module.decode.p25.message.IdentifierReceiver; -import module.decode.p25.message.P25Message.DuplexMode; -import module.decode.p25.message.P25Message.SessionMode; import module.decode.p25.reference.LinkControlOpcode; import org.slf4j.Logger; diff --git a/src/module/decode/p25/message/tdu/lc/NetworkStatusBroadcastExplicit.java b/src/module/decode/p25/message/tdu/lc/NetworkStatusBroadcastExplicit.java index ba136500..d31b41ad 100644 --- a/src/module/decode/p25/message/tdu/lc/NetworkStatusBroadcastExplicit.java +++ b/src/module/decode/p25/message/tdu/lc/NetworkStatusBroadcastExplicit.java @@ -3,7 +3,6 @@ package module.decode.p25.message.tdu.lc; import module.decode.p25.message.IBandIdentifier; import module.decode.p25.message.IdentifierReceiver; import module.decode.p25.reference.LinkControlOpcode; -import module.decode.p25.reference.Service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/module/decode/p25/message/tsbk/GroupMultiChannelGrant.java b/src/module/decode/p25/message/tsbk/GroupMultiChannelGrant.java index 38a64d8f..90446323 100644 --- a/src/module/decode/p25/message/tsbk/GroupMultiChannelGrant.java +++ b/src/module/decode/p25/message/tsbk/GroupMultiChannelGrant.java @@ -149,22 +149,22 @@ public abstract class GroupMultiChannelGrant extends ChannelGrant public long getDownlinkFrequency1() { - return calculateDownlink( mIdentifierUpdate1, getChannelNumber() ); + return calculateDownlink( mIdentifierUpdate1, getChannelNumber1() ); } public long getUplinkFrequency1() { - return calculateUplink( mIdentifierUpdate1, getChannelNumber() ); + return calculateUplink( mIdentifierUpdate1, getChannelNumber1() ); } public long getDownlinkFrequency2() { - return calculateDownlink( mIdentifierUpdate2, getChannelNumber() ); + return calculateDownlink( mIdentifierUpdate2, getChannelNumber2() ); } public long getUplinkFrequency2() { - return calculateUplink( mIdentifierUpdate2, getChannelNumber() ); + return calculateUplink( mIdentifierUpdate2, getChannelNumber2() ); } } diff --git a/src/module/decode/p25/message/tsbk/motorola/SystemLoading.java b/src/module/decode/p25/message/tsbk/motorola/SystemLoading.java index a77df53d..c86d442d 100644 --- a/src/module/decode/p25/message/tsbk/motorola/SystemLoading.java +++ b/src/module/decode/p25/message/tsbk/motorola/SystemLoading.java @@ -1,6 +1,5 @@ package module.decode.p25.message.tsbk.motorola; -import module.decode.p25.message.tsbk.TSBKMessage; import module.decode.p25.reference.DataUnitID; import alias.AliasList; import bits.BinaryMessage; diff --git a/src/module/decode/p25/message/tsbk/osp/control/RoamingAddressCommand.java b/src/module/decode/p25/message/tsbk/osp/control/RoamingAddressCommand.java index e5869719..f1b19911 100644 --- a/src/module/decode/p25/message/tsbk/osp/control/RoamingAddressCommand.java +++ b/src/module/decode/p25/message/tsbk/osp/control/RoamingAddressCommand.java @@ -3,7 +3,6 @@ package module.decode.p25.message.tsbk.osp.control; import module.decode.p25.message.tsbk.TSBKMessage; import module.decode.p25.reference.DataUnitID; import module.decode.p25.reference.Opcode; -import module.decode.p25.reference.Response; import module.decode.p25.reference.StackOperation; import alias.AliasList; import bits.BinaryMessage; diff --git a/src/module/decode/p25/message/tsbk/osp/control/UnitDeregistrationAcknowledge.java b/src/module/decode/p25/message/tsbk/osp/control/UnitDeregistrationAcknowledge.java index 483bdea5..b6b7817a 100644 --- a/src/module/decode/p25/message/tsbk/osp/control/UnitDeregistrationAcknowledge.java +++ b/src/module/decode/p25/message/tsbk/osp/control/UnitDeregistrationAcknowledge.java @@ -3,7 +3,6 @@ package module.decode.p25.message.tsbk.osp.control; import module.decode.p25.message.tsbk.TSBKMessage; import module.decode.p25.reference.DataUnitID; import module.decode.p25.reference.Opcode; -import module.decode.p25.reference.Response; import alias.AliasList; import bits.BinaryMessage; diff --git a/src/module/decode/p25/message/tsbk/osp/voice/UnitToUnitVoiceChannelGrant.java b/src/module/decode/p25/message/tsbk/osp/voice/UnitToUnitVoiceChannelGrant.java index 71274d20..abb224db 100644 --- a/src/module/decode/p25/message/tsbk/osp/voice/UnitToUnitVoiceChannelGrant.java +++ b/src/module/decode/p25/message/tsbk/osp/voice/UnitToUnitVoiceChannelGrant.java @@ -1,7 +1,6 @@ package module.decode.p25.message.tsbk.osp.voice; import module.decode.p25.message.tsbk.UnitChannelGrant; -import module.decode.p25.message.tsbk.osp.control.IdentifierUpdate; import module.decode.p25.reference.DataUnitID; import module.decode.p25.reference.Opcode; import alias.AliasList; diff --git a/src/module/decode/passport/PassportDecoderPanel.java b/src/module/decode/passport/PassportDecoderPanel.java index a2b01ec1..beb11532 100644 --- a/src/module/decode/passport/PassportDecoderPanel.java +++ b/src/module/decode/passport/PassportDecoderPanel.java @@ -27,7 +27,6 @@ import settings.ColorSetting; import settings.Setting; import settings.SettingsManager; import alias.Alias; -import controller.channel.Channel; public class PassportDecoderPanel extends DecoderPanel { diff --git a/src/module/decode/passport/PassportDecoderState.java b/src/module/decode/passport/PassportDecoderState.java index 96d97725..7ae3e81f 100644 --- a/src/module/decode/passport/PassportDecoderState.java +++ b/src/module/decode/passport/PassportDecoderState.java @@ -320,7 +320,7 @@ public class PassportDecoderState extends DecoderState } else { - ArrayList channels = new ArrayList( mSiteLCNs.keySet() ); + ArrayList channels = new ArrayList<>( mSiteLCNs.keySet() ); Collections.sort( channels ); for( Integer channel: channels ) @@ -339,7 +339,7 @@ public class PassportDecoderState extends DecoderState } else { - ArrayList channels = new ArrayList( mNeighborLCNs.keySet() ); + ArrayList channels = new ArrayList<>( mNeighborLCNs.keySet() ); Collections.sort( channels ); for( Integer channel: channels ) diff --git a/src/module/decode/passport/PassportMessage.java b/src/module/decode/passport/PassportMessage.java index 36b183a5..4d7d8d54 100644 --- a/src/module/decode/passport/PassportMessage.java +++ b/src/module/decode/passport/PassportMessage.java @@ -285,17 +285,6 @@ public class PassportMessage extends Message return mMessage.toString(); } - /** - * Returns a value formatted in hex notation. - * - * @param value - integer value - * @return - hex digits returned - */ - private static String getHex( int value, int digits ) - { - return String.format( "%0" + digits + "X", value ); - } - private int getInt( int[] bits ) { int retVal = 0; diff --git a/src/module/decode/state/AlwaysUnsquelchedDecoderState.java b/src/module/decode/state/AlwaysUnsquelchedDecoderState.java index c147a1e8..89b9578d 100644 --- a/src/module/decode/state/AlwaysUnsquelchedDecoderState.java +++ b/src/module/decode/state/AlwaysUnsquelchedDecoderState.java @@ -17,13 +17,12 @@ ******************************************************************************/ package module.decode.state; +import message.Message; +import module.decode.state.DecoderStateEvent.Event; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import message.Message; -import module.ProcessingChain; -import module.decode.state.DecoderStateEvent.Event; - /** * Basic decoder channel state - provides the minimum channel state functionality * to support an always un-squelched audio decoder. diff --git a/src/module/decode/tait/Tait1200ANIMessage.java b/src/module/decode/tait/Tait1200ANIMessage.java index 08eeb6d5..b6347997 100644 --- a/src/module/decode/tait/Tait1200ANIMessage.java +++ b/src/module/decode/tait/Tait1200ANIMessage.java @@ -156,11 +156,6 @@ public class Tait1200ANIMessage extends Message return (char)value; } - private void checkCRC() - { -// mCRC = CRCLJ.checkAndCorrect( mMessage ); - } - public boolean isValid() { // return mCRC == CRC.PASSED || mCRC == CRC.CORRECTED; diff --git a/src/eventlog/CallEventLogger.java b/src/module/log/CallEventLogger.java similarity index 78% rename from src/eventlog/CallEventLogger.java rename to src/module/log/CallEventLogger.java index 71363dbe..972dc805 100644 --- a/src/eventlog/CallEventLogger.java +++ b/src/module/log/CallEventLogger.java @@ -15,14 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package eventlog; +package module.log; import java.nio.file.Path; import module.decode.event.CallEvent; +import module.decode.event.ICallEventListener; import sample.Listener; -public class CallEventLogger extends EventLogger implements Listener +public class CallEventLogger extends EventLogger implements ICallEventListener, + Listener { public CallEventLogger( Path logDirectory, String fileNameSuffix ) { @@ -40,4 +42,22 @@ public class CallEventLogger extends EventLogger implements Listener { return CallEvent.getCSVHeader(); } + + @Override + public Listener getCallEventListener() + { + return this; + } + + @Override + public void dispose() + { + super.stop(); + } + + @Override + public void init() + { + super.start(); + } } diff --git a/src/eventlog/EventLogComponentEditor.java b/src/module/log/EventLogComponentEditor.java similarity index 92% rename from src/eventlog/EventLogComponentEditor.java rename to src/module/log/EventLogComponentEditor.java index b9d7b20c..e8fefbee 100644 --- a/src/eventlog/EventLogComponentEditor.java +++ b/src/module/log/EventLogComponentEditor.java @@ -15,18 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package eventlog; +package module.log; -import java.util.ArrayList; +import java.util.List; import javax.swing.JCheckBox; import javax.swing.SwingUtilities; -import controller.Editor; +import module.log.config.EventLogConfiguration; import controller.channel.AbstractChannelEditor; import controller.channel.ChannelNode; -import controller.channel.ChannelValidationException; -import eventlog.config.EventLogConfiguration; public class EventLogComponentEditor extends AbstractChannelEditor { @@ -55,7 +53,7 @@ public class EventLogComponentEditor extends AbstractChannelEditor { SwingUtilities.invokeLater(new Runnable() { - final ArrayList mLoggers = mChannelNode.getChannel() + final List mLoggers = mChannelNode.getChannel() .getEventLogConfiguration().getLoggers(); @Override diff --git a/src/eventlog/EventLogManager.java b/src/module/log/EventLogManager.java similarity index 75% rename from src/eventlog/EventLogManager.java rename to src/module/log/EventLogManager.java index d67607f0..2b43522c 100644 --- a/src/eventlog/EventLogManager.java +++ b/src/module/log/EventLogManager.java @@ -15,13 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package eventlog; +package module.log; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; -import module.ProcessingChainOld; +import module.Module; +import module.log.MessageEventLogger.Type; +import module.log.config.EventLogConfiguration; import properties.SystemProperties; -import eventlog.MessageEventLogger.Type; public class EventLogManager { @@ -32,16 +35,24 @@ public class EventLogManager mDirectory = SystemProperties.getInstance() .getApplicationFolder( "event_logs" ); } + + public List getLoggers( EventLogConfiguration config, String prefix ) + { + List loggers = new ArrayList(); + + for( EventLogType type: config.getLoggers() ) + { + loggers.add( getLogger( type, prefix ) ); + } + + return loggers; + } - public EventLogger getLogger( ProcessingChainOld chain, EventLogType eventLogType ) + public EventLogger getLogger( EventLogType eventLogType, String prefix ) { StringBuilder sb = new StringBuilder(); - sb.append( chain.getChannel().getSystem() ); - sb.append( "_" ); - sb.append( chain.getChannel().getSite() ); - sb.append( "_" ); - sb.append( chain.getChannel().getName() ); + sb.append( prefix ); sb.append( eventLogType.getFileSuffix() ); sb.append( ".log" ); diff --git a/src/eventlog/EventLogType.java b/src/module/log/EventLogType.java similarity index 98% rename from src/eventlog/EventLogType.java rename to src/module/log/EventLogType.java index 27db5f1a..6c8287fd 100644 --- a/src/eventlog/EventLogType.java +++ b/src/module/log/EventLogType.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package eventlog; +package module.log; public enum EventLogType diff --git a/src/eventlog/EventLogger.java b/src/module/log/EventLogger.java similarity index 76% rename from src/eventlog/EventLogger.java rename to src/module/log/EventLogger.java index 5e761a3c..a1d212e1 100644 --- a/src/eventlog/EventLogger.java +++ b/src/module/log/EventLogger.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package eventlog; +package module.log; import java.io.File; import java.io.FileNotFoundException; @@ -25,12 +25,14 @@ import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.file.Path; +import module.Module; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import util.TimeStamp; -public abstract class EventLogger +public abstract class EventLogger extends Module { private final static Logger mLog = LoggerFactory.getLogger( EventLogger.class ); @@ -67,27 +69,30 @@ public abstract class EventLogger public void start() { - try + if( mLogFile == null ) { - StringBuilder sb = new StringBuilder(); - sb.append( mLogDirectory ); - sb.append( File.separator ); - sb.append( TimeStamp.getTimeStamp( "_" ) ); - sb.append( "_" ); - sb.append( replaceIllegalCharacters( mFileNameSuffix ) ); + try + { + StringBuilder sb = new StringBuilder(); + sb.append( mLogDirectory ); + sb.append( File.separator ); + sb.append( TimeStamp.getTimeStamp( "_" ) ); + sb.append( "_" ); + sb.append( replaceIllegalCharacters( mFileNameSuffix ) ); - mLogFileName = sb.toString(); - - mLog.info( "Creating log file:" + mLogFileName ); - - mLogFile = new OutputStreamWriter(new FileOutputStream( mLogFileName ) ); - - write( getHeader() ); - } - catch (FileNotFoundException e) - { - mLog.error("Couldn't create log file in directory:" + mLogDirectory ); - } + mLogFileName = sb.toString(); + + mLog.info( "Creating log file:" + mLogFileName ); + + mLogFile = new OutputStreamWriter(new FileOutputStream( mLogFileName ) ); + + write( getHeader() ); + } + catch (FileNotFoundException e) + { + mLog.error("Couldn't create log file in directory:" + mLogDirectory ); + } + } } /** @@ -111,6 +116,7 @@ public abstract class EventLogger { mLogFile.flush(); mLogFile.close(); + mLogFile = null; } catch( Exception e ) { diff --git a/src/eventlog/MessageEventLogger.java b/src/module/log/MessageEventLogger.java similarity index 68% rename from src/eventlog/MessageEventLogger.java rename to src/module/log/MessageEventLogger.java index 4ce454dc..b9a579d0 100644 --- a/src/eventlog/MessageEventLogger.java +++ b/src/module/log/MessageEventLogger.java @@ -15,51 +15,75 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package eventlog; +package module.log; import java.nio.file.Path; +import message.IMessageListener; import message.Message; import sample.Listener; import util.TimeStamp; -public class MessageEventLogger extends EventLogger implements Listener +public class MessageEventLogger extends EventLogger implements + IMessageListener, Listener { - public enum Type { BINARY, DECODED }; + public enum Type + { + BINARY, DECODED + }; private Type mType; - - public MessageEventLogger( Path logDirectory, String fileNameSuffix, Type type ) + + public MessageEventLogger( Path logDirectory, + String fileNameSuffix, + Type type ) { super( logDirectory, fileNameSuffix ); - + mType = type; } - + @Override - public void receive( Message message ) - { + public Listener getMessageListener() + { + return this; + } + + @Override + public void dispose() + { + super.stop(); + } + + @Override + public void init() + { + super.start(); + } + + @Override + public void receive( Message message ) + { StringBuilder sb = new StringBuilder(); sb.append( TimeStamp.getTimeStamp( " " ) ); sb.append( "," ); sb.append( ( message.isValid() ? "PASSED" : "FAILED" ) ); sb.append( "," ); - - if( mType == Type.BINARY ) + + if ( mType == Type.BINARY ) { sb.append( message.getBinaryMessage() ); - } - else + } else { sb.append( message.getMessage() ); } - + write( sb.toString() ); - } + } @Override - public String getHeader() - { - return mType.toString() + " Message Logger\n"; - } + public String getHeader() + { + return mType.toString() + " Message Logger\n"; + } } diff --git a/src/eventlog/config/EventLogConfiguration.java b/src/module/log/config/EventLogConfiguration.java similarity index 88% rename from src/eventlog/config/EventLogConfiguration.java rename to src/module/log/config/EventLogConfiguration.java index f939328a..c575301b 100644 --- a/src/eventlog/config/EventLogConfiguration.java +++ b/src/module/log/config/EventLogConfiguration.java @@ -15,27 +15,28 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package eventlog.config; +package module.log.config; import java.util.ArrayList; +import java.util.List; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +import module.log.EventLogType; import controller.config.Configuration; -import eventlog.EventLogType; @XmlRootElement( name = "event_log_configuration" ) public class EventLogConfiguration extends Configuration { - protected ArrayList mLoggers = new ArrayList(); + protected List mLoggers = new ArrayList(); public EventLogConfiguration() { } @XmlElement( name = "logger" ) - public ArrayList getLoggers() + public List getLoggers() { return mLoggers; } diff --git a/src/org/jdesktop/swingx/JXMapViewer.java b/src/org/jdesktop/swingx/JXMapViewer.java index 205b546b..81ffc083 100644 --- a/src/org/jdesktop/swingx/JXMapViewer.java +++ b/src/org/jdesktop/swingx/JXMapViewer.java @@ -39,8 +39,6 @@ import org.jdesktop.swingx.painter.Painter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import source.tuner.hackrf.HackRFTunerController; - /** * A tile oriented map component that can easily be used with tile sources * on the web like Google and Yahoo maps, satellite data such as NASA imagery, diff --git a/src/org/jdesktop/swingx/mapviewer/AbstractTileFactory.java b/src/org/jdesktop/swingx/mapviewer/AbstractTileFactory.java index cb67d693..2fe001f9 100644 --- a/src/org/jdesktop/swingx/mapviewer/AbstractTileFactory.java +++ b/src/org/jdesktop/swingx/mapviewer/AbstractTileFactory.java @@ -17,8 +17,6 @@ ******************************************************************************/ package org.jdesktop.swingx.mapviewer; -import gui.SDRTrunk; - import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/src/org/jdesktop/swingx/mapviewer/DefaultWaypointRenderer.java b/src/org/jdesktop/swingx/mapviewer/DefaultWaypointRenderer.java index 67cff805..1ad1a4af 100644 --- a/src/org/jdesktop/swingx/mapviewer/DefaultWaypointRenderer.java +++ b/src/org/jdesktop/swingx/mapviewer/DefaultWaypointRenderer.java @@ -9,8 +9,6 @@ package org.jdesktop.swingx.mapviewer; -import gui.SDRTrunk; - import java.awt.Graphics2D; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; diff --git a/src/record/RecordComponentEditor.java b/src/record/RecordComponentEditor.java index b38a3e83..c5a8a7c2 100644 --- a/src/record/RecordComponentEditor.java +++ b/src/record/RecordComponentEditor.java @@ -21,10 +21,8 @@ package record; import javax.swing.JCheckBox; import record.config.RecordConfiguration; -import controller.Editor; import controller.channel.AbstractChannelEditor; import controller.channel.ChannelNode; -import controller.channel.ChannelValidationException; public class RecordComponentEditor extends AbstractChannelEditor { diff --git a/src/record/RecordEditor.java b/src/record/RecordEditor.java index d67210e7..6d25832e 100644 --- a/src/record/RecordEditor.java +++ b/src/record/RecordEditor.java @@ -19,8 +19,6 @@ package record; import record.config.RecordConfiguration; import controller.Editor; -import controller.channel.Channel; -import controller.channel.ChannelValidationException; public class RecordEditor extends Editor { diff --git a/src/record/RecorderManager.java b/src/record/RecorderManager.java index 0ce16c73..07cf924d 100644 --- a/src/record/RecorderManager.java +++ b/src/record/RecorderManager.java @@ -21,7 +21,6 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -import module.ProcessingChainOld; import properties.SystemProperties; import record.config.RecordConfiguration; import record.wave.ComplexWaveRecorder; @@ -35,8 +34,9 @@ public class RecorderManager public RecorderManager() { } - - public List getRecorder( ProcessingChainOld channel ) + + //TODO: make this return modules + public List getRecorders( RecordConfiguration config ) { /* Note: the file suffix (ie .wav) gets added by the recorder */ @@ -47,12 +47,10 @@ public class RecorderManager sb.append( File.separator ); sb.append( TimeStamp.getTimeStamp( "_" ) ); sb.append( "_" ); - sb.append( channel.getChannel().getName() ); +// sb.append( channel.getChannel().getName() ); ArrayList retVal = new ArrayList(); - RecordConfiguration config = channel.getChannel().getRecordConfiguration(); - for( RecorderType recorder: config.getRecorders() ) { switch( recorder ) diff --git a/src/record/wave/FloatWaveRecorder.java b/src/record/wave/FloatWaveRecorder.java index 45936cdf..29768399 100644 --- a/src/record/wave/FloatWaveRecorder.java +++ b/src/record/wave/FloatWaveRecorder.java @@ -30,7 +30,6 @@ import org.slf4j.LoggerFactory; import record.Recorder; import record.RecorderType; import sample.Listener; -import sample.complex.ComplexBuffer; import sample.real.RealBuffer; import sample.real.RealSampleListener; import util.waveaudio.WaveWriter; diff --git a/src/record/wave/WaveRecorder.java b/src/record/wave/WaveRecorder.java index f160f570..a2a3a6cd 100644 --- a/src/record/wave/WaveRecorder.java +++ b/src/record/wave/WaveRecorder.java @@ -17,8 +17,6 @@ ******************************************************************************/ package record.wave; -import gui.SDRTrunk; - import java.io.IOException; import java.nio.ByteBuffer; import java.util.concurrent.LinkedBlockingQueue; diff --git a/src/sample/complex/ComplexBufferToStreamConverter.java b/src/sample/complex/ComplexBufferToStreamConverter.java index a4809c2b..ecce6561 100644 --- a/src/sample/complex/ComplexBufferToStreamConverter.java +++ b/src/sample/complex/ComplexBufferToStreamConverter.java @@ -9,6 +9,12 @@ public class ComplexBufferToStreamConverter implements Listener { private ComplexSampleListener mListener; + + public void dispose() + { + mListener = null; + } + @Override public void receive( ComplexBuffer buffer ) { diff --git a/src/sample/complex/ComplexSampleAssembler.java b/src/sample/complex/ComplexSampleAssembler.java index f7872160..a3b77b59 100644 --- a/src/sample/complex/ComplexSampleAssembler.java +++ b/src/sample/complex/ComplexSampleAssembler.java @@ -26,14 +26,14 @@ import sample.Provider; public class ComplexSampleAssembler implements Listener, Provider> { - private ArrayList mBuffer; + private ArrayList mBuffer; private int mBufferSize; private Listener> mListener; public ComplexSampleAssembler( int bufferSize ) { mBufferSize = bufferSize; - mBuffer = new ArrayList(); + mBuffer = new ArrayList<>(); } public void dispose() @@ -54,7 +54,7 @@ public class ComplexSampleAssembler implements Listener, mListener.receive( mBuffer ); } - mBuffer = new ArrayList(); + mBuffer = new ArrayList<>(); } } diff --git a/src/sample/real/RealBufferToStreamConverter.java b/src/sample/real/RealBufferToStreamConverter.java index 0758fb20..bd25694d 100644 --- a/src/sample/real/RealBufferToStreamConverter.java +++ b/src/sample/real/RealBufferToStreamConverter.java @@ -20,6 +20,11 @@ public class RealBufferToStreamConverter implements Listener } } } + + public void dispose() + { + mListener = null; + } public void setListener( RealSampleListener listener ) { diff --git a/src/source/EmptySourceEditor.java b/src/source/EmptySourceEditor.java index 0f760647..ad1c1669 100644 --- a/src/source/EmptySourceEditor.java +++ b/src/source/EmptySourceEditor.java @@ -21,8 +21,6 @@ import javax.swing.JLabel; import source.config.SourceConfiguration; import controller.ResourceManager; -import controller.channel.Channel; -import controller.channel.ChannelValidationException; public class EmptySourceEditor extends SourceEditor { diff --git a/src/source/SourceEditor.java b/src/source/SourceEditor.java index ec6bdfea..dd5ad11e 100644 --- a/src/source/SourceEditor.java +++ b/src/source/SourceEditor.java @@ -20,8 +20,6 @@ package source; import source.config.SourceConfiguration; import controller.Editor; import controller.ResourceManager; -import controller.channel.Channel; -import controller.channel.ChannelValidationException; public abstract class SourceEditor extends Editor { diff --git a/src/source/mixer/ComplexMixer.java b/src/source/mixer/ComplexMixer.java index cb7a68ea..fccdaff7 100644 --- a/src/source/mixer/ComplexMixer.java +++ b/src/source/mixer/ComplexMixer.java @@ -17,8 +17,6 @@ ******************************************************************************/ package source.mixer; -import java.util.ArrayList; -import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import javax.sound.sampled.AudioFormat; @@ -32,7 +30,6 @@ import org.slf4j.LoggerFactory; import sample.Listener; import sample.adapter.SampleAdapter; import sample.complex.ComplexBuffer; -import sample.complex.Complex; import source.SourceException; public class ComplexMixer @@ -102,22 +99,6 @@ public class ComplexMixer mBufferReader.stop(); } - private List convert( ComplexBuffer sampleBuffer ) - { - float[] samples = sampleBuffer.getSamples(); - - ArrayList converted = new ArrayList(); - - for( int x = 0; x < samples.length; x += 2 ) - { - converted.add( new Complex( samples[ x ], samples[ x + 1 ] ) ); - } - - sampleBuffer.dispose(); - - return converted; - } - @Override public String toString() { diff --git a/src/source/mixer/MixerEditor.java b/src/source/mixer/MixerEditor.java index e71884e8..effa7f65 100644 --- a/src/source/mixer/MixerEditor.java +++ b/src/source/mixer/MixerEditor.java @@ -17,8 +17,6 @@ ******************************************************************************/ package source.mixer; -import java.util.List; - import javax.sound.sampled.Mixer; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; diff --git a/src/source/mixer/MixerManager.java b/src/source/mixer/MixerManager.java index b3156568..7217f7d5 100644 --- a/src/source/mixer/MixerManager.java +++ b/src/source/mixer/MixerManager.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.EnumSet; import java.util.HashMap; -import java.util.List; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; @@ -31,8 +30,6 @@ import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Mixer; import javax.sound.sampled.TargetDataLine; -import module.ProcessingChainOld; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/source/recording/RecordingEditorPanel.java b/src/source/recording/RecordingEditorPanel.java index 37f95733..408538d5 100644 --- a/src/source/recording/RecordingEditorPanel.java +++ b/src/source/recording/RecordingEditorPanel.java @@ -15,7 +15,6 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; -import source.tuner.frequency.FrequencyChangeListener; import net.miginfocom.swing.MigLayout; public class RecordingEditorPanel extends JPanel diff --git a/src/source/tuner/frequency/FrequencyController.java b/src/source/tuner/frequency/FrequencyController.java index 53371832..009b7467 100644 --- a/src/source/tuner/frequency/FrequencyController.java +++ b/src/source/tuner/frequency/FrequencyController.java @@ -151,7 +151,8 @@ public class FrequencyController * from the tuned frequency. * @param tunedFrequency */ - private long getCorrectedFrequency( long tunedFrequency ) + @SuppressWarnings("unused") + private long getCorrectedFrequency( long tunedFrequency ) { return (long)( (double)tunedFrequency / ( 1.0 - ( mFrequencyCorrection / 1000000.0 ) ) ); diff --git a/src/source/tuner/hackrf/HackRFTunerController.java b/src/source/tuner/hackrf/HackRFTunerController.java index 27acd03e..2b1c746a 100644 --- a/src/source/tuner/hackrf/HackRFTunerController.java +++ b/src/source/tuner/hackrf/HackRFTunerController.java @@ -56,7 +56,6 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Arrays; -import java.util.Iterator; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.LinkedTransferQueue; import java.util.concurrent.ScheduledFuture; diff --git a/src/source/tuner/rtl/RTL2832TunerController.java b/src/source/tuner/rtl/RTL2832TunerController.java index 0266ee55..00a8599a 100644 --- a/src/source/tuner/rtl/RTL2832TunerController.java +++ b/src/source/tuner/rtl/RTL2832TunerController.java @@ -27,7 +27,6 @@ import java.nio.charset.Charset; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.Iterator; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.LinkedTransferQueue; import java.util.concurrent.ScheduledFuture; @@ -53,7 +52,6 @@ import sample.Broadcaster; import sample.Listener; import sample.adapter.ByteSampleAdapter; import sample.complex.ComplexBuffer; -import sample.complex.Complex; import source.SourceException; import source.tuner.TunerController; import source.tuner.TunerType; diff --git a/src/source/tuner/rtl/e4k/E4KTunerController.java b/src/source/tuner/rtl/e4k/E4KTunerController.java index b9689a85..57a58578 100644 --- a/src/source/tuner/rtl/e4k/E4KTunerController.java +++ b/src/source/tuner/rtl/e4k/E4KTunerController.java @@ -534,6 +534,7 @@ public class E4KTunerController extends RTL2832TunerController } } + @SuppressWarnings("unused") private void generateDCOffsetTables( boolean controlI2CRepeater ) throws UsbException { diff --git a/src/spectrum/ChannelOverlayPanel.java b/src/spectrum/ChannelOverlayPanel.java index 145edb10..061f7ef8 100644 --- a/src/spectrum/ChannelOverlayPanel.java +++ b/src/spectrum/ChannelOverlayPanel.java @@ -141,6 +141,8 @@ public class ChannelOverlayPanel extends JPanel implements SettingChangeListener case SPECTRUM_LINE: mColorSpectrumLine = colorSetting.getColor(); break; + default: + break; } } } diff --git a/src/spectrum/SpectralDisplayPanel.java b/src/spectrum/SpectralDisplayPanel.java index bc3da83b..225646d4 100644 --- a/src/spectrum/SpectralDisplayPanel.java +++ b/src/spectrum/SpectralDisplayPanel.java @@ -259,6 +259,8 @@ public class SpectralDisplayPanel extends JPanel case SPECTRUM_LINE: mColorSpectrumLine = colorSetting.getColor(); break; + default: + break; } } } diff --git a/src/spectrum/SpectrumPanel.java b/src/spectrum/SpectrumPanel.java index 68790ed3..1ac5464d 100644 --- a/src/spectrum/SpectrumPanel.java +++ b/src/spectrum/SpectrumPanel.java @@ -167,6 +167,8 @@ public class SpectrumPanel extends JPanel case SPECTRUM_LINE: mColorSpectrumLine = colorSetting.getColor(); break; + default: + break; } } } diff --git a/src/spectrum/WaterfallPanel.java b/src/spectrum/WaterfallPanel.java index c57e30fc..635ee366 100644 --- a/src/spectrum/WaterfallPanel.java +++ b/src/spectrum/WaterfallPanel.java @@ -37,7 +37,6 @@ import settings.ColorSetting; import settings.ColorSetting.ColorSettingName; import settings.Setting; import settings.SettingChangeListener; -import buffer.FloatAveragingBuffer; import controller.ResourceManager; /** diff --git a/src/spectrum/converter/ComplexDecibelConverter.java b/src/spectrum/converter/ComplexDecibelConverter.java index 9c1eb427..24b3c855 100644 --- a/src/spectrum/converter/ComplexDecibelConverter.java +++ b/src/spectrum/converter/ComplexDecibelConverter.java @@ -1,12 +1,8 @@ package spectrum.converter; -import java.util.Arrays; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import spectrum.DFTProcessor; - public class ComplexDecibelConverter extends DFTResultsConverter { private final static Logger mLog = diff --git a/src/test/TestCRC.java b/src/test/TestCRC.java deleted file mode 100644 index 46c54f01..00000000 --- a/src/test/TestCRC.java +++ /dev/null @@ -1,309 +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 test; - -import java.util.BitSet; - -import edac.CRCLTR; - - -public class TestCRC -{ - /** - * @param args - */ - public static void main( String[] args ) - { - log( "Starting ... " ); - -// String a = "10101100001001110011111111111000010111100"; -// String b = "10101100000110100011010000000011000101101"; -// String c = "10101100001001110011111111111001010110001"; -// String d = "10101100000100101100000000000110011001001"; -// String e = "10101100000110000000110000101100000011010"; - - String a = "00111101000011111111111001110010000110101"; - String b = "10110100011000000001011000101100000110101"; - String c = "10001101010011111111111001110010000110101"; - String d = "10010011001100000000000110100100000110101"; - String e = "01011000000110100001100000001100000110101"; - - for( int poly = 0; poly < 64; poly++ ) - { - BitSet m1 = load( a ); - int residual1 = applyChecksum( m1, poly ); - - BitSet m2 = load( b ); - int residual2 = applyChecksum( m2, poly ); - - BitSet m3 = load( c ); - int residual3 = applyChecksum( m3, poly ); - - BitSet m4 = load( d ); - int residual4 = applyChecksum( m4, poly ); - - BitSet m5 = load( e ); - int residual5 = applyChecksum( m5, poly ); - - log( "Poly:" + poly + ">> M1:" + residual1 + - " M2:" + residual2 + - " M3:" + residual3 + - " M4:" + residual4 + - " M5:" + residual5 ); - } - - log( "Done!" ); - } - - private static void getChecksum( int bit ) - { - BitSet m = getInitialFill(); - m.set( bit ); - - int psn = bit; - - while( psn < 34 ) - { -// log( "Before:" + format( m, 41 ) ); - -// BitSet poly = getPoly( psn ); -// log( " Poly:" + format( poly, 41 ) + "\n" ); - -// m.xor( poly ); - - psn = m.nextSetBit( psn + 1 ); - } - - log( "Result:" + format( m, 41 ) + " Bit:" + bit + " Hex:" + getHex( m.get( 34, 41 ), 7) ); - } - - //new -// private static boolean test( BitSet m, int poly, int initialFill ) -// { -// -// } - - //New - private static int applyChecksum( BitSet m, int poly ) - { - int psn = m.nextSetBit( 0 ); - - while( psn != -1 && psn < 35 ) - { -// log( "Before:" + format( m, 41 ) ); - - BitSet mask = getPoly( poly, psn ); -// log( " Poly:" + format( mask, 41 ) + "\n" ); - - m.xor( mask ); - - psn = m.nextSetBit( psn + 1 ); - } - -// log( "Result:" + format( m, 41 ) + " Hex:" + getHex( m.get( 34, 41 ), 7) ); - - return getInt( m.get( 34, 41 ), 7 ); - } - - //new - private static BitSet getInitialFill( int value ) - { - BitSet b = new BitSet(); - - for( int x = 0; x < 7; x++ ) - { - if( ( ( 1<<( 6 - x ) ) & value ) > 0 ) - { - b.set( 34 + x ); - } - } - - return b; - } - - //new - private static BitSet getPoly( int poly, int startPsn ) - { - //Load poly 1xxx xxx1 into new BitSet starting at startPsn - BitSet b = new BitSet(); - b.set( startPsn ); - b.set( startPsn + 7 ); //changed - - for( int x = 0; x < 6; x++ ) //changed - { - if( ( ( 1<<( 5 - x ) ) & poly ) > 0 ) //changed - { - b.set( startPsn + x + 1 ); - } - } - return b; - } - - private static BitSet getInitialFill() - { - //Loads poly 1100 0011 into new BitSet starting at startPsn - BitSet b = new BitSet(); - - b.set( 39 ); - b.set( 34 ); - - return b; - } - - private static String getChars( String c, int count ) - { - StringBuilder sb = new StringBuilder(); - - for( int x = 0; x < count; x++ ) - { - sb.append( c ); - } - - return sb.toString(); - } - - private static void applyFlips( BitSet m, BitSet c, int[] psns ) - { - for( int x = 0; x < psns.length; x++ ) - { - flip( m, c, psns[ x ] ); - } - } - - private static BitSet diff( BitSet b1, BitSet b2 ) - { - b1.xor( b2 ); - - return b1; - } - - private static void flip( BitSet m, BitSet c, int psn ) - { - m.flip( psn ); - apply( c, CRCLTR.getChecks()[ psn ] ); - } - - private static void apply( BitSet c, byte mask ) - { - BitSet maskBits = load( mask, true ); - - c.xor( maskBits ); - } - - private static BitSet load( byte b, boolean fullByte ) - { - BitSet retVal = new BitSet(); - - if( fullByte ) - { - for( int x = 0; x < 8; x++ ) - { - if( ( b & ( 1 << x ) ) > 0 ) - { - retVal.set( 7 - x ); - } - } - } - else - { - for( int x = 0; x < 7; x++ ) - { - if( ( b & ( 1 << x ) ) > 0 ) - { - retVal.set( 6 - x ); - } - } - } - - return retVal; - } - - private static void logDiff( BitSet m1, BitSet m2, BitSet c1, BitSet c2 ) - { - log( "M1:" + format( m1, 24 ) + " Cr1:" + format( c1, 7 ) + " Hex:" + getHex( c1, 7 ) ); - log( "M2:" + format( m2, 24 ) + " Cr2:" + format( c2, 7 ) + " Hex:" + getHex( c2, 7 ) ); - - m1.xor( m2 ); - c1.xor( c2 ); - - log( "DI:" + format( m1, 24 ) + " Crc:" + format( c1, 7 ) + " Hex:" + getHex( c1, 7 ) ); - } - - private static String getHex( BitSet b, int length ) - { - return String.format( "%02X", getInt( b, length ) ); - } - - private static int getInt( BitSet b, int length ) - { - int retVal = 0; - - for( int x = 0; x < length; x++ ) - { - if( b.get( x ) ) - { - retVal += 1<<( length - 1 - x ); - } - } - - return retVal; - } - - - private static BitSet load( String bits ) - { - BitSet retVal = new BitSet(); - - for( int x = 0; x < bits.length() - 9; x++ ) //changed** -1 - { - if( bits.substring( x, x + 1 ).contentEquals( "1" ) ) - { - retVal.set( x ); - } - } - - return retVal; - } - - private static String format( BitSet bitset, int length ) - { - StringBuilder sb = new StringBuilder(); - for( int x = 0; x < length; x++ ) - { - if( bitset.get( x ) ) - { - sb.append( "1" ); - } - else - { - sb.append( "0" ); - } - } - return sb.toString(); - } - - private static void log( BitSet m, BitSet c, String header ) - { - log( header + ":" + format( m, 24 ) + " Cr1:" + format( c, 7 ) + " Hex:" + getHex( c, 7 ) ); - } - - private static void log( String message ) - { - System.out.println( message ); - } -}