mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 17:17:29 -05:00
P25 Decoder work in progress
This commit is contained in:
81
src/decode/p25/reference/Digit.java
Normal file
81
src/decode/p25/reference/Digit.java
Normal file
@@ -0,0 +1,81 @@
|
||||
package decode.p25.reference;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public enum Digit
|
||||
{
|
||||
D0( "0", "A" ),
|
||||
D1( "1", "B" ),
|
||||
D2( "2", "C" ),
|
||||
D3( "3", "D" ),
|
||||
D4( "4", "-" ),
|
||||
D5( "5", "-" ),
|
||||
D6( "6", "-" ),
|
||||
D7( "7", "-" ),
|
||||
D8( "8", "-" ),
|
||||
D9( "9", "-" ),
|
||||
D10( "*", "-" ),
|
||||
D11( "#", "-" ),
|
||||
D12( "-", "-" ),
|
||||
D13( "HOOK FLASH", "-" ),
|
||||
D14( "PAUSE", "-" ),
|
||||
D15( "ESC", "NULL" ),
|
||||
DUNK( "?", "?" );
|
||||
|
||||
private String mValue;
|
||||
private String mEscapedValue;
|
||||
|
||||
private Digit( String value, String escapedValue )
|
||||
{
|
||||
mValue = value;
|
||||
mEscapedValue = escapedValue;
|
||||
}
|
||||
|
||||
public String getValue()
|
||||
{
|
||||
return mValue;
|
||||
}
|
||||
|
||||
public String getEscapedValue()
|
||||
{
|
||||
return mEscapedValue;
|
||||
}
|
||||
|
||||
public static Digit fromValue( int value )
|
||||
{
|
||||
if( 0 <= value && value <= 15 )
|
||||
{
|
||||
return values()[ value ];
|
||||
}
|
||||
|
||||
return DUNK;
|
||||
}
|
||||
|
||||
public static String decode( List<Integer> values )
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
boolean escape = false;
|
||||
|
||||
for( Integer value: values )
|
||||
{
|
||||
Digit d = Digit.fromValue( value );
|
||||
|
||||
if( d == Digit.D15 )
|
||||
{
|
||||
escape = true;
|
||||
}
|
||||
else if( escape )
|
||||
{
|
||||
sb.append( d.getEscapedValue() );
|
||||
escape = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.append( d.getValue() );
|
||||
}
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
@@ -4,14 +4,14 @@ public enum Opcode
|
||||
{
|
||||
GROUP_VOICE_CHANNEL_GRANT( "Group Voice Channel Grant", 0 ),
|
||||
RESERVED_01( "Reserved", 1 ),
|
||||
GROUP_VOICE_CHANNLE_GRANT_UPDATE( "Group Voice Channel Grant Update", 2 ),
|
||||
GROUP_VOICE_CHANNEL_GRANT_UPDATE( "Group Voice Channel Grant Update", 2 ),
|
||||
GROUP_VOICE_CHANNEL_GRANT_UPDATE_EXPLICIT( "Group Voice Channel Grant Update - Explicit", 3 ),
|
||||
UNIT_TO_UNIT_VOICE_CHANNEL_GRANT( "Unit-to-Unit Voice Channel Grant", 4 ),
|
||||
UNIT_TO_UNIT_ANSWER_REQUEST( "Unit-to-Unit Answer Request", 5 ),
|
||||
UNIT_TO_UNIT_VOICE_CHANNEL_GRANT_UPDATE( "Unit-to-Unit Voice Channel Grant Update", 6 ),
|
||||
RESERVED_07( "Reserved", 7 ),
|
||||
TELEPHONE_INTERCONNECT_VOICE_CHANNEL_GRANT( "Telephone Interconnect Voice Channel Grant", 8 ),
|
||||
RESERVED_09( "Reserved", 9 ),
|
||||
TELEPHONE_INTERCONNECT_VOICE_CHANNEL_GRANT_UPDATE( "Telephone Interconnect Voice Channel Grant Update", 9 ),
|
||||
TELEPHONE_INTERCONNECT_ANSWER_REQUEST( "Telephone Interconnect Answer Request", 10 ),
|
||||
RESERVED_0B( "Reserved", 11 ),
|
||||
RESERVED_0C( "Reserved", 12 ),
|
||||
|
||||
Reference in New Issue
Block a user