From c546c48d0d2e506f60e15d08ad669ea2aa31009e Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Wed, 9 Apr 2014 12:11:21 +0200 Subject: [PATCH] reference: add UpdateOnce and PrintOnce modes --- reference.c | 19 +++++++++++++++++++ reference.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/reference.c b/reference.c index f757f17..6a71706 100644 --- a/reference.c +++ b/reference.c @@ -732,6 +732,25 @@ special_mode_sync(int valid, double offset) end_ref_mode(1); + break; + case REF_ModeUpdateOnce: + case REF_ModePrintOnce: + if (!valid) { + LOG(LOGS_WARN, LOGF_Reference, "No suitable source for synchronisation"); + end_ref_mode(0); + break; + } + + step = mode == REF_ModeUpdateOnce; + + LOG(LOGS_INFO, LOGF_Reference, "System clock wrong by %.6f seconds (%s)", + -offset, step ? "step" : "ignored"); + + if (step) + LCL_ApplyStepOffset(offset); + + end_ref_mode(1); + break; case REF_ModeIgnore: /* Do nothing until the mode is changed */ diff --git a/reference.h b/reference.h index babbd6a..413659c 100644 --- a/reference.h +++ b/reference.h @@ -43,6 +43,8 @@ extern void REF_Finalise(void); typedef enum { REF_ModeNormal, REF_ModeInitStepSlew, + REF_ModeUpdateOnce, + REF_ModePrintOnce, REF_ModeIgnore, } REF_Mode;