aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/hmc5883/hmc5883.cpp
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2013-05-04 18:44:37 +1000
committerAndrew Tridgell <tridge@samba.org>2013-05-04 18:44:37 +1000
commitd0122dccfc28869414f0e9cd2cb1d9f131c3fd20 (patch)
tree796e8bf1395a86e8f510b2f8780dcb2ca7620286 /src/drivers/hmc5883/hmc5883.cpp
parentaa9275c29ce90644448f0260d782ea68f21eacc7 (diff)
downloadpx4-firmware-d0122dccfc28869414f0e9cd2cb1d9f131c3fd20.tar.gz
px4-firmware-d0122dccfc28869414f0e9cd2cb1d9f131c3fd20.tar.bz2
px4-firmware-d0122dccfc28869414f0e9cd2cb1d9f131c3fd20.zip
hmc5883: fixed use of onboard I2C compass
Diffstat (limited to 'src/drivers/hmc5883/hmc5883.cpp')
-rw-r--r--src/drivers/hmc5883/hmc5883.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/drivers/hmc5883/hmc5883.cpp b/src/drivers/hmc5883/hmc5883.cpp
index c406a7588..78eda327c 100644
--- a/src/drivers/hmc5883/hmc5883.cpp
+++ b/src/drivers/hmc5883/hmc5883.cpp
@@ -1225,19 +1225,25 @@ start()
/* create the driver, attempt expansion bus first */
g_dev = new HMC5883(PX4_I2C_BUS_EXPANSION);
+ if (g_dev != nullptr && OK != g_dev->init()) {
+ delete g_dev;
+ g_dev = nullptr;
+ }
+
#ifdef PX4_I2C_BUS_ONBOARD
/* if this failed, attempt onboard sensor */
- if (g_dev == nullptr)
+ if (g_dev == nullptr) {
g_dev = new HMC5883(PX4_I2C_BUS_ONBOARD);
+ if (g_dev != nullptr && OK != g_dev->init()) {
+ goto fail;
+ }
+ }
#endif
if (g_dev == nullptr)
goto fail;
- if (OK != g_dev->init())
- goto fail;
-
/* set the poll rate to default, starts automatic data collection */
fd = open(MAG_DEVICE_PATH, O_RDONLY);