summaryrefslogtreecommitdiff
path: root/driver_sirf.c
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2019-03-25 18:49:42 -0700
committerGary E. Miller <gem@rellim.com>2019-03-25 18:49:42 -0700
commit6d22d7e1a224d227d6f268582e1a323cf7207cf8 (patch)
tree9fc1fcc258207de251177f0d942c5d6b0d38f6a9 /driver_sirf.c
parent98046eedbb1d6f2a67b631a93f9dbd0fa45a6c95 (diff)
downloadgpsd-6d22d7e1a224d227d6f268582e1a323cf7207cf8.tar.gz
driver_sirf: Decode datum. Finally a regression change!
Diffstat (limited to 'driver_sirf.c')
-rw-r--r--driver_sirf.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/driver_sirf.c b/driver_sirf.c
index 83555055..b2bcb472 100644
--- a/driver_sirf.c
+++ b/driver_sirf.c
@@ -587,6 +587,7 @@ static gps_mask_t sirf_msg_67_1(struct gps_device_t *session,
uint8_t time_source = 0;
struct tm unpacked_date;
unsigned char datum;
+ const char *datum_str;
int64_t clk_bias;
uint32_t clk_bias_error;
int32_t clk_offset;
@@ -650,6 +651,30 @@ static gps_mask_t sirf_msg_67_1(struct gps_device_t *session,
mask |= TIME_SET;
datum = getub(buf, 33);
+ switch (datum) {
+ case 21:
+ datum_str = "WGS84";
+ break;
+ case 178:
+ datum_str = "Tokyo Mean";
+ break;
+ case 179:
+ datum_str = "Tokyo-Japan";
+ break;
+ case 180:
+ datum_str = "Tokyo-Korea";
+ break;
+ case 181:
+ datum_str = "Tokyo-Okinawa";
+ break;
+ case 182:
+ datum_str = "PZ90.11";
+ break;
+ default:
+ datum_str = "Other";
+ }
+ strlcpy(session->newdata.datum, datum_str, sizeof(session->newdata.datum));
+
clk_bias = getbes64(buf, 34) / 100.0;
clk_bias_error = getbeu32(buf, 42) / 100.0;
clk_offset = getbes32(buf, 46) / 100.0;