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 );
- }
-}