ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VP_SDK / Examples / elinux / api_threads.c
1 /**
2  *  \brief    VP Api. Filter encoder/decoder stage declaration
3  *  \author   Sylvain Gaeremynck <sylvain.gaeremynck\@parrot.fr>
4  *  \author   Aurelien Morelle <aurelien.morelle\@parrot.fr>
5  *  \author   Thomas Landais <thomas.landais\@parrot.fr>
6  *  \version  2.0
7  *  \date     first release 16/03/2007
8  *  \date     modification  21/03/2007
9  */
10
11 ///////////////////////////////////////////////
12 // INCLUDES
13
14 #include <VP_Api/vp_api_error.h>
15 #include <VP_Api/vp_api_thread_helper.h>
16 #include <VP_Os/vp_os_print.h>
17 #include <VP_Os/vp_os_delay.h>
18
19
20 #define STACK_SIZE 40000
21
22
23 PROTO_THREAD_ROUTINE(thread1,nomParams);
24 PROTO_THREAD_ROUTINE(thread2,nomParams);
25 PROTO_THREAD_ROUTINE(thread3,nomParams);
26
27 BEGIN_THREAD_TABLE
28   THREAD_TABLE_ENTRY(thread1,20)
29   THREAD_TABLE_ENTRY(thread2,20)
30   THREAD_TABLE_ENTRY(thread3,20)
31 END_THREAD_TABLE
32
33 PROTO_THREAD_ROUTINE(thread1,nomParams)
34 {
35   PRINT("Thread 1 Start\n");
36
37   while(1)
38     {
39       vp_os_delay(100);
40       PRINT("Thread 1 Loop\n");
41     }
42 }
43
44 PROTO_THREAD_ROUTINE(thread2,nomParams)
45 {
46   PRINT("Thread 2 Start\n");
47
48   while(1)
49     {
50       vp_os_delay(200);
51       PRINT("Thread 2 Loop\n");
52     }
53 }
54
55 PROTO_THREAD_ROUTINE(thread3,nomParams)
56 {
57   PRINT("Thread 3 Start\n");
58
59   while(1)
60     {
61       vp_os_delay(300);
62       PRINT("Thread 3 Loop\n");
63     }
64 }
65
66 void runApplication(void)
67 {
68   START_THREAD(thread1, NO_PARAM);
69   START_THREAD(thread2, NO_PARAM);
70   START_THREAD(thread3, NO_PARAM);
71
72   JOIN_THREAD(thread1);
73   JOIN_THREAD(thread2);
74   JOIN_THREAD(thread3);
75 }
76
77 int main(int argc, char **argv)
78 {
79   runApplication();
80
81   return 0;
82 }