bool AP_AHRS_DCM::set_home(const Location &loc) { // check location is valid if (loc.lat == 0 && loc.lng == 0 && loc.alt == 0) { return false; } if (!loc.check_latlng()) { return false; } // home must always be global frame at the moment as .alt is // accessed directly by the vehicles and they may not be rigorous // in checking the frame type. Location tmp = loc; if (!tmp.change_alt_frame(Location::AltFrame::ABSOLUTE)) { return false; } _home = tmp; _home_is_set = true; Log_Write_Home_And_Origin(); // send new home and ekf origin to GCS gcs().send_message(MSG_HOME); gcs().send_message(MSG_ORIGIN); AP_HAL::Util::PersistentData &pd = hal.util->persistent_data; pd.home_lat = loc.lat; pd.home_lon = loc.lng; pd.home_alt_cm = loc.alt; return true; }
MAV_RESULT GCS_MAVLINK_Copter::handle_command_do_set_roi(const Location &roi_loc) { if (!roi_loc.check_latlng()) { return MAV_RESULT_FAILED; } copter.flightmode->auto_yaw.set_roi(roi_loc); return MAV_RESULT_ACCEPTED; }