summaryrefslogtreecommitdiff
path: root/net_ntrip.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2011-02-24 13:12:25 -0500
committerEric S. Raymond <esr@thyrsus.com>2011-02-24 13:12:25 -0500
commit829c3a3b0295ff653e4a14f2a7087e20940a7c0f (patch)
treeb528405a4bbcd631c35aa7968149cfb67cb21fe2 /net_ntrip.c
parent7e0ac597b057ed4119a76f4e33f2a5a304fc1c0a (diff)
downloadgpsd-829c3a3b0295ff653e4a14f2a7087e20940a7c0f.tar.gz
The NTRIP connection state musn't be zeroed on gpsd_activate().
Andre Naujoks informed me of this.
Diffstat (limited to 'net_ntrip.c')
-rw-r--r--net_ntrip.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/net_ntrip.c b/net_ntrip.c
index ebcc01cf..5fa3a3dd 100644
--- a/net_ntrip.c
+++ b/net_ntrip.c
@@ -228,13 +228,13 @@ static int ntrip_sourcetable_parse(struct gps_device_t *device)
gpsd_report(LOG_RAW, "Ntrip source table buffer %s\n", buf);
- sourcetable = device->driver.ntrip.sourcetable_parse;
+ sourcetable = device->ntrip.sourcetable_parse;
if (!sourcetable) {
/* parse SOURCETABLE */
if (strncmp(line, NTRIP_SOURCETABLE, strlen(NTRIP_SOURCETABLE)) ==
0) {
sourcetable = true;
- device->driver.ntrip.sourcetable_parse = true;
+ device->ntrip.sourcetable_parse = true;
llen = (ssize_t) strlen(NTRIP_SOURCETABLE);
line += llen;
len -= llen;
@@ -472,9 +472,11 @@ int ntrip_open(struct gps_device_t *device, char *caster)
char t[strlen(caster + 1)];
char *tmp = t;
- switch (device->driver.ntrip.conn_state) {
+ switch (device->ntrip.conn_state) {
case ntrip_conn_init:
device->servicetype = service_ntrip;
+ device->ntrip.works = false;
+ device->ntrip.sourcetable_parse = false;
ntrip_stream.set = false;
(void)strlcpy(tmp, caster, strlen(caster));
@@ -489,7 +491,7 @@ int ntrip_open(struct gps_device_t *device, char *caster)
gpsd_report(LOG_ERROR,
"can't extract user-ID and password from %s\n",
caster);
- device->driver.ntrip.conn_state = ntrip_conn_err;
+ device->ntrip.conn_state = ntrip_conn_err;
return -1;
}
}
@@ -501,7 +503,7 @@ int ntrip_open(struct gps_device_t *device, char *caster)
/* todo: add autoconnect like in dgpsip.c */
gpsd_report(LOG_ERROR, "can't extract Ntrip stream from %s\n",
caster);
- device->driver.ntrip.conn_state = ntrip_conn_err;
+ device->ntrip.conn_state = ntrip_conn_err;
return -1;
}
if ((colon = strchr(tmp, ':')) != NULL) {
@@ -522,16 +524,16 @@ int ntrip_open(struct gps_device_t *device, char *caster)
ret = ntrip_stream_req_probe();
if (ret == -1) {
- device->driver.ntrip.conn_state = ntrip_conn_err;
+ device->ntrip.conn_state = ntrip_conn_err;
return -1;
}
device->gpsdata.gps_fd = ret;
- device->driver.ntrip.conn_state = ntrip_conn_sent_probe;
+ device->ntrip.conn_state = ntrip_conn_sent_probe;
return ret;
case ntrip_conn_sent_probe:
ret = ntrip_sourcetable_parse(device);
if (ret == -1) {
- device->driver.ntrip.conn_state = ntrip_conn_err;
+ device->ntrip.conn_state = ntrip_conn_err;
return -1;
}
if (ret == 0 && ntrip_stream.set == false) {
@@ -539,25 +541,25 @@ int ntrip_open(struct gps_device_t *device, char *caster)
}
(void)close(device->gpsdata.gps_fd);
if (ntrip_auth_encode(&ntrip_stream, ntrip_stream.credentials, ntrip_stream.authStr, 128) != 0) {
- device->driver.ntrip.conn_state = ntrip_conn_err;
+ device->ntrip.conn_state = ntrip_conn_err;
return -1;
}
ret = ntrip_stream_get_req();
if (ret == -1) {
- device->driver.ntrip.conn_state = ntrip_conn_err;
+ device->ntrip.conn_state = ntrip_conn_err;
return -1;
}
device->gpsdata.gps_fd = ret;
- device->driver.ntrip.conn_state = ntrip_conn_sent_get;
+ device->ntrip.conn_state = ntrip_conn_sent_get;
break;
case ntrip_conn_sent_get:
ret = ntrip_stream_get_parse(device->gpsdata.gps_fd);
if (ret == -1) {
- device->driver.ntrip.conn_state = ntrip_conn_err;
+ device->ntrip.conn_state = ntrip_conn_err;
return -1;
}
- device->driver.ntrip.conn_state = ntrip_conn_established;
- device->driver.ntrip.works = true; // we know, this worked.
+ device->ntrip.conn_state = ntrip_conn_established;
+ device->ntrip.works = true; // we know, this worked.
break;
case ntrip_conn_established:
case ntrip_conn_err: