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 11:01:10 2014 +0000
Revision:
36:1bbd2fb7d2c8
Parent:
35:95cb34636703
Checksum correct pour l'envoi de n'importe quel message Mavlink. Reste ? g?rer la reception de messages

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gaetan 35:95cb34636703 1 #define MAVLINK_TEST 1
Gaetan 35:95cb34636703 2
Gaetan 35:95cb34636703 3 #if MAVLINK_TEST
Gaetan 35:95cb34636703 4
Gaetan 35:95cb34636703 5 #include "mbed.h"
Gaetan 35:95cb34636703 6 #include "xbee.h"
Gaetan 35:95cb34636703 7 #include "MAVLink_API/MAVLink_API.h"
Gaetan 35:95cb34636703 8 #include "MAVlink/include/common/common.h"
Gaetan 35:95cb34636703 9 #include "mbos.h"
Gaetan 35:95cb34636703 10 #include "os.h"
Gaetan 35:95cb34636703 11
Gaetan 35:95cb34636703 12 Serial pc(USBTX, USBRX);
Gaetan 35:95cb34636703 13 mavLink_API mvlk(2.0);
Gaetan 35:95cb34636703 14 mbos os(3, 2); //os just for compiling
Gaetan 35:95cb34636703 15 //xbee myXbee(p9, p10, p11);
Gaetan 35:95cb34636703 16
Gaetan 35:95cb34636703 17
Gaetan 35:95cb34636703 18 int main() {
Gaetan 35:95cb34636703 19
Gaetan 35:95cb34636703 20 pc.baud(38400);
Gaetan 35:95cb34636703 21
Gaetan 35:95cb34636703 22 while(1){
Gaetan 35:95cb34636703 23 if(mvlk.messageReadyToBeSent)
Gaetan 35:95cb34636703 24 {
Gaetan 35:95cb34636703 25 for(int i = 0 ; i < mvlk.len ; i++){
Gaetan 35:95cb34636703 26 pc.putc(mvlk.buf[i]);
Gaetan 35:95cb34636703 27 }
Gaetan 35:95cb34636703 28 mvlk.messageReadyToBeSent = false;
Gaetan 35:95cb34636703 29 }
Gaetan 35:95cb34636703 30 while(pc.readable()){
Gaetan 35:95cb34636703 31 mvlk.getMessage(pc.getc());
Gaetan 35:95cb34636703 32 }
Gaetan 35:95cb34636703 33 //pc.printf("size : %d\n", len);
Gaetan 35:95cb34636703 34 //myXbee.SendData((char*)buf, (int)len);
Gaetan 35:95cb34636703 35 //pc.puts((const char*)buf);
Gaetan 35:95cb34636703 36 //for(int i = 0 ; i < len ; i++){
Gaetan 35:95cb34636703 37 //pc.putc(buf[i]);
Gaetan 35:95cb34636703 38 //}
Gaetan 35:95cb34636703 39 //pc.putc(buf[len-2]);
Gaetan 35:95cb34636703 40
Gaetan 35:95cb34636703 41 wait(1.0);
Gaetan 35:95cb34636703 42 }
Gaetan 35:95cb34636703 43
Gaetan 35:95cb34636703 44 /*for(int i = 0 ; i < len ; i++){
Gaetan 35:95cb34636703 45 pc.printf("%x ", buf[i]);
Gaetan 35:95cb34636703 46 }
Gaetan 35:95cb34636703 47 pc.printf("\n\r");*/
Gaetan 35:95cb34636703 48 }
Gaetan 35:95cb34636703 49 //uart0_send(buf, len);
Gaetan 35:95cb34636703 50 #else
Gaetan 35:95cb34636703 51
Gaetan 10:c8d73680b9fd 52 /* Copyright (c) 2012 - 2013 Gaëtan PLEYBER
Gaetan 10:c8d73680b9fd 53 *
Gaetan 10:c8d73680b9fd 54 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
Gaetan 10:c8d73680b9fd 55 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
Gaetan 10:c8d73680b9fd 56 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
Gaetan 10:c8d73680b9fd 57 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
Gaetan 10:c8d73680b9fd 58 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
Gaetan 10:c8d73680b9fd 59 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
Gaetan 10:c8d73680b9fd 60 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
Gaetan 10:c8d73680b9fd 61 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
Gaetan 10:c8d73680b9fd 62 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Gaetan 10:c8d73680b9fd 63 */
Gaetan 10:c8d73680b9fd 64
Gaetan 10:c8d73680b9fd 65 /*
Gaetan 10:c8d73680b9fd 66 * Description
Gaetan 10:c8d73680b9fd 67 * Input
Gaetan 10:c8d73680b9fd 68 * Output
Gaetan 10:c8d73680b9fd 69 */
NicolasH 0:8d93a5e4e4ab 70
Gaetan 32:74608bce78f6 71
Gaetan 6:0e3d95e9885e 72 #include "mbed.h"
Gaetan 6:0e3d95e9885e 73 #include "mbos.h"
IngesupMbed01 29:a0800d3da787 74 #include "Module_Communication.h"
Gaetan 34:4466839f5bb7 75 #include "Module_Mouvement.h"
Gaetan 32:74608bce78f6 76 #include "os.h"
Gaetan 32:74608bce78f6 77
Gaetan 34:4466839f5bb7 78 //void task1(void); // task function prototypes
Gaetan 34:4466839f5bb7 79 //void task2(void);
Gaetan 6:0e3d95e9885e 80
Gaetan 34:4466839f5bb7 81 /*DigitalOut led1(LED1);
Gaetan 6:0e3d95e9885e 82 DigitalOut led2(LED2);
Gaetan 34:4466839f5bb7 83 DigitalOut led3(LED3);*/
Gaetan 34:4466839f5bb7 84 mbos os(3, 2); // Instantiate mbos with 7 tasks & 7 timer
Gaetan 32:74608bce78f6 85
Gaetan 6:0e3d95e9885e 86
Gaetan 6:0e3d95e9885e 87 int main(void)
Gaetan 6:0e3d95e9885e 88 {
Gaetan 34:4466839f5bb7 89
Gaetan 33:f85d47baaeb4 90 //exemple d'utilisation du système d'exploitation :
Gaetan 33:f85d47baaeb4 91
Gaetan 33:f85d47baaeb4 92 // 1 création des tâches
Gaetan 34:4466839f5bb7 93 os.CreateTask(TASK_COM, TASK_COM_PRIO, TASK_COM_STACK_SZ, moduleCommunicationReception);
Gaetan 34:4466839f5bb7 94 os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, ModuleMouvement_Task);
Gaetan 34:4466839f5bb7 95 os.CreateTask(TASK_ENVOI, TASK_ENVOI_PRIO, TASK_ENVOI_STACK_SZ, moduleCommunicationEnvoi);
Gaetan 32:74608bce78f6 96 /*os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, task1);
Gaetan 32:74608bce78f6 97 os.CreateTask(TASK_TRAJ, TASK_TRAJ_PRIO, TASK_TRAJ_STACK_SZ, task2);
Gaetan 32:74608bce78f6 98 os.CreateTask(TASK_BATT, TASK_BATT_PRIO, TASK_BATT_STACK_SZ, task1);
Gaetan 32:74608bce78f6 99 os.CreateTask(TASK_VIDEO, TASK_VIDEO_PRIO, TASK_VIDEO_STACK_SZ, task2);
Gaetan 32:74608bce78f6 100 os.CreateTask(TASK_ARRET_URGENT, TASK_ARRET_URGENT_PRIO, TASK_ARRET_URGENT_STACK_SZ, task1);*/
Gaetan 32:74608bce78f6 101
Gaetan 32:74608bce78f6 102 os.CreateTimer(TIMER_COM_ID, TASK_COM, TIMER_EVENT);
Gaetan 34:4466839f5bb7 103 os.CreateTimer(TIMER_MOUV_ID, TASK_MOUV, TIMER_EVENT);
Gaetan 32:74608bce78f6 104 /*os.CreateTimer(TIMER_MOUV_ID, TIMER_MOUV_PERIOD, TIMER_MOUV_EVENT);
Gaetan 32:74608bce78f6 105 os.CreateTimer(TIMER_BATT_ID, TIMER_BATT_PERIOD, TIMER_BATT_EVENT);
Gaetan 32:74608bce78f6 106 os.CreateTimer(TIMER_VIDEO_ID, TIMER_VIDEO_PERIOD, TIMER_VIDEO_EVENT);
Gaetan 32:74608bce78f6 107 os.CreateTimer(TIMER_ARRET_URGENT_ID, TIMER_ARRET_URGENT_PERIOD, TIMER_ARRET_URGENT_EVENT);*/
Gaetan 32:74608bce78f6 108
Gaetan 6:0e3d95e9885e 109 // Start mbos
Gaetan 6:0e3d95e9885e 110 os.Start();
Gaetan 6:0e3d95e9885e 111 // never return!
Gaetan 33:f85d47baaeb4 112
Gaetan 33:f85d47baaeb4 113 /*C_ModuleCommunication com = C_ModuleCommunication();
Gaetan 33:f85d47baaeb4 114 com.receptionDeTrame();*/
NicolasH 0:8d93a5e4e4ab 115 }
Gaetan 6:0e3d95e9885e 116
Gaetan 33:f85d47baaeb4 117
Gaetan 33:f85d47baaeb4 118 /* Exemple de point d'entré associée a une tâche.
Gaetan 33:f85d47baaeb4 119 *
Gaetan 33:f85d47baaeb4 120 * Attention : le point d'entré d'une tâche ne doit pas être une methode membre d'un objet.
Gaetan 33:f85d47baaeb4 121 * En effet, le point d'entré doit être considéré de la même manière qu'un "void main(void)"
Gaetan 33:f85d47baaeb4 122 * Au début du point d'entré l'objet peut être instancié.
Gaetan 33:f85d47baaeb4 123 *
Gaetan 33:f85d47baaeb4 124 */
Gaetan 33:f85d47baaeb4 125
Gaetan 34:4466839f5bb7 126 /*void task1(void)
Gaetan 6:0e3d95e9885e 127 {
Gaetan 32:74608bce78f6 128 os.SetTimer(TIMER_COM_ID, TIMER_COM_PERIOD, TIMER_COM_PERIOD);
Gaetan 6:0e3d95e9885e 129 while(1){
Gaetan 32:74608bce78f6 130 os.WaitEvent(TIMER_EVENT);
Gaetan 6:0e3d95e9885e 131 led1 = !led1;
Gaetan 32:74608bce78f6 132 os.SetEvent(COMMUNICATION_EVENT, TASK_DETEC);
Gaetan 6:0e3d95e9885e 133 }
Gaetan 34:4466839f5bb7 134 }*/
Gaetan 6:0e3d95e9885e 135
Gaetan 34:4466839f5bb7 136 /*void task2(void)
Gaetan 6:0e3d95e9885e 137 {
Gaetan 32:74608bce78f6 138 os.SetTimer(TIMER_DETEC_ID, TIMER_DETEC_PERIOD, TIMER_DETEC_PERIOD);
Gaetan 6:0e3d95e9885e 139 while(1){
Gaetan 34:4466839f5bb7 140 os.WaitEvent(TIMER_EVENT | COMMUNICATION_EVENT); //Attention : la methode WaitEvent réinitialise les évènements à 0*/
Gaetan 33:f85d47baaeb4 141 /*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 142 case TIMER_EVENT:
Gaetan 32:74608bce78f6 143 led2 = !led2;
Gaetan 32:74608bce78f6 144 break;
Gaetan 32:74608bce78f6 145 case COMMUNICATION_EVENT:
Gaetan 32:74608bce78f6 146 led3 = !led3;
Gaetan 32:74608bce78f6 147 break;
Gaetan 32:74608bce78f6 148 }*/
Gaetan 33:f85d47baaeb4 149 //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 150
Gaetan 34:4466839f5bb7 151 /*if(os.GetEvent() & TIMER_EVENT) led2 = !led2;
Gaetan 32:74608bce78f6 152 if(os.GetEvent() & COMMUNICATION_EVENT) led3 = !led3;
Gaetan 6:0e3d95e9885e 153 }
Gaetan 34:4466839f5bb7 154 }*/
Gaetan 35:95cb34636703 155
Gaetan 35:95cb34636703 156 #endif