Added speed parsing to GPS message. Updated message b to become the ANI message.

This commit is contained in:
dennis.sheirer
2015-01-11 19:03:51 +00:00
parent 910dbce501
commit a9ac26b4f8
5 changed files with 54 additions and 22 deletions

View File

@@ -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() );
}
}

View File

@@ -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

View File

@@ -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 )

View File

@@ -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 );

View File

@@ -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()
{