diff --git a/conf/airframes/TUDELFT/tudelft_iris_indi.xml b/conf/airframes/TUDELFT/tudelft_iris_indi.xml
index 59e0e12333..04bcd11521 100644
--- a/conf/airframes/TUDELFT/tudelft_iris_indi.xml
+++ b/conf/airframes/TUDELFT/tudelft_iris_indi.xml
@@ -87,6 +87,12 @@
+
+
+
+
+
+
@@ -104,12 +110,12 @@
-
-
+
+
-
-
-
+
+
+
diff --git a/sw/airborne/modules/sensors/mag_hmc58xx.c b/sw/airborne/modules/sensors/mag_hmc58xx.c
index f38e046fbb..7388dee787 100644
--- a/sw/airborne/modules/sensors/mag_hmc58xx.c
+++ b/sw/airborne/modules/sensors/mag_hmc58xx.c
@@ -30,6 +30,8 @@
#include "pprzlink/messages.h"
#include "subsystems/datalink/downlink.h"
+#include BOARD_CONFIG
+
#ifndef HMC58XX_CHAN_X
#define HMC58XX_CHAN_X 0
#endif
@@ -39,6 +41,15 @@
#ifndef HMC58XX_CHAN_Z
#define HMC58XX_CHAN_Z 2
#endif
+#ifndef HMC58XX_CHAN_X_SIGN
+#define HMC58XX_CHAN_X_SIGN +
+#endif
+#ifndef HMC58XX_CHAN_Y_SIGN
+#define HMC58XX_CHAN_Y_SIGN +
+#endif
+#ifndef HMC58XX_CHAN_Z_SIGN
+#define HMC58XX_CHAN_Z_SIGN +
+#endif
#if MODULE_HMC58XX_UPDATE_AHRS
#include "subsystems/imu.h"
@@ -68,9 +79,9 @@ void mag_hmc58xx_module_event(void)
// set channel order
struct Int32Vect3 mag = {
- (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_X]),
- (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Y]),
- (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Z])
+ HMC58XX_CHAN_X_SIGN(int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_X]),
+ HMC58XX_CHAN_Y_SIGN(int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Y]),
+ HMC58XX_CHAN_Z_SIGN(int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Z])
};
// unscaled vector
VECT3_COPY(imu.mag_unscaled, mag);
@@ -91,9 +102,9 @@ void mag_hmc58xx_module_event(void)
void mag_hmc58xx_report(void)
{
struct Int32Vect3 mag = {
- (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_X]),
- (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Y]),
- (int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Z])
+ HMC58XX_CHAN_X_SIGN(int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_X]),
+ HMC58XX_CHAN_Y_SIGN(int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Y]),
+ HMC58XX_CHAN_Z_SIGN(int32_t)(mag_hmc58xx.data.value[HMC58XX_CHAN_Z])
};
DOWNLINK_SEND_IMU_MAG_RAW(DefaultChannel, DefaultDevice, &mag.x, &mag.y, &mag.z);
}
diff --git a/sw/airborne/subsystems/imu/imu_px4fmu_v2.4.c b/sw/airborne/subsystems/imu/imu_px4fmu_v2.4.c
index 63cdfe352b..6e1b73391d 100644
--- a/sw/airborne/subsystems/imu/imu_px4fmu_v2.4.c
+++ b/sw/airborne/subsystems/imu/imu_px4fmu_v2.4.c
@@ -50,7 +50,7 @@ void imu_impl_init(void)
/* LSM303dlhc acc + magneto init */
lsm303dlhc_spi_init(&imu_px4.lsm_acc, &IMU_SPI_DEV, IMU_LSM_SPI_SLAVE_IDX, LSM_TARGET_ACC);
#if !MODULE_HMC58XX_UPDATE_AHRS
- lsm303dlhc_spi_init(&imu_px4.lsm_mag, &IMU_SPI_DEV, IMU_LSM_SPI_SLAVE_IDX, LSM_TARGET_MAG);
+ lsm303dlhc_spi_init(&imu_px4.lsm_mag, &IMU_SPI_DEV, IMU_LSM_SPI_SLAVE_IDX, LSM_TARGET_MAG);
#endif
}
@@ -63,7 +63,7 @@ void imu_periodic(void)
#if !MODULE_HMC58XX_UPDATE_AHRS
/* Read magneto's every 10 times of main freq
* at ~50Hz (main loop for rotorcraft: 512Hz)
- */
+ */
RunOnceEvery(10, lsm303dlhc_spi_periodic(&imu_px4.lsm_mag));
#endif
}