/*
* ShareNav - Copyright (c) 2007 Harald Mueller james22 at users dot sourceforge dot net
* See file COPYING.
*/
package net.sharenav.gps;
import java.util.Date;
/** Container for the data of a GPS satellite.
*/
public class Satellite {
private static final int STATUS_ACQUISITION_SUCCESSFUL = 0x1;
private static final int STATUS_CARRIER_PHASE_VALID = 0x2;
private static final int STATUS_BIT_SYNC = 0x4;
private static final int STATUS_SUBFRAME_SYNC = 0x8;
private static final int STATUS_CARRIER_PULL_IN = 0x10;
private static final int STATUS_CODE_LOCKED = 0x20;
private static final int STATUS_ACQUISITION_FAILED = 0x40;
private static final int STATUS_EPHEMERIS = 0x80;
public int id;
public float azimut;
public float elev;
/** State of this satellite, see the STATUS_* constants for possible values */
public int state;
/** Signal to noise ratio in arbitrary units */
public int snr;
public Date lastUpdate;
public Satellite() {
}
private boolean isState(int mask) {
return ((state & mask) > 0);
}
public boolean isAcquisitionSuccessful() {
return isState(STATUS_ACQUISITION_SUCCESSFUL);
}
public boolean isCharrierPhaseValid() {
return isState(STATUS_CARRIER_PHASE_VALID);
}
public boolean isBitSync() {
return isState(STATUS_BIT_SYNC);
}
public boolean isSubframeSync() {
return isState(STATUS_SUBFRAME_SYNC);
}
public boolean isCarrierPullIn() {
return isState(STATUS_CARRIER_PULL_IN);
}
public boolean isLocked() {
return isState(STATUS_CODE_LOCKED);
}
public void isLocked(boolean locked) {
if (locked == true) {
state |= STATUS_CODE_LOCKED;
} else {
state &= ~STATUS_CODE_LOCKED;
}
}
public boolean isAcquisitionFailed() {
return isState(STATUS_ACQUISITION_FAILED);
}
public boolean isEphemeris() {
return isState(STATUS_EPHEMERIS);
}
public Date getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Date lastUpdate) {
this.lastUpdate = lastUpdate;
}
}