aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ROMFS/px4fmu_common/init.d/rc.sensors27
-rw-r--r--src/modules/systemlib/system_params.c11
2 files changed, 28 insertions, 10 deletions
diff --git a/ROMFS/px4fmu_common/init.d/rc.sensors b/ROMFS/px4fmu_common/init.d/rc.sensors
index be54ea98b..f50e9aff7 100644
--- a/ROMFS/px4fmu_common/init.d/rc.sensors
+++ b/ROMFS/px4fmu_common/init.d/rc.sensors
@@ -6,12 +6,6 @@
ms5611 start
adc start
-# Mag might be external
-if hmc5883 start
-then
- echo "[init] Using HMC5883"
-fi
-
if mpu6000 start
then
echo "[init] Using MPU6000"
@@ -22,12 +16,25 @@ then
echo "[init] Using L3GD20(H)"
fi
-if ver hwcmp PX4FMU_V2
+# Use selected (internal/external) magnetometer
+if param compare SYS_EXT_MAG 0
then
- # IMPORTANT: EXTERNAL BUSES SHOULD BE SCANNED FIRST
- if lsm303d start
+ if hmc5883 -I start
+ then
+ echo "[init] Using internal HMC5883"
+ fi
+
+ if ver hwcmp PX4FMU_V2
+ then
+ if lsm303d start
+ then
+ echo "[init] Using internal LSM303D"
+ fi
+ fi
+else
+ if hmc5883 -X start
then
- echo "[init] Using LSM303D"
+ echo "[init] Using external HMC5883"
fi
fi
diff --git a/src/modules/systemlib/system_params.c b/src/modules/systemlib/system_params.c
index 702e435ac..8cb923620 100644
--- a/src/modules/systemlib/system_params.c
+++ b/src/modules/systemlib/system_params.c
@@ -82,3 +82,14 @@ PARAM_DEFINE_INT32(SYS_USE_IO, 1);
* @group System
*/
PARAM_DEFINE_INT32(SYS_RESTART_TYPE, 2);
+
+/**
+* Set usage of external magnetometer
+*
+* Set to 1 to use external magnetometer instead of internal one.
+*
+* @min 0
+* @max 1
+* @group System
+*/
+PARAM_DEFINE_INT32(SYS_EXT_MAG, 0);