geofence: remove fence & fence_vertex messages

- this was never read
- it was implemented wrong, leading to memory access violations in
  publishFence (an integer was passed instead of the fence_s struct)
This commit is contained in:
Beat Küng 2017-07-14 13:13:21 +02:00 committed by Lorenz Meier
parent b82975f73d
commit 52ca49c682
6 changed files with 9 additions and 33 deletions

View File

@ -55,8 +55,6 @@ set(msg_file_names
esc_report.msg
esc_status.msg
estimator_status.msg
fence.msg
fence_vertex.msg
filtered_bottom_flow.msg
follow_target.msg
fw_pos_ctrl_status.msg

View File

@ -1,4 +0,0 @@
uint8 GEOFENCE_MAX_VERTICES = 16
uint32 count # number of actual vertices
fence_vertex[16] vertices # geofence positions

View File

@ -1,2 +0,0 @@
float32 lat # latitude in degrees, worst case float precision gives us 2 meter resolution at the equator
float32 lon # longitude in degrees, worst case float precision gives us 2 meter resolution at the equator

View File

@ -66,11 +66,7 @@ typedef enum {
#if defined(MEMORY_CONSTRAINED_SYSTEM)
enum {
DM_KEY_SAFE_POINTS_MAX = 8,
#ifdef __cplusplus
DM_KEY_FENCE_POINTS_MAX = fence_s::GEOFENCE_MAX_VERTICES,
#else
DM_KEY_FENCE_POINTS_MAX = GEOFENCE_MAX_VERTICES,
#endif
DM_KEY_FENCE_POINTS_MAX = 16,
DM_KEY_WAYPOINTS_OFFBOARD_0_MAX = NUM_MISSIONS_SUPPORTED,
DM_KEY_WAYPOINTS_OFFBOARD_1_MAX = NUM_MISSIONS_SUPPORTED,
DM_KEY_WAYPOINTS_ONBOARD_MAX = (NUM_MISSIONS_SUPPORTED / 10),
@ -81,11 +77,7 @@ enum {
/** The maximum number of instances for each item type */
enum {
DM_KEY_SAFE_POINTS_MAX = 8,
#ifdef __cplusplus
DM_KEY_FENCE_POINTS_MAX = fence_s::GEOFENCE_MAX_VERTICES,
#else
DM_KEY_FENCE_POINTS_MAX = GEOFENCE_MAX_VERTICES,
#endif
DM_KEY_FENCE_POINTS_MAX = 64,
DM_KEY_WAYPOINTS_OFFBOARD_0_MAX = NUM_MISSIONS_SUPPORTED,
DM_KEY_WAYPOINTS_OFFBOARD_1_MAX = NUM_MISSIONS_SUPPORTED,
DM_KEY_WAYPOINTS_ONBOARD_MAX = NUM_MISSIONS_SUPPORTED,

View File

@ -237,7 +237,6 @@ Geofence::addPoint(int argc, char *argv[])
if ((argc == 1) && (strcmp("-clear", argv[0]) == 0)) {
dm_clear(DM_KEY_FENCE_POINTS);
publishFence(0);
return;
}
@ -265,7 +264,6 @@ Geofence::addPoint(int argc, char *argv[])
if (dm_write(DM_KEY_FENCE_POINTS, ix, DM_PERSIST_POWER_ON_RESET, &vertex, sizeof(vertex)) == sizeof(vertex)) {
if (last) {
publishFence((unsigned)ix + 1);
}
return;
@ -274,16 +272,6 @@ Geofence::addPoint(int argc, char *argv[])
PX4_WARN("can't store fence point");
}
void
Geofence::publishFence(unsigned vertices)
{
if (_fence_pub == nullptr) {
_fence_pub = orb_advertise(ORB_ID(fence), &vertices);
} else {
orb_publish(ORB_ID(fence), _fence_pub, &vertices);
}
}
int
Geofence::loadFromFile(const char *filename)

View File

@ -43,6 +43,11 @@
#include <cfloat>
#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 <controllib/blocks.hpp>
#include <drivers/drv_hrt.h>
@ -99,8 +104,6 @@ public:
*/
void addPoint(int argc, char *argv[]);
void publishFence(unsigned vertices);
int loadFromFile(const char *filename);
bool isEmpty() {return _vertices_count == 0;}
@ -114,7 +117,8 @@ public:
private:
Navigator *_navigator{nullptr};
orb_advert_t _fence_pub{nullptr}; /**< publish fence topic */
home_position_s _home_pos{0};
bool _home_pos_set{false};
hrt_abstime _last_horizontal_range_warning{0};
hrt_abstime _last_vertical_range_warning{0};