diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2014-07-16 13:42:47 +0200 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2014-07-16 13:42:47 +0200 |
commit | 0c5ce3d3a23a32556b38bb0936b315d12290e4ba (patch) | |
tree | 04259df608017800cb318180d43ce1c1cb7db0ab /src | |
parent | 1dd4282099cbca9c04f23c7b097bad66b3bb4681 (diff) | |
download | px4-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')
-rw-r--r-- | src/drivers/hmc5883/hmc5883.cpp | 9 |
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; } |