diff --git a/conf/airframes/PPZUAV/fixed-wing/ppzimu_tiny.xml b/conf/airframes/PPZUAV/fixed-wing/ppzimu_tiny.xml
index 1b4a1040a06..06906f2ea41 100644
--- a/conf/airframes/PPZUAV/fixed-wing/ppzimu_tiny.xml
+++ b/conf/airframes/PPZUAV/fixed-wing/ppzimu_tiny.xml
@@ -202,7 +202,7 @@
-->
-
+
+
@@ -256,15 +256,5 @@
-
- ap.srcs += $(SRC_SUBSYSTEMS)/imu.c
-
-ap.CFLAGS += -DAHRS_H_X=0.51562740288882 -DAHRS_H_Y=-0.05707735220832 -DAHRS_H_Z=0.85490967783446
-ap.CFLAGS += -DIMU_TYPE_H=\"modules/ins/ins_ppzuavimu.h\"
-
-# Test attitude using accelerometers only:
-# ap.CFLAGS += -DOUTPUTMODE=2
-# ap.CFLAGS += -DASPIRIN_IMU
-
diff --git a/conf/airframes/TU_Delft/yapa_xsens.xml b/conf/airframes/TU_Delft/yapa_xsens.xml
index 10abe2b9f11..f27b129aeb4 100644
--- a/conf/airframes/TU_Delft/yapa_xsens.xml
+++ b/conf/airframes/TU_Delft/yapa_xsens.xml
@@ -180,18 +180,18 @@
-
-
-
+
+
+
-
+
diff --git a/conf/autopilot/fixedwing.makefile b/conf/autopilot/fixedwing.makefile
index 139a7ca919b..3b0758e8bf7 100644
--- a/conf/autopilot/fixedwing.makefile
+++ b/conf/autopilot/fixedwing.makefile
@@ -15,6 +15,7 @@ SRC_FIXEDWING_TEST=$(SRC_FIXEDWING)/
SRC_FIRMWARE=firmwares/fixedwing
SRC_SUBSYSTEMS=subsystems
+SRC_MODULES=modules
FIXEDWING_INC = -I$(SRC_FIRMWARE) -I$(SRC_FIXEDWING)
diff --git a/conf/autopilot/subsystems/shared/imu_ppzuav.makefile b/conf/autopilot/subsystems/shared/imu_ppzuav.makefile
new file mode 100644
index 00000000000..6da0e416e42
--- /dev/null
+++ b/conf/autopilot/subsystems/shared/imu_ppzuav.makefile
@@ -0,0 +1,20 @@
+
+IMU_PPZUAVIMU_CFLAGS = -DUSE_IMU
+IMU_PPZUAVIMU_CFLAGS += -DIMU_TYPE_H=\"modules/ins/ins_ppzuavimu.h\"
+
+IMU_PPZUAVIMU_SRCS = $(SRC_SUBSYSTEMS)/imu.c \
+ $(SRC_MODULES)/ins/ins_ppzuavimu.c
+
+
+IMU_PPZUAVIMU_CFLAGS += -DUSE_I2C
+ifdef STM32
+ IMU_PPZUAVIMU_CFLAGS += -DUSE_I2C2
+ IMU_PPZUAVIMU_CFLAGS += -DPPZUAVIMU_I2C_DEVICE=i2c2
+else
+ IMU_PPZUAVIMU_CFLAGS += -DUSE_I2C0
+ IMU_PPZUAVIMU_CFLAGS += -DPPZUAVIMU_I2C_DEVICE=i2c0
+endif
+
+ap.CFLAGS += $(IMU_PPZUAVIMU_CFLAGS)
+ap.srcs += $(IMU_PPZUAVIMU_SRCS)
+
diff --git a/conf/modules/ins_aspirin_via_i2c.xml b/conf/modules/ins_aspirin_via_i2c.xml
new file mode 100644
index 00000000000..d5f93cd3273
--- /dev/null
+++ b/conf/modules/ins_aspirin_via_i2c.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conf/modules/ins_ppzuavimu.xml b/conf/modules/ins_ppzuavimu.xml
index 9537dbe34db..a2544c204df 100644
--- a/conf/modules/ins_ppzuavimu.xml
+++ b/conf/modules/ins_ppzuavimu.xml
@@ -6,8 +6,12 @@
-
-
+
+
+
+
+
+
diff --git a/sw/airborne/modules/ins/ins_ppzuavimu.c b/sw/airborne/modules/ins/ins_ppzuavimu.c
index ea3dc5e852c..be707312c80 100644
--- a/sw/airborne/modules/ins/ins_ppzuavimu.c
+++ b/sw/airborne/modules/ins/ins_ppzuavimu.c
@@ -19,7 +19,7 @@
*/
#include
-#include "estimator.h"
+#include "ins_ppzuavimu.h"
#include "mcu_periph/i2c.h"
// Downlink
@@ -53,7 +53,7 @@ struct i2c_transaction ppzuavimu_adxl345;
struct Imu imu;
#endif
-void ppzuavimu_module_init( void )
+void imu_impl_init(void)
{
/////////////////////////////////////////////////////////////////////
// ITG3200
@@ -138,7 +138,7 @@ void ppzuavimu_module_init( void )
}
-void ppzuavimu_module_periodic( void )
+void imu_periodic( void )
{
// Start reading the latest gyroscope data
ppzuavimu_itg3200.type = I2CTransTxRx;
diff --git a/sw/airborne/modules/ins/ins_ppzuavimu.h b/sw/airborne/modules/ins/ins_ppzuavimu.h
index 1da5a745d7b..8ffe325d299 100644
--- a/sw/airborne/modules/ins/ins_ppzuavimu.h
+++ b/sw/airborne/modules/ins/ins_ppzuavimu.h
@@ -28,14 +28,13 @@ extern volatile bool_t gyr_valid;
extern volatile bool_t acc_valid;
extern volatile bool_t mag_valid;
-
-extern void ppzuavimu_module_init( void );
-extern void ppzuavimu_module_periodic( void );
-extern void ppzuavimu_module_event( void );
-extern void ppzuavimu_module_downlink_raw( void );
-
+/* must be defined in order to be IMU code: declared in imu.h
+extern void imu_impl_init(void);
+extern void imu_periodic(void);
+*/
#define ImuEvent(_gyro_handler, _accel_handler, _mag_handler) { \
+ ppzuavimu_module_event(); \
if (gyr_valid) { \
gyr_valid = FALSE; \
_gyro_handler(); \
@@ -50,5 +49,9 @@ extern void ppzuavimu_module_downlink_raw( void );
} \
}
+/* Own Extra Functions */
+extern void ppzuavimu_module_event( void );
+extern void ppzuavimu_module_downlink_raw( void );
+
#endif // PPZUAVIMU_H