Added new message for Packet Data Unit Confirmed messages with unknown

PDUType.
This commit is contained in:
denny
2016-02-04 21:14:16 -05:00
parent 133adec27a
commit d9be346d7f
6 changed files with 89 additions and 20 deletions

View File

@@ -1642,7 +1642,7 @@ public class P25DecoderState extends DecoderState
switch( pduc.getPDUType() ) switch( pduc.getPDUType() )
{ {
case SN_ACTIVATE_TDS_CONTEXT_ACCEPT: case SNDCP_ACTIVATE_TDS_CONTEXT_ACCEPT:
SNDCPActivateTDSContextAccept satca = SNDCPActivateTDSContextAccept satca =
(SNDCPActivateTDSContextAccept)pduc; (SNDCPActivateTDSContextAccept)pduc;
@@ -1654,7 +1654,7 @@ public class P25DecoderState extends DecoderState
.to( satca.getLogicalLinkID() ) .to( satca.getLogicalLinkID() )
.build() ); .build() );
break; break;
case SN_ACTIVATE_TDS_CONTEXT_REJECT: case SNDCP_ACTIVATE_TDS_CONTEXT_REJECT:
SNDCPActivateTDSContextReject satcr = SNDCPActivateTDSContextReject satcr =
(SNDCPActivateTDSContextReject)pduc; (SNDCPActivateTDSContextReject)pduc;
@@ -1679,7 +1679,7 @@ public class P25DecoderState extends DecoderState
.from( satcreq.getLogicalLinkID() ) .from( satcreq.getLogicalLinkID() )
.build() ); .build() );
break; break;
case SN_DEACTIVATE_TDS_CONTEXT_ACCEPT: case SNDCP_DEACTIVATE_TDS_CONTEXT_ACCEPT:
SNDCPDeactivateTDSContext sdtca = SNDCPDeactivateTDSContext sdtca =
(SNDCPDeactivateTDSContext)pduc; (SNDCPDeactivateTDSContext)pduc;
@@ -1691,7 +1691,7 @@ public class P25DecoderState extends DecoderState
.from( sdtca.getLogicalLinkID() ) .from( sdtca.getLogicalLinkID() )
.build() ); .build() );
break; break;
case SN_DEACTIVATE_TDS_CONTEXT_REQUEST: case SNDCP_DEACTIVATE_TDS_CONTEXT_REQUEST:
SNDCPDeactivateTDSContext sdtcreq = SNDCPDeactivateTDSContext sdtcreq =
(SNDCPDeactivateTDSContext)pduc; (SNDCPDeactivateTDSContext)pduc;
@@ -1703,7 +1703,7 @@ public class P25DecoderState extends DecoderState
.from( sdtcreq.getLogicalLinkID() ) .from( sdtcreq.getLogicalLinkID() )
.build() ); .build() );
break; break;
case SN_RF_CONFIRMED_DATA: case SNDCP_RF_CONFIRMED_DATA:
SNDCPUserData sud = (SNDCPUserData)pduc; SNDCPUserData sud = (SNDCPUserData)pduc;
StringBuilder sbFrom = new StringBuilder(); StringBuilder sbFrom = new StringBuilder();
@@ -1732,7 +1732,7 @@ public class P25DecoderState extends DecoderState
.to( pduc.getLogicalLinkID() ) .to( pduc.getLogicalLinkID() )
.build() ); .build() );
break; break;
case SN_RF_UNCONFIRMED_DATA: case SNDCP_RF_UNCONFIRMED_DATA:
break; break;
default: default:
mLog.debug( "PDUC - Unrecognized Message: " + pduc.toString() ); mLog.debug( "PDUC - Unrecognized Message: " + pduc.toString() );

View File

@@ -48,19 +48,27 @@ public class PDUConfirmedMessageFactory
case UNENCRYPTED_USER_DATA: case UNENCRYPTED_USER_DATA:
switch( message.getPDUType() ) switch( message.getPDUType() )
{ {
case SN_ACTIVATE_TDS_CONTEXT_ACCEPT: case SNDCP_ACTIVATE_TDS_CONTEXT_ACCEPT:
return new SNDCPActivateTDSContextAccept( message ); return new SNDCPActivateTDSContextAccept( message );
case SN_ACTIVATE_TDS_CONTEXT_REJECT: case SNDCP_ACTIVATE_TDS_CONTEXT_REJECT:
return new SNDCPActivateTDSContextReject( message ); return new SNDCPActivateTDSContextReject( message );
case SN_ACTIVATE_TDS_CONTEXT_REQUEST: case SN_ACTIVATE_TDS_CONTEXT_REQUEST:
return new SNDCPActivateTDSContextRequest( message ); return new SNDCPActivateTDSContextRequest( message );
case SN_DEACTIVATE_TDS_CONTEXT_ACCEPT: case SNDCP_DEACTIVATE_TDS_CONTEXT_ACCEPT:
case SN_DEACTIVATE_TDS_CONTEXT_REQUEST: case SNDCP_DEACTIVATE_TDS_CONTEXT_REQUEST:
return new SNDCPDeactivateTDSContext( message ); return new SNDCPDeactivateTDSContext( message );
case SN_RF_CONFIRMED_DATA: case SNDCP_RF_CONFIRMED_DATA:
return new SNDCPUserData( message ); return new SNDCPUserData( message );
case SN_RF_UNCONFIRMED_DATA: case SNDCP_RF_UNCONFIRMED_DATA:
break; break;
case PDU_TYPE_6:
case PDU_TYPE_7:
case PDU_TYPE_8:
case PDU_TYPE_9:
case PDU_TYPE_10:
case PDU_TYPE_11:
return new PDUTypeUnknown( message );
case UNKNOWN:
default: default:
break; break;
} }

