// update_flight_mode - calls the appropriate attitude controllers based on flight mode // called at 100hz or more void Copter::update_flight_mode() { // Update EKF speed limit - used to limit speed when we are using optical flow ahrs.getEkfControlLimits(ekfGndSpdLimit, ekfNavVelGainScaler); switch (control_mode) { case ACRO: #if FRAME_CONFIG == HELI_FRAME heli_acro_run(); #else acro_run(); #endif break; case STABILIZE: #if FRAME_CONFIG == HELI_FRAME heli_stabilize_run(); #else stabilize_run(); #endif break; case ALT_HOLD: althold_run(); break; case AUTO: auto_run(); break; case CIRCLE: circle_run(); break; case LOITER: loiter_run(); break; case GUIDED: guided_run(); break; case LAND: land_run(); break; case RTL: rtl_run(); break; case DRIFT: drift_run(); break; case SPORT: sport_run(); break; case ALT_POS: altpos_run(); break; case FLIP: flip_run(); break; #if AUTOTUNE_ENABLED == ENABLED case AUTOTUNE: autotune_run(); break; #endif #if POSHOLD_ENABLED == ENABLED case POSHOLD: poshold_run(); break; #endif case BRAKE: brake_run(); break; case THROW: throw_run(); break; case AVOID_ADSB: avoid_adsb_run(); break; case GUIDED_NOGPS: guided_nogps_run(); break; default: break; } }
// auto_rtl_run - rtl in AUTO flight mode // called by auto_run at 100hz or more void Copter::auto_rtl_run() { // call regular rtl flight mode run function rtl_run(); }
// update_flight_mode - calls the appropriate attitude controllers based on flight mode // called at 100hz or more void Sub::update_flight_mode() { // Update EKF speed limit - used to limit speed when we are using optical flow ahrs.getEkfControlLimits(ekfGndSpdLimit, ekfNavVelGainScaler); switch (control_mode) { case ACRO: acro_run(); break; case STABILIZE: stabilize_run(); break; case ALT_HOLD: althold_run(); break; case AUTO: auto_run(); break; case CIRCLE: circle_run(); break; case LOITER: loiter_run(); break; case GUIDED: guided_run(); break; case LAND: land_run(); break; case RTL: rtl_run(); break; case DRIFT: drift_run(); break; case SPORT: sport_run(); break; case FLIP: flip_run(); break; #if AUTOTUNE_ENABLED == ENABLED case AUTOTUNE: autotune_run(); break; #endif #if POSHOLD_ENABLED == ENABLED case POSHOLD: poshold_run(); break; #endif case BRAKE: brake_run(); break; case THROW: throw_run(); break; } }