[modules] move sending of IMU_MAG_CURRENT_CALIBRATION to a module

This commit is contained in:
Felix Ruess
2013-11-06 18:13:07 +01:00
parent 90dcff721d
commit cd712fc907
10 changed files with 95 additions and 21 deletions
@@ -183,6 +183,7 @@
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
<load name="send_imu_mag_current.xml"/>
</modules>
<firmware name="rotorcraft">
@@ -185,6 +185,7 @@
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
<load name="send_imu_mag_current.xml"/>
</modules>
<firmware name="rotorcraft">
@@ -166,6 +166,7 @@
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
<load name="send_imu_mag_current.xml"/>
</modules>
<firmware name="rotorcraft">
+1
View File
@@ -31,6 +31,7 @@
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
<load name="send_imu_mag_current.xml"/>
</modules>
<commands>
@@ -186,6 +186,7 @@
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
<load name="send_imu_mag_current.xml"/>
</modules>
<firmware name="rotorcraft">
+17
View File
@@ -0,0 +1,17 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="calibration">
<doc>
<description>
Enables sending of IMU_MAG_CURRENT_CALIBRATION message.
For calibration of changing magnetometer offset due to estimated or measured current.
</description>
</doc>
<header>
<file name="send_imu_mag_current.h"/>
</header>
<periodic fun="send_imu_mag_current()" freq="20" autorun="FALSE"/>
<makefile>
<file name="send_imu_mag_current.c"/>
</makefile>
</module>
-7
View File
@@ -133,13 +133,6 @@
<message name="INS_REF" period="5.1"/>
</mode>
<mode name="mag_current_calibration">
<message name="ROTORCRAFT_STATUS" period="1.2"/>
<message name="DL_VALUE" period="0.5"/>
<message name="ALIVE" period="2.1"/>
<message name="IMU_MAG_CURRENT_CALIBRATION" period="0.05"/>
</mode>
</process>
</telemetry>
@@ -0,0 +1,41 @@
/*
* Copyright (C) 2013 Felix Ruess <felix.ruess@gmail.com>
*
* This file is part of paparazzi.
*
* paparazzi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* paparazzi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with paparazzi; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/**
* @file modules/calibration/send_imu_mag_current.c
* Enables sending of IMU_MAG_CURRENT_CALIBRATION message.
*/
#include "subsystems/imu.h"
#include "subsystems/electrical.h"
#include "messages.h"
#include "mcu_periph/uart.h"
#include "subsystems/datalink/downlink.h"
void send_imu_mag_current(void) {
DOWNLINK_SEND_IMU_MAG_CURRENT_CALIBRATION(DefaultChannel, DefaultDevice,
&imu.mag_unscaled.x,
&imu.mag_unscaled.y,
&imu.mag_unscaled.z,
&electrical.current);
}
@@ -0,0 +1,32 @@
/*
* Copyright (C) 2013 Felix Ruess <felix.ruess@gmail.com>
*
* This file is part of paparazzi.
*
* paparazzi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* paparazzi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with paparazzi; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/**
* @file modules/calibration/send_imu_mag_current_calib.h
* Enables sending of IMU_MAG_CURRENT_CALIBRATION message.
*/
#ifndef SEND_IMU_MAG_CURRENT_H
#define SEND_IMU_MAG_CURRENT_H
extern void send_imu_mag_current(void);
#endif
-14
View File
@@ -93,17 +93,6 @@ static void send_mag(void) {
DOWNLINK_SEND_IMU_MAG(DefaultChannel, DefaultDevice,
&mag_float.x, &mag_float.y, &mag_float.z);
}
// TODO this could be a special module ?
#if !defined(AP) || (defined(AP) && defined(FBW))
#include "subsystems/electrical.h"
static void send_mag_calib(void) {
DOWNLINK_SEND_IMU_MAG_CURRENT_CALIBRATION(DefaultChannel, DefaultDevice,
&imu.mag_unscaled.x, &imu.mag_unscaled.y, &imu.mag_unscaled.z,
&electrical.current);
}
#endif
#endif // !USE_IMU_FLOAT
#endif
@@ -153,9 +142,6 @@ INFO("Magnetometer neutrals are set to zero, you should calibrate!")
register_periodic_telemetry(DefaultPeriodic, "IMU_MAG_RAW", send_mag_raw);
register_periodic_telemetry(DefaultPeriodic, "IMU_MAG_SCALED", send_mag_scaled);
register_periodic_telemetry(DefaultPeriodic, "IMU_MAG", send_mag);
#if !defined(AP) || (defined(AP) && defined(FBW))
register_periodic_telemetry(DefaultPeriodic, "IMU_MAG_CURRENT_CALIBRATION", send_mag_calib);
#endif
#endif // !USE_IMU_FLOAT
#endif // DOWNLINK