summaryrefslogtreecommitdiff
path: root/driver_sirf.c
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2019-01-15 14:50:00 -0800
committerGary E. Miller <gem@rellim.com>2019-01-15 14:50:00 -0800
commit6d6fb45908d4b95bc8de92d2b2f392627f32b9ff (patch)
tree5be754958eef7e66b1f3676a0177726e3797a0f4 /driver_sirf.c
parent3a95922bf764df8e1578859808a64075bc44333e (diff)
downloadgpsd-6d6fb45908d4b95bc8de92d2b2f392627f32b9ff.tar.gz
driver_sirf: Fix QZSS PRN decode.
Diffstat (limited to 'driver_sirf.c')
-rw-r--r--driver_sirf.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/driver_sirf.c b/driver_sirf.c
index 74c91152..a3cbe2cd 100644
--- a/driver_sirf.c
+++ b/driver_sirf.c
@@ -854,8 +854,21 @@ static gps_mask_t sirf_msg_67_16(struct gps_device_t *session,
* 173 to 182: QZSS IMES
* 183 to 187: QZSS SAIF
* 193 to 202: QZSS */
- gnssId = 0;
- PRN = svId;
+ if ((173 <= svId) && (182 >= svId)){
+ /* IMES */
+ gnssId = 4;
+ PRN = svId;
+ svId -= 172;
+ } else if ((193 <= svId) && (202 >= svId)){
+ /* QZSS */
+ gnssId = 5;
+ PRN = svId;
+ svId -= 192;
+ } else {
+ /* GPS, or?? */
+ gnssId = 0;
+ PRN = svId;
+ }
break;
case 1:
/* SBAS, 120-158 maps to 120-158 */
@@ -1981,7 +1994,8 @@ gps_mask_t sirf_parse(struct gps_device_t * session, unsigned char *buf,
case 0x47: /* Hardware Config MID 71 */
gpsd_log(&session->context->errout, LOG_PROG,
- "SiRF IV: unused Hardware Config 0x47\n");
+ "SiRF IV: unused Hardware Config 0x47, len %zd\n",
+ len);
return 0;
case 0x51: /* MID_QUERY_RESP MID 81 */