package lejos.addon.gps; /** * This class models data extracted from NMEA GSV Sentence * * $GPGSV,1,1,13,02,02,213,,03,-3,000,,11,00,121,,14,13,172,05*67 * * 4 = SV PRN number * 5 = Elevation in degrees, 90 maximum * 6 = Azimuth, degrees from true north, 000 to 359 * 7 = SNR, 00-99 dB (null when not tracking) * * You can find out more about a satellite by looking up the PRN number here: * http://en.wikipedia.org/wiki/List_of_GPS_satellite_launches * * @author Juan Antonio Brenha Moral * */ public class Satellite{ private int PRN = 0; private int elevation = 0; private int azimuth = 0; private int SNR = 0; private boolean tracked; /* * Constructors */ public Satellite(){ // } /** * Constructor which indicate information about: * PRN, Elevation, Azimuth and SNR * * @param p * @param e * @param a * @param s */ public Satellite(int p, int e, int a, int s){ PRN = p; elevation = e; azimuth = a; SNR = s; } // TODO: getVehicleNumber() should be in here. SVN = Satellite Vehicle Number /* * Getters & Setters */ /** * Return PRN number from a Satellite. PRN stands for Pseudo-Random Noise. The PRN is the * index to the assigned pseudorandom number sequence used to encode the satellite transmissions. * * PRN is a binary signal with random noise-like properties. It is generated by mathematical algorithm or "code", * and consists of repeated pattern of 1's and 0's. This binary code can be modulated on the GPS carrier * waves using Binary Shift-Key (BSK) modulation. The C/A-Code and the P-Code are examples of PRN codes. * Each satellite transmits a unique C/A-Code and P-Code sequence (on the same L1 and L2 frequencies), * and hence a satellite may be identified according to its "PRN number", e.g. PRN2 or PRN14 are particular * GPS satellites. * */ public int getPRN(){ return PRN; } /** * Set PRN * * @param p */ public void setPRN(int p){ PRN = p; } /** * How many degrees over the horizon the satellite is. This is a value between 0 and 90. * 0 means it is by the horizon and 90 straight up. * * @return Elevation in degrees (0 to 90) */ public int getElevation(){ return elevation; } /** * Indicates if the GPS receiver is actively tracking this satellite and using it to fix the GPS location. * @return true means this satellite is part of the GPS solution. false means it is probably obscured/unable to receive the signal. */ public boolean isTracked() { return tracked; } public void setTracked(boolean tracked) { this.tracked = tracked; } /** * Set Elevation * * @param e */ public void setElevation(int e){ elevation = e; } /** * Direction to the satellite in degrees. This is a value between 0 and 360. * 0 is straight north, 90 is east, 180 is south and 270 is west. * Any value in between is of course also valid. * * @return Azimuth in degrees, 0 to 360. */ public int getAzimuth(){ return azimuth; } /** * Set Azimuth * * @param a */ public void setAzimuth(int a){ azimuth = a; } /** * * Signal to Noise Ratio (SNR) for the signal from a satellite. This is a number between 0 and 99. * Where 99 is perfect and 0 means the satellite is not available. A typical good value is 40. * And a GPS typically starts using a satellite when its SNR value is higher than 25. * * @return SNR value between 0 and 99. */ public int getSignalNoiseRatio(){ return SNR; } /** * Set SNR * * @param s */ public void setSignalNoiseRatio(int s){ SNR = s; } }