mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-14 17:47:32 -05:00
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:
@@ -45,7 +45,19 @@ public class PDUMessage extends P25Message
|
||||
sb.append( "NAC:" );
|
||||
sb.append( getNAC() );
|
||||
sb.append( " " );
|
||||
sb.append( getDUID().getLabel() );
|
||||
|
||||
switch( getFormat() )
|
||||
{
|
||||
case ALTERNATE_MULTI_BLOCK_TRUNKING_CONTROL:
|
||||
sb.append( "ATSBK" );
|
||||
break;
|
||||
case UNCONFIRMED_MULTI_BLOCK_TRUNKING_CONTROL:
|
||||
sb.append( "**** UNCONFIRMED MULTI-BLOCK TRUNKING CONTROL" );
|
||||
break;
|
||||
default:
|
||||
sb.append( getDUID().getLabel() );
|
||||
break;
|
||||
}
|
||||
|
||||
if( vendor == Vendor.STANDARD )
|
||||
{
|
||||
|
||||
@@ -66,6 +66,7 @@ public class PDUMessageFactory
|
||||
return new GroupDataChannelGrantExtended(
|
||||
message, duid, aliasList );
|
||||
case GROUP_VOICE_CHANNEL_GRANT:
|
||||
|
||||
return new GroupVoiceChannelGrantExplicit(
|
||||
message, duid, aliasList );
|
||||
case INDIVIDUAL_DATA_CHANNEL_GRANT:
|
||||
@@ -123,7 +124,6 @@ public class PDUMessageFactory
|
||||
|
||||
case UNCONFIRMED_MULTI_BLOCK_TRUNKING_CONTROL:
|
||||
return new PDUMessage( message, duid, aliasList );
|
||||
|
||||
default:
|
||||
return new PDUMessage( message, duid, aliasList );
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package module.decode.p25.message.pdu.osp.control;
|
||||
|
||||
import module.decode.p25.message.IAdjacentSite;
|
||||
import module.decode.p25.message.IBandIdentifier;
|
||||
import module.decode.p25.message.IdentifierReceiver;
|
||||
import module.decode.p25.message.pdu.PDUMessage;
|
||||
@@ -11,7 +12,7 @@ import bits.BinaryMessage;
|
||||
import edac.CRCP25;
|
||||
|
||||
public class AdjacentStatusBroadcastExtended extends PDUMessage
|
||||
implements IdentifierReceiver
|
||||
implements IdentifierReceiver, IAdjacentSite
|
||||
{
|
||||
public static final int[] LRA = { 88,89,90,91,92,93,94,95 };
|
||||
public static final int[] SYSTEM_ID = { 100,101,102,103,104,105,106,107,108,
|
||||
@@ -57,11 +58,11 @@ public class AdjacentStatusBroadcastExtended extends PDUMessage
|
||||
|
||||
sb.append( getMessageStub() );
|
||||
|
||||
sb.append( " LRA:" + getLocationRegistrationArea() );
|
||||
sb.append( " LRA:" + getLRA() );
|
||||
|
||||
sb.append( " SYS:" + getSystemID() );
|
||||
|
||||
sb.append( " RFSS:" + getRFSubsystemID() );
|
||||
sb.append( " RFSS:" + getRFSS() );
|
||||
|
||||
sb.append( " SITE:" + getSiteID() );
|
||||
|
||||
@@ -73,28 +74,29 @@ public class AdjacentStatusBroadcastExtended extends PDUMessage
|
||||
|
||||
sb.append( " UP:" + getUplinkFrequency() );
|
||||
|
||||
sb.append( " SYS SVC CLASS:" +
|
||||
SystemService.toString( getSystemServiceClass() ) );
|
||||
sb.append( " SYS SVC CLASS:" + getSystemServiceClass() );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
public String getLocationRegistrationArea()
|
||||
{
|
||||
return mMessage.getHex( LRA, 2 );
|
||||
}
|
||||
|
||||
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 getSystemID()
|
||||
{
|
||||
return mMessage.getHex( SYSTEM_ID, 3 );
|
||||
}
|
||||
|
||||
public String getRFSubsystemID()
|
||||
{
|
||||
return mMessage.getHex( RF_SUBSYSTEM_ID, 2 );
|
||||
}
|
||||
|
||||
public String getSiteID()
|
||||
{
|
||||
return mMessage.getHex( SITE_ID, 2 );
|
||||
@@ -120,11 +122,6 @@ public class AdjacentStatusBroadcastExtended extends PDUMessage
|
||||
return mMessage.getInt( RECEIVE_CHANNEL );
|
||||
}
|
||||
|
||||
public int getSystemServiceClass()
|
||||
{
|
||||
return mMessage.getInt( SYSTEM_SERVICE_CLASS );
|
||||
}
|
||||
|
||||
public long getDownlinkFrequency()
|
||||
{
|
||||
return calculateDownlink( mTransmitIdentifierProvider, getTransmitChannel() );
|
||||
@@ -158,4 +155,34 @@ public class AdjacentStatusBroadcastExtended extends PDUMessage
|
||||
|
||||
return idens;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRFSS()
|
||||
{
|
||||
return mMessage.getHex( RF_SUBSYSTEM_ID, 2 );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLRA()
|
||||
{
|
||||
return mMessage.getHex( LRA, 2 );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSystemServiceClass()
|
||||
{
|
||||
return SystemService.toString( mMessage.getInt( SYSTEM_SERVICE_CLASS ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDownlinkChannel()
|
||||
{
|
||||
return getTransmitIdentifier() + "-" + getTransmitChannel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUplinkChannel()
|
||||
{
|
||||
return getReceiveIdentifier() + "-" + getReceiveChannel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,6 +77,9 @@ public class GroupVoiceChannelGrantExplicit extends PDUMessage
|
||||
sb.append( " CHAN UP:" + getReceiveChannelIdentifier() + "-" + getReceiveChannelNumber() );
|
||||
sb.append( " " + getUplinkFrequency() );
|
||||
|
||||
sb.append( " " );
|
||||
sb.append( mMessage.toString() );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user