P25 work in progress

This commit is contained in:
dennis.sheirer
2014-12-23 22:43:55 +00:00
parent d15ff407bd
commit 86cb5b2f4b
20 changed files with 865 additions and 266 deletions

View File

@@ -0,0 +1,44 @@
package decode.p25.message.hdu;
import alias.AliasList;
import bits.BitSetBuffer;
import crc.CRC;
import decode.p25.message.P25Message;
import decode.p25.reference.DataUnitID;
public class HDUMessage extends P25Message
{
public HDUMessage( BitSetBuffer message, DataUnitID duid,
AliasList aliasList )
{
super( message, duid, aliasList );
/* NID CRC is checked in the message framer, thus a constructed message
* means it passed the CRC */
mCRC = new CRC[ 2 ];
mCRC[ 0 ] = CRC.PASSED;
}
@Override
public String getMessage()
{
StringBuilder sb = new StringBuilder();
sb.append( "NAC:" );
sb.append( getNAC() );
sb.append( " " );
sb.append( getDUID().getLabel() );
sb.append( " " );
sb.append( mMessage.toString() );
return sb.toString();
}
/* Temporary override */
public boolean isValid()
{
return true;
}
}

View File

@@ -0,0 +1,44 @@
package decode.p25.message.ldu;
import alias.AliasList;
import bits.BitSetBuffer;
import crc.CRC;
import decode.p25.message.P25Message;
import decode.p25.reference.DataUnitID;
public class LDU1Message extends P25Message
{
public LDU1Message( BitSetBuffer message, DataUnitID duid,
AliasList aliasList )
{
super( message, duid, aliasList );
/* NID CRC is checked in the message framer, thus a constructed message
* means it passed the CRC */
mCRC = new CRC[ 2 ];
mCRC[ 0 ] = CRC.PASSED;
}
@Override
public String getMessage()
{
StringBuilder sb = new StringBuilder();
sb.append( "NAC:" );
sb.append( getNAC() );
sb.append( " " );
sb.append( getDUID().getLabel() );
sb.append( " " );
sb.append( mMessage.toString() );
return sb.toString();
}
/* Temporary override */
public boolean isValid()
{
return true;
}
}

View File

@@ -0,0 +1,44 @@
package decode.p25.message.ldu;
import alias.AliasList;
import bits.BitSetBuffer;
import crc.CRC;
import decode.p25.message.P25Message;
import decode.p25.reference.DataUnitID;
public class LDU2Message extends P25Message
{
public LDU2Message( BitSetBuffer message, DataUnitID duid,
AliasList aliasList )
{
super( message, duid, aliasList );
/* NID CRC is checked in the message framer, thus a constructed message
* means it passed the CRC */
mCRC = new CRC[ 2 ];
mCRC[ 0 ] = CRC.PASSED;
}
@Override
public String getMessage()
{
StringBuilder sb = new StringBuilder();
sb.append( "NAC:" );
sb.append( getNAC() );
sb.append( " " );
sb.append( getDUID().getLabel() );
sb.append( " " );
sb.append( mMessage.toString() );
return sb.toString();
}
/* Temporary override */
public boolean isValid()
{
return true;
}
}

View File

@@ -92,7 +92,7 @@ public abstract class UnitToUnitChannelGrantExtended extends PDUMessage
return mMessage.get( EMERGENCY_FLAG );
}
public boolean isEncryptedChannel()
public boolean isEncrypted()
{
return mMessage.get( ENCRYPTED_CHANNEL_FLAG );
}

View File

@@ -86,7 +86,7 @@ public class GroupDataChannelGrantExtended extends PDUMessage
return mMessage.get( EMERGENCY_FLAG );
}
public boolean isEncryptedChannel()
public boolean isEncrypted()
{
return mMessage.get( ENCRYPTED_CHANNEL_FLAG );
}

View File

@@ -84,7 +84,7 @@ public class GroupVoiceChannelGrantExplicit extends PDUMessage
return mMessage.get( EMERGENCY_FLAG );
}
public boolean isEncryptedChannel()
public boolean isEncrypted()
{
return mMessage.get( ENCRYPTED_CHANNEL_FLAG );
}

View File

@@ -99,7 +99,7 @@ public class UnitToUnitVoiceChannelGrantUpdateExtended extends PDUMessage
return mMessage.get( EMERGENCY_FLAG );
}
public boolean isEncryptedChannel()
public boolean isEncrypted()
{
return mMessage.get( ENCRYPTED_CHANNEL_FLAG );
}

View File

@@ -0,0 +1,44 @@
package decode.p25.message.tdu;
import alias.AliasList;
import bits.BitSetBuffer;
import crc.CRC;
import decode.p25.message.P25Message;
import decode.p25.reference.DataUnitID;
public class TDULCMessage extends P25Message
{
public TDULCMessage( BitSetBuffer message, DataUnitID duid,
AliasList aliasList )
{
super( message, duid, aliasList );
/* NID CRC is checked in the message framer, thus a constructed message
* means it passed the CRC */
mCRC = new CRC[ 2 ];
mCRC[ 0 ] = CRC.PASSED;
}
@Override
public String getMessage()
{
StringBuilder sb = new StringBuilder();
sb.append( "NAC:" );
sb.append( getNAC() );
sb.append( " " );
sb.append( getDUID().getLabel() );
sb.append( " " );
sb.append( mMessage.toString() );
return sb.toString();
}
/* Temporary override */
public boolean isValid()
{
return true;
}
}

View File

@@ -20,6 +20,7 @@ import decode.p25.message.tsbk.osp.control.LocationRegistrationResponse;
import decode.p25.message.tsbk.osp.control.MessageUpdate;
import decode.p25.message.tsbk.osp.control.NetworkStatusBroadcast;
import decode.p25.message.tsbk.osp.control.ProtectionParameterUpdate;
import decode.p25.message.tsbk.osp.control.QueuedResponse;
import decode.p25.message.tsbk.osp.control.RFSSStatusBroadcast;
import decode.p25.message.tsbk.osp.control.RadioUnitMonitorCommand;
import decode.p25.message.tsbk.osp.control.RoamingAddressCommand;
@@ -125,6 +126,8 @@ public class TSBKMessageFactory
case NETWORK_STATUS_BROADCAST:
return new NetworkStatusBroadcast( message, duid,
aliasList );
case QUEUED_RESPONSE:
return new QueuedResponse( message, duid, aliasList );
case PROTECTION_PARAMETER_UPDATE:
return new ProtectionParameterUpdate( message, duid,
aliasList );

View File

@@ -55,6 +55,19 @@ public class AuthenticationCommand extends TSBKMessage
{
return mMessage.getHex( TARGET_ID, 6 );
}
public String getFullTargetID()
{
StringBuilder sb = new StringBuilder();
sb.append( getWACN() );
sb.append( "-" );
sb.append( getSystemID() );
sb.append( "-" );
sb.append( getTargetID() );
return sb.toString();
}
@Override
public String getToID()