mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-09 15:17:24 -05:00
P25 - work in progress - this is a fairly stable version of the P25 channel state. There is still work to do, but I'm going to release a test version based on this commit.
- Channel state now processes HDU, TDU, TDULC, PDU, PDULC, LDU1/2, LDULC
This commit is contained in:
@@ -98,6 +98,11 @@ public abstract class CallEvent
|
||||
return mFromID;
|
||||
}
|
||||
|
||||
public boolean hasFromID()
|
||||
{
|
||||
return mFromID != null;
|
||||
}
|
||||
|
||||
public void setFromID( String id )
|
||||
{
|
||||
mFromID = id;
|
||||
@@ -108,6 +113,11 @@ public abstract class CallEvent
|
||||
return mToID;
|
||||
}
|
||||
|
||||
public boolean hasToID()
|
||||
{
|
||||
return mToID != null;
|
||||
}
|
||||
|
||||
public void setToID( String id )
|
||||
{
|
||||
mToID = id;
|
||||
|
||||
@@ -34,7 +34,7 @@ import sample.Listener;
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import controller.activity.ActivitySummaryProvider;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.message.pdu.osp.control.NetworkStatusBroadcastExtended;
|
||||
import decode.p25.message.pdu.osp.control.ProtectionParameterBroadcast;
|
||||
@@ -296,7 +296,7 @@ public class P25ActivitySummary implements ActivitySummaryProvider,
|
||||
sb.append( "\nFREQUENCY BANDS:" );
|
||||
for( Integer id: identifiers )
|
||||
{
|
||||
IdentifierProvider band = mBands.get( id );
|
||||
IBandIdentifier band = mBands.get( id );
|
||||
|
||||
sb.append( "\n\t" + id );
|
||||
sb.append( "- BASE: " + mFrequencyFormatter.format(
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -10,8 +10,8 @@ import org.slf4j.LoggerFactory;
|
||||
import sample.Broadcaster;
|
||||
import sample.Listener;
|
||||
import alias.AliasList;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.osp.control.IdentifierUpdate;
|
||||
|
||||
public class P25MessageProcessor implements Listener<Message>
|
||||
{
|
||||
@@ -23,8 +23,8 @@ public class P25MessageProcessor implements Listener<Message>
|
||||
/* Map of up to 16 band identifiers per RFSS. These identifier update
|
||||
* messages are inserted into any message that conveys channel information
|
||||
* so that the uplink/downlink frequencies can be calculated */
|
||||
private HashMap<Integer,IdentifierUpdate> mIdentifierMap =
|
||||
new HashMap<Integer,IdentifierUpdate>();
|
||||
private HashMap<Integer,IBandIdentifier> mBandIdentifierMap =
|
||||
new HashMap<Integer,IBandIdentifier>();
|
||||
|
||||
private AliasList mAliasList;
|
||||
|
||||
@@ -48,17 +48,18 @@ public class P25MessageProcessor implements Listener<Message>
|
||||
for( int identifier: identifiers )
|
||||
{
|
||||
receiver.setIdentifierMessage( identifier,
|
||||
mIdentifierMap.get( identifier ) );
|
||||
mBandIdentifierMap.get( identifier ) );
|
||||
}
|
||||
}
|
||||
|
||||
/* Store band identifiers so that they can be injected into channel
|
||||
* type messages */
|
||||
if( message instanceof IdentifierUpdate )
|
||||
if( message instanceof IBandIdentifier )
|
||||
{
|
||||
IdentifierUpdate identifierUpdate = (IdentifierUpdate)message;
|
||||
IBandIdentifier bandIdentifier = (IBandIdentifier)message;
|
||||
|
||||
mIdentifierMap.put( identifierUpdate.getIdentifier(), identifierUpdate );
|
||||
mBandIdentifierMap.put( bandIdentifier.getIdentifier(),
|
||||
bandIdentifier );
|
||||
}
|
||||
|
||||
mBroadcaster.broadcast( message );
|
||||
@@ -67,7 +68,7 @@ public class P25MessageProcessor implements Listener<Message>
|
||||
|
||||
public void dispose()
|
||||
{
|
||||
mIdentifierMap.clear();
|
||||
mBandIdentifierMap.clear();
|
||||
mBroadcaster.dispose();
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import settings.ColorSetting;
|
||||
import settings.Setting;
|
||||
import controller.channel.Channel;
|
||||
import controller.state.ChannelState.ChangedAttribute;
|
||||
import controller.state.ChannelState.State;
|
||||
import controller.state.ChannelStatePanel;
|
||||
import decode.config.DecodeConfigP25Phase1;
|
||||
|
||||
@@ -86,7 +87,7 @@ public class P25Panel extends ChannelStatePanel
|
||||
mFromAlias.setFont( mFontDecoder );
|
||||
mFromAlias.setForeground( mColorLabelDecoder );
|
||||
|
||||
mNAC.setFont( mFontDecoder );
|
||||
mNAC.setFont( mFontDetails );
|
||||
mNAC.setForeground( mColorLabelDecoder );
|
||||
|
||||
mTo.setFont( mFontDecoder );
|
||||
@@ -95,13 +96,13 @@ public class P25Panel extends ChannelStatePanel
|
||||
mToAlias.setFont( mFontDecoder );
|
||||
mToAlias.setForeground( mColorLabelDecoder );
|
||||
|
||||
mSystem.setFont( mFontDecoder );
|
||||
mSystem.setFont( mFontDetails );
|
||||
mSystem.setForeground( mColorLabelDecoder );
|
||||
|
||||
mSiteAlias.setFont( mFontDecoder );
|
||||
mSiteAlias.setForeground( mColorLabelDecoder );
|
||||
|
||||
mSite.setFont( mFontDecoder );
|
||||
mSite.setFont( mFontDetails );
|
||||
mSite.setForeground( mColorLabelDecoder );
|
||||
|
||||
add( mStateLabel );
|
||||
@@ -135,7 +136,17 @@ public class P25Panel extends ChannelStatePanel
|
||||
switch( changedAttribute )
|
||||
{
|
||||
case CHANNEL_STATE:
|
||||
mStateLabel.setText( channelState.getState().getDisplayValue() );
|
||||
State state = channelState.getState();
|
||||
|
||||
mStateLabel.setText( state.getDisplayValue() );
|
||||
|
||||
if( state == State.IDLE )
|
||||
{
|
||||
mFrom.setText( null );
|
||||
mFromAlias.setText( null );
|
||||
mTo.setText( null );
|
||||
mToAlias.setText( null );
|
||||
}
|
||||
break;
|
||||
case SOURCE:
|
||||
mSourceLabel.setText( mChannel.getSourceConfiguration()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package decode.p25.message;
|
||||
|
||||
public interface IdentifierProvider
|
||||
public interface IBandIdentifier
|
||||
{
|
||||
|
||||
/**
|
||||
@@ -8,7 +8,7 @@ package decode.p25.message;
|
||||
*/
|
||||
public interface IdentifierReceiver
|
||||
{
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message );
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message );
|
||||
|
||||
public int[] getIdentifiers();
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ public class P25Message extends Message
|
||||
* @param channel - channel number
|
||||
* @return - frequency in Hertz
|
||||
*/
|
||||
protected static long calculateUplink( IdentifierProvider iden, int channel )
|
||||
protected static long calculateUplink( IBandIdentifier iden, int channel )
|
||||
{
|
||||
long downlink = calculateDownlink( iden, channel );
|
||||
|
||||
@@ -199,7 +199,7 @@ public class P25Message extends Message
|
||||
* @param channel - channel number
|
||||
* @return - frequency in Hertz
|
||||
*/
|
||||
protected static long calculateDownlink( IdentifierProvider iden, int channel )
|
||||
protected static long calculateDownlink( IBandIdentifier iden, int channel )
|
||||
{
|
||||
if( iden != null )
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package decode.p25.message.hdu;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.P25Message;
|
||||
@@ -58,7 +59,16 @@ public class HDUMessage extends P25Message
|
||||
if( encryption != Encryption.UNENCRYPTED )
|
||||
{
|
||||
sb.append( " ENCRYPTION:" );
|
||||
sb.append( encryption.name() );
|
||||
|
||||
if( encryption == Encryption.UNKNOWN )
|
||||
{
|
||||
sb.append( "UNK ALGO ID:" );
|
||||
sb.append( mMessage.getInt( ALGORITHM_ID ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.append( encryption.name() );
|
||||
}
|
||||
sb.append( " KEY ID:" + getKeyID() );
|
||||
sb.append( " MSG INDICATOR:" + getMessageIndicator() );
|
||||
}
|
||||
@@ -98,6 +108,12 @@ public class HDUMessage extends P25Message
|
||||
return mMessage.getHex( TALKGROUP_ID, 4 );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getToID()
|
||||
{
|
||||
return getTalkgroupID();
|
||||
}
|
||||
|
||||
/* Temporary override */
|
||||
public boolean isValid()
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -26,7 +26,7 @@ public class AdjacentSiteStatusBroadcast extends LDU1Message
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 744,745,750,751,752,753,
|
||||
754,755 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public AdjacentSiteStatusBroadcast( LDU1Message message )
|
||||
{
|
||||
@@ -100,7 +100,7 @@ public class AdjacentSiteStatusBroadcast extends LDU1Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -3,12 +3,12 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
|
||||
public class ChannelIdentifierUpdate extends LDU1Message
|
||||
implements IdentifierProvider
|
||||
implements IBandIdentifier
|
||||
{
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( ChannelIdentifierUpdate.class );
|
||||
|
||||
@@ -3,12 +3,12 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
|
||||
public class ChannelIdentifierUpdateExplicit extends LDU1Message
|
||||
implements IdentifierProvider
|
||||
implements IBandIdentifier
|
||||
{
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( ChannelIdentifierUpdateExplicit.class );
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -25,8 +25,8 @@ public class GroupVoiceChannelUpdate extends LDU1Message
|
||||
public static final int[] GROUP_ADDRESS_B = { 732,733,734,735,740,741,742,
|
||||
743,744,745,750,751,752,753,754,755 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdateA;
|
||||
private IdentifierProvider mIdentifierUpdateB;
|
||||
private IBandIdentifier mIdentifierUpdateA;
|
||||
private IBandIdentifier mIdentifierUpdateB;
|
||||
|
||||
public GroupVoiceChannelUpdate( LDU1Message message )
|
||||
{
|
||||
@@ -106,7 +106,7 @@ public class GroupVoiceChannelUpdate extends LDU1Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getChannelIdentifierA() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.P25Message.DuplexMode;
|
||||
import decode.p25.message.P25Message.SessionMode;
|
||||
@@ -29,8 +29,8 @@ public class GroupVoiceChannelUpdateExplicit extends LDU1Message
|
||||
public static final int[] RECEIVE_CHANNEL = { 740,741,742,743,744,745,750,
|
||||
751,752,753,754,755 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public GroupVoiceChannelUpdateExplicit( LDU1Message message )
|
||||
{
|
||||
@@ -120,7 +120,7 @@ public class GroupVoiceChannelUpdateExplicit extends LDU1Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -24,7 +24,7 @@ public class NetworkStatusBroadcast extends LDU1Message
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 744,745,750,751,752,753,
|
||||
754,755 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public NetworkStatusBroadcast( LDU1Message source )
|
||||
{
|
||||
@@ -45,7 +45,7 @@ public class NetworkStatusBroadcast extends LDU1Message
|
||||
sb.append( getMessageStub() );
|
||||
|
||||
sb.append( " NETWORK:" + getNetworkID() );
|
||||
sb.append( " SYS:" + getSystemID() );
|
||||
sb.append( " SYS:" + getSystem() );
|
||||
sb.append( " CHAN:" + getChannel() );
|
||||
sb.append( " " + Service.getServices( getSystemServiceClass() ).toString() );
|
||||
|
||||
@@ -57,7 +57,7 @@ public class NetworkStatusBroadcast extends LDU1Message
|
||||
return mMessage.getHex( NETWORK_ID, 5 );
|
||||
}
|
||||
|
||||
public String getSystemID()
|
||||
public String getSystem()
|
||||
{
|
||||
return mMessage.getHex( SYSTEM_ID, 3 );
|
||||
}
|
||||
@@ -83,7 +83,7 @@ public class NetworkStatusBroadcast extends LDU1Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -24,8 +24,8 @@ public class NetworkStatusBroadcastExplicit extends LDU1Message
|
||||
public static final int[] RECEIVE_CHANNEL = { 740,741,742,743,744,745,750,
|
||||
751,752,753,754,755 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public NetworkStatusBroadcastExplicit( LDU1Message message )
|
||||
{
|
||||
@@ -46,7 +46,7 @@ public class NetworkStatusBroadcastExplicit extends LDU1Message
|
||||
sb.append( getMessageStub() );
|
||||
|
||||
sb.append( " NETWORK:" + getNetworkID() );
|
||||
sb.append( " SYS:" + getSystemID() );
|
||||
sb.append( " SYS:" + getSystem() );
|
||||
sb.append( " TRANSMIT:" + getTransmitChannel() );
|
||||
sb.append( " RECEIVE:" + getReceiveChannel() );
|
||||
|
||||
@@ -58,7 +58,7 @@ public class NetworkStatusBroadcastExplicit extends LDU1Message
|
||||
return mMessage.getHex( NETWORK_ID, 5 );
|
||||
}
|
||||
|
||||
public String getSystemID()
|
||||
public String getSystem()
|
||||
{
|
||||
return mMessage.getHex( SYSTEM_ID, 3 );
|
||||
}
|
||||
@@ -94,7 +94,7 @@ public class NetworkStatusBroadcastExplicit extends LDU1Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
@@ -26,7 +26,7 @@ public class RFSSStatusBroadcast extends LDU1Message
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 744,745,750,751,752,753,
|
||||
754,755 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public RFSSStatusBroadcast( LDU1Message message )
|
||||
{
|
||||
@@ -102,7 +102,7 @@ public class RFSSStatusBroadcast extends LDU1Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
@@ -26,8 +26,8 @@ public class RFSSStatusBroadcastExplicit extends LDU1Message
|
||||
735,740,741,742,743 };
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 744,745,750,751,752,753,754,755 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public RFSSStatusBroadcastExplicit( LDU1Message source )
|
||||
{
|
||||
@@ -113,7 +113,7 @@ public class RFSSStatusBroadcastExplicit extends LDU1Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
@@ -26,8 +26,8 @@ public class SecondaryControlChannelBroadcast extends LDU1Message
|
||||
741,742,743 };
|
||||
public static final int[] SYSTEM_SERVICE_CLASS_B = { 744,745,750,751,752,753,754,755 };
|
||||
|
||||
private IdentifierProvider mIdentifierProviderA;
|
||||
private IdentifierProvider mIdentifierProviderB;
|
||||
private IBandIdentifier mIdentifierProviderA;
|
||||
private IBandIdentifier mIdentifierProviderB;
|
||||
|
||||
public SecondaryControlChannelBroadcast( LDU1Message message )
|
||||
{
|
||||
@@ -111,7 +111,7 @@ public class SecondaryControlChannelBroadcast extends LDU1Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getIdentifierA() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.ldu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.ldu.LDU1Message;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
@@ -26,8 +26,8 @@ public class SecondaryControlChannelBroadcastExplicit
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 732,733,734,735,740,741,
|
||||
742,743 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierProvider;
|
||||
private IdentifierProvider mReceiveIdentifierProvider;
|
||||
private IBandIdentifier mTransmitIdentifierProvider;
|
||||
private IBandIdentifier mReceiveIdentifierProvider;
|
||||
|
||||
public SecondaryControlChannelBroadcastExplicit( LDU1Message message )
|
||||
{
|
||||
@@ -104,7 +104,7 @@ public class SecondaryControlChannelBroadcastExplicit
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@ package decode.p25.message.pdu;
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.P25Message;
|
||||
import decode.p25.message.tsbk.vendor.VendorOpcode;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
import decode.p25.reference.Opcode;
|
||||
import decode.p25.reference.PDUFormat;
|
||||
@@ -151,6 +152,16 @@ public class PDUMessage extends P25Message
|
||||
return Opcode.UNKNOWN;
|
||||
}
|
||||
|
||||
public VendorOpcode getVendorOpcode()
|
||||
{
|
||||
if( getFormat() == PDUFormat.ALTERNATE_MULTI_BLOCK_TRUNKING_CONTROL )
|
||||
{
|
||||
return VendorOpcode.fromValue( mMessage.getInt( OPCODE ) );
|
||||
}
|
||||
|
||||
return VendorOpcode.UNKNOWN;
|
||||
}
|
||||
|
||||
public int getDataHeaderOffset()
|
||||
{
|
||||
return mMessage.getInt( DATA_HEADER_OFFSET );
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.pdu;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
import decode.p25.reference.Opcode;
|
||||
@@ -39,8 +39,8 @@ public abstract class UnitToUnitChannelGrantExtended extends PDUMessage
|
||||
326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,
|
||||
343,344,345,346,347,348,349,350,351 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public UnitToUnitChannelGrantExtended( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -175,7 +175,7 @@ public abstract class UnitToUnitChannelGrantExtended extends PDUMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.pdu.osp.control;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
@@ -31,8 +31,8 @@ public class AdjacentStatusBroadcastExtended extends PDUMessage
|
||||
230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,
|
||||
248,249,250,251,252,253,254,255 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierProvider;
|
||||
private IdentifierProvider mReceiveIdentifierProvider;
|
||||
private IBandIdentifier mTransmitIdentifierProvider;
|
||||
private IBandIdentifier mReceiveIdentifierProvider;
|
||||
|
||||
public AdjacentStatusBroadcastExtended( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -136,7 +136,7 @@ public class AdjacentStatusBroadcastExtended extends PDUMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.pdu.osp.control;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
@@ -31,8 +31,8 @@ public class NetworkStatusBroadcastExtended extends PDUMessage
|
||||
230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,
|
||||
248,249,250,251,252,253,254,255 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public NetworkStatusBroadcastExtended( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -135,7 +135,7 @@ public class NetworkStatusBroadcastExtended extends PDUMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.pdu.osp.control;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
@@ -31,8 +31,8 @@ public class RFSSStatusBroadcastExtended extends PDUMessage
|
||||
230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,
|
||||
248,249,250,251,252,253,254,255 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public RFSSStatusBroadcastExtended( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -139,7 +139,7 @@ public class RFSSStatusBroadcastExtended extends PDUMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@ import java.util.Date;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -36,8 +36,8 @@ public class GroupDataChannelGrantExtended extends PDUMessage
|
||||
230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,
|
||||
248,249,250,251,252,253,254,255 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public GroupDataChannelGrantExtended( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -154,7 +154,7 @@ public class GroupDataChannelGrantExtended extends PDUMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.pdu.osp.voice;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -34,8 +34,8 @@ public class GroupVoiceChannelGrantExplicit extends PDUMessage
|
||||
230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,
|
||||
248,249,250,251,252,253,254,255 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public GroupVoiceChannelGrantExplicit( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -152,7 +152,7 @@ public class GroupVoiceChannelGrantExplicit extends PDUMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@ import java.util.Date;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -36,8 +36,8 @@ public class TelephoneInterconnectChannelGrantExplicit extends PDUMessage
|
||||
230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,
|
||||
248,249,250,251,252,253,254,255 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public TelephoneInterconnectChannelGrantExplicit( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -159,7 +159,7 @@ public class TelephoneInterconnectChannelGrantExplicit extends PDUMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.pdu.osp.voice;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.pdu.PDUMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -40,8 +40,8 @@ public class UnitToUnitVoiceChannelGrantUpdateExtended extends PDUMessage
|
||||
326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,
|
||||
343,344,345,346,347,348,349,350,351 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public UnitToUnitVoiceChannelGrantUpdateExtended( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -182,7 +182,7 @@ public class UnitToUnitVoiceChannelGrantUpdateExtended extends PDUMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -1,265 +0,0 @@
|
||||
package decode.p25.message.tdu;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.P25Message;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
import decode.p25.reference.Vendor;
|
||||
import decode.p25.reference.VendorLinkControlOpcode;
|
||||
import edac.CRC;
|
||||
import edac.Galois24;
|
||||
import edac.ReedSolomon_24_12_13;
|
||||
|
||||
public class TDULinkControlMessage extends P25Message
|
||||
{
|
||||
public final static Logger mLog = LoggerFactory.getLogger( TDULinkControlMessage.class );
|
||||
|
||||
public static final int[] LC_HEX_0 = { 64,65,66,67,68,69 };
|
||||
public static final int[] LC_HEX_1 = { 70,71,72,73,74,75 };
|
||||
public static final int[] LC_HEX_2 = { 88,89,90,91,92,93 };
|
||||
public static final int[] LC_HEX_3 = { 94,95,96,97,98,99 };
|
||||
public static final int[] LC_HEX_4 = { 112,113,114,115,116,117 };
|
||||
public static final int[] LC_HEX_5 = { 118,119,120,121,122,123 };
|
||||
public static final int[] LC_HEX_6 = { 136,137,138,139,140,141 };
|
||||
public static final int[] LC_HEX_7 = { 142,143,144,145,146,147 };
|
||||
public static final int[] LC_HEX_8 = { 160,161,162,163,164,165 };
|
||||
public static final int[] LC_HEX_9 = { 166,167,168,169,170,171 };
|
||||
public static final int[] LC_HEX_10 = { 184,185,186,187,188,189 };
|
||||
public static final int[] LC_HEX_11 = { 190,191,192,193,194,195 };
|
||||
public static final int[] RS_HEX_0 = { 208,209,210,211,212,213 };
|
||||
public static final int[] RS_HEX_1 = { 214,215,216,217,218,219 };
|
||||
public static final int[] RS_HEX_2 = { 232,233,234,235,236,237 };
|
||||
public static final int[] RS_HEX_3 = { 238,239,240,241,242,243 };
|
||||
public static final int[] RS_HEX_4 = { 256,257,258,259,260,261 };
|
||||
public static final int[] RS_HEX_5 = { 262,263,264,265,266,267 };
|
||||
public static final int[] RS_HEX_6 = { 280,281,282,283,284,285 };
|
||||
public static final int[] RS_HEX_7 = { 286,287,288,289,290,291 };
|
||||
public static final int[] RS_HEX_8 = { 304,305,306,307,308,309 };
|
||||
public static final int[] RS_HEX_9 = { 310,311,312,313,314,315 };
|
||||
public static final int[] RS_HEX_10 = { 328,329,330,331,332,333 };
|
||||
public static final int[] RS_HEX_11 = { 334,335,336,337,338,339 };
|
||||
|
||||
public static final int ENCRYPTION_FLAG = 64;
|
||||
public static final int IMPLICIT_VENDOR_FLAG = 65;
|
||||
public static final int[] OPCODE = { 66,67,68,69,70,71 };
|
||||
public static final int[] VENDOR = { 72,73,74,75,88,89,90,91 };
|
||||
|
||||
public static final ReedSolomon_24_12_13 mReedSolomonDecoder =
|
||||
new ReedSolomon_24_12_13();
|
||||
|
||||
public TDULinkControlMessage( BinaryMessage message, DataUnitID duid,
|
||||
AliasList aliasList )
|
||||
{
|
||||
super( message, duid, aliasList );
|
||||
|
||||
/* NID CRC is checked in the message framer so a constructed message
|
||||
* means it passed the CRC */
|
||||
mCRC = new CRC[ 3 ];
|
||||
mCRC[ 0 ] = CRC.PASSED;
|
||||
|
||||
checkCRC();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a TDULinkControl message from an existing message and bypasses
|
||||
* the CRC calculation.
|
||||
*/
|
||||
protected TDULinkControlMessage( TDULinkControlMessage message )
|
||||
{
|
||||
super( message.getSourceMessage(), DataUnitID.TDULC, message.getAliasList() );
|
||||
|
||||
mCRC = message.getCRC();
|
||||
}
|
||||
|
||||
public CRC[] getCRC()
|
||||
{
|
||||
return mCRC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append( getMessageStub() );
|
||||
sb.append( " " );
|
||||
sb.append( mMessage.toString() );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String getMessageStub()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append( "NAC:" );
|
||||
sb.append( getNAC() );
|
||||
sb.append( " " );
|
||||
sb.append( getDUID().getLabel() );
|
||||
sb.append( " " );
|
||||
|
||||
if( isEncrypted() )
|
||||
{
|
||||
sb.append( "ENCRYPTED" );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( isImplicitFormat() || getVendor() == Vendor.STANDARD )
|
||||
{
|
||||
sb.append( getOpcode().getLabel() );
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.append( "VENDOR:" + getVendor().getLabel() + " " );
|
||||
sb.append( getVendorOpcode().getLabel() );
|
||||
}
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public boolean isEncrypted()
|
||||
{
|
||||
return mMessage.get( ENCRYPTION_FLAG );
|
||||
}
|
||||
|
||||
public boolean isImplicitFormat()
|
||||
{
|
||||
return mMessage.get( IMPLICIT_VENDOR_FLAG );
|
||||
}
|
||||
|
||||
public LinkControlOpcode getOpcode()
|
||||
{
|
||||
return LinkControlOpcode.fromValue( mMessage.getInt( OPCODE ) );
|
||||
}
|
||||
|
||||
public VendorLinkControlOpcode getVendorOpcode()
|
||||
{
|
||||
return VendorLinkControlOpcode.fromValue( mMessage.getInt( OPCODE ) );
|
||||
}
|
||||
|
||||
public Vendor getVendor()
|
||||
{
|
||||
if( isImplicitFormat() )
|
||||
{
|
||||
return Vendor.STANDARD;
|
||||
}
|
||||
|
||||
return Vendor.fromValue( mMessage.getInt( VENDOR ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks and repairs the 12 x 24-bit golay(24,12,8) codewords and then
|
||||
* checks and repairs the 24 x 6-bit link control and reed-solomon
|
||||
* RS(24,12,13) parity codewords
|
||||
*/
|
||||
private void checkCRC()
|
||||
{
|
||||
/* Check the Golay codewords */
|
||||
int x = 64;
|
||||
|
||||
mCRC[ 1 ] = CRC.PASSED;
|
||||
|
||||
while( x < mMessage.size() )
|
||||
{
|
||||
mMessage = Galois24.checkAndCorrect( mMessage, x );
|
||||
|
||||
if( !( mMessage.getCRC() == CRC.PASSED ) )
|
||||
{
|
||||
mCRC[ 1 ] = CRC.FAILED_CRC;
|
||||
}
|
||||
|
||||
x += 24;
|
||||
}
|
||||
|
||||
/* Check the Reed-Solomon parity bits. The RS decoder expects the link
|
||||
* control data and reed solomon parity hex codewords in reverse order.
|
||||
* The RS(24,12,13) code used by P25 removes the left-hand 47 data hex
|
||||
* words, so we replace them with zeros. */
|
||||
int[] input = new int [63];
|
||||
int[] output = new int [63];
|
||||
|
||||
input[ 0 ] = mMessage.getInt( RS_HEX_11 );
|
||||
input[ 1 ] = mMessage.getInt( RS_HEX_10 );
|
||||
input[ 2 ] = mMessage.getInt( RS_HEX_9 );
|
||||
input[ 3 ] = mMessage.getInt( RS_HEX_8 );
|
||||
input[ 4 ] = mMessage.getInt( RS_HEX_7 );
|
||||
input[ 5 ] = mMessage.getInt( RS_HEX_6 );
|
||||
input[ 6 ] = mMessage.getInt( RS_HEX_5 );
|
||||
input[ 7 ] = mMessage.getInt( RS_HEX_4 );
|
||||
input[ 8 ] = mMessage.getInt( RS_HEX_3 );
|
||||
input[ 9 ] = mMessage.getInt( RS_HEX_2 );
|
||||
input[ 10 ] = mMessage.getInt( RS_HEX_1 );
|
||||
input[ 11 ] = mMessage.getInt( RS_HEX_0 );
|
||||
input[ 12 ] = mMessage.getInt( LC_HEX_11 );
|
||||
input[ 13 ] = mMessage.getInt( LC_HEX_10 );
|
||||
input[ 14 ] = mMessage.getInt( LC_HEX_9 );
|
||||
input[ 15 ] = mMessage.getInt( LC_HEX_8 );
|
||||
input[ 16 ] = mMessage.getInt( LC_HEX_7 );
|
||||
input[ 17 ] = mMessage.getInt( LC_HEX_6 );
|
||||
input[ 18 ] = mMessage.getInt( LC_HEX_5 );
|
||||
input[ 19 ] = mMessage.getInt( LC_HEX_4 );
|
||||
input[ 20 ] = mMessage.getInt( LC_HEX_3 );
|
||||
input[ 21 ] = mMessage.getInt( LC_HEX_2 );
|
||||
input[ 22 ] = mMessage.getInt( LC_HEX_1 );
|
||||
input[ 23 ] = mMessage.getInt( LC_HEX_0 );
|
||||
/* indexes 24 - 62 are defaulted to zero */
|
||||
|
||||
boolean irrecoverableErrors = mReedSolomonDecoder.decode( input, output );
|
||||
|
||||
if( irrecoverableErrors )
|
||||
{
|
||||
mCRC[ 2 ] = CRC.FAILED_CRC;
|
||||
}
|
||||
else
|
||||
{
|
||||
mCRC[ 2 ] = CRC.PASSED;
|
||||
|
||||
/* Only fix the link control data hex codewords */
|
||||
repairHexCodeword( input, output, 12, LC_HEX_11 );
|
||||
repairHexCodeword( input, output, 13, LC_HEX_10 );
|
||||
repairHexCodeword( input, output, 14, LC_HEX_9 );
|
||||
repairHexCodeword( input, output, 15, LC_HEX_8 );
|
||||
repairHexCodeword( input, output, 16, LC_HEX_7 );
|
||||
repairHexCodeword( input, output, 17, LC_HEX_6 );
|
||||
repairHexCodeword( input, output, 18, LC_HEX_5 );
|
||||
repairHexCodeword( input, output, 19, LC_HEX_4 );
|
||||
repairHexCodeword( input, output, 20, LC_HEX_3 );
|
||||
repairHexCodeword( input, output, 21, LC_HEX_2 );
|
||||
repairHexCodeword( input, output, 22, LC_HEX_1 );
|
||||
repairHexCodeword( input, output, 23, LC_HEX_0 );
|
||||
|
||||
/* If the golay check failed, mark it as corrected too */
|
||||
if( mCRC[ 1 ] == CRC.FAILED_CRC )
|
||||
{
|
||||
mCRC[ 1 ] = CRC.CORRECTED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void repairHexCodeword( int[] input, int[] output, int index, int[] indexSet )
|
||||
{
|
||||
if( input[ index ] != output[ index ] )
|
||||
{
|
||||
mMessage.load( indexSet[ 0 ], 6, output[ index ] );
|
||||
mCRC[ 2 ] = CRC.CORRECTED;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the message passed the golay and reed-solomon parity checks
|
||||
* or was corrected.
|
||||
*/
|
||||
public boolean isValid()
|
||||
{
|
||||
// mCRC[ 0 ] - always passes (otherwise message wouldn't be constructed )
|
||||
// mCRC[ 1 ] - golay - always passes or corrected if mCRC[2] is valid
|
||||
|
||||
return mCRC[ 2 ] == CRC.PASSED || mCRC[ 2 ] == CRC.CORRECTED;
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -26,7 +26,7 @@ public class AdjacentSiteStatusBroadcast extends TDULinkControlMessage
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 188,189,190,191,192,193,
|
||||
194,195 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public AdjacentSiteStatusBroadcast( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -100,7 +100,7 @@ public class AdjacentSiteStatusBroadcast extends TDULinkControlMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public class CallTermination extends TDULinkControlMessage
|
||||
|
||||
sb.append( getMessageStub() );
|
||||
|
||||
sb.append( " FROM:" + getSourceAddress() );
|
||||
sb.append( " BY:" + getSourceAddress() );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
|
||||
public class ChannelIdentifierUpdate extends TDULinkControlMessage
|
||||
implements IdentifierProvider
|
||||
implements IBandIdentifier
|
||||
{
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( ChannelIdentifierUpdate.class );
|
||||
|
||||
@@ -3,11 +3,11 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
|
||||
public class ChannelIdentifierUpdateExplicit extends TDULinkControlMessage
|
||||
implements IdentifierProvider
|
||||
implements IBandIdentifier
|
||||
{
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( ChannelIdentifierUpdateExplicit.class );
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package decode.p25.message.tdu.lc;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
|
||||
@@ -23,8 +26,8 @@ public class GroupVoiceChannelUpdate extends TDULinkControlMessage
|
||||
public static final int[] GROUP_ADDRESS_B = { 168,169,170,171,184,185,186,
|
||||
187,188,189,190,191,192,193,194,195 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdateA;
|
||||
private IdentifierProvider mIdentifierUpdateB;
|
||||
private IBandIdentifier mIdentifierUpdateA;
|
||||
private IBandIdentifier mIdentifierUpdateB;
|
||||
|
||||
public GroupVoiceChannelUpdate( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -103,8 +106,23 @@ public class GroupVoiceChannelUpdate extends TDULinkControlMessage
|
||||
return mMessage.getHex( GROUP_ADDRESS_B, 4 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a sorted list of addresses contained in the A and B fields
|
||||
* @return
|
||||
*/
|
||||
public Set<String> getAddresses()
|
||||
{
|
||||
Set<String> addresses = new TreeSet<String>();
|
||||
|
||||
addresses.add( getGroupAddressA() );
|
||||
addresses.add( getGroupAddressB() );
|
||||
|
||||
return addresses;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getChannelIdentifierA() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.P25Message.DuplexMode;
|
||||
import decode.p25.message.P25Message.SessionMode;
|
||||
@@ -28,8 +28,8 @@ public class GroupVoiceChannelUpdateExplicit extends TDULinkControlMessage
|
||||
public static final int[] RECEIVE_CHANNEL = { 184,185,186,187,188,189,190,
|
||||
191,192,193,194,195,196,197,198,199 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public GroupVoiceChannelUpdateExplicit( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -119,7 +119,7 @@ public class GroupVoiceChannelUpdateExplicit extends TDULinkControlMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
import decode.p25.reference.Service;
|
||||
@@ -13,9 +13,10 @@ public class NetworkStatusBroadcast extends TDULinkControlMessage
|
||||
{
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( NetworkStatusBroadcast.class );
|
||||
public static final int[] NETWORK_ID = { 72,73,74,75,88,89,90,91,92,93,94,
|
||||
95,96,97,98,99,112,113,114,115,116,117,118,119,120,121,122,123 };
|
||||
public static final int[] SYSTEM_ID = { 136,137,138,139,140,141,142,143,144,
|
||||
|
||||
public static final int[] WACN = { 72,73,74,75,88,89,90,91,92,93,94,95,96,
|
||||
97,98,99,112,113,114,115,116,117,118,119,120,121,122,123 };
|
||||
public static final int[] SYSTEM = { 136,137,138,139,140,141,142,143,144,
|
||||
145,146,147 };
|
||||
public static final int[] IDENTIFIER = { 160,161,162,163 };
|
||||
public static final int[] CHANNEL = { 164,165,166,167,168,169,170,171,184,
|
||||
@@ -23,7 +24,7 @@ public class NetworkStatusBroadcast extends TDULinkControlMessage
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 188,189,190,191,192,193,
|
||||
194,195 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public NetworkStatusBroadcast( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -43,22 +44,22 @@ public class NetworkStatusBroadcast extends TDULinkControlMessage
|
||||
|
||||
sb.append( getMessageStub() );
|
||||
|
||||
sb.append( " NETWORK:" + getNetworkID() );
|
||||
sb.append( " SYS:" + getSystemID() );
|
||||
sb.append( " NETWORK:" + getWACN() );
|
||||
sb.append( " SYS:" + getSystem() );
|
||||
sb.append( " CHAN:" + getChannel() );
|
||||
sb.append( " " + Service.getServices( getSystemServiceClass() ).toString() );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String getNetworkID()
|
||||
public String getWACN()
|
||||
{
|
||||
return mMessage.getHex( NETWORK_ID, 5 );
|
||||
return mMessage.getHex( WACN, 5 );
|
||||
}
|
||||
|
||||
public String getSystemID()
|
||||
public String getSystem()
|
||||
{
|
||||
return mMessage.getHex( SYSTEM_ID, 3 );
|
||||
return mMessage.getHex( SYSTEM, 3 );
|
||||
}
|
||||
|
||||
public int getIdentifier()
|
||||
@@ -82,7 +83,7 @@ public class NetworkStatusBroadcast extends TDULinkControlMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
import decode.p25.reference.Service;
|
||||
@@ -13,9 +13,10 @@ public class NetworkStatusBroadcastExplicit extends TDULinkControlMessage
|
||||
{
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( NetworkStatusBroadcastExplicit.class );
|
||||
public static final int[] NETWORK_ID = { 72,73,74,75,88,89,90,91,92,93,94,
|
||||
95,96,97,98,99,112,113,114,115 };
|
||||
public static final int[] SYSTEM_ID = { 116,117,118,119,120,121,122,123,136,
|
||||
|
||||
public static final int[] WACN = { 72,73,74,75,88,89,90,91,92,93,94,95,96,
|
||||
97,98,99,112,113,114,115 };
|
||||
public static final int[] SYSTEM = { 116,117,118,119,120,121,122,123,136,
|
||||
137,138,139 };
|
||||
public static final int[] TRANSMIT_IDENTIFIER = { 140,141,142,143 };
|
||||
public static final int[] TRANSMIT_CHANNEL = { 144,145,146,147,160,161,162,
|
||||
@@ -24,8 +25,8 @@ public class NetworkStatusBroadcastExplicit extends TDULinkControlMessage
|
||||
public static final int[] RECEIVE_CHANNEL = { 184,185,186,187,188,189,190,
|
||||
191,192,193,194,195 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public NetworkStatusBroadcastExplicit( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -45,22 +46,22 @@ public class NetworkStatusBroadcastExplicit extends TDULinkControlMessage
|
||||
|
||||
sb.append( getMessageStub() );
|
||||
|
||||
sb.append( " NETWORK:" + getNetworkID() );
|
||||
sb.append( " SYS:" + getSystemID() );
|
||||
sb.append( " NETWORK:" + getWACN() );
|
||||
sb.append( " SYS:" + getSystem() );
|
||||
sb.append( " TRANSMIT:" + getTransmitChannel() );
|
||||
sb.append( " RECEIVE:" + getReceiveChannel() );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String getNetworkID()
|
||||
public String getWACN()
|
||||
{
|
||||
return mMessage.getHex( NETWORK_ID, 5 );
|
||||
return mMessage.getHex( WACN, 5 );
|
||||
}
|
||||
|
||||
public String getSystemID()
|
||||
public String getSystem()
|
||||
{
|
||||
return mMessage.getHex( SYSTEM_ID, 3 );
|
||||
return mMessage.getHex( SYSTEM, 3 );
|
||||
}
|
||||
|
||||
public int getTransmitIdentifier()
|
||||
@@ -94,7 +95,7 @@ public class NetworkStatusBroadcastExplicit extends TDULinkControlMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -28,7 +28,7 @@ public class RFSSStatusBroadcast extends TDULinkControlMessage
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 188,189,190,191,192,193,
|
||||
194,195 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public RFSSStatusBroadcast( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -104,7 +104,7 @@ public class RFSSStatusBroadcast extends TDULinkControlMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -28,8 +28,8 @@ public class RFSSStatusBroadcastExplicit extends TDULinkControlMessage
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 188,189,190,191,192,193,
|
||||
194,195 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public RFSSStatusBroadcastExplicit( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -115,7 +115,7 @@ public class RFSSStatusBroadcastExplicit extends TDULinkControlMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -29,8 +29,8 @@ public class SecondaryControlChannelBroadcast extends TDULinkControlMessage
|
||||
public static final int[] SYSTEM_SERVICE_CLASS_B = { 188,189,190,191,192,
|
||||
193,194,195 };
|
||||
|
||||
private IdentifierProvider mIdentifierProviderA;
|
||||
private IdentifierProvider mIdentifierProviderB;
|
||||
private IBandIdentifier mIdentifierProviderA;
|
||||
private IBandIdentifier mIdentifierProviderB;
|
||||
|
||||
public SecondaryControlChannelBroadcast( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -114,7 +114,7 @@ public class SecondaryControlChannelBroadcast extends TDULinkControlMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getIdentifierA() )
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package decode.p25.message.tdu.lc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.osp.control.SystemService;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
@@ -25,8 +25,8 @@ public class SecondaryControlChannelBroadcastExplicit
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 168,169,170,171,184,
|
||||
185,186,187 };
|
||||
|
||||
private IdentifierProvider mTransmitIdentifierProvider;
|
||||
private IdentifierProvider mReceiveIdentifierProvider;
|
||||
private IBandIdentifier mTransmitIdentifierProvider;
|
||||
private IBandIdentifier mReceiveIdentifierProvider;
|
||||
|
||||
public SecondaryControlChannelBroadcastExplicit( TDULinkControlMessage source )
|
||||
{
|
||||
@@ -103,7 +103,7 @@ public class SecondaryControlChannelBroadcastExplicit
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitIdentifier() )
|
||||
{
|
||||
|
||||
@@ -85,6 +85,7 @@ public class TDULCMessageFactory
|
||||
{
|
||||
switch( message.getVendor() )
|
||||
{
|
||||
case MOTOROLA:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import org.slf4j.LoggerFactory;
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.P25Message;
|
||||
import decode.p25.message.tsbk.motorola.MotorolaOpcode;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
import decode.p25.reference.LinkControlOpcode;
|
||||
import decode.p25.reference.Vendor;
|
||||
@@ -131,16 +132,31 @@ public class TDULinkControlMessage extends P25Message
|
||||
{
|
||||
return mMessage.get( IMPLICIT_VENDOR_FLAG );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Standard opcodes when the Vendor is STANDARD
|
||||
*/
|
||||
public LinkControlOpcode getOpcode()
|
||||
{
|
||||
return LinkControlOpcode.fromValue( mMessage.getInt( OPCODE ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a generic vendor-neutral opcode. Use this when there is a non
|
||||
* standard vendor code.
|
||||
*/
|
||||
public VendorLinkControlOpcode getVendorOpcode()
|
||||
{
|
||||
return VendorLinkControlOpcode.fromValue( mMessage.getInt( OPCODE ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* If the vendor is motorola, returns the Motorola OPCODE for this message
|
||||
*/
|
||||
public MotorolaOpcode getMotorolaOpcode()
|
||||
{
|
||||
return MotorolaOpcode.fromValue( mMessage.getInt( OPCODE ) );
|
||||
}
|
||||
|
||||
public Vendor getVendor()
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
@@ -14,7 +14,7 @@ public abstract class ChannelGrant extends ServiceMessage
|
||||
public static final int[] CHANNEL_NUMBER = { 92,93,94,95,96,97,98,99,100,
|
||||
101,102,103 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public ChannelGrant( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -47,7 +47,7 @@ public abstract class ChannelGrant extends ServiceMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
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 IdentifierProvider mTransmitIdentifierUpdate;
|
||||
private IdentifierProvider mReceiveIdentifierUpdate;
|
||||
private IBandIdentifier mTransmitIdentifierUpdate;
|
||||
private IBandIdentifier mReceiveIdentifierUpdate;
|
||||
|
||||
public GroupChannelGrantExplicit( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -85,7 +85,7 @@ public abstract class GroupChannelGrantExplicit extends ChannelGrant
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
@@ -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 IdentifierProvider mIdentifierUpdate1;
|
||||
private IdentifierProvider mIdentifierUpdate2;
|
||||
private IBandIdentifier mIdentifierUpdate1;
|
||||
private IBandIdentifier mIdentifierUpdate2;
|
||||
|
||||
public GroupMultiChannelGrant( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -114,7 +114,7 @@ public abstract class GroupMultiChannelGrant extends ChannelGrant
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getChannelIdentifier1() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk.motorola;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
@@ -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 IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public ChannelCWIDUpdate( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -104,7 +104,7 @@ public class ChannelCWIDUpdate extends MotorolaTSBKMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -59,6 +59,4 @@ public abstract class PatchGroup extends MotorolaTSBKMessage
|
||||
{
|
||||
return mMessage.getHex( GROUP_ADDRESS_3, 4 );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk.motorola;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
@@ -24,7 +24,7 @@ public class PatchGroupVoiceChannelGrant extends MotorolaTSBKMessage
|
||||
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 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public PatchGroupVoiceChannelGrant( BinaryMessage message, DataUnitID duid,
|
||||
AliasList aliasList )
|
||||
@@ -122,7 +122,7 @@ public class PatchGroupVoiceChannelGrant extends MotorolaTSBKMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
mIdentifierUpdate = message;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk.motorola;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
@@ -20,8 +20,8 @@ public class PatchGroupVoiceChannelGrantUpdate extends MotorolaTSBKMessage
|
||||
public static final int[] PATCH_GROUP_ADDRESS_2 = { 128,129,130,131,132,133,
|
||||
134,135,136,137,138,139,140,141,142,143 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate1;
|
||||
private IdentifierProvider mIdentifierUpdate2;
|
||||
private IBandIdentifier mIdentifierUpdate1;
|
||||
private IBandIdentifier mIdentifierUpdate2;
|
||||
|
||||
public PatchGroupVoiceChannelGrantUpdate( BinaryMessage message,
|
||||
DataUnitID duid, AliasList aliasList )
|
||||
@@ -100,7 +100,7 @@ public class PatchGroupVoiceChannelGrantUpdate extends MotorolaTSBKMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getChannelIdentifier1() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk.osp.control;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.TSBKMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -26,7 +26,7 @@ public class AdjacentStatusBroadcast extends TSBKMessage implements IdentifierRe
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 136,137,138,139,140,141,
|
||||
142,143 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public AdjacentStatusBroadcast( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -163,7 +163,7 @@ public class AdjacentStatusBroadcast extends TSBKMessage implements IdentifierRe
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
/* we're only expecting 1 identifier, so use whatever is received */
|
||||
mIdentifierUpdate = message;
|
||||
|
||||
@@ -2,12 +2,12 @@ package decode.p25.message.tsbk.osp.control;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.tsbk.TSBKMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
public abstract class IdentifierUpdate extends TSBKMessage
|
||||
implements IdentifierProvider
|
||||
implements IBandIdentifier
|
||||
{
|
||||
public static final int[] IDENTIFIER = { 80,81,82,83 };
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk.osp.control;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.TSBKMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -23,7 +23,7 @@ public class NetworkStatusBroadcast extends TSBKMessage implements IdentifierRec
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 136,137,138,139,140,141,
|
||||
142,143 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public NetworkStatusBroadcast( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -109,7 +109,7 @@ public class NetworkStatusBroadcast extends TSBKMessage implements IdentifierRec
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
/* we're only expecting 1 identifier, so use whatever is received */
|
||||
mIdentifierUpdate = message;
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk.osp.control;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.TSBKMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -23,7 +23,7 @@ public class RFSSStatusBroadcast extends TSBKMessage implements IdentifierReceiv
|
||||
public static final int[] SYSTEM_SERVICE_CLASS = { 136,137,138,139,140,141,
|
||||
142,143 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate;
|
||||
private IBandIdentifier mIdentifierUpdate;
|
||||
|
||||
public RFSSStatusBroadcast( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -119,7 +119,7 @@ public class RFSSStatusBroadcast extends TSBKMessage implements IdentifierReceiv
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
/* we're only expecting 1 identifier, so use whatever is received */
|
||||
mIdentifierUpdate = message;
|
||||
|
||||
@@ -5,7 +5,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.message.tsbk.TSBKMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
@@ -30,8 +30,8 @@ public class SecondaryControlChannelBroadcast extends TSBKMessage
|
||||
public static final int[] SYSTEM_SERVICE_CLASS_2 = { 136,137,138,139,140,
|
||||
141,142,143 };
|
||||
|
||||
private IdentifierProvider mIdentifierUpdate1;
|
||||
private IdentifierProvider mIdentifierUpdate2;
|
||||
private IBandIdentifier mIdentifierUpdate1;
|
||||
private IBandIdentifier mIdentifierUpdate2;
|
||||
|
||||
public SecondaryControlChannelBroadcast( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -145,7 +145,7 @@ public class SecondaryControlChannelBroadcast extends TSBKMessage
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getIdentifier1() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk.osp.data;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
@@ -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 IdentifierProvider mIdentifierUpdateTransmit;
|
||||
private IdentifierProvider mIdentifierUpdateReceive;
|
||||
private IBandIdentifier mIdentifierUpdateTransmit;
|
||||
private IBandIdentifier mIdentifierUpdateReceive;
|
||||
|
||||
public SNDCPDataChannelAnnouncementExplicit( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -118,7 +118,7 @@ public class SNDCPDataChannelAnnouncementExplicit extends SNDCPData
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ package decode.p25.message.tsbk.osp.data;
|
||||
|
||||
import alias.AliasList;
|
||||
import bits.BinaryMessage;
|
||||
import decode.p25.message.IdentifierProvider;
|
||||
import decode.p25.message.IBandIdentifier;
|
||||
import decode.p25.message.IdentifierReceiver;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
|
||||
@@ -18,8 +18,8 @@ public class SNDCPDataChannelGrant extends SNDCPData implements IdentifierReceiv
|
||||
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 IdentifierProvider mIdentifierUpdateTransmit;
|
||||
private IdentifierProvider mIdentifierUpdateReceive;
|
||||
private IBandIdentifier mIdentifierUpdateTransmit;
|
||||
private IBandIdentifier mIdentifierUpdateReceive;
|
||||
|
||||
public SNDCPDataChannelGrant( BinaryMessage message,
|
||||
DataUnitID duid,
|
||||
@@ -91,7 +91,7 @@ public class SNDCPDataChannelGrant extends SNDCPData implements IdentifierReceiv
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdentifierMessage( int identifier, IdentifierProvider message )
|
||||
public void setIdentifierMessage( int identifier, IBandIdentifier message )
|
||||
{
|
||||
if( identifier == getTransmitChannelIdentifier() )
|
||||
{
|
||||
|
||||
@@ -2,71 +2,71 @@ package decode.p25.reference;
|
||||
|
||||
public enum VendorLinkControlOpcode
|
||||
{
|
||||
RESERVED_00( "RESERVED_00 ", "Reserved", 0 ),
|
||||
RESERVED_01( "RESERVED_01 ", "Reserved", 1 ),
|
||||
RESERVED_02( "RESERVED_02 ", "Reserved", 2 ),
|
||||
RESERVED_03( "RESERVED_03 ", "Reserved", 3 ),
|
||||
RESERVED_04( "RESERVED_04 ", "Reserved", 4 ),
|
||||
RESERVED_05( "RESERVED_05 ", "Reserved", 5 ),
|
||||
RESERVED_06( "RESERVED_06 ", "Reserved", 6 ),
|
||||
RESERVED_07( "RESERVED_07 ", "Reserved", 7 ),
|
||||
RESERVED_08( "RESERVED_0B ", "Reserved", 8 ),
|
||||
RESERVED_09( "RESERVED_0B ", "Reserved", 9 ),
|
||||
RESERVED_0A( "RESERVED_0B ", "Reserved", 10 ),
|
||||
RESERVED_0B( "RESERVED_0B ", "Reserved", 11 ),
|
||||
RESERVED_0C( "RESERVED_0C ", "Reserved", 12 ),
|
||||
RESERVED_0D( "RESERVED_0D ", "Reserved", 13 ),
|
||||
RESERVED_0E( "RESERVED_0E ", "Reserved", 14 ),
|
||||
RESERVED_0F( "RESERVED_0F ", "Reserved", 15 ),
|
||||
RESERVED_10( "RESERVED_10 ", "Reserved", 16 ),
|
||||
RESERVED_11( "RESERVED_11 ", "Reserved", 17 ),
|
||||
RESERVED_12( "RESERVED_12 ", "Reserved", 18 ),
|
||||
RESERVED_13( "RESERVED_13 ", "Reserved", 19 ),
|
||||
RESERVED_14( "RESERVED_14 ", "Reserved", 20 ),
|
||||
RESERVED_15( "RESERVED_15 ", "Reserved", 21 ),
|
||||
RESERVED_16( "RESERVED_16 ", "Reserved", 22 ),
|
||||
RESERVED_17( "RESERVED_17 ", "Reserved", 23 ),
|
||||
RESERVED_18( "RESERVED_18 ", "Reserved", 24 ),
|
||||
RESERVED_19( "RESERVED_19 ", "Reserved", 25 ),
|
||||
RESERVED_1A( "RESERVED_1A ", "Reserved", 26 ),
|
||||
RESERVED_1B( "RESERVED_1B ", "Reserved", 27 ),
|
||||
RESERVED_1C( "RESERVED_1C ", "Reserved", 28 ),
|
||||
RESERVED_1D( "RESERVED_1D ", "Reserved", 29 ),
|
||||
RESERVED_1E( "RESERVED_1E ", "Reserved", 30 ),
|
||||
RESERVED_1F( "RESERVED_1F ", "Reserved", 31 ),
|
||||
RESERVED_20( "RESERVED_20 ", "Reserved", 32 ),
|
||||
RESERVED_21( "RESERVED_21 ", "Reserved", 33 ),
|
||||
RESERVED_22( "RESERVED_22 ", "Reserved", 34 ),
|
||||
RESERVED_23( "RESERVED_23 ", "Reserved", 35 ),
|
||||
RESERVED_24( "RESERVED_24 ", "Reserved", 36 ),
|
||||
RESERVED_25( "RESERVED_25 ", "Reserved", 37 ),
|
||||
RESERVED_26( "RESERVED_26 ", "Reserved", 38 ),
|
||||
RESERVED_27( "RESERVED_27 ", "Reserved", 39 ),
|
||||
RESERVED_28( "RESERVED_28 ", "Reserved", 40 ),
|
||||
RESERVED_29( "RESERVED_29 ", "Reserved", 41 ),
|
||||
RESERVED_2A( "RESERVED_2A ", "Reserved", 42 ),
|
||||
RESERVED_2B( "RESERVED_2B ", "Reserved", 43 ),
|
||||
RESERVED_2C( "RESERVED_2C ", "Reserved", 44 ),
|
||||
RESERVED_2D( "RESERVED_2D ", "Reserved", 45 ),
|
||||
RESERVED_2E( "RESERVED_2E ", "Reserved", 46 ),
|
||||
RESERVED_2F( "RESERVED_2F ", "Reserved", 47 ),
|
||||
RESERVED_30( "RESERVED_30 ", "Reserved", 48 ),
|
||||
RESERVED_31( "RESERVED_31 ", "Reserved", 49 ),
|
||||
RESERVED_32( "RESERVED_32 ", "Reserved", 50 ),
|
||||
RESERVED_33( "RESERVED_33 ", "Reserved", 51 ),
|
||||
RESERVED_34( "RESERVED_34 ", "Reserved", 52 ),
|
||||
RESERVED_35( "RESERVED_35 ", "Reserved", 53 ),
|
||||
RESERVED_36( "RESERVED_36 ", "Reserved", 54 ),
|
||||
RESERVED_37( "RESERVED_37 ", "Reserved", 55 ),
|
||||
RESERVED_38( "RESERVED_38 ", "Reserved", 56 ),
|
||||
RESERVED_39( "RESERVED_39 ", "Reserved", 57 ),
|
||||
RESERVED_3A( "RESERVED_3A ", "Reserved", 58 ),
|
||||
RESERVED_3B( "RESERVED_3B ", "Reserved", 59 ),
|
||||
RESERVED_3C( "RESERVED_3C ", "Reserved", 60 ),
|
||||
RESERVED_3D( "RESERVED_3D ", "Reserved", 61 ),
|
||||
RESERVED_3E( "RESERVED_3E ", "Reserved", 62 ),
|
||||
RESERVED_3F( "RESERVED_3F ", "Reserved", 63 ),
|
||||
UNKNOWN( "UNKNOWN ", "Unknown", -1 );
|
||||
RESERVED_00( "OPCODE_00", "RESERVED", 0 ),
|
||||
RESERVED_01( "OPCODE_01", "RESERVED", 1 ),
|
||||
RESERVED_02( "OPCODE_02", "RESERVED", 2 ),
|
||||
RESERVED_03( "OPCODE_03", "RESERVED", 3 ),
|
||||
RESERVED_04( "OPCODE_04", "RESERVED", 4 ),
|
||||
RESERVED_05( "OPCODE_05", "RESERVED", 5 ),
|
||||
RESERVED_06( "OPCODE_06", "RESERVED", 6 ),
|
||||
RESERVED_07( "OPCODE_07", "RESERVED", 7 ),
|
||||
RESERVED_08( "OPCODE_0B", "RESERVED", 8 ),
|
||||
RESERVED_09( "OPCODE_0B", "RESERVED", 9 ),
|
||||
RESERVED_0A( "OPCODE_0B", "RESERVED", 10 ),
|
||||
RESERVED_0B( "OPCODE_0B", "RESERVED", 11 ),
|
||||
RESERVED_0C( "OPCODE_0C", "RESERVED", 12 ),
|
||||
RESERVED_0D( "OPCODE_0D", "RESERVED", 13 ),
|
||||
RESERVED_0E( "OPCODE_0E", "RESERVED", 14 ),
|
||||
RESERVED_0F( "OPCODE_0F", "RESERVED", 15 ),
|
||||
RESERVED_10( "OPCODE_10", "RESERVED", 16 ),
|
||||
RESERVED_11( "OPCODE_11", "RESERVED", 17 ),
|
||||
RESERVED_12( "OPCODE_12", "RESERVED", 18 ),
|
||||
RESERVED_13( "OPCODE_13", "RESERVED", 19 ),
|
||||
RESERVED_14( "OPCODE_14", "RESERVED", 20 ),
|
||||
RESERVED_15( "OPCODE_15", "RESERVED", 21 ),
|
||||
RESERVED_16( "OPCODE_16", "RESERVED", 22 ),
|
||||
RESERVED_17( "OPCODE_17", "RESERVED", 23 ),
|
||||
RESERVED_18( "OPCODE_18", "RESERVED", 24 ),
|
||||
RESERVED_19( "OPCODE_19", "RESERVED", 25 ),
|
||||
RESERVED_1A( "OPCODE_1A", "RESERVED", 26 ),
|
||||
RESERVED_1B( "OPCODE_1B", "RESERVED", 27 ),
|
||||
RESERVED_1C( "OPCODE_1C", "RESERVED", 28 ),
|
||||
RESERVED_1D( "OPCODE_1D", "RESERVED", 29 ),
|
||||
RESERVED_1E( "OPCODE_1E", "RESERVED", 30 ),
|
||||
RESERVED_1F( "OPCODE_1F", "RESERVED", 31 ),
|
||||
RESERVED_20( "OPCODE_20", "RESERVED", 32 ),
|
||||
RESERVED_21( "OPCODE_21", "RESERVED", 33 ),
|
||||
RESERVED_22( "OPCODE_22", "RESERVED", 34 ),
|
||||
RESERVED_23( "OPCODE_23", "RESERVED", 35 ),
|
||||
RESERVED_24( "OPCODE_24", "RESERVED", 36 ),
|
||||
RESERVED_25( "OPCODE_25", "RESERVED", 37 ),
|
||||
RESERVED_26( "OPCODE_26", "RESERVED", 38 ),
|
||||
RESERVED_27( "OPCODE_27", "RESERVED", 39 ),
|
||||
RESERVED_28( "OPCODE_28", "RESERVED", 40 ),
|
||||
RESERVED_29( "OPCODE_29", "RESERVED", 41 ),
|
||||
RESERVED_2A( "OPCODE_2A", "RESERVED", 42 ),
|
||||
RESERVED_2B( "OPCODE_2B", "RESERVED", 43 ),
|
||||
RESERVED_2C( "OPCODE_2C", "RESERVED", 44 ),
|
||||
RESERVED_2D( "OPCODE_2D", "RESERVED", 45 ),
|
||||
RESERVED_2E( "OPCODE_2E", "RESERVED", 46 ),
|
||||
RESERVED_2F( "OPCODE_2F", "RESERVED", 47 ),
|
||||
RESERVED_30( "OPCODE_30", "RESERVED", 48 ),
|
||||
RESERVED_31( "OPCODE_31", "RESERVED", 49 ),
|
||||
RESERVED_32( "OPCODE_32", "RESERVED", 50 ),
|
||||
RESERVED_33( "OPCODE_33", "RESERVED", 51 ),
|
||||
RESERVED_34( "OPCODE_34", "RESERVED", 52 ),
|
||||
RESERVED_35( "OPCODE_35", "RESERVED", 53 ),
|
||||
RESERVED_36( "OPCODE_36", "RESERVED", 54 ),
|
||||
RESERVED_37( "OPCODE_37", "RESERVED", 55 ),
|
||||
RESERVED_38( "OPCODE_38", "RESERVED", 56 ),
|
||||
RESERVED_39( "OPCODE_39", "RESERVED", 57 ),
|
||||
RESERVED_3A( "OPCODE_3A", "RESERVED", 58 ),
|
||||
RESERVED_3B( "OPCODE_3B", "RESERVED", 59 ),
|
||||
RESERVED_3C( "OPCODE_3C", "RESERVED", 60 ),
|
||||
RESERVED_3D( "OPCODE_3D", "RESERVED", 61 ),
|
||||
RESERVED_3E( "OPCODE_3E", "RESERVED", 62 ),
|
||||
RESERVED_3F( "OPCODE_3F", "RESERVED", 63 ),
|
||||
UNKNOWN( "UNKNOWN OPCODE", "UNKNOWN", -1 );
|
||||
|
||||
private String mLabel;
|
||||
private String mDescription;
|
||||
|
||||
Reference in New Issue
Block a user