ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VP_SDK / Examples / elinux / api_threads.c
diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/VP_SDK/Examples/elinux/api_threads.c b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/VP_SDK/Examples/elinux/api_threads.c
new file mode 100644 (file)
index 0000000..e9b1698
--- /dev/null
@@ -0,0 +1,82 @@
+/**
+ *  \brief    VP Api. Filter encoder/decoder stage declaration
+ *  \author   Sylvain Gaeremynck <sylvain.gaeremynck\@parrot.fr>
+ *  \author   Aurelien Morelle <aurelien.morelle\@parrot.fr>
+ *  \author   Thomas Landais <thomas.landais\@parrot.fr>
+ *  \version  2.0
+ *  \date     first release 16/03/2007
+ *  \date     modification  21/03/2007
+ */
+
+///////////////////////////////////////////////
+// INCLUDES
+
+#include <VP_Api/vp_api_error.h>
+#include <VP_Api/vp_api_thread_helper.h>
+#include <VP_Os/vp_os_print.h>
+#include <VP_Os/vp_os_delay.h>
+
+
+#define STACK_SIZE 40000
+
+
+PROTO_THREAD_ROUTINE(thread1,nomParams);
+PROTO_THREAD_ROUTINE(thread2,nomParams);
+PROTO_THREAD_ROUTINE(thread3,nomParams);
+
+BEGIN_THREAD_TABLE
+  THREAD_TABLE_ENTRY(thread1,20)
+  THREAD_TABLE_ENTRY(thread2,20)
+  THREAD_TABLE_ENTRY(thread3,20)
+END_THREAD_TABLE
+
+PROTO_THREAD_ROUTINE(thread1,nomParams)
+{
+  PRINT("Thread 1 Start\n");
+
+  while(1)
+    {
+      vp_os_delay(100);
+      PRINT("Thread 1 Loop\n");
+    }
+}
+
+PROTO_THREAD_ROUTINE(thread2,nomParams)
+{
+  PRINT("Thread 2 Start\n");
+
+  while(1)
+    {
+      vp_os_delay(200);
+      PRINT("Thread 2 Loop\n");
+    }
+}
+
+PROTO_THREAD_ROUTINE(thread3,nomParams)
+{
+  PRINT("Thread 3 Start\n");
+
+  while(1)
+    {
+      vp_os_delay(300);
+      PRINT("Thread 3 Loop\n");
+    }
+}
+
+void runApplication(void)
+{
+  START_THREAD(thread1, NO_PARAM);
+  START_THREAD(thread2, NO_PARAM);
+  START_THREAD(thread3, NO_PARAM);
+
+  JOIN_THREAD(thread1);
+  JOIN_THREAD(thread2);
+  JOIN_THREAD(thread3);
+}
+
+int main(int argc, char **argv)
+{
+  runApplication();
+
+  return 0;
+}