|
|
@ -23,6 +23,10 @@ bool Sub::start_command(const AP_Mission::Mission_Command& cmd) |
|
|
|
do_surface(cmd); |
|
|
|
do_surface(cmd); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case MAV_CMD_NAV_RETURN_TO_LAUNCH: |
|
|
|
|
|
|
|
do_RTL(); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case MAV_CMD_NAV_LOITER_UNLIM: // 17 Loiter indefinitely
|
|
|
|
case MAV_CMD_NAV_LOITER_UNLIM: // 17 Loiter indefinitely
|
|
|
|
do_loiter_unlimited(cmd); |
|
|
|
do_loiter_unlimited(cmd); |
|
|
|
break; |
|
|
|
break; |
|
|
@ -179,6 +183,9 @@ bool Sub::verify_command(const AP_Mission::Mission_Command& cmd) |
|
|
|
case MAV_CMD_NAV_LAND: |
|
|
|
case MAV_CMD_NAV_LAND: |
|
|
|
return verify_surface(cmd); |
|
|
|
return verify_surface(cmd); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case MAV_CMD_NAV_RETURN_TO_LAUNCH: |
|
|
|
|
|
|
|
return verify_RTL(); |
|
|
|
|
|
|
|
|
|
|
|
case MAV_CMD_NAV_LOITER_UNLIM: |
|
|
|
case MAV_CMD_NAV_LOITER_UNLIM: |
|
|
|
return verify_loiter_unlimited(); |
|
|
|
return verify_loiter_unlimited(); |
|
|
|
|
|
|
|
|
|
|
@ -323,6 +330,11 @@ void Sub::do_surface(const AP_Mission::Mission_Command& cmd) |
|
|
|
auto_wp_start(target_location); |
|
|
|
auto_wp_start(target_location); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Sub::do_RTL() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
auto_wp_start(ahrs.get_home()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// do_loiter_unlimited - start loitering with no end conditions
|
|
|
|
// do_loiter_unlimited - start loitering with no end conditions
|
|
|
|
// note: caller should set yaw_mode
|
|
|
|
// note: caller should set yaw_mode
|
|
|
|
void Sub::do_loiter_unlimited(const AP_Mission::Mission_Command& cmd) |
|
|
|
void Sub::do_loiter_unlimited(const AP_Mission::Mission_Command& cmd) |
|
|
@ -606,6 +618,10 @@ bool Sub::verify_surface(const AP_Mission::Mission_Command& cmd) |
|
|
|
return retval; |
|
|
|
return retval; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool Sub::verify_RTL() { |
|
|
|
|
|
|
|
return wp_nav.reached_wp_destination(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool Sub::verify_loiter_unlimited() |
|
|
|
bool Sub::verify_loiter_unlimited() |
|
|
|
{ |
|
|
|
{ |
|
|
|
return false; |
|
|
|
return false; |
|
|
|