changeset 69:9dd833ef57d3

print-state: move disco math into a helper function Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Mon, 20 Jan 2020 12:58:48 -0500
parents 269c4e8a96ac
children 919ca4da4660
files print-state.c
diffstat 1 files changed, 17 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/print-state.c	Mon Jan 20 12:56:21 2020 -0500
+++ b/print-state.c	Mon Jan 20 12:58:48 2020 -0500
@@ -77,6 +77,21 @@
 	return false;
 }
 
+static double calc_disco(const struct galileo_ephemeris *a_eph,
+			 const struct galileo_ephemeris *b_eph,
+			 const uint32_t gst)
+{
+	struct ecef a;
+	struct ecef b;
+	struct ecef diff;
+
+	galileo_eph_ecef(a_eph, gst, &a);
+	galileo_eph_ecef(b_eph, gst, &b);
+	ecef_subtract(&diff, &a, &b);
+
+	return ecef_magnitude(&diff);
+}
+
 static void galileo_update_eph(struct galileo_state *state,
 			       const struct galileo_ephemeris *prev,
 			       const struct galileo_ephemeris *new)
@@ -108,21 +123,11 @@
 		prev_age = new->t0.gst - prev->t0.gst;
 
 		/* calculate the discontinuity... */
-		struct ecef prev_ecef;
-		struct ecef new_ecef;
-		struct ecef diff;
-
 		/* ...at t0 for the new ephemeris */
-		galileo_eph_ecef(prev, new->t0.gst, &prev_ecef);
-		galileo_eph_ecef(new, new->t0.gst, &new_ecef);
-		ecef_subtract(&diff, &new_ecef, &prev_ecef);
-		disco_t0 = ecef_magnitude(&diff);
+		disco_t0 = calc_disco(prev, new, new->t0.gst);
 
 		/* ...right now */
-		galileo_eph_ecef(prev, state->time.gst, &prev_ecef);
-		galileo_eph_ecef(new, state->time.gst, &new_ecef);
-		ecef_subtract(&diff, &new_ecef, &prev_ecef);
-		disco_now = ecef_magnitude(&diff);
+		disco_now = calc_disco(prev, new, state->time.gst);
 	}
 
 	printf("EPHEMERIS: %s for E%02u (prev %.1f hrs older): "