paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [6019] move booz2_telemetry to rotorcraft and rename


From: Felix Ruess
Subject: [paparazzi-commits] [6019] move booz2_telemetry to rotorcraft and rename to telemetry
Date: Tue, 28 Sep 2010 16:56:07 +0000

Revision: 6019
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=6019
Author:   flixr
Date:     2010-09-28 16:56:07 +0000 (Tue, 28 Sep 2010)
Log Message:
-----------
move booz2_telemetry to rotorcraft and rename to telemetry

Modified Paths:
--------------
    paparazzi3/trunk/conf/autopilot/rotorcraft.makefile
    paparazzi3/trunk/conf/autopilot/subsystems/rotorcraft/fdm_nps.makefile
    paparazzi3/trunk/conf/settings/settings_booz2.xml
    paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/main.c

Added Paths:
-----------
    paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/telemetry.c
    paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/telemetry.h

Removed Paths:
-------------
    paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.c
    paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h

Modified: paparazzi3/trunk/conf/autopilot/rotorcraft.makefile
===================================================================
--- paparazzi3/trunk/conf/autopilot/rotorcraft.makefile 2010-09-28 16:40:39 UTC 
(rev 6018)
+++ paparazzi3/trunk/conf/autopilot/rotorcraft.makefile 2010-09-28 16:56:07 UTC 
(rev 6019)
@@ -91,7 +91,7 @@
 ap.srcs += $(SRC_ARCH)/uart_hw.c
 ap.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=PprzTransport
 ap.CFLAGS += -DDOWNLINK_DEVICE=$(MODEM_PORT)
-ap.srcs   += $(SRC_BOOZ)/booz2_telemetry.c \
+ap.srcs   += $(SRC_FIRMWARE)/telemetry.c \
                 downlink.c \
                         pprz_transport.c
 ap.CFLAGS += -DDATALINK=PPRZ

Modified: paparazzi3/trunk/conf/autopilot/subsystems/rotorcraft/fdm_nps.makefile
===================================================================
--- paparazzi3/trunk/conf/autopilot/subsystems/rotorcraft/fdm_nps.makefile      
2010-09-28 16:40:39 UTC (rev 6018)
+++ paparazzi3/trunk/conf/autopilot/subsystems/rotorcraft/fdm_nps.makefile      
2010-09-28 16:56:07 UTC (rev 6019)
@@ -29,21 +29,21 @@
 sim.CFLAGS  += -I$(SRC_FIRMWARE) -I$(SRC_BOOZ) -I$(SRC_BOOZ_SIM) 
-I$(SRC_BOARD) -I../simulator -I$(PAPARAZZI_HOME)/conf/simulator/nps
 
 sim.srcs = $(NPSDIR)/nps_main.c                      \
-          $(NPSDIR)/nps_fdm_jsbsim.c                \
-          $(NPSDIR)/nps_random.c                    \
-          $(NPSDIR)/nps_sensors.c                   \
-          $(NPSDIR)/nps_sensors_utils.c             \
-          $(NPSDIR)/nps_sensor_gyro.c               \
-          $(NPSDIR)/nps_sensor_accel.c              \
-          $(NPSDIR)/nps_sensor_mag.c                \
-          $(NPSDIR)/nps_sensor_baro.c               \
-          $(NPSDIR)/nps_sensor_gps.c                \
-          $(NPSDIR)/nps_radio_control.c             \
-          $(NPSDIR)/nps_radio_control_joystick.c    \
-          $(NPSDIR)/nps_radio_control_spektrum.c    \
-          $(NPSDIR)/nps_autopilot_booz.c            \
-          $(NPSDIR)/nps_ivy.c                       \
-          $(NPSDIR)/nps_flightgear.c                \
+       $(NPSDIR)/nps_fdm_jsbsim.c                \
+       $(NPSDIR)/nps_random.c                    \
+       $(NPSDIR)/nps_sensors.c                   \
+       $(NPSDIR)/nps_sensors_utils.c             \
+       $(NPSDIR)/nps_sensor_gyro.c               \
+       $(NPSDIR)/nps_sensor_accel.c              \
+       $(NPSDIR)/nps_sensor_mag.c                \
+       $(NPSDIR)/nps_sensor_baro.c               \
+       $(NPSDIR)/nps_sensor_gps.c                \
+       $(NPSDIR)/nps_radio_control.c             \
+       $(NPSDIR)/nps_radio_control_joystick.c    \
+       $(NPSDIR)/nps_radio_control_spektrum.c    \
+       $(NPSDIR)/nps_autopilot_booz.c            \
+       $(NPSDIR)/nps_ivy.c                       \
+       $(NPSDIR)/nps_flightgear.c                \
 
 
 sim.srcs += math/pprz_trig_int.c             \
@@ -63,8 +63,8 @@
 sim.srcs += sys_time.c
 
 
-sim.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=IvyTransport 
-sim.srcs += $(SRC_BOOZ)/booz2_telemetry.c \
+sim.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=IvyTransport
+sim.srcs += $(SRC_FIRMWARE)/telemetry.c \
             downlink.c \
             $(SRC_ARCH)/ivy_transport.c
 
@@ -94,7 +94,7 @@
 # in makefile section of airframe xml
 # include $(CFG_BOOZ)/subsystems/booz2_ahrs_lkf.makefile
 # or
-# include $(CFG_BOOZ)/subsystems/booz2_ahrs_cmpl.makefile 
+# include $(CFG_BOOZ)/subsystems/booz2_ahrs_cmpl.makefile
 #
 
 sim.srcs += $(SRC_FIRMWARE)/stabilization.c
@@ -152,5 +152,3 @@
 
 
 sim.srcs += $(SRC_BOOZ)/booz2_navigation.c
-
-

Modified: paparazzi3/trunk/conf/settings/settings_booz2.xml
===================================================================
--- paparazzi3/trunk/conf/settings/settings_booz2.xml   2010-09-28 16:40:39 UTC 
(rev 6018)
+++ paparazzi3/trunk/conf/settings/settings_booz2.xml   2010-09-28 16:56:07 UTC 
(rev 6019)
@@ -4,7 +4,7 @@
   <dl_settings>
 
     <dl_settings NAME="Misc">
-       <dl_setting var="telemetry_mode_Main_DefaultChannel" min="0" step="1" 
max="11" module="booz2_telemetry" shortname="telemetry" 
values="Default|PPM|Raw|Scaled|AHRS|Rate|Attitude|Vertical|Horizontal|Aligner|HS_att_roll|Tune_hover">
+       <dl_setting var="telemetry_mode_Main_DefaultChannel" min="0" step="1" 
max="11" module="telemetry" shortname="telemetry" 
values="Default|PPM|Raw|Scaled|AHRS|Rate|Attitude|Vertical|Horizontal|Aligner|HS_att_roll|Tune_hover">
          <key_press key="d" value="0"/>
          <key_press key="v" value="7"/>
          <key_press key="h" value="8"/>

Deleted: paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.c
===================================================================
--- paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.c 2010-09-28 16:40:39 UTC 
(rev 6018)
+++ paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.c 2010-09-28 16:56:07 UTC 
(rev 6019)
@@ -1,28 +0,0 @@
-/*
- * $Id$
- *  
- * Copyright (C) 2008-2009 Antoine Drouin <address@hidden>
- *
- * 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. 
- */
-
-#include "booz2_telemetry.h"
-
-
-uint8_t telemetry_mode_Main_DefaultChannel = 
TELEMETRY_MODE_Main_DefaultChannel_default;
-

Deleted: paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h
===================================================================
--- paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h 2010-09-28 16:40:39 UTC 
(rev 6018)
+++ paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h 2010-09-28 16:56:07 UTC 
(rev 6019)
@@ -1,808 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 2008-2009 Antoine Drouin <address@hidden>
- *
- * 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.
- */
-
-#ifndef BOOZ2_TELEMETRY_H
-#define BOOZ2_TELEMETRY_H
-
-#include "std.h"
-#include "messages.h"
-#include "uart.h"
-
-#include "downlink.h"
-
-#ifdef USE_RADIO_CONTROL
-#include "booz_radio_control.h"
-#endif
-
-#include <firmwares/rotorcraft/autopilot.h>
-#include <firmwares/rotorcraft/guidance.h>
-
-#include <firmwares/rotorcraft/actuators.h>
-
-#ifndef TELEMETRY_STARTUP_DELAY
-#define TELEMETRY_STARTUP_DELAY 0
-#endif
-
-#define PERIODIC_SEND_ALIVE(_chan) DOWNLINK_SEND_ALIVE(_chan, 16, MD5SUM)
-
-#include <firmwares/rotorcraft/battery.h>
-#include <firmwares/rotorcraft/imu.h>
-#include "booz_gps.h"
-#include <firmwares/rotorcraft/ins.h>
-#include <firmwares/rotorcraft/ahrs.h>
-
-#include "i2c_hw.h"
-
-extern uint8_t telemetry_mode_Main_DefaultChannel;
-
-#ifdef USE_GPS
-#define PERIODIC_SEND_BOOZ_STATUS(_chan) {                             \
-    uint32_t imu_nb_err = 0;                                   \
-    uint8_t _twi_blmc_nb_err = 0;                                      \
-    DOWNLINK_SEND_BOOZ_STATUS(_chan,                                   \
-                             &imu_nb_err,                              \
-                             &_twi_blmc_nb_err,                        \
-                             &radio_control.status,                    \
-                             &booz_gps_state.fix,                      \
-                             &autopilot_mode,                  \
-                             &autopilot_in_flight,             \
-                             &autopilot_motors_on,             \
-                             &guidance_h_mode,                 \
-                             &guidance_v_mode,                 \
-                             &battery_voltage,                 \
-                             &cpu_time_sec                             \
-                             );                                        \
-  }
-#else /* !USE_GPS */
-#define PERIODIC_SEND_BOOZ_STATUS(_chan) {                             \
-    uint32_t imu_nb_err = 0;                                   \
-    uint8_t twi_blmc_nb_err = 0;                                       \
-    uint8_t  fix = BOOZ2_GPS_FIX_NONE;                                 \
-    DOWNLINK_SEND_BOOZ_STATUS(_chan,                                   \
-                             &imu_nb_err,                              \
-                             &twi_blmc_nb_err,                         \
-                             &radio_control.status,                    \
-                             &fix,                                     \
-                             &autopilot_mode,                  \
-                             &autopilot_in_flight,             \
-                             &autopilot_motors_on,             \
-                             &guidance_h_mode,                 \
-                             &guidance_v_mode,                 \
-                             &battery_voltage,                 \
-                             &cpu_time_sec                             \
-                             );                                        \
-  }
-#endif /* USE_GPS */
-
-#ifdef USE_RADIO_CONTROL
-#define PERIODIC_SEND_RC(_chan) DOWNLINK_SEND_RC(_chan, 
RADIO_CONTROL_NB_CHANNEL, radio_control.values)
-#if defined RADIO_CONTROL_KILL_SWITCH
-#define PERIODIC_SEND_BOOZ2_RADIO_CONTROL(_chan) SEND_BOOZ2_RADIO_CONTROL( 
_chan, &radio_control.values[RADIO_CONTROL_KILL_SWITCH])
-#else /* ! RADIO_CONTROL_KILL_SWITCH */
-#define PERIODIC_SEND_BOOZ2_RADIO_CONTROL(_chan) {                             
            \
