Merge branch 'release_v1.0.0'

This commit is contained in:
Lorenz Meier
2015-05-20 09:00:57 +02:00
28 changed files with 312 additions and 689 deletions
+6 -31
View File
@@ -48,39 +48,14 @@
#define RANGE_FINDER0_DEVICE_PATH "/dev/range_finder0"
#define MB12XX_MAX_RANGEFINDERS 12 //Maximum number of RangeFinders that can be connected
enum RANGE_FINDER_TYPE {
RANGE_FINDER_TYPE_LASER = 0,
};
#define range_finder_report range_finder_s
#define __orb_sensor_range_finder __orb_range_finder
/**
* @addtogroup topics
* @{
*/
#include <uORB/topics/range_finder.h>
/**
* range finder report structure. Reads from the device must be in multiples of this
* structure.
*/
struct range_finder_report {
uint64_t timestamp;
uint64_t error_count;
unsigned type; /**< type, following RANGE_FINDER_TYPE enum */
float distance; /**< in meters */
float minimum_distance; /**< minimum distance the sensor can measure */
float maximum_distance; /**< maximum distance the sensor can measure */
uint8_t valid; /**< 1 == within sensor range, 0 = outside sensor range */
float distance_vector[MB12XX_MAX_RANGEFINDERS]; /** in meters */
uint8_t just_updated; /** number of the most recent measurement sensor */
};
/**
* @}
*/
/*
* ObjDev tag for raw range finder data.
*/
ORB_DECLARE(sensor_range_finder);
#ifndef RANGE_FINDER_TYPE_LASER
#define RANGE_FINDER_TYPE_LASER 0
#endif
/*
* ioctl() definitions
+23 -18
View File
@@ -260,32 +260,37 @@ SF0X::~SF0X()
int
SF0X::init()
{
/* do regular cdev init */
if (CDev::init() != OK) {
goto out;
}
/* status */
int ret = 0;
/* allocate basic report buffers */
_reports = new RingBuffer(2, sizeof(range_finder_report));
do { /* create a scope to handle exit conditions using break */
if (_reports == nullptr) {
warnx("mem err");
goto out;
}
/* do regular cdev init */
ret = CDev::init();
if (ret != OK) break;
/* get a publish handle on the range finder topic */
struct range_finder_report zero_report;
memset(&zero_report, 0, sizeof(zero_report));
_range_finder_topic = orb_advertise(ORB_ID(sensor_range_finder), &zero_report);
/* allocate basic report buffers */
_reports = new RingBuffer(2, sizeof(range_finder_report));
if (_reports == nullptr) {
warnx("mem err");
ret = -1;
break;
}
if (_range_finder_topic < 0) {
warnx("advert err");
}
/* get a publish handle on the range finder topic */
struct range_finder_report zero_report;
memset(&zero_report, 0, sizeof(zero_report));
_range_finder_topic = orb_advertise(ORB_ID(sensor_range_finder), &zero_report);
if (_range_finder_topic < 0) {
warnx("advert err");
}
} while(0);
/* close the fd */
::close(_fd);
_fd = -1;
out:
return OK;
}