GPS
Class GpsData

java.lang.Object
  extended by PamUtils.LatLong
      extended by GPS.GpsData
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable

public class GpsData
extends LatLong

Author:
Doug Gillespie, Paul Redmond, David McLaren
See Also:
Serialized Form

Field Summary
private static int CHAROFFSET
           
private  double courseOverGround
          renamed from heading
private  boolean dataOk
           
private  int date
           
private  int day
           
private  double distanceFromLast
           
private  java.util.Calendar gpsCalendar
           
(package private) static java.text.SimpleDateFormat gpsDateFormat
           
(package private) static java.text.SimpleDateFormat gpsTimeFormat
           
private  int hours
           
private static GpsData lastGlobalGpsData
           
private  GpsData lastGpsData
           
private  java.lang.Double magneticHeading
           
private  java.lang.Double magneticVariation
           
static double METERSPERMILE
           
private  int millis
           
private static long millisPerHalfDay
           
private static long millisPerHour
           
private  int mins
           
private  int month
           
private static GpsData previousGgaGps
           
private  int secs
           
(package private) static long serialVersionUID
           
private  double speed
           
private  int time
           
private  long timeInMillis
           
private  java.lang.Double trueHeading
          renamed from trueCourse
private  int year
           
 
Fields inherited from class PamUtils.LatLong
FORMAT_DECIMALMINUTES, FORMAT_MINUTESSECONDS, latitude, longitude, MetersPerMile
 
Constructor Summary
GpsData()
           
GpsData(double latitude, double longitude, double speed, double courseOverGround, long timeInMillis, java.lang.Double trueHeading, java.lang.Double magneticHeading)
          Constructor used in viewer and Mixed Mode
GpsData(java.lang.StringBuffer nmeaString, int stringType)
           
 
Method Summary
 GpsData clone()
           
private  java.lang.String formatNMEALatitude(int nDecPlaces)
          formatted latitude string for simulated NMEA data.
private  java.lang.String formatNMEALongitude(int nDecPlaces)
           
 double getCourseOverGround()
          Return the course over ground
 int getDate()
           
 double getDistanceFromLast()
           
 java.util.Calendar getGpsCalendar()
           
private  java.lang.String getGpsDateString()
          Get the date formatted in the simple ddmmyy way
private  java.lang.String getGpsTimeString()
          Get the time formatted in the simple ddmmyy way
 int getHours()
           
private  char getLatDirection()
           
private  char getLongDirection()
           
 java.lang.Double getMagneticHeading()
           
 java.lang.Double getMagneticVariation()
           
 int getMins()
           
private  double getMinutes(double latLong)
          Get the whole number of degrees
 GpsData getPredictedGPSData(long predictionTime)
           
 int getSecs()
           
 double getSpeed()
          Returns the speed in knots
 double getSpeedMetric()
          Gets the speed in metres per second
 int getTime()
           
 long getTimeInMillis()
           
 java.lang.Double getTrueHeading()
           
private  int getWholeDegrees(double latLong)
          Get the whole degrees
 java.lang.String gpsDataToGGA(int nDecPlaces)
           
 java.lang.String gpsDataToRMC(int nDecPlaces)
           
 boolean isDataOk()
           
 void printGpsValues()
           
 void setCourseOverGround(double courseOverGround)
           
 void setDataOk(boolean dataOk)
           
 void setDate(int date)
           
 void setGpsCalendar(java.util.Calendar gpsCalendar)
           
 void setMagneticHeading(java.lang.Double magneticHeading)
           
 void setMagneticVariation(java.lang.Double magneticVariation)
           
 void setSpeed(double speed)
           
 void setTime(int time)
           
 void setTimeInMillis(long timeInMillis)
           
 void setTrueHeading(java.lang.Double trueHeading)
           
private  void sortDistanceFromLast()
           
private  double unpackFloat(char[] nmeaSentence, int d1, int d2)
          Unpack a floating point number between two deliminators
private  void unpackGGAString(java.lang.StringBuffer nmeaString)
           
private  boolean unpackLatitude(char[] nmeaSentence, int d1, int d2, int d3)
           
private  boolean unpackLongitude(char[] nmeaSentence, int d1, int d2, int d3)
           
private  void unpackRMCString(java.lang.StringBuffer nmeaString)
           
private  boolean unpackTime(char[] nmeaSentence, int d1, int d2)
           
private  boolean unpackVariation(char[] nmeaSentence, int d1, int d2)
           
 
Methods inherited from class PamUtils.LatLong
addDistanceMeters, bearingTo, distanceToMetres, distanceToMetresX, distanceToMetresY, distanceToMiles, doubleDegrees2StringDegs, doubleDegrees2StringMins, equals, formatLatitude, formatLatitude, formatLongitude, formatLongitude, getCrossTrackError, getDecimalMinutes, getFormatStyle, getIntegerMinutes, getLatitude, getLongitude, getSeconds, getSignedDegrees, setFormatStyle, setLatitude, setLongitude, travelDistanceMeters, TravelDistanceMiles
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

speed

private double speed

dataOk

private boolean dataOk

courseOverGround

private double courseOverGround
renamed from heading


trueHeading

private java.lang.Double trueHeading
renamed from trueCourse


magneticHeading

private java.lang.Double magneticHeading

magneticVariation

private java.lang.Double magneticVariation

time

private int time

date

private int date

day

private int day

month

private int month

year

private int year

hours

private int hours

mins

private int mins

secs

private int secs

millis

private int millis

timeInMillis

private long timeInMillis

gpsCalendar

private java.util.Calendar gpsCalendar

