From b11151c83244606b3c096ebfd147d2c1c10dbdd4 Mon Sep 17 00:00:00 2001 From: nick Date: Mon, 22 Jun 2026 22:39:54 -0600 Subject: [PATCH] cargo: back off missing BMS reconnect attempts --- firmware/esp32/overland-controller/bms.cpp | 7 +++++++ firmware/esp32/overland-controller/system_status.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/firmware/esp32/overland-controller/bms.cpp b/firmware/esp32/overland-controller/bms.cpp index 88a9495..2cfb4b7 100644 --- a/firmware/esp32/overland-controller/bms.cpp +++ b/firmware/esp32/overland-controller/bms.cpp @@ -26,6 +26,8 @@ static int bmsConnectFailCount = 0; static unsigned long bmsReconnectPausedUntil = 0; static bool bmsSetupMode = false; static const unsigned long READ_INTERVAL_MS = 5000; +static const unsigned long BMS_CONNECT_BACKOFF_INITIAL_MS = 30000; +static const unsigned long BMS_CONNECT_BACKOFF_MAX_MS = 300000; BmsData bmsData; @@ -307,6 +309,7 @@ static bool connectBms() { if (!appConfig.bms.enabled || appConfig.bms.address.length() == 0) { bmsData.connected = false; + clearBmsReconnectBackoff(); return false; } @@ -322,6 +325,9 @@ static bool connectBms() { bmsData.connected = false; NimBLEDevice::deleteClient(client); client = nullptr; + notifyChar = nullptr; + writeChar = nullptr; + scheduleBmsReconnectBackoff(); return false; } @@ -352,6 +358,7 @@ static bool connectBms() { Serial.println("BMS: Connected"); bmsData.connected = true; + clearBmsReconnectBackoff(); return true; } diff --git a/firmware/esp32/overland-controller/system_status.h b/firmware/esp32/overland-controller/system_status.h index 45c3bb0..b5e6a1e 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.1-cargo-ota" +#define FIRMWARE_VERSION "0.5.2-bms-missing-backoff" #define FIRMWARE_NAME "overland-controller"