mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 00:57:31 -05:00
Added speed parsing to GPS message. Updated message b to become the ANI message.
This commit is contained in:
@@ -144,7 +144,7 @@ public class P25Interleave
|
||||
|
||||
int start = 0;
|
||||
int end = 196;
|
||||
String interleaved = "1000100100100011001000100010110010001000100010010000100010011100100101001000001000100010001011000110010001111011110010001000100010001000100010000011011100101011001000101000100010001000100010110101";
|
||||
String interleaved = "0010110111100011001010101100001000011110101110000110001000010010111100101101100100100101011101100011000101110010111100101110111100100111101010111011011001010111001011100001011100101000000010100100";
|
||||
|
||||
BitSetBuffer b = new BitSetBuffer( end );
|
||||
|
||||
@@ -163,8 +163,8 @@ public class P25Interleave
|
||||
|
||||
mLog.debug( "Deinterleav:" + b.toString() );
|
||||
|
||||
halfrate.decode( b, start, end );
|
||||
|
||||
mLog.debug( "Trellis Off:" + b.toString() );
|
||||
// halfrate.decode( b, start, end );
|
||||
//
|
||||
// mLog.debug( "Trellis Off:" + b.toString() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,9 +30,9 @@ import alias.AliasList;
|
||||
import bits.BitSetBuffer;
|
||||
import edac.CRC;
|
||||
|
||||
public class Tait1200SELCALMessage extends Message
|
||||
public class Tait1200ANIMessage extends Message
|
||||
{
|
||||
private final static Logger mLog = LoggerFactory.getLogger( Tait1200SELCALMessage.class );
|
||||
private final static Logger mLog = LoggerFactory.getLogger( Tait1200ANIMessage.class );
|
||||
|
||||
public static int[] REVS_1 = { 0,1,2,3 };
|
||||
public static int[] SYNC = { 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 };
|
||||
@@ -70,7 +70,7 @@ public class Tait1200SELCALMessage extends Message
|
||||
private AliasList mAliasList;
|
||||
private CRC mCRC;
|
||||
|
||||
public Tait1200SELCALMessage( BitSetBuffer message, AliasList list )
|
||||
public Tait1200ANIMessage( BitSetBuffer message, AliasList list )
|
||||
{
|
||||
mMessage = message;
|
||||
mAliasList = list;
|
||||
@@ -170,7 +170,7 @@ public class Tait1200SELCALMessage extends Message
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append( "SELCAL FROM:" );
|
||||
sb.append( "ANI FROM:" );
|
||||
sb.append( getFromID() );
|
||||
sb.append( " TO:" );
|
||||
sb.append( getToID() );
|
||||
@@ -229,7 +229,7 @@ public class Tait1200SELCALMessage extends Message
|
||||
@Override
|
||||
public String getEventType()
|
||||
{
|
||||
return "SELCAL";
|
||||
return "ANI";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -27,16 +27,16 @@ import sample.Listener;
|
||||
import alias.AliasList;
|
||||
import bits.BitSetBuffer;
|
||||
|
||||
public class Tait1200SELCALLMessageProcessor implements Listener<BitSetBuffer>
|
||||
public class Tait1200ANIMessageProcessor implements Listener<BitSetBuffer>
|
||||
{
|
||||
private final static Logger mLog =
|
||||
LoggerFactory.getLogger( Tait1200SELCALLMessageProcessor.class );
|
||||
LoggerFactory.getLogger( Tait1200ANIMessageProcessor.class );
|
||||
|
||||
private Broadcaster<Message> mBroadcaster = new Broadcaster<Message>();
|
||||
|
||||
private AliasList mAliasList;
|
||||
|
||||
public Tait1200SELCALLMessageProcessor( AliasList list )
|
||||
public Tait1200ANIMessageProcessor( AliasList list )
|
||||
{
|
||||
mAliasList = list;
|
||||
}
|
||||
@@ -49,7 +49,7 @@ public class Tait1200SELCALLMessageProcessor implements Listener<BitSetBuffer>
|
||||
@Override
|
||||
public void receive( BitSetBuffer buffer )
|
||||
{
|
||||
mBroadcaster.receive( new Tait1200SELCALMessage( buffer, mAliasList ) );
|
||||
mBroadcaster.receive( new Tait1200ANIMessage( buffer, mAliasList ) );
|
||||
}
|
||||
|
||||
public void addMessageListener( Listener<Message> listener )
|
||||
@@ -70,7 +70,7 @@ public class Tait1200Decoder extends Decoder implements Instrumentable
|
||||
private MessageFramer mMessageFramerSELCALL;
|
||||
private Broadcaster<Boolean> mFSKBroadcaster = new Broadcaster<Boolean>();
|
||||
private Tait1200GPSMessageProcessor mMessageAProcessor;
|
||||
private Tait1200SELCALLMessageProcessor mMessageBProcessor;
|
||||
private Tait1200ANIMessageProcessor mMessageBProcessor;
|
||||
|
||||
public Tait1200Decoder( AliasList aliasList )
|
||||
{
|
||||
@@ -100,7 +100,7 @@ public class Tait1200Decoder extends Decoder implements Instrumentable
|
||||
mFSKBroadcaster.addListener( mMessageFramerSELCALL );
|
||||
|
||||
mMessageAProcessor = new Tait1200GPSMessageProcessor( aliasList );
|
||||
mMessageBProcessor = new Tait1200SELCALLMessageProcessor( aliasList );
|
||||
mMessageBProcessor = new Tait1200ANIMessageProcessor( aliasList );
|
||||
|
||||
mMessageFramerGPS.addMessageListener( mMessageAProcessor );
|
||||
mMessageFramerSELCALL.addMessageListener( mMessageBProcessor );
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
package decode.tait;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
@@ -101,11 +100,16 @@ public class Tait1200GPSMessage extends Message
|
||||
public static int[] LONGITUDE_SECONDS_TENS = { 372,373,374,375 };
|
||||
public static int[] LONGITUDE_SECONDS_ONES = { 376,377,378,379 };
|
||||
public static int DIVIDER_10 = 380;
|
||||
public static int[] UNKNOWN_2 = { 381,382 };
|
||||
public static int[] DATE_DAY = { 383,384,385,386,387 };
|
||||
public static int[] DATE_DAY_TENS = { 381,382,383 };
|
||||
public static int[] DATE_DAY_ONES = { 384,385,386,387 };
|
||||
|
||||
//TODO: not sure if this field is the month field or the speed field
|
||||
public static int[] DATE_MONTH = { 388,389,390,391 };
|
||||
public static int[] HEADING = { 392,393,394,395,396,397,398,399,400 };
|
||||
public static int[] SPEED = { 401,402,403,404,405,406,407,408,409 };
|
||||
public static int[] SPEED_HUNDREDS = { 388,389,390,391 };
|
||||
|
||||
public static int[] SPEED_TENS = { 392,393,394,395 };
|
||||
public static int[] SPEED_ONES = { 396,397,398,399 };
|
||||
public static int[] SPEED_TENTHS = { 400,401,402,403 };
|
||||
|
||||
private static SimpleDateFormat mSDF = new SimpleDateFormat( "yyyyMMdd HHmmss" );
|
||||
|
||||
@@ -154,6 +158,10 @@ public class Tait1200GPSMessage extends Message
|
||||
sb.append( " " );
|
||||
sb.append( location.getLongitude() );
|
||||
|
||||
sb.append( " SPEED:" );
|
||||
sb.append( getSpeed() );
|
||||
sb.append( "KPH" );
|
||||
|
||||
sb.append( " GPS TIME:" );
|
||||
sb.append( mSDF.format( new Date( getGPSTime() ) ) );
|
||||
|
||||
@@ -204,9 +212,14 @@ public class Tait1200GPSMessage extends Message
|
||||
|
||||
/* Use current time to get current year */
|
||||
cal.setTimeInMillis( System.currentTimeMillis() );
|
||||
|
||||
|
||||
//TODO: this field is either the month field, or the speed hundredths field
|
||||
cal.set( Calendar.MONTH, mMessage.getInt( DATE_MONTH ) );
|
||||
cal.set( Calendar.DAY_OF_MONTH, mMessage.getInt( DATE_DAY ) );
|
||||
|
||||
int day = mMessage.getInt( DATE_DAY_TENS ) * 10 +
|
||||
mMessage.getInt( DATE_DAY_ONES );
|
||||
cal.set( Calendar.DAY_OF_MONTH, day );
|
||||
|
||||
cal.set( Calendar.HOUR_OF_DAY, ( mMessage.getInt( HOUR_TENS ) * 10 ) +
|
||||
mMessage.getInt( HOUR_ONES ) );
|
||||
cal.set( Calendar.MINUTE, ( mMessage.getInt( MINUTES_TENS ) * 10 ) +
|
||||
@@ -218,6 +231,25 @@ public class Tait1200GPSMessage extends Message
|
||||
return cal.getTimeInMillis();
|
||||
}
|
||||
|
||||
public String getSpeed()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append( getDigit( SPEED_HUNDREDS ) );
|
||||
sb.append( getDigit( SPEED_TENS ) );
|
||||
sb.append( getDigit( SPEED_ONES ) );
|
||||
sb.append( "." );
|
||||
sb.append( getDigit( SPEED_TENTHS ) );
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private String getDigit( int[] field )
|
||||
{
|
||||
int value = mMessage.getInt( field );
|
||||
return ( 0 <= value && value <= 9 ) ? String.valueOf( value ) : "?";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFromID()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user