|
|
|
@ -565,3 +565,57 @@ AP_Arming::ArmingRequired AP_Arming::arming_required()
@@ -565,3 +565,57 @@ AP_Arming::ArmingRequired AP_Arming::arming_required()
|
|
|
|
|
{ |
|
|
|
|
return (AP_Arming::ArmingRequired)require.get(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Copter and sub share the same RC input limits
|
|
|
|
|
bool AP_Arming::rc_checks_copter_sub(const bool display_failure, const RC_Channel *channels[4]) const |
|
|
|
|
{ |
|
|
|
|
// set rc-checks to success if RC checks are disabled
|
|
|
|
|
if ((checks_to_perform != ARMING_CHECK_ALL) && !(checks_to_perform & ARMING_CHECK_RC)) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool ret = true; |
|
|
|
|
|
|
|
|
|
const char *channel_names[] = { "Roll", "Pitch", "Throttle", "Yaw" }; |
|
|
|
|
|
|
|
|
|
for (uint8_t i=0; i<ARRAY_SIZE(channel_names);i++) { |
|
|
|
|
const RC_Channel *channel = channels[i]; |
|
|
|
|
const char *channel_name = channel_names[i]; |
|
|
|
|
// check if radio has been calibrated
|
|
|
|
|
if (!channel->min_max_configured()) { |
|
|
|
|
if (display_failure) { |
|
|
|
|
gcs().send_text(MAV_SEVERITY_CRITICAL,"PreArm: RC %s not configured", channel_name); |
|
|
|
|
} |
|
|
|
|
ret = false; |
|
|
|
|
} |
|
|
|
|
if (channel->get_radio_min() > 1300) { |
|
|
|
|
if (display_failure) { |
|
|
|
|
gcs().send_text(MAV_SEVERITY_CRITICAL,"PreArm: %s radio min too high", channel_name); |
|
|
|
|
} |
|
|
|
|
ret = false; |
|
|
|
|
} |
|
|
|
|
if (channel->get_radio_max() < 1700) { |
|
|
|
|
if (display_failure) { |
|
|
|
|
gcs().send_text(MAV_SEVERITY_CRITICAL,"PreArm: %s radio max too low", channel_name); |
|
|
|
|
} |
|
|
|
|
ret = false; |
|
|
|
|
} |
|
|
|
|
if (i == 2) { |
|
|
|
|
// skip checking trim for throttle as older code did not check it
|
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if (channel->get_radio_trim() < channel->get_radio_min()) { |
|
|
|
|
if (display_failure) { |
|
|
|
|
gcs().send_text(MAV_SEVERITY_CRITICAL,"PreArm: %s radio trim below min", channel_name); |
|
|
|
|
} |
|
|
|
|
ret = false; |
|
|
|
|
} |
|
|
|
|
if (channel->get_radio_trim() > channel->get_radio_max()) { |
|
|
|
|
if (display_failure) { |
|
|
|
|
gcs().send_text(MAV_SEVERITY_CRITICAL,"PreArm: %s radio trim above max", channel_name); |
|
|
|
|
} |
|
|
|
|
ret = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|