summaryrefslogtreecommitdiffstats
path: root/app/msf.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/msf.c')
-rw-r--r--app/msf.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/app/msf.c b/app/msf.c
index ab85cfe..bf7c376 100644
--- a/app/msf.c
+++ b/app/msf.c
@@ -42,6 +42,7 @@ void exti_t_isr (void)
exti_reset_request (EXTI_T);
msf_ring.events[msf_ring.tx_ptr].when = now;
+ msf_ring.events[msf_ring.tx_ptr].ptp = ptp_get();
msf_ring.events[msf_ring.tx_ptr].value = v;
msf_ring.tx_ptr = (msf_ring.tx_ptr + 1) & ERING_MASK;
@@ -79,7 +80,7 @@ static int check_min_ident (uint8_t *i)
-static void process_bits (uint64_t abs)
+static void process_bits (uint64_t abs, uint64_t ptp)
{
UTC u;
EPOCH e;
@@ -112,7 +113,7 @@ static void process_bits (uint64_t abs)
msf_last_happy = make_happy (abs, 0);
- pll_set_offset (e, abs);
+ pll_set_offset (e, abs, ptp);
dump_bits ("msfa", bitsa);
dump_bits ("msfb", bitsb);
@@ -126,14 +127,14 @@ static void process_bits (uint64_t abs)
}
-static void report_bits (uint64_t abs, int second, int a, int b)
+static void report_bits (uint64_t abs, uint64_t ptp, int second, int a, int b)
{
if ((!second) || (second > 59)) return;
bitsa[second] = a;
bitsb[second] = b;
- if (second == 59) process_bits (abs);
+ if (second == 59) process_bits (abs, ptp);
}
@@ -146,6 +147,7 @@ void msf_dispatch (void)
int is_s = 0;
uint32_t now;
+ uint64_t ptp;
int v;
@@ -153,6 +155,7 @@ void msf_dispatch (void)
v = msf_ring.events[msf_ring.rx_ptr].value;
now = msf_ring.events[msf_ring.rx_ptr].when;
+ ptp = msf_ring.events[msf_ring.rx_ptr].ptp;
led1_set (v);
@@ -160,8 +163,8 @@ void msf_dispatch (void)
#if 0
{
- abs = abs_extend (now);
- EPOCH e = pll_decompose (abs);
+ abs = ref_extend (now);
+ EPOCH e = ref_decompose (abs);
UTC u = time_epoch_to_utc (e);
printf (" MSF %d %02d:%02d.%06d\r\n", v, u.minute, u.second, (int) (u.nanosecond / 1000));
@@ -198,16 +201,16 @@ void msf_dispatch (void)
if (is_s) {
- abs = abs_extend (now);
+ abs = ref_extend (now);
msf_last_second = abs;
- pll_dispatch (msf_last_happy, abs, "MSF");
+ pll_dispatch (msf_last_happy, abs, ptp, "MSF");
sprintf (msf_info, "m=%d s=%02d b=%d%d", had_m, second, bita, bitb);
if (had_m) {
- report_bits (abs, second, bita, bitb);
+ report_bits (abs, ptp, second, bita, bitb);
second++;
}