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"