From 30d4ff3c6cb2f3b17e39b8add99ce4c4afd58f39 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 4 Jun 2025 16:19:13 +0200 Subject: [PATCH] uavcan battery: fix battery_status.scale, time_remaining and timestamp - timestamp was 0 if uavcan::BatteryInfo was received before uavcan::BatteryInfoAux - scale was not set as unknown (-1) even though it is since it's never updated - time_remaining was not initialized correctly and could sometimes be 0 unexpectedly which causes the drone to failsafe because there's reportedly no flight time left --- src/drivers/uavcan/sensors/battery.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/drivers/uavcan/sensors/battery.cpp b/src/drivers/uavcan/sensors/battery.cpp index 0198749f73..29af67c515 100644 --- a/src/drivers/uavcan/sensors/battery.cpp +++ b/src/drivers/uavcan/sensors/battery.cpp @@ -110,10 +110,11 @@ UavcanBatteryBridge::battery_sub_cb(const uavcan::ReceivedDataStructure= 1, or -1 if unknown + _battery_status[instance].scale = -1.f; _battery_status[instance].temperature = msg.temperature + atmosphere::kAbsoluteNullCelsius; // Kelvin to Celsius // _battery_status[instance].cell_count = msg.; _battery_status[instance].connected = true; @@ -123,7 +124,6 @@ UavcanBatteryBridge::battery_sub_cb(const uavcan::ReceivedDataStructure