mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
Updated P25 channel display to show relevant site information.
Changed Site ID Alias to a string from integer to support P25 style site identifiers (RFSS-Site)
This commit is contained in:
@@ -57,7 +57,7 @@ public class AliasList implements Comparable<AliasList>
|
||||
private HashMap<String,Alias> mMDC1200 = new HashMap<String,Alias>();
|
||||
private HashMap<String,Alias> mMobileID = new HashMap<String,Alias>();
|
||||
private HashMap<String,Alias> mMPT1327 = new HashMap<String,Alias>();
|
||||
private HashMap<Integer, Alias> mSiteID = new HashMap<Integer,Alias>();
|
||||
private HashMap<String, Alias> mSiteID = new HashMap<String,Alias>();
|
||||
private HashMap<Integer, Alias> mStatus = new HashMap<Integer,Alias>();
|
||||
private HashMap<String,Alias> mTalkgroup = new HashMap<String,Alias>();
|
||||
private HashMap<Integer,Alias> mUniqueID = new HashMap<Integer,Alias>();
|
||||
@@ -203,7 +203,7 @@ public class AliasList implements Comparable<AliasList>
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getSiteID( int siteID )
|
||||
public Alias getSiteID( String siteID )
|
||||
{
|
||||
return mSiteID.get( siteID );
|
||||
}
|
||||
|
||||
@@ -24,21 +24,21 @@ import alias.AliasIDType;
|
||||
|
||||
public class SiteID extends AliasID
|
||||
{
|
||||
private int mSite;
|
||||
private String mSite;
|
||||
|
||||
public SiteID()
|
||||
{
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public int getSite()
|
||||
public String getSite()
|
||||
{
|
||||
return mSite;
|
||||
}
|
||||
|
||||
public void setSite( int site )
|
||||
public void setSite( String site )
|
||||
{
|
||||
this.mSite = site;
|
||||
mSite = site;
|
||||
}
|
||||
|
||||
public String toString()
|
||||
@@ -47,18 +47,11 @@ public class SiteID extends AliasID
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches( AliasID id )
|
||||
public boolean matches( AliasID otherID )
|
||||
{
|
||||
boolean retVal = false;
|
||||
|
||||
if( id instanceof SiteID )
|
||||
{
|
||||
SiteID uid = (SiteID)id;
|
||||
|
||||
retVal = ( mSite == uid.getSite() );
|
||||
}
|
||||
|
||||
return retVal;
|
||||
return otherID != null &&
|
||||
otherID instanceof SiteID &&
|
||||
getSite().contentEquals( ( (SiteID)otherID).getSite() );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,6 +24,7 @@ import javax.swing.JButton;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTextArea;
|
||||
import javax.swing.JTextField;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
@@ -31,16 +32,12 @@ import net.miginfocom.swing.MigLayout;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import controller.ConfigurableNode;
|
||||
|
||||
public class SiteIDEditor extends JPanel implements ActionListener
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( SiteIDEditor.class );
|
||||
LoggerFactory.getLogger( SiteIDEditor.class );
|
||||
private SiteIDNode mSiteIDNode;
|
||||
|
||||
private JLabel mLabelName;
|
||||
private JTextField mTextSiteID;
|
||||
|
||||
public SiteIDEditor( SiteIDNode siteIDNode )
|
||||
@@ -52,7 +49,7 @@ public class SiteIDEditor extends JPanel implements ActionListener
|
||||
|
||||
private void initGUI()
|
||||
{
|
||||
setLayout( new MigLayout( "fill,wrap 2", "[right][left]", "[][][][grow]" ) );
|
||||
setLayout( new MigLayout( "fill,wrap 2", "[right][left]", "[][][][][grow]" ) );
|
||||
|
||||
add( new JLabel( "Site ID" ), "span,align center" );
|
||||
|
||||
@@ -61,6 +58,16 @@ public class SiteIDEditor extends JPanel implements ActionListener
|
||||
mTextSiteID = new JTextField(
|
||||
String.valueOf( mSiteIDNode.getSiteID().getSite() ) );
|
||||
add( mTextSiteID, "growx,push" );
|
||||
|
||||
JTextArea description = new JTextArea( "Enter a site number. "
|
||||
+ "For P25 systems, use the format RR-SS, where RR = RF "
|
||||
+ "Subsystem and SS = Site Number. For example, RFSS 1 and "
|
||||
+ "Site 3 would be: 01-03");
|
||||
|
||||
description.setLineWrap( true );
|
||||
description.setBackground( getBackground() );
|
||||
|
||||
add( description, "growx,span" );
|
||||
|
||||
JButton btnSave = new JButton( "Save" );
|
||||
btnSave.addActionListener( SiteIDEditor.this );
|
||||
@@ -82,23 +89,11 @@ public class SiteIDEditor extends JPanel implements ActionListener
|
||||
|
||||
if( siteIDString != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
int id = Integer.parseInt( siteIDString );
|
||||
|
||||
mSiteIDNode.getSiteID().setSite( id );
|
||||
|
||||
((ConfigurableNode)mSiteIDNode.getParent()).sort();
|
||||
mSiteIDNode.getSiteID().setSite( siteIDString );
|
||||
|
||||
mSiteIDNode.save();
|
||||
|
||||
mSiteIDNode.show();
|
||||
}
|
||||
catch( Exception ex )
|
||||
{
|
||||
mLog.error( "SiteIDEditor - error parsing int site " +
|
||||
"id from [" + siteIDString + "]" );
|
||||
}
|
||||
mSiteIDNode.save();
|
||||
|
||||
mSiteIDNode.show();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -108,8 +103,7 @@ public class SiteIDEditor extends JPanel implements ActionListener
|
||||
}
|
||||
else if( command.contentEquals( "Reset" ) )
|
||||
{
|
||||
mTextSiteID.setText(
|
||||
String.valueOf( mSiteIDNode.getSiteID().getSite() ) );
|
||||
mTextSiteID.setText( mSiteIDNode.getSiteID().getSite() );
|
||||
}
|
||||
|
||||
mSiteIDNode.refresh();
|
||||
|
||||
@@ -90,7 +90,7 @@ public class SiteEditor extends JPanel implements ActionListener
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog( SiteEditor.this, "Please enter a system name" );
|
||||
JOptionPane.showMessageDialog( SiteEditor.this, "Please enter a site name" );
|
||||
}
|
||||
}
|
||||
else if( command.contentEquals( "Reset" ) )
|
||||
|
||||
@@ -668,12 +668,17 @@ public abstract class ChannelState implements Listener<Message>
|
||||
FROM_TALKGROUP_TYPE,
|
||||
MESSAGE,
|
||||
MESSAGE_TYPE,
|
||||
NAC,
|
||||
SITE,
|
||||
SITE_ALIAS,
|
||||
SITE_NAME,
|
||||
SOURCE,
|
||||
SYSTEM,
|
||||
SYSTEM_NAME,
|
||||
SQUELCH,
|
||||
TO_TALKGROUP,
|
||||
TO_TALKGROUP_ALIAS,
|
||||
TO_TALKGROUP_TYPE;
|
||||
TO_TALKGROUP_TYPE,
|
||||
WACN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,8 +38,8 @@ public class LTRNetActivitySummary implements ActivitySummaryProvider
|
||||
private TreeSet<String> mTalkgroups = new TreeSet<String>();
|
||||
private TreeSet<String> mESNs = new TreeSet<String>();
|
||||
private TreeSet<Integer> mUniqueIDs = new TreeSet<Integer>();
|
||||
private TreeSet<Integer> mNeighborIDs = new TreeSet<Integer>();
|
||||
private TreeSet<Integer> mSiteIDs = new TreeSet<Integer>();
|
||||
private TreeSet<String> mNeighborIDs = new TreeSet<String>();
|
||||
private TreeSet<String> mSiteIDs = new TreeSet<String>();
|
||||
private HashMap<Integer,Double> mReceiveFrequencies =
|
||||
new HashMap<Integer,Double>();
|
||||
private HashMap<Integer,Double> mTransmitFrequencies =
|
||||
@@ -106,9 +106,9 @@ public class LTRNetActivitySummary implements ActivitySummaryProvider
|
||||
case ID_ESNL:
|
||||
break;
|
||||
case ID_NBOR:
|
||||
int neighborID = ltr.getNeighborID();
|
||||
String neighborID = ltr.getNeighborID();
|
||||
|
||||
if( neighborID != sINT_NULL_VALUE )
|
||||
if( neighborID != null )
|
||||
{
|
||||
mNeighborIDs.add( neighborID );
|
||||
}
|
||||
@@ -123,9 +123,9 @@ public class LTRNetActivitySummary implements ActivitySummaryProvider
|
||||
|
||||
break;
|
||||
case ID_SITE:
|
||||
int siteID = ltr.getSiteID();
|
||||
String siteID = ltr.getSiteID();
|
||||
|
||||
if( siteID != sINT_NULL_VALUE )
|
||||
if( siteID != null )
|
||||
{
|
||||
mSiteIDs.add( siteID );
|
||||
}
|
||||
@@ -198,17 +198,17 @@ public class LTRNetActivitySummary implements ActivitySummaryProvider
|
||||
}
|
||||
else
|
||||
{
|
||||
Iterator<Integer> it = mSiteIDs.iterator();
|
||||
Iterator<String> it = mSiteIDs.iterator();
|
||||
|
||||
while( it.hasNext() )
|
||||
{
|
||||
sb.append( "Site:\t" );
|
||||
|
||||
int siteID = it.next();
|
||||
String siteID = it.next();
|
||||
|
||||
sb.append( siteID );
|
||||
|
||||
Alias siteAlias = mAliasList.getSiteID( siteID );
|
||||
Alias siteAlias = mAliasList.getSiteID( String.valueOf( siteID ) );
|
||||
|
||||
if( siteAlias != null )
|
||||
{
|
||||
@@ -378,17 +378,17 @@ public class LTRNetActivitySummary implements ActivitySummaryProvider
|
||||
}
|
||||
else
|
||||
{
|
||||
Iterator<Integer> it = mNeighborIDs.iterator();
|
||||
Iterator<String> it = mNeighborIDs.iterator();
|
||||
|
||||
while( it.hasNext() )
|
||||
{
|
||||
int neighbor = it.next();
|
||||
String neighbor = it.next();
|
||||
|
||||
sb.append( " " );
|
||||
sb.append( neighbor );
|
||||
sb.append( " " );
|
||||
|
||||
Alias alias = mAliasList.getSiteID( neighbor );
|
||||
Alias alias = mAliasList.getSiteID( String.valueOf( neighbor ) );
|
||||
|
||||
if( alias != null )
|
||||
{
|
||||
|
||||
@@ -210,8 +210,8 @@ public class LTRNetOSWMessage extends LTRNetMessage
|
||||
sb.append( " MHz" );
|
||||
break;
|
||||
case ID_SITE:
|
||||
int siteId = getSiteID();
|
||||
if( siteId != sINT_NULL_VALUE )
|
||||
String siteId = getSiteID();
|
||||
if( siteId != null )
|
||||
{
|
||||
sb.append( "SITE ID: " );
|
||||
sb.append( siteId );
|
||||
@@ -221,10 +221,10 @@ public class LTRNetOSWMessage extends LTRNetMessage
|
||||
break;
|
||||
case ID_NBOR:
|
||||
int neighborRank = getNeighborRank();
|
||||
int neighborId = getNeighborID();
|
||||
String neighborId = getNeighborID();
|
||||
|
||||
if( neighborRank != sINT_NULL_VALUE &&
|
||||
neighborId != sINT_NULL_VALUE )
|
||||
neighborId != null )
|
||||
{
|
||||
sb.append( "NEIGHBOR SITE " );
|
||||
sb.append( neighborRank );
|
||||
@@ -354,16 +354,14 @@ public class LTRNetOSWMessage extends LTRNetMessage
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getSiteID()
|
||||
public String getSiteID()
|
||||
{
|
||||
int retVal = sINT_NULL_VALUE;
|
||||
|
||||
if( mMessageType == MessageType.ID_SITE )
|
||||
{
|
||||
retVal = mMessage.getInt( 23, 32 );
|
||||
return String.valueOf( mMessage.getInt( 23, 32 ) );
|
||||
}
|
||||
|
||||
return retVal;
|
||||
return null;
|
||||
}
|
||||
|
||||
public Alias getSiteIDAlias()
|
||||
@@ -376,16 +374,14 @@ public class LTRNetOSWMessage extends LTRNetMessage
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getNeighborID()
|
||||
public String getNeighborID()
|
||||
{
|
||||
int retVal = sINT_NULL_VALUE;
|
||||
|
||||
if( mMessageType == MessageType.ID_NBOR )
|
||||
{
|
||||
retVal = mMessage.getInt( 23, 32 );
|
||||
return String.valueOf( mMessage.getInt( 23, 32 ) );
|
||||
}
|
||||
|
||||
return retVal;
|
||||
return null;
|
||||
}
|
||||
|
||||
private Alias getNeighborIDAlias()
|
||||
|
||||
@@ -33,7 +33,7 @@ public class MPT1327ActivitySummary implements ActivitySummaryProvider,
|
||||
|
||||
private AliasList mAliasList;
|
||||
private TreeSet<String> mIdents = new TreeSet<String>();
|
||||
private int mSite;
|
||||
private String mSite;
|
||||
|
||||
/**
|
||||
* Compiles a summary of active talkgroups, unique radio ids encountered
|
||||
@@ -103,7 +103,7 @@ public class MPT1327ActivitySummary implements ActivitySummaryProvider,
|
||||
sb.append( "Decoder:\tMPT-1327\n" );
|
||||
sb.append( "Site:\t" );
|
||||
|
||||
if( mSite != 0 )
|
||||
if( mSite != null )
|
||||
{
|
||||
sb.append( mSite );
|
||||
|
||||
@@ -118,21 +118,6 @@ public class MPT1327ActivitySummary implements ActivitySummaryProvider,
|
||||
sb.append( "\n" );
|
||||
}
|
||||
}
|
||||
|
||||
sb.append( "Network:\t" );
|
||||
|
||||
if( ( mSite & 0x4000 ) == 0x4000 )
|
||||
{
|
||||
sb.append( "National #" );
|
||||
int net = (int)Long.rotateRight( ( mSite & 0x3000 ) , 12 );
|
||||
sb.append( net );
|
||||
sb.append( "\n" );
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.append( "Regional\n" );
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -36,7 +36,7 @@ import decode.mpt1327.MPT1327Message.IdentType;
|
||||
|
||||
public class MPT1327ChannelState extends ChannelState
|
||||
{
|
||||
private int mSite;
|
||||
private String mSite;
|
||||
private String mFromTalkgroup;
|
||||
private String mToTalkgroup;
|
||||
private int mChannelNumber;
|
||||
@@ -153,9 +153,9 @@ public class MPT1327ChannelState extends ChannelState
|
||||
.build() );
|
||||
break;
|
||||
case ALH:
|
||||
int sys = mpt.getSiteID();
|
||||
String sys = mpt.getSiteID();
|
||||
|
||||
if( sys != 0 && sys != mSite )
|
||||
if( sys != null && !sys.contentEquals( mSite ) )
|
||||
{
|
||||
mSite = sys;
|
||||
broadcastChange( ChangedAttribute.CHANNEL_SITE_NUMBER );
|
||||
@@ -315,7 +315,7 @@ public class MPT1327ChannelState extends ChannelState
|
||||
super.reset();
|
||||
}
|
||||
|
||||
public int getSite()
|
||||
public String getSite()
|
||||
{
|
||||
return mSite;
|
||||
}
|
||||
|
||||
@@ -327,19 +327,19 @@ public class MPT1327Message extends Message
|
||||
/**
|
||||
* MPT1327 Site identifier
|
||||
*/
|
||||
public int getSiteID()
|
||||
public String getSiteID()
|
||||
{
|
||||
if( mMessageType == MPTMessageType.BCAST )
|
||||
{
|
||||
return mMessage.getInt( B1_SYSTEM_ID );
|
||||
return String.valueOf( mMessage.getInt( B1_SYSTEM_ID ) );
|
||||
}
|
||||
else if( mMessageType == MPTMessageType.ALH )
|
||||
{
|
||||
return mMessage.getInt( B2_SYSTEM_ID );
|
||||
return String.valueOf( mMessage.getInt( B2_SYSTEM_ID ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -348,7 +348,7 @@ public class MPT1327Message extends Message
|
||||
*/
|
||||
public boolean hasSystemID()
|
||||
{
|
||||
return getSiteID() != 0;
|
||||
return getSiteID() != null;
|
||||
}
|
||||
|
||||
public SystemDefinition getSystemDefinition()
|
||||
@@ -599,7 +599,7 @@ public class MPT1327Message extends Message
|
||||
break;
|
||||
case ACKT:
|
||||
sb.append( " SITE:" );
|
||||
sb.append( format( getSiteID(), 5 ) );
|
||||
sb.append( getSiteID() );
|
||||
|
||||
sb.append( " LONG ACK MESSAGE" );
|
||||
|
||||
@@ -619,7 +619,7 @@ public class MPT1327Message extends Message
|
||||
break;
|
||||
case ACKQ:
|
||||
sb.append( " SYSTEM:" );
|
||||
sb.append( format( getSiteID(), 5 ) );
|
||||
sb.append( getSiteID() );
|
||||
|
||||
sb.append( " CALL QUEUED FROM:" );
|
||||
|
||||
@@ -637,7 +637,7 @@ public class MPT1327Message extends Message
|
||||
break;
|
||||
case ACKX:
|
||||
sb.append( " SYSTEM:" );
|
||||
sb.append( format( getSiteID(), 5 ) );
|
||||
sb.append( getSiteID() );
|
||||
|
||||
sb.append( " MESSAGE REJECTED FROM:" );
|
||||
|
||||
@@ -687,7 +687,7 @@ public class MPT1327Message extends Message
|
||||
case ALHX:
|
||||
case ALHF:
|
||||
sb.append( " SYSTEM:" );
|
||||
sb.append( format( getSiteID(), 5 ) );
|
||||
sb.append( getSiteID() );
|
||||
|
||||
if( hasToID() )
|
||||
{
|
||||
@@ -706,7 +706,7 @@ public class MPT1327Message extends Message
|
||||
break;
|
||||
case BCAST:
|
||||
sb.append( " SYSTEM:" );
|
||||
sb.append( format( getSiteID(), 5 ) );
|
||||
sb.append( getSiteID() );
|
||||
|
||||
SystemDefinition sysdef = getSystemDefinition();
|
||||
|
||||
|
||||
@@ -191,9 +191,9 @@ public class MPT1327Panel extends ChannelStatePanel
|
||||
return null;
|
||||
}
|
||||
|
||||
private Alias getSiteAlias( int site )
|
||||
private Alias getSiteAlias( String site )
|
||||
{
|
||||
if( site != 0 && mAliasList != null )
|
||||
if( site != null && mAliasList != null )
|
||||
{
|
||||
return mAliasList.getSiteID( site );
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
package decode.p25;
|
||||
|
||||
import message.Message;
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import audio.SquelchListener;
|
||||
import audio.SquelchListener.SquelchState;
|
||||
@@ -25,10 +26,20 @@ import controller.channel.ProcessingChain;
|
||||
import controller.state.AuxChannelState;
|
||||
import controller.state.ChannelState;
|
||||
import decode.p25.message.P25Message;
|
||||
import decode.p25.message.pdu.RFSSStatusBroadcastExtended;
|
||||
import decode.p25.message.tsbk.osp.control.RFSSStatusBroadcast;
|
||||
|
||||
public class P25ChannelState extends ChannelState
|
||||
{
|
||||
private P25ActivitySummary mActivitySummary;
|
||||
private String mNAC;
|
||||
private String mSystem;
|
||||
private String mSite;
|
||||
private String mSiteAlias;
|
||||
private String mFromTalkgroup;
|
||||
private String mFromAlias;
|
||||
private String mToTalkgroup;
|
||||
private String mToAlias;
|
||||
|
||||
public P25ChannelState( ProcessingChain chain, AliasList aliasList )
|
||||
{
|
||||
@@ -52,6 +63,73 @@ public class P25ChannelState extends ChannelState
|
||||
{
|
||||
mActivitySummary.receive( (P25Message)message );
|
||||
}
|
||||
|
||||
if( message instanceof RFSSStatusBroadcast )
|
||||
{
|
||||
RFSSStatusBroadcast rfss = (RFSSStatusBroadcast)message;
|
||||
|
||||
if( mNAC == null || !mNAC.contentEquals( rfss.getNAC() ) )
|
||||
{
|
||||
mNAC = rfss.getNAC();
|
||||
|
||||
broadcastChange( ChangedAttribute.NAC );
|
||||
}
|
||||
|
||||
if( mSystem == null || !mSystem.contentEquals( rfss.getSystemID() ) )
|
||||
{
|
||||
mSystem = rfss.getSystemID();
|
||||
|
||||
broadcastChange( ChangedAttribute.SYSTEM );
|
||||
}
|
||||
|
||||
String site = rfss.getRFSubsystemID() + "-" + rfss.getSiteID();
|
||||
|
||||
if( mSite == null || !mSite.contentEquals( site ) )
|
||||
{
|
||||
mSite = site;
|
||||
|
||||
broadcastChange( ChangedAttribute.SITE );
|
||||
}
|
||||
}
|
||||
else if( message instanceof RFSSStatusBroadcastExtended )
|
||||
{
|
||||
RFSSStatusBroadcastExtended rfss = (RFSSStatusBroadcastExtended)message;
|
||||
|
||||
if( mNAC == null || !mNAC.contentEquals( rfss.getNAC() ) )
|
||||
{
|
||||
mNAC = rfss.getNAC();
|
||||
|
||||
broadcastChange( ChangedAttribute.NAC );
|
||||
}
|
||||
|
||||
if( mSystem == null || !mSystem.contentEquals( rfss.getSystemID() ) )
|
||||
{
|
||||
mSystem = rfss.getSystemID();
|
||||
|
||||
broadcastChange( ChangedAttribute.SYSTEM );
|
||||
}
|
||||
|
||||
String site = rfss.getRFSubsystemID() + "-" + rfss.getSiteID();
|
||||
|
||||
if( mSite == null || !mSite.contentEquals( site ) )
|
||||
{
|
||||
mSite = site;
|
||||
|
||||
if( mAliasList != null )
|
||||
{
|
||||
Alias alias = mAliasList.getSiteID( mSite );
|
||||
|
||||
if( alias != null )
|
||||
{
|
||||
mSiteAlias = alias.getName();
|
||||
|
||||
broadcastChange( ChangedAttribute.SITE_ALIAS );
|
||||
}
|
||||
}
|
||||
|
||||
broadcastChange( ChangedAttribute.SITE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,4 +154,44 @@ public class P25ChannelState extends ChannelState
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String getNAC()
|
||||
{
|
||||
return mNAC;
|
||||
}
|
||||
|
||||
public String getSystem()
|
||||
{
|
||||
return mSystem;
|
||||
}
|
||||
|
||||
public String getSiteAlias()
|
||||
{
|
||||
return mSiteAlias;
|
||||
}
|
||||
|
||||
public String getSite()
|
||||
{
|
||||
return mSite;
|
||||
}
|
||||
|
||||
public String getFromTalkgroup()
|
||||
{
|
||||
return mFromTalkgroup;
|
||||
}
|
||||
|
||||
public String getFromAlias()
|
||||
{
|
||||
return mFromAlias;
|
||||
}
|
||||
|
||||
public String getToTalkgroup()
|
||||
{
|
||||
return mToTalkgroup;
|
||||
}
|
||||
|
||||
public String getToAlias()
|
||||
{
|
||||
return mToAlias;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,17 @@ public class P25Panel extends ChannelStatePanel
|
||||
private JLabel mChannelLabel;
|
||||
|
||||
private JLabel mProtocol = new JLabel( "P25" );
|
||||
private JLabel mFrom = new JLabel( " " );
|
||||
private JLabel mFromAlias = new JLabel( " " );
|
||||
|
||||
private JLabel mNAC = new JLabel( "NAC:" );
|
||||
private JLabel mTo = new JLabel( " " );
|
||||
private JLabel mToAlias = new JLabel( " " );
|
||||
|
||||
private JLabel mSystem = new JLabel( "SYS:" );
|
||||
private JLabel mSite = new JLabel( "Site:" );
|
||||
private JLabel mSiteAlias = new JLabel( "WACN:" );
|
||||
|
||||
|
||||
public P25Panel( Channel channel )
|
||||
{
|
||||
@@ -62,11 +73,45 @@ public class P25Panel extends ChannelStatePanel
|
||||
mProtocol.setFont( mFontDecoder );
|
||||
mProtocol.setForeground( mColorLabelDecoder );
|
||||
|
||||
mFrom.setFont( mFontDecoder );
|
||||
mFrom.setForeground( mColorLabelDecoder );
|
||||
|
||||
mFromAlias.setFont( mFontDecoder );
|
||||
mFromAlias.setForeground( mColorLabelDecoder );
|
||||
|
||||
mNAC.setFont( mFontDecoder );
|
||||
mNAC.setForeground( mColorLabelDecoder );
|
||||
|
||||
mTo.setFont( mFontDecoder );
|
||||
mTo.setForeground( mColorLabelDecoder );
|
||||
|
||||
mToAlias.setFont( mFontDecoder );
|
||||
mToAlias.setForeground( mColorLabelDecoder );
|
||||
|
||||
mSystem.setFont( mFontDecoder );
|
||||
mSystem.setForeground( mColorLabelDecoder );
|
||||
|
||||
mSiteAlias.setFont( mFontDecoder );
|
||||
mSiteAlias.setForeground( mColorLabelDecoder );
|
||||
|
||||
mSite.setFont( mFontDecoder );
|
||||
mSite.setForeground( mColorLabelDecoder );
|
||||
|
||||
add( mStateLabel );
|
||||
add( mSourceLabel );
|
||||
add( mChannelLabel, "wrap" );
|
||||
|
||||
add( mProtocol, "wrap" );
|
||||
add( mProtocol );
|
||||
add( mFrom );
|
||||
add( mFromAlias, "wrap" );
|
||||
|
||||
add( mNAC );
|
||||
add( mTo );
|
||||
add( mToAlias, "wrap" );
|
||||
|
||||
add( mSystem );
|
||||
add( mSite );
|
||||
add( mSiteAlias, "wrap" );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -77,11 +122,13 @@ public class P25Panel extends ChannelStatePanel
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
final P25ChannelState channelState = (P25ChannelState)mChannel.
|
||||
getProcessingChain().getChannelState();
|
||||
|
||||
switch( changedAttribute )
|
||||
{
|
||||
case CHANNEL_STATE:
|
||||
mStateLabel.setText( mChannel.getProcessingChain().
|
||||
getChannelState().getState().getDisplayValue() );
|
||||
mStateLabel.setText( channelState.getState().getDisplayValue() );
|
||||
break;
|
||||
case SOURCE:
|
||||
mSourceLabel.setText( mChannel.getSourceConfiguration()
|
||||
@@ -92,6 +139,31 @@ public class P25Panel extends ChannelStatePanel
|
||||
case SYSTEM_NAME:
|
||||
mChannelLabel.setText( mChannel.getChannelDisplayName() );
|
||||
break;
|
||||
case NAC:
|
||||
mNAC.setText( "NAC:" + channelState.getNAC() );
|
||||
break;
|
||||
case SYSTEM:
|
||||
mSystem.setText( "SYS:" + channelState.getSystem() );
|
||||
break;
|
||||
case SITE:
|
||||
mSite.setText( "SITE:" + channelState.getSite() );
|
||||
break;
|
||||
case SITE_ALIAS:
|
||||
mSiteAlias.setText( channelState.getSiteAlias() );
|
||||
break;
|
||||
case FROM_TALKGROUP:
|
||||
mFrom.setText( channelState.getFromTalkgroup() );
|
||||
break;
|
||||
case FROM_TALKGROUP_ALIAS:
|
||||
mFromAlias.setText( channelState.getFromAlias() );
|
||||
break;
|
||||
case TO_TALKGROUP:
|
||||
mTo.setText( channelState.getToTalkgroup() );
|
||||
break;
|
||||
case TO_TALKGROUP_ALIAS:
|
||||
mToAlias.setText( channelState.getToAlias() );
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
repaint();
|
||||
|
||||
@@ -75,7 +75,7 @@ public class P25Message extends Message
|
||||
@Override
|
||||
public String getEventType()
|
||||
{
|
||||
return "P25 " + mDUID.name();
|
||||
return mDUID.name();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
15
src/decode/p25/message/tdu/TDUMessage.java
Normal file
15
src/decode/p25/message/tdu/TDUMessage.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package decode.p25.message.tdu;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BitSetBuffer;
|
||||
import decode.p25.message.P25Message;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
public class TDUMessage extends P25Message
|
||||
{
|
||||
public TDUMessage( BitSetBuffer message, DataUnitID duid,
|
||||
AliasList aliasList )
|
||||
{
|
||||
super( message, duid, aliasList );
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import decode.p25.TrellisHalfRate;
|
||||
import decode.p25.message.P25Message;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.message.pdu.PDUMessageFactory;
|
||||
import decode.p25.message.tdu.TDUMessage;
|
||||
import decode.p25.message.tsbk.TSBKMessage;
|
||||
import decode.p25.message.tsbk.TSBKMessageFactory;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -321,7 +322,7 @@ public class P25MessageFramer implements Listener<Dibit>
|
||||
break;
|
||||
case TDU:
|
||||
mComplete = true;
|
||||
dispatch( new P25Message( mMessage.copy(), mDUID, mAliasList ) );
|
||||
dispatch( new TDUMessage( mMessage.copy(), mDUID, mAliasList ) );
|
||||
break;
|
||||
case TDULC:
|
||||
mComplete = true;
|
||||
|
||||
Reference in New Issue
Block a user