--- /dev/null
+#ifndef _ARDRONE_NAVDATA_CLIENT_H_
+#define _ARDRONE_NAVDATA_CLIENT_H_
+
+#include <VP_Os/vp_os_types.h>
+#include <VP_Api/vp_api_thread_helper.h>
+
+#include <ardrone_api.h>
+#include <ardrone_tool/Control/ardrone_navdata_control.h>
+#include <ardrone_tool/Navdata/ardrone_general_navdata.h>
+#include <config.h>
+
+#define NAVDATA_MAX_RETRIES 5
+
+// Facility to declare a set of navdata handler
+// Handler to resume control thread is mandatory
+#define BEGIN_NAVDATA_HANDLER_TABLE \
+ ardrone_navdata_handler_t ardrone_navdata_handler_table[] = {
+
+#define END_NAVDATA_HANDLER_TABLE \
+ { ardrone_general_navdata_init, ardrone_general_navdata_process, ardrone_general_navdata_release, NULL }, \
+ { ardrone_navdata_control_init, ardrone_navdata_control_process, ardrone_navdata_control_release, NULL }, \
+ { NULL, NULL, NULL, NULL } \
+};
+
+#define NAVDATA_HANDLER_TABLE_ENTRY( init, process, release, init_data_ptr ) \
+ { (ardrone_navdata_handler_init_t)init, process, release, init_data_ptr },
+
+typedef C_RESULT (*ardrone_navdata_handler_init_t)( void* data );
+typedef C_RESULT (*ardrone_navdata_handler_process_t)( const navdata_unpacked_t* const navdata );
+typedef C_RESULT (*ardrone_navdata_handler_release_t)( void );
+
+typedef struct _ardrone_navdata_handler_t {
+ ardrone_navdata_handler_init_t init;
+ ardrone_navdata_handler_process_t process;
+ ardrone_navdata_handler_release_t release;
+
+ void* data; // Data used during initialization
+} ardrone_navdata_handler_t;
+
+typedef enum
+{
+ NAVDATA_BOOTSTRAP = 0,
+ NAVDATA_DEMO,
+ NAVDATA_FULL
+} navdata_mode_t;
+
+extern ardrone_navdata_handler_t ardrone_navdata_handler_table[] WEAK;
+
+uint32_t ardrone_navdata_client_get_num_retries(void);
+C_RESULT ardrone_navdata_client_init(void);
+C_RESULT ardrone_navdata_client_suspend(void);
+C_RESULT ardrone_navdata_client_resume(void);
+C_RESULT ardrone_navdata_client_shutdown(void);
+C_RESULT ardrone_navdata_open_server(void);
+
+PROTO_THREAD_ROUTINE( navdata_update , nomParams );
+
+#endif // _ARDRONE_NAVDATA_H_
+