From 382e506f14e23595f220afb397de54f91f1eef0a Mon Sep 17 00:00:00 2001 From: acidburns Date: Fri, 13 Feb 2026 10:49:25 +0100 Subject: [PATCH] Backfill missed sender sample intervals to keep dt_s consistent --- src/main.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e7f3163..160bc18 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1018,8 +1018,8 @@ static void sender_loop() { meter_reader_pump(now_ms); if (g_time_acquired) { - if (now_ms - g_last_sample_ms >= METER_SAMPLE_INTERVAL_MS) { - g_last_sample_ms = now_ms; + while (now_ms - g_last_sample_ms >= METER_SAMPLE_INTERVAL_MS) { + g_last_sample_ms += METER_SAMPLE_INTERVAL_MS; MeterData data = {}; data.short_id = g_short_id; strncpy(data.device_id, g_device_id, sizeof(data.device_id)); @@ -1053,7 +1053,14 @@ static void sender_loop() { data.battery_voltage_v = g_last_battery_voltage_v; data.battery_percent = g_last_battery_percent; data.rx_reject_reason = static_cast(g_sender_rx_reject_reason); - data.ts_utc = time_get_utc(); + uint32_t sample_ts_utc = time_get_utc(); + if (sample_ts_utc > 0 && now_ms > g_last_sample_ms) { + uint32_t lag_s = (now_ms - g_last_sample_ms) / 1000; + if (sample_ts_utc > lag_s) { + sample_ts_utc -= lag_s; + } + } + data.ts_utc = sample_ts_utc; data.valid = meter_ok; bool appended = append_meter_sample(data, meter_ok);