bool AP_Arming_Sub::pre_arm_checks(bool report) { if (armed) { return true; } return AP_Arming::pre_arm_checks(report) & rc_check(report) & ins_checks(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); }
bool AP_Arming::pre_arm_checks(bool report) { bool ret = true; if (armed || require == NONE) { // if we are already armed or don't need any arming checks // then skip the checks return true; } ret &= hardware_safety_check(report); ret &= barometer_checks(report); ret &= ins_checks(report); ret &= compass_checks(report); ret &= gps_checks(report); ret &= battery_checks(report); ret &= airspeed_checks(report); ret &= manual_transmitter_checks(report); return ret; }
bool AP_Arming::pre_arm_checks(bool report) { #if !APM_BUILD_TYPE(APM_BUILD_ArduCopter) if (armed || require == NONE) { // if we are already armed or don't need any arming checks // then skip the checks return true; } #endif return hardware_safety_check(report) & barometer_checks(report) & ins_checks(report) & compass_checks(report) & gps_checks(report) & battery_checks(report) & logging_checks(report) & manual_transmitter_checks(report) & board_voltage_checks(report); }