diff options
author | Gary E. Miller <gem@rellim.com> | 2018-11-11 19:37:15 -0800 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2018-11-11 19:37:15 -0800 |
commit | 60eb6d238f4c4c77d6945efbfada3272ad161111 (patch) | |
tree | df27a72010956654b7a9dc21073876d2fea61707 | |
parent | 8346c4cfeaba1ec09e173ae54c76642fcd58df1b (diff) | |
download | gpsd-60eb6d238f4c4c77d6945efbfada3272ad161111.tar.gz |
gpsrinex: fix gnssid/svid sort.
-rw-r--r-- | gpsrinex.c | 25 |
1 files changed, 12 insertions, 13 deletions
@@ -197,23 +197,22 @@ static int compare_obs_cnt(const void *A, const void *B) { const struct obs_cnt_t *a = (const struct obs_cnt_t *)A; const struct obs_cnt_t *b = (const struct obs_cnt_t *)B; - unsigned char a_svid; - unsigned char b_svid; + unsigned char a_gnssid = a->gnssid; + unsigned char b_gnssid = b->gnssid; - if (a->gnssid != b->gnssid) { - return a->gnssid - b->gnssid; + /* 0 = svid means unused, make those last */ + if (0 == a->svid) { + a_gnssid = 255; + } + if (0 == b->svid) { + b_gnssid = 255; + } + if (a_gnssid != b_gnssid) { + return a_gnssid - b_gnssid; } /* put unused last */ if (a->svid != b->svid) { - a_svid = a->svid; - b_svid = b->svid; - if (0 == a_svid) { - a_svid = 255; - } - if (0 == b_svid) { - b_svid = 255; - } - return a_svid - b_svid; + return a->svid - b->svid; } /* two blank records */ return 0; |