P25 work in progress

This commit is contained in:
dennis.sheirer
2015-01-02 14:08:22 +00:00
parent 95ddadc598
commit 03460eeb19
122 changed files with 5372 additions and 279 deletions

View File

@@ -2,19 +2,19 @@ package decode.p25.message.tsbk;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.tsbk.osp.control.IdentifierUpdate;
import decode.p25.message.tsbk.osp.control.IdentifierUpdateReceiver;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.osp.control.IdentifierProviderReceiver;
import decode.p25.reference.DataUnitID;
public abstract class ChannelGrant extends ServiceMessage
implements IdentifierUpdateReceiver
implements IdentifierProviderReceiver
{
public static final int[] PRIORITY = { 85,86,87 };
public static final int[] CHANNEL_IDENTIFIER = { 88,89,90,91 };
public static final int[] CHANNEL_NUMBER = { 92,93,94,95,96,97,98,99,100,
101,102,103 };
private IdentifierUpdate mIdentifierUpdate;
private IdentifierProvider mIdentifierUpdate;
public ChannelGrant( BitSetBuffer message,
DataUnitID duid,
@@ -47,7 +47,7 @@ public abstract class ChannelGrant extends ServiceMessage
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
mIdentifierUpdate = message;
}

View File

@@ -2,7 +2,7 @@ package decode.p25.message.tsbk;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.tsbk.osp.control.IdentifierUpdate;
import decode.p25.message.IdentifierProvider;
import decode.p25.reference.DataUnitID;
public abstract class GroupChannelGrantExplicit extends ChannelGrant
@@ -16,8 +16,8 @@ public abstract class GroupChannelGrantExplicit extends ChannelGrant
public static final int[] GROUP_ADDRESS = { 128,129,130,131,132,133,134,135,
136,137,138,139,140,141,142,143 };
private IdentifierUpdate mTransmitIdentifierUpdate;
private IdentifierUpdate mReceiveIdentifierUpdate;
private IdentifierProvider mTransmitIdentifierUpdate;
private IdentifierProvider mReceiveIdentifierUpdate;
public GroupChannelGrantExplicit( BitSetBuffer message,
DataUnitID duid,
@@ -85,7 +85,7 @@ public abstract class GroupChannelGrantExplicit extends ChannelGrant
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
if( identifier == getTransmitChannelIdentifier() )
{

View File

@@ -2,12 +2,12 @@ package decode.p25.message.tsbk;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.tsbk.osp.control.IdentifierUpdate;
import decode.p25.message.tsbk.osp.control.IdentifierUpdateReceiver;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.osp.control.IdentifierProviderReceiver;
import decode.p25.reference.DataUnitID;
public abstract class GroupMultiChannelGrant extends ChannelGrant
implements IdentifierUpdateReceiver
implements IdentifierProviderReceiver
{
public static final int[] CHANNEL_IDENTIFIER_1 = { 80,81,82,83 };
public static final int[] CHANNEL_NUMBER_1 = { 84,85,86,87,
@@ -21,8 +21,8 @@ public abstract class GroupMultiChannelGrant extends ChannelGrant
public static final int[] GROUP_ADDRESS_2 = { 128,129,130,131,132,133,134,
135,136,137,138,139,140,141,142,143 };
private IdentifierUpdate mIdentifierUpdate1;
private IdentifierUpdate mIdentifierUpdate2;
private IdentifierProvider mIdentifierUpdate1;
private IdentifierProvider mIdentifierUpdate2;
public GroupMultiChannelGrant( BitSetBuffer message,
DataUnitID duid,
@@ -114,7 +114,7 @@ public abstract class GroupMultiChannelGrant extends ChannelGrant
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
if( identifier == getChannelIdentifier1() )
{

View File

@@ -2,14 +2,13 @@ package decode.p25.message.tsbk;
import alias.AliasList;
import bits.BitSetBuffer;
import crc.CRC;
import crc.CRCP25;
import decode.p25.message.P25Message;
import decode.p25.message.tsbk.motorola.MotorolaOpcode;
import decode.p25.message.tsbk.vendor.VendorOpcode;
import decode.p25.reference.DataUnitID;
import decode.p25.reference.Opcode;
import decode.p25.reference.Vendor;
import edac.CRC;
public class TSBKMessage extends P25Message
{

View File

@@ -2,12 +2,12 @@ package decode.p25.message.tsbk.motorola;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.tsbk.osp.control.IdentifierUpdate;
import decode.p25.message.tsbk.osp.control.IdentifierUpdateReceiver;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.osp.control.IdentifierProviderReceiver;
import decode.p25.reference.DataUnitID;
public class ChannelCWIDUpdate extends MotorolaTSBKMessage
implements IdentifierUpdateReceiver
implements IdentifierProviderReceiver
{
public static final int[] CHARACTER_1 = { 80,81,82,83,84,85 };
public static final int[] CHARACTER_2 = { 86,87,88,89,90,91 };
@@ -22,7 +22,7 @@ public class ChannelCWIDUpdate extends MotorolaTSBKMessage
public static final int[] CHANNEL = { 132,133,134,135,136,137,138,139,140,
141,142,143 };
private IdentifierUpdate mIdentifierUpdate;
private IdentifierProvider mIdentifierUpdate;
public ChannelCWIDUpdate( BitSetBuffer message,
DataUnitID duid,
@@ -104,7 +104,7 @@ public class ChannelCWIDUpdate extends MotorolaTSBKMessage
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
mIdentifierUpdate = message;
}

View File

@@ -2,11 +2,12 @@ package decode.p25.message.tsbk.osp.control;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.TSBKMessage;
import decode.p25.reference.DataUnitID;
import decode.p25.reference.Opcode;
public class AdjacentStatusBroadcast extends TSBKMessage implements IdentifierUpdateReceiver
public class AdjacentStatusBroadcast extends TSBKMessage implements IdentifierProviderReceiver
{
public static final int[] LOCATION_REGISTRATION_AREA = { 80,81,82,83,84,85,
86,87 };
@@ -24,7 +25,7 @@ public class AdjacentStatusBroadcast extends TSBKMessage implements IdentifierUp
public static final int[] SYSTEM_SERVICE_CLASS = { 136,137,138,139,140,141,
142,143 };
private IdentifierUpdate mIdentifierUpdate;
private IdentifierProvider mIdentifierUpdate;
public AdjacentStatusBroadcast( BitSetBuffer message,
DataUnitID duid,
@@ -161,7 +162,7 @@ public class AdjacentStatusBroadcast extends TSBKMessage implements IdentifierUp
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
/* we're only expecting 1 identifier, so use whatever is received */
mIdentifierUpdate = message;

View File

@@ -0,0 +1,15 @@
package decode.p25.message.tsbk.osp.control;
import decode.p25.message.IdentifierProvider;
/**
* Interface to allow messages to be augmented with IdentiferUpdateXXX type
* messages that provide the channel information necessary to calculate the
* uplink and downlink frequency for the channel.
*/
public interface IdentifierProviderReceiver
{
public void setIdentifierMessage( int identifier, IdentifierProvider message );
public int[] getIdentifiers();
}

View File

@@ -2,10 +2,12 @@ package decode.p25.message.tsbk.osp.control;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.TSBKMessage;
import decode.p25.reference.DataUnitID;
public abstract class IdentifierUpdate extends TSBKMessage
public abstract class IdentifierUpdate extends TSBKMessage
implements IdentifierProvider
{
public static final int[] IDENTIFIER = { 80,81,82,83 };
@@ -23,29 +25,24 @@ public abstract class IdentifierUpdate extends TSBKMessage
super( message, duid, aliasList );
}
/**
* (Band) Identifier
*/
@Override
public int getIdentifier()
{
return mMessage.getInt( IDENTIFIER );
}
/**
* Channel spacing in hertz
*/
@Override
public long getChannelSpacing()
{
return mMessage.getLong( CHANNEL_SPACING ) * 125l;
}
/**
* Base frequency in hertz
*/
@Override
public long getBaseFrequency()
{
return mMessage.getLong( BASE_FREQUENCY ) * 5l;
}
@Override
public abstract long getTransmitOffset();
}

View File

@@ -1,5 +1,7 @@
package decode.p25.message.tsbk.osp.control;
import decode.p25.message.IdentifierProvider;
/**
* Interface to allow messages to be augmented with IdentiferUpdateXXX type
* messages that provide the channel information necessary to calculate the
@@ -7,7 +9,7 @@ package decode.p25.message.tsbk.osp.control;
*/
public interface IdentifierUpdateReceiver
{
public void setIdentifierMessage( int identifier, IdentifierUpdate message );
public void setIdentifierMessage( int identifier, IdentifierProvider message );
public int[] getIdentifiers();
}

View File

@@ -8,13 +8,13 @@ import decode.p25.reference.Opcode;
public class MessageUpdate extends TSBKMessage
{
public static final int[] SHORT_DATA_MESSAGE = { 80,81,82,83,84,85,86,87,88,89,90,91,
92,93,94,95 };
public static final int[] SHORT_DATA_MESSAGE = { 80,81,82,83,84,85,86,87,88,89,90,91,
92,93,94,95 };
public static final int[] TARGET_ADDRESS = { 96,97,98,99,100,101,102,103,
104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119 };
104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119 };
public static final int[] SOURCE_ADDRESS = { 120,121,122,123,124,125,126,
127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143 };
127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143 };
public MessageUpdate( BitSetBuffer message,
DataUnitID duid,
AliasList aliasList )

View File

@@ -2,12 +2,13 @@ package decode.p25.message.tsbk.osp.control;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.TSBKMessage;
import decode.p25.reference.DataUnitID;
import decode.p25.reference.Opcode;
import decode.p25.reference.P25NetworkCallsign;
public class NetworkStatusBroadcast extends TSBKMessage implements IdentifierUpdateReceiver
public class NetworkStatusBroadcast extends TSBKMessage implements IdentifierProviderReceiver
{
public static final int[] LOCATION_REGISTRATION_AREA = { 80,81,82,83,84,85,
86,87 };
@@ -21,7 +22,7 @@ public class NetworkStatusBroadcast extends TSBKMessage implements IdentifierUpd
public static final int[] SYSTEM_SERVICE_CLASS = { 136,137,138,139,140,141,
142,143 };
private IdentifierUpdate mIdentifierUpdate;
private IdentifierProvider mIdentifierUpdate;
public NetworkStatusBroadcast( BitSetBuffer message,
DataUnitID duid,
@@ -107,7 +108,7 @@ public class NetworkStatusBroadcast extends TSBKMessage implements IdentifierUpd
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
/* we're only expecting 1 identifier, so use whatever is received */
mIdentifierUpdate = message;

View File

@@ -2,11 +2,12 @@ package decode.p25.message.tsbk.osp.control;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.TSBKMessage;
import decode.p25.reference.DataUnitID;
import decode.p25.reference.Opcode;
public class RFSSStatusBroadcast extends TSBKMessage implements IdentifierUpdateReceiver
public class RFSSStatusBroadcast extends TSBKMessage implements IdentifierProviderReceiver
{
public static final int[] LOCATION_REGISTRATION_AREA = { 80,81,82,83,84,85,
86,87 };
@@ -21,7 +22,7 @@ public class RFSSStatusBroadcast extends TSBKMessage implements IdentifierUpdate
public static final int[] SYSTEM_SERVICE_CLASS = { 136,137,138,139,140,141,
142,143 };
private IdentifierUpdate mIdentifierUpdate;
private IdentifierProvider mIdentifierUpdate;
public RFSSStatusBroadcast( BitSetBuffer message,
DataUnitID duid,
@@ -117,7 +118,7 @@ public class RFSSStatusBroadcast extends TSBKMessage implements IdentifierUpdate
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
/* we're only expecting 1 identifier, so use whatever is received */
mIdentifierUpdate = message;

View File

@@ -5,12 +5,13 @@ import org.slf4j.LoggerFactory;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.TSBKMessage;
import decode.p25.reference.DataUnitID;
import decode.p25.reference.Opcode;
public class SecondaryControlChannelBroadcast extends TSBKMessage
implements IdentifierUpdateReceiver, Comparable<SecondaryControlChannelBroadcast>
implements IdentifierProviderReceiver, Comparable<SecondaryControlChannelBroadcast>
{
private final static Logger mLog =
LoggerFactory.getLogger( SecondaryControlChannelBroadcast.class );
@@ -28,8 +29,8 @@ public class SecondaryControlChannelBroadcast extends TSBKMessage
public static final int[] SYSTEM_SERVICE_CLASS_2 = { 136,137,138,139,140,
141,142,143 };
private IdentifierUpdate mIdentifierUpdate1;
private IdentifierUpdate mIdentifierUpdate2;
private IdentifierProvider mIdentifierUpdate1;
private IdentifierProvider mIdentifierUpdate2;
public SecondaryControlChannelBroadcast( BitSetBuffer message,
DataUnitID duid,
@@ -143,7 +144,7 @@ public class SecondaryControlChannelBroadcast extends TSBKMessage
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
if( identifier == getIdentifier1() )
{

View File

@@ -8,12 +8,12 @@ import decode.p25.reference.Opcode;
public class StatusUpdate extends TSBKMessage
{
public static final int[] USER_STATUS = { 80,81,82,83,84,85,86,87 };
public static final int[] UNIT_STATUS = { 88,89,90,91,92,93,94,95 };
public static final int[] TARGET_ADDRESS = { 96,97,98,99,100,101,102,103,
104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119 };
public static final int[] SOURCE_ADDRESS = { 120,121,122,123,124,125,126,
127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143 };
public static final int[] USER_STATUS = { 72,73,74,75,88,89,90,91 };
public static final int[] UNIT_STATUS = { 92,93,94,95,96,97,98,99 };
public static final int[] TARGET_ADDRESS = { 112,113,114,115,116,117,118,
119,120,121,122,123,136,137,138,139,140,141,142,143,144,145,146,147 };
public static final int[] SOURCE_ADDRESS = { 160,161,162,163,164,165,166,
167,168,169,170,171,184,185,186,187,188,189,190,190,192,193,194,195 };
public StatusUpdate( BitSetBuffer message,
DataUnitID duid,
@@ -25,7 +25,7 @@ public class StatusUpdate extends TSBKMessage
@Override
public String getEventType()
{
return Opcode.STATUS_QUERY.getDescription();
return Opcode.STATUS_UPDATE.getDescription();
}
public String getMessage()

View File

@@ -2,12 +2,12 @@ package decode.p25.message.tsbk.osp.data;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.tsbk.osp.control.IdentifierUpdate;
import decode.p25.message.tsbk.osp.control.IdentifierUpdateReceiver;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.osp.control.IdentifierProviderReceiver;
import decode.p25.reference.DataUnitID;
public class SNDCPDataChannelAnnouncementExplicit extends SNDCPData
implements IdentifierUpdateReceiver
implements IdentifierProviderReceiver
{
public static final int AUTONOMOUS_ACCESS_AVAILABLE_INDICATOR = 88;
public static final int REQUESTED_ACCESS_AVAILABLE_INDICATOR = 89;
@@ -22,8 +22,8 @@ public class SNDCPDataChannelAnnouncementExplicit extends SNDCPData
public static final int[] DATA_ACCESS_CONTROL = { 128,129,130,131,132,133,
134,135,136,137,138,139,140,141,142,143 };
private IdentifierUpdate mIdentifierUpdateTransmit;
private IdentifierUpdate mIdentifierUpdateReceive;
private IdentifierProvider mIdentifierUpdateTransmit;
private IdentifierProvider mIdentifierUpdateReceive;
public SNDCPDataChannelAnnouncementExplicit( BitSetBuffer message,
DataUnitID duid,
@@ -118,7 +118,7 @@ public class SNDCPDataChannelAnnouncementExplicit extends SNDCPData
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
if( identifier == getTransmitChannelIdentifier() )
{

View File

@@ -2,11 +2,11 @@ package decode.p25.message.tsbk.osp.data;
import alias.AliasList;
import bits.BitSetBuffer;
import decode.p25.message.tsbk.osp.control.IdentifierUpdate;
import decode.p25.message.tsbk.osp.control.IdentifierUpdateReceiver;
import decode.p25.message.IdentifierProvider;
import decode.p25.message.tsbk.osp.control.IdentifierProviderReceiver;
import decode.p25.reference.DataUnitID;
public class SNDCPDataChannelGrant extends SNDCPData implements IdentifierUpdateReceiver
public class SNDCPDataChannelGrant extends SNDCPData implements IdentifierProviderReceiver
{
public static final int[] TRANSMIT_IDENTIFIER = { 88,89,90,91 };
public static final int[] TRANSMIT_NUMBER = { 92,93,94,95,96,97,98,99,100,
@@ -18,8 +18,8 @@ public class SNDCPDataChannelGrant extends SNDCPData implements IdentifierUpdate
public static final int[] TARGET_ADDRESS = { 120,121,122,123,124,125,126,
127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143 };
private IdentifierUpdate mIdentifierUpdateTransmit;
private IdentifierUpdate mIdentifierUpdateReceive;
private IdentifierProvider mIdentifierUpdateTransmit;
private IdentifierProvider mIdentifierUpdateReceive;
public SNDCPDataChannelGrant( BitSetBuffer message,
DataUnitID duid,
@@ -91,7 +91,7 @@ public class SNDCPDataChannelGrant extends SNDCPData implements IdentifierUpdate
}
@Override
public void setIdentifierMessage( int identifier, IdentifierUpdate message )
public void setIdentifierMessage( int identifier, IdentifierProvider message )
{
if( identifier == getTransmitChannelIdentifier() )
{