summaryrefslogtreecommitdiff
path: root/cgps.c
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2016-03-29 01:41:53 -0700
committerGary E. Miller <gem@rellim.com>2016-03-29 01:41:53 -0700
commit07ba9b5518c405ac1d2503181c57501d15cf1e57 (patch)
treea5a04556094466f5efcdfe3425280f592bb5abae /cgps.c
parent82c31789d9c350643f534b335e84b051e6e8b9a1 (diff)
downloadgpsd-07ba9b5518c405ac1d2503181c57501d15cf1e57.tar.gz
Sort sats by Used, PRN.
Diffstat (limited to 'cgps.c')
-rw-r--r--cgps.c16
1 files changed, 16 insertions, 0 deletions
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) {