From: Miroslav Lichvar Date: Wed, 9 Apr 2014 10:11:21 +0000 (+0200) Subject: reference: add UpdateOnce and PrintOnce modes X-Git-Tag: 1.30-pre1~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c546c48d0d2e506f60e15d08ad669ea2aa31009e;p=thirdparty%2Fchrony.git reference: add UpdateOnce and PrintOnce modes --- diff --git a/reference.c b/reference.c index f757f173..6a71706d 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 babbd6ad..413659c2 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;