Projet_S5 / Mbed 2 deprecated Repo_Noeud_Mobile_refactor

Dependencies:   mbed-rtos mbed

Fork of Repo_Noeud_Mobile by Projet_S5

Committer:
Thierry19
Date:
Sat Mar 21 18:13:33 2015 +0000
Revision:
18:7b187bef18d8
Parent:
9:b8503f5ad3bd
Envoie de data dans Noeud_Mobile -> Communication ->Xbee

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pete1801 9:b8503f5ad3bd 1 #include "Xbee.h"
pete1801 9:b8503f5ad3bd 2
pete1801 9:b8503f5ad3bd 3 Xbee::Xbee()
pete1801 9:b8503f5ad3bd 4 {
pete1801 9:b8503f5ad3bd 5 PanId = 0x1337;
pete1801 9:b8503f5ad3bd 6 SetPanId(PanId);
pete1801 9:b8503f5ad3bd 7 }
pete1801 9:b8503f5ad3bd 8
pete1801 9:b8503f5ad3bd 9 Xbee::Xbee(short panId, PinName pinTx, PinName pinRx)
pete1801 9:b8503f5ad3bd 10 {
pete1801 9:b8503f5ad3bd 11 PanId = panId;
pete1801 9:b8503f5ad3bd 12 SetPanId(PanId);
pete1801 9:b8503f5ad3bd 13
pete1801 9:b8503f5ad3bd 14 this->XbeePin = new Serial(pinTx, pinRx);
pete1801 9:b8503f5ad3bd 15 }
pete1801 9:b8503f5ad3bd 16
pete1801 9:b8503f5ad3bd 17 Xbee::~Xbee()
pete1801 9:b8503f5ad3bd 18 {
pete1801 9:b8503f5ad3bd 19 }
pete1801 9:b8503f5ad3bd 20
Thierry19 18:7b187bef18d8 21
Thierry19 18:7b187bef18d8 22
pete1801 9:b8503f5ad3bd 23 //send frames to XBee (to set PanID and do the WR)
pete1801 9:b8503f5ad3bd 24 void Xbee::Envoyer(char array[], int size)
pete1801 9:b8503f5ad3bd 25 {
pete1801 9:b8503f5ad3bd 26 for(int i = 0; i < size; i++) {
pete1801 9:b8503f5ad3bd 27 XbeePin->putc(array[i]);
pete1801 9:b8503f5ad3bd 28 }
pete1801 9:b8503f5ad3bd 29 }
pete1801 9:b8503f5ad3bd 30
Thierry19 18:7b187bef18d8 31
Thierry19 18:7b187bef18d8 32
pete1801 9:b8503f5ad3bd 33 void Xbee::Recevoir()
pete1801 9:b8503f5ad3bd 34 {
pete1801 9:b8503f5ad3bd 35 Mobile_Vers_Fixe receivedData;
pete1801 9:b8503f5ad3bd 36 int index = 0;
pete1801 9:b8503f5ad3bd 37 while(true) {
pete1801 9:b8503f5ad3bd 38 if (XbeePin->readable()) {
pete1801 9:b8503f5ad3bd 39 //Start byte
pete1801 9:b8503f5ad3bd 40 if (XbeePin->getc() == 0x7E) {
pete1801 9:b8503f5ad3bd 41 //Ici va falloir compter le nombre de byte de niaiseries qui se passent avant les datas
pete1801 9:b8503f5ad3bd 42
pete1801 9:b8503f5ad3bd 43 //GantsID
pete1801 9:b8503f5ad3bd 44 receivedData.gants = XbeePin->getc();
pete1801 9:b8503f5ad3bd 45 //Accelero
pete1801 9:b8503f5ad3bd 46 while (index < 6) {
pete1801 9:b8503f5ad3bd 47 receivedData.xyz[index] = XbeePin->getc();
pete1801 9:b8503f5ad3bd 48 index++;
pete1801 9:b8503f5ad3bd 49 }
pete1801 9:b8503f5ad3bd 50 index = 0;
pete1801 9:b8503f5ad3bd 51 //Should be the byte containing the states of the flexo
pete1801 9:b8503f5ad3bd 52 receivedData.majeur = XbeePin->getc();
pete1801 9:b8503f5ad3bd 53 receivedData.index = XbeePin->getc();
pete1801 9:b8503f5ad3bd 54 receivedData.annulaire = XbeePin->getc();
pete1801 9:b8503f5ad3bd 55
pete1801 9:b8503f5ad3bd 56 //Validate end byte
pete1801 9:b8503f5ad3bd 57 if (XbeePin->getc() == 0x7E) {
pete1801 9:b8503f5ad3bd 58 message *emile = Mailbox.alloc();
pete1801 9:b8503f5ad3bd 59
pete1801 9:b8503f5ad3bd 60 // Verifier si mail pointe pas vers 0 [boite pleine]
pete1801 9:b8503f5ad3bd 61 while (emile == 0) {
pete1801 9:b8503f5ad3bd 62 wait_ms(25);
pete1801 9:b8503f5ad3bd 63 emile = Mailbox.alloc();
pete1801 9:b8503f5ad3bd 64 }
pete1801 9:b8503f5ad3bd 65 emile->donnees = receivedData;
pete1801 9:b8503f5ad3bd 66 Mailbox.put(emile);
pete1801 9:b8503f5ad3bd 67 }
pete1801 9:b8503f5ad3bd 68 }
pete1801 9:b8503f5ad3bd 69 }
pete1801 9:b8503f5ad3bd 70 }
pete1801 9:b8503f5ad3bd 71 }
pete1801 9:b8503f5ad3bd 72
pete1801 9:b8503f5ad3bd 73 //function to set the PAN ID
pete1801 9:b8503f5ad3bd 74 void Xbee::SetPanId(short panId)
pete1801 9:b8503f5ad3bd 75 {
pete1801 9:b8503f5ad3bd 76 char c1 = panId >> 8; //PAN ID char 1
pete1801 9:b8503f5ad3bd 77 char c2 = panId; //PAN ID char 2
pete1801 9:b8503f5ad3bd 78 char checksum = 0xFF - (0x08 + 0x01 + 0x49 + 0x44 + c1 + c2); //calculate checksum
pete1801 9:b8503f5ad3bd 79
pete1801 9:b8503f5ad3bd 80 //ID and WR AT Commands
pete1801 9:b8503f5ad3bd 81 char array[] = {0x7E, 0x00, 0x06, 0x08, 0x01, 0x49, 0x44, c1, c2, checksum};
pete1801 9:b8503f5ad3bd 82 char wr[] = {0x7E, 0x00, 0x04, 0x08, 0x01, 0x57, 0x52, 0x4D};
pete1801 9:b8503f5ad3bd 83
pete1801 9:b8503f5ad3bd 84 Envoyer(array, sizeof(array)); //send ID AT Command frame
pete1801 9:b8503f5ad3bd 85 Envoyer(wr, sizeof(wr)); //send WR AT Command frame
pete1801 9:b8503f5ad3bd 86 }