View File

@@ -0,0 +1,55 @@
package module.decode.p25.message.pdu.confirmed;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PDUTypeUnknown extends PDUConfirmedMessage
{
public final static Logger mLog =
LoggerFactory.getLogger( PDUTypeUnknown.class );
public PDUTypeUnknown( PDUConfirmedMessage message )
{
super( message );
}
@Override
public String getMessage()
{
StringBuilder sb = new StringBuilder();
sb.append( "NAC:" );
sb.append( getNAC() );
sb.append( " LLID:" );
sb.append( getLogicalLinkID() );
sb.append( " PACKET DATA UNIT CONFIRMED - " );
sb.append( getPDUType().getLabel() );
sb.append( " CRC[" );
sb.append( getErrorStatus() );
sb.append( "]" );
sb.append( " PACKET #" );
sb.append( getPacketSequenceNumber() );
if( isFinalFragment() && getFragmentSequenceNumber() == 0 )
{
sb.append( ".C" );
}
else
{
sb.append( "." );
sb.append( getFragmentSequenceNumber() );
if( isFinalFragment() )
{
sb.append( "C" );
}
}
sb.append( " " );
sb.append( mMessage.toString() );
return sb.toString();
}
}

View File

@@ -49,7 +49,7 @@ public class SNDCPDeactivateTDSContext extends PDUConfirmedMessage
public String getDeactivationType() public String getDeactivationType()
{ {
if( getPDUType() == PDUType.SN_DEACTIVATE_TDS_CONTEXT_REQUEST ) if( getPDUType() == PDUType.SNDCP_DEACTIVATE_TDS_CONTEXT_REQUEST )
{ {
return mMessage.getInt( DEACTIVATION_TYPE ) == 0 ? return mMessage.getInt( DEACTIVATION_TYPE ) == 0 ?
"ALL NSAPIS" : "THIS NSAPI"; "ALL NSAPIS" : "THIS NSAPI";

View File

@@ -3,12 +3,18 @@ package module.decode.p25.reference;
public enum PDUType public enum PDUType
{ {
/* Outbound */ /* Outbound */
SN_ACTIVATE_TDS_CONTEXT_ACCEPT( "SN-ACTIVATE TDS CONTEXT ACCEPT", 0 ), SNDCP_ACTIVATE_TDS_CONTEXT_ACCEPT( "SNDCP-ACTIVATE TDS CONTEXT ACCEPT", 0 ),
SN_DEACTIVATE_TDS_CONTEXT_ACCEPT( "SN-DEACTIVATE TDS CONTEXT ACCEPT", 1 ), SNDCP_DEACTIVATE_TDS_CONTEXT_ACCEPT( "SNDCP-DEACTIVATE TDS CONTEXT ACCEPT", 1 ),
SN_DEACTIVATE_TDS_CONTEXT_REQUEST( "SN-DEACTIVATE TDS CONTEXT REQUEST", 2 ), SNDCP_DEACTIVATE_TDS_CONTEXT_REQUEST( "SNDCP-DEACTIVATE TDS CONTEXT REQUEST", 2 ),
SN_ACTIVATE_TDS_CONTEXT_REJECT( "SN-ACTIVATE TDS CONTEXT REJECT", 3 ), SNDCP_ACTIVATE_TDS_CONTEXT_REJECT( "SNDCP-ACTIVATE TDS CONTEXT REJECT", 3 ),
SN_RF_UNCONFIRMED_DATA( "SN-RF UNCONFIRMED DATA", 4 ), SNDCP_RF_UNCONFIRMED_DATA( "SNDCP-RF UNCONFIRMED DATA", 4 ),
SN_RF_CONFIRMED_DATA( "SN-RF CONFIRMED DATA", 5 ), SNDCP_RF_CONFIRMED_DATA( "SNDCP-RF CONFIRMED DATA", 5 ),
PDU_TYPE_6( "PDU TYPE 6 UNKNOWN", 6 ),
PDU_TYPE_7( "PDU TYPE 7 UNKNOWN", 7 ),
PDU_TYPE_8( "PDU TYPE 8 UNKNOWN", 8 ),
PDU_TYPE_9( "PDU TYPE 9 UNKNOWN", 9 ),
PDU_TYPE_10( "PDU TYPE 10 UNKNOWN", 10 ),
PDU_TYPE_11( "PDU TYPE 11 UNKNOWN", 11 ),
/* Inbound */ /* Inbound */
SN_ACTIVATE_TDS_CONTEXT_REQUEST( "SN-ACTIVATE TDS CONTEXT REQUEST", 0 ), SN_ACTIVATE_TDS_CONTEXT_REQUEST( "SN-ACTIVATE TDS CONTEXT REQUEST", 0 ),

View File

@@ -2,7 +2,7 @@ package module.decode.p25.reference;
public enum ServiceAccessPoint public enum ServiceAccessPoint
{ {
UNENCRYPTED_USER_DATA( "USER DATA", 0 ), UNENCRYPTED_USER_DATA( "UNENCRYPTED USER DATA", 0 ),
ENCRYPTED_USER_DATA( "ENCRYPTED USER DATA", 1 ), ENCRYPTED_USER_DATA( "ENCRYPTED USER DATA", 1 ),
CIRCUIT_DATA( "CIRCUIT DATA", 2 ), CIRCUIT_DATA( "CIRCUIT DATA", 2 ),
CIRCUIT_DATA_CONTROL( "CIRCUIT DATA CONTROL", 3 ), CIRCUIT_DATA_CONTROL( "CIRCUIT DATA CONTROL", 3 ),