aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Tridgell <andrew@tridgell.net>2015-01-20 15:07:05 +1100
committerAndrew Tridgell <andrew@tridgell.net>2015-01-20 15:08:22 +1100
commit9b10395e94497ef16c99390460808409e08d468f (patch)
treee3988e00515cc8f4baec06dd7ff86759d0b56002 /src
parent0af6303d0b70cbac281450b49a11b649852ccbfc (diff)
downloadpx4-firmware-9b10395e94497ef16c99390460808409e08d468f.tar.gz
px4-firmware-9b10395e94497ef16c99390460808409e08d468f.tar.bz2
px4-firmware-9b10395e94497ef16c99390460808409e08d468f.zip
hmc5883: fixed DEVIOCGDEVICEID ioctl
we need to pass the ioctl through to the bus interface thanks to Jon Challinger for noticing this bug
Diffstat (limited to 'src')
-rw-r--r--src/drivers/hmc5883/hmc5883.cpp4
-rw-r--r--src/drivers/hmc5883/hmc5883_i2c.cpp5
-rw-r--r--src/drivers/hmc5883/hmc5883_spi.cpp5
3 files changed, 14 insertions, 0 deletions
diff --git a/src/drivers/hmc5883/hmc5883.cpp b/src/drivers/hmc5883/hmc5883.cpp
index 9d63479f3..95fbed0ba 100644
--- a/src/drivers/hmc5883/hmc5883.cpp
+++ b/src/drivers/hmc5883/hmc5883.cpp
@@ -66,6 +66,7 @@
#include <drivers/drv_mag.h>
#include <drivers/drv_hrt.h>
#include <drivers/device/ringbuffer.h>
+#include <drivers/drv_device.h>
#include <uORB/uORB.h>
#include <uORB/topics/subsystem_info.h>
@@ -725,6 +726,9 @@ HMC5883::ioctl(struct file *filp, int cmd, unsigned long arg)
debug("MAGIOCGEXTERNAL in main driver");
return _interface->ioctl(cmd, dummy);
+ case DEVIOCGDEVICEID:
+ return _interface->ioctl(cmd, dummy);
+
default:
/* give it to the superclass */
return CDev::ioctl(filp, cmd, arg);
diff --git a/src/drivers/hmc5883/hmc5883_i2c.cpp b/src/drivers/hmc5883/hmc5883_i2c.cpp
index 782ea62fe..f86c1af6b 100644
--- a/src/drivers/hmc5883/hmc5883_i2c.cpp
+++ b/src/drivers/hmc5883/hmc5883_i2c.cpp
@@ -53,6 +53,7 @@
#include <drivers/device/i2c.h>
#include <drivers/drv_mag.h>
+#include <drivers/drv_device.h>
#include "hmc5883.h"
@@ -90,6 +91,7 @@ HMC5883_I2C_interface(int bus)
HMC5883_I2C::HMC5883_I2C(int bus) :
I2C("HMC5883_I2C", nullptr, bus, HMC5883L_ADDRESS, 400000)
{
+ _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_HMC5883;
}
HMC5883_I2C::~HMC5883_I2C()
@@ -117,6 +119,9 @@ HMC5883_I2C::ioctl(unsigned operation, unsigned &arg)
return 0;
}
+ case DEVIOCGDEVICEID:
+ return CDev::ioctl(nullptr, operation, arg);
+
default:
ret = -EINVAL;
}
diff --git a/src/drivers/hmc5883/hmc5883_spi.cpp b/src/drivers/hmc5883/hmc5883_spi.cpp
index 25a2f2b40..aec990ca8 100644
--- a/src/drivers/hmc5883/hmc5883_spi.cpp
+++ b/src/drivers/hmc5883/hmc5883_spi.cpp
@@ -53,6 +53,7 @@
#include <drivers/device/spi.h>
#include <drivers/drv_mag.h>
+#include <drivers/drv_device.h>
#include "hmc5883.h"
#include <board_config.h>
@@ -92,6 +93,7 @@ HMC5883_SPI_interface(int bus)
HMC5883_SPI::HMC5883_SPI(int bus, spi_dev_e device) :
SPI("HMC5883_SPI", nullptr, bus, device, SPIDEV_MODE3, 11*1000*1000 /* will be rounded to 10.4 MHz */)
{
+ _device_id.devid_s.devtype = DRV_MAG_DEVTYPE_HMC5883;
}
HMC5883_SPI::~HMC5883_SPI()
@@ -146,6 +148,9 @@ HMC5883_SPI::ioctl(unsigned operation, unsigned &arg)
return 0;
}
+ case DEVIOCGDEVICEID:
+ return CDev::ioctl(nullptr, operation, arg);
+
default:
{
ret = -EINVAL;