ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VP_SDK / Examples / linux / wifi.c
diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/VP_SDK/Examples/linux/wifi.c b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/VP_SDK/Examples/linux/wifi.c
new file mode 100644 (file)
index 0000000..4791e1b
--- /dev/null
@@ -0,0 +1,116 @@
+#include <Com/com.h>
+#include <VP_Os/vp_os_print.h>
+#include <VP_Os/vp_os_delay.h>
+#include <VP_Api/vp_api_error.h>
+
+#include <iwlib.h>
+#include <netdb.h>
+#include <sys/socket.h>
+
+#include <sys/timeb.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <time.h>
+
+#define DRONE_HOST "192.168.1.2"
+#define DRONE_PORT 5555
+
+#define TIME_TO_SEND 1024*10
+#define SIZE_TO_SEND 1024
+
+static com_socket_t     clt;
+static Read             my_read;
+static Write            my_write;
+
+static int8_t buffer[SIZE_TO_SEND];
+static int32_t size;
+
+static uint32_t timeGetTime()
+{
+  struct timeval tv; struct timezone tz;
+
+  gettimeofday(&tv,&tz);
+
+  return (uint32_t)( tv.tv_sec*1000 + tv.tv_usec/10000 );
+}
+
+int main(void)
+{
+  com_config_t config;
+  vp_com_connection_t connection;
+
+  config.connection = VP_COM_WIFI;
+  config.localAdapterName = "rausb0";
+
+  connection.essid = "Drone";
+  connection.channel = 10;
+
+  if(FAILED(com_init(&config)))
+    PRINT("com_init failed\n");
+
+  if(FAILED(com_passKey("9F1C3EE11CBA230B27BF1C1B6F")))
+    PRINT("com_passKey failed\n");
+
+  if(FAILED(com_connect(&connection,1)))
+    PRINT("com_connect failed\n");
+
+  clt.socket      = VP_COM_CLIENT;
+  clt.port        = DRONE_PORT;
+  clt.serverHost  = DRONE_HOST;
+
+  if(SUCCEED(com_open(&clt,&my_read,&my_write)))
+  {
+    int32_t i = 0;
+    float st = timeGetTime();
+    float et = timeGetTime();
+    float db = 0.0f;
+    float d = 0.0f;
+
+    for(i=0; i < TIME_TO_SEND;i++)
+    {
+      int32_t received;
+
+      PRINT("\r reception n° %d... ",i);
+
+      received  = 0;
+      size      = SIZE_TO_SEND;
+
+      while(received != SIZE_TO_SEND)
+      {
+        my_read(&clt,buffer,&size);
+        received += size;
+        size = SIZE_TO_SEND - received;
+      }
+
+      PRINT("%d bytes           ",received);
+    }
+
+    et = timeGetTime();
+    d = (et - st) / 1000.0f;
+    if(d > 0)
+    {
+      float tx = SIZE_TO_SEND * TIME_TO_SEND / 1024.0f;
+      db = tx / d;
+    }
+    PRINT("\n---------------\n");
+    PRINT("Start Time : %f\n",st);
+    PRINT("End Time : %f\n",et);
+    PRINT("%d Kbytes sent in %f time\n",SIZE_TO_SEND * TIME_TO_SEND / 1024,d);
+    PRINT("Debit: %f\n",db);
+    PRINT("\n---------------\n");
+  }
+  else
+  {
+    PRINT("snif... pas connecte a la socket\n");
+  }
+
+  PRINT("Waiting for disconnection\n");
+  vp_delay(5000);
+
+  com_disconnect();
+  PRINT("Disconnected\n");
+
+  com_shutdown();
+
+  return 0;
+}