ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / Soft / Common / config_keys.h
diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Common/config_keys.h b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Common/config_keys.h
new file mode 100644 (file)
index 0000000..1b98872
--- /dev/null
@@ -0,0 +1,304 @@
+/******************************************************************************
+ *                        COPYRIGHT PARROT 2010
+ ******************************************************************************
+ * PARROT A.R.Drone SDK
+ *---------------------------------------------------------------------------*/
+/**
+ * @file   config_keys.h
+ * @brief  Definition of all the configuration values for the drone.
+ *
+ * This file mainly consists in a list of ARDRONE_CONFIG_KEY_xxx macros
+ * whose arguments describe the available configuration values.
+ * By redefining those macros and including this file anywhere else in the
+ * project, it is possible to build a set of C variables, functions or macros
+ * based on the configuration descriptions.
+ *
+ ******************************************************************************/
+
+
+#ifndef CFG_STRINGIFY
+       #define CFG_STRINGIFY(x) #x
+#endif
+
+
+
+#ifndef CONFIG_KEYS_STRING_TYPE_DEFINED
+#define CONFIG_KEYS_STRING_TYPE_DEFINED
+  #define STRING_T_SIZE 128
+  typedef char string_t[STRING_T_SIZE+1];
+#endif // ! CONFIG_KEYS_STRING_TYPE_DEFINED
+#include <Maths/maths.h>
+#include <VLIB/video_codec.h>
+
+#ifndef CONFIG_KEYS_RW_ENUM_DEFINED
+#define CONFIG_KEYS_RW_ENUM_DEFINED
+
+/**
+ * @brief Describes the behaviour of a drone configuration variable.
+ */
+  enum {
+    K_READ    = 1,     /*!< Value can be read by a remote client */
+    K_WRITE   = 1<<1,  /*!< Value can be written by a remote client */
+    K_NOBIND  = 1<<2,  /*!< Data are stored to the config.ini file, but not read from this file at startup.*/
+    K_SHALLOW = 1<<3,  /*!< Data will no be stored to the config.ini file, nor read from this file at startup.*/
+  };
+
+  enum {
+         CAT_COMMON = 0,
+         CAT_APPLI  ,
+         CAT_USER   ,
+         CAT_SESSION,
+         NB_CONFIG_CATEGORIES
+  };
+
+  /* Stephane - multiconfiguration support */
+
+         /* Size of the hexadecimal ID representing a custom configuration - example : 1234abcd */
+               #define CUSTOM_CONFIGURATION_ID_LENGTH 8
+
+               typedef struct{
+                       char id[CUSTOM_CONFIGURATION_ID_LENGTH+1];
+                       char description[1024];
+               }custom_configuration_t;
+
+               typedef struct
+               {
+                       custom_configuration_t* list;
+                       int nb_configurations;
+               }custom_configuration_list_t;
+
+               extern const char * configuration_switching_commands[NB_CONFIG_CATEGORIES+1];
+               extern const char * custom_configuration_headers[NB_CONFIG_CATEGORIES+1];
+               extern const char * custom_configuration_id_keys[NB_CONFIG_CATEGORIES+1];
+               extern custom_configuration_list_t available_configurations[NB_CONFIG_CATEGORIES];
+
+               /**
+                * \brief Checks if a character is valid in a custom configuration identifier.
+                * Currently it checks if the character is an hexadecimal digit.
+                */
+               C_RESULT configuration_check_config_id_char(const char session_id_char);
+               /**
+                * \brief Checks if a string is a valid custom configuration identifier.
+                * Currently it checks if the string is made of 8 hexa. digits.
+                */
+               C_RESULT configuration_check_config_id(const char * session_id);
+
+
+  /* Stephane - multiconfiguration support */
+
+
+#endif // ! CONFIG_KEYS_RW_ENUM_DEFINED
+
+#ifndef CONFIG_KEYS_DEFINES_DEFINED
+
+# ifdef INSIDE_FLIGHT
+#   define MAX_EULER_ANGLES_REF (12000.0f * MDEG_TO_RAD)     /* EA control, maximum reference [rad] */
+#   define MAX_OUTDOOR_EULER_ANGLES_REF (20000.0f * MDEG_TO_RAD)     /* EA control, maximum reference [rad] */
+# else
+#   define MAX_EULER_ANGLES_REF (12000.0f * MDEG_TO_RAD)    /* EA control, maximum reference [rad] */
+#   define MAX_OUTDOOR_EULER_ANGLES_REF (20000.0f * MDEG_TO_RAD)     /* EA control, maximum reference [rad] */
+# endif
+
+# define CONFIG_KEYS_DEFINES_DEFINED
+//Calibration renvoye par le PIC dans le cas ou il n'en a pas recut
+#define DEFAULT_PWM_REF_GYRO                500
+#define DEFAULT_GYRO_OFFSET_THR_X           4.0
+#define DEFAULT_GYRO_OFFSET_THR_Y           4.0
+#define DEFAULT_GYRO_OFFSET_THR_Z           0.5
+//#define default_accs_offset          {{{ -2048.0f, 2048.0f, 2048.0f}}}
+//#define default_accs_gain            {1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, -1.0f }
+//#define default_gyros_offset         {{{ 1662.5f, 1662.5f, 1662.5f}}}
+//#define default_gyros_gains          {{{ 395.0f * MDEG_TO_RAD, -395.0f * MDEG_TO_RAD, -207.5f * MDEG_TO_RAD }}}
+//#define default_gyros110_offset      {{ 1662.5f, 1662.5f}}
+//#define default_gyros110_gains       {{ 87.5f * MDEG_TO_RAD, -87.5f * MDEG_TO_RAD }}
+#define default_motor_version         "0.0"
+#define NULL_MAC                                         "00:00:00:00:00:00"
+
+/* Selection of navdata blocks sent when starting the 'demo' mode */
+#define default_navdata_options ( NAVDATA_OPTION_MASK(NAVDATA_DEMO_TAG)|NAVDATA_OPTION_MASK(NAVDATA_VISION_DETECT_TAG) )
+
+#define COMPILE_TIME ( (2010-1970)*(365+(2010-1970)/4)*(24)*(3600) )
+
+extern const vector31_t default_accs_offset;
+extern const matrix33_t default_accs_gain;
+extern const vector31_t default_gyros_offset;
+extern const vector31_t default_gyros_gains;
+extern const vector21_t default_gyros110_offset;
+extern const vector21_t default_gyros110_gains;
+
+#define default_pwm_ref_gyro          DEFAULT_PWM_REF_GYRO
+#define default_gyro_offset_thr_x     DEFAULT_GYRO_OFFSET_THR_X
+#define default_gyro_offset_thr_y     DEFAULT_GYRO_OFFSET_THR_Y
+#define default_gyro_offset_thr_z     DEFAULT_GYRO_OFFSET_THR_Z
+
+#define default_euler_angle_ref_max                    MAX_EULER_ANGLES_REF
+#define default_outdoor_euler_angle_ref_max    MAX_OUTDOOR_EULER_ANGLES_REF
+# define default_altitude_max                          (3000)
+# define default_altitude_min                          (50)
+# define default_control_trim_z                (0.0f * MDEG_TO_RAD)
+# define default_control_iphone_tilt   (20000.0f * MDEG_TO_RAD)
+# define default_control_vz_max                        (700.0f)
+# define default_outdoor_control_vz_max        (1000.0f)
+# define default_control_yaw                   (100000.0f * MDEG_TO_RAD)
+# define default_outdoor_control_yaw   (200000.0f * MDEG_TO_RAD)
+
+#define default_enemy_colors                   (ARDRONE_DETECTION_COLOR_ORANGE_GREEN)
+#define default_groundstripe_colors     (ARDRONE_DETECTION_COLOR_ARRACE_FINISH_LINE)
+#define default_detect_type                            CAD_TYPE_NONE
+
+#define DEFAULT_APPLICATION_DESC "Default application configuration"
+#define DEFAULT_PROFILE_DESC "Default profile configuration"
+#define DEFAULT_SESSION_DESC "Default session configuration"
+
+#define CUSTOM_CONFIGURATION_DELETE_ALL_CMD "all"
+
+#ifndef CARD_VERSION
+#define CARD_VERSION 0x00
+#endif
+
+#endif // ! CONFIG_KEYS_DEFINES_DEFINED
+
+/* ---- List of configuration properties - see the Developer Guide for a comprehensive description ---- */
+
+/* Parameters attributes are : (KEY, NAME, INI_TYPE, C_TYPE, C_TYPE_PTR, RW, RW_CUSTOM, DEFAULT, CALLBACK)
+ * Key : category of parameter, used by the ini file parser ; corresponds to a section inside the config.ini file.
+ * Name : name of the parameter as found in the AT*CONFIG command, and as expected by ARDRONE_TOOL_CONFIGURATION_ADDEVENT
+
+ */
+#ifndef ARDRONE_CONFIG_KEY_IMM
+       #define ARDRONE_CONFIG_KEY_IMM(a,b,c,d,e,f,g,h)
+#endif
+#ifndef ARDRONE_CONFIG_KEY_STR
+       #define ARDRONE_CONFIG_KEY_STR(a,b,c,d,e,f,g,h)
+#endif
+#ifndef ARDRONE_CONFIG_KEY_REF
+       #define ARDRONE_CONFIG_KEY_REF(a,b,c,d,e,f,g,h)
+#endif
+
+#ifndef ARDRONE_CONFIG_KEY_IMM_a10
+#define ARDRONE_CONFIG_KEY_IMM_a10(a,b,c,d,e,f,g,h,i,j) ARDRONE_CONFIG_KEY_IMM(a,b,c,d,e,f,h,i)
+#endif
+#ifndef ARDRONE_CONFIG_KEY_STR_a10
+#define ARDRONE_CONFIG_KEY_STR_a10(a,b,c,d,e,f,g,h,i,j) ARDRONE_CONFIG_KEY_STR(a,b,c,d,e,f,h,i)
+#endif
+#ifndef ARDRONE_CONFIG_KEY_REF_a10
+#define ARDRONE_CONFIG_KEY_REF_a10(a,b,c,d,e,f,g,h,i,j) ARDRONE_CONFIG_KEY_REF(a,b,c,d,e,f,h,i)
+#endif
+
+ARDRONE_CONFIG_KEY_IMM_a10("general", num_version_config,  INI_INT,      int32_t,    int32_t*,     (K_READ|K_NOBIND), 0, CURRENT_NUM_VERSION_CONFIG,      default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("general", num_version_mb,      INI_INT,      int32_t,    int32_t*,     (K_READ|K_NOBIND), 0, CARD_VERSION,                         default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", num_version_soft,    INI_STRING,   string_t,   char*,               (K_READ|K_NOBIND), 0, CURRENT_NUM_VERSION_SOFT,        default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", soft_build_date,           INI_STRING,   string_t,   char*, (K_READ|K_NOBIND), 0, CURRENT_BUILD_DATE,              default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor1_soft,       INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor1_hard,       INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor1_supplier,           INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor2_soft,       INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor2_hard,       INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor2_supplier,           INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor3_soft,       INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor3_hard,       INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor3_supplier,     INI_STRING,   string_t,   char*,               (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor4_soft,       INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor4_hard,       INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", motor4_supplier,           INI_STRING,   string_t,   char*,         (K_READ|K_NOBIND), 0, default_motor_version,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("general", ardrone_name,        INI_STRING,   string_t,   char*,        (K_READ|K_WRITE ), 0, "My ARDrone",                    default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("general", flying_time,         INI_INT,      uint32_t,   uint32_t*,    (K_READ)         , 0, 0,                               default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("general", navdata_demo,        INI_BOOLEAN,  bool_t,     bool_t*,      (K_READ|K_WRITE) , 0, FALSE,                           navdata_demo_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("general", navdata_options,     INI_INT,      int32_t,    int32_t*,     (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), default_navdata_options, navdata_options_config_callback, CAT_APPLI)
+ARDRONE_CONFIG_KEY_IMM_a10("general", com_watchdog,        INI_INT,      int32_t,    int32_t*,     (K_READ|K_WRITE) , 0, COM_INPUT_LANDING_TIME,          default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("general", video_enable,        INI_BOOLEAN,  bool_t,     bool_t*,      (K_READ|K_WRITE) , 0, TRUE,                            default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("general", vision_enable,       INI_BOOLEAN,  bool_t,     bool_t*,      (K_READ|K_WRITE) , 0, TRUE,                            default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("general", vbat_min,            INI_INT,      int32_t,    int32_t*,     (K_READ|K_NOBIND), 0, VBAT_POWERING_OFF,               default_config_callback,CAT_COMMON)
+
+ARDRONE_CONFIG_KEY_REF_a10("control", accs_offset,         INI_VECTOR,   vector31_t, vector31_t*, (K_READ|K_NOBIND), 0, default_accs_offset,              default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_REF_a10("control", accs_gains,          INI_MATRIX,   matrix33_t, matrix33_t*, (K_READ|K_NOBIND), 0, default_accs_gain,              default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_REF_a10("control", gyros_offset,        INI_VECTOR,   vector31_t, vector31_t*, (K_READ|K_NOBIND), 0, default_gyros_offset,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_REF_a10("control", gyros_gains,         INI_VECTOR,   vector31_t, vector31_t*, (K_READ|K_NOBIND), 0, default_gyros_gains,            default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_REF_a10("control", gyros110_offset,     INI_VECTOR21, vector21_t, vector21_t*, (K_READ|K_NOBIND), 0, default_gyros110_offset,        default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_REF_a10("control", gyros110_gains,      INI_VECTOR21, vector21_t, vector21_t*, (K_READ|K_NOBIND), 0, default_gyros110_gains,         default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", gyro_offset_thr_x,   INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_NOBIND), 0, default_gyro_offset_thr_x,      default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", gyro_offset_thr_y,   INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_NOBIND), 0, default_gyro_offset_thr_y,      default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", gyro_offset_thr_z,   INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_NOBIND), 0, default_gyro_offset_thr_z,      default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", pwm_ref_gyros,       INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, default_pwm_ref_gyro,           default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", control_level,       INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE) , (K_READ|K_WRITE), 0,              default_config_callback,CAT_APPLI)
+ARDRONE_CONFIG_KEY_IMM_a10("control", shield_enable,       INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE) , 0, 1,                                 default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", euler_angle_max,     INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE) , (K_READ|K_WRITE), default_euler_angle_ref_max,       control_changed_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", altitude_max,        INI_INT,            int32_t,    int32_t*,     (K_READ|K_WRITE) , 0, default_altitude_max,              default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", altitude_min,        INI_INT,            int32_t,    int32_t*,     (K_READ|K_WRITE) , 0, default_altitude_min,              default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", control_trim_z,      INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE) , (K_READ|K_WRITE), default_control_trim_z,            default_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", control_iphone_tilt, INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE) , (K_READ|K_WRITE), default_control_iphone_tilt,       default_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", control_vz_max,      INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE) , (K_READ|K_WRITE), default_control_vz_max,          control_changed_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", control_yaw,         INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE) , (K_READ|K_WRITE), default_control_yaw,               control_changed_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", outdoor,           INI_BOOLEAN,  bool_t,     bool_t*,      (K_READ|K_WRITE) , 0, FALSE,                                           control_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", flight_without_shell,INI_BOOLEAN,  bool_t,     bool_t*,     (K_READ|K_WRITE) , 0, FALSE,                                      default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", brushless,                 INI_BOOLEAN,  bool_t, bool_t*,  (K_READ|K_WRITE) , 0, TRUE,                                            default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", autonomous_flight,   INI_BOOLEAN,  bool_t,     bool_t*,     (K_READ|K_WRITE) , 0, FALSE,                                      default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("control", manual_trim,               INI_BOOLEAN,  bool_t,     bool_t*,     (K_READ|K_WRITE), (K_READ|K_WRITE), FALSE,                                          default_config_callback,CAT_USER)
+
+ARDRONE_CONFIG_KEY_IMM_a10("control", indoor_euler_angle_max,     INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE), (K_READ|K_WRITE), default_euler_angle_ref_max,default_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", indoor_control_vz_max,      INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE), (K_READ|K_WRITE), default_control_vz_max,     default_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", indoor_control_yaw,         INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE), (K_READ|K_WRITE), default_control_yaw,        default_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", outdoor_euler_angle_max,    INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE), (K_READ|K_WRITE), default_outdoor_euler_angle_ref_max, default_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", outdoor_control_vz_max,     INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE), (K_READ|K_WRITE), default_outdoor_control_vz_max,      default_config_callback,CAT_USER)
+ARDRONE_CONFIG_KEY_IMM_a10("control", outdoor_control_yaw,        INI_FLOAT,    float32_t,  float32_t*,  (K_READ|K_WRITE), (K_READ|K_WRITE), default_outdoor_control_yaw,         default_config_callback,CAT_USER)
+
+ARDRONE_CONFIG_KEY_IMM_a10("control", flying_mode,        INI_INT,    int32_t,  int32_t*,   (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), (K_READ|K_WRITE), 0,                  flying_mode_config_callback,CAT_SESSION)
+ARDRONE_CONFIG_KEY_STR_a10("control", flight_anim,        INI_STRING,    string_t,  char*,  (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), 0, "0,0",         flight_animation_selection_callback,CAT_COMMON)
+
+ARDRONE_CONFIG_KEY_STR_a10("network", ssid_single_player,  INI_STRING,   string_t,   char*,       (K_READ|K_WRITE), 0, WIFI_NETWORK_NAME,               default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("network", ssid_multi_player,   INI_STRING,   string_t,   char*,       (K_READ|K_WRITE), 0,  WIFI_NETWORK_NAME,               default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", wifi_mode,           INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), 0,  WIFI_MODE_INFRA,                               default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", secure,              INI_BOOLEAN,  bool_t,     bool_t*,     (K_READ|K_WRITE), 0,  0,                               default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("network", passkey,             INI_STRING,   string_t,   char*,       (K_READ|K_WRITE), 0,  "",                              default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", navdata_port,        INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, NAVDATA_PORT,                    default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", video_port,          INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, VIDEO_PORT,                      default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", at_port,             INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, AT_PORT,                         default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", cmd_port,            INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, CONTROL_PORT,                    default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_STR_a10("network", owner_mac,           INI_STRING,   string_t,   char*,       (K_READ|K_WRITE), 0, NULL_MAC,                        owner_mac_callback,      CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", owner_ip_address,    INI_INT,      uint32_t,   uint32_t*,   (K_READ|K_WRITE), 0, 0,                               default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", local_ip_address,    INI_INT,      uint32_t,   uint32_t*,   (K_READ|K_WRITE), 0, 0,                               default_config_callback, CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("network", broadcast_address,   INI_INT,      uint32_t,   uint32_t*,   (K_READ|K_WRITE), 0, 0,                               default_config_callback, CAT_COMMON)
+
+ARDRONE_CONFIG_KEY_IMM_a10("pic",     ultrasound_freq,     INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), 0, ADC_CMD_SELECT_ULTRASOUND_25Hz,    ultrasound_freq_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("pic",     ultrasound_watchdog, INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), 0, 3,                                 default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("pic",     pic_version        , INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, 0x00040030,              default_config_callback,CAT_COMMON)
+
+ARDRONE_CONFIG_KEY_IMM_a10("video",   camif_fps,           INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, 15,                     default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("video",   camif_buffers,       INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, CAMIF_NUM_BUFFERS,      default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("video",   num_trackers,        INI_INT,      int32_t,    int32_t*,    (K_READ|K_NOBIND), 0, 12,                     default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("video",   bitrate,             INI_INT,      int32_t,    int32_t*,   (K_READ|K_SHALLOW), (K_READ|K_WRITE), 0,               default_config_callback,CAT_APPLI)
+ARDRONE_CONFIG_KEY_IMM_a10("video",   bitrate_ctrl_mode,   INI_INT,      int32_t,    int32_t*,    (K_READ|K_SHALLOW), (K_READ|K_WRITE), 0,               default_config_callback,CAT_APPLI)
+ARDRONE_CONFIG_KEY_IMM_a10("video",   video_codec,               INI_INT,      int32_t,    int32_t*,    (K_READ|K_SHALLOW), (K_READ|K_WRITE), UVLC_CODEC,                codec_config_callback, CAT_APPLI)
+ARDRONE_CONFIG_KEY_IMM_a10("video",   video_channel,       INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), (K_READ|K_WRITE), 0,   video_channel_selection_callback,CAT_SESSION)
+
+ARDRONE_CONFIG_KEY_STR_a10("leds",    leds_anim,           INI_STRING,   string_t,    char*,      (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), 0, "0,0,0",           leds_animation_selection_callback,CAT_COMMON)
+
+ARDRONE_CONFIG_KEY_IMM_a10("detect",  enemy_colors,      INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), 0, default_enemy_colors,                      default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("detect",  groundstripe_colors, INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), (K_READ|K_WRITE), default_groundstripe_colors,      default_config_callback,CAT_SESSION)
+ARDRONE_CONFIG_KEY_IMM_a10("detect",  enemy_without_shell, INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), 0, 0,                                                               default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("detect",  detect_type,               INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE|K_NOBIND), (K_READ|K_WRITE|K_NOBIND), default_detect_type,      detect_type_callback,CAT_SESSION)
+ARDRONE_CONFIG_KEY_IMM_a10("detect",  detections_select_h,               INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE|K_NOBIND), (K_READ|K_WRITE), 0,      detections_select_callback,CAT_SESSION)
+ARDRONE_CONFIG_KEY_IMM_a10("detect",  detections_select_v_hsync,  INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE|K_NOBIND), (K_READ|K_WRITE), 0,      detections_select_callback,CAT_SESSION)
+ARDRONE_CONFIG_KEY_IMM_a10("detect",  detections_select_v,               INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE|K_NOBIND), (K_READ|K_WRITE), 0,      detections_select_callback,CAT_SESSION)
+
+ARDRONE_CONFIG_KEY_IMM_a10("syslog",  output,              INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), 0, (UART_PRINT|WIFI_PRINT|FLASH_PRINT), default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("syslog",  max_size,            INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), 0, (100*1024),                          default_config_callback,CAT_COMMON)
+ARDRONE_CONFIG_KEY_IMM_a10("syslog",  nb_files,            INI_INT,      int32_t,    int32_t*,    (K_READ|K_WRITE), 0, 5,                                 default_config_callback,CAT_COMMON)
+
+/*- Multi configuration management -*/
+ARDRONE_CONFIG_KEY_STR_a10("custom",  application_id,      INI_STRING,   string_t,    char*,    (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), (K_READ|K_WRITE), "00000000",     default_config_callback,CAT_SESSION)
+ARDRONE_CONFIG_KEY_STR_a10("custom",  application_desc,    INI_STRING,   string_t,    char*,    (K_READ|K_WRITE), (K_READ|K_WRITE), DEFAULT_APPLICATION_DESC,          application_desc_callback,CAT_APPLI)
+
+ARDRONE_CONFIG_KEY_STR_a10("custom",  profile_id,          INI_STRING,   string_t,    char*,    (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), (K_READ|K_WRITE), "00000000",     default_config_callback,CAT_SESSION)
+ARDRONE_CONFIG_KEY_STR_a10("custom",  profile_desc,        INI_STRING,   string_t,    char*,    (K_READ|K_WRITE),  (K_READ|K_WRITE),                                  DEFAULT_PROFILE_DESC,              profile_desc_callback,CAT_USER)
+
+ARDRONE_CONFIG_KEY_STR_a10("custom",  session_id,          INI_STRING,   string_t,    char*,    (K_READ|K_WRITE|K_NOBIND|K_SHALLOW), (K_READ|K_WRITE), "00000000",     default_config_callback,CAT_SESSION)
+ARDRONE_CONFIG_KEY_STR_a10("custom",  session_desc,        INI_STRING,   string_t,    char*,    (K_READ|K_WRITE),  (K_READ|K_WRITE),                                  DEFAULT_SESSION_DESC,              session_desc_callback,CAT_SESSION)
+
+/* Prevents a further inclusion of config_keys from generating garbage code */
+#undef ARDRONE_CONFIG_KEY_IMM_a10
+#undef ARDRONE_CONFIG_KEY_REF_a10
+#undef ARDRONE_CONFIG_KEY_STR_a10
+#undef ARDRONE_CONFIG_KEY_IMM
+#undef ARDRONE_CONFIG_KEY_REF
+#undef ARDRONE_CONFIG_KEY_STR