diff --git a/ArduCopter/AP_Rally.cpp b/ArduCopter/AP_Rally.cpp new file mode 100644 index 0000000000..c5ad504355 --- /dev/null +++ b/ArduCopter/AP_Rally.cpp @@ -0,0 +1,32 @@ +// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include + +#include "Copter.h" + +#include "AP_Rally.h" + +bool AP_Rally_Copter::is_valid(const Location &rally_point) const +{ +#if AC_FENCE == ENABLED + Location_Class rally_loc(rally_point); + if (!copter.fence.check_destination_within_fence(rally_loc)) { + return false; + } +#endif + return true; +} diff --git a/ArduCopter/AP_Rally.h b/ArduCopter/AP_Rally.h new file mode 100644 index 0000000000..0e6a3ad19e --- /dev/null +++ b/ArduCopter/AP_Rally.h @@ -0,0 +1,32 @@ +// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#include +#include + +class AP_Rally_Copter : public AP_Rally +{ + +public: + // constructor + AP_Rally_Copter(AP_AHRS &ahrs) : AP_Rally(ahrs) {}; + +private: + bool is_valid(const Location &rally_point) const override; + +}; diff --git a/ArduCopter/Copter.h b/ArduCopter/Copter.h index 1546633096..f7dbd2372e 100644 --- a/ArduCopter/Copter.h +++ b/ArduCopter/Copter.h @@ -50,7 +50,6 @@ #include #include #include // Mission command library -#include // Rally point library #include // PID library #include // PID library (2-axis) #include // Heli specific Rate PID library @@ -95,6 +94,7 @@ #include "config.h" #include "GCS_Mavlink.h" +#include "AP_Rally.h" // Rally point library // libraries which are dependent on #defines in defines.h and/or config.h #if SPRAYER == ENABLED @@ -121,6 +121,7 @@ class Copter : public AP_HAL::HAL::Callbacks { public: friend class GCS_MAVLINK_Copter; + friend class AP_Rally_Copter; friend class Parameters; Copter(void); @@ -508,7 +509,7 @@ private: // Rally library #if AC_RALLY == ENABLED - AP_Rally rally; + AP_Rally_Copter rally; #endif // RSSI diff --git a/ArduCopter/Parameters.cpp b/ArduCopter/Parameters.cpp index dfd4cf638f..180a02f856 100644 --- a/ArduCopter/Parameters.cpp +++ b/ArduCopter/Parameters.cpp @@ -831,8 +831,8 @@ const AP_Param::Info Copter::var_info[] = { #if AC_RALLY == ENABLED // @Group: RALLY_ - // @Path: ../libraries/AP_Rally/AP_Rally.cpp - GOBJECT(rally, "RALLY_", AP_Rally), + // @Path: AP_Rally.cpp,../libraries/AP_Rally/AP_Rally.cpp + GOBJECT(rally, "RALLY_", AP_Rally_Copter), #endif #if FRAME_CONFIG == HELI_FRAME