-    int16_t foo = -42;                                                         
            \
-    SEND_BOOZ2_RADIO_CONTROL( _chan, &foo)                                     
            \
-}
-#endif /* !RADIO_CONTROL_KILL_SWITCH */
-#define SEND_BOOZ2_RADIO_CONTROL(_chan, _kill_switch) {                        
                    \
-    DOWNLINK_SEND_BOOZ2_RADIO_CONTROL(_chan,                                   
            \
-                                     
&radio_control.values[RADIO_CONTROL_ROLL],            \
-                                     
&radio_control.values[RADIO_CONTROL_PITCH],           \
-                                     &radio_control.values[RADIO_CONTROL_YAW], 
            \
-                                     
&radio_control.values[RADIO_CONTROL_THROTTLE],        \
-                                     
&radio_control.values[RADIO_CONTROL_MODE],            \
-                                     _kill_switch,                             
           \
-                                     &radio_control.status);}
-#else /* ! USE_RADIO_CONTROL */
-#define PERIODIC_SEND_RC(_chan) {}
-#define PERIODIC_SEND_BOOZ2_RADIO_CONTROL(_chan) {}
-#endif
-
-#ifdef RADIO_CONTROL_TYPE_PPM
-#define PERIODIC_SEND_PPM(_chan)                                       \
-  DOWNLINK_SEND_PPM(_chan,                                             \
-                   &radio_control.frame_rate,                          \
-                   RADIO_CONTROL_NB_CHANNEL,                           \
-                   booz_radio_control_ppm_pulses)
-#else
-#define PERIODIC_SEND_PPM(_chan) {}
-#endif
-
-#define PERIODIC_SEND_BOOZ2_GYRO(_chan) {              \
-    DOWNLINK_SEND_BOOZ2_GYRO(_chan,                    \
-                            &imu.gyro.p,               \
-                            &imu.gyro.q,               \
-                            &imu.gyro.r);              \
-  }
-
-#define PERIODIC_SEND_BOOZ2_ACCEL(_chan) {                     \
-    DOWNLINK_SEND_BOOZ2_ACCEL(_chan,                           \
-                             &imu.accel.x,             \
-                             &imu.accel.y,             \
-                             &imu.accel.z);            \
-  }
-
-#define PERIODIC_SEND_BOOZ2_MAG(_chan) {                       \
-    DOWNLINK_SEND_BOOZ2_MAG(_chan,                             \
-                           &imu.mag.x,                 \
-                           &imu.mag.y,                 \
-                           &imu.mag.z);                        \
-  }
-
-#define PERIODIC_SEND_IMU_GYRO_RAW(_chan) {                            \
-    DOWNLINK_SEND_IMU_GYRO_RAW(_chan,                                  \
-                              &imu.gyro_unscaled.p,            \
-                              &imu.gyro_unscaled.q,            \
-                              &imu.gyro_unscaled.r);           \
-  }
-
-#define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) {                           \
-    DOWNLINK_SEND_IMU_ACCEL_RAW(_chan,                                 \
-                               &imu.accel_unscaled.x,          \
-                               &imu.accel_unscaled.y,          \
-                               &imu.accel_unscaled.z);         \
-  }
-
-#define PERIODIC_SEND_IMU_MAG_RAW(_chan) {                             \
-    DOWNLINK_SEND_IMU_MAG_RAW(_chan,                                   \
-                             &imu.mag_unscaled.x,                      \
-                             &imu.mag_unscaled.y,                      \
-                             &imu.mag_unscaled.z);             \
-  }
-
-/* FIXME: make that depend on board */
-#define PERIODIC_SEND_BOOZ_BARO_RAW(_chan) {                           \
-    DOWNLINK_SEND_BOOZ2_BARO_RAW(_chan,                                        
\
-                                &baro_board.offset,                    \
-                                &baro.absolute,                        \
-                                &baro_board.value_filtered);           \
-  }
-
-
-#define PERIODIC_SEND_BARO_RAW(_chan) {                                        
\
-    DOWNLINK_SEND_BARO_RAW(_chan,                                      \
-                          &baro.absolute,                              \
-                          &baro.differential);                         \
-  }
-
-
-
-
-#include <firmwares/rotorcraft/stabilization.h>
-#define PERIODIC_SEND_BOOZ2_RATE_LOOP(_chan) {                          \
-    DOWNLINK_SEND_BOOZ2_RATE_LOOP(_chan,                                \
-                                  &stabilization_rate_sp.p,        \
-                                  &stabilization_rate_sp.q,        \
-                                  &stabilization_rate_sp.r,        \
-                                  &stabilization_rate_ref.p,       \
-                                  &stabilization_rate_ref.q,       \
-                                  &stabilization_rate_ref.r,       \
-                                  &stabilization_rate_refdot.p,    \
-                                  &stabilization_rate_refdot.q,    \
-                                  &stabilization_rate_refdot.r,    \
-                                  &stabilization_rate_sum_err.p,    \
-                                  &stabilization_rate_sum_err.q,    \
-                                  &stabilization_rate_sum_err.r,    \
-                                  &stabilization_rate_ff_cmd.p,    \
-                                  &stabilization_rate_ff_cmd.q,    \
-                                  &stabilization_rate_ff_cmd.r,    \
-                                  &stabilization_rate_fb_cmd.p,    \
-                                  &stabilization_rate_fb_cmd.q,    \
-                                  &stabilization_rate_fb_cmd.r,    \
-                                  &stabilization_cmd[COMMAND_THRUST]); \
-  }
-
-#ifdef STABILISATION_ATTITUDE_TYPE_INT
-#define PERIODIC_SEND_BOOZ2_STAB_ATTITUDE(_chan) {                     \
-    DOWNLINK_SEND_BOOZ2_STAB_ATTITUDE_INT(_chan,                       \
-                                         &ahrs.body_rate.p,    \
-                                         &ahrs.body_rate.q,    \
-                                         &ahrs.body_rate.r,    \
-                                         &ahrs.ltp_to_body_euler.phi, \
-                                         &ahrs.ltp_to_body_euler.theta, \
-                                         &ahrs.ltp_to_body_euler.psi, \
-                                         &booz_stab_att_sp_euler.phi, \
-                                         &booz_stab_att_sp_euler.theta, \
-                                         &booz_stab_att_sp_euler.psi, \
-                                         &stabilization_att_sum_err.phi, \
-                                         &stabilization_att_sum_err.theta, \
-                                         &stabilization_att_sum_err.psi, \
-                                         
&stabilization_att_fb_cmd[COMMAND_ROLL], \
-                                         
&stabilization_att_fb_cmd[COMMAND_PITCH], \
-                                         
&stabilization_att_fb_cmd[COMMAND_YAW], \
-                                         
&stabilization_att_ff_cmd[COMMAND_ROLL], \
-                                         
&stabilization_att_ff_cmd[COMMAND_PITCH], \
-                                         
&stabilization_att_ff_cmd[COMMAND_YAW], \
-                                         &stabilization_cmd[COMMAND_ROLL], \
-                                         &stabilization_cmd[COMMAND_PITCH], \
-                                         &stabilization_cmd[COMMAND_YAW]); \
-  }
-
-
-#define PERIODIC_SEND_BOOZ2_STAB_ATTITUDE_REF(_chan) {                 \
-    DOWNLINK_SEND_BOOZ2_STAB_ATTITUDE_REF_INT(_chan,                   \
-                                             &booz_stab_att_sp_euler.phi, \
-                                             &booz_stab_att_sp_euler.theta, \
-                                             &booz_stab_att_sp_euler.psi, \
-                                             &booz_stab_att_ref_euler.phi, \
-                                             &booz_stab_att_ref_euler.theta, \
-                                             &booz_stab_att_ref_euler.psi, \
-                                             &booz_stab_att_ref_rate.p, \
-                                             &booz_stab_att_ref_rate.q, \
-                                             &booz_stab_att_ref_rate.r, \
-                                             &booz_stab_att_ref_accel.p, \
-                                             &booz_stab_att_ref_accel.q, \
-                                             &booz_stab_att_ref_accel.r); \
-  }
-#endif /* STABILISATION_ATTITUDE_TYPE_INT */
-
-#ifdef STABILISATION_ATTITUDE_TYPE_FLOAT
-#define PERIODIC_SEND_BOOZ2_STAB_ATTITUDE(_chan) {                     \
-    DOWNLINK_SEND_BOOZ2_STAB_ATTITUDE_FLOAT(_chan,                     \
-                                           &ahrs_float.body_rate.p,    \
-                                           &ahrs_float.body_rate.q,    \
-                                           &ahrs_float.body_rate.r,    \
-                                           &ahrs_float.ltp_to_body_euler.phi, \
-                                           
&ahrs_float.ltp_to_body_euler.theta, \
-                                           &ahrs_float.ltp_to_body_euler.psi, \
-                                           &booz_stab_att_ref_euler.phi, \
-                                           &booz_stab_att_ref_euler.theta, \
-                                           &booz_stab_att_ref_euler.psi, \
-                                           &stabilization_att_sum_err.phi, \
-                                           &stabilization_att_sum_err.theta, \
-                                           &stabilization_att_sum_err.psi, \
-                                           
&stabilization_att_fb_cmd[COMMAND_ROLL], \
-                                           
&stabilization_att_fb_cmd[COMMAND_PITCH], \
-                                           
&stabilization_att_fb_cmd[COMMAND_YAW], \
-                                           
&stabilization_att_ff_cmd[COMMAND_ROLL], \
-                                           
&stabilization_att_ff_cmd[COMMAND_PITCH], \
-                                           
&stabilization_att_ff_cmd[COMMAND_YAW], \
-                                           &stabilization_cmd[COMMAND_ROLL], \
-                                           &stabilization_cmd[COMMAND_PITCH], \
-                                           &stabilization_cmd[COMMAND_YAW]); \
-  }
-
-#define PERIODIC_SEND_BOOZ2_STAB_ATTITUDE_REF(_chan) {                 \
-    DOWNLINK_SEND_BOOZ2_STAB_ATTITUDE_REF_FLOAT(_chan,                 \
-                                               &booz_stab_att_sp_euler.phi, \
-                                               &booz_stab_att_sp_euler.theta, \
-                                               &booz_stab_att_sp_euler.psi, \
-                                               &booz_stab_att_ref_euler.phi, \
-                                               &booz_stab_att_ref_euler.theta, 
\
-                                               &booz_stab_att_ref_euler.psi, \
-                                               &booz_stab_att_ref_rate.p,      
\
-                                               &booz_stab_att_ref_rate.q,      
\
-                                               &booz_stab_att_ref_rate.r,      
\
-                                               &booz_stab_att_ref_accel.p, \
-                                               &booz_stab_att_ref_accel.q, \
-                                               &booz_stab_att_ref_accel.r); \
-  }
-
-#endif /* STABILISATION_ATTITUDE_TYPE_FLOAT */
-
-
-#include <firmwares/rotorcraft/ahrs/ahrs_aligner.h>
-#define PERIODIC_SEND_BOOZ2_FILTER_ALIGNER(_chan) {                    \
-    DOWNLINK_SEND_BOOZ2_FILTER_ALIGNER(_chan,                          \
-                                      &ahrs_aligner.lp_gyro.p, \
-                                      &ahrs_aligner.lp_gyro.q, \
-                                      &ahrs_aligner.lp_gyro.r, \
-                                      &imu.gyro.p,             \
-                                      &imu.gyro.q,             \
-                                      &imu.gyro.r,             \
-                                      &ahrs_aligner.noise,     \
-                                      &ahrs_aligner.low_noise_cnt); \
-  }
-
-
-#define PERIODIC_SEND_BOOZ2_CMD(_chan) {                               \
-    DOWNLINK_SEND_BOOZ2_CMD(_chan,                                     \
-                           &stabilization_cmd[COMMAND_ROLL],   \
-                           &stabilization_cmd[COMMAND_PITCH],  \
-                           &stabilization_cmd[COMMAND_YAW],    \
-                           &stabilization_cmd[COMMAND_THRUST]);        \
-  }
-
-
-#ifdef USE_AHRS_CMPL
-#include <firmwares/rotorcraft/ahrs/ahrs_cmpl_euler.h>
-#define PERIODIC_SEND_BOOZ2_FILTER(_chan) {                            \
-    DOWNLINK_SEND_BOOZ2_FILTER(_chan,                                  \
-                              &ahrs.ltp_to_imu_euler.phi,              \
-                              &ahrs.ltp_to_imu_euler.theta,    \
-                              &ahrs.ltp_to_imu_euler.psi,              \
-                              &face_measure.phi,                       \
-                              &face_measure.theta,             \
-                              &face_measure.psi,                       \
-                              &face_corrected.phi,             \
-                              &face_corrected.theta,           \
-                              &face_corrected.psi,             \
-                              &face_residual.phi,              \
-                              &face_residual.theta,            \
-                              &face_residual.psi,              \
-                              &face_gyro_bias.p,                       \
-                              &face_gyro_bias.q,                       \
-                              &face_gyro_bias.r);              \
-  }
-#else
-#define PERIODIC_SEND_BOOZ2_FILTER(_chan) {}
-#endif
-
-#ifdef USE_AHRS_LKF
-#include <firmwares/rotorcraft/ahrs.h>
-#include "ahrs/ahrs_float_lkf.h"
-#define PERIODIC_SEND_AHRS_LKF(_chan) {                                \
-    DOWNLINK_SEND_AHRS_LKF(&bafl_eulers.phi,                   \
-                               _chan,                                  \
-                               &bafl_eulers.theta,                     \
-                               &bafl_eulers.psi,                       \
-                               &bafl_quat.qi,                          \
-                               &bafl_quat.qx,                          \
-                               &bafl_quat.qy,                          \
-                               &bafl_quat.qz,                          \
-                               &bafl_rates.p,                          \
-                               &bafl_rates.q,                          \
-                               &bafl_rates.r,                          \
-                               &bafl_accel_measure.x,                  \
-                               &bafl_accel_measure.y,                  \
-                               &bafl_accel_measure.z,                  \
-                               &bafl_mag.x,                            \
-                               &bafl_mag.y,                            \
-                               &bafl_mag.z);                           \
-  }
-#define PERIODIC_SEND_AHRS_LKF_DEBUG(_chan) {             \
-    DOWNLINK_SEND_AHRS_LKF_DEBUG(_chan,                           \
-                                     &bafl_X[0],                  \
-                                     &bafl_X[1],                  \
-                                     &bafl_X[2],                  \
-                                     &bafl_bias.p,                \
-                                     &bafl_bias.q,                \
-                                     &bafl_bias.r,                \
-                                     &bafl_qnorm,                 \
-                                     &bafl_phi_accel,             \
-                                     &bafl_theta_accel,           \
-                                     &bafl_P[0][0],               \
-                                     &bafl_P[1][1],               \
-                                     &bafl_P[2][2],               \
-                                     &bafl_P[3][3],               \
-                                     &bafl_P[4][4],               \
-                                     &bafl_P[5][5]);              \
-  }
-#define PERIODIC_SEND_AHRS_LKF_ACC_DBG(_chan) {                    \
-    DOWNLINK_SEND_AHRS_LKF_ACC_DBG(_chan,                          \
-                                       &bafl_q_a_err.qi,           \
-                                       &bafl_q_a_err.qx,           \
-                                       &bafl_q_a_err.qy,           \
-                                       &bafl_q_a_err.qz,           \
-                                       &bafl_b_a_err.p,            \
-                                       &bafl_b_a_err.q,            \
-                                       &bafl_b_a_err.r);           \
-  }
-#define PERIODIC_SEND_AHRS_LKF_MAG_DBG(_chan) {            \
-    DOWNLINK_SEND_AHRS_LKF_MAG_DBG(_chan,                  \
-                                       &bafl_q_m_err.qi,   \
-                                       &bafl_q_m_err.qx,   \
-                                       &bafl_q_m_err.qy,   \
-                                       &bafl_q_m_err.qz,   \
-                                       &bafl_b_m_err.p,    \
-                                       &bafl_b_m_err.q,    \
-                                       &bafl_b_m_err.r);   \
-  }
-#else
-#define PERIODIC_SEND_AHRS_LKF(_chan) {}
-#define PERIODIC_SEND_AHRS_LKF_DEBUG(_chan) {}
-#define PERIODIC_SEND_AHRS_LKF_MAG_DBG(_chan) {}
-#define PERIODIC_SEND_AHRS_LKF_ACC_DBG(_chan) {}
-#endif
-
-
-#define PERIODIC_SEND_BOOZ2_AHRS_QUAT(_chan) {                         \
-    DOWNLINK_SEND_BOOZ2_AHRS_QUAT(_chan,                               \
-                                 &ahrs.ltp_to_imu_quat.qi,     \
-                                 &ahrs.ltp_to_imu_quat.qx,     \
-                                 &ahrs.ltp_to_imu_quat.qy,     \
-                                 &ahrs.ltp_to_imu_quat.qz,     \
-                                 &ahrs.ltp_to_body_quat.qi,    \
-                                 &ahrs.ltp_to_body_quat.qx,    \
-                                 &ahrs.ltp_to_body_quat.qy,    \
-                                 &ahrs.ltp_to_body_quat.qz);   \
-  }
-
-#define PERIODIC_SEND_BOOZ2_AHRS_EULER(_chan) {                                
\
-    DOWNLINK_SEND_BOOZ2_AHRS_EULER(_chan,                              \
-                                  &ahrs.ltp_to_imu_euler.phi,  \
-                                  &ahrs.ltp_to_imu_euler.theta,        \
-                                  &ahrs.ltp_to_imu_euler.psi,  \
-                                  &ahrs.ltp_to_body_euler.phi, \
-                                  &ahrs.ltp_to_body_euler.theta,       \
-                                  &ahrs.ltp_to_body_euler.psi);        \
-  }
-
-#define PERIODIC_SEND_BOOZ2_AHRS_RMAT(_chan) {                         \
-    DOWNLINK_SEND_BOOZ2_AHRS_RMAT(_chan,                               \
-                                 &ahrs.ltp_to_imu_rmat.m[0],   \
-                                 &ahrs.ltp_to_imu_rmat.m[1],   \
-                                 &ahrs.ltp_to_imu_rmat.m[2],   \
-                                 &ahrs.ltp_to_imu_rmat.m[3],   \
-                                 &ahrs.ltp_to_imu_rmat.m[4],   \
-                                 &ahrs.ltp_to_imu_rmat.m[5],   \
-                                 &ahrs.ltp_to_imu_rmat.m[6],   \
-                                 &ahrs.ltp_to_imu_rmat.m[7],   \
-                                 &ahrs.ltp_to_imu_rmat.m[8],   \
-                                 &ahrs.ltp_to_body_rmat.m[0],  \
-                                 &ahrs.ltp_to_body_rmat.m[1],  \
-                                 &ahrs.ltp_to_body_rmat.m[2],  \
-                                 &ahrs.ltp_to_body_rmat.m[3],  \
-                                 &ahrs.ltp_to_body_rmat.m[4],  \
-                                 &ahrs.ltp_to_body_rmat.m[5],  \
-                                 &ahrs.ltp_to_body_rmat.m[6],  \
-                                 &ahrs.ltp_to_body_rmat.m[7],  \
-                                 &ahrs.ltp_to_body_rmat.m[8]); \
-  }
-
-
-
-
-#define PERIODIC_SEND_BOOZ2_FILTER_Q(_chan) {                          \
-    DOWNLINK_SEND_BOOZ2_FILTER_Q(_chan,                                        
\
-                                &booz2_filter_attitude_quat.qi,        \
-                                &booz2_filter_attitude_quat.qx,        \
-                                &booz2_filter_attitude_quat.qy,        \
-                                &booz2_filter_attitude_quat.qz);       \
-  }
-
-#ifdef USE_VFF
-#include <firmwares/rotorcraft/ins/vf_float.h>
-#define PERIODIC_SEND_VFF(_chan) {             \
-    DOWNLINK_SEND_VFF(_chan,                   \
-                           &vff_z_meas,                \
-                           &vff_z,                     \
-                           &vff_zdot,          \
-                           &vff_bias,          \
-                           & vff_P[0][0],              \
-                           & vff_P[1][1],              \
-                           & vff_P[2][2]);             \
-  }
-#else
-#define PERIODIC_SEND_VFF(_chan) {}
-#endif
-
-#ifdef USE_HFF
-#include  <firmwares/rotorcraft/ins/hf_float.h>
-#define PERIODIC_SEND_HFF(_chan) {     \
-    DOWNLINK_SEND_HFF(_chan,           \
-                            &b2_hff_state.x,                   \
-                            &b2_hff_state.y,                   \
-                            &b2_hff_state.xdot,         \
-                            &b2_hff_state.ydot,                        \
-                            &b2_hff_state.xdotdot,      \
-                            &b2_hff_state.ydotdot);     \
-  }
-#define PERIODIC_SEND_HFF_DBG(_chan) {                \
-       DOWNLINK_SEND_HFF_DBG(_chan,                      \
-                                &b2_hff_x_meas,             \
-                                &b2_hff_y_meas,             \
-                                &b2_hff_xd_meas,            \
-                                &b2_hff_yd_meas,            \
-                                &b2_hff_state.xP[0][0],     \
-                                &b2_hff_state.yP[0][0],     \
-                                &b2_hff_state.xP[1][1],     \
-                                &b2_hff_state.yP[1][1]);    \
-  }
-#ifdef GPS_LAG
-#define PERIODIC_SEND_HFF_GPS(_chan) { \
-    DOWNLINK_SEND_HFF_GPS(_chan,                       \
-                                                         
&b2_hff_rb_last->lag_counter,         \
-                                                         &lag_counter_err,     
\
-                                                         &save_counter);       
\
-  }
-#else
-#define PERIODIC_SEND_HFF_GPS(_chan) {}
-#endif
-#else
-#define PERIODIC_SEND_HFF(_chan) {}
-#define PERIODIC_SEND_HFF_DBG(_chan) {}
-#define PERIODIC_SEND_HFF_GPS(_chan) {}
-#endif
-
-#define PERIODIC_SEND_GUIDANCE(_chan) {                                \
-    DOWNLINK_SEND_GUIDANCE(_chan,                                      \
-                                &guidance_h_cur_pos.x,         \
-                                &guidance_h_cur_pos.y,         \
-                                &guidance_h_held_pos.x,                \
-                                &guidance_h_held_pos.y);               \
-  }
-
-#define PERIODIC_SEND_INS(_chan) {                             \
-    DOWNLINK_SEND_INS(_chan,                                   \
-                           &ins_baro_alt,                              \
-                           &ins_ltp_pos.z,                     \
-                           &ins_ltp_speed.z,                   \
-                           &ins_ltp_accel.z);                  \
-  }
-
-
-#define PERIODIC_SEND_INS2(_chan) {                    \
-    struct Int32Vect3 pos_low_res;                             \
-    pos_low_res.x = (int32_t)(b2ins_pos_ltp.x>>20);            \
-    pos_low_res.y = (int32_t)(b2ins_pos_ltp.y>>20);            \
-    pos_low_res.z = (int32_t)(b2ins_pos_ltp.z>>20);            \
-    DOWNLINK_SEND_INS2(_chan,                          \
-                            &b2ins_accel_ltp.x,                \
-                            &b2ins_accel_ltp.y,                \
-                            &b2ins_accel_ltp.z,                \
-                            &b2ins_speed_ltp.x,                \
-                            &b2ins_speed_ltp.y,                \
-                            &b2ins_speed_ltp.z,                \
-                            &pos_low_res.x,                    \
-                            &pos_low_res.y,                    \
-                            &pos_low_res.z                     \
-                            );                                 \
-  }
-
-#ifdef USE_GPS
-#include <firmwares/rotorcraft/ins/hf_float.h>
-#define PERIODIC_SEND_INS3(_chan) {                            \
-    DOWNLINK_SEND_INS3(_chan,                                  \
-                            &b2ins_meas_gps_pos_ned.x,                 \
-                            &b2ins_meas_gps_pos_ned.y,                 \
-                            &b2ins_meas_gps_pos_ned.z,                 \
-                            &b2ins_meas_gps_speed_ned.x,               \
-                            &b2ins_meas_gps_speed_ned.y,               \
-                            &b2ins_meas_gps_speed_ned.z                \
-                            );                                         \
-  }
-#else /* !USE_GPS */
-#define PERIODIC_SEND_INS3(_chan) {}
-#endif /* USE_GPS */
-
-#define PERIODIC_SEND_BOOZ_INS(_chan) {                        \
-    DOWNLINK_SEND_BOOZ_INS(_chan,                              \
-                                          &ins_ltp_pos.x,              \
-                                          &ins_ltp_pos.y,          \
-                                          &ins_ltp_pos.z,              \
-                                          &ins_ltp_speed.x,    \
-                                          &ins_ltp_speed.y,    \
-                                          &ins_ltp_speed.z,    \
-                                          &ins_ltp_accel.x,    \
-                                          &ins_ltp_accel.y,    \
-                                          &ins_ltp_accel.z);   \
-  }
-
-#define PERIODIC_SEND_INS_REF(_chan) {                         \
-    DOWNLINK_SEND_INS_REF(_chan,                                       \
-                               &ins_ltp_def.ecef.x,            \
-                               &ins_ltp_def.ecef.y,            \
-                               &ins_ltp_def.ecef.z,            \
-                               &ins_ltp_def.lla.lat,           \
-                               &ins_ltp_def.lla.lon,           \
-                               &ins_ltp_def.lla.alt,           \
-                               &ins_ltp_def.hmsl,              \
-                               &ins_qfe);                              \
-  }
-
-
-
-#define PERIODIC_SEND_BOOZ2_VERT_LOOP(_chan) {                         \
-    DOWNLINK_SEND_BOOZ2_VERT_LOOP(_chan,                               \
-                                 &guidance_v_z_sp,             \
-                                 &guidance_v_zd_sp,            \
-                                 &ins_ltp_pos.z,                       \
-                                 &ins_ltp_speed.z,             \
-                                 &ins_ltp_accel.z,             \
-                                 &guidance_v_z_ref,            \
-                                 &guidance_v_zd_ref,           \
-                                 &guidance_v_zdd_ref,          \
-                                 &gv_adapt_X,                  \
-                                 &gv_adapt_P,                  \
-                                 &gv_adapt_Xmeas,                      \
-                                 &guidance_v_z_sum_err,                \
-                                 &guidance_v_ff_cmd,           \
-                                 &guidance_v_fb_cmd,           \
-                                 &guidance_v_delta_t);         \
-  }
-
-#define PERIODIC_SEND_BOOZ2_HOVER_LOOP(_chan) {                                
\
-    DOWNLINK_SEND_BOOZ2_HOVER_LOOP(_chan,                              \
-                                  &guidance_h_pos_sp.x,                \
-                                  &guidance_h_pos_sp.y,                \
-                                  &ins_ltp_pos.x,                      \
-                                  &ins_ltp_pos.y,                      \
-                                  &ins_ltp_speed.x,            \
-                                  &ins_ltp_speed.y,            \
-                                  &ins_ltp_accel.x,            \
-                                  &ins_ltp_accel.y,            \
-                                  &guidance_h_pos_err.x,               \
-                                  &guidance_h_pos_err.y,               \
-                                  &guidance_h_speed_err.x,     \
-                                  &guidance_h_speed_err.y,     \
-                                  &guidance_h_pos_err_sum.x,   \
-                                  &guidance_h_pos_err_sum.y,   \
-                                  &guidance_h_nav_err.x,       \
-                                  &guidance_h_nav_err.y,       \
-                                  &guidance_h_command_earth.x, \
-                                  &guidance_h_command_earth.y, \
-                                  &guidance_h_command_body.phi,        \
-                                  &guidance_h_command_body.theta, \
-                                  &guidance_h_command_body.psi);       \
-  }
-
-#define PERIODIC_SEND_GUIDANCE_H_REF(_chan) { \
-  DOWNLINK_SEND_GUIDANCE_H_REF_INT(_chan, \
-      &guidance_h_pos_sp.x, \
-      &guidance_h_pos_ref.x, \
-      &guidance_h_speed_ref.x, \
-      &guidance_h_accel_ref.x, \
-      &guidance_h_pos_sp.y, \
-      &guidance_h_pos_ref.y, \
-      &guidance_h_speed_ref.y, \
-      &guidance_h_accel_ref.y); \
-}
-
-#include "booz_gps.h"
-#include "booz2_navigation.h"
-#define PERIODIC_SEND_BOOZ2_FP(_chan) {                                        
\
-    int32_t carrot_up = -guidance_v_z_sp;                              \
-    DOWNLINK_SEND_BOOZ2_FP( _chan,                                     \
-                           &ins_enu_pos.x,                     \
-                           &ins_enu_pos.y,                     \
-                           &ins_enu_pos.z,                     \
-                           &ins_enu_speed.x,                   \
-                           &ins_enu_speed.y,                   \
-                           &ins_enu_speed.z,                   \
-                           &ahrs.ltp_to_body_euler.phi,                \
-                           &ahrs.ltp_to_body_euler.theta,              \
-                           &ahrs.ltp_to_body_euler.psi,                \
-                           &guidance_h_pos_sp.y,                       \
-                           &guidance_h_pos_sp.x,                       \
-                           &carrot_up,                                 \
-                           &guidance_h_command_body.psi,               \
-                           &stabilization_cmd[COMMAND_THRUST], \
-          &autopilot_flight_time);     \
-  }
-
-#ifdef USE_GPS
-#define PERIODIC_SEND_BOOZ2_GPS(_chan) {                               \
-    DOWNLINK_SEND_BOOZ2_GPS( _chan,                                    \
-                            &booz_gps_state.ecef_pos.x,                \
-                            &booz_gps_state.ecef_pos.y,                \
-                            &booz_gps_state.ecef_pos.z,                \
-                            &booz_gps_state.lla_pos.lat,               \
-                            &booz_gps_state.lla_pos.lon,               \
-                            &booz_gps_state.lla_pos.alt,               \
-                            &booz_gps_state.ecef_vel.x,                \
-                            &booz_gps_state.ecef_vel.y,                \
-                            &booz_gps_state.ecef_vel.z,                \
-                            &booz_gps_state.pacc,                      \
-                            &booz_gps_state.sacc,                      \
-                            &booz_gps_state.tow,                       \
-                            &booz_gps_state.pdop,                      \
-                            &booz_gps_state.num_sv,                    \
-                            &booz_gps_state.fix);                      \
-  }
-#else
-#define PERIODIC_SEND_BOOZ2_GPS(_chan) {}
-#endif
-
-#include "booz2_navigation.h"
-#define PERIODIC_SEND_BOOZ2_NAV_STATUS(_chan) {                                
\
-    DOWNLINK_SEND_BOOZ2_NAV_STATUS(_chan,                              \
-                                  &block_time,                         \
-                                  &stage_time,                         \
-                                  &nav_block,                          \
-                                  &nav_stage,                          \
-                                  &horizontal_mode);                   \
-    if (horizontal_mode == HORIZONTAL_MODE_ROUTE) {                    \
-      float sx = POS_FLOAT_OF_BFP(waypoints[nav_segment_start].x);     \
-      float sy = POS_FLOAT_OF_BFP(waypoints[nav_segment_start].y);     \
-      float ex = POS_FLOAT_OF_BFP(waypoints[nav_segment_end].x);       \
-      float ey = POS_FLOAT_OF_BFP(waypoints[nav_segment_end].y);       \
-      DOWNLINK_SEND_SEGMENT(_chan, &sx, &sy, &ex, &ey);                        
\
-    }                                                                  \
-    else if (horizontal_mode == HORIZONTAL_MODE_CIRCLE) {                      
\
-      float cx = POS_FLOAT_OF_BFP(waypoints[nav_circle_centre].x);     \
-      float cy = POS_FLOAT_OF_BFP(waypoints[nav_circle_centre].y);     \
-      float r = POS_FLOAT_OF_BFP(nav_circle_radius); \
-      DOWNLINK_SEND_CIRCLE(_chan, &cx, &cy, &r);                       \
-    }                                                                  \
-  }
-
-#define PERIODIC_SEND_WP_MOVED(_chan) {                                        
\
-    static uint8_t i;                                                  \
-    i++; if (i >= nb_waypoint) i = 0;                                  \
-    DOWNLINK_SEND_WP_MOVED_ENU(_chan,                                  \
-                              &i,                                      \
-                              &(waypoints[i].x),                       \
-                              &(waypoints[i].y),                       \
-                              &(waypoints[i].z));                      \
-  }
-
-#ifdef USE_CAM
-#define PERIODIC_SEND_BOOZ2_CAM(_chan) 
DOWNLINK_SEND_BOOZ2_CAM(_chan,&booz_cam_tilt,&booz_cam_pan);
-#else
-#define PERIODIC_SEND_BOOZ2_CAM(_chan) {}
-#endif
-
-#define PERIODIC_SEND_BOOZ2_TUNE_HOVER(_chan) {                                
       \
