5 * Created by Karl Leplat on 19/02/10.
6 * Copyright 2010 Parrot SA. All rights reserved.
9 #include "mobile_main.h"
13 //#define DEBUG_THREAD 1
15 static bool_t bContinue = TRUE;
16 char drone_address[MAXADDRS];
18 DEFINE_THREAD_ROUTINE(mobile_main, data)
20 C_RESULT res = C_FAIL;
21 vp_com_wifi_config_t *config = NULL;
23 mobile_main_param_t *param = (mobile_main_param_t *)data;
25 ardroneEngineCallback callback = param->callback;
26 vp_os_memset(drone_address, 0x0, sizeof(drone_address));
28 while(((config = (vp_com_wifi_config_t *)wifi_config()) != NULL) && (strcmp(config->itfName, WIFI_ITFNAME) != 0))
30 PRINT("Wait WIFI connection !\n");
35 vp_os_memcpy(drone_address, config->server, strlen(config->server));
36 PRINT("Drone address %s\n", drone_address);
38 // Get iphone_mac_address
39 get_iphone_mac_address(config->itfName);
40 PRINT("Iphone MAC Address %s\n", iphone_mac_address);
42 res = ardrone_tool_setup_com( NULL );
46 PRINT("Wifi initialization failed. It means either:\n");
47 PRINT("\t* you're not root (it's mandatory because you can set up wifi connection only as root)\n");
48 PRINT("\t* wifi device is not present (on your pc or on your card)\n");
49 PRINT("\t* you set the wrong name for wifi interface (for example rausb0 instead of wlan0) \n");
50 PRINT("\t* ap is not up (reboot card or remove wifi usb dongle)\n");
51 PRINT("\t* wifi device has no antenna\n");
55 START_THREAD(video_stage, NULL);
57 res = ardrone_tool_init(drone_address, strlen(drone_address), NULL, param->appName, param->usrName);
59 callback(ARDRONE_ENGINE_INIT_OK);
61 ardrone_tool_set_refresh_time(1000 / kAPS);
63 while( SUCCEED(res) && bContinue == TRUE )
65 ardrone_tool_update();
68 JOIN_THREAD(video_stage);
70 res = ardrone_tool_shutdown();
75 return (THREAD_RET)res;
78 void ardroneEnginePause( void )
81 PRINT( "%s\n", __FUNCTION__ );
83 video_stage_suspend_thread();
87 void ardroneEngineResume( void )
90 PRINT( "%s\n", __FUNCTION__ );
92 video_stage_resume_thread();
93 ardrone_tool_resume();
96 void ardroneEngineStart ( ardroneEngineCallback callback, const char *appName, const char *usrName )
99 PRINT( "%s\n", __FUNCTION__ );
102 mobile_main_param_t *param = vp_os_malloc (sizeof (mobile_main_param_t));
105 param->callback = callback;
106 strcpy(param->appName, appName);
107 strcpy(param->usrName, usrName);
108 START_THREAD( mobile_main, param);
112 void ardroneEngineStop (void)
114 PRINT( "%s\n", __FUNCTION__ );
115 ardroneEnginePause();
119 C_RESULT custom_update_user_input(input_state_t* input_state, uint32_t user_input)
122 printf("%s\n", __FUNCTION__);
128 C_RESULT custom_reset_user_input(input_state_t* input_state, uint32_t user_input)
131 printf("%s\n", __FUNCTION__);
136 C_RESULT ardrone_tool_display_custom()
139 printf("%s\n", __FUNCTION__);
144 THREAD_TABLE_ENTRY(mobile_main, 20)
145 THREAD_TABLE_ENTRY(ardrone_control, 20)
146 THREAD_TABLE_ENTRY(navdata_update, 20)
147 THREAD_TABLE_ENTRY(video_stage, 20)