From fa976f84b15ac776f0f26aa8650e10db17136105 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Wed, 30 Jun 2021 15:05:44 +0200 Subject: [PATCH] battery: clear interface for determineWarning() --- src/lib/battery/battery.cpp | 19 +++++++++---------- src/lib/battery/battery.h | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/lib/battery/battery.cpp b/src/lib/battery/battery.cpp index e0fbf561f7..e6e13e19ba 100644 --- a/src/lib/battery/battery.cpp +++ b/src/lib/battery/battery.cpp @@ -120,7 +120,7 @@ void Battery::updateBatteryStatus(const hrt_abstime ×tamp, float voltage_v, computeScale(); if (connected && _battery_initialized) { - determineWarning(); + _warning = determineWarning(_state_of_charge); } if (_voltage_filter_v.getState() > 2.1f) { @@ -219,20 +219,19 @@ void Battery::estimateStateOfCharge(const float voltage_v, const float current_a } } -void Battery::determineWarning() +uint8_t Battery::determineWarning(float state_of_charge) { - // propagate warning state only if the state is higher, otherwise remain in current warning state - if (_battery_status.remaining < _params.emergen_thr) { - _warning = battery_status_s::BATTERY_WARNING_EMERGENCY; + if (state_of_charge < _params.emergen_thr) { + return battery_status_s::BATTERY_WARNING_EMERGENCY; - } else if (_battery_status.remaining < _params.crit_thr) { - _warning = battery_status_s::BATTERY_WARNING_CRITICAL; + } else if (state_of_charge < _params.crit_thr) { + return battery_status_s::BATTERY_WARNING_CRITICAL; - } else if (_battery_status.remaining < _params.low_thr) { - _warning = battery_status_s::BATTERY_WARNING_LOW; + } else if (state_of_charge < _params.low_thr) { + return battery_status_s::BATTERY_WARNING_LOW; } else { - _warning = battery_status_s::BATTERY_WARNING_NONE; + return battery_status_s::BATTERY_WARNING_NONE; } } diff --git a/src/lib/battery/battery.h b/src/lib/battery/battery.h index 691d7d61bc..bd64d5660f 100644 --- a/src/lib/battery/battery.h +++ b/src/lib/battery/battery.h @@ -187,7 +187,7 @@ protected: private: void sumDischarged(const hrt_abstime ×tamp, float current_a); void estimateStateOfCharge(const float voltage_v, const float current_a, const float throttle); - void determineWarning(); + uint8_t determineWarning(float state_of_charge); void computeScale(); uORB::PublicationMulti _battery_status_pub{ORB_ID(battery_status)};