summaryrefslogtreecommitdiffstats
path: root/app/dcf77.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/dcf77.c')
-rw-r--r--app/dcf77.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/app/dcf77.c b/app/dcf77.c
index 71c227c..30cfd26 100644
--- a/app/dcf77.c
+++ b/app/dcf77.c
@@ -43,6 +43,7 @@ void exti_t_isr (void)
exti_reset_request (EXTI_T);
dcf77_ring.events[dcf77_ring.tx_ptr].when = now;
+ dcf77_ring.events[dcf77_ring.tx_ptr].ptp = ptp_get();
dcf77_ring.events[dcf77_ring.tx_ptr].value = v;
dcf77_ring.tx_ptr = (dcf77_ring.tx_ptr + 1) & ERING_MASK;
@@ -53,7 +54,7 @@ void exti_t_isr (void)
static uint8_t bits[60];
-static void process_bits (uint64_t abs)
+static void process_bits (uint64_t abs, uint64_t ptp)
{
UTC u;
EPOCH e;
@@ -95,7 +96,7 @@ static void process_bits (uint64_t abs)
dcf77_last_happy = make_happy (abs, 60);
- pll_set_offset (e, abs);
+ pll_set_offset (e, abs, ptp);
@@ -107,7 +108,7 @@ static void process_bits (uint64_t abs)
}
-static void report_bit (uint64_t abs, int second, int b)
+static void report_bit (uint64_t abs, uint64_t ptp, int second, int b)
{
if ((second < 0) || (second > 58)) return;
@@ -115,7 +116,7 @@ static void report_bit (uint64_t abs, int second, int b)
// printf("DCF77: bits[%d]=%d\r\n",second,b);
- if (second == 58) process_bits (abs);
+ if (second == 58) process_bits (abs, ptp);
}
@@ -129,6 +130,7 @@ void dcf77_dispatch (void)
int is_s = 0;
uint32_t now;
+ uint64_t ptp;
int v;
led2_set (!!gpio_get (T_PORT, T));
@@ -139,6 +141,7 @@ void dcf77_dispatch (void)
v = dcf77_ring.events[dcf77_ring.rx_ptr].value;
now = dcf77_ring.events[dcf77_ring.rx_ptr].when;
+ ptp = dcf77_ring.events[dcf77_ring.rx_ptr].ptp;
//led2_set(v);
@@ -176,7 +179,7 @@ void dcf77_dispatch (void)
sprintf (dcf77_info, "m=%d s=%02d b=%d", had_m, second, bit);
if (had_m)
- report_bit (abs, second, bit);
+ report_bit (abs, ptp, second, bit);
last_0 = now;
}
@@ -185,10 +188,10 @@ void dcf77_dispatch (void)
offset /= (HW_CLOCK_HZ / 1000);
if (is_s) {
- abs = abs_extend (now);
+ abs = ref_extend (now);
dcf77_last_second = abs;
- pll_dispatch (dcf77_last_happy, abs, "DCF77");
+ pll_dispatch (dcf77_last_happy, abs, ptp, "DCF77");
report_time ("DCF", dcf77_time, abs, dcf77_info);
}