mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 00:57:31 -05:00
Adds event logging, code cleanup and some decoder issue resolution.
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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 + "]" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
8
src/module/decode/event/ICallEventListener.java
Normal file
8
src/module/decode/event/ICallEventListener.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package module.decode.event;
|
||||
|
||||
import sample.Listener;
|
||||
|
||||
public interface ICallEventListener
|
||||
{
|
||||
public Listener<CallEvent> getCallEventListener();
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -167,6 +167,8 @@ public class FleetsyncCallEvent extends CallEvent
|
||||
sbDetails.append( message.getStatusAlias().getName() );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if( type == CallEventType.ID_ANI ||
|
||||
|
||||
@@ -85,6 +85,8 @@ public class LJ1200Message extends Message
|
||||
case PASSED:
|
||||
mLog.debug( "PASS:" + message.toString() );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -160,6 +160,8 @@ public class LTRNetDecoderPanel extends DecoderPanel
|
||||
mDescription.setForeground( mColorLabelDecoder );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -148,6 +148,8 @@ public class MDCCallEvent extends CallEvent
|
||||
case PAGING:
|
||||
type = CallEventType.PAGE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return new MDCCallEvent.Builder( type )
|
||||
|
||||
@@ -216,6 +216,8 @@ public class MPT1327DecoderPanel extends DecoderPanel
|
||||
mToTalkgroupLabel.setForeground( mColorLabelDetails );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,6 +238,8 @@ public class MPT1327DecoderState extends DecoderState
|
||||
case MAINT:
|
||||
broadcast( new DecoderStateEvent( this, Event.END, State.END ) );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -171,6 +171,8 @@ public class MPT1327TrafficPanel extends DecoderPanel
|
||||
case CHANNEL_STATE_LABEL_DETAILS:
|
||||
mToLabel.setForeground( mColorLabelDetails );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,12 @@ public class C4FMSlicer implements RealSampleListener
|
||||
|
||||
private Broadcaster<Dibit> mBroadcaster = new Broadcaster<Dibit>();
|
||||
|
||||
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.
|
||||
|
||||
@@ -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 )
|
||||
{
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<Dibit>
|
||||
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<P25MessageAssembler> mAssemblers =
|
||||
new ArrayList<P25MessageAssembler>();
|
||||
|
||||
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<Dibit>
|
||||
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<P25MessageAssembler> mAssemblers =
|
||||
new ArrayList<P25MessageAssembler>();
|
||||
|
||||
private Listener<Message> mListener;
|
||||
private AliasList mAliasList;
|
||||
|
||||
@@ -143,6 +141,26 @@ public class P25MessageFramer implements Listener<Dibit>
|
||||
}
|
||||
}
|
||||
|
||||
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 )
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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<ComplexBuffer> getComplexBufferListener()
|
||||
{
|
||||
|
||||
@@ -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 )
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -320,7 +320,7 @@ public class PassportDecoderState extends DecoderState
|
||||
}
|
||||
else
|
||||
{
|
||||
ArrayList<Integer> channels = new ArrayList( mSiteLCNs.keySet() );
|
||||
ArrayList<Integer> channels = new ArrayList<>( mSiteLCNs.keySet() );
|
||||
Collections.sort( channels );
|
||||
|
||||
for( Integer channel: channels )
|
||||
@@ -339,7 +339,7 @@ public class PassportDecoderState extends DecoderState
|
||||
}
|
||||
else
|
||||
{
|
||||
ArrayList<Integer> channels = new ArrayList( mNeighborLCNs.keySet() );
|
||||
ArrayList<Integer> channels = new ArrayList<>( mNeighborLCNs.keySet() );
|
||||
Collections.sort( channels );
|
||||
|
||||
for( Integer channel: channels )
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user