diff --git a/sw/airborne/firmwares/fixedwing/ap_downlink.h b/sw/airborne/firmwares/fixedwing/ap_downlink.h index d1b25251ed..30dee8aec7 100644 --- a/sw/airborne/firmwares/fixedwing/ap_downlink.h +++ b/sw/airborne/firmwares/fixedwing/ap_downlink.h @@ -96,7 +96,7 @@ extern uint8_t telemetry_mode_Ap_DefaultChannel; DOWNLINK_SEND_ATTITUDE(_trans, _dev, &estimator_phi, &estimator_psi, &estimator_theta); \ }) -#define PERIODIC_SEND_PPRZ_MODE(_trans, _dev) DOWNLINK_SEND_PPRZ_MODE(_trans, _dev, &pprz_mode, &v_ctl_mode, &lateral_mode, &horizontal_mode, &rc_settings_mode, &mcu1_status); + #define PERIODIC_SEND_DESIRED(_trans, _dev) DOWNLINK_SEND_DESIRED(_trans, _dev, &h_ctl_roll_setpoint, &h_ctl_pitch_loop_setpoint, &h_ctl_course_setpoint, &desired_x, &desired_y, &v_ctl_altitude_setpoint, &v_ctl_climb_setpoint); #if USE_INFRARED @@ -123,9 +123,15 @@ extern uint8_t telemetry_mode_Ap_DefaultChannel; DownlinkSendWp(_trans, _dev, i); \ } -#ifdef RADIO_CONTROL_SETTINGS +#if defined RADIO_CALIB && defined RADIO_CONTROL_SETTINGS +#include "rc_settings.h" +#define PERIODIC_SEND_PPRZ_MODE(_trans, _dev) DOWNLINK_SEND_PPRZ_MODE(_trans, _dev, &pprz_mode, &v_ctl_mode, &lateral_mode, &horizontal_mode, &rc_settings_mode, &mcu1_status); #define PERIODIC_SEND_SETTINGS(_trans, _dev) if (!RcSettingsOff()) DOWNLINK_SEND_SETTINGS(_trans, _dev, &slider_1_val, &slider_2_val); #else +#define PERIODIC_SEND_PPRZ_MODE(_trans, _dev) { \ + uint8_t rc_settings_mode_none = 0; \ + DOWNLINK_SEND_PPRZ_MODE(_trans, _dev, &pprz_mode, &v_ctl_mode, &lateral_mode, &horizontal_mode, &rc_settings_mode_none, &mcu1_status); \ + } #define PERIODIC_SEND_SETTINGS(_trans, _dev) {} #endif diff --git a/sw/airborne/firmwares/fixedwing/autopilot.h b/sw/airborne/firmwares/fixedwing/autopilot.h index d1d55a814a..1f122a3690 100644 --- a/sw/airborne/firmwares/fixedwing/autopilot.h +++ b/sw/airborne/firmwares/fixedwing/autopilot.h @@ -67,16 +67,12 @@ extern bool_t kill_throttle; #define FLOAT_OF_PPRZ(pprz, center, travel) ((float)pprz / (float)MAX_PPRZ * travel + center) -extern uint8_t fatal_error_nb; - #define THROTTLE_THRESHOLD_TAKEOFF (pprz_t)(MAX_PPRZ * 0.9) extern uint8_t lateral_mode; extern uint8_t vsupply; extern float energy; -extern float slider_1_val, slider_2_val; - extern bool_t launch; extern uint8_t light_mode; @@ -91,8 +87,6 @@ extern bool_t sum_err_reset; (_mode != new_mode ? _mode = new_mode, TRUE : FALSE); \ }) -void periodic_task( void ); -//void telecommand_task(void); #ifdef RADIO_CONTROL #include "subsystems/radio_control.h" @@ -117,10 +111,4 @@ extern bool_t power_switch; } -/* For backward compatibility with old airframe files */ -#include "generated/airframe.h" -#ifndef CONTROL_RATE -#define CONTROL_RATE 20 -#endif - #endif /* AUTOPILOT_H */ diff --git a/sw/airborne/firmwares/fixedwing/main_ap.c b/sw/airborne/firmwares/fixedwing/main_ap.c index c59dece80d..dfdf0f0a8a 100644 --- a/sw/airborne/firmwares/fixedwing/main_ap.c +++ b/sw/airborne/firmwares/fixedwing/main_ap.c @@ -98,17 +98,9 @@ static inline void on_gps_solution( void ); #endif -#define LOW_BATTERY_DECIVOLT (CATASTROPHIC_BAT_LEVEL*10) - - -/** FIXME: should be in rc_settings but required by telemetry (ap_downlink.h)*/ -uint8_t rc_settings_mode = 0; - -/** Define minimal speed for takeoff in m/s */ -#define MIN_SPEED_FOR_TAKEOFF 5. - bool_t power_switch; -uint8_t fatal_error_nb = 0; + +// what version is this ???? static const uint16_t version = 1; uint8_t pprz_mode = PPRZ_MODE_AUTO2; @@ -122,14 +114,23 @@ static uint8_t mcu1_ppm_cpt; bool_t kill_throttle = FALSE; -float slider_1_val, slider_2_val; - bool_t launch = FALSE; -uint8_t vsupply; // deciVolt + +/** Supply voltage in deciVolt. + * This the ap copy of the measurement from fbw + */ +uint8_t vsupply; + +/** Supply current in milliAmpere. + * This the ap copy of the measurement from fbw + */ static int32_t current; // milliAmpere -float energy; // Fuel consumption (mAh) +/** Fuel consumption (mAh) + * TODO: move to electrical subsystem + */ +float energy; bool_t gps_lost = FALSE; @@ -381,11 +382,6 @@ static inline void telecommand_task( void ) { /**************************** Periodic tasks ***********************************/ -/** Define number of message at initialisation */ -#define INIT_MSG_NB 2 - -uint8_t ac_ident = AC_ID; - /** * Send a series of initialisation messages followed by a stream of periodic ones. * Called at 60Hz. @@ -535,6 +531,9 @@ void sensors_task( void ) { #endif // USE_IMU } + + + /** Maximum time allowed for low battery level before going into kill mode */ #define LOW_BATTERY_DELAY 5 @@ -543,6 +542,9 @@ void sensors_task( void ) { #define KILL_MODE_DISTANCE (1.5*MAX_DIST_FROM_HOME) #endif +/** Define minimal speed for takeoff in m/s */ +#define MIN_SPEED_FOR_TAKEOFF 5. + /** monitor stuff run at 1Hz */ void monitor_task( void ) { if (estimator_flight_time) @@ -552,7 +554,7 @@ void monitor_task( void ) { #endif static uint8_t t = 0; - if (vsupply < LOW_BATTERY_DECIVOLT) + if (vsupply < CATASTROPHIC_BAT_LEVEL*10) t++; else t = 0; diff --git a/sw/airborne/rc_settings.c b/sw/airborne/rc_settings.c index d64857a4b4..15573d398a 100644 --- a/sw/airborne/rc_settings.c +++ b/sw/airborne/rc_settings.c @@ -34,6 +34,8 @@ #include "inter_mcu.h" #include "firmwares/fixedwing/stabilization/stabilization_attitude.h" +uint8_t rc_settings_mode = 0; +float slider_1_val, slider_2_val; #define ParamValInt16(param_init_val, param_travel, cur_pulse, init_pulse) \ (param_init_val + (int16_t)(((float)(cur_pulse - init_pulse)) * param_travel / (float)MAX_PPRZ)) diff --git a/sw/airborne/rc_settings.h b/sw/airborne/rc_settings.h index 2fd8677e25..796a881e15 100644 --- a/sw/airborne/rc_settings.h +++ b/sw/airborne/rc_settings.h @@ -23,8 +23,9 @@ */ -/** \file rc_settings.h - * \brief Variable setting though the radio control +/** + * @file rc_settings.h + * Variable setting though the radio control * * The 'rc_control' section of a XML flight plan allows the user to change the * value of an autopilot internal variable through the rc transmitter. @@ -33,6 +34,7 @@ */ #ifndef RC_SETTINGS_H +#define RC_SETTINGS_H #if defined RADIO_CALIB && defined RADIO_CONTROL_SETTINGS @@ -43,8 +45,16 @@ #define RC_SETTINGS_MODE_DOWN 1 #define RC_SETTINGS_MODE_UP 2 +/** rc settings mode + * can be either + * - #RC_SETTINGS_MODE_NONE + * - #RC_SETTINGS_MODE_DOWN + * - #RC_SETTINGS_MODE_UP + */ extern uint8_t rc_settings_mode; +extern float slider_1_val, slider_2_val; + void rc_settings(bool_t mode_changed); #define RcSettingsOff() (rc_settings_mode==RC_SETTINGS_MODE_NONE)