-    DOWNLINK_SEND_BOOZ2_TUNE_HOVER(_chan,                                     \
-                                  &radio_control.values[RADIO_CONTROL_ROLL],  \
-                                  &radio_control.values[RADIO_CONTROL_PITCH], \
-                                  &radio_control.values[RADIO_CONTROL_YAW],   \
-                                  &stabilization_cmd[COMMAND_ROLL],      \
-                                  &stabilization_cmd[COMMAND_PITCH],     \
-                                  &stabilization_cmd[COMMAND_YAW],       \
-                                  &stabilization_cmd[COMMAND_THRUST],    \
-                                  &ahrs.ltp_to_imu_euler.phi,         \
-                                  &ahrs.ltp_to_imu_euler.theta,               \
-                                  &ahrs.ltp_to_imu_euler.psi,         \
-                                  &ahrs.ltp_to_body_euler.phi,        \
-                                  &ahrs.ltp_to_body_euler.theta,              \
-                                  &ahrs.ltp_to_body_euler.psi         \
-                                  );                                          \
-  }
-
-#define PERIODIC_SEND_I2C_ERRORS(_chan) {                                     \
-    DOWNLINK_SEND_I2C_ERRORS(_chan,                                   \
-                                  &i2c_errc_ack_fail,  \
-                                  &i2c_errc_miss_start_stop,  \
-                                  &i2c_errc_arb_lost,  \
-                                  &i2c_errc_over_under,  \
-                                  &i2c_errc_pec_recep,  \
-                                  &i2c_errc_timeout_tlow,  \
-                                  &i2c_errc_smbus_alert  \
-                                  );                                          \
-  }
-
-//TODO replace by BOOZ_EXTRA_ADC
-#ifdef BOOZ2_SONAR
-#define PERIODIC_SEND_BOOZ2_SONAR(_chan) 
DOWNLINK_SEND_BOOZ2_SONAR(_chan,&booz2_adc_1,&booz2_adc_2,&booz2_adc_3,&booz2_adc_4);
-#else
-#define PERIODIC_SEND_BOOZ2_SONAR(_chan) {}
-#endif
-
-#ifdef BOOZ2_TRACK_CAM
-#include "cam_track.h"
-#define PERIODIC_SEND_CAM_TRACK(_chan) DOWNLINK_SEND_BOOZ_SIM_SPEED_POS(_chan, 
\
-    &target_accel_ned.x, \
-    &target_accel_ned.y, \
-    &target_accel_ned.z, \
-    &target_speed_ned.x, \
-    &target_speed_ned.y, \
-    &target_speed_ned.z, \
-    &target_pos_ned.x, \
-    &target_pos_ned.y, \
-    &target_pos_ned.z)
-#else
-#define PERIODIC_SEND_CAM_TRACK(_chan) {}
-#endif
-
-#include "settings.h"
-#define PERIODIC_SEND_DL_VALUE(_chan) PeriodicSendDlValue(_chan)
-
-#include "periodic.h"
-#define Booz2TelemetryPeriodic() {                     \
-    PeriodicSendMain(DefaultChannel);                  \
-  }
-
-
-#endif /* BOOZ2_TELEMETRY_H */

