|
|
|
@ -520,7 +520,7 @@ void Mode::make_safe_spool_down()
@@ -520,7 +520,7 @@ void Mode::make_safe_spool_down()
|
|
|
|
|
int32_t Mode::get_alt_above_ground_cm(void) |
|
|
|
|
{ |
|
|
|
|
int32_t alt_above_ground; |
|
|
|
|
if (copter.rangefinder_alt_ok() && copter.current_loc.alt < g.land_slow_2nd_alt) { |
|
|
|
|
if (copter.rangefinder_alt_ok() && copter.current_loc.alt < g.land_slow_3nd_alt) { |
|
|
|
|
alt_above_ground = copter.rangefinder_state.alt_cm_filt.get(); |
|
|
|
|
} else { |
|
|
|
|
bool navigating = pos_control->is_active_xy(); |
|
|
|
@ -888,5 +888,25 @@ uint16_t Mode::get_pilot_speed_dn()
@@ -888,5 +888,25 @@ uint16_t Mode::get_pilot_speed_dn()
|
|
|
|
|
|
|
|
|
|
uint16_t Mode::get_speed_dn_slow() |
|
|
|
|
{ |
|
|
|
|
return copter.get_speed_dn_slow(); |
|
|
|
|
int16_t speed_dn_now = 0 ; |
|
|
|
|
|
|
|
|
|
if(get_alt_above_ground_cm() < g2.land_alt_low){ // 2m
|
|
|
|
|
speed_dn_now = g.land_speed; |
|
|
|
|
} |
|
|
|
|
else if(get_alt_above_ground_cm() < g.land_slow_2nd_alt){ // 15m
|
|
|
|
|
speed_dn_now = g.land_speed_2nd; |
|
|
|
|
} |
|
|
|
|
else if(get_alt_above_ground_cm() < g.land_slow_3nd_alt){ // 30m
|
|
|
|
|
speed_dn_now = g.land_speed_3nd; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
speed_dn_now = g2.pilot_speed_dn; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (speed_dn_now == 0) { |
|
|
|
|
return abs(g.pilot_speed_up); |
|
|
|
|
} else { |
|
|
|
|
return abs(speed_dn_now); |
|
|
|
|
} |
|
|
|
|
} |