P25 Decoder Updates.

-Improved handling of channel grants and call event logging
-Prevent traffic channels from changing to control channel state
-Change text on PDU Alternate Multi-Block to reflect trunking message
type
-Added interface for Adjacent Site messages and improved logging
This commit is contained in:
denny
2015-12-20 11:12:08 -05:00
parent c89a68d9fc
commit 6ab4d55f47
16 changed files with 721 additions and 304 deletions

View File

@@ -1,5 +1,8 @@
package module.decode.p25.message.ldu.lc;
import module.decode.p25.message.IAdjacentSite;
import module.decode.p25.message.IBandIdentifier;
import module.decode.p25.message.IdentifierReceiver;
import module.decode.p25.message.ldu.LDU1Message;
import module.decode.p25.reference.LinkControlOpcode;
@@ -7,6 +10,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AdjacentSiteStatusBroadcastExplicit extends LDU1Message
implements IdentifierReceiver, IAdjacentSite
{
private final static Logger mLog =
LoggerFactory.getLogger( AdjacentSiteStatusBroadcastExplicit.class );
@@ -22,6 +26,9 @@ public class AdjacentSiteStatusBroadcastExplicit extends LDU1Message
public static final int[] RECEIVE_CHANNEL = { 724,725,730,731,732,733,734,
735,740,741,742,743 };
private IBandIdentifier mTransmitBand;
private IBandIdentifier mReceiveBand;
public AdjacentSiteStatusBroadcastExplicit( LDU1Message message )
{
super( message );
@@ -40,27 +47,45 @@ public class AdjacentSiteStatusBroadcastExplicit extends LDU1Message
sb.append( getMessageStub() );
sb.append( " LRA:" + getLocationRegistrationArea() );
sb.append( " LRA:" + getLRA() );
sb.append( " SITE:" + getRFSubsystemID() + "-" + getSiteID() );
sb.append( " SITE:" + getRFSS() + "-" + getSiteID() );
sb.append( " DNLINK:" + getTransmitChannelNumber() );
sb.append( " DNLINK:" + getDownlinkChannel() );
sb.append( " UPLINK:" + getReceiveChannelNumber() );
sb.append( " UPLINK:" + getUplinkChannel() );
return sb.toString();
}
public String getLocationRegistrationArea()
public String getUniqueID()
{
StringBuilder sb = new StringBuilder();
sb.append( getSystemID() );
sb.append( ":" );
sb.append( getRFSS() );
sb.append( ":" );
sb.append( getSiteID() );
return sb.toString();
}
public String getLRA()
{
return mMessage.getHex( LRA, 2 );
}
public String getRFSubsystemID()
public String getRFSS()
{
return mMessage.getHex( RFSS_ID, 2 );
}
public String getSystemID()
{
return "***";
}
public String getSiteID()
{
return mMessage.getHex( SITE_ID, 2 );
@@ -76,7 +101,7 @@ public class AdjacentSiteStatusBroadcastExplicit extends LDU1Message
return mMessage.getInt( TRANSMIT_CHANNEL );
}
public String getTransmitChannelNumber()
public String getDownlinkChannel()
{
return getTransmitIdentifier() + "-" + getTransmitChannel();
}
@@ -91,8 +116,50 @@ public class AdjacentSiteStatusBroadcastExplicit extends LDU1Message
return mMessage.getInt( RECEIVE_CHANNEL );
}
public String getReceiveChannelNumber()
public String getUplinkChannel()
{
return getReceiveIdentifier() + "-" + getReceiveChannel();
}
@Override
public String getSystemServiceClass()
{
return "[]";
}
public long getDownlinkFrequency()
{
return calculateDownlink( mTransmitBand, getTransmitChannel() );
}
public long getUplinkFrequency()
{
return calculateUplink( mReceiveBand, getReceiveChannel() );
}
@Override
public void setIdentifierMessage( int identifier, IBandIdentifier message )
{
if( identifier == getTransmitIdentifier() )
{
mTransmitBand = message;
}
if( identifier == getReceiveIdentifier() )
{
mReceiveBand = message;
}
}
@Override
public int[] getIdentifiers()
{
int[] identifiers = new int[ 2 ];
identifiers[ 0 ] = getTransmitIdentifier();
identifiers[ 1 ] = getReceiveIdentifier();
return identifiers;
}
}