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