ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / Soft / Lib / ardrone_tool / Navdata / ardrone_navdata_client.h
diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Lib/ardrone_tool/Navdata/ardrone_navdata_client.h b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Lib/ardrone_tool/Navdata/ardrone_navdata_client.h
new file mode 100644 (file)
index 0000000..7818ef8
--- /dev/null
@@ -0,0 +1,59 @@
+#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_
+