mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-14 17:47:32 -05:00
P25 work in progress - final check-in of channel state and activity summary processing of TSBK and PDU messages and event generation.
This commit is contained in:
@@ -13,7 +13,10 @@ public class DenyResponse extends TSBKMessage
|
||||
public static final int[] SERVICE_TYPE = { 82,83,84,85,86,87 };
|
||||
public static final int[] REASON_CODE = { 88,89,90,91,92,93,94,95 };
|
||||
|
||||
/* Additional Info block not yet parsed */
|
||||
public static final int[] CALL_OPTIONS = { 96,97,98,99,100,101,102,103 };
|
||||
public static final int[] SOURCE_GROUP = { 104,105,106,107,108,109,110,111 };
|
||||
public static final int[] SOURCE_ADDRESS = { 96,97,98,99,100,101,102,103,104,
|
||||
105,106,107,108,109,110,111 };
|
||||
|
||||
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 };
|
||||
@@ -56,9 +59,27 @@ public class DenyResponse extends TSBKMessage
|
||||
return mMessage.get( ADDITIONAL_INFORMATION_FLAG );
|
||||
}
|
||||
|
||||
public String getServiceType()
|
||||
public Opcode getServiceType()
|
||||
{
|
||||
return mMessage.getHex( SERVICE_TYPE, 2 );
|
||||
return Opcode.fromValue( mMessage.getInt( SERVICE_TYPE ) );
|
||||
}
|
||||
|
||||
public String getSourceAddress()
|
||||
{
|
||||
switch( getServiceType() )
|
||||
{
|
||||
case GROUP_DATA_CHANNEL_GRANT:
|
||||
case GROUP_VOICE_CHANNEL_GRANT:
|
||||
return mMessage.getHex( SOURCE_GROUP, 4 );
|
||||
case UNIT_TO_UNIT_VOICE_CHANNEL_GRANT:
|
||||
case INDIVIDUAL_DATA_CHANNEL_GRANT:
|
||||
case TELEPHONE_INTERCONNECT_VOICE_CHANNEL_GRANT:
|
||||
return mMessage.getHex( SOURCE_ADDRESS, 6 );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getTargetAddress()
|
||||
|
||||
@@ -4,13 +4,15 @@ import alias.AliasList;
|
||||
import bits.BitSetBuffer;
|
||||
import decode.p25.message.tsbk.TSBKMessage;
|
||||
import decode.p25.reference.DataUnitID;
|
||||
import decode.p25.reference.ExtendedFunction;
|
||||
import decode.p25.reference.Opcode;
|
||||
|
||||
public class ExtendedFunctionCommand extends TSBKMessage
|
||||
{
|
||||
public static final int[] EXTENDED_FUNCTION = { 80,81,82,83,84,85,86,87,
|
||||
88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,
|
||||
108,109,110,111,112,113,114,115,116,117,118,119 };
|
||||
88,89,90,91,92,93,94,95 };
|
||||
public static final int[] ARGUMENT = { 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[] 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 };
|
||||
|
||||
@@ -33,16 +35,43 @@ public class ExtendedFunctionCommand extends TSBKMessage
|
||||
|
||||
sb.append( getMessageStub() );
|
||||
|
||||
sb.append( " EXTENDED FUNCTION:" + getExtendedFunction() );
|
||||
sb.append( " EXTENDED FUNCTION:" + getExtendedFunction().getLabel() );
|
||||
|
||||
sb.append( " ARGUMENT: " + getTargetAddress() );
|
||||
|
||||
sb.append( " TGT ADDR: " + getTargetAddress() );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String getExtendedFunction()
|
||||
public ExtendedFunction getExtendedFunction()
|
||||
{
|
||||
return mMessage.getHex( EXTENDED_FUNCTION, 10 );
|
||||
return ExtendedFunction.fromValue( mMessage.getInt( EXTENDED_FUNCTION ) );
|
||||
}
|
||||
|
||||
public String getArgument()
|
||||
{
|
||||
return mMessage.getHex( ARGUMENT, 6 );
|
||||
}
|
||||
|
||||
public String getSourceAddress()
|
||||
{
|
||||
switch( getExtendedFunction() )
|
||||
{
|
||||
case RADIO_CHECK:
|
||||
case RADIO_CHECK_ACK:
|
||||
case RADIO_DETACH:
|
||||
case RADIO_DETACH_ACK:
|
||||
case RADIO_INHIBIT:
|
||||
case RADIO_INHIBIT_ACK:
|
||||
case RADIO_UNINHIBIT:
|
||||
case RADIO_UNINHIBIT_ACK:
|
||||
return getArgument();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getTargetAddress()
|
||||
|
||||
@@ -45,7 +45,7 @@ public class GroupAffiliationResponse extends TSBKMessage
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String getAffiliation()
|
||||
public String getAffiliationScope()
|
||||
{
|
||||
return mMessage.get( LOCAL_GLOBAL_AFFILIATION_FLAG) ? " GLOBAL" : " LOCAL";
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import bits.BitSetBuffer;
|
||||
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
|
||||
{
|
||||
@@ -74,6 +75,12 @@ public class NetworkStatusBroadcast extends TSBKMessage implements IdentifierUpd
|
||||
return mMessage.getHex( SYSTEM_ID, 3 );
|
||||
}
|
||||
|
||||
public String getNetworkCallsign()
|
||||
{
|
||||
return P25NetworkCallsign.getCallsign( mMessage.getInt( WACN ),
|
||||
mMessage.getInt( SYSTEM_ID ) );
|
||||
}
|
||||
|
||||
public int getIdentifier()
|
||||
{
|
||||
return mMessage.getInt( IDENTIFIER );
|
||||
|
||||
@@ -13,7 +13,10 @@ public class QueuedResponse extends TSBKMessage
|
||||
public static final int[] SERVICE_TYPE = { 82,83,84,85,86,87 };
|
||||
public static final int[] REASON_CODE = { 88,89,90,91,92,93,94,95 };
|
||||
|
||||
/* Additional Info block not yet parsed */
|
||||
public static final int[] CALL_OPTIONS = { 96,97,98,99,100,101,102,103 };
|
||||
public static final int[] SOURCE_GROUP = { 104,105,106,107,108,109,110,111 };
|
||||
public static final int[] SOURCE_ADDRESS = { 96,97,98,99,100,101,102,103,104,
|
||||
105,106,107,108,109,110,111 };
|
||||
|
||||
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 };
|
||||
@@ -56,9 +59,28 @@ public class QueuedResponse extends TSBKMessage
|
||||
return mMessage.get( ADDITIONAL_INFORMATION_FLAG );
|
||||
}
|
||||
|
||||
public String getServiceType()
|
||||
public Opcode getServiceType()
|
||||
{
|
||||
return mMessage.getHex( SERVICE_TYPE, 2 );
|
||||
return Opcode.fromValue( mMessage.getInt( SERVICE_TYPE ) );
|
||||
}
|
||||
|
||||
public String getSourceAddress()
|
||||
{
|
||||
switch( getServiceType() )
|
||||
{
|
||||
case GROUP_DATA_CHANNEL_GRANT:
|
||||
case GROUP_VOICE_CHANNEL_GRANT:
|
||||
return mMessage.getHex( SOURCE_GROUP, 4 );
|
||||
case UNIT_TO_UNIT_VOICE_CHANNEL_GRANT:
|
||||
case INDIVIDUAL_DATA_CHANNEL_GRANT:
|
||||
return mMessage.getHex( SOURCE_ADDRESS, 6 );
|
||||
case TELEPHONE_INTERCONNECT_VOICE_CHANNEL_GRANT:
|
||||
return "DELAY:" + ( mMessage.getInt( SOURCE_ADDRESS ) * 5 ) + "SECS";
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getTargetAddress()
|
||||
|
||||
Reference in New Issue
Block a user