aboutsummaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-10-15 21:50:12 +0200
committerLorenz Meier <lm@inf.ethz.ch>2015-01-02 12:28:22 +0100
commit08297db39a909df9b024867eeb23720532f5625f (patch)
treedad64ae36c77e2048454497ee3fb5fee847db4b1 /src/drivers
parentd20ebd739045c3fb1fb215c549707618f0b2554b (diff)
downloadpx4-firmware-08297db39a909df9b024867eeb23720532f5625f.tar.gz
px4-firmware-08297db39a909df9b024867eeb23720532f5625f.tar.bz2
px4-firmware-08297db39a909df9b024867eeb23720532f5625f.zip
Support for 2nd baro
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/drv_baro.h1
-rw-r--r--src/drivers/ms5611/ms5611.cpp21
2 files changed, 5 insertions, 17 deletions
diff --git a/src/drivers/drv_baro.h b/src/drivers/drv_baro.h
index 248b9a73d..3e28d3d3d 100644
--- a/src/drivers/drv_baro.h
+++ b/src/drivers/drv_baro.h
@@ -65,6 +65,7 @@ struct baro_report {
*/
ORB_DECLARE(sensor_baro0);
ORB_DECLARE(sensor_baro1);
+ORB_DECLARE(sensor_baro2);
/*
* ioctl() definitions
diff --git a/src/drivers/ms5611/ms5611.cpp b/src/drivers/ms5611/ms5611.cpp
index aed72de01..0a793cbc9 100644
--- a/src/drivers/ms5611/ms5611.cpp
+++ b/src/drivers/ms5611/ms5611.cpp
@@ -134,6 +134,7 @@ protected:
unsigned _msl_pressure; /* in Pa */
orb_advert_t _baro_topic;
+ orb_id_t _orb_id;
int _class_instance;
@@ -262,6 +263,7 @@ MS5611::init()
/* register alternate interfaces if we have to */
_class_instance = register_class_devname(BARO_DEVICE_PATH);
+ _orb_id = ORB_ID_TRIPLE(sensor_baro, _class_instance);
struct baro_report brp;
/* do a first measurement cycle to populate reports with valid data */
@@ -301,14 +303,7 @@ MS5611::init()
ret = OK;
- switch (_class_instance) {
- case CLASS_DEVICE_PRIMARY:
- _baro_topic = orb_advertise(ORB_ID(sensor_baro0), &brp);
- break;
- case CLASS_DEVICE_SECONDARY:
- _baro_topic = orb_advertise(ORB_ID(sensor_baro1), &brp);
- break;
- }
+ _baro_topic = orb_advertise(_orb_id, &brp);
if (_baro_topic < 0) {
warnx("failed to create sensor_baro publication");
@@ -730,15 +725,7 @@ MS5611::collect()
/* publish it */
if (!(_pub_blocked)) {
/* publish it */
- switch (_class_instance) {
- case CLASS_DEVICE_PRIMARY:
- orb_publish(ORB_ID(sensor_baro0), _baro_topic, &report);
- break;
-
- case CLASS_DEVICE_SECONDARY:
- orb_publish(ORB_ID(sensor_baro1), _baro_topic, &report);
- break;
- }
+ orb_publish(_orb_id, _baro_topic, &report);
}
if (_reports->force(&report)) {