HERBERT Nicolas / Mbed 2 deprecated Labo_TRSE_Drone

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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #define MAVLINK_TEST 1
00002 
00003 #if MAVLINK_TEST
00004 
00005 #include "mbed.h"
00006 #include "xbee.h"
00007 #include "MAVLink_API/MAVLink_API.h"
00008 #include "MAVlink/include/common/common.h"
00009 #include "mbos.h"
00010 #include "os.h"
00011  
00012 Serial pc(USBTX, USBRX);
00013 mavLink_API mvlk(2.0);
00014 mbos os(3, 2); //os just for compiling
00015 //xbee myXbee(p9, p10, p11);
00016  
00017  
00018  int main() {
00019 
00020      pc.baud(38400);
00021 
00022     while(1){
00023         if(mvlk.messageReadyToBeSent)
00024         {
00025             for(int i = 0 ; i < mvlk.len ; i++){
00026                 pc.putc(mvlk.buf[i]);
00027             }
00028             mvlk.messageReadyToBeSent = false;
00029         }
00030         while(pc.readable()){
00031             mvlk.getMessage(pc.getc());
00032         }
00033         //pc.printf("size : %d\n", len);
00034         //myXbee.SendData((char*)buf, (int)len);
00035         //pc.puts((const char*)buf);
00036         //for(int i = 0 ; i < len ; i++){
00037             //pc.putc(buf[i]);
00038         //}
00039         //pc.putc(buf[len-2]);
00040         
00041         wait(1.0); 
00042     }
00043 
00044     /*for(int i = 0 ; i < len ; i++){
00045             pc.printf("%x ", buf[i]);
00046     }
00047     pc.printf("\n\r");*/
00048 }
00049 //uart0_send(buf, len);
00050 #else
00051 
00052  /* Copyright (c) 2012 - 2013 Gaëtan PLEYBER
00053  *
00054  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED 
00055  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
00056  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
00057  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
00058  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
00059  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
00060  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
00061  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
00062  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00063  */
00064  
00065  /*
00066  * Description
00067  * Input
00068  * Output
00069  */
00070 
00071 
00072 #include "mbed.h"                    
00073 #include "mbos.h"
00074 #include "Module_Communication.h"
00075 #include "Module_Mouvement.h"
00076 #include "os.h"
00077 
00078 //void task1(void);                       // task function prototypes
00079 //void task2(void);
00080 
00081 /*DigitalOut led1(LED1);
00082 DigitalOut led2(LED2);
00083 DigitalOut led3(LED3);*/
00084 mbos os(3, 2);                          // Instantiate mbos with 7 tasks & 7 timer    
00085 
00086 
00087 int main(void)
00088 {
00089     
00090    //exemple d'utilisation du système d'exploitation :
00091    
00092    //   1 création des tâches
00093    os.CreateTask(TASK_COM, TASK_COM_PRIO, TASK_COM_STACK_SZ, moduleCommunicationReception);
00094    os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, ModuleMouvement_Task);
00095    os.CreateTask(TASK_ENVOI, TASK_ENVOI_PRIO, TASK_ENVOI_STACK_SZ, moduleCommunicationEnvoi);
00096    /*os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, task1);
00097    os.CreateTask(TASK_TRAJ, TASK_TRAJ_PRIO, TASK_TRAJ_STACK_SZ, task2);
00098    os.CreateTask(TASK_BATT, TASK_BATT_PRIO, TASK_BATT_STACK_SZ, task1);
00099    os.CreateTask(TASK_VIDEO, TASK_VIDEO_PRIO, TASK_VIDEO_STACK_SZ, task2);
00100    os.CreateTask(TASK_ARRET_URGENT, TASK_ARRET_URGENT_PRIO, TASK_ARRET_URGENT_STACK_SZ, task1);*/
00101 
00102    os.CreateTimer(TIMER_COM_ID, TASK_COM, TIMER_EVENT);
00103    os.CreateTimer(TIMER_MOUV_ID, TASK_MOUV, TIMER_EVENT);
00104    /*os.CreateTimer(TIMER_MOUV_ID, TIMER_MOUV_PERIOD, TIMER_MOUV_EVENT);
00105    os.CreateTimer(TIMER_BATT_ID, TIMER_BATT_PERIOD, TIMER_BATT_EVENT);
00106    os.CreateTimer(TIMER_VIDEO_ID, TIMER_VIDEO_PERIOD, TIMER_VIDEO_EVENT);
00107    os.CreateTimer(TIMER_ARRET_URGENT_ID, TIMER_ARRET_URGENT_PERIOD, TIMER_ARRET_URGENT_EVENT);*/
00108 
00109     // Start mbos
00110    os.Start();
00111     // never  return!
00112 
00113     /*C_ModuleCommunication com = C_ModuleCommunication();
00114     com.receptionDeTrame();*/
00115 }
00116 
00117 
00118  /* Exemple de point d'entré associée a une tâche.
00119   *
00120   * Attention : le point d'entré d'une tâche ne doit pas être une methode membre d'un objet. 
00121   * En effet, le point d'entré doit être considéré de la même manière qu'un "void main(void)"
00122   * Au début du point d'entré l'objet peut être instancié.
00123   *
00124   */
00125   
00126 /*void task1(void)
00127 {
00128     os.SetTimer(TIMER_COM_ID, TIMER_COM_PERIOD, TIMER_COM_PERIOD);
00129     while(1){
00130         os.WaitEvent(TIMER_EVENT);
00131         led1 = !led1;
00132         os.SetEvent(COMMUNICATION_EVENT, TASK_DETEC);
00133     }
00134 }*/
00135 
00136 /*void task2(void)
00137 {
00138     os.SetTimer(TIMER_DETEC_ID, TIMER_DETEC_PERIOD, TIMER_DETEC_PERIOD);
00139     while(1){
00140         os.WaitEvent(TIMER_EVENT | COMMUNICATION_EVENT); //Attention : la methode WaitEvent réinitialise les évènements à 0*/
00141         /*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.
00142             case TIMER_EVENT:
00143                 led2 = !led2;
00144             break;
00145             case COMMUNICATION_EVENT:
00146                 led3 = !led3;
00147             break;
00148         }*/
00149         //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
00150         
00151         /*if(os.GetEvent() & TIMER_EVENT) led2 = !led2; 
00152         if(os.GetEvent() & COMMUNICATION_EVENT) led3 = !led3;
00153    }
00154 }*/
00155 
00156 #endif