Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed PID ADXL345 Camera_LS_Y201 ITG3200 RangeFinder mbos xbee_lib Motor Servo
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
Generated on Wed Jul 13 2022 02:33:39 by
1.7.2
