// mavlink_motor_test_start - start motor test - spin a single motor at a specified pwm // returns MAV_RESULT_ACCEPTED on success, MAV_RESULT_FAILED on failure MAV_RESULT Copter::mavlink_motor_test_start(mavlink_channel_t chan, uint8_t motor_seq, uint8_t throttle_type, uint16_t throttle_value, float timeout_sec, uint8_t motor_count) { if (motor_count == 0) { motor_count = 1; } // if test has not started try to start it if (!ap.motor_test) { gcs().send_text(MAV_SEVERITY_INFO, "starting motor test"); /* perform checks that it is ok to start test The RC calibrated check can be skipped if direct pwm is supplied */ if (!mavlink_motor_test_check(chan, throttle_type != 1)) { return MAV_RESULT_FAILED; } else { // start test ap.motor_test = true; // enable and arm motors if (!motors->armed()) { init_rc_out(); enable_motor_output(); motors->armed(true); } // disable throttle and gps failsafe g.failsafe_throttle = FS_THR_DISABLED; g.failsafe_gcs = FS_GCS_DISABLED; g.fs_ekf_action = 0; // turn on notify leds AP_Notify::flags.esc_calibration = true; } } // set timeout motor_test_start_ms = AP_HAL::millis(); motor_test_timeout_ms = MIN(timeout_sec, MOTOR_TEST_TIMEOUT_SEC) * 1000; // store required output motor_test_seq = motor_seq; motor_test_count = motor_count; motor_test_throttle_type = throttle_type; motor_test_throttle_value = throttle_value; if (motor_test_throttle_type == MOTOR_TEST_COMPASS_CAL) { compass.per_motor_calibration_start(); } // return success return MAV_RESULT_ACCEPTED; }
// mavlink_motor_test_start - start motor test - spin a single motor at a specified pwm // returns MAV_RESULT_ACCEPTED on success, MAV_RESULT_FAILED on failure uint8_t Copter::mavlink_motor_test_start(mavlink_channel_t chan, uint8_t motor_seq, uint8_t throttle_type, uint16_t throttle_value, float timeout_sec) { // if test has not started try to start it if (!ap.motor_test) { /* perform checks that it is ok to start test The RC calibrated check can be skipped if direct pwm is supplied */ if (!mavlink_motor_test_check(chan, throttle_type != 1)) { return MAV_RESULT_FAILED; } else { // start test ap.motor_test = true; // enable and arm motors if (!motors->armed()) { init_rc_out(); enable_motor_output(); motors->armed(true); } // disable throttle, battery and gps failsafe g.failsafe_throttle = FS_THR_DISABLED; g.failsafe_battery_enabled = FS_BATT_DISABLED; g.failsafe_gcs = FS_GCS_DISABLED; // turn on notify leds AP_Notify::flags.esc_calibration = true; } } // set timeout motor_test_start_ms = AP_HAL::millis(); motor_test_timeout_ms = MIN(timeout_sec * 1000, MOTOR_TEST_TIMEOUT_MS_MAX); // store required output motor_test_seq = motor_seq; motor_test_throttle_type = throttle_type; motor_test_throttle_value = throttle_value; // return success return MAV_RESULT_ACCEPTED; }