Backfill missed sender sample intervals to keep dt_s consistent
This commit is contained in:
13
src/main.cpp
13
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<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);
|
||||
|
||||
Reference in New Issue
Block a user