2 #include "ARDroneTypes.h"
3 #include <control_states.h>
4 #include <ardrone_tool/Navdata/ardrone_navdata_file.h>
5 #include <ardrone_tool/Navdata/ardrone_navdata_client.h>
6 navdata_unpacked_t inst_nav;
7 vp_os_mutex_t inst_nav_mutex;
8 extern char root_dir[];
9 static bool_t writeToFile = FALSE;
11 static inline C_RESULT ardrone_navdata_init( void* data )
13 vp_os_mutex_init( &inst_nav_mutex );
15 vp_os_mutex_lock( &inst_nav_mutex);
16 ardrone_navdata_reset_data(&inst_nav);
17 vp_os_mutex_unlock( &inst_nav_mutex);
24 static inline C_RESULT ardrone_navdata_process( const navdata_unpacked_t* const navdata )
28 if( navdata_file == NULL )
30 ardrone_navdata_file_init(root_dir);
32 PRINT("Saving in %s file\n", root_dir);
34 ardrone_navdata_file_process( navdata );
38 if(navdata_file != NULL)
39 ardrone_navdata_file_release();
42 vp_os_mutex_lock( &inst_nav_mutex);
43 /* inst_nav.ardrone_state = navdata->ardrone_state;
44 inst_nav.vision_defined = navdata->vision_defined;
45 vp_os_memcpy(&inst_nav.navdata_demo, &navdata->navdata_demo, sizeof(navdata_demo_t));
46 vp_os_memcpy(&inst_nav.navdata_vision_detect, &navdata->navdata_vision_detect, sizeof(navdata_vision_detect_t));
48 vp_os_memcpy(&inst_nav, navdata, sizeof(navdata_unpacked_t));
49 vp_os_mutex_unlock( &inst_nav_mutex );
54 static inline C_RESULT ardrone_navdata_release( void )
56 ardrone_navdata_file_release();
60 C_RESULT ardrone_navdata_write_to_file(bool_t enable)
66 C_RESULT ardrone_navdata_reset_data(navdata_unpacked_t *nav)
68 C_RESULT result = C_FAIL;
72 vp_os_memset(nav, 0x0, sizeof(navdata_unpacked_t));
79 C_RESULT ardrone_navdata_get_data(navdata_unpacked_t *data)
81 C_RESULT result = C_FAIL;
85 vp_os_mutex_lock( &inst_nav_mutex );
86 /* data->ardrone_state = inst_nav.ardrone_state;
87 data->vision_defined = inst_nav.vision_defined;
88 vp_os_memcpy(&data->navdata_demo, &inst_nav.navdata_demo, sizeof(navdata_demo_t));
89 vp_os_memcpy(&data->navdata_vision_detect, &inst_nav.navdata_vision_detect, sizeof(navdata_vision_detect_t));
91 vp_os_memcpy(data, &inst_nav, sizeof(navdata_unpacked_t));
92 vp_os_mutex_unlock( &inst_nav_mutex );
99 ARDRONE_FLYING_STATE ardrone_navdata_get_flying_state(navdata_unpacked_t data)
101 ARDRONE_FLYING_STATE tmp_state;
102 switch ((data.navdata_demo.ctrl_state >> 16))
106 case CTRL_TRANS_GOTOFIX:
107 tmp_state = ARDRONE_FLYING_STATE_FLYING;
110 case CTRL_TRANS_TAKEOFF:
111 tmp_state = ARDRONE_FLYING_STATE_TAKING_OFF;
114 case CTRL_TRANS_LANDING:
115 tmp_state = ARDRONE_FLYING_STATE_LANDING;
121 tmp_state = ARDRONE_FLYING_STATE_LANDED;
128 BEGIN_NAVDATA_HANDLER_TABLE
129 NAVDATA_HANDLER_TABLE_ENTRY(ardrone_navdata_init, ardrone_navdata_process, ardrone_navdata_release, NULL)
130 END_NAVDATA_HANDLER_TABLE