|
|
@ -47,7 +47,6 @@ void Copter::crash_check() |
|
|
|
|
|
|
|
|
|
|
|
// check if crashing for 2 seconds
|
|
|
|
// check if crashing for 2 seconds
|
|
|
|
if (crash_counter >= (CRASH_CHECK_TRIGGER_SEC * scheduler.get_loop_rate_hz())) { |
|
|
|
if (crash_counter >= (CRASH_CHECK_TRIGGER_SEC * scheduler.get_loop_rate_hz())) { |
|
|
|
// log an error in the dataflash
|
|
|
|
|
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::CRASH_CHECK, LogErrorCode::CRASH_CHECK_CRASH); |
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::CRASH_CHECK, LogErrorCode::CRASH_CHECK_CRASH); |
|
|
|
// keep logging even if disarmed:
|
|
|
|
// keep logging even if disarmed:
|
|
|
|
AP::logger().set_force_log_disarmed(true); |
|
|
|
AP::logger().set_force_log_disarmed(true); |
|
|
@ -115,7 +114,6 @@ void Copter::thrust_loss_check() |
|
|
|
if (thrust_loss_counter >= (THRUST_LOSS_CHECK_TRIGGER_SEC * scheduler.get_loop_rate_hz())) { |
|
|
|
if (thrust_loss_counter >= (THRUST_LOSS_CHECK_TRIGGER_SEC * scheduler.get_loop_rate_hz())) { |
|
|
|
// reset counter
|
|
|
|
// reset counter
|
|
|
|
thrust_loss_counter = 0; |
|
|
|
thrust_loss_counter = 0; |
|
|
|
// log an error in the dataflash
|
|
|
|
|
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::THRUST_LOSS_CHECK, LogErrorCode::FAILSAFE_OCCURRED); |
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::THRUST_LOSS_CHECK, LogErrorCode::FAILSAFE_OCCURRED); |
|
|
|
// send message to gcs
|
|
|
|
// send message to gcs
|
|
|
|
gcs().send_text(MAV_SEVERITY_EMERGENCY, "Potential Thrust Loss (%d)", (int)motors->get_lost_motor() + 1); |
|
|
|
gcs().send_text(MAV_SEVERITY_EMERGENCY, "Potential Thrust Loss (%d)", (int)motors->get_lost_motor() + 1); |
|
|
@ -199,7 +197,6 @@ void Copter::parachute_check() |
|
|
|
} else if (control_loss_count >= (PARACHUTE_CHECK_TRIGGER_SEC*scheduler.get_loop_rate_hz())) { |
|
|
|
} else if (control_loss_count >= (PARACHUTE_CHECK_TRIGGER_SEC*scheduler.get_loop_rate_hz())) { |
|
|
|
// reset control loss counter
|
|
|
|
// reset control loss counter
|
|
|
|
control_loss_count = 0; |
|
|
|
control_loss_count = 0; |
|
|
|
// log an error in the dataflash
|
|
|
|
|
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::CRASH_CHECK, LogErrorCode::CRASH_CHECK_LOSS_OF_CONTROL); |
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::CRASH_CHECK, LogErrorCode::CRASH_CHECK_LOSS_OF_CONTROL); |
|
|
|
// release parachute
|
|
|
|
// release parachute
|
|
|
|
parachute_release(); |
|
|
|
parachute_release(); |
|
|
@ -233,7 +230,6 @@ void Copter::parachute_manual_release() |
|
|
|
if (ap.land_complete) { |
|
|
|
if (ap.land_complete) { |
|
|
|
// warn user of reason for failure
|
|
|
|
// warn user of reason for failure
|
|
|
|
gcs().send_text(MAV_SEVERITY_INFO,"Parachute: Landed"); |
|
|
|
gcs().send_text(MAV_SEVERITY_INFO,"Parachute: Landed"); |
|
|
|
// log an error in the dataflash
|
|
|
|
|
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::PARACHUTES, LogErrorCode::PARACHUTE_LANDED); |
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::PARACHUTES, LogErrorCode::PARACHUTE_LANDED); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
@ -242,7 +238,6 @@ void Copter::parachute_manual_release() |
|
|
|
if ((parachute.alt_min() != 0 && (current_loc.alt < (int32_t)parachute.alt_min() * 100))) { |
|
|
|
if ((parachute.alt_min() != 0 && (current_loc.alt < (int32_t)parachute.alt_min() * 100))) { |
|
|
|
// warn user of reason for failure
|
|
|
|
// warn user of reason for failure
|
|
|
|
gcs().send_text(MAV_SEVERITY_ALERT,"Parachute: Too low"); |
|
|
|
gcs().send_text(MAV_SEVERITY_ALERT,"Parachute: Too low"); |
|
|
|
// log an error in the dataflash
|
|
|
|
|
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::PARACHUTES, LogErrorCode::PARACHUTE_TOO_LOW); |
|
|
|
AP::logger().Write_Error(LogErrorSubsystem::PARACHUTES, LogErrorCode::PARACHUTE_TOO_LOW); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|