summaryrefslogtreecommitdiffstats
path: root/app/msf.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/msf.c')
-rw-r--r--app/msf.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/app/msf.c b/app/msf.c
index 96c3afe..4b3c350 100644
--- a/app/msf.c
+++ b/app/msf.c
@@ -8,7 +8,9 @@
static Event_ring msf_ring;
-uint64_t msf_last_second;
+static uint64_t msf_last_second;
+uint64_t msf_last_happy;
+
void exti0_isr (void)
@@ -25,6 +27,19 @@ void exti0_isr (void)
msf_ring.events[msf_ring.tx_ptr].value = v;
msf_ring.tx_ptr = (msf_ring.tx_ptr + 1) & ERING_MASK;
+#if 0
+
+ if (time_known) {
+ uint64_t abs = abs_extend (now);
+ EPOCH e = pll_decompose (abs);
+ UTC u = time_epoch_to_utc (e);
+
+ printf ("QRR %d.%09d %d\r\n", (u.minute * 60) + u.second, u.nanosecond, (int) !v);
+ printf ("QRR %d.%09d %d\r\n", (u.minute * 60) + u.second, u.nanosecond, (int) v);
+ }
+
+#endif
+
nvic_enable_irq (NVIC_EXTI0_IRQ);
}
@@ -89,9 +104,10 @@ static void process_bits (uint64_t abs)
msf_time = time_utc_to_epoch (u);
+ msf_last_happy = abs - (int64_t) 120 * (int64_t) HZ;
+
pll_set_offset (msf_time, abs);
- stats_stamp (u, abs);
dump_bits ("msfa", bitsa);
dump_bits ("msfb", bitsb);
@@ -170,7 +186,7 @@ void msf_dispatch (void)
abs = abs_extend (now);
msf_last_second = abs;
- //pll_dispatch (abs);
+ pll_dispatch (msf_last_happy, abs, "MSF");