#include <i2c.h>
#include "../common/i2c_commands.h"
-#include "gps_venus.h"
+#include "gps.h"
+#include "imu.h"
#include "main.h"
void i2c_protocol_init(void)
{
struct i2c_ans_imuboard_status ans;
struct gps_pos gps_pos;
+ struct imu_euler_int imu_pos;
uint8_t irq_flags;
i2c_flush();
gps_get_pos(&gps_pos);
IRQ_UNLOCK(irq_flags);
+ /* imu */
+ IRQ_LOCK(irq_flags);
+ imu_get_pos_euler_int(&imu_pos);
+ IRQ_UNLOCK(irq_flags);
+
ans.flags = 0;
+ if (imuboard.flags & IMUBOARD_F_BOOT_OK)
+ ans.flags |= I2C_IMUBOARD_STATUS_BOOT_OK;
+ if (imuboard.flags & IMUBOARD_F_SDCARD_OK)
+ ans.flags |= I2C_IMUBOARD_STATUS_SDCARD_OK;
+
if (gps_pos_valid(&gps_pos)) {
ans.flags |= I2C_IMUBOARD_STATUS_GPS_OK;
ans.latitude = gps_pos.latitude;
ans.altitude = gps_pos.altitude;
}
+ ans.roll = imu_pos.roll;
+ ans.pitch = imu_pos.pitch;
+ ans.yaw = imu_pos.yaw;
i2c_send(I2C_ADD_MASTER, (uint8_t *) &ans,
sizeof(ans), I2C_CTRL_GENERIC);
}