diff options
-rw-r--r-- | geoid.c | 3 | ||||
-rw-r--r-- | sirf.c | 3 | ||||
-rw-r--r-- | zodiac.c | 2 |
3 files changed, 5 insertions, 3 deletions
@@ -89,7 +89,8 @@ void ecef_to_wgs84fix(struct gps_fix_t *fix, h = p / cos(phi) - n; fix->latitude = phi * RAD_2_DEG; fix->longitude = lambda * RAD_2_DEG; - fix->altitude = h - wgs84_separation(fix->latitude, fix->longitude); + fix->separation = wgs84_separation(fix->latitude, fix->longitude); + fix->altitude = h - fix->separation; /* velocity computation */ vnorth = -vx*sin(phi)*cos(lambda)-vy*sin(phi)*sin(lambda)+vz*cos(phi); veast = -vx*sin(lambda)+vy*cos(lambda); @@ -150,7 +150,8 @@ int sirf_parse(struct gps_device_t *session, unsigned char *buf, int len) for (i = 0; i < len; i++) sprintf(buf2+strlen(buf2), "%02x", buf[i]); gpsd_report(5, "Raw SiRF packet type %d length %d: %s\n", buf[0],len,buf2); - snprintf(session->gpsdata.tag,sizeof(session->gpsdata.tag),"MID%d",buf[0]); + if (buf[0] != 0xff) + snprintf(session->gpsdata.tag,sizeof(session->gpsdata.tag),"MID%d",buf[0]); switch (buf[0]) { @@ -144,6 +144,7 @@ static int handle1000(struct gps_device_t *session) session->gpsdata.fix.longitude = getl(29) * RAD_2_DEG * 1e-8; session->gpsdata.fix.speed = getl(34) * 1e-2 * MPS_TO_KNOTS; session->gpsdata.fix.altitude = getl(31) * 1e-2; + session->gpsdata.fix.separation = getw(33) * 1e-2; /* meters */ session->gpsdata.fix.climb = getl(38) * 1e-2; session->gpsdata.fix.eph = getl(40) * 1e-2; session->gpsdata.fix.epv = getl(42) * 1e-2; @@ -157,7 +158,6 @@ static int handle1000(struct gps_device_t *session) session->gpsdata.fix.mode = (getw(10) & 1) ? MODE_2D : MODE_3D; else session->gpsdata.fix.mode = MODE_NO_FIX; - session->gpsdata.fix.separation = getw(33) * 1e-2; /* meters */ #if 0 gpsd_report(1, "date: %%lf\n", session->gpsdata.fix.time); |