Alexandre Lemay / Mbed 2 deprecated APP3_Coordonator

Dependencies:   mbed

Committer:
evrast
Date:
Mon Oct 02 21:58:44 2017 +0000
Revision:
1:fe18dd0ba172
Parent:
0:53817a293b39
Child:
2:ddaf240af296
new shit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evrast 0:53817a293b39 1 #include "mbed.h"
evrast 0:53817a293b39 2
evrast 0:53817a293b39 3 DigitalOut myled(LED1);
evrast 0:53817a293b39 4
evrast 1:fe18dd0ba172 5 Ticker flipper;
evrast 0:53817a293b39 6 Serial pc(USBTX, USBRX);
evrast 0:53817a293b39 7
evrast 0:53817a293b39 8 Serial xBee(p13, p14);
evrast 0:53817a293b39 9 DigitalOut reset(p8);
evrast 0:53817a293b39 10
evrast 1:fe18dd0ba172 11 const uint8_t START_DELEMITER = 0x7E;
evrast 1:fe18dd0ba172 12 const uint8_t FRAME_TYPE_AT_REQUEST = 0x17;
evrast 1:fe18dd0ba172 13 const uint8_t FRAME_ID = 0x01;
evrast 1:fe18dd0ba172 14 const uint8_t ZERO = 0x00;
evrast 1:fe18dd0ba172 15 const uint8_t APPLY_CHANGES = 0x02;
evrast 1:fe18dd0ba172 16 const uint8_t FF_CONST = 0xFF;
evrast 1:fe18dd0ba172 17 const char OPEN_LED[2] = {'D','1'};
evrast 1:fe18dd0ba172 18
evrast 1:fe18dd0ba172 19
evrast 1:fe18dd0ba172 20 bool atCommand = false;
evrast 1:fe18dd0ba172 21
evrast 1:fe18dd0ba172 22 const int TRANSMIT_REQUEST_DATA = 12;
evrast 1:fe18dd0ba172 23 uint8_t addresse_64_bit[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
evrast 1:fe18dd0ba172 24 uint8_t addresse_16_bit[2] = {0xFF,0xFE};
evrast 1:fe18dd0ba172 25
evrast 0:53817a293b39 26 uint8_t pan_id[14]={0x7E, 0x00, 0x0A, 0x08, 0x01, 0x49, 0x44, 0x46, 0x46, 0x39, 0x39, 0x31, 0x31, 0x09};
evrast 0:53817a293b39 27
evrast 1:fe18dd0ba172 28 void sendAtCommand(){
evrast 1:fe18dd0ba172 29 pc.printf("trure");
evrast 1:fe18dd0ba172 30 atCommand = true;
evrast 1:fe18dd0ba172 31 }
evrast 1:fe18dd0ba172 32
evrast 1:fe18dd0ba172 33 void sendAtCommandPaquet(const char* type){
evrast 1:fe18dd0ba172 34 uint8_t length = 0xF;
evrast 1:fe18dd0ba172 35 uint8_t paquet[25];
evrast 1:fe18dd0ba172 36 uint8_t checkSum= 0x0;
evrast 1:fe18dd0ba172 37 uint8_t LSBLength;
evrast 1:fe18dd0ba172 38 uint8_t MSBLength;
evrast 1:fe18dd0ba172 39 pc.printf("in");
evrast 1:fe18dd0ba172 40
evrast 1:fe18dd0ba172 41 LSBLength = length&0xff;
evrast 1:fe18dd0ba172 42 MSBLength = (length &0xff00) >> 8;
evrast 1:fe18dd0ba172 43
evrast 1:fe18dd0ba172 44 paquet[0] = START_DELEMITER; //start
evrast 1:fe18dd0ba172 45 paquet[1] = MSBLength; //length MSB
evrast 1:fe18dd0ba172 46 paquet[2] = LSBLength; //length LSB
evrast 1:fe18dd0ba172 47 paquet[3] = FRAME_TYPE_AT_REQUEST; //frame type
evrast 1:fe18dd0ba172 48 paquet[4] = FRAME_ID; //frame id
evrast 1:fe18dd0ba172 49 for(int i = 5; i < 13;i++) //64 bit addresse
evrast 1:fe18dd0ba172 50 {
evrast 1:fe18dd0ba172 51 paquet[i] = addresse_64_bit[i-5];
evrast 1:fe18dd0ba172 52 }
evrast 1:fe18dd0ba172 53
evrast 1:fe18dd0ba172 54 for(int i = 13; i < 15;i++) //16bit address
evrast 1:fe18dd0ba172 55 {
evrast 1:fe18dd0ba172 56 paquet[i] = addresse_16_bit[i-13];
evrast 1:fe18dd0ba172 57 }
evrast 1:fe18dd0ba172 58
evrast 1:fe18dd0ba172 59 paquet[15] = APPLY_CHANGES; //BroadCast Radius
evrast 1:fe18dd0ba172 60 paquet[16] = type[0];
evrast 1:fe18dd0ba172 61 paquet[17] = type[1];
evrast 1:fe18dd0ba172 62 paquet[18] = 0x05;
evrast 1:fe18dd0ba172 63 pc.printf("in2");
evrast 1:fe18dd0ba172 64
evrast 1:fe18dd0ba172 65 //check sum
evrast 1:fe18dd0ba172 66
evrast 1:fe18dd0ba172 67 for(int i = 3; i<length+3;i++)
evrast 1:fe18dd0ba172 68 {
evrast 1:fe18dd0ba172 69 checkSum += paquet[i];
evrast 1:fe18dd0ba172 70 }
evrast 1:fe18dd0ba172 71
evrast 1:fe18dd0ba172 72 checkSum = FF_CONST - checkSum;
evrast 1:fe18dd0ba172 73
evrast 1:fe18dd0ba172 74 paquet[length+3] = checkSum;
evrast 1:fe18dd0ba172 75
evrast 1:fe18dd0ba172 76 for(int i =0;i<length + 4;i++)
evrast 1:fe18dd0ba172 77 {
evrast 1:fe18dd0ba172 78 xBee.putc(paquet[i]);
evrast 1:fe18dd0ba172 79
evrast 1:fe18dd0ba172 80 }
evrast 1:fe18dd0ba172 81
evrast 1:fe18dd0ba172 82 }
evrast 1:fe18dd0ba172 83
evrast 1:fe18dd0ba172 84 void receiveTransmitRequest(int length,uint8_t type){
evrast 1:fe18dd0ba172 85 uint8_t data[100];
evrast 1:fe18dd0ba172 86 data[0] = type;
evrast 1:fe18dd0ba172 87 uint8_t origCheckSum;
evrast 1:fe18dd0ba172 88 uint8_t checkSum = type;
evrast 1:fe18dd0ba172 89 for (int i =1; i < length; i++)
evrast 1:fe18dd0ba172 90 {
evrast 1:fe18dd0ba172 91 data[i] = xBee.getc();
evrast 1:fe18dd0ba172 92 checkSum += data[i];
evrast 1:fe18dd0ba172 93 }
evrast 1:fe18dd0ba172 94
evrast 1:fe18dd0ba172 95 checkSum = 0xFF - checkSum;
evrast 1:fe18dd0ba172 96 origCheckSum = xBee.getc();
evrast 1:fe18dd0ba172 97
evrast 1:fe18dd0ba172 98 if(origCheckSum == checkSum){
evrast 1:fe18dd0ba172 99 for(int i = TRANSMIT_REQUEST_DATA; i <length;i++)
evrast 1:fe18dd0ba172 100 {
evrast 1:fe18dd0ba172 101 pc.printf("%x", data[i]);
evrast 1:fe18dd0ba172 102 }
evrast 1:fe18dd0ba172 103 }
evrast 1:fe18dd0ba172 104 else{
evrast 1:fe18dd0ba172 105
evrast 1:fe18dd0ba172 106 }
evrast 1:fe18dd0ba172 107
evrast 1:fe18dd0ba172 108 }
evrast 1:fe18dd0ba172 109
evrast 1:fe18dd0ba172 110
evrast 1:fe18dd0ba172 111 void receiveNewPaquet()
evrast 1:fe18dd0ba172 112 {
evrast 1:fe18dd0ba172 113 int length;
evrast 1:fe18dd0ba172 114
evrast 1:fe18dd0ba172 115 if(xBee.getc() == START_DELEMITER)
evrast 1:fe18dd0ba172 116 {
evrast 1:fe18dd0ba172 117 length = (((xBee.getc()) << 8));
evrast 1:fe18dd0ba172 118 length +=(xBee.getc());
evrast 1:fe18dd0ba172 119 uint8_t frame_type = xBee.getc();
evrast 1:fe18dd0ba172 120
evrast 1:fe18dd0ba172 121 switch (frame_type){
evrast 1:fe18dd0ba172 122 case 0x90:
evrast 1:fe18dd0ba172 123 receiveTransmitRequest(length, frame_type);
evrast 1:fe18dd0ba172 124
evrast 1:fe18dd0ba172 125
evrast 1:fe18dd0ba172 126 }
evrast 1:fe18dd0ba172 127
evrast 1:fe18dd0ba172 128
evrast 1:fe18dd0ba172 129
evrast 1:fe18dd0ba172 130
evrast 1:fe18dd0ba172 131 }
evrast 1:fe18dd0ba172 132 }
evrast 1:fe18dd0ba172 133
evrast 1:fe18dd0ba172 134
evrast 1:fe18dd0ba172 135
evrast 0:53817a293b39 136 int main() {
evrast 1:fe18dd0ba172 137 flipper.attach (&sendAtCommand,1);
evrast 0:53817a293b39 138 reset =0;
evrast 0:53817a293b39 139 wait_ms(500);
evrast 0:53817a293b39 140 reset=1;
evrast 0:53817a293b39 141 wait(1);
evrast 0:53817a293b39 142 xBee.printf("+++");
evrast 0:53817a293b39 143 wait(1);
evrast 1:fe18dd0ba172 144
evrast 0:53817a293b39 145 //
evrast 0:53817a293b39 146 // for(int i =0;i <14;i++){
evrast 0:53817a293b39 147 // xBee.putc(pan_id[i]);
evrast 0:53817a293b39 148 // }
evrast 0:53817a293b39 149
evrast 0:53817a293b39 150 while(1) {
evrast 0:53817a293b39 151
evrast 0:53817a293b39 152 if(xBee.readable()){
evrast 1:fe18dd0ba172 153 receiveNewPaquet();
evrast 1:fe18dd0ba172 154 }
evrast 1:fe18dd0ba172 155 if (atCommand){
evrast 1:fe18dd0ba172 156 atCommand = false;
evrast 1:fe18dd0ba172 157 sendAtCommandPaquet(OPEN_LED);
evrast 1:fe18dd0ba172 158 }
evrast 1:fe18dd0ba172 159
evrast 1:fe18dd0ba172 160
evrast 0:53817a293b39 161 }
evrast 0:53817a293b39 162 }
evrast 0:53817a293b39 163