lastGlobalGpsData

private static GpsData lastGlobalGpsData

lastGpsData

private GpsData lastGpsData

distanceFromLast

private double distanceFromLast

METERSPERMILE

public static final double METERSPERMILE
See Also:
Constant Field Values

millisPerHalfDay

private static final long millisPerHalfDay
See Also:
Constant Field Values

millisPerHour

private static final long millisPerHour
See Also:
Constant Field Values

CHAROFFSET

private static final int CHAROFFSET
See Also:
Constant Field Values

previousGgaGps

private static GpsData previousGgaGps

gpsDateFormat

static java.text.SimpleDateFormat gpsDateFormat

gpsTimeFormat

static java.text.SimpleDateFormat gpsTimeFormat
Constructor Detail

GpsData

public GpsData()

GpsData

public GpsData(double latitude,
               double longitude,
               double speed,
               double courseOverGround,
               long timeInMillis,
               java.lang.Double trueHeading,
               java.lang.Double magneticHeading)
Constructor used in viewer and Mixed Mode

Parameters:
latitude - latitude
longitude - longitude
speed - speed (knots)
courseOverGround - course over ground
timeInMillis - java millisecond time
trueHeading - true heading
magneticHeading - magnetic heading

GpsData

public GpsData(java.lang.StringBuffer nmeaString,
               int stringType)
Method Detail

sortDistanceFromLast

private void sortDistanceFromLast()

unpackGGAString

private void unpackGGAString(java.lang.StringBuffer nmeaString)

unpackTime

private boolean unpackTime(char[] nmeaSentence,
                           int d1,
                           int d2)

unpackLatitude

private boolean unpackLatitude(char[] nmeaSentence,
                               int d1,
                               int d2,
                               int d3)

unpackLongitude

private boolean unpackLongitude(char[] nmeaSentence,
                                int d1,
                                int d2,
                                int d3)

unpackVariation

private boolean unpackVariation(char[] nmeaSentence,
                                int d1,
                                int d2)

unpackFloat

private double unpackFloat(char[] nmeaSentence,
                           int d1,
                           int d2)
Unpack a floating point number between two deliminators

Parameters:
nmeaSentence - nmea Sentence
d1 - position of first ,
d2 - position of second ,
Returns:
unpacked number

unpackRMCString

private void unpackRMCString(java.lang.StringBuffer nmeaString)

gpsDataToRMC

public java.lang.String gpsDataToRMC(int nDecPlaces)

getGpsTimeString

private java.lang.String getGpsTimeString()
Get the time formatted in the simple ddmmyy way

Returns:
formatted time

getGpsDateString

private java.lang.String getGpsDateString()
Get the date formatted in the simple ddmmyy way

Returns:
formatted date

getWholeDegrees

private int getWholeDegrees(double latLong)
Get the whole degrees

Parameters:
latLong - lat or long in decimal degrees
Returns:
integer degrees

getMinutes

private double getMinutes(double latLong)
Get the whole number of degrees

Parameters:
latLong -
Returns:

getLatDirection

private char getLatDirection()
Returns:
N or S

getLongDirection

private char getLongDirection()
Returns:
E or W

formatNMEALatitude

private java.lang.String formatNMEALatitude(int nDecPlaces)
formatted latitude string for simulated NMEA data.

Returns:
formatted string

formatNMEALongitude

private java.lang.String formatNMEALongitude(int nDecPlaces)

gpsDataToGGA

public java.lang.String gpsDataToGGA(int nDecPlaces)

printGpsValues

public void printGpsValues()

getTimeInMillis

public long getTimeInMillis()

getGpsCalendar

public java.util.Calendar getGpsCalendar()

getDate

public int getDate()

getTrueHeading

public java.lang.Double getTrueHeading()
Returns:
true heading read from a gyro or similar device.

setTrueHeading

public void setTrueHeading(java.lang.Double trueHeading)
Parameters:
trueHeading - the trueHeading to set

setMagneticHeading

public void setMagneticHeading(java.lang.Double magneticHeading)
Parameters:
magneticHeading - the magneticHeading to set

getMagneticHeading

public java.lang.Double getMagneticHeading()
Returns:
the magnetic heading (read from a fluxgate compass)

getCourseOverGround

public double getCourseOverGround()
Return the course over ground

Returns:
trh course over ground

setCourseOverGround

public void setCourseOverGround(double courseOverGround)
Parameters:
courseOverGround - the courseOverGround to set

getSpeed

public double getSpeed()
Returns the speed in knots


getSpeedMetric

public double getSpeedMetric()
Gets the speed in metres per second

Returns:
speed in metres per second

getTime

public int getTime()

setSpeed

public void setSpeed(double speed)

getHours

public int getHours()

getMagneticVariation

public java.lang.Double getMagneticVariation()
Returns:
the magneticVariation

setMagneticVariation

public void setMagneticVariation(java.lang.Double magneticVariation)
Parameters:
magneticVariation - the magneticVariation to set

getMins

public int getMins()

getSecs

public int getSecs()

setDate

public void setDate(int date)

setGpsCalendar

public void setGpsCalendar(java.util.Calendar gpsCalendar)

setTime

public void setTime(int time)

setTimeInMillis

public void setTimeInMillis(long timeInMillis)

getDistanceFromLast

public double getDistanceFromLast()

isDataOk

public boolean isDataOk()

setDataOk

public void setDataOk(boolean dataOk)

getPredictedGPSData

public GpsData getPredictedGPSData(long predictionTime)

clone

public GpsData clone()
Overrides:
clone in class LatLong