summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2018-11-11 19:37:15 -0800
committerGary E. Miller <gem@rellim.com>2018-11-11 19:37:15 -0800
commit60eb6d238f4c4c77d6945efbfada3272ad161111 (patch)
treedf27a72010956654b7a9dc21073876d2fea61707
parent8346c4cfeaba1ec09e173ae54c76642fcd58df1b (diff)
downloadgpsd-60eb6d238f4c4c77d6945efbfada3272ad161111.tar.gz
gpsrinex: fix gnssid/svid sort.
-rw-r--r--gpsrinex.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/gpsrinex.c b/gpsrinex.c
index cf59a18a..8d41300a 100644
--- a/gpsrinex.c
+++ b/gpsrinex.c
@@ -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;