Projet Drone de surveillance du labo TRSE (INGESUP)

Dependencies:   mbed PID ADXL345 Camera_LS_Y201 ITG3200 RangeFinder mbos xbee_lib Motor Servo

Revision:
32:74608bce78f6
Parent:
10:c8d73680b9fd
Child:
33:f85d47baaeb4
--- a/main.cpp	Wed Apr 03 13:48:30 2013 +0000
+++ b/main.cpp	Sat Apr 27 11:00:25 2013 +0000
@@ -16,8 +16,9 @@
  * Input
  * Output
  */
-
-/*#include "mbed.h"
+ 
+/*
+#include "mbed.h"
 #include "mbos.h"
 
 DigitalOut myled(LED1);
@@ -32,33 +33,39 @@
         //modification
     }
 }*/
+
 #include "mbed.h"                    
 #include "mbos.h"
- 
-#define TASK1_ID                1       // Id for task 1 (idle task is 0)
-#define TASK1_PRIO              50      // priority for task 1
-#define TASK1_STACK_SZ          32      // stack size for task 1 in words 
-#define TASK2_ID                2       // Id for task 2 
-#define TASK2_PRIO              60      // priority for task 2
-#define TASK2_STACK_SZ          32      // stack size for task 2 in words 
-#define TIMER0_ID               0       // Id for timer 0
-#define TIMER0_PERIOD           1000    // Time period in milliseconds
-#define TIMER0_EVENT            1       // Event flag (1 << 0)
-#define T1_TO_T2_EVENT          2       // Event flag (1 << 1)
+#include "os.h"
+
 
 void task1(void);                       // task function prototypes
 void task2(void);
 
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
-mbos os(2, 1);                          // Instantiate mbos with 2 tasks & 1 timer    
+DigitalOut led3(LED3);
+mbos os(2, 2);                          // Instantiate mbos with 7 tasks & 7 timer    
+
 
 int main(void)
 {
    // Configure tasks and timers
-   os.CreateTask(TASK1_ID, TASK1_PRIO, TASK1_STACK_SZ, task1);
-   os.CreateTask(TASK2_ID, TASK2_PRIO, TASK2_STACK_SZ, task2);
-   os.CreateTimer(TIMER0_ID, TIMER0_EVENT, TASK1_ID);
+   os.CreateTask(TASK_COM, TASK_COM_PRIO, TASK_COM_STACK_SZ, task1);
+   os.CreateTask(TASK_DETEC, TASK_DETEC_PRIO, TASK_DETEC_STACK_SZ, task2);
+   /*os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, task1);
+   os.CreateTask(TASK_TRAJ, TASK_TRAJ_PRIO, TASK_TRAJ_STACK_SZ, task2);
+   os.CreateTask(TASK_BATT, TASK_BATT_PRIO, TASK_BATT_STACK_SZ, task1);
+   os.CreateTask(TASK_VIDEO, TASK_VIDEO_PRIO, TASK_VIDEO_STACK_SZ, task2);
+   os.CreateTask(TASK_ARRET_URGENT, TASK_ARRET_URGENT_PRIO, TASK_ARRET_URGENT_STACK_SZ, task1);*/
+
+   os.CreateTimer(TIMER_COM_ID, TASK_COM, TIMER_EVENT);
+   os.CreateTimer(TIMER_DETEC_ID, TASK_DETEC, TIMER_EVENT);
+   /*os.CreateTimer(TIMER_MOUV_ID, TIMER_MOUV_PERIOD, TIMER_MOUV_EVENT);
+   os.CreateTimer(TIMER_BATT_ID, TIMER_BATT_PERIOD, TIMER_BATT_EVENT);
+   os.CreateTimer(TIMER_VIDEO_ID, TIMER_VIDEO_PERIOD, TIMER_VIDEO_EVENT);
+   os.CreateTimer(TIMER_ARRET_URGENT_ID, TIMER_ARRET_URGENT_PERIOD, TIMER_ARRET_URGENT_EVENT);*/
+
     // Start mbos
    os.Start();
     // never  return!
@@ -66,22 +73,28 @@
 
 void task1(void)
 {
-    os.SetTimer(TIMER0_ID, TIMER0_PERIOD, TIMER0_PERIOD);
+    os.SetTimer(TIMER_COM_ID, TIMER_COM_PERIOD, TIMER_COM_PERIOD);
     while(1){
-        os.WaitEvent(TIMER0_EVENT);
+        os.WaitEvent(TIMER_EVENT);
         led1 = !led1;
-        os.SetEvent(T1_TO_T2_EVENT, TASK2_ID);
+        os.SetEvent(COMMUNICATION_EVENT, TASK_DETEC);
     }
 }
 
 void task2(void)
 {
+    os.SetTimer(TIMER_DETEC_ID, TIMER_DETEC_PERIOD, TIMER_DETEC_PERIOD);
     while(1){
-        os.WaitEvent(T1_TO_T2_EVENT);
-        led2 = 1;
-        wait_ms(100);
-        led2 = 0;
+        os.WaitEvent(TIMER_EVENT | COMMUNICATION_EVENT);
+        /*switch(os.GetEvent()){
+            case TIMER_EVENT:
+                led2 = !led2;
+            break;
+            case COMMUNICATION_EVENT:
+                led3 = !led3;
+            break;
+        }*/
+        if(os.GetEvent() & TIMER_EVENT) led2 = !led2;
+        if(os.GetEvent() & COMMUNICATION_EVENT) led3 = !led3;
    }
 }
-/*@endcode
- */
\ No newline at end of file