For getting RSSI value from xbee
Dependents: XBeeGetRSSISampleProgram Xbee_s2_RX_versao2
XBeeGetRssi.cpp@12:7ec2a4147b44, 2013-09-03 (annotated)
- Committer:
- ATKINZ117
- Date:
- Tue Sep 03 07:04:26 2013 +0000
- Revision:
- 12:7ec2a4147b44
- Parent:
- 11:ecd033d3e211
- Child:
- 13:e2fd29cb22d7
changed to return rssi value as int.
Who changed what in which revision?
User | Revision | Line number | New 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 | 12:7ec2a4147b44 | 137 | } |
ATKINZ117 | 12:7ec2a4147b44 | 138 | switch(*(_returned_rssi+1)){ |
ATKINZ117 | 12:7ec2a4147b44 | 139 | case '0': |
ATKINZ117 | 12:7ec2a4147b44 | 140 | _rssi_value+=0; |
ATKINZ117 | 12:7ec2a4147b44 | 141 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 142 | case '1': |
ATKINZ117 | 12:7ec2a4147b44 | 143 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 144 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 145 | case '2': |
ATKINZ117 | 12:7ec2a4147b44 | 146 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 147 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 148 | case '3': |
ATKINZ117 | 12:7ec2a4147b44 | 149 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 150 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 151 | case '4': |
ATKINZ117 | 12:7ec2a4147b44 | 152 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 153 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 154 | case '5': |
ATKINZ117 | 12:7ec2a4147b44 | 155 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 156 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 157 | case '6': |
ATKINZ117 | 12:7ec2a4147b44 | 158 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 159 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 160 | case '7': |
ATKINZ117 | 12:7ec2a4147b44 | 161 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 162 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 163 | case '8': |
ATKINZ117 | 12:7ec2a4147b44 | 164 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 165 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 166 | case '9': |
ATKINZ117 | 12:7ec2a4147b44 | 167 | _rssi_value+=(int)(*(_returned_rssi+1)-0x30); |
ATKINZ117 | 12:7ec2a4147b44 | 168 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 169 | case 'A': |
ATKINZ117 | 12:7ec2a4147b44 | 170 | _rssi_value+=(int)(*(_returned_rssi+1)-0x31); |
ATKINZ117 | 12:7ec2a4147b44 | 171 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 172 | case 'B': |
ATKINZ117 | 12:7ec2a4147b44 | 173 | _rssi_value+=(int)(*(_returned_rssi+1)-0x31); |
ATKINZ117 | 12:7ec2a4147b44 | 174 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 175 | case 'C': |
ATKINZ117 | 12:7ec2a4147b44 | 176 | _rssi_value+=(int)(*(_returned_rssi+1)-0x31); |
ATKINZ117 | 12:7ec2a4147b44 | 177 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 178 | case 'D': |
ATKINZ117 | 12:7ec2a4147b44 | 179 | _rssi_value+=(int)(*(_returned_rssi+1)-0x31); |
ATKINZ117 | 12:7ec2a4147b44 | 180 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 181 | case 'E': |
ATKINZ117 | 12:7ec2a4147b44 | 182 | _rssi_value+=(int)(*(_returned_rssi+1)-0x31); |
ATKINZ117 | 12:7ec2a4147b44 | 183 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 184 | case 'F': |
ATKINZ117 | 12:7ec2a4147b44 | 185 | _rssi_value+=(int)(*(_returned_rssi+1)-0x31); |
ATKINZ117 | 12:7ec2a4147b44 | 186 | break; |
ATKINZ117 | 12:7ec2a4147b44 | 187 | } |
ATKINZ117 | 12:7ec2a4147b44 | 188 | |
ATKINZ117 | 12:7ec2a4147b44 | 189 | return -1*_rssi_value; |
ATKINZ117 | 4:16396d9ec459 | 190 | } |