From ad3ca2a9d2e087867cc079ea5f79059286094dea Mon Sep 17 00:00:00 2001
From: Lorenz Meier <lm@inf.ethz.ch>
Date: Sun, 10 Apr 2016 10:57:38 -0700
Subject: [PATCH] Commander: Indicate low battery

---
 src/modules/commander/commander.cpp            | 12 ++----------
 src/modules/commander/state_machine_helper.cpp | 15 +++++++++++----
 2 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp
index b82f022130..559549c717 100644
--- a/src/modules/commander/commander.cpp
+++ b/src/modules/commander/commander.cpp
@@ -2017,16 +2017,8 @@ int commander_thread_main(int argc, char *argv[])
 			critical_battery_voltage_actions_done = true;
 			status.battery_warning = vehicle_status_s::VEHICLE_BATTERY_WARNING_CRITICAL;
 
-			if (!armed.armed) {
-				arming_ret = arming_state_transition(&status, &safety,
-						vehicle_status_s::ARMING_STATE_STANDBY_ERROR,
-						&armed, true /* fRunPreArmChecks */, &mavlink_log_pub);
-
-				if (arming_ret == TRANSITION_CHANGED) {
-					arming_state_changed = true;
-					mavlink_and_console_log_critical(&mavlink_log_pub, "LOW BATTERY, LOCKING ARMING DOWN");
-				}
-
+			if (armed.armed) {
+				mavlink_and_console_log_critical(&mavlink_log_pub, "CRITICAL BATTERY, SHUT SYSTEM DOWN");
 			} else {
 				mavlink_and_console_log_emergency(&mavlink_log_pub, "CRITICAL BATTERY, LAND IMMEDIATELY");
 			}
diff --git a/src/modules/commander/state_machine_helper.cpp b/src/modules/commander/state_machine_helper.cpp
index ad76a830f5..737ad037ad 100644
--- a/src/modules/commander/state_machine_helper.cpp
+++ b/src/modules/commander/state_machine_helper.cpp
@@ -95,7 +95,7 @@ static const bool arming_transitions[vehicle_status_s::ARMING_STATE_MAX][vehicle
 	{ /* vehicle_status_s::ARMING_STATE_IN_AIR_RESTORE */ false, false,   false, false,       false,         false,  false }, // NYI
 };
 
-// You can index into the array with an arming_state_t in order to get it's textual representation
+// You can index into the array with an arming_state_t in order to get its textual representation
 static const char * const state_names[vehicle_status_s::ARMING_STATE_MAX] = {
 	"ARMING_STATE_INIT",
 	"ARMING_STATE_STANDBY",
@@ -276,7 +276,7 @@ arming_state_transition(struct vehicle_status_s *status,		///< current vehicle s
 			if ((!status->condition_system_prearm_error_reported &&
 			      status->condition_system_hotplug_timeout) ||
 			     (new_arming_state == vehicle_status_s::ARMING_STATE_ARMED)) {
-				mavlink_and_console_log_critical(mavlink_log_pub, "Not ready to fly: Sensors need inspection");
+				mavlink_and_console_log_critical(mavlink_log_pub, "Not ready to fly: Sensors not set up correctly");
 				status->condition_system_prearm_error_reported = true;
 			}
 			feedback_provided = true;
@@ -307,7 +307,7 @@ arming_state_transition(struct vehicle_status_s *status,		///< current vehicle s
 	if (ret == TRANSITION_DENIED) {
 		/* print to MAVLink and console if we didn't provide any feedback yet */
 		if (!feedback_provided) {
-			mavlink_and_console_log_critical(mavlink_log_pub, "INVAL: %s - %s", state_names[status->arming_state], state_names[new_arming_state]);
+			mavlink_and_console_log_critical(mavlink_log_pub, "TRANSITION_DENIED: %s - %s", state_names[status->arming_state], state_names[new_arming_state]);
 		}
 	}
 
@@ -880,7 +880,14 @@ int preflight_check(struct vehicle_status_s *status, orb_advert_t *mavlink_log_p
 	if (!status->cb_usb && status->usb_connected && prearm) {
 		preflight_ok = false;
 		if (reportFailures) {
-			mavlink_and_console_log_critical(mavlink_log_pub, "NOT ARMING: Flying with USB connected prohibited");
+			mavlink_and_console_log_critical(mavlink_log_pub, "ARMING DENIED: Flying with USB is not safe");
+		}
+	}
+
+	if (status->battery_warning == vehicle_status_s::VEHICLE_BATTERY_WARNING_CRITICAL) {
+		preflight_ok = false;
+		if (reportFailures) {
+			mavlink_and_console_log_critical(mavlink_log_pub, "ARMING DENIED: VERY LOW BATTERY");
 		}
 	}
 
-- 
GitLab