bool AP_Arming_Rover::pre_arm_checks(bool report) { return (AP_Arming::pre_arm_checks(report) & rover.g2.motors.pre_arm_check(report) & fence_checks(report) & proximity_check(report)); }
// perform pre-arm checks // return true if the checks pass successfully bool AP_Arming_Copter::pre_arm_checks(bool display_failure) { // exit immediately if already armed if (copter.motors->armed()) { return true; } // check if motor interlock and Emergency Stop aux switches are used // at the same time. This cannot be allowed. if (rc().find_channel_for_option(RC_Channel::aux_func::MOTOR_INTERLOCK) && rc().find_channel_for_option(RC_Channel::aux_func::MOTOR_ESTOP)){ check_failed(ARMING_CHECK_NONE, display_failure, "Interlock/E-Stop Conflict"); return false; } // check if motor interlock aux switch is in use // if it is, switch needs to be in disabled position to arm // otherwise exit immediately. This check to be repeated, // as state can change at any time. if (copter.ap.using_interlock && copter.ap.motor_interlock_switch) { check_failed(ARMING_CHECK_NONE, display_failure, "Motor Interlock Enabled"); } // succeed if pre arm checks are disabled if (checks_to_perform == ARMING_CHECK_NONE) { return true; } return fence_checks(display_failure) & parameter_checks(display_failure) & motor_checks(display_failure) & pilot_throttle_checks(display_failure) & AP_Arming::pre_arm_checks(display_failure); }
bool AP_Arming_Rover::pre_arm_checks(bool report) { if (SRV_Channels::get_emergency_stop()) { check_failed(ARMING_CHECK_NONE, report, "Motors Emergency Stopped"); return false; } return (AP_Arming::pre_arm_checks(report) & rover.g2.motors.pre_arm_check(report) & fence_checks(report) & proximity_check(report)); }
// perform pre-arm checks and set ap.pre_arm_check flag // return true if the checks pass successfully bool Copter::pre_arm_checks(bool display_failure) { // exit immediately if already armed if (motors.armed()) { return true; } // check if motor interlock and Emergency Stop aux switches are used // at the same time. This cannot be allowed. if (check_if_auxsw_mode_used(AUXSW_MOTOR_INTERLOCK) && check_if_auxsw_mode_used(AUXSW_MOTOR_ESTOP)){ if (display_failure) { gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Interlock/E-Stop Conflict"); } return false; } // check if motor interlock aux switch is in use // if it is, switch needs to be in disabled position to arm // otherwise exit immediately. This check to be repeated, // as state can change at any time. if (ap.using_interlock && ap.motor_interlock_switch) { if (display_failure) { gcs_send_text(MAV_SEVERITY_CRITICAL,"PreArm: Motor Interlock Enabled"); } return false; } // exit immediately if we've already successfully performed the pre-arm check if (ap.pre_arm_check) { // run gps checks because results may change and affect LED colour // no need to display failures because arm_checks will do that if the pilot tries to arm pre_arm_gps_checks(false); return true; } // succeed if pre arm checks are disabled if (g.arming_check == ARMING_CHECK_NONE) { set_pre_arm_check(true); set_pre_arm_rc_check(true); return true; } return barometer_checks(display_failure) & rc_calibration_checks(display_failure) & compass_checks(display_failure) & gps_checks(display_failure) & fence_checks(display_failure) & ins_checks(display_failure) & board_voltage_checks(display_failure) & parameter_checks(display_failure) & pilot_throttle_checks(display_failure); }