From db666190cf4b830eee49a2f842e8f69ba052d4ab Mon Sep 17 00:00:00 2001 From: nick Date: Mon, 22 Jun 2026 22:42:17 -0600 Subject: [PATCH] cargo: fix BMS reconnect backoff helper order --- firmware/esp32/overland-controller/bms.cpp | 29 ++++++++++++++++++- .../esp32/overland-controller/system_status.h | 2 +- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/firmware/esp32/overland-controller/bms.cpp b/firmware/esp32/overland-controller/bms.cpp index 2cfb4b7..1026bb2 100644 --- a/firmware/esp32/overland-controller/bms.cpp +++ b/firmware/esp32/overland-controller/bms.cpp @@ -290,7 +290,34 @@ int scanBleDevices(uint32_t scanSeconds) { return bleScanResultCount; } -static bool connectBms() { +static static void scheduleBmsReconnectBackoff(); +static void clearBmsReconnectBackoff(); + +static void scheduleBmsReconnectBackoff() { + bmsConnectFailCount++; + + if (bmsConnectBackoffMs == 0) { + bmsConnectBackoffMs = BMS_CONNECT_BACKOFF_INITIAL_MS; + } else { + bmsConnectBackoffMs = min(bmsConnectBackoffMs * 2, BMS_CONNECT_BACKOFF_MAX_MS); + } + + bmsReconnectPausedUntil = millis() + bmsConnectBackoffMs; + + Serial.print("BMS: reconnect backoff "); + Serial.print(bmsConnectBackoffMs / 1000); + Serial.print("s after "); + Serial.print(bmsConnectFailCount); + Serial.println(" failed attempt(s)"); +} + +static void clearBmsReconnectBackoff() { + bmsConnectFailCount = 0; + bmsConnectBackoffMs = 0; + bmsReconnectPausedUntil = 0; +} + +bool connectBms() { if (client && client->isConnected()) { bmsData.connected = true; return true; diff --git a/firmware/esp32/overland-controller/system_status.h b/firmware/esp32/overland-controller/system_status.h index b5e6a1e..f388668 100644 --- a/firmware/esp32/overland-controller/system_status.h +++ b/firmware/esp32/overland-controller/system_status.h @@ -1,4 +1,4 @@ #pragma once -#define FIRMWARE_VERSION "0.5.2-bms-missing-backoff" +#define FIRMWARE_VERSION "0.5.3-bms-backoff-compile-fix" #define FIRMWARE_NAME "overland-controller"