#pragma once
#define AP_PARAM_VEHICLE_NAME copter
#include <AP_Common/AP_Common.h>
#include "RC_Channel_Copter.h"
#include <AP_Proximity/AP_Proximity.h>
class ModeRTL;
#if MODE_FOLLOW_ENABLED
# include <AP_Follow/AP_Follow.h>
#endif
#if WEATHERVANE_ENABLED
#include <AC_AttitudeControl/AC_WeatherVane.h>
#endif
class Parameters {
public:
static const uint16_t k_format_version = 120;
enum {
k_param_format_version = 0,
k_param_software_type,
k_param_ins_old,
k_param_ins,
k_param_NavEKF2_old,
k_param_NavEKF2,
k_param_g2,
k_param_NavEKF3,
k_param_can_mgr,
k_param_osd,
k_param_sitl = 10,
k_param_barometer,
k_param_scheduler,
k_param_relay,
k_param_epm_unused,
k_param_BoardConfig,
k_param_gps,
k_param_parachute,
k_param_landinggear,
k_param_input_manager,
k_param_log_bitmask_old = 20,
k_param_log_last_filenumber,
k_param_toy_yaw_rate,
k_param_crosstrack_min_distance,
k_param_rssi_pin,
k_param_throttle_accel_enabled,
k_param_wp_yaw_behavior,
k_param_acro_trainer,
k_param_pilot_speed_up_cms,
k_param_circle_rate,
k_param_rangefinder_gain,
k_param_ch8_option_old,
k_param_arming_check_old,
k_param_sprayer,
k_param_angle_max,
k_param_gps_hdop_good,
k_param_battery,
k_param_fs_batt_mah,
k_param_angle_rate_max,
k_param_rssi_range,
k_param_rc_feel_rp,
k_param_NavEKF,
k_param_mission,
k_param_rc_13_old,
k_param_rc_14_old,
k_param_rally,
k_param_poshold_brake_rate_degs,
k_param_poshold_brake_angle_max,
k_param_pilot_accel_d_cmss,
k_param_serial0_baud,
k_param_serial1_baud,
k_param_serial2_baud,
k_param_land_repositioning,
k_param_rangefinder,
k_param_fs_ekf_thresh,
k_param_terrain,
k_param_acro_rp_expo,
k_param_throttle_deadzone,
k_param_optflow,
k_param_dcmcheck_thresh,
k_param_log_bitmask,
k_param_cli_enabled_old,
k_param_throttle_filt,
k_param_throttle_behavior,
k_param_pilot_takeoff_alt_cm,
k_param_limits = 65,
k_param_gpslock_limit,
k_param_geofence_limit,
k_param_altitude_limit,
k_param_fence_old,
k_param_gps_glitch,
k_param_baro_glitch,
k_param_adsb,
k_param_notify,
k_param_precland = 74,
k_param_single_servo_1 = 75,
k_param_single_servo_2,
k_param_single_servo_3,
k_param_single_servo_4,
k_param_heli_servo_1 = 80,
k_param_heli_servo_2,
k_param_heli_servo_3,
k_param_heli_servo_4,
k_param_heli_pitch_ff,
k_param_heli_roll_ff,
k_param_heli_yaw_ff,
k_param_heli_stab_col_min,
k_param_heli_stab_col_max,
k_param_heli_servo_rsc,
k_param_motors = 90,
k_param_disarm_delay,
k_param_fs_crash_check,
k_param_throw_motor_start,
k_param_rtl_alt_type,
k_param_avoid,
k_param_avoidance_adsb,
k_param_rssi = 97,
k_param_inertial_nav = 100,
k_param_wp_nav,
k_param_attitude_control,
k_param_pos_control,
k_param_circle_nav,
k_param_loiter_nav,
k_param_custom_control,
k_param_gcs0_unused = 110,
k_param_gcs1_unused,
k_param_sysid_this_mav_old,
k_param_sysid_my_gcs_old,
k_param_serial1_baud_old,
k_param_telem_delay_old,
k_param_gcs2_unused,
k_param_serial2_baud_old,
k_param_serial2_protocol,
k_param_serial_manager_old,
k_param_ch9_option_old,
k_param_ch10_option_old,
k_param_ch11_option_old,
k_param_ch12_option_old,
k_param_takeoff_trigger_dz_old,
k_param_gcs3_unused,
k_param_gcs_pid_mask,
k_param_gcs4_unused,
k_param_gcs5_unused,
k_param_gcs6_unused,
k_param_rtl_speed_cms = 135,
k_param_fs_batt_curr_rtl,
k_param_rtl_cone_slope,
k_param_imu = 140,
k_param_battery_monitoring = 141,
k_param_volt_div_ratio,
k_param_curr_amp_per_volt,
k_param_input_voltage,
k_param_pack_capacity,
k_param_compass_enabled_deprecated,
k_param_compass,
k_param_rangefinder_enabled_old,
k_param_frame_type,
k_param_optflow_enabled,
k_param_fs_batt_voltage,
k_param_ch7_option_old,
k_param_auto_slew_rate,
k_param_rangefinder_type_old,
k_param_super_simple = 155,
k_param_axis_enabled = 157,
k_param_copter_leds_mode,
k_param_ahrs,
k_param_rtl_altitude_cm = 160,
k_param_crosstrack_gain,
k_param_rtl_loiter_time,
k_param_rtl_alt_final_cm,
k_param_tilt_comp,
k_param_camera = 165,
k_param_camera_mount,
k_param_camera_mount2,
k_param_battery_volt_pin = 168,
k_param_battery_curr_pin,
k_param_rc_1_old = 170,
k_param_rc_2_old,
k_param_rc_3_old,
k_param_rc_4_old,
k_param_rc_5_old,
k_param_rc_6_old,
k_param_rc_7_old,
k_param_rc_8_old,
k_param_rc_10_old,
k_param_rc_11_old,
k_param_throttle_min,
k_param_throttle_max,
k_param_failsafe_throttle,
k_param_throttle_fs_action,
k_param_failsafe_throttle_value,
k_param_throttle_trim,
k_param_esc_calibrate,
k_param_rc_tuning_param,
k_param_rc_tuning_param_high_old,
k_param_rc_tuning_param_low_old,
k_param_rc_speed = 192,
k_param_failsafe_battery_enabled,
k_param_throttle_mid,
k_param_failsafe_gps_enabled,
k_param_rc_9_old,
k_param_rc_12_old,
k_param_failsafe_gcs,
k_param_rcmap,
k_param_flight_mode1 = 200,
k_param_flight_mode2,
k_param_flight_mode3,
k_param_flight_mode4,
k_param_flight_mode5,
k_param_flight_mode6,
k_param_simple_modes,
k_param_flight_mode_chan,
k_param_initial_mode,
k_param_waypoint_mode = 210,
k_param_command_total,
k_param_command_index,
k_param_command_nav_index,
k_param_waypoint_radius,
k_param_circle_radius,
k_param_waypoint_speed_max,
k_param_land_speed_cms,
k_param_auto_velocity_z_min,
k_param_auto_velocity_z_max,
k_param_land_speed_high_cms,
k_param_acro_rp_p = 221,
k_param_axis_lock_p,
k_param_pid_rate_roll,
k_param_pid_rate_pitch,
k_param_pid_rate_yaw,
k_param_p_stabilize_roll,
k_param_p_stabilize_pitch,
k_param_p_stabilize_yaw,
k_param_p_pos_xy,
k_param_p_loiter_lon,
k_param_pid_loiter_rate_lat,
k_param_pid_loiter_rate_lon,
k_param_pid_nav_lat,
k_param_pid_nav_lon,
k_param_p_alt_hold,
k_param_p_vel_z,
k_param_pid_optflow_roll,
k_param_pid_optflow_pitch,
k_param_acro_balance_roll_old,
k_param_acro_balance_pitch_old,
k_param_pid_accel_z,
k_param_acro_balance_roll,
k_param_acro_balance_pitch,
k_param_acro_yaw_p,
k_param_autotune_axis_bitmask,
k_param_autotune_aggressiveness,
k_param_pi_vel_xy,
k_param_fs_ekf_action,
k_param_rtl_climb_min_cm,
k_param_rpm_sensor_old,
k_param_autotune_min_d,
k_param_arming,
k_param_logger = 253,
k_param_vehicle = 257,
k_param_throw_altitude_min,
k_param_throw_altitude_max,
k_param__gcs,
k_param_throw_altitude_descend,
k_param_throw_altitude_ascend,
};
AP_Int16 format_version;
AP_Float throttle_filt;
AP_Int16 throttle_behavior;
AP_Float pilot_takeoff_alt_cm;
#if MODE_RTL_ENABLED
AP_Float rtl_cone_slope;
AP_Int32 rtl_loiter_time;
AP_Enum<ModeRTL::RTLAltType> rtl_alt_type;
#endif
AP_Int8 failsafe_gcs;
AP_Int16 gps_hdop_good;
AP_Int8 super_simple;
AP_Int8 wp_yaw_behavior;
#if MODE_POSHOLD_ENABLED
AP_Int16 poshold_brake_rate_degs;
AP_Int16 poshold_brake_angle_max;
#endif
AP_Int16 pilot_speed_up_cms;
AP_Int16 pilot_accel_d_cmss;
AP_Int8 failsafe_throttle;
AP_Int16 failsafe_throttle_value;
AP_Int16 throttle_deadzone;
AP_Int8 flight_mode1;
AP_Int8 flight_mode2;
AP_Int8 flight_mode3;
AP_Int8 flight_mode4;
AP_Int8 flight_mode5;
AP_Int8 flight_mode6;
AP_Int8 simple_modes;
AP_Int8 flight_mode_chan;
AP_Int8 initial_mode;
AP_Int32 log_bitmask;
AP_Int8 esc_calibrate;
#if AP_RC_TRANSMITTER_TUNING_ENABLED
AP_Int8 rc_tuning_param;
#endif
AP_Int8 frame_type;
AP_Int8 disarm_delay;
AP_Int8 land_repositioning;
AP_Int8 fs_ekf_action;
AP_Int8 fs_crash_check;
AP_Float fs_ekf_thresh;
AP_Int16 gcs_pid_mask;
#if MODE_THROW_ENABLED
AP_Enum<ModeThrow::PreThrowMotorState> throw_motor_start;
AP_Int16 throw_altitude_min;
AP_Int16 throw_altitude_max;
AP_Float throw_altitude_descend;
AP_Float throw_altitude_ascend;
#endif
AP_Int16 rc_speed;
#if MODE_ACRO_ENABLED || MODE_SPORT_ENABLED
AP_Float acro_balance_roll;
AP_Float acro_balance_pitch;
#endif
#if MODE_ACRO_ENABLED
AP_Int8 acro_trainer;
#endif
Parameters()
{
}
};
class ParametersG2 {
public:
ParametersG2(void);
static const struct AP_Param::GroupInfo var_info[];
static const struct AP_Param::GroupInfo var_info2[];
AP_Float wp_navalt_min_m;
uint8_t unused_integer;
#if HAL_BUTTON_ENABLED
AP_Button *button_ptr;
#endif
#if MODE_THROW_ENABLED
AP_Int8 throw_nextmode;
AP_Enum<ModeThrow::ThrowType> throw_type;
#endif
AP_Int8 gndeffect_comp_enabled;
#if AP_TEMPCALIBRATION_ENABLED
AP_TempCalibration temp_calibration;
#endif
#if AP_BEACON_ENABLED
AP_Beacon beacon;
#endif
#if HAL_PROXIMITY_ENABLED
AP_Proximity proximity;
#endif
#if AP_COPTER_ADVANCED_FAILSAFE_ENABLED
AP_AdvancedFailsafe_Copter afs;
#endif
AP_Int32 dev_options;
#if MODE_ACRO_ENABLED
AP_Float acro_thr_mid;
#endif
AP_Int8 frame_class;
RC_Channels_Copter rc_channels;
SRV_Channels servo_channels;
#if MODE_SMARTRTL_ENABLED
AP_SmartRTL smart_rtl;
#endif
#if AP_WINCH_ENABLED
AP_Winch winch;
#endif
AP_Int16 pilot_speed_dn_cms;
#if TOY_MODE_ENABLED
ToyMode toy_mode;
#endif
#if MODE_FLOWHOLD_ENABLED
void *mode_flowhold_ptr;
#endif
#if MODE_FOLLOW_ENABLED
AP_Follow follow;
#endif
#if USER_PARAMS_ENABLED
UserParameters user_parameters;
#endif
#if AUTOTUNE_ENABLED
void *autotune_ptr;
#endif
#if AP_RC_TRANSMITTER_TUNING_ENABLED
AP_Float rc_tuning_min;
AP_Float rc_tuning_max;
#endif
#if AP_OAPATHPLANNER_ENABLED
AP_OAPathPlanner oa;
#endif
#if MODE_SYSTEMID_ENABLED
void *mode_systemid_ptr;
#endif
AP_Int8 fs_vibe_enabled;
AP_Int32 fs_options;
#if MODE_AUTOROTATE_ENABLED
AC_Autorotation arot;
#endif
#if MODE_ZIGZAG_ENABLED
void *mode_zigzag_ptr;
#endif
#if MODE_ACRO_ENABLED || MODE_SPORT_ENABLED
AC_CommandModel command_model_acro_rp;
#endif
#if MODE_ACRO_ENABLED || MODE_DRIFT_ENABLED
AC_CommandModel command_model_acro_y;
#endif
AC_CommandModel command_model_pilot_y;
#if MODE_ACRO_ENABLED
AP_Int8 acro_options;
#endif
#if MODE_AUTO_ENABLED
AP_Int32 auto_options;
#endif
#if MODE_GUIDED_ENABLED
AP_Int32 guided_options;
#endif
AP_Float fs_gcs_timeout;
#if MODE_RTL_ENABLED
AP_Int32 rtl_options;
#endif
AP_Int32 flight_options;
#if AP_RANGEFINDER_ENABLED
AP_Float rangefinder_filt;
#endif
#if MODE_GUIDED_ENABLED
AP_Float guided_timeout;
#endif
AP_Int8 surftrak_mode;
AP_Int8 failsafe_dr_enable;
AP_Int16 failsafe_dr_timeout;
AP_Float surftrak_tc;
AP_Float takeoff_throttle_slew_time;
AP_Float takeoff_throttle_max;
#if HAL_WITH_ESC_TELEM && FRAME_CONFIG != HELI_FRAME
AP_Int16 takeoff_rpm_min;
AP_Int16 takeoff_rpm_max;
#endif
AP_Float fs_ekf_filt_hz;
#if WEATHERVANE_ENABLED
AC_WeatherVane weathervane;
#endif
#if AC_PAYLOAD_PLACE_ENABLED
AP_Float pldp_thrust_placed_fraction;
AP_Float pldp_range_finder_maximum_m;
AP_Float pldp_delay_s;
AP_Float pldp_descent_speed_ms;
#endif
AP_Int8 att_enable;
AP_Int8 att_decimation;
#if AP_RC_TRANSMITTER_TUNING_ENABLED
AP_Int8 rc_tuning2_param;
AP_Float rc_tuning2_min;
AP_Float rc_tuning2_max;
#endif
#if MODE_RTL_ENABLED
void *mode_rtl_ptr;
#endif
void *mode_land_ptr;
};
extern const AP_Param::Info var_info[];