From 07ba9b5518c405ac1d2503181c57501d15cf1e57 Mon Sep 17 00:00:00 2001 From: "Gary E. Miller" Date: Tue, 29 Mar 2016 01:41:53 -0700 Subject: Sort sats by Used, PRN. --- cgps.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'cgps.c') diff --git a/cgps.c b/cgps.c index 6395e751..add346fe 100644 --- a/cgps.c +++ b/cgps.c @@ -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) { -- cgit v1.2.1