Modified: paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/main.c
===================================================================
--- paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/main.c    2010-09-28 
16:40:39 UTC (rev 6018)
+++ paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/main.c    2010-09-28 
16:56:07 UTC (rev 6019)
@@ -31,7 +31,7 @@
 #include "interrupt_hw.h"
 
 #include "downlink.h"
-#include "booz2_telemetry.h"
+#include <firmwares/rotorcraft/telemetry.h>
 #include "datalink.h"
 
 #include "booz2_commands.h"

Copied: paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/telemetry.c (from rev 
6018, paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.c)
===================================================================
--- paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/telemetry.c               
                (rev 0)
+++ paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/telemetry.c       
2010-09-28 16:56:07 UTC (rev 6019)
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2008-2009 Antoine Drouin <address@hidden>
+ *
+ * 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.
+ */
+
+#include "telemetry.h"
+
+
+uint8_t telemetry_mode_Main_DefaultChannel = 
TELEMETRY_MODE_Main_DefaultChannel_default;

Copied: paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/telemetry.h (from rev 
6018, paparazzi3/trunk/sw/airborne/booz/booz2_telemetry.h)
===================================================================
--- paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/telemetry.h               
                (rev 0)
+++ paparazzi3/trunk/sw/airborne/firmwares/rotorcraft/telemetry.h       
2010-09-28 16:56:07 UTC (rev 6019)
@@ -0,0 +1,808 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2008-2009 Antoine Drouin <address@hidden>
+ *
+ * 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.
+ */
+
+#ifndef TELEMETRY_H
+#define TELEMETRY_H
+
+#include "std.h"
+#include "messages.h"
+#include "uart.h"
+
+#include "downlink.h"
+
+#ifdef USE_RADIO_CONTROL
+#include "booz_radio_control.h"
+#endif
+
+#include <firmwares/rotorcraft/autopilot.h>
+#include <firmwares/rotorcraft/guidance.h>
+
+#include <firmwares/rotorcraft/actuators.h>
+
+#ifndef TELEMETRY_STARTUP_DELAY
+#define TELEMETRY_STARTUP_DELAY 0
+#endif
+
+#define PERIODIC_SEND_ALIVE(_chan) DOWNLINK_SEND_ALIVE(_chan, 16, MD5SUM)
+
+#include <firmwares/rotorcraft/battery.h>
+#include <firmwares/rotorcraft/imu.h>
+#include "booz_gps.h"
+#include <firmwares/rotorcraft/ins.h>
+#include <firmwares/rotorcraft/ahrs.h>
+
+#include "i2c_hw.h"
+
+extern uint8_t telemetry_mode_Main_DefaultChannel;
+
+#ifdef USE_GPS
+#define PERIODIC_SEND_BOOZ_STATUS(_chan) {                             \
+    uint32_t imu_nb_err = 0;                                   \
+    uint8_t _twi_blmc_nb_err = 0;                                      \
+    DOWNLINK_SEND_BOOZ_STATUS(_chan,                                   \
+                             &imu_nb_err,                              \
+                             &_twi_blmc_nb_err,                        \
+                             &radio_control.status,                    \
+                             &booz_gps_state.fix,                      \
+                             &autopilot_mode,                  \
+                             &autopilot_in_flight,             \
+                             &autopilot_motors_on,             \
+                             &guidance_h_mode,                 \
+                             &guidance_v_mode,                 \
+                             &battery_voltage,                 \
+                             &cpu_time_sec                             \
+                             );                                        \
+  }
+#else /* !USE_GPS */
+#define PERIODIC_SEND_BOOZ_STATUS(_chan) {                             \
+    uint32_t imu_nb_err = 0;                                   \
+    uint8_t twi_blmc_nb_err = 0;                                       \
+    uint8_t  fix = BOOZ2_GPS_FIX_NONE;                                 \
+    DOWNLINK_SEND_BOOZ_STATUS(_chan,                                   \
+                             &imu_nb_err,                              \
+                             &twi_blmc_nb_err,                         \
+                             &radio_control.status,                    \
+                             &fix,                                     \
+                             &autopilot_mode,                  \
+                             &autopilot_in_flight,             \
+                             &autopilot_motors_on,             \
+                             &guidance_h_mode,                 \
+                             &guidance_v_mode,                 \
+                             &battery_voltage,                 \
+                             &cpu_time_sec                             \
+                             );                                        \
+  }
+#endif /* USE_GPS */
+
+#ifdef USE_RADIO_CONTROL
+#define PERIODIC_SEND_RC(_chan) DOWNLINK_SEND_RC(_chan, 
RADIO_CONTROL_NB_CHANNEL, radio_control.values)
+#if defined RADIO_CONTROL_KILL_SWITCH
+#define PERIODIC_SEND_BOOZ2_RADIO_CONTROL(_chan) SEND_BOOZ2_RADIO_CONTROL( 
_chan, &radio_control.values[RADIO_CONTROL_KILL_SWITCH])
+#else /* ! RADIO_CONTROL_KILL_SWITCH */
+#define PERIODIC_SEND_BOOZ2_RADIO_CONTROL(_chan) {                             
            \
