summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2004-09-29 19:55:57 +0000
committerEric S. Raymond <esr@thyrsus.com>2004-09-29 19:55:57 +0000
commit53d48e566f51fadc316dd85beeebc5be2d912d16 (patch)
tree86933065919733527ea5c120dbe9cbb97ea9c140
parent87e01f5caacb004aa545a1214adb530b843fc7b8 (diff)
downloadgpsd-53d48e566f51fadc316dd85beeebc5be2d912d16.tar.gz
Zodiac sequence number needs to be part of the state structure.
-rw-r--r--gpsd.h1
-rw-r--r--zodiac.c14
2 files changed, 7 insertions, 8 deletions
diff --git a/gpsd.h b/gpsd.h
index 817b8776..de193fb9 100644
--- a/gpsd.h
+++ b/gpsd.h
@@ -55,6 +55,7 @@ struct gps_session_t
#ifdef ZODIAC_ENABLE
/* private housekeeping stuff for the Zodiac driver */
+ unsigned short sn; /* packet sequence number */
double mag_var; /* Magnetic variation in degrees */
double separation; /* Geoidal separation */
int year;
diff --git a/zodiac.c b/zodiac.c
index cbd363c6..5ee427a3 100644
--- a/zodiac.c
+++ b/zodiac.c
@@ -22,8 +22,6 @@ enum {
#define O(x) (x-6)
-static unsigned short sn = 0;
-
struct header {
unsigned short sync;
unsigned short id;
@@ -113,12 +111,12 @@ static void zodiac_init(struct gps_session_t *session)
t = time(NULL);
tm = gmtime(&t);
- if (sn++ > 32767)
- sn = 0;
+ if (session->sn++ > 32767)
+ session->sn = 0;
memset(data, 0, sizeof(data));
- data[0] = sn; /* sequence number */
+ data[0] = session->sn; /* sequence number */
data[1] = (1 << 2) | (1 << 3);
data[2] = data[3] = data[4] = 0;
@@ -144,12 +142,12 @@ static void send_rtcm(struct gps_session_t *session,
unsigned short data[34];
int n = 1 + (rtcmbytes/2 + rtcmbytes%2);
- if (sn++ > 32767)
- sn = 0;
+ if (session->sn++ > 32767)
+ session->sn = 0;
memset(data, 0, sizeof(data));
- data[0] = sn; /* sequence number */
+ data[0] = session->sn; /* sequence number */
memcpy(&data[1], rtcmbuf, rtcmbytes);
data[n] = zodiac_checksum(data, n);