summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2018-10-24 15:32:24 -0700
committerGary E. Miller <gem@rellim.com>2018-10-24 15:32:24 -0700
commitf1344151085131de7765ce37c9e5dab40c43e56d (patch)
tree29c134b34037b056b9e2f7b5ef54fcecd8f9f227
parentec0243f268e8c44be5b3b1356059c42ae4a4bc80 (diff)
downloadgpsd-f1344151085131de7765ce37c9e5dab40c43e56d.tar.gz
rawdata_t: Change data structure.
The rawdata_t structure was written into, but never read from. So a change to it is low impact. Reorder it to simplify pointer arithmetic. In preparation for more changes.
-rw-r--r--NEWS1
-rw-r--r--SConstruct2
-rw-r--r--driver_evermore.c20
-rw-r--r--driver_italk.c28
-rw-r--r--driver_proto.c17
-rw-r--r--driver_superstar2.c19
-rw-r--r--gps.h16
7 files changed, 62 insertions, 41 deletions
diff --git a/NEWS b/NEWS
index 96076222..a2e2938b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
GPSD project news
3.19: not released yet
+ Rearrange rawdata_t. Bump the API because gps_data_t changed.
3.18.1: 2018-10-19 (Gary E. Miller <gem@rellim.com>)
Fix some installation issues.
diff --git a/SConstruct b/SConstruct
index b2b6526e..0fc36141 100644
--- a/SConstruct
+++ b/SConstruct
@@ -55,7 +55,7 @@ from leapsecond import conditional_leapsecond_fetch
gpsd_version = "3.19-dev"
# client library version
-libgps_version_current = 24
+libgps_version_current = 25
libgps_version_revision = 0
libgps_version_age = 0
diff --git a/driver_evermore.c b/driver_evermore.c
index 0566f567..51c4d603 100644
--- a/driver_evermore.c
+++ b/driver_evermore.c
@@ -336,16 +336,20 @@ gps_mask_t evermore_parse(struct gps_device_t * session, unsigned char *buf,
int prn = (int)UBITS(k, 4, 5);
/* this is so we can tell which never got set */
for (j = 0; j < MAXCHANNELS; j++)
- session->gpsdata.raw.mtime[j] = 0;
+ session->gpsdata.raw[j].mtime = 0;
for (j = 0; j < MAXCHANNELS; j++) {
if (session->gpsdata.PRN[j] == prn) {
- session->gpsdata.raw.codephase[j] = NAN;
- session->gpsdata.raw.carrierphase[j] = NAN;
- session->gpsdata.raw.mtime[j] = session->newdata.time;
- session->gpsdata.raw.satstat[j] = (unsigned)UBITS(k, 24, 8);
- session->gpsdata.raw.pseudorange[j] = (double)SBITS(k,40,32);
- session->gpsdata.raw.deltarange[j] = (double)SBITS(k,72,32);
- session->gpsdata.raw.doppler[j] = (double)SBITS(k, 104, 16);
+ session->gpsdata.raw[j].codephase = NAN;
+ session->gpsdata.raw[j].carrierphase = NAN;
+ session->gpsdata.raw[j].mtime = session->newdata.time;
+ session->gpsdata.raw[j].satstat = \
+ (unsigned)UBITS(k, 24, 8);
+ session->gpsdata.raw[j].pseudorange = \
+ (double)SBITS(k,40,32);
+ session->gpsdata.raw[j].deltarange = \
+ (double)SBITS(k,72,32);
+ session->gpsdata.raw[j].doppler = \
+ (double)SBITS(k, 104, 16);
}
}
}
diff --git a/driver_italk.c b/driver_italk.c
index b0facb84..dfcd1874 100644
--- a/driver_italk.c
+++ b/driver_italk.c
@@ -260,17 +260,25 @@ static gps_mask_t decode_itk_pseudo(struct gps_device_t *session,
(unsigned short int)getleu16((char *)buf, 7 + 8),
(unsigned int)getleu32(buf, 7 + 38) / 1000.0);
+ /* this is so we can tell which never got set */
+ for (i = 0; i < MAXCHANNELS; i++)
+ session->gpsdata.raw[i].mtime = 0;
for (i = 0; i < n; i++){
- session->gpsdata.skyview[i].PRN = getleu16(buf, 7 + 26 + (i*36)) & 0xff;
- session->gpsdata.skyview[i].ss = getleu16(buf, 7 + 26 + (i*36 + 2)) & 0x3f;
- session->gpsdata.raw.satstat[i] = getleu32(buf, 7 + 26 + (i*36 + 4));
- session->gpsdata.raw.pseudorange[i] = getled64((char *)buf, 7 + 26 + (i*36 + 8));
- session->gpsdata.raw.doppler[i] = getled64((char *)buf, 7 + 26 + (i*36 + 16));
- session->gpsdata.raw.carrierphase[i] = getleu16(buf, 7 + 26 + (i*36 + 28));
-
- session->gpsdata.raw.mtime[i] = session->newdata.time;
- session->gpsdata.raw.codephase[i] = NAN;
- session->gpsdata.raw.deltarange[i] = NAN;
+ session->gpsdata.skyview[i].PRN = \
+ getleu16(buf, 7 + 26 + (i*36)) & 0xff;
+ session->gpsdata.skyview[i].ss = \
+ getleu16(buf, 7 + 26 + (i*36 + 2)) & 0x3f;
+ session->gpsdata.raw[i].satstat = getleu32(buf, 7 + 26 + (i*36 + 4));
+ session->gpsdata.raw[i].pseudorange = \
+ getled64((char *)buf, 7 + 26 + (i*36 + 8));
+ session->gpsdata.raw[i].doppler = \
+ getled64((char *)buf, 7 + 26 + (i*36 + 16));
+ session->gpsdata.raw[i].carrierphase = \
+ getleu16(buf, 7 + 26 + (i*36 + 28));
+
+ session->gpsdata.raw[i].mtime = session->newdata.time;
+ session->gpsdata.raw[i].codephase = NAN;
+ session->gpsdata.raw[i].deltarange = NAN;
}
return RAW_IS;
}
diff --git a/driver_proto.c b/driver_proto.c
index f3b03e85..8993e26c 100644
--- a/driver_proto.c
+++ b/driver_proto.c
@@ -260,16 +260,19 @@ _proto__msg_raw(struct gps_device_t *session, unsigned char *buf, size_t data_le
return 0;
}
+ /* this is so we can tell which never got set */
+ for (i = 0; i < MAXCHANNELS; i++)
+ session->gpsdata.raw[i].mtime = 0;
for (i = 0; i < n; i++){
session->gpsdata.PRN[i] = GET_PRN();
session->gpsdata.ss[i] = GET_SIGNAL()
- session->gpsdata.raw.satstat[i] = GET_FLAGS();
- session->gpsdata.raw.pseudorange[i] = GET_PSEUDORANGE();
- session->gpsdata.raw.doppler[i] = GET_DOPPLER();
- session->gpsdata.raw.carrierphase[i] = GET_CARRIER_PHASE();
- session->gpsdata.raw.mtime[i] = GET_MEASUREMENT_TIME();
- session->gpsdata.raw.codephase[i] = GET_CODE_PHASE();
- session->gpsdata.raw.deltarange[i] = GET_DELTA_RANGE();
+ session->gpsdata.raw[i].satstat = GET_FLAGS();
+ session->gpsdata.raw[i].pseudorange = GET_PSEUDORANGE();
+ session->gpsdata.raw[i].doppler = GET_DOPPLER();
+ session->gpsdata.raw[i].carrierphase = GET_CARRIER_PHASE();
+ session->gpsdata.raw[i].mtime = GET_MEASUREMENT_TIME();
+ session->gpsdata.raw[i].codephase = GET_CODE_PHASE();
+ session->gpsdata.raw[i].deltarange = GET_DELTA_RANGE();
}
return RAW_IS;
}
diff --git a/driver_superstar2.c b/driver_superstar2.c
index 79e186f1..fb832c9f 100644
--- a/driver_superstar2.c
+++ b/driver_superstar2.c
@@ -297,18 +297,23 @@ superstar2_msg_measurement(struct gps_device_t *session, unsigned char *buf,
return 0;
}
t = getled64((char *)buf, 7); /* measurement time */
+ /* this is so we can tell which never got set */
+ for (i = 0; i < MAXCHANNELS; i++)
+ session->gpsdata.raw[i].mtime = 0;
for (i = 0; i < n; i++) {
unsigned long ul;
- session->gpsdata.raw.mtime[i] = t;
- session->gpsdata.skyview[i].PRN = (short)(getub(buf, 11 * i + 15) & 0x1f);
- session->gpsdata.skyview[i].ss = (double)getub(buf, 11 * i * 15 + 1) / 4.0;
- session->gpsdata.raw.codephase[i] =
+ session->gpsdata.raw[i].mtime = t;
+ session->gpsdata.skyview[i].PRN = \
+ (short)(getub(buf, 11 * i + 15) & 0x1f);
+ session->gpsdata.skyview[i].ss = \
+ (double)getub(buf, 11 * i * 15 + 1) / 4.0;
+ session->gpsdata.raw[i].codephase =
(double)getleu32(buf, 11 * i * 15 + 2);
ul = (unsigned long)getleu32(buf, 11 * i * 15 + 6);
- session->gpsdata.raw.satstat[i] = (unsigned int)(ul & 0x03L);
- session->gpsdata.raw.carrierphase[i] = (double)((ul >> 2) & 0x03ffL);
- session->gpsdata.raw.pseudorange[i] = (double)(ul >> 12);
+ session->gpsdata.raw[i].satstat = (unsigned int)(ul & 0x03L);
+ session->gpsdata.raw[i].carrierphase = (double)((ul >> 2) & 0x03ffL);
+ session->gpsdata.raw[i].pseudorange = (double)(ul >> 12);
}
mask |= RAW_IS;
diff --git a/gps.h b/gps.h
index abba75c6..a4e6ed12 100644
--- a/gps.h
+++ b/gps.h
@@ -1901,13 +1901,13 @@ struct dop_t {
struct rawdata_t {
/* raw measurement data */
- double codephase[MAXCHANNELS]; /* meters */
- double carrierphase[MAXCHANNELS]; /* meters */
- double pseudorange[MAXCHANNELS]; /* meters */
- double deltarange[MAXCHANNELS]; /* meters/sec */
- double doppler[MAXCHANNELS]; /* Hz */
- double mtime[MAXCHANNELS]; /* sec */
- unsigned satstat[MAXCHANNELS]; /* tracking status */
+ double codephase; /* meters */
+ double carrierphase; /* meters */
+ double pseudorange; /* meters */
+ double deltarange; /* meters/sec */
+ double doppler; /* Hz */
+ double mtime; /* sec */
+ unsigned satstat; /* tracking status */
#define SAT_ACQUIRED 0x01 /* satellite acquired */
#define SAT_CODE_TRACK 0x02 /* code-tracking loop acquired */
#define SAT_CARR_TRACK 0x04 /* carrier-tracking loop acquired */
@@ -2100,7 +2100,7 @@ struct gps_data_t {
struct ais_t ais;
struct attitude_t attitude;
struct navdata_t navdata;
- struct rawdata_t raw;
+ struct rawdata_t raw[MAXCHANNELS];
struct gst_t gst;
struct oscillator_t osc;
/* "artificial" structures for various protocol responses */