aboutsummaryrefslogtreecommitdiff
path: root/src/modules/navigator/geofence.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/navigator/geofence.h')
-rw-r--r--src/modules/navigator/geofence.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/modules/navigator/geofence.h b/src/modules/navigator/geofence.h
index 37a41b68a..96764cc97 100644
--- a/src/modules/navigator/geofence.h
+++ b/src/modules/navigator/geofence.h
@@ -45,8 +45,10 @@
#include <uORB/topics/vehicle_global_position.h>
#include <uORB/topics/vehicle_gps_position.h>
#include <uORB/topics/sensor_combined.h>
+#include <uORB/topics/home_position.h>
#include <controllib/blocks.hpp>
#include <controllib/block/BlockParam.hpp>
+#include <drivers/drv_hrt.h>
#define GEOFENCE_FILENAME "/fs/microsd/etc/geofence.txt"
@@ -76,7 +78,9 @@ public:
* @return true: system is inside fence, false: system is outside fence
*/
bool inside(const struct vehicle_global_position_s &global_position,
- const struct vehicle_gps_position_s &gps_position, float baro_altitude_amsl);
+ const struct vehicle_gps_position_s &gps_position, float baro_altitude_amsl,
+ const struct home_position_s home_pos, bool home_position_set);
+
bool inside_polygon(double lat, double lon, float altitude);
int clearDm();
@@ -103,16 +107,24 @@ public:
private:
orb_advert_t _fence_pub; /**< publish fence topic */
+ home_position_s _home_pos;
+ bool _home_pos_set;
+
+ hrt_abstime _last_horizontal_range_warning;
+ hrt_abstime _last_vertical_range_warning;
+
float _altitude_min;
float _altitude_max;
unsigned _verticesCount;
/* Params */
- control::BlockParamInt _param_geofence_on;
+ control::BlockParamInt _param_geofence_mode;
control::BlockParamInt _param_altitude_mode;
control::BlockParamInt _param_source;
control::BlockParamInt _param_counter_threshold;
+ control::BlockParamInt _param_max_hor_distance;
+ control::BlockParamInt _param_max_ver_distance;
uint8_t _outside_counter;