summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2004-09-30 10:15:39 +0000
committerEric S. Raymond <esr@thyrsus.com>2004-09-30 10:15:39 +0000
commit43563f0eea370af941a2a4eefa447d2e0e840339 (patch)
tree759dc98987c8f2a5040d5cbe84c6dd507016fefc
parente55788fe3b90a376f7e50f3a6e68fd5bea14d005 (diff)
downloadgpsd-43563f0eea370af941a2a4eefa447d2e0e840339.tar.gz
Tighten up more code.
-rw-r--r--drivers.c6
-rw-r--r--netlib.c3
-rw-r--r--nmea_parse.c56
-rw-r--r--zodiac.c7
4 files changed, 22 insertions, 50 deletions
diff --git a/drivers.c b/drivers.c
index 3f1f6c6f..36d3f681 100644
--- a/drivers.c
+++ b/drivers.c
@@ -89,7 +89,7 @@ struct gps_type_t nmea = {
#if FV18_ENABLE
/**************************************************************************
*
- * FV18 -- doesn't send GPGSAs, uses 2 stop bits
+ * FV18 -- uses 2 stop bits, needs to be told to send GSAs
*
**************************************************************************/
@@ -140,10 +140,8 @@ static void tripmate_initializer(struct gps_session_t *session)
if (session->initpos.latitude && session->initpos.longitude) {
t = time(NULL);
tm = gmtime(&t);
-
- if(tm->tm_year > 100)
+ if (tm->tm_year > 100)
tm->tm_year = tm->tm_year - 100;
-
nmea_send(session->gNMEAdata.gps_fd,
"$PRWIINIT,V,,,%s,%c,%s,%c,100.0,0.0,M,0.0,T,%02d%02d%02d,%02d%02d%02d",
session->initpos.latitude, session->initpos.latd,
diff --git a/netlib.c b/netlib.c
index 823f17ec..9093e3fd 100644
--- a/netlib.c
+++ b/netlib.c
@@ -38,8 +38,7 @@ int netlib_connectsock(char *host, char *service, char *protocol)
else
type = SOCK_STREAM;
- s = socket(PF_INET, type, ppe->p_proto);
- if (s < 0)
+ if ((s = socket(PF_INET, type, ppe->p_proto)) < 0)
return NL_NOSOCK;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one))==-1)
return NL_NOSOCKOPT;
diff --git a/nmea_parse.c b/nmea_parse.c
index a65d3ecb..0f2962a2 100644
--- a/nmea_parse.c
+++ b/nmea_parse.c
@@ -23,13 +23,13 @@ static char *field(char *sentence, short n)
int i;
while (n-- > 0)
- while ((c = *p++) != ',' && c != '\0');
+ while ((c = *p++) != ',' && c != '\0')
+ continue;
strncpy(result, p, sizeof(result)-1);
p = result;
i = 0;
- while (*p && *p != ',' && *p != '*' && *p != '\r' && ++i<100)
+ while (*p && *p != ',' && *p != '*' && *p != '\r' && ++i < sizeof(result))
p++;
-
*p = '\0';
return result;
}
@@ -149,18 +149,17 @@ static void fake_mmddyyyy(struct gps_data_t *out)
static void merge_hhmmss(char *hhmmss, struct gps_data_t *out)
/* update last-fix field from a UTC time */
{
- strncpy(out->utc + 11, hhmmss, 2); /* copy hours */
+ strncpy(out->utc+11, hhmmss, 2); /* copy hours */
out->utc[13] = ':';
- strncpy(out->utc + 14, hhmmss + 2, 2); /* copy minutes */
+ strncpy(out->utc+14, hhmmss+2, 2); /* copy minutes */
out->utc[16] = ':';
- strncpy(out->utc + 17 ,
- hhmmss + 4, sizeof(out->utc)-17); /* copy seconds */
+ strncpy(out->utc+17 , hhmmss+4, sizeof(out->utc)-17); /* copy seconds */
strcat(out->utc, "Z");
}
/**************************************************************************
*
- * NMEA sentence handling begin here
+ * NMEA sentence handling begins here
*
**************************************************************************/
@@ -229,7 +228,6 @@ static void processGPGLL(char *sentence, struct gps_data_t *out)
int newstatus = out->status;
do_lat_lon(sentence, 1, out);
-
fake_mmddyyyy(out);
merge_hhmmss(field(sentence, 5), out);
if (status[0] == 'D')
@@ -255,7 +253,7 @@ static void processGPVTG(char *sentence, struct gps_data_t *out)
(4) Speed over ground (kilometers) 00.0 to 99.9
* Up to and including 1.10, gpsd assumed this and extracted field
- * 3 for ground speed. But NMEA spec, version 3.01, dated 1/1/2002,
+ * 3 for ground speed. But the NMEA spec, version 3.01, dated 1/1/2002,
* gives this:
1 = Track made good
@@ -273,17 +271,12 @@ static void processGPVTG(char *sentence, struct gps_data_t *out)
* which means we want to extract field 5. We cope with both.
*/
- int changed;
-
- changed = update_field_f(sentence, 1, &out->track);
- out->track_stamp.changed = changed;
+ out->track_stamp.changed = update_field_f(sentence, 1, &out->track);;
REFRESH(out->track_stamp);
- changed = 0;
if (field(sentence, 2)[0] == 'T')
- changed |= update_field_f(sentence, 5, &out->speed);
+ out->speed_stamp.changed = update_field_f(sentence, 5, &out->speed);
else
- changed |= update_field_f(sentence, 3, &out->speed);
- out->speed_stamp.changed = changed;
+ out->speed_stamp.changed = update_field_f(sentence, 3, &out->speed);
REFRESH(out->speed_stamp);
}
@@ -295,9 +288,7 @@ static void processGPGGA(char *sentence, struct gps_data_t *out)
123519 Fix taken at 12:35:19 UTC
4807.038,N Latitude 48 deg 07.038' N
01131.324,E Longitude 11 deg 31.324' E
- 1 Fix quality: 0 = invalid
- 1 = GPS fix
- 2 = DGPS fix
+ 1 Fix quality: 0 = invalid, 1 = GPS fix, 2 = DGPS fix
08 Number of satellites being tracked
0.9 Horizontal dilution of position
545.4,M Altitude, Metres above mean sea level
@@ -322,10 +313,8 @@ static void processGPGGA(char *sentence, struct gps_data_t *out)
* See <http://www.sirf.com/Downloads/Technical/apnt0033.pdf>.
* If we see this, force mode to 2D at most.
*/
- if (!altitude[0])
- {
- if (out->mode == MODE_3D)
- {
+ if (!altitude[0]) {
+ if (out->mode == MODE_3D) {
out->mode = out->status ? MODE_2D : MODE_NO_FIX;
out->mode_stamp.changed = 1;
REFRESH(out->mode_stamp);
@@ -347,14 +336,10 @@ static void processGPGSA(char *sentence, struct gps_data_t *out)
/*
eg1. $GPGSA,A,3,,,,,,16,18,,22,24,,,3.6,2.1,2.2*3C
eg2. $GPGSA,A,3,19,28,14,18,27,22,31,39,,,,,1.7,1.0,1.3*35
-
1 = Mode:
M=Manual, forced to operate in 2D or 3D
A=Automatic, 3D/2D
- 2 = Mode:
- 1=Fix not available
- 2=2D
- 3=3D
+ 2 = Mode: 1=Fix not available, 2=2D, 3=3D
3-14 = PRNs of satellites used in position fix (null for unused fields)
15 = PDOP
16 = HDOP
@@ -380,6 +365,8 @@ static void processGPGSA(char *sentence, struct gps_data_t *out)
int nmea_sane_satellites(struct gps_data_t *out)
{
+ int n;
+
/* data may be incomplete */
if (out->part < out->await)
return 0;
@@ -392,12 +379,9 @@ int nmea_sane_satellites(struct gps_data_t *out)
* and entries 0 (but nonzero elevations). This behavior
* was observed under SiRF firmware revision 231.000.000_A2.
*/
- int n;
-
for (n = 0; n < out->satellites; n++)
- if (out->azimuth[n]) {
+ if (out->azimuth[n])
return 1;
- }
return 0;
}
@@ -429,7 +413,6 @@ static void processGPGSV(char *sentence, struct gps_data_t *out)
lower = (out->part - 1) * 4;
upper = lower + 4;
-
while (lower < out->satellites && lower < upper) {
changed |= update_field_i(sentence, fldnum++, &out->PRN[lower]);
changed |= update_field_i(sentence, fldnum++, &out->elevation[lower]);
@@ -452,7 +435,6 @@ static void processGPGSV(char *sentence, struct gps_data_t *out)
&& !out->azimuth[out->satellites-1]
&& !out->ss[out->satellites-1])
out->satellites--;
-
if (nmea_sane_satellites(out)) {
gpsd_report(3, "Satellite data OK.\n");
out->satellite_stamp.changed = changed;
@@ -471,7 +453,6 @@ static short nmea_checksum(char *sentence)
while ((c = *p++) != '*' && c != '\0')
sum ^= c;
-
sprintf(csum, "%02X", sum);
return (strncmp(csum, p, 2) == 0);
}
@@ -490,7 +471,6 @@ void nmea_add_checksum(char *sentence)
while ((c = *p++) != '*' && c != '\0')
sum ^= c;
-
sprintf(p, "%02X\r\n", sum);
}
diff --git a/zodiac.c b/zodiac.c
index d3b74efb..3790075c 100644
--- a/zodiac.c
+++ b/zodiac.c
@@ -36,8 +36,7 @@ static unsigned short zodiac_checksum(unsigned short *w, int n)
while (n--)
csum += *(w++);
- csum = -csum;
- return csum;
+ return -csum;
}
/* zodiac_spew - Takes a message type, an array of data words, and a length
@@ -70,7 +69,6 @@ static void zodiac_spew(struct gps_session_t *session, int type, unsigned short
struct header h;
h.flags = 0;
-
h.sync = 0x81ff;
h.id = type;
h.ndata = dlen - 1;
@@ -89,7 +87,6 @@ static long putlong(char *dm, int sign)
tmpl = fabs(atof(dm));
rad = (floor(tmpl/100) + (fmod(tmpl, 100.0)/60)) * 100000000*PI/180;
-
if (sign)
rad = -rad;
@@ -139,7 +136,6 @@ static void send_rtcm(struct gps_session_t *session,
session->sn = 0;
memset(data, 0, sizeof(data));
-
data[0] = session->sn; /* sequence number */
memcpy(&data[1], rtcmbuf, rtcmbytes);
data[n] = zodiac_checksum(data, n);
@@ -432,7 +428,6 @@ static void analyze(struct gps_session_t *session,
}
if (nmea > 0) {
gpsd_report(4, "%s", buf);
-
if (session->gNMEAdata.raw_hook)
session->gNMEAdata.raw_hook(buf);
}