UAVCAN Rangefinder Support (#15097)

This commit is contained in:
avionicsanonymous
2020-09-07 19:22:08 -04:00
committed by GitHub
parent 6c4a1d01c1
commit df38e3798c
8 changed files with 267 additions and 2 deletions
@@ -36,8 +36,11 @@
#include <lib/drivers/device/Device.hpp>
PX4Rangefinder::PX4Rangefinder(const uint32_t device_id, const uint8_t device_orientation) :
CDev(nullptr),
_distance_sensor_pub{ORB_ID(distance_sensor)}
{
_class_device_instance = register_class_devname(RANGE_FINDER_BASE_DEVICE_PATH);
_distance_sensor_pub.advertise();
set_device_id(device_id);
@@ -46,6 +49,10 @@ PX4Rangefinder::PX4Rangefinder(const uint32_t device_id, const uint8_t device_or
PX4Rangefinder::~PX4Rangefinder()
{
if (_class_device_instance != -1) {
unregister_class_devname(RANGE_FINDER_BASE_DEVICE_PATH, _class_device_instance);
}
_distance_sensor_pub.unadvertise();
}
@@ -35,11 +35,12 @@
#include <drivers/drv_hrt.h>
#include <drivers/drv_range_finder.h>
#include <lib/cdev/CDev.hpp>
#include <lib/conversion/rotation.h>
#include <uORB/PublicationMulti.hpp>
#include <uORB/topics/distance_sensor.h>
class PX4Rangefinder
class PX4Rangefinder : public cdev::CDev
{
public:
@@ -63,8 +64,12 @@ public:
void update(const hrt_abstime &timestamp_sample, const float distance, const int8_t quality = -1);
int get_class_instance() { return _class_device_instance; };
private:
uORB::PublicationMultiData<distance_sensor_s> _distance_sensor_pub;
int _class_device_instance{-1};
};