From 4ee74e9b0025983148b7cfb6a9fcd53f89d5789e Mon Sep 17 00:00:00 2001
From: Angel <roangel@student.ethz.ch>
Date: Tue, 26 Sep 2017 17:32:53 +0200
Subject: [PATCH] fixed infinite loop when battery low

---
 pps_ws/src/d_fall_pps/src/PPSClient.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/pps_ws/src/d_fall_pps/src/PPSClient.cpp b/pps_ws/src/d_fall_pps/src/PPSClient.cpp
index ca6f6024..20376e83 100755
--- a/pps_ws/src/d_fall_pps/src/PPSClient.cpp
+++ b/pps_ws/src/d_fall_pps/src/PPSClient.cpp
@@ -710,7 +710,8 @@ void setBatteryStateTo(int new_battery_state)
         case BATTERY_STATE_LOW:
             m_battery_state = BATTERY_STATE_LOW;
             ROS_INFO("changed battery state to low");
-            changeFlyingStateTo(STATE_LAND);
+            if(flying_state != STATE_MOTORS_OFF)
+                changeFlyingStateTo(STATE_LAND);
             break;
         default:
             ROS_INFO("Unknown battery state command, set to normal");
@@ -733,7 +734,8 @@ void CFBatteryCallback(const std_msgs::Float32& msg)
     if((flying_state != STATE_MOTORS_OFF && (filtered_battery_voltage < m_battery_threshold_while_flying)) ||
        (flying_state == STATE_MOTORS_OFF && (filtered_battery_voltage < m_battery_threshold_while_motors_off)))
     {
-        setBatteryStateTo(BATTERY_STATE_LOW);
+        if(getBatteryState() != BATTERY_STATE_LOW)
+            setBatteryStateTo(BATTERY_STATE_LOW);
         ROS_INFO("low level battery triggered");
     }
     else                        //maybe add hysteresis somewhere here?
-- 
GitLab