diff --git a/conf/airframes/fraser_lisa_m_rotorcraft.xml b/conf/airframes/fraser_lisa_m_rotorcraft.xml index b5576ec155..90e696b2af 100644 --- a/conf/airframes/fraser_lisa_m_rotorcraft.xml +++ b/conf/airframes/fraser_lisa_m_rotorcraft.xml @@ -201,7 +201,7 @@
- +
diff --git a/sw/airborne/arch/sim/subsystems/imu/imu_aspirin_arch.c b/sw/airborne/arch/sim/subsystems/imu/imu_aspirin_arch.c index a030a3d916..c36b6fb9f1 100644 --- a/sw/airborne/arch/sim/subsystems/imu/imu_aspirin_arch.c +++ b/sw/airborne/arch/sim/subsystems/imu/imu_aspirin_arch.c @@ -34,18 +34,37 @@ void imu_aspirin_arch_init(void) { void imu_feed_gyro_accel(void) { - /* do something similar to this, fill imu_aspirin.i2c_trans_gyro and - * imu_aspirin.accel_rx_buf - */ -#if 0 - max1168_values[IMU_GYRO_P_CHAN] = sensors.gyro.value.x; - max1168_values[IMU_GYRO_Q_CHAN] = sensors.gyro.value.y; - max1168_values[IMU_GYRO_R_CHAN] = sensors.gyro.value.z; - max1168_values[IMU_ACCEL_X_CHAN] = sensors.accel.value.x; - max1168_values[IMU_ACCEL_Y_CHAN] = sensors.accel.value.y; - max1168_values[IMU_ACCEL_Z_CHAN] = sensors.accel.value.z; - max1168_status = STA_MAX1168_DATA_AVAILABLE; +#if 1 + // the high byte is in buf[0], low byte in buf[1], etc. + imu_aspirin.i2c_trans_gyro.buf[0] = ((int16_t)sensors.gyro.value.x) >> 8; + imu_aspirin.i2c_trans_gyro.buf[1] = ((int16_t)sensors.gyro.value.x) & 0xff; + imu_aspirin.i2c_trans_gyro.buf[2] = ((int16_t)sensors.gyro.value.y) >> 8; + imu_aspirin.i2c_trans_gyro.buf[3] = ((int16_t)sensors.gyro.value.y) & 0xff; + imu_aspirin.i2c_trans_gyro.buf[4] = ((int16_t)sensors.gyro.value.z) >> 8; + imu_aspirin.i2c_trans_gyro.buf[5] = ((int16_t)sensors.gyro.value.z) & 0xff; + + // low byte in buf[1], high byte in buf[2], etc... + imu_aspirin.accel_rx_buf[1] = ((int16_t)sensors.accel.value.x) & 0xff; + imu_aspirin.accel_rx_buf[2] = ((int16_t)sensors.accel.value.x) >> 8; + imu_aspirin.accel_rx_buf[3] = ((int16_t)sensors.accel.value.y) & 0xff; + imu_aspirin.accel_rx_buf[4] = ((int16_t)sensors.accel.value.y) >> 8; + imu_aspirin.accel_rx_buf[5] = ((int16_t)sensors.accel.value.z) & 0xff; + imu_aspirin.accel_rx_buf[6] = ((int16_t)sensors.accel.value.z) >> 8; + + // set availability flags... + imu_aspirin.accel_available = true; + +#else + + RATES_ASSIGN(imu.gyro_unscaled, sensors.gyro.value.x, sensors.gyro.value.y, sensors.gyro.value.z); + VECT3_ASSIGN(imu.accel_unscaled, sensors.accel.value.x, sensors.accel.value.y, sensors.accel.value.z); + + // set availability flags... + imu_aspirin.accel_available = true; + imu_aspirin.gyro_available_blaaa = true; + #endif + }