aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/hmc5883/hmc5883.cpp
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-07-16 13:42:47 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-07-16 13:42:47 +0200
commit0c5ce3d3a23a32556b38bb0936b315d12290e4ba (patch)
tree04259df608017800cb318180d43ce1c1cb7db0ab /src/drivers/hmc5883/hmc5883.cpp
parent1dd4282099cbca9c04f23c7b097bad66b3bb4681 (diff)
downloadpx4-firmware-0c5ce3d3a23a32556b38bb0936b315d12290e4ba.tar.gz
px4-firmware-0c5ce3d3a23a32556b38bb0936b315d12290e4ba.tar.bz2
px4-firmware-0c5ce3d3a23a32556b38bb0936b315d12290e4ba.zip
Hotfix: Allow the HMC5883 driver to continue to operate in auto mode
Diffstat (limited to 'src/drivers/hmc5883/hmc5883.cpp')
-rw-r--r--src/drivers/hmc5883/hmc5883.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/drivers/hmc5883/hmc5883.cpp b/src/drivers/hmc5883/hmc5883.cpp
index 4aef43102..03a7e6f37 100644
--- a/src/drivers/hmc5883/hmc5883.cpp
+++ b/src/drivers/hmc5883/hmc5883.cpp
@@ -1341,8 +1341,8 @@ namespace hmc5883
#endif
const int ERROR = -1;
-HMC5883 *g_dev_int;
-HMC5883 *g_dev_ext;
+HMC5883 *g_dev_int = nullptr;
+HMC5883 *g_dev_ext = nullptr;
void start(int bus, enum Rotation rotation);
void test(int bus);
@@ -1378,6 +1378,11 @@ start(int bus, enum Rotation rotation)
errx(0, "already started internal");
g_dev_int = new HMC5883(PX4_I2C_BUS_ONBOARD, HMC5883L_DEVICE_PATH_INT, rotation);
if (g_dev_int != nullptr && OK != g_dev_int->init()) {
+
+ /* tear down the failing onboard instance */
+ delete g_dev_int;
+ g_dev_int = nullptr;
+
if (bus == PX4_I2C_BUS_ONBOARD) {
goto fail;
}