P25 work in progress

This commit is contained in:
dennis.sheirer
2014-11-15 21:24:21 +00:00
parent eee28a3449
commit 20c9ae329b
34 changed files with 1511 additions and 59 deletions

View File

@@ -0,0 +1,125 @@
package decode.p25.reference;
public enum DenyReason
{
RESERVED( 0x00 ),
REQUESTING_UNIT_NOT_VALID( 0x10 ),
REQUESTING_UNIT_NOT_AUTHORIZED_FOR_SERVICE( 0x11 ),
TARGET_UNIT_NOT_VALID( 0x20 ),
TARGET_UNIT_NOT_AUTHORIZED_FOR_SERVICE( 0x21 ),
TARGET_UNIT_REFUSED_CALL( 0x2F ),
TARGET_GROUP_NOT_VALID( 0x30 ),
TARGET_GROUP_NOT_AUTHORIZED_FOR_SERVICE( 0x31 ),
INVALID_DIALING( 0x40 ),
TELEPHONE_NUMBER_NOT_AUTHORIZED( 0x41 ),
PSTN_NOT_VALID( 0x42 ),
CALL_TIMEOUT( 0x50 ),
LANDLINE_TERMINATED_CALL( 0x51 ),
SUBSCRIBER_UNIT_TERMINATED_CALL( 0x52 ),
CALL_PREEMPTED( 0x5F ),
SITE_ACCESS_DENIAL( 0x60 ),
USER_OR_SYSTEM_DEFINED( 0x61 ),
CALL_OPTIONS_NOT_VALID_FOR_SERVICE( 0xF0 ),
PROTECTION_SERVICE_OPTION_NOT_VALID( 0xF1 ),
DUPLEX_SERVICE_OPTION_NOT_VALID( 0xF2 ),
CIRCUIT_OR_PACKET_MODE_OPTION_NOT_VALID( 0xF3 ),
SYSTEM_DOES_NOT_SUPPORT_SERVICE( 0xFF ),
UNKNOWN( -1 );
private int mCode;
private DenyReason( int code )
{
mCode = code;
}
public static DenyReason fromCode( int code )
{
if( code == 0x10 )
{
return DenyReason.REQUESTING_UNIT_NOT_VALID;
}
else if( code == 0x11 )
{
return REQUESTING_UNIT_NOT_AUTHORIZED_FOR_SERVICE;
}
else if( code == 0x20 )
{
return DenyReason.TARGET_UNIT_NOT_VALID;
}
else if( code == 0x21 )
{
return TARGET_UNIT_NOT_AUTHORIZED_FOR_SERVICE;
}
else if( code == 0x2F )
{
return DenyReason.TARGET_UNIT_REFUSED_CALL;
}
else if( code == 0x30 )
{
return TARGET_GROUP_NOT_VALID;
}
else if( code == 0x31 )
{
return DenyReason.TARGET_GROUP_NOT_AUTHORIZED_FOR_SERVICE;
}
else if( code == 0x40 )
{
return DenyReason.INVALID_DIALING;
}
else if( code == 0x41 )
{
return DenyReason.TELEPHONE_NUMBER_NOT_AUTHORIZED;
}
else if( code == 0x42 )
{
return DenyReason.PSTN_NOT_VALID;
}
else if( code == 0x50 )
{
return CALL_TIMEOUT;
}
else if( code == 0x51 )
{
return LANDLINE_TERMINATED_CALL;
}
else if( code == 0x52 )
{
return SUBSCRIBER_UNIT_TERMINATED_CALL;
}
else if( code == 0x5F )
{
return DenyReason.CALL_PREEMPTED;
}
else if( code == 0x60 )
{
return SITE_ACCESS_DENIAL;
}
else if( code == 0xF0 )
{
return CALL_OPTIONS_NOT_VALID_FOR_SERVICE;
}
else if( code == 0xF1 )
{
return PROTECTION_SERVICE_OPTION_NOT_VALID;
}
else if( code == 0xF2 )
{
return DenyReason.DUPLEX_SERVICE_OPTION_NOT_VALID;
}
else if( code == 0xF3 )
{
return CIRCUIT_OR_PACKET_MODE_OPTION_NOT_VALID;
}
else if( code <= 0x5E )
{
return DenyReason.RESERVED;
}
else if( code >= 0x61 )
{
return DenyReason.USER_OR_SYSTEM_DEFINED;
}
return UNKNOWN;
}
}

View File

@@ -63,7 +63,7 @@ public enum Opcode
RFSS_STATUS_BROADCAST( "RFSS Status Broadcast", 58 ),
NETWORK_STATUS_BROADCAST( "Network Status Broadcast", 59 ),
ADJACENT_STATUS_BROADCAST( "Adjacent Status Broadcast", 60 ),
IDENTIFIER_UPDATE_NON_VHF_UHF( "Identifier Update for non-VHF/UHF Bands", 61 ),
IDENTIFIER_UPDATE( "Identifier Update", 61 ),
PROTECTION_PARAMETER_BROADCAST( "Protection Parameter Broadcast", 62 ),
PROTECTION_PARAMETER_UPDATE( "Protection Parameter Update", 63 ),
UNKNOWN( "Unknown", -1 );

View File

@@ -0,0 +1,69 @@
package decode.p25.reference;
public enum QueuedResponseReason
{
RESERVED( 0x00 ),
REQUESTING_UNIT_BUSY_OTHER_SERVICE( 0x10 ),
TARGET_UNIT_BUSY_OTHER_SERVICE( 0x20 ),
TARGET_UNIT_QUEUED_THIS_CALL( 0x2F ),
TARGET_GROUP_CURRENTLY_ACTIVE( 0x30 ),
CHANNEL_RESOURCES_UNAVAILABLE( 0x40 ),
TELEPHONE_RESOURCES_UNAVAILABLE( 0x41 ),
DATA_RESOURCES_UNAVAILABLE( 0x42 ),
SUPERSEDING_SERVICE_CURRENTLY_ACTIVE( 0x50 ),
USER_OR_SYSTEM_DEFINED( 0x80 ),
UNKNOWN( -1 );
private int mCode;
private QueuedResponseReason( int code )
{
mCode = code;
}
public static QueuedResponseReason fromCode( int code )
{
if( code == 0x10 )
{
return QueuedResponseReason.REQUESTING_UNIT_BUSY_OTHER_SERVICE;
}
else if( code == 0x20 )
{
return QueuedResponseReason.TARGET_UNIT_BUSY_OTHER_SERVICE;
}
else if( code == 0x2F )
{
return QueuedResponseReason.TARGET_UNIT_QUEUED_THIS_CALL;
}
else if( code == 0x30 )
{
return QueuedResponseReason.TARGET_GROUP_CURRENTLY_ACTIVE;
}
else if( code == 0x40 )
{
return QueuedResponseReason.CHANNEL_RESOURCES_UNAVAILABLE;
}
else if( code == 0x41 )
{
return QueuedResponseReason.TELEPHONE_RESOURCES_UNAVAILABLE;
}
else if( code == 0x42 )
{
return QueuedResponseReason.DATA_RESOURCES_UNAVAILABLE;
}
else if( code == 0x50 )
{
return QueuedResponseReason.SUPERSEDING_SERVICE_CURRENTLY_ACTIVE;
}
else if( code <= 0x7F )
{
return QueuedResponseReason.RESERVED;
}
else if( code >= 0x80 )
{
return QueuedResponseReason.USER_OR_SYSTEM_DEFINED;
}
return UNKNOWN;
}
}