+    int16_t foo = -42;                                                         
            \
+    SEND_BOOZ2_RADIO_CONTROL( _chan, &foo)                                     
            \
+}
+#endif /* !RADIO_CONTROL_KILL_SWITCH */
+#define SEND_BOOZ2_RADIO_CONTROL(_chan, _kill_switch) {                        
                    \
+    DOWNLINK_SEND_BOOZ2_RADIO_CONTROL(_chan,                                   
            \
+                                     
&radio_control.values[RADIO_CONTROL_ROLL],            \
+                                     
&radio_control.values[RADIO_CONTROL_PITCH],           \
+                                     &radio_control.values[RADIO_CONTROL_YAW], 
            \
+                                     
&radio_control.values[RADIO_CONTROL_THROTTLE],        \
+                                     
&radio_control.values[RADIO_CONTROL_MODE],            \
+                                     _kill_switch,                             
           \
+                                     &radio_control.status);}
+#else /* ! USE_RADIO_CONTROL */
+#define PERIODIC_SEND_RC(_chan) {}
+#define PERIODIC_SEND_BOOZ2_RADIO_CONTROL(_chan) {}
+#endif
+
+#ifdef RADIO_CONTROL_TYPE_PPM
+#define PERIODIC_SEND_PPM(_chan)                                       \
+  DOWNLINK_SEND_PPM(_chan,                                             \
+                   &radio_control.frame_rate,                          \
+                   RADIO_CONTROL_NB_CHANNEL,                           \
+                   booz_radio_control_ppm_pulses)
+#else
+#define PERIODIC_SEND_PPM(_chan) {}
+#endif
+
+#define PERIODIC_SEND_BOOZ2_GYRO(_chan) {              \
+    DOWNLINK_SEND_BOOZ2_GYRO(_chan,                    \
+                            &imu.gyro.p,               \
+                            &imu.gyro.q,               \
+                            &imu.gyro.r);              \
+  }
+
+#define PERIODIC_SEND_BOOZ2_ACCEL(_chan) {                     \
+    DOWNLINK_SEND_BOOZ2_ACCEL(_chan,                           \
+                             &imu.accel.x,             \
+                             &imu.accel.y,             \
+                             &imu.accel.z);            \
+  }
+
+#define PERIODIC_SEND_BOOZ2_MAG(_chan) {                       \
+    DOWNLINK_SEND_BOOZ2_MAG(_chan,                             \
+                           &imu.mag.x,                 \
+                           &imu.mag.y,                 \
+                           &imu.mag.z);                        \
+  }
+
+#define PERIODIC_SEND_IMU_GYRO_RAW(_chan) {                            \
+    DOWNLINK_SEND_IMU_GYRO_RAW(_chan,                                  \
+                              &imu.gyro_unscaled.p,            \
+                              &imu.gyro_unscaled.q,            \
+                              &imu.gyro_unscaled.r);           \
+  }
+
+#define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) {                           \
+    DOWNLINK_SEND_IMU_ACCEL_RAW(_chan,                                 \
+                               &imu.accel_unscaled.x,          \
+                               &imu.accel_unscaled.y,          \
+                               &imu.accel_unscaled.z);         \
+  }
+
+#define PERIODIC_SEND_IMU_MAG_RAW(_chan) {                             \
+    DOWNLINK_SEND_IMU_MAG_RAW(_chan,                                   \
+                             &imu.mag_unscaled.x,                      \
+                             &imu.mag_unscaled.y,                      \
+                             &imu.mag_unscaled.z);             \
+  }
+
+/* FIXME: make that depend on board */
+#define PERIODIC_SEND_BOOZ_BARO_RAW(_chan) {                           \
+    DOWNLINK_SEND_BOOZ2_BARO_RAW(_chan,                                        
\
+                                &baro_board.offset,                    \
+                                &baro.absolute,                        \
+                                &baro_board.value_filtered);           \
+  }
+
+
+#define PERIODIC_SEND_BARO_RAW(_chan) {                                        
\
+    DOWNLINK_SEND_BARO_RAW(_chan,                                      \
+                          &baro.absolute,                              \
+                          &baro.differential);                         \
+  }
+
+
+
+
+#include <firmwares/rotorcraft/stabilization.h>
+#define PERIODIC_SEND_BOOZ2_RATE_LOOP(_chan) {                          \
+    DOWNLINK_SEND_BOOZ2_RATE_LOOP(_chan,                                \
+                                  &stabilization_rate_sp.p,        \
+                                  &stabilization_rate_sp.q,        \
+                                  &stabilization_rate_sp.r,        \
+                                  &stabilization_rate_ref.p,       \
+                                  &stabilization_rate_ref.q,       \
+                                  &stabilization_rate_ref.r,       \
+                                  &stabilization_rate_refdot.p,    \
+                                  &stabilization_rate_refdot.q,    \
+                                  &stabilization_rate_refdot.r,    \
+                                  &stabilization_rate_sum_err.p,    \
+                                  &stabilization_rate_sum_err.q,    \
+                                  &stabilization_rate_sum_err.r,    \
+                                  &stabilization_rate_ff_cmd.p,    \
+                                  &stabilization_rate_ff_cmd.q,    \
+                                  &stabilization_rate_ff_cmd.r,    \
+                                  &stabilization_rate_fb_cmd.p,    \
+                                  &stabilization_rate_fb_cmd.q,    \
+                                  &stabilization_rate_fb_cmd.r,    \
+                                  &stabilization_cmd[COMMAND_THRUST]); \
+  }
+
+#ifdef STABILISATION_ATTITUDE_TYPE_INT
+#define PERIODIC_SEND_BOOZ2_STAB_ATTITUDE(_chan) {                     \
+    DOWNLINK_SEND_BOOZ2_STAB_ATTITUDE_INT(_chan,                       \
+                                         &ahrs.body_rate.p,    \
+                                         &ahrs.body_rate.q,    \
+                                         &ahrs.body_rate.r,    \
+                                         &ahrs.ltp_to_body_euler.phi, \
+                                         &ahrs.ltp_to_body_euler.theta, \
+                                         &ahrs.ltp_to_body_euler.psi, \
+                                         &booz_stab_att_sp_euler.phi, \
+                                         &booz_stab_att_sp_euler.theta, \
+                                         &booz_stab_att_sp_euler.psi, \
+                                         &stabilization_att_sum_err.phi, \
+                                         &stabilization_att_sum_err.theta, \
+                                         &stabilization_att_sum_err.psi, \
+                                         
&stabilization_att_fb_cmd[COMMAND_ROLL], \
+                                         
&stabilization_att_fb_cmd[COMMAND_PITCH], \
+                                         
&stabilization_att_fb_cmd[COMMAND_YAW], \
+                                         
&stabilization_att_ff_cmd[COMMAND_ROLL], \
+                                         
&stabilization_att_ff_cmd[COMMAND_PITCH], \
+                                         
&stabilization_att_ff_cmd[COMMAND_YAW], \
+                                         &stabilization_cmd[COMMAND_ROLL], \
+                                         &stabilization_cmd[COMMAND_PITCH], \
+                                         &stabilization_cmd[COMMAND_YAW]); \
+  }
+
+
+#define PERIODIC_SEND_BOOZ2_STAB_ATTITUDE_REF(_chan) {                 \
+    DOWNLINK_SEND_BOOZ2_STAB_ATTITUDE_REF_INT(_chan,                   \
+                                             &booz_stab_att_sp_euler.phi, \
+                                             &booz_stab_att_sp_euler.theta, \
+                                             &booz_stab_att_sp_euler.psi, \
+                                             &booz_stab_att_ref_euler.phi, \
+                                             &booz_stab_att_ref_euler.theta, \
+                                             &booz_stab_att_ref_euler.psi, \
+                                             &booz_stab_att_ref_rate.p, \
+                                             &booz_stab_att_ref_rate.q, \
+                                             &booz_stab_att_ref_rate.r, \
+                                             &booz_stab_att_ref_accel.p, \
+                                             &booz_stab_att_ref_accel.q, \
+                                             &booz_stab_att_ref_accel.r); \
+  }
+#endif /* STABILISATION_ATTITUDE_TYPE_INT */
+
+#ifdef STABILISATION_ATTITUDE_TYPE_FLOAT
+#define PERIODIC_SEND_BOOZ2_STAB_ATTITUDE(_chan) {                     \
+    DOWNLINK_SEND_BOOZ2_STAB_ATTITUDE_FLOAT(_chan,                     \
+                                           &ahrs_float.body_rate.p,    \
+                                           &ahrs_float.body_rate.q,    \
+                                           &ahrs_float.body_rate.r,    \
+                                           &ahrs_float.ltp_to_body_euler.phi, \
+                                           
&ahrs_float.ltp_to_body_euler.theta, \
+                                           &ahrs_float.ltp_to_body_euler.psi, \
+                                           &booz_stab_att_ref_euler.phi, \
+                                           &booz_stab_att_ref_euler.theta, \
+                                           &booz_stab_att_ref_euler.psi, \
+                                           &stabilization_att_sum_err.phi, \
+                                           &stabilization_att_sum_err.theta, \
+                                           &stabilization_att_sum_err.psi, \
+                                           
&stabilization_att_fb_cmd[COMMAND_ROLL], \
+                                           
&stabilization_att_fb_cmd[COMMAND_PITCH], \
+                                           
&stabilization_att_fb_cmd[COMMAND_YAW], \
+                                           
&stabilization_att_ff_cmd[COMMAND_ROLL], \
+                                           
&stabilization_att_ff_cmd[COMMAND_PITCH], \
+                                           
&stabilization_att_ff_cmd[COMMAND_YAW], \
+                                           &stabilization_cmd[COMMAND_ROLL], \
+                                           &stabilization_cmd[COMMAND_PITCH], \
+                                           &stabilization_cmd[COMMAND_YAW]); \
+  }
+
+#define PERIODIC_SEND_BOOZ2_STAB_ATTITUDE_REF(_chan) {                 \
+    DOWNLINK_SEND_BOOZ2_STAB_ATTITUDE_REF_FLOAT(_chan,                 \
+                                               &booz_stab_att_sp_euler.phi, \
+                                               &booz_stab_att_sp_euler.theta, \
+                                               &booz_stab_att_sp_euler.psi, \
+                                               &booz_stab_att_ref_euler.phi, \
+                                               &booz_stab_att_ref_euler.theta, 
\
+                                               &booz_stab_att_ref_euler.psi, \
+                                               &booz_stab_att_ref_rate.p,      
\
+                                               &booz_stab_att_ref_rate.q,      
\
+                                               &booz_stab_att_ref_rate.r,      
\
+                                               &booz_stab_att_ref_accel.p, \
+                                               &booz_stab_att_ref_accel.q, \
+                                               &booz_stab_att_ref_accel.r); \
+  }
+
+#endif /* STABILISATION_ATTITUDE_TYPE_FLOAT */
+
+
+#include <firmwares/rotorcraft/ahrs/ahrs_aligner.h>
+#define PERIODIC_SEND_BOOZ2_FILTER_ALIGNER(_chan) {                    \
+    DOWNLINK_SEND_BOOZ2_FILTER_ALIGNER(_chan,                          \
+                                      &ahrs_aligner.lp_gyro.p, \
+                                      &ahrs_aligner.lp_gyro.q, \
+                                      &ahrs_aligner.lp_gyro.r, \
+                                      &imu.gyro.p,             \
+                                      &imu.gyro.q,             \
+                                      &imu.gyro.r,             \
+                                      &ahrs_aligner.noise,     \
+                                      &ahrs_aligner.low_noise_cnt); \
+  }
+
+
+#define PERIODIC_SEND_BOOZ2_CMD(_chan) {                               \
+    DOWNLINK_SEND_BOOZ2_CMD(_chan,                                     \
+                           &stabilization_cmd[COMMAND_ROLL],   \
+                           &stabilization_cmd[COMMAND_PITCH],  \
+                           &stabilization_cmd[COMMAND_YAW],    \
+                           &stabilization_cmd[COMMAND_THRUST]);        \
+  }
+
+
+#ifdef USE_AHRS_CMPL
+#include <firmwares/rotorcraft/ahrs/ahrs_cmpl_euler.h>
+#define PERIODIC_SEND_BOOZ2_FILTER(_chan) {                            \
+    DOWNLINK_SEND_BOOZ2_FILTER(_chan,                                  \
+                              &ahrs.ltp_to_imu_euler.phi,              \
+                              &ahrs.ltp_to_imu_euler.theta,    \
+                              &ahrs.ltp_to_imu_euler.psi,              \
+                              &face_measure.phi,                       \
+                              &face_measure.theta,             \
+                              &face_measure.psi,                       \
+                              &face_corrected.phi,             \
+                              &face_corrected.theta,           \
+                              &face_corrected.psi,             \
+                              &face_residual.phi,              \
+                              &face_residual.theta,            \
+                              &face_residual.psi,              \
+                              &face_gyro_bias.p,                       \
+                              &face_gyro_bias.q,                       \
+                              &face_gyro_bias.r);              \
+  }
+#else
+#define PERIODIC_SEND_BOOZ2_FILTER(_chan) {}
+#endif
+
+#ifdef USE_AHRS_LKF
+#include <firmwares/rotorcraft/ahrs.h>
+#include "ahrs/ahrs_float_lkf.h"
+#define PERIODIC_SEND_AHRS_LKF(_chan) {                                \
+    DOWNLINK_SEND_AHRS_LKF(&bafl_eulers.phi,                   \
+                               _chan,                                  \
+                               &bafl_eulers.theta,                     \
+                               &bafl_eulers.psi,                       \
+                               &bafl_quat.qi,                          \
+                               &bafl_quat.qx,                          \
+                               &bafl_quat.qy,                          \
+                               &bafl_quat.qz,                          \
+                               &bafl_rates.p,                          \
+                               &bafl_rates.q,                          \
+                               &bafl_rates.r,                          \
+                               &bafl_accel_measure.x,                  \
+                               &bafl_accel_measure.y,                  \
+                               &bafl_accel_measure.z,                  \
+                               &bafl_mag.x,                            \
+                               &bafl_mag.y,                            \
+                               &bafl_mag.z);                           \
+  }
+#define PERIODIC_SEND_AHRS_LKF_DEBUG(_chan) {             \
+    DOWNLINK_SEND_AHRS_LKF_DEBUG(_chan,                           \
+                                     &bafl_X[0],                  \
+                                     &bafl_X[1],                  \
+                                     &bafl_X[2],                  \
+                                     &bafl_bias.p,                \
+                                     &bafl_bias.q,                \
+                                     &bafl_bias.r,                \
+                                     &bafl_qnorm,                 \
+                                     &bafl_phi_accel,             \
+                                     &bafl_theta_accel,           \
+                                     &bafl_P[0][0],               \
+                                     &bafl_P[1][1],               \
+                                     &bafl_P[2][2],               \
+                                     &bafl_P[3][3],               \
+                                     &bafl_P[4][4],               \
+                                     &bafl_P[5][5]);              \
+  }
+#define PERIODIC_SEND_AHRS_LKF_ACC_DBG(_chan) {                    \
+    DOWNLINK_SEND_AHRS_LKF_ACC_DBG(_chan,                          \
+                                       &bafl_q_a_err.qi,           \
+                                       &bafl_q_a_err.qx,           \
+                                       &bafl_q_a_err.qy,           \
+                                       &bafl_q_a_err.qz,           \
+                                       &bafl_b_a_err.p,            \
+                                       &bafl_b_a_err.q,            \
+                                       &bafl_b_a_err.r);           \
+  }
+#define PERIODIC_SEND_AHRS_LKF_MAG_DBG(_chan) {            \
+    DOWNLINK_SEND_AHRS_LKF_MAG_DBG(_chan,                  \
+                                       &bafl_q_m_err.qi,   \
+                                       &bafl_q_m_err.qx,   \
+                                       &bafl_q_m_err.qy,   \
+                                       &bafl_q_m_err.qz,   \
+                                       &bafl_b_m_err.p,    \
+                                       &bafl_b_m_err.q,    \
+                                       &bafl_b_m_err.r);   \
+  }
+#else
+#define PERIODIC_SEND_AHRS_LKF(_chan) {}
+#define PERIODIC_SEND_AHRS_LKF_DEBUG(_chan) {}
+#define PERIODIC_SEND_AHRS_LKF_MAG_DBG(_chan) {}
+#define PERIODIC_SEND_AHRS_LKF_ACC_DBG(_chan) {}
+#endif
+
+
+#define PERIODIC_SEND_BOOZ2_AHRS_QUAT(_chan) {                         \
+    DOWNLINK_SEND_BOOZ2_AHRS_QUAT(_chan,                               \
+                                 &ahrs.ltp_to_imu_quat.qi,     \
+                                 &ahrs.ltp_to_imu_quat.qx,     \
+                                 &ahrs.ltp_to_imu_quat.qy,     \
+                                 &ahrs.ltp_to_imu_quat.qz,     \
+                                 &ahrs.ltp_to_body_quat.qi,    \
+                                 &ahrs.ltp_to_body_quat.qx,    \
+                                 &ahrs.ltp_to_body_quat.qy,    \
+                                 &ahrs.ltp_to_body_quat.qz);   \
+  }
+
+#define PERIODIC_SEND_BOOZ2_AHRS_EULER(_chan) {                                
\
+    DOWNLINK_SEND_BOOZ2_AHRS_EULER(_chan,                              \
+                                  &ahrs.ltp_to_imu_euler.phi,  \
+                                  &ahrs.ltp_to_imu_euler.theta,        \
+                                  &ahrs.ltp_to_imu_euler.psi,  \
+                                  &ahrs.ltp_to_body_euler.phi, \
+                                  &ahrs.ltp_to_body_euler.theta,       \
+                                  &ahrs.ltp_to_body_euler.psi);        \
+  }
+
+#define PERIODIC_SEND_BOOZ2_AHRS_RMAT(_chan) {                         \
+    DOWNLINK_SEND_BOOZ2_AHRS_RMAT(_chan,                               \
+                                 &ahrs.ltp_to_imu_rmat.m[0],   \
+                                 &ahrs.ltp_to_imu_rmat.m[1],   \
+                                 &ahrs.ltp_to_imu_rmat.m[2],   \
+                                 &ahrs.ltp_to_imu_rmat.m[3],   \
+                                 &ahrs.ltp_to_imu_rmat.m[4],   \
+                                 &ahrs.ltp_to_imu_rmat.m[5],   \
+                                 &ahrs.ltp_to_imu_rmat.m[6],   \
+                                 &ahrs.ltp_to_imu_rmat.m[7],   \
+                                 &ahrs.ltp_to_imu_rmat.m[8],   \
+                                 &ahrs.ltp_to_body_rmat.m[0],  \
+                                 &ahrs.ltp_to_body_rmat.m[1],  \
+                                 &ahrs.ltp_to_body_rmat.m[2],  \
+                                 &ahrs.ltp_to_body_rmat.m[3],  \
+                                 &ahrs.ltp_to_body_rmat.m[4],  \
+                                 &ahrs.ltp_to_body_rmat.m[5],  \
+                                 &ahrs.ltp_to_body_rmat.m[6],  \
+                                 &ahrs.ltp_to_body_rmat.m[7],  \
+                                 &ahrs.ltp_to_body_rmat.m[8]); \
+  }
+
+
+
+
+#define PERIODIC_SEND_BOOZ2_FILTER_Q(_chan) {                          \
+    DOWNLINK_SEND_BOOZ2_FILTER_Q(_chan,                                        
\
+                                &booz2_filter_attitude_quat.qi,        \
+                                &booz2_filter_attitude_quat.qx,        \
+                                &booz2_filter_attitude_quat.qy,        \
+                                &booz2_filter_attitude_quat.qz);       \
+  }
+
+#ifdef USE_VFF
+#include <firmwares/rotorcraft/ins/vf_float.h>
+#define PERIODIC_SEND_VFF(_chan) {             \
+    DOWNLINK_SEND_VFF(_chan,                   \
+                           &vff_z_meas,                \
+                           &vff_z,                     \
+                           &vff_zdot,          \
+                           &vff_bias,          \
+                           & vff_P[0][0],              \
+                           & vff_P[1][1],              \
+                           & vff_P[2][2]);             \
+  }
+#else
+#define PERIODIC_SEND_VFF(_chan) {}
+#endif
+
+#ifdef USE_HFF
+#include  <firmwares/rotorcraft/ins/hf_float.h>
+#define PERIODIC_SEND_HFF(_chan) {     \
+    DOWNLINK_SEND_HFF(_chan,           \
+                            &b2_hff_state.x,                   \
+                            &b2_hff_state.y,                   \
+                            &b2_hff_state.xdot,         \
+                            &b2_hff_state.ydot,                        \
+                            &b2_hff_state.xdotdot,      \
+                            &b2_hff_state.ydotdot);     \
+  }
+#define PERIODIC_SEND_HFF_DBG(_chan) {                \
+       DOWNLINK_SEND_HFF_DBG(_chan,                      \
+                                &b2_hff_x_meas,             \
+                                &b2_hff_y_meas,             \
+                                &b2_hff_xd_meas,            \
+                                &b2_hff_yd_meas,            \
+                                &b2_hff_state.xP[0][0],     \
+                                &b2_hff_state.yP[0][0],     \
+                                &b2_hff_state.xP[1][1],     \
+                                &b2_hff_state.yP[1][1]);    \
+  }
+#ifdef GPS_LAG
+#define PERIODIC_SEND_HFF_GPS(_chan) { \
+    DOWNLINK_SEND_HFF_GPS(_chan,                       \
+                                                         
&b2_hff_rb_last->lag_counter,         \
+                                                         &lag_counter_err,     
\
+                                                         &save_counter);       
\
+  }
+#else
+#define PERIODIC_SEND_HFF_GPS(_chan) {}
+#endif
+#else
+#define PERIODIC_SEND_HFF(_chan) {}
+#define PERIODIC_SEND_HFF_DBG(_chan) {}
+#define PERIODIC_SEND_HFF_GPS(_chan) {}
+#endif
+
+#define PERIODIC_SEND_GUIDANCE(_chan) {                                \
+    DOWNLINK_SEND_GUIDANCE(_chan,                                      \
+                                &guidance_h_cur_pos.x,         \
+                                &guidance_h_cur_pos.y,         \
+                                &guidance_h_held_pos.x,                \
+                                &guidance_h_held_pos.y);               \
+  }
+
+#define PERIODIC_SEND_INS(_chan) {                             \
+    DOWNLINK_SEND_INS(_chan,                                   \
+                           &ins_baro_alt,                              \
+                           &ins_ltp_pos.z,                     \
+                           &ins_ltp_speed.z,                   \
+                           &ins_ltp_accel.z);                  \
+  }
+
+
+#define PERIODIC_SEND_INS2(_chan) {                    \
+    struct Int32Vect3 pos_low_res;                             \
+    pos_low_res.x = (int32_t)(b2ins_pos_ltp.x>>20);            \
+    pos_low_res.y = (int32_t)(b2ins_pos_ltp.y>>20);            \
+    pos_low_res.z = (int32_t)(b2ins_pos_ltp.z>>20);            \
+    DOWNLINK_SEND_INS2(_chan,                          \
+                            &b2ins_accel_ltp.x,                \
+                            &b2ins_accel_ltp.y,                \
+                            &b2ins_accel_ltp.z,                \
+                            &b2ins_speed_ltp.x,                \
+                            &b2ins_speed_ltp.y,                \
+                            &b2ins_speed_ltp.z,                \
+                            &pos_low_res.x,                    \
+                            &pos_low_res.y,                    \
+                            &pos_low_res.z                     \
+                            );                                 \
+  }
+
+#ifdef USE_GPS
+#include <firmwares/rotorcraft/ins/hf_float.h>
+#define PERIODIC_SEND_INS3(_chan) {                            \
+    DOWNLINK_SEND_INS3(_chan,                                  \
+                            &b2ins_meas_gps_pos_ned.x,                 \
+                            &b2ins_meas_gps_pos_ned.y,                 \
+                            &b2ins_meas_gps_pos_ned.z,                 \
+                            &b2ins_meas_gps_speed_ned.x,               \
+                            &b2ins_meas_gps_speed_ned.y,               \
+                            &b2ins_meas_gps_speed_ned.z                \
+                            );                                         \
+  }
+#else /* !USE_GPS */
+#define PERIODIC_SEND_INS3(_chan) {}
+#endif /* USE_GPS */
+
+#define PERIODIC_SEND_BOOZ_INS(_chan) {                        \
+    DOWNLINK_SEND_BOOZ_INS(_chan,                              \
+                                          &ins_ltp_pos.x,              \
+                                          &ins_ltp_pos.y,          \
+                                          &ins_ltp_pos.z,              \
+                                          &ins_ltp_speed.x,    \
+                                          &ins_ltp_speed.y,    \
+                                          &ins_ltp_speed.z,    \
+                                          &ins_ltp_accel.x,    \
+                                          &ins_ltp_accel.y,    \
+                                          &ins_ltp_accel.z);   \
+  }
+
+#define PERIODIC_SEND_INS_REF(_chan) {                         \
+    DOWNLINK_SEND_INS_REF(_chan,                                       \
+                               &ins_ltp_def.ecef.x,            \
+                               &ins_ltp_def.ecef.y,            \
+                               &ins_ltp_def.ecef.z,            \
+                               &ins_ltp_def.lla.lat,           \
+                               &ins_ltp_def.lla.lon,           \
+                               &ins_ltp_def.lla.alt,           \
+                               &ins_ltp_def.hmsl,              \
+                               &ins_qfe);                              \
+  }
+
+
+
+#define PERIODIC_SEND_BOOZ2_VERT_LOOP(_chan) {                         \
+    DOWNLINK_SEND_BOOZ2_VERT_LOOP(_chan,                               \
+                                 &guidance_v_z_sp,             \
+                                 &guidance_v_zd_sp,            \
+                                 &ins_ltp_pos.z,                       \
+                                 &ins_ltp_speed.z,             \
+                                 &ins_ltp_accel.z,             \
+                                 &guidance_v_z_ref,            \
+                                 &guidance_v_zd_ref,           \
+                                 &guidance_v_zdd_ref,          \
+                                 &gv_adapt_X,                  \
+                                 &gv_adapt_P,                  \
+                                 &gv_adapt_Xmeas,                      \
+                                 &guidance_v_z_sum_err,                \
+                                 &guidance_v_ff_cmd,           \
+                                 &guidance_v_fb_cmd,           \
+                                 &guidance_v_delta_t);         \
+  }
+
+#define PERIODIC_SEND_BOOZ2_HOVER_LOOP(_chan) {                                
\
+    DOWNLINK_SEND_BOOZ2_HOVER_LOOP(_chan,                              \
+                                  &guidance_h_pos_sp.x,                \
+                                  &guidance_h_pos_sp.y,                \
+                                  &ins_ltp_pos.x,                      \
+                                  &ins_ltp_pos.y,                      \
+                                  &ins_ltp_speed.x,            \
+                                  &ins_ltp_speed.y,            \
+                                  &ins_ltp_accel.x,            \
+                                  &ins_ltp_accel.y,            \
+                                  &guidance_h_pos_err.x,               \
+                                  &guidance_h_pos_err.y,               \
+                                  &guidance_h_speed_err.x,     \
+                                  &guidance_h_speed_err.y,     \
+                                  &guidance_h_pos_err_sum.x,   \
+                                  &guidance_h_pos_err_sum.y,   \
+                                  &guidance_h_nav_err.x,       \
+                                  &guidance_h_nav_err.y,       \
+                                  &guidance_h_command_earth.x, \
+                                  &guidance_h_command_earth.y, \
+                                  &guidance_h_command_body.phi,        \
+                                  &guidance_h_command_body.theta, \
+                                  &guidance_h_command_body.psi);       \
+  }
+
+#define PERIODIC_SEND_GUIDANCE_H_REF(_chan) { \
+  DOWNLINK_SEND_GUIDANCE_H_REF_INT(_chan, \
+      &guidance_h_pos_sp.x, \
+      &guidance_h_pos_ref.x, \
+      &guidance_h_speed_ref.x, \
+      &guidance_h_accel_ref.x, \
+      &guidance_h_pos_sp.y, \
+      &guidance_h_pos_ref.y, \
+      &guidance_h_speed_ref.y, \
+      &guidance_h_accel_ref.y); \
+}
+
+#include "booz_gps.h"
+#include "booz2_navigation.h"
+#define PERIODIC_SEND_BOOZ2_FP(_chan) {                                        
\
+    int32_t carrot_up = -guidance_v_z_sp;                              \
+    DOWNLINK_SEND_BOOZ2_FP( _chan,                                     \
+                           &ins_enu_pos.x,                     \
+                           &ins_enu_pos.y,                     \
+                           &ins_enu_pos.z,                     \
+                           &ins_enu_speed.x,                   \
+                           &ins_enu_speed.y,                   \
+                           &ins_enu_speed.z,                   \
+                           &ahrs.ltp_to_body_euler.phi,                \
+                           &ahrs.ltp_to_body_euler.theta,              \
+                           &ahrs.ltp_to_body_euler.psi,                \
+                           &guidance_h_pos_sp.y,                       \
+                           &guidance_h_pos_sp.x,                       \
+                           &carrot_up,                                 \
+                           &guidance_h_command_body.psi,               \
+                           &stabilization_cmd[COMMAND_THRUST], \
+          &autopilot_flight_time);     \
+  }
+
+#ifdef USE_GPS
+#define PERIODIC_SEND_BOOZ2_GPS(_chan) {                               \
+    DOWNLINK_SEND_BOOZ2_GPS( _chan,                                    \
+                            &booz_gps_state.ecef_pos.x,                \
+                            &booz_gps_state.ecef_pos.y,                \
+                            &booz_gps_state.ecef_pos.z,                \
+                            &booz_gps_state.lla_pos.lat,               \
+                            &booz_gps_state.lla_pos.lon,               \
+                            &booz_gps_state.lla_pos.alt,               \
+                            &booz_gps_state.ecef_vel.x,                \
+                            &booz_gps_state.ecef_vel.y,                \
+                            &booz_gps_state.ecef_vel.z,                \
+                            &booz_gps_state.pacc,                      \
+                            &booz_gps_state.sacc,                      \
+                            &booz_gps_state.tow,                       \
+                            &booz_gps_state.pdop,                      \
+                            &booz_gps_state.num_sv,                    \
+                            &booz_gps_state.fix);                      \
+  }
+#else
+#define PERIODIC_SEND_BOOZ2_GPS(_chan) {}
+#endif
+
+#include "booz2_navigation.h"
+#define PERIODIC_SEND_BOOZ2_NAV_STATUS(_chan) {                                
\
+    DOWNLINK_SEND_BOOZ2_NAV_STATUS(_chan,                              \
+                                  &block_time,                         \
+                                  &stage_time,                         \
+                                  &nav_block,                          \
+                                  &nav_stage,                          \
+                                  &horizontal_mode);                   \
+    if (horizontal_mode == HORIZONTAL_MODE_ROUTE) {                    \
+      float sx = POS_FLOAT_OF_BFP(waypoints[nav_segment_start].x);     \
+      float sy = POS_FLOAT_OF_BFP(waypoints[nav_segment_start].y);     \
+      float ex = POS_FLOAT_OF_BFP(waypoints[nav_segment_end].x);       \
+      float ey = POS_FLOAT_OF_BFP(waypoints[nav_segment_end].y);       \
+      DOWNLINK_SEND_SEGMENT(_chan, &sx, &sy, &ex, &ey);                        
\
+    }                                                                  \
+    else if (horizontal_mode == HORIZONTAL_MODE_CIRCLE) {                      
\
+      float cx = POS_FLOAT_OF_BFP(waypoints[nav_circle_centre].x);     \
+      float cy = POS_FLOAT_OF_BFP(waypoints[nav_circle_centre].y);     \
+      float r = POS_FLOAT_OF_BFP(nav_circle_radius); \
+      DOWNLINK_SEND_CIRCLE(_chan, &cx, &cy, &r);                       \
+    }                                                                  \
+  }
+
+#define PERIODIC_SEND_WP_MOVED(_chan) {                                        
\
+    static uint8_t i;                                                  \
+    i++; if (i >= nb_waypoint) i = 0;                                  \
+    DOWNLINK_SEND_WP_MOVED_ENU(_chan,                                  \
+                              &i,                                      \
+                              &(waypoints[i].x),                       \
+                              &(waypoints[i].y),                       \
+                              &(waypoints[i].z));                      \
+  }
+
+#ifdef USE_CAM
+#define PERIODIC_SEND_BOOZ2_CAM(_chan) 
DOWNLINK_SEND_BOOZ2_CAM(_chan,&booz_cam_tilt,&booz_cam_pan);
+#else
+#define PERIODIC_SEND_BOOZ2_CAM(_chan) {}
+#endif
+
+#define PERIODIC_SEND_BOOZ2_TUNE_HOVER(_chan) {                                
       \
