ajout module_mouvement
Dependencies: mbed xbee_lib ADXL345_I2C IMUfilter ITG3200 Motor RangeFinder Servo mbos PID
Fork of Labo_TRSE_Drone by
Module_Communication/Module_Communication.cpp@32:119e060b45b3, 2013-04-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |