diff --git a/src/module/decode/p25/P25DecoderState.java b/src/module/decode/p25/P25DecoderState.java index a0fb8510..867b1238 100644 --- a/src/module/decode/p25/P25DecoderState.java +++ b/src/module/decode/p25/P25DecoderState.java @@ -1642,7 +1642,7 @@ public class P25DecoderState extends DecoderState switch( pduc.getPDUType() ) { - case SN_ACTIVATE_TDS_CONTEXT_ACCEPT: + case SNDCP_ACTIVATE_TDS_CONTEXT_ACCEPT: SNDCPActivateTDSContextAccept satca = (SNDCPActivateTDSContextAccept)pduc; @@ -1654,7 +1654,7 @@ public class P25DecoderState extends DecoderState .to( satca.getLogicalLinkID() ) .build() ); break; - case SN_ACTIVATE_TDS_CONTEXT_REJECT: + case SNDCP_ACTIVATE_TDS_CONTEXT_REJECT: SNDCPActivateTDSContextReject satcr = (SNDCPActivateTDSContextReject)pduc; @@ -1679,7 +1679,7 @@ public class P25DecoderState extends DecoderState .from( satcreq.getLogicalLinkID() ) .build() ); break; - case SN_DEACTIVATE_TDS_CONTEXT_ACCEPT: + case SNDCP_DEACTIVATE_TDS_CONTEXT_ACCEPT: SNDCPDeactivateTDSContext sdtca = (SNDCPDeactivateTDSContext)pduc; @@ -1691,7 +1691,7 @@ public class P25DecoderState extends DecoderState .from( sdtca.getLogicalLinkID() ) .build() ); break; - case SN_DEACTIVATE_TDS_CONTEXT_REQUEST: + case SNDCP_DEACTIVATE_TDS_CONTEXT_REQUEST: SNDCPDeactivateTDSContext sdtcreq = (SNDCPDeactivateTDSContext)pduc; @@ -1703,7 +1703,7 @@ public class P25DecoderState extends DecoderState .from( sdtcreq.getLogicalLinkID() ) .build() ); break; - case SN_RF_CONFIRMED_DATA: + case SNDCP_RF_CONFIRMED_DATA: SNDCPUserData sud = (SNDCPUserData)pduc; StringBuilder sbFrom = new StringBuilder(); @@ -1732,7 +1732,7 @@ public class P25DecoderState extends DecoderState .to( pduc.getLogicalLinkID() ) .build() ); break; - case SN_RF_UNCONFIRMED_DATA: + case SNDCP_RF_UNCONFIRMED_DATA: break; default: mLog.debug( "PDUC - Unrecognized Message: " + pduc.toString() ); diff --git a/src/module/decode/p25/message/pdu/confirmed/PDUConfirmedMessageFactory.java b/src/module/decode/p25/message/pdu/confirmed/PDUConfirmedMessageFactory.java index b695dd79..e8c08bcb 100644 --- a/src/module/decode/p25/message/pdu/confirmed/PDUConfirmedMessageFactory.java +++ b/src/module/decode/p25/message/pdu/confirmed/PDUConfirmedMessageFactory.java @@ -48,19 +48,27 @@ public class PDUConfirmedMessageFactory case UNENCRYPTED_USER_DATA: switch( message.getPDUType() ) { - case SN_ACTIVATE_TDS_CONTEXT_ACCEPT: + case SNDCP_ACTIVATE_TDS_CONTEXT_ACCEPT: return new SNDCPActivateTDSContextAccept( message ); - case SN_ACTIVATE_TDS_CONTEXT_REJECT: + case SNDCP_ACTIVATE_TDS_CONTEXT_REJECT: return new SNDCPActivateTDSContextReject( message ); case SN_ACTIVATE_TDS_CONTEXT_REQUEST: return new SNDCPActivateTDSContextRequest( message ); - case SN_DEACTIVATE_TDS_CONTEXT_ACCEPT: - case SN_DEACTIVATE_TDS_CONTEXT_REQUEST: + case SNDCP_DEACTIVATE_TDS_CONTEXT_ACCEPT: + case SNDCP_DEACTIVATE_TDS_CONTEXT_REQUEST: return new SNDCPDeactivateTDSContext( message ); - case SN_RF_CONFIRMED_DATA: + case SNDCP_RF_CONFIRMED_DATA: return new SNDCPUserData( message ); - case SN_RF_UNCONFIRMED_DATA: + case SNDCP_RF_UNCONFIRMED_DATA: 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: break; } diff --git a/src/module/decode/p25/message/pdu/confirmed/PDUTypeUnknown.java b/src/module/decode/p25/message/pdu/confirmed/PDUTypeUnknown.java new file mode 100644 index 00000000..0f08ca73 --- /dev/null +++ b/src/module/decode/p25/message/pdu/confirmed/PDUTypeUnknown.java @@ -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(); + } +} diff --git a/src/module/decode/p25/message/pdu/confirmed/SNDCPDeactivateTDSContext.java b/src/module/decode/p25/message/pdu/confirmed/SNDCPDeactivateTDSContext.java index 859303be..ec8ec0b5 100644 --- a/src/module/decode/p25/message/pdu/confirmed/SNDCPDeactivateTDSContext.java +++ b/src/module/decode/p25/message/pdu/confirmed/SNDCPDeactivateTDSContext.java @@ -49,7 +49,7 @@ public class SNDCPDeactivateTDSContext extends PDUConfirmedMessage 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 ? "ALL NSAPIS" : "THIS NSAPI"; diff --git a/src/module/decode/p25/reference/PDUType.java b/src/module/decode/p25/reference/PDUType.java index 23f5da1e..1a2cc1ba 100644 --- a/src/module/decode/p25/reference/PDUType.java +++ b/src/module/decode/p25/reference/PDUType.java @@ -3,12 +3,18 @@ package module.decode.p25.reference; public enum PDUType { /* Outbound */ - SN_ACTIVATE_TDS_CONTEXT_ACCEPT( "SN-ACTIVATE TDS CONTEXT ACCEPT", 0 ), - SN_DEACTIVATE_TDS_CONTEXT_ACCEPT( "SN-DEACTIVATE TDS CONTEXT ACCEPT", 1 ), - SN_DEACTIVATE_TDS_CONTEXT_REQUEST( "SN-DEACTIVATE TDS CONTEXT REQUEST", 2 ), - SN_ACTIVATE_TDS_CONTEXT_REJECT( "SN-ACTIVATE TDS CONTEXT REJECT", 3 ), - SN_RF_UNCONFIRMED_DATA( "SN-RF UNCONFIRMED DATA", 4 ), - SN_RF_CONFIRMED_DATA( "SN-RF CONFIRMED DATA", 5 ), + SNDCP_ACTIVATE_TDS_CONTEXT_ACCEPT( "SNDCP-ACTIVATE TDS CONTEXT ACCEPT", 0 ), + SNDCP_DEACTIVATE_TDS_CONTEXT_ACCEPT( "SNDCP-DEACTIVATE TDS CONTEXT ACCEPT", 1 ), + SNDCP_DEACTIVATE_TDS_CONTEXT_REQUEST( "SNDCP-DEACTIVATE TDS CONTEXT REQUEST", 2 ), + SNDCP_ACTIVATE_TDS_CONTEXT_REJECT( "SNDCP-ACTIVATE TDS CONTEXT REJECT", 3 ), + SNDCP_RF_UNCONFIRMED_DATA( "SNDCP-RF UNCONFIRMED DATA", 4 ), + 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 */ SN_ACTIVATE_TDS_CONTEXT_REQUEST( "SN-ACTIVATE TDS CONTEXT REQUEST", 0 ), diff --git a/src/module/decode/p25/reference/ServiceAccessPoint.java b/src/module/decode/p25/reference/ServiceAccessPoint.java index ea1c735d..1040aa7c 100644 --- a/src/module/decode/p25/reference/ServiceAccessPoint.java +++ b/src/module/decode/p25/reference/ServiceAccessPoint.java @@ -2,7 +2,7 @@ package module.decode.p25.reference; public enum ServiceAccessPoint { - UNENCRYPTED_USER_DATA( "USER DATA", 0 ), + UNENCRYPTED_USER_DATA( "UNENCRYPTED USER DATA", 0 ), ENCRYPTED_USER_DATA( "ENCRYPTED USER DATA", 1 ), CIRCUIT_DATA( "CIRCUIT DATA", 2 ), CIRCUIT_DATA_CONTROL( "CIRCUIT DATA CONTROL", 3 ),