diff --git a/conf/flight_plans/flight_plan.dtd b/conf/flight_plans/flight_plan.dtd index 31835f0acb..7d1fbdeb12 100644 --- a/conf/flight_plans/flight_plan.dtd +++ b/conf/flight_plans/flight_plan.dtd @@ -55,7 +55,8 @@ max_dist_from_home CDATA #REQUIRED ground_alt CDATA #REQUIRED security_height CDATA #REQUIRED alt CDATA #REQUIRED -qfu CDATA #IMPLIED> +qfu CDATA #IMPLIED +home_mode_height CDATA #IMPLIED> - +
#include "subsystems/datalink/datalink.h"
diff --git a/sw/airborne/subsystems/nav.c b/sw/airborne/subsystems/nav.c index 0d0f21f7de..b13a17d342 100644 --- a/sw/airborne/subsystems/nav.c +++ b/sw/airborne/subsystems/nav.c @@ -394,7 +394,7 @@ void nav_home(void) { /** Nominal speed */ nav_pitch = 0.; v_ctl_mode = V_CTL_MODE_AUTO_ALT; - nav_altitude = ground_alt+SECURITY_HEIGHT; + nav_altitude = ground_alt+HOME_MODE_HEIGHT; compute_dist2_to_home(); dist2_to_wp = dist2_to_home; nav_set_altitude(); diff --git a/sw/tools/gen_flight_plan.ml b/sw/tools/gen_flight_plan.ml index cd8182c6f2..58486ce4f1 100644 --- a/sw/tools/gen_flight_plan.ml +++ b/sw/tools/gen_flight_plan.ml @@ -757,6 +757,9 @@ let () = and alt = ExtXml.attrib xml "alt" in security_height := get_float "security_height"; ground_alt := get_float "ground_alt"; + let home_mode_height = try + max (get_float "home_mode_height") !security_height + with _ -> !security_height in check_altitude (float_of_string alt) xml; @@ -790,6 +793,7 @@ let () = Xml2h.define "GROUND_ALT_CM" (sprintf "%.0f" (100.*. !ground_alt)); Xml2h.define "SECURITY_HEIGHT" (sof !security_height); Xml2h.define "SECURITY_ALT" (sof (!security_height +. !ground_alt)); + Xml2h.define "HOME_MODE_HEIGHT" (sof home_mode_height); Xml2h.define "MAX_DIST_FROM_HOME" (sof mdfh); let index_of_waypoints =