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:
dennis.sheirer
2014-11-26 12:09:21 +00:00
parent 86899e8a77
commit 1ff69404f4
16 changed files with 286 additions and 107 deletions

View File

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

View File

@@ -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

View File

@@ -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();

View File

@@ -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" ) )

View File

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

View File

@@ -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 )
{ {

View File

@@ -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()

View File

@@ -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
{ {

View File

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

View File

@@ -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();

View File

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

View File

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

View File

@@ -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();

View File

@@ -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

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

View File

@@ -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;