+    DOWNLINK_SEND_BOOZ2_TUNE_HOVER(_chan,                                     \
+                                  &radio_control.values[RADIO_CONTROL_ROLL],  \
+                                  &radio_control.values[RADIO_CONTROL_PITCH], \
+                                  &radio_control.values[RADIO_CONTROL_YAW],   \
+                                  &stabilization_cmd[COMMAND_ROLL],      \
+                                  &stabilization_cmd[COMMAND_PITCH],     \
+                                  &stabilization_cmd[COMMAND_YAW],       \
+                                  &stabilization_cmd[COMMAND_THRUST],    \
+                                  &ahrs.ltp_to_imu_euler.phi,         \
+                                  &ahrs.ltp_to_imu_euler.theta,               \
+                                  &ahrs.ltp_to_imu_euler.psi,         \
+                                  &ahrs.ltp_to_body_euler.phi,        \
+                                  &ahrs.ltp_to_body_euler.theta,              \
+                                  &ahrs.ltp_to_body_euler.psi         \
+                                  );                                          \
+  }
+
+#define PERIODIC_SEND_I2C_ERRORS(_chan) {                                     \
+    DOWNLINK_SEND_I2C_ERRORS(_chan,                                   \
+                                  &i2c_errc_ack_fail,  \
+                                  &i2c_errc_miss_start_stop,  \
+                                  &i2c_errc_arb_lost,  \
+                                  &i2c_errc_over_under,  \
+                                  &i2c_errc_pec_recep,  \
+                                  &i2c_errc_timeout_tlow,  \
+                                  &i2c_errc_smbus_alert  \
+                                  );                                          \
+  }
+
+//TODO replace by BOOZ_EXTRA_ADC
+#ifdef BOOZ2_SONAR
+#define PERIODIC_SEND_BOOZ2_SONAR(_chan) 
DOWNLINK_SEND_BOOZ2_SONAR(_chan,&booz2_adc_1,&booz2_adc_2,&booz2_adc_3,&booz2_adc_4);
+#else
+#define PERIODIC_SEND_BOOZ2_SONAR(_chan) {}
+#endif
+
+#ifdef BOOZ2_TRACK_CAM
+#include "cam_track.h"
+#define PERIODIC_SEND_CAM_TRACK(_chan) DOWNLINK_SEND_BOOZ_SIM_SPEED_POS(_chan, 
\
+    &target_accel_ned.x, \
+    &target_accel_ned.y, \
+    &target_accel_ned.z, \
+    &target_speed_ned.x, \
+    &target_speed_ned.y, \
+    &target_speed_ned.z, \
+    &target_pos_ned.x, \
+    &target_pos_ned.y, \
+    &target_pos_ned.z)
+#else
+#define PERIODIC_SEND_CAM_TRACK(_chan) {}
+#endif
+
+#include "settings.h"
+#define PERIODIC_SEND_DL_VALUE(_chan) PeriodicSendDlValue(_chan)
+
+#include "periodic.h"
+#define Booz2TelemetryPeriodic() {                     \
+    PeriodicSendMain(DefaultChannel);                  \
+  }
+
+
+#endif /* TELEMETRY_H */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]