Browse Source

Commander: Allow better battery failsafe warning / actions

sbg
Lorenz Meier 9 years ago
parent
commit
65d0d1f9e3
  1. 13
      src/modules/commander/commander.cpp
  2. 5
      src/modules/commander/commander_params.c

13
src/modules/commander/commander.cpp

@ -2001,7 +2001,7 @@ int commander_thread_main(int argc, char *argv[]) @@ -2001,7 +2001,7 @@ int commander_thread_main(int argc, char *argv[])
/* if battery voltage is getting lower, warn using buzzer, etc. */
if (battery.warning == battery_status_s::BATTERY_WARNING_LOW &&
!low_battery_voltage_actions_done) {
!low_battery_voltage_actions_done) {
low_battery_voltage_actions_done = true;
if (armed.armed) {
mavlink_log_critical(&mavlink_log_pub, "LOW BATTERY, RETURN TO LAND ADVISED");
@ -2027,8 +2027,14 @@ int commander_thread_main(int argc, char *argv[]) @@ -2027,8 +2027,14 @@ int commander_thread_main(int argc, char *argv[])
mavlink_and_console_log_emergency(&mavlink_log_pub, "CRITICAL BATTERY, RTL FAILED");
}
}
} else if (low_bat_action == 2) {
if (TRANSITION_CHANGED == main_state_transition(&status, commander_state_s::MAIN_STATE_AUTO_LAND, main_state_prev, &status_flags, &internal_state)) {
mavlink_and_console_log_emergency(&mavlink_log_pub, "CRITICAL BATTERY, LANDING AT CURRENT POSITION");
} else {
mavlink_and_console_log_emergency(&mavlink_log_pub, "CRITICAL BATTERY, LANDING FAILED");
}
} else {
mavlink_and_console_log_emergency(&mavlink_log_pub, "CRITICAL BATTERY, LAND IMMEDIATELY");
mavlink_and_console_log_emergency(&mavlink_log_pub, "CRITICAL BATTERY, LANDING ADVISED!");
}
}
@ -2743,7 +2749,8 @@ int commander_thread_main(int argc, char *argv[]) @@ -2743,7 +2749,8 @@ int commander_thread_main(int argc, char *argv[])
set_tune(TONE_ARMING_WARNING_TUNE);
arm_tune_played = true;
} else if ((status.hil_state != vehicle_status_s::HIL_STATE_ON) &&
} else if (!status_flags.usb_connected &&
(status.hil_state != vehicle_status_s::HIL_STATE_ON) &&
(battery.warning == battery_status_s::BATTERY_WARNING_CRITICAL)) {
/* play tune on battery critical */
set_tune(TONE_BATTERY_WARNING_FAST_TUNE);

5
src/modules/commander/commander_params.c

@ -256,8 +256,9 @@ PARAM_DEFINE_INT32(COM_DISARM_LAND, 0); @@ -256,8 +256,9 @@ PARAM_DEFINE_INT32(COM_DISARM_LAND, 0);
* Action the system takes on low battery. Defaults to off
*
* @group Commander
* @value 0 No action
* @value 1 RTL on low battery
* @value 0 Warning
* @value 1 Return to Land
* @value 2 Land at current position
* @decimal 0
* @increment 1
*/

Loading…
Cancel
Save