Projet Drone de surveillance du labo TRSE (INGESUP)

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

Committer:
Gaetan
Date:
Sat Apr 27 11:29:23 2013 +0000
Revision:
33:f85d47baaeb4
Parent:
29:a0800d3da787
Parent:
32:74608bce78f6
Child:
34:4466839f5bb7
Un exemple d'utilisation de l'os est ajout? (avec commentaire).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gaetan 10:c8d73680b9fd 1 /* Copyright (c) 2012 - 2013 Gaëtan PLEYBER
Gaetan 10:c8d73680b9fd 2 *
Gaetan 10:c8d73680b9fd 3 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
Gaetan 10:c8d73680b9fd 4 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
Gaetan 10:c8d73680b9fd 5 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
Gaetan 10:c8d73680b9fd 6 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
Gaetan 10:c8d73680b9fd 7 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
Gaetan 10:c8d73680b9fd 8 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
Gaetan 10:c8d73680b9fd 9 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
Gaetan 10:c8d73680b9fd 10 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
Gaetan 10:c8d73680b9fd 11 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Gaetan 10:c8d73680b9fd 12 */
Gaetan 10:c8d73680b9fd 13
Gaetan 10:c8d73680b9fd 14 /*
Gaetan 10:c8d73680b9fd 15 * Description
Gaetan 10:c8d73680b9fd 16 * Input
Gaetan 10:c8d73680b9fd 17 * Output
Gaetan 10:c8d73680b9fd 18 */
NicolasH 0:8d93a5e4e4ab 19
Gaetan 32:74608bce78f6 20
Gaetan 6:0e3d95e9885e 21 #include "mbed.h"
Gaetan 6:0e3d95e9885e 22 #include "mbos.h"
IngesupMbed01 29:a0800d3da787 23 #include "Module_Communication.h"
Gaetan 32:74608bce78f6 24 #include "os.h"
Gaetan 32:74608bce78f6 25
Gaetan 6:0e3d95e9885e 26 void task1(void); // task function prototypes
Gaetan 6:0e3d95e9885e 27 void task2(void);
Gaetan 6:0e3d95e9885e 28
Gaetan 6:0e3d95e9885e 29 DigitalOut led1(LED1);
Gaetan 6:0e3d95e9885e 30 DigitalOut led2(LED2);
Gaetan 32:74608bce78f6 31 DigitalOut led3(LED3);
Gaetan 32:74608bce78f6 32 mbos os(2, 2); // Instantiate mbos with 7 tasks & 7 timer
Gaetan 32:74608bce78f6 33
Gaetan 6:0e3d95e9885e 34
Gaetan 6:0e3d95e9885e 35 int main(void)
Gaetan 6:0e3d95e9885e 36 {
Gaetan 33:f85d47baaeb4 37
Gaetan 33:f85d47baaeb4 38 //exemple d'utilisation du système d'exploitation :
Gaetan 33:f85d47baaeb4 39
Gaetan 33:f85d47baaeb4 40 // 1 création des tâches
Gaetan 32:74608bce78f6 41 os.CreateTask(TASK_COM, TASK_COM_PRIO, TASK_COM_STACK_SZ, task1);
Gaetan 32:74608bce78f6 42 os.CreateTask(TASK_DETEC, TASK_DETEC_PRIO, TASK_DETEC_STACK_SZ, task2);
Gaetan 32:74608bce78f6 43 /*os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, task1);
Gaetan 32:74608bce78f6 44 os.CreateTask(TASK_TRAJ, TASK_TRAJ_PRIO, TASK_TRAJ_STACK_SZ, task2);
Gaetan 32:74608bce78f6 45 os.CreateTask(TASK_BATT, TASK_BATT_PRIO, TASK_BATT_STACK_SZ, task1);
Gaetan 32:74608bce78f6 46 os.CreateTask(TASK_VIDEO, TASK_VIDEO_PRIO, TASK_VIDEO_STACK_SZ, task2);
Gaetan 32:74608bce78f6 47 os.CreateTask(TASK_ARRET_URGENT, TASK_ARRET_URGENT_PRIO, TASK_ARRET_URGENT_STACK_SZ, task1);*/
Gaetan 32:74608bce78f6 48
Gaetan 32:74608bce78f6 49 os.CreateTimer(TIMER_COM_ID, TASK_COM, TIMER_EVENT);
Gaetan 32:74608bce78f6 50 os.CreateTimer(TIMER_DETEC_ID, TASK_DETEC, TIMER_EVENT);
Gaetan 32:74608bce78f6 51 /*os.CreateTimer(TIMER_MOUV_ID, TIMER_MOUV_PERIOD, TIMER_MOUV_EVENT);
Gaetan 32:74608bce78f6 52 os.CreateTimer(TIMER_BATT_ID, TIMER_BATT_PERIOD, TIMER_BATT_EVENT);
Gaetan 32:74608bce78f6 53 os.CreateTimer(TIMER_VIDEO_ID, TIMER_VIDEO_PERIOD, TIMER_VIDEO_EVENT);
Gaetan 32:74608bce78f6 54 os.CreateTimer(TIMER_ARRET_URGENT_ID, TIMER_ARRET_URGENT_PERIOD, TIMER_ARRET_URGENT_EVENT);*/
Gaetan 32:74608bce78f6 55
Gaetan 6:0e3d95e9885e 56 // Start mbos
Gaetan 6:0e3d95e9885e 57 os.Start();
Gaetan 6:0e3d95e9885e 58 // never return!
Gaetan 33:f85d47baaeb4 59
Gaetan 33:f85d47baaeb4 60 /*C_ModuleCommunication com = C_ModuleCommunication();
Gaetan 33:f85d47baaeb4 61 com.receptionDeTrame();*/
NicolasH 0:8d93a5e4e4ab 62 }
Gaetan 6:0e3d95e9885e 63
Gaetan 33:f85d47baaeb4 64
Gaetan 33:f85d47baaeb4 65 /* Exemple de point d'entré associée a une tâche.
Gaetan 33:f85d47baaeb4 66 *
Gaetan 33:f85d47baaeb4 67 * Attention : le point d'entré d'une tâche ne doit pas être une methode membre d'un objet.
Gaetan 33:f85d47baaeb4 68 * En effet, le point d'entré doit être considéré de la même manière qu'un "void main(void)"
Gaetan 33:f85d47baaeb4 69 * Au début du point d'entré l'objet peut être instancié.
Gaetan 33:f85d47baaeb4 70 *
Gaetan 33:f85d47baaeb4 71 */
Gaetan 33:f85d47baaeb4 72
Gaetan 6:0e3d95e9885e 73 void task1(void)
Gaetan 6:0e3d95e9885e 74 {
Gaetan 32:74608bce78f6 75 os.SetTimer(TIMER_COM_ID, TIMER_COM_PERIOD, TIMER_COM_PERIOD);
Gaetan 6:0e3d95e9885e 76 while(1){
Gaetan 32:74608bce78f6 77 os.WaitEvent(TIMER_EVENT);
Gaetan 6:0e3d95e9885e 78 led1 = !led1;
Gaetan 32:74608bce78f6 79 os.SetEvent(COMMUNICATION_EVENT, TASK_DETEC);
Gaetan 6:0e3d95e9885e 80 }
Gaetan 6:0e3d95e9885e 81 }
Gaetan 6:0e3d95e9885e 82
Gaetan 6:0e3d95e9885e 83 void task2(void)
Gaetan 6:0e3d95e9885e 84 {
Gaetan 32:74608bce78f6 85 os.SetTimer(TIMER_DETEC_ID, TIMER_DETEC_PERIOD, TIMER_DETEC_PERIOD);
Gaetan 6:0e3d95e9885e 86 while(1){
Gaetan 33:f85d47baaeb4 87 os.WaitEvent(TIMER_EVENT | COMMUNICATION_EVENT); //Attention : la methode WaitEvent réinitialise les évènements à 0
Gaetan 33:f85d47baaeb4 88 /*switch(os.GetEvent()){ // Avec un switch on ne traite qu'un seul évènement reçu. Il y a risque de ne pas traiter tous les évènements reçus.
Gaetan 32:74608bce78f6 89 case TIMER_EVENT:
Gaetan 32:74608bce78f6 90 led2 = !led2;
Gaetan 32:74608bce78f6 91 break;
Gaetan 32:74608bce78f6 92 case COMMUNICATION_EVENT:
Gaetan 32:74608bce78f6 93 led3 = !led3;
Gaetan 32:74608bce78f6 94 break;
Gaetan 32:74608bce78f6 95 }*/
Gaetan 33:f85d47baaeb4 96 //Le Test de chaque flag d'évènement permet de tous les traiter. Au maximum, une tâche peut ainsi traiter 8 évènement, correspondant à chaque flag d'un octet
Gaetan 33:f85d47baaeb4 97
Gaetan 33:f85d47baaeb4 98 if(os.GetEvent() & TIMER_EVENT) led2 = !led2;
Gaetan 32:74608bce78f6 99 if(os.GetEvent() & COMMUNICATION_EVENT) led3 = !led3;
Gaetan 6:0e3d95e9885e 100 }
Gaetan 6:0e3d95e9885e 101 }