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:
Wed Mar 19 09:18:53 2014 +0000
Revision:
34:4466839f5bb7
Parent:
33:f85d47baaeb4
Child:
35:95cb34636703
19/03/2014 commit before update;

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 34:4466839f5bb7 24 #include "Module_Mouvement.h"
Gaetan 32:74608bce78f6 25 #include "os.h"
Gaetan 32:74608bce78f6 26
Gaetan 34:4466839f5bb7 27 //void task1(void); // task function prototypes
Gaetan 34:4466839f5bb7 28 //void task2(void);
Gaetan 6:0e3d95e9885e 29
Gaetan 34:4466839f5bb7 30 /*DigitalOut led1(LED1);
Gaetan 6:0e3d95e9885e 31 DigitalOut led2(LED2);
Gaetan 34:4466839f5bb7 32 DigitalOut led3(LED3);*/
Gaetan 34:4466839f5bb7 33 mbos os(3, 2); // Instantiate mbos with 7 tasks & 7 timer
Gaetan 32:74608bce78f6 34
Gaetan 6:0e3d95e9885e 35
Gaetan 6:0e3d95e9885e 36 int main(void)
Gaetan 6:0e3d95e9885e 37 {
Gaetan 34:4466839f5bb7 38
Gaetan 33:f85d47baaeb4 39 //exemple d'utilisation du système d'exploitation :
Gaetan 33:f85d47baaeb4 40
Gaetan 33:f85d47baaeb4 41 // 1 création des tâches
Gaetan 34:4466839f5bb7 42 os.CreateTask(TASK_COM, TASK_COM_PRIO, TASK_COM_STACK_SZ, moduleCommunicationReception);
Gaetan 34:4466839f5bb7 43 os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, ModuleMouvement_Task);
Gaetan 34:4466839f5bb7 44 os.CreateTask(TASK_ENVOI, TASK_ENVOI_PRIO, TASK_ENVOI_STACK_SZ, moduleCommunicationEnvoi);
Gaetan 32:74608bce78f6 45 /*os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, task1);
Gaetan 32:74608bce78f6 46 os.CreateTask(TASK_TRAJ, TASK_TRAJ_PRIO, TASK_TRAJ_STACK_SZ, task2);
Gaetan 32:74608bce78f6 47 os.CreateTask(TASK_BATT, TASK_BATT_PRIO, TASK_BATT_STACK_SZ, task1);
Gaetan 32:74608bce78f6 48 os.CreateTask(TASK_VIDEO, TASK_VIDEO_PRIO, TASK_VIDEO_STACK_SZ, task2);
Gaetan 32:74608bce78f6 49 os.CreateTask(TASK_ARRET_URGENT, TASK_ARRET_URGENT_PRIO, TASK_ARRET_URGENT_STACK_SZ, task1);*/
Gaetan 32:74608bce78f6 50
Gaetan 32:74608bce78f6 51 os.CreateTimer(TIMER_COM_ID, TASK_COM, TIMER_EVENT);
Gaetan 34:4466839f5bb7 52 os.CreateTimer(TIMER_MOUV_ID, TASK_MOUV, TIMER_EVENT);
Gaetan 32:74608bce78f6 53 /*os.CreateTimer(TIMER_MOUV_ID, TIMER_MOUV_PERIOD, TIMER_MOUV_EVENT);
Gaetan 32:74608bce78f6 54 os.CreateTimer(TIMER_BATT_ID, TIMER_BATT_PERIOD, TIMER_BATT_EVENT);
Gaetan 32:74608bce78f6 55 os.CreateTimer(TIMER_VIDEO_ID, TIMER_VIDEO_PERIOD, TIMER_VIDEO_EVENT);
Gaetan 32:74608bce78f6 56 os.CreateTimer(TIMER_ARRET_URGENT_ID, TIMER_ARRET_URGENT_PERIOD, TIMER_ARRET_URGENT_EVENT);*/
Gaetan 32:74608bce78f6 57
Gaetan 6:0e3d95e9885e 58 // Start mbos
Gaetan 6:0e3d95e9885e 59 os.Start();
Gaetan 6:0e3d95e9885e 60 // never return!
Gaetan 33:f85d47baaeb4 61
Gaetan 33:f85d47baaeb4 62 /*C_ModuleCommunication com = C_ModuleCommunication();
Gaetan 33:f85d47baaeb4 63 com.receptionDeTrame();*/
NicolasH 0:8d93a5e4e4ab 64 }
Gaetan 6:0e3d95e9885e 65
Gaetan 33:f85d47baaeb4 66
Gaetan 33:f85d47baaeb4 67 /* Exemple de point d'entré associée a une tâche.
Gaetan 33:f85d47baaeb4 68 *
Gaetan 33:f85d47baaeb4 69 * Attention : le point d'entré d'une tâche ne doit pas être une methode membre d'un objet.
Gaetan 33:f85d47baaeb4 70 * En effet, le point d'entré doit être considéré de la même manière qu'un "void main(void)"
Gaetan 33:f85d47baaeb4 71 * Au début du point d'entré l'objet peut être instancié.
Gaetan 33:f85d47baaeb4 72 *
Gaetan 33:f85d47baaeb4 73 */
Gaetan 33:f85d47baaeb4 74
Gaetan 34:4466839f5bb7 75 /*void task1(void)
Gaetan 6:0e3d95e9885e 76 {
Gaetan 32:74608bce78f6 77 os.SetTimer(TIMER_COM_ID, TIMER_COM_PERIOD, TIMER_COM_PERIOD);
Gaetan 6:0e3d95e9885e 78 while(1){
Gaetan 32:74608bce78f6 79 os.WaitEvent(TIMER_EVENT);
Gaetan 6:0e3d95e9885e 80 led1 = !led1;
Gaetan 32:74608bce78f6 81 os.SetEvent(COMMUNICATION_EVENT, TASK_DETEC);
Gaetan 6:0e3d95e9885e 82 }
Gaetan 34:4466839f5bb7 83 }*/
Gaetan 6:0e3d95e9885e 84
Gaetan 34:4466839f5bb7 85 /*void task2(void)
Gaetan 6:0e3d95e9885e 86 {
Gaetan 32:74608bce78f6 87 os.SetTimer(TIMER_DETEC_ID, TIMER_DETEC_PERIOD, TIMER_DETEC_PERIOD);
Gaetan 6:0e3d95e9885e 88 while(1){
Gaetan 34:4466839f5bb7 89 os.WaitEvent(TIMER_EVENT | COMMUNICATION_EVENT); //Attention : la methode WaitEvent réinitialise les évènements à 0*/
Gaetan 33:f85d47baaeb4 90 /*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 91 case TIMER_EVENT:
Gaetan 32:74608bce78f6 92 led2 = !led2;
Gaetan 32:74608bce78f6 93 break;
Gaetan 32:74608bce78f6 94 case COMMUNICATION_EVENT:
Gaetan 32:74608bce78f6 95 led3 = !led3;
Gaetan 32:74608bce78f6 96 break;
Gaetan 32:74608bce78f6 97 }*/
Gaetan 33:f85d47baaeb4 98 //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 99
Gaetan 34:4466839f5bb7 100 /*if(os.GetEvent() & TIMER_EVENT) led2 = !led2;
Gaetan 32:74608bce78f6 101 if(os.GetEvent() & COMMUNICATION_EVENT) led3 = !led3;
Gaetan 6:0e3d95e9885e 102 }
Gaetan 34:4466839f5bb7 103 }*/