ajout module_mouvement

Dependencies:   mbed xbee_lib ADXL345_I2C IMUfilter ITG3200 Motor RangeFinder Servo mbos PID

Fork of Labo_TRSE_Drone by HERBERT Nicolas

Revision:
33:ec7d635636bf
Parent:
32:119e060b45b3
--- a/Module_Communication/Module_Communication.cpp	Wed Apr 17 13:53:25 2013 +0000
+++ b/Module_Communication/Module_Communication.cpp	Wed Apr 17 15:52:51 2013 +0000
@@ -22,6 +22,10 @@
  
  // Pointeur sur la classe systeme d'exploitation instancié dans le main
  extern mbos *os;
+ extern unsigned int COMMANDE_TRAJECTOIRE;
+ extern bool STOP;
+ extern bool EN_MOUVEMENT;
+ extern position COORDONNEE_DRONE;
  
  
  /* CONSRTRUCTEUR(S) */
@@ -92,10 +96,87 @@
     frame newFrame = m_trameRxBuffer.frameBuffer();
     
     switch(newFrame.moduleIdentifier) {
-        case 0x31 : 
+        case 0x31 : consigneModuleTrajectoire(newFrame);
                     break;
-        case 0x32 : 
+        case 0x32 : consigneModuleVideo(newFrame);
                     break;
                     
+        default :  creerTrameSpeciale(0x99);
+                   break;
+                    
     }
- }
\ No newline at end of file
+ }
+
+void C_ModuleCommunication::consigneModuleTrajectoire(frame newFrame)
+{
+    switch(newFrame.messageIdentifier) {
+        case 0x11 : COMMANDE_TRAJECTOIRE = newFrame.data[0];
+                    EN_MOUVEMENT = true;
+                    while(EN_MOUVEMENT != false);
+                    creerTrameModuleTrajectoire(0x12);
+                    break;
+        case 0x13 : STOP = true;
+                    EN_MOUVEMENT = true;
+                    while(EN_MOUVEMENT != false);
+                    creerTrameModuleTrajectoire(0x14);
+                    break;
+        case 0x15 : creerTrameModuleTrajectoire(0x16);
+                    break;
+                                    
+        default : creerTrameSpeciale(0x99);
+                  break; 
+    }
+}
+
+void C_ModuleCommunication::creerTrameModuleTrajectoire(unsigned char idMessage)
+{
+    frame newFrame;
+    newFrame.moduleIdentifier = 0x31;
+    
+    switch(idMessage) {
+        case 0x12 : newFrame.messageIdentifier = 0x12;
+                    break;
+        case 0x14 : newFrame.messageIdentifier = 0x14;
+                    break;
+        case 0x16 : newFrame.messageIdentifier = 0x16;
+                    union conversionCharFloat conv1;
+                    conv1.f = COORDONNEE_DRONE.x;
+                    newFrame.data[0] = conv1.ch[0];
+                    newFrame.data[1] = conv1.ch[1];
+                    newFrame.data[2] = conv1.ch[2];
+                    newFrame.data[3] = conv1.ch[3];
+                    conv1.f = 0;
+                    conv1.f = COORDONNEE_DRONE.y;
+                    newFrame.data[4] = conv1.ch[0];
+                    newFrame.data[5] = conv1.ch[1];
+                    newFrame.data[6] = conv1.ch[2];
+                    newFrame.data[7] = conv1.ch[3];
+                    conv1.f = 0;
+                    conv1.f = COORDONNEE_DRONE.z;
+                    newFrame.data[8] = conv1.ch[0];
+                    newFrame.data[9] = conv1.ch[1];
+                    newFrame.data[10] = conv1.ch[2];
+                    newFrame.data[11] = conv1.ch[3];
+                    break;
+    }
+    
+    m_trameTxBuffer.frameBuffer(newFrame);
+}
+
+void C_ModuleCommunication::creerTrameSpeciale(unsigned char idMessage) {
+    frame newFrame;
+    
+    switch(idMessage) {
+        case 0x00 : newFrame.moduleIdentifier = 0x00;
+                    newFrame.messageIdentifier = 0x00;
+                    break;
+        case 0x99 : newFrame.moduleIdentifier = 0x99;
+                    newFrame.messageIdentifier = 0x99;
+                    break;
+    }
+    m_trameTxBuffer.frameBuffer(newFrame);
+}
+
+void C_ModuleCommunication::consigneModuleVideo(frame newFrame)
+{
+}
\ No newline at end of file