refactor: move sender role logic into sender_state_machine

This commit is contained in:
2026-02-18 02:17:12 +01:00
parent 9d7f2ae076
commit 56960e05e2
3 changed files with 1604 additions and 16 deletions

View File

@@ -12,6 +12,7 @@
#include "display_ui.h"
#include "test_mode.h"
#include "sd_logger.h"
#include "sender_state_machine.h"
#include <stdarg.h>
#include <math.h>
#ifdef ARDUINO_ARCH_ESP32
@@ -151,6 +152,7 @@ enum class TxBuildError : uint8_t {
};
static TxBuildError g_last_tx_build_error = TxBuildError::None;
static SenderStateMachine g_sender_state_machine;
static void watchdog_kick();
static void finish_inflight_batch();
@@ -1277,21 +1279,10 @@ void setup() {
display_set_self_ids(g_short_id, g_device_id);
if (g_role == DeviceRole::Sender) {
power_sender_init();
power_configure_unused_pins_sender();
meter_init();
#ifdef ARDUINO_ARCH_ESP32
if (!meter_reader_start()) {
serial_debug_printf("meter: using inline polling fallback");
}
#endif
g_last_sample_ms = millis() - METER_SAMPLE_INTERVAL_MS;
g_last_send_ms = millis();
g_last_sync_request_ms = millis() - SYNC_REQUEST_INTERVAL_MS;
g_time_acquired = false;
g_sender_faults_reset_after_first_sync = false;
g_sender_faults_reset_hour_utc = UINT32_MAX;
update_battery_cache();
SenderStateMachineConfig sender_cfg = {};
sender_cfg.short_id = g_short_id;
sender_cfg.device_id = g_device_id;
g_sender_state_machine.begin(sender_cfg);
} else {
power_receiver_init();
lora_receive_continuous();
@@ -1815,7 +1806,7 @@ void loop() {
#endif
if (g_role == DeviceRole::Sender) {
sender_loop();
g_sender_state_machine.loop();
} else {
receiver_loop();
}