ajout module_mouvement

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

Fork of Labo_TRSE_Drone by HERBERT Nicolas

Committer:
IngesupMbed01
Date:
Wed Apr 17 13:53:25 2013 +0000
Revision:
32:119e060b45b3
Parent:
31:a0800d3da787
Child:
33:ec7d635636bf
Module Communication modifi?.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IngesupMbed01 18:0bfd3ad421e5 1 /* Copyright (c) 2012 - 2013 AUTHEUR
IngesupMbed01 18:0bfd3ad421e5 2 *
IngesupMbed01 18:0bfd3ad421e5 3 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
IngesupMbed01 18:0bfd3ad421e5 4 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
IngesupMbed01 18:0bfd3ad421e5 5 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
IngesupMbed01 18:0bfd3ad421e5 6 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
IngesupMbed01 18:0bfd3ad421e5 7 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
IngesupMbed01 18:0bfd3ad421e5 8 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
IngesupMbed01 18:0bfd3ad421e5 9 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
IngesupMbed01 18:0bfd3ad421e5 10 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
IngesupMbed01 18:0bfd3ad421e5 11 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
IngesupMbed01 18:0bfd3ad421e5 12 */
IngesupMbed01 18:0bfd3ad421e5 13
IngesupMbed01 18:0bfd3ad421e5 14 /*
IngesupMbed01 18:0bfd3ad421e5 15 * Description : Cette classe contient les fonctionnalités du module communication.
IngesupMbed01 18:0bfd3ad421e5 16 Le module communication gère la communication entre les modules présents sur le drône et le PC.
IngesupMbed01 18:0bfd3ad421e5 17 * Input
IngesupMbed01 18:0bfd3ad421e5 18 * Output
IngesupMbed01 18:0bfd3ad421e5 19 */
IngesupMbed01 18:0bfd3ad421e5 20
IngesupMbed01 18:0bfd3ad421e5 21 #include "Module_Communication.h"
IngesupMbed01 18:0bfd3ad421e5 22
IngesupMbed01 18:0bfd3ad421e5 23 // Pointeur sur la classe systeme d'exploitation instancié dans le main
IngesupMbed01 18:0bfd3ad421e5 24 extern mbos *os;
IngesupMbed01 18:0bfd3ad421e5 25
IngesupMbed01 18:0bfd3ad421e5 26
IngesupMbed01 18:0bfd3ad421e5 27 /* CONSRTRUCTEUR(S) */
IngesupMbed01 18:0bfd3ad421e5 28 C_ModuleCommunication::C_ModuleCommunication()
IngesupMbed01 18:0bfd3ad421e5 29 {
IngesupMbed01 18:0bfd3ad421e5 30 m_xbee = new xbee(p9, p10, p11);
IngesupMbed01 24:3462a304f9a0 31 m_trameRxBuffer = C_FrameBuffer();
IngesupMbed01 24:3462a304f9a0 32 m_trameTxBuffer = C_FrameBuffer();
IngesupMbed01 32:119e060b45b3 33 m_charRxBuffer = new char[17];
IngesupMbed01 32:119e060b45b3 34 m_charTxBuffer = new char[17];
IngesupMbed01 18:0bfd3ad421e5 35 }
IngesupMbed01 18:0bfd3ad421e5 36
IngesupMbed01 18:0bfd3ad421e5 37 /* DESTRUCTEUR */
IngesupMbed01 18:0bfd3ad421e5 38 C_ModuleCommunication::~C_ModuleCommunication()
IngesupMbed01 18:0bfd3ad421e5 39 {
IngesupMbed01 24:3462a304f9a0 40 delete [] m_charRxBuffer;
IngesupMbed01 24:3462a304f9a0 41 delete [] m_charTxBuffer;
IngesupMbed01 24:3462a304f9a0 42 delete m_xbee;
IngesupMbed01 18:0bfd3ad421e5 43 }
IngesupMbed01 18:0bfd3ad421e5 44
IngesupMbed01 18:0bfd3ad421e5 45 /* Point d'entrée de la tache Module Video */
IngesupMbed01 24:3462a304f9a0 46 void C_ModuleCommunication::moduleCommunicationTask(void)
IngesupMbed01 18:0bfd3ad421e5 47 {
IngesupMbed01 18:0bfd3ad421e5 48 while(1){
IngesupMbed01 18:0bfd3ad421e5 49 // Code
IngesupMbed01 18:0bfd3ad421e5 50 }
IngesupMbed01 18:0bfd3ad421e5 51 }
IngesupMbed01 18:0bfd3ad421e5 52
IngesupMbed01 24:3462a304f9a0 53 void C_ModuleCommunication::envoiDeTrame(void)
IngesupMbed01 24:3462a304f9a0 54 {
IngesupMbed01 32:119e060b45b3 55 frame newFrame = m_trameTxBuffer.frameBuffer();
IngesupMbed01 32:119e060b45b3 56 m_charTxBuffer[0] = 0x02;
IngesupMbed01 32:119e060b45b3 57 m_charTxBuffer[1] = newFrame.systemIdentifier;
IngesupMbed01 32:119e060b45b3 58 m_charTxBuffer[2] = newFrame.moduleIdentifier;
IngesupMbed01 32:119e060b45b3 59 m_charTxBuffer[3] = newFrame.messageIdentifier;
IngesupMbed01 32:119e060b45b3 60 m_charTxBuffer[16] = 0x03;
IngesupMbed01 24:3462a304f9a0 61
IngesupMbed01 32:119e060b45b3 62 for(int i = 0; i < 12; i++) {
IngesupMbed01 32:119e060b45b3 63 m_charTxBuffer[i+4] = newFrame.data[i];
IngesupMbed01 24:3462a304f9a0 64 }
IngesupMbed01 24:3462a304f9a0 65
IngesupMbed01 24:3462a304f9a0 66 m_xbee->SendData(m_charTxBuffer);
IngesupMbed01 24:3462a304f9a0 67 }
IngesupMbed01 24:3462a304f9a0 68
IngesupMbed01 24:3462a304f9a0 69 void C_ModuleCommunication::receptionDeTrame(void)
IngesupMbed01 24:3462a304f9a0 70 {
IngesupMbed01 31:a0800d3da787 71 Serial pc(USBTX, USBRX);
IngesupMbed01 24:3462a304f9a0 72 m_xbee->RecieveData(m_charRxBuffer, 0);
IngesupMbed01 31:a0800d3da787 73 pc.printf("You said:%s \n",m_charRxBuffer);
IngesupMbed01 32:119e060b45b3 74
IngesupMbed01 32:119e060b45b3 75
IngesupMbed01 24:3462a304f9a0 76 frame newFrame;
IngesupMbed01 32:119e060b45b3 77 newFrame.systemIdentifier = m_charRxBuffer[1];
IngesupMbed01 32:119e060b45b3 78 newFrame.moduleIdentifier = m_charRxBuffer[2];
IngesupMbed01 32:119e060b45b3 79 newFrame.messageIdentifier = m_charRxBuffer[3];
IngesupMbed01 24:3462a304f9a0 80
IngesupMbed01 32:119e060b45b3 81 for(int i = 0; i < 12; i++) {
IngesupMbed01 32:119e060b45b3 82 newFrame.data[i] = m_charRxBuffer[i+4];
IngesupMbed01 24:3462a304f9a0 83 }
IngesupMbed01 24:3462a304f9a0 84
IngesupMbed01 32:119e060b45b3 85 m_trameRxBuffer.frameBuffer(newFrame);
IngesupMbed01 28:8b5ccd2f837e 86 }
IngesupMbed01 28:8b5ccd2f837e 87
IngesupMbed01 28:8b5ccd2f837e 88 void C_ModuleCommunication::traitementTrame(void)
IngesupMbed01 28:8b5ccd2f837e 89 {
IngesupMbed01 28:8b5ccd2f837e 90 if(m_trameRxBuffer.numberMessage() <= 0) return;
IngesupMbed01 28:8b5ccd2f837e 91
IngesupMbed01 28:8b5ccd2f837e 92 frame newFrame = m_trameRxBuffer.frameBuffer();
IngesupMbed01 28:8b5ccd2f837e 93
IngesupMbed01 32:119e060b45b3 94 switch(newFrame.moduleIdentifier) {
IngesupMbed01 32:119e060b45b3 95 case 0x31 :
IngesupMbed01 28:8b5ccd2f837e 96 break;
IngesupMbed01 28:8b5ccd2f837e 97 case 0x32 :
IngesupMbed01 28:8b5ccd2f837e 98 break;
IngesupMbed01 28:8b5ccd2f837e 99
IngesupMbed01 28:8b5ccd2f837e 100 }
IngesupMbed01 24:3462a304f9a0 101 }