2 #include <ardrone_api.h>
3 #include <ardrone_tool/Control/ardrone_control_ack.h>
5 C_RESULT ardrone_control_ack_run( uint32_t ardrone_state, ardrone_control_ack_event_t* event )
9 switch( event->ack_state )
11 case ACK_COMMAND_MASK_TRUE:
12 res = ( ardrone_state & ARDRONE_COMMAND_MASK ) ? C_OK : C_FAIL;
13 if( VP_SUCCEEDED(res) )
15 ardrone_at_update_control_mode( ACK_CONTROL_MODE, 0);
16 event->ack_state = ACK_COMMAND_MASK_FALSE;
20 case ACK_COMMAND_MASK_FALSE:
21 ardrone_at_update_control_mode( ACK_CONTROL_MODE, 0);
23 res = ( ( ardrone_state & ARDRONE_COMMAND_MASK ) == 0 ) ? C_OK : C_FAIL;
24 if( VP_SUCCEEDED(res) )
25 event->status = ARDRONE_CONTROL_EVENT_FINISH_SUCCESS;
30 event->ack_state = ACK_COMMAND_MASK_TRUE; // Go back to a know state (we may timeout)