diff options
author | Gary E. Miller <gem@rellim.com> | 2016-03-29 01:41:53 -0700 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2016-03-29 01:41:53 -0700 |
commit | 07ba9b5518c405ac1d2503181c57501d15cf1e57 (patch) | |
tree | a5a04556094466f5efcdfe3425280f592bb5abae /cgps.c | |
parent | 82c31789d9c350643f534b335e84b051e6e8b9a1 (diff) | |
download | gpsd-07ba9b5518c405ac1d2503181c57501d15cf1e57.tar.gz |
Sort sats by Used, PRN.
Diffstat (limited to 'cgps.c')
-rw-r--r-- | cgps.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -392,6 +392,20 @@ static void update_compass_panel(struct gps_data_t *gpsdata) } #endif /* TRUENORTH */ +/* sort the skyviews + * Used = Y first, then used = N + * then sort by PRN + */ +static int sat_cmp(const void *p1, const void *p2) +{ + + if ( ((struct satellite_t*)p2)->used - ((struct satellite_t*)p1)->used ) { + return ((struct satellite_t*)p2)->used - ((struct satellite_t*)p1)->used; + } + return ((struct satellite_t*)p1)->PRN - ((struct satellite_t*)p2)->PRN; +} + + static void update_gps_panel(struct gps_data_t *gpsdata) /* This gets called once for each new GPS sentence. */ { @@ -404,6 +418,8 @@ static void update_gps_panel(struct gps_data_t *gpsdata) * fix. */ if (gpsdata->satellites_visible != 0) { int i; + qsort( gpsdata->skyview, gpsdata->satellites_visible, + sizeof( struct satellite_t), sat_cmp); if (display_sats >= MAX_POSSIBLE_SATS) { for (i = 0; i < MAX_POSSIBLE_SATS; i++) { if (i < gpsdata->satellites_visible) { |