From 333acb2fe56fd05244edde9b034ff48315f926c2 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Mon, 20 Jul 2026 01:19:33 +0300 Subject: [PATCH] =?UTF-8?q?ntp=5Fnode=5Ftime:=20=D1=83=D1=87=D1=91=D1=82?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB-RTT=20=D0=B2=20=D0=BA=D0=BE=D1=80=D1=80?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B5=20=D0=B2?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit offset = t4 - t_sender_us - avg_rtt/2 RTT усредняется по всем линкам соединения (rtt_last в 0.1ms). --- src/ntp_node_time.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ntp_node_time.c b/src/ntp_node_time.c index e22f30b7..771562f7 100644 --- a/src/ntp_node_time.c +++ b/src/ntp_node_time.c @@ -5,6 +5,7 @@ #include "../lib/mem.h" #include "etcp_api.h" #include "etcp.h" +#include "etcp_connections.h" #include #include #include @@ -148,7 +149,9 @@ static void ntp_node_recv_cb(struct ETCP_CONN* conn, struct ll_entry* entry) { int was_unsynced = !ntp_time_is_synced(inst); if (was_unsynced && sender_synced) { - inst->ntp.offset_us = t4 - msg->t_sender_us; + int64_t rtt_us = 0, n = 0; + for (struct ETCP_LINK* l = conn->links; l; l = l->next) { rtt_us += l->rtt_last * 100LL; n++; } + inst->ntp.offset_us = t4 - msg->t_sender_us - (n ? rtt_us / n / 2 : 0); inst->ntp.synced = 1; inst->ntp.last_sync_tb = get_time_tb();