For getting RSSI value from xbee

Dependents:   XBeeGetRSSISampleProgram Xbee_s2_RX_versao2

Committer:
ATKINZ117
Date:
Tue Sep 03 10:50:40 2013 +0000
Revision:
13:e2fd29cb22d7
Parent:
12:7ec2a4147b44
latest version in 20130903

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ATKINZ117 6:2e725705db90 1 /*----------------------------------------------------------
ATKINZ117 6:2e725705db90 2 20130824:Todos:improve the performance of this program.
ATKINZ117 6:2e725705db90 3 get only the rssi value.
ATKINZ117 6:2e725705db90 4
ATKINZ117 6:2e725705db90 5
ATKINZ117 6:2e725705db90 6 ----------------------------------------------------------*/
ATKINZ117 6:2e725705db90 7
ATKINZ117 0:d1ff6ea68ab2 8 #include "XBeeGetRssi.h"
ATKINZ117 0:d1ff6ea68ab2 9 #include "mbed.h"
ATKINZ117 4:16396d9ec459 10 //#include <string.h>
ATKINZ117 0:d1ff6ea68ab2 11
ATKINZ117 0:d1ff6ea68ab2 12
ATKINZ117 0:d1ff6ea68ab2 13 XBeeGetRssi::XBeeGetRssi(PinName tx,PinName rx){
ATKINZ117 0:d1ff6ea68ab2 14 _tx=tx;
ATKINZ117 0:d1ff6ea68ab2 15 _rx=rx;
ATKINZ117 0:d1ff6ea68ab2 16 }
ATKINZ117 0:d1ff6ea68ab2 17
ATKINZ117 12:7ec2a4147b44 18 char* XBeeGetRssi::_getRssi(/*int n*/){
ATKINZ117 4:16396d9ec459 19 //int judge_counter=0;
ATKINZ117 4:16396d9ec459 20 int judge_counter=0;
ATKINZ117 11:ecd033d3e211 21 int rssi_counter=2;
ATKINZ117 7:588a7745cc0e 22 //int xbee_message_counter=0;
ATKINZ117 4:16396d9ec459 23
ATKINZ117 0:d1ff6ea68ab2 24 Serial pc(USBTX,USBRX); //for debugging.
ATKINZ117 0:d1ff6ea68ab2 25 Serial _MyXbee(_tx,_rx);
ATKINZ117 0:d1ff6ea68ab2 26
ATKINZ117 11:ecd033d3e211 27 _rssi[0]='0';
ATKINZ117 11:ecd033d3e211 28 _rssi[1]='0';
ATKINZ117 11:ecd033d3e211 29
ATKINZ117 11:ecd033d3e211 30 for(int i=2;i<20;i++){
ATKINZ117 11:ecd033d3e211 31 _rssi[i]='0'; //initial value
ATKINZ117 6:2e725705db90 32 }
ATKINZ117 1:8cb27d9eec8e 33
ATKINZ117 2:befae843036e 34 _MyXbee.putc('T');
ATKINZ117 0:d1ff6ea68ab2 35
ATKINZ117 4:16396d9ec459 36 wait(1.0);
ATKINZ117 4:16396d9ec459 37 _MyXbee.putc('+');
ATKINZ117 6:2e725705db90 38 wait_ms(1);
ATKINZ117 4:16396d9ec459 39 _MyXbee.putc('+');
ATKINZ117 6:2e725705db90 40 wait_ms(1);
ATKINZ117 4:16396d9ec459 41 _MyXbee.putc('+');
ATKINZ117 6:2e725705db90 42 wait_ms(1);
ATKINZ117 7:588a7745cc0e 43
ATKINZ117 11:ecd033d3e211 44 //judge_counter=0; //reset counter for later use
ATKINZ117 7:588a7745cc0e 45
ATKINZ117 4:16396d9ec459 46 wait(1.0);
ATKINZ117 4:16396d9ec459 47
ATKINZ117 4:16396d9ec459 48 _MyXbee.putc('A');
ATKINZ117 6:2e725705db90 49 wait_ms(5);
ATKINZ117 4:16396d9ec459 50 _MyXbee.putc('T');
ATKINZ117 6:2e725705db90 51 wait_ms(10);
ATKINZ117 4:16396d9ec459 52 _MyXbee.putc('D');
ATKINZ117 6:2e725705db90 53 wait_ms(10);
ATKINZ117 4:16396d9ec459 54 _MyXbee.putc('B');
ATKINZ117 6:2e725705db90 55 wait_ms(10);
ATKINZ117 4:16396d9ec459 56 _MyXbee.putc('\r');
ATKINZ117 6:2e725705db90 57 wait_ms(10);
ATKINZ117 4:16396d9ec459 58
ATKINZ117 5:790675fae748 59 while(_rssi[judge_counter++]!='\0'){
ATKINZ117 4:16396d9ec459 60 while(_MyXbee.readable()){
ATKINZ117 4:16396d9ec459 61 _rssi[rssi_counter++]=_MyXbee.getc();
ATKINZ117 4:16396d9ec459 62 }
ATKINZ117 7:588a7745cc0e 63 }
ATKINZ117 11:ecd033d3e211 64 if(_rssi[5]=='T'){
ATKINZ117 11:ecd033d3e211 65 _rssi_address=&_rssi[9];
ATKINZ117 11:ecd033d3e211 66 }else{
ATKINZ117 11:ecd033d3e211 67 _rssi_address=&_rssi[0];
ATKINZ117 11:ecd033d3e211 68 }
ATKINZ117 4:16396d9ec459 69
ATKINZ117 4:16396d9ec459 70 _MyXbee.putc('A');
ATKINZ117 6:2e725705db90 71 wait_ms(5);
ATKINZ117 4:16396d9ec459 72 _MyXbee.putc('T');
ATKINZ117 6:2e725705db90 73 wait_ms(5);
ATKINZ117 4:16396d9ec459 74 _MyXbee.putc('C');
ATKINZ117 6:2e725705db90 75 wait_ms(5);
ATKINZ117 4:16396d9ec459 76 _MyXbee.putc('N');
ATKINZ117 6:2e725705db90 77 wait_ms(5);
ATKINZ117 4:16396d9ec459 78 _MyXbee.putc('\r');
ATKINZ117 4:16396d9ec459 79
ATKINZ117 9:eb8838ce9d65 80 return _rssi_address;
ATKINZ117 4:16396d9ec459 81
ATKINZ117 12:7ec2a4147b44 82 }
ATKINZ117 12:7ec2a4147b44 83
ATKINZ117 12:7ec2a4147b44 84 int XBeeGetRssi::getRssi(/*int n*/){
ATKINZ117 12:7ec2a4147b44 85 int _rssi_value=0;
ATKINZ117 12:7ec2a4147b44 86 _returned_rssi=_getRssi();
ATKINZ117 12:7ec2a4147b44 87
ATKINZ117 12:7ec2a4147b44 88 switch(*_returned_rssi){
ATKINZ117 12:7ec2a4147b44 89 case '0':
ATKINZ117 12:7ec2a4147b44 90 _rssi_value+=0;
ATKINZ117 12:7ec2a4147b44 91 break;
ATKINZ117 12:7ec2a4147b44 92 case '1':
ATKINZ117 12:7ec2a4147b44 93 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 94 break;
ATKINZ117 12:7ec2a4147b44 95 case '2':
ATKINZ117 12:7ec2a4147b44 96 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 97 break;
ATKINZ117 12:7ec2a4147b44 98 case '3':
ATKINZ117 12:7ec2a4147b44 99 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 100 break;
ATKINZ117 12:7ec2a4147b44 101 case '4':
ATKINZ117 12:7ec2a4147b44 102 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 103 break;
ATKINZ117 12:7ec2a4147b44 104 case '5':
ATKINZ117 12:7ec2a4147b44 105 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 106 break;
ATKINZ117 12:7ec2a4147b44 107 case '6':
ATKINZ117 12:7ec2a4147b44 108 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 109 break;
ATKINZ117 12:7ec2a4147b44 110 case '7':
ATKINZ117 12:7ec2a4147b44 111 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 112 break;
ATKINZ117 12:7ec2a4147b44 113 case '8':
ATKINZ117 12:7ec2a4147b44 114 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 115 break;
ATKINZ117 12:7ec2a4147b44 116 case '9':
ATKINZ117 12:7ec2a4147b44 117 _rssi_value+=(int)(*_returned_rssi-0x30)*16;
ATKINZ117 12:7ec2a4147b44 118 break;
ATKINZ117 12:7ec2a4147b44 119 case 'A':
ATKINZ117 12:7ec2a4147b44 120 _rssi_value+=(int)(*_returned_rssi-0x31)*16;
ATKINZ117 12:7ec2a4147b44 121 break;
ATKINZ117 12:7ec2a4147b44 122 case 'B':
ATKINZ117 12:7ec2a4147b44 123 _rssi_value+=(int)(*_returned_rssi-0x31)*16;
ATKINZ117 12:7ec2a4147b44 124 break;
ATKINZ117 12:7ec2a4147b44 125 case 'C':
ATKINZ117 12:7ec2a4147b44 126 _rssi_value+=(int)(*_returned_rssi-0x31)*16;
ATKINZ117 12:7ec2a4147b44 127 break;
ATKINZ117 12:7ec2a4147b44 128 case 'D':
ATKINZ117 12:7ec2a4147b44 129 _rssi_value+=(int)(*_returned_rssi-0x31)*16;
ATKINZ117 12:7ec2a4147b44 130 break;
ATKINZ117 12:7ec2a4147b44 131 case 'E':
ATKINZ117 12:7ec2a4147b44 132 _rssi_value+=(int)(*_returned_rssi-0x31)*16;
ATKINZ117 12:7ec2a4147b44 133 break;
ATKINZ117 12:7ec2a4147b44 134 case 'F':
ATKINZ117 12:7ec2a4147b44 135 _rssi_value+=(int)(*_returned_rssi-0x31)*16;
ATKINZ117 12:7ec2a4147b44 136 break;
ATKINZ117 13:e2fd29cb22d7 137 default:
ATKINZ117 13:e2fd29cb22d7 138 _rssi_value+=0;
ATKINZ117 13:e2fd29cb22d7 139 break;
ATKINZ117 12:7ec2a4147b44 140 }
ATKINZ117 12:7ec2a4147b44 141 switch(*(_returned_rssi+1)){
ATKINZ117 12:7ec2a4147b44 142 case '0':
ATKINZ117 12:7ec2a4147b44 143 _rssi_value+=0;
ATKINZ117 12:7ec2a4147b44 144 break;
ATKINZ117 12:7ec2a4147b44 145 case '1':
ATKINZ117 12:7ec2a4147b44 146 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 147 break;
ATKINZ117 12:7ec2a4147b44 148 case '2':
ATKINZ117 12:7ec2a4147b44 149 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 150 break;
ATKINZ117 12:7ec2a4147b44 151 case '3':
ATKINZ117 12:7ec2a4147b44 152 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 153 break;
ATKINZ117 12:7ec2a4147b44 154 case '4':
ATKINZ117 12:7ec2a4147b44 155 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 156 break;
ATKINZ117 12:7ec2a4147b44 157 case '5':
ATKINZ117 12:7ec2a4147b44 158 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 159 break;
ATKINZ117 12:7ec2a4147b44 160 case '6':
ATKINZ117 12:7ec2a4147b44 161 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 162 break;
ATKINZ117 12:7ec2a4147b44 163 case '7':
ATKINZ117 12:7ec2a4147b44 164 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 165 break;
ATKINZ117 12:7ec2a4147b44 166 case '8':
ATKINZ117 12:7ec2a4147b44 167 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 168 break;
ATKINZ117 12:7ec2a4147b44 169 case '9':
ATKINZ117 12:7ec2a4147b44 170 _rssi_value+=(int)(*(_returned_rssi+1)-0x30);
ATKINZ117 12:7ec2a4147b44 171 break;
ATKINZ117 12:7ec2a4147b44 172 case 'A':
ATKINZ117 12:7ec2a4147b44 173 _rssi_value+=(int)(*(_returned_rssi+1)-0x31);
ATKINZ117 12:7ec2a4147b44 174 break;
ATKINZ117 12:7ec2a4147b44 175 case 'B':
ATKINZ117 12:7ec2a4147b44 176 _rssi_value+=(int)(*(_returned_rssi+1)-0x31);
ATKINZ117 12:7ec2a4147b44 177 break;
ATKINZ117 12:7ec2a4147b44 178 case 'C':
ATKINZ117 12:7ec2a4147b44 179 _rssi_value+=(int)(*(_returned_rssi+1)-0x31);
ATKINZ117 12:7ec2a4147b44 180 break;
ATKINZ117 12:7ec2a4147b44 181 case 'D':
ATKINZ117 12:7ec2a4147b44 182 _rssi_value+=(int)(*(_returned_rssi+1)-0x31);
ATKINZ117 12:7ec2a4147b44 183 break;
ATKINZ117 12:7ec2a4147b44 184 case 'E':
ATKINZ117 12:7ec2a4147b44 185 _rssi_value+=(int)(*(_returned_rssi+1)-0x31);
ATKINZ117 12:7ec2a4147b44 186 break;
ATKINZ117 12:7ec2a4147b44 187 case 'F':
ATKINZ117 12:7ec2a4147b44 188 _rssi_value+=(int)(*(_returned_rssi+1)-0x31);
ATKINZ117 12:7ec2a4147b44 189 break;
ATKINZ117 13:e2fd29cb22d7 190 default:
ATKINZ117 13:e2fd29cb22d7 191 _rssi_value+=0;
ATKINZ117 13:e2fd29cb22d7 192 break;
ATKINZ117 12:7ec2a4147b44 193 }
ATKINZ117 12:7ec2a4147b44 194
ATKINZ117 12:7ec2a4147b44 195 return -1*_rssi_value;
ATKINZ117 4:16396d9ec459 196 }