Backfill missed sender sample intervals to keep dt_s consistent

This commit is contained in:
2026-02-13 10:49:25 +01:00
parent 64afa8621e
commit 382e506f14

View File

@@ -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<uint8_t>(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);