For getting RSSI value from xbee
Dependents: XBeeGetRSSISampleProgram Xbee_s2_RX_versao2
XBeeGetRssi.cpp@3:602329ee6a01, 2013-08-18 (annotated)
- Committer:
- ATKINZ117
- Date:
- Sun Aug 18 08:42:24 2013 +0000
- Revision:
- 3:602329ee6a01
- Parent:
- 2:befae843036e
latest version at 0818.but couldn't break out from the while loop
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ATKINZ117 | 0:d1ff6ea68ab2 | 1 | #include "XBeeGetRssi.h" |
ATKINZ117 | 0:d1ff6ea68ab2 | 2 | #include "mbed.h" |
ATKINZ117 | 0:d1ff6ea68ab2 | 3 | #include <string.h> |
ATKINZ117 | 0:d1ff6ea68ab2 | 4 | |
ATKINZ117 | 0:d1ff6ea68ab2 | 5 | |
ATKINZ117 | 0:d1ff6ea68ab2 | 6 | XBeeGetRssi::XBeeGetRssi(PinName tx,PinName rx){ |
ATKINZ117 | 0:d1ff6ea68ab2 | 7 | _tx=tx; |
ATKINZ117 | 0:d1ff6ea68ab2 | 8 | _rx=rx; |
ATKINZ117 | 0:d1ff6ea68ab2 | 9 | } |
ATKINZ117 | 0:d1ff6ea68ab2 | 10 | |
ATKINZ117 | 3:602329ee6a01 | 11 | char* XBeeGetRssi::get(){ |
ATKINZ117 | 3:602329ee6a01 | 12 | |
ATKINZ117 | 3:602329ee6a01 | 13 | //------------variables------------------------ |
ATKINZ117 | 3:602329ee6a01 | 14 | int message_counter=0; //for containing message from xbee. |
ATKINZ117 | 3:602329ee6a01 | 15 | int temp_counter=1; //for judging '/r' |
ATKINZ117 | 0:d1ff6ea68ab2 | 16 | Serial pc(USBTX,USBRX); //for debugging. |
ATKINZ117 | 0:d1ff6ea68ab2 | 17 | Serial _MyXbee(_tx,_rx); |
ATKINZ117 | 0:d1ff6ea68ab2 | 18 | |
ATKINZ117 | 3:602329ee6a01 | 19 | _rssi[0]='Z'; //initial value |
ATKINZ117 | 3:602329ee6a01 | 20 | _rssi[1]='Z'; |
ATKINZ117 | 3:602329ee6a01 | 21 | //------------------------------------------- |
ATKINZ117 | 2:befae843036e | 22 | |
ATKINZ117 | 3:602329ee6a01 | 23 | //----sending message to another Xbee for getting RSSI value.------------ |
ATKINZ117 | 2:befae843036e | 24 | pc.printf("At the first of xbee class.\r\n"); |
ATKINZ117 | 2:befae843036e | 25 | _MyXbee.putc('T'); |
ATKINZ117 | 2:befae843036e | 26 | if(_MyXbee.readable()){ |
ATKINZ117 | 2:befae843036e | 27 | _MyXbee.getc(); |
ATKINZ117 | 2:befae843036e | 28 | }else{ |
ATKINZ117 | 3:602329ee6a01 | 29 | pc.printf("couldn't get return message.\r\n"); |
ATKINZ117 | 2:befae843036e | 30 | } |
ATKINZ117 | 2:befae843036e | 31 | wait(1.0); |
ATKINZ117 | 3:602329ee6a01 | 32 | //-------------------------------------------- |
ATKINZ117 | 3:602329ee6a01 | 33 | |
ATKINZ117 | 3:602329ee6a01 | 34 | //_MyXbee.printf("+++"); //entering AT command mode. |
ATKINZ117 | 3:602329ee6a01 | 35 | //-----------entering AT Mode--------------- |
ATKINZ117 | 3:602329ee6a01 | 36 | for(int i=0;i<3;i++){ |
ATKINZ117 | 3:602329ee6a01 | 37 | _MyXbee.putc('+'); |
ATKINZ117 | 3:602329ee6a01 | 38 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 39 | } |
ATKINZ117 | 1:8cb27d9eec8e | 40 | pc.printf("sent +++\r\n"); |
ATKINZ117 | 3:602329ee6a01 | 41 | wait(0.9); |
ATKINZ117 | 3:602329ee6a01 | 42 | //------------------------------------------------ |
ATKINZ117 | 3:602329ee6a01 | 43 | |
ATKINZ117 | 3:602329ee6a01 | 44 | //-------------------send ATDB command----------- |
ATKINZ117 | 3:602329ee6a01 | 45 | _MyXbee.putc('A'); |
ATKINZ117 | 3:602329ee6a01 | 46 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 47 | _MyXbee.putc('T'); |
ATKINZ117 | 3:602329ee6a01 | 48 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 49 | _MyXbee.putc('D'); |
ATKINZ117 | 3:602329ee6a01 | 50 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 51 | _MyXbee.putc('B'); |
ATKINZ117 | 3:602329ee6a01 | 52 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 53 | _MyXbee.putc('\r'); |
ATKINZ117 | 3:602329ee6a01 | 54 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 55 | pc.printf("sent ATDB \r\n"); |
ATKINZ117 | 3:602329ee6a01 | 56 | //----------------------------------------------- |
ATKINZ117 | 3:602329ee6a01 | 57 | |
ATKINZ117 | 3:602329ee6a01 | 58 | //------------get RSSI value-------------------- |
ATKINZ117 | 3:602329ee6a01 | 59 | while(_rssi[temp_counter-1]!='\r'){ |
ATKINZ117 | 3:602329ee6a01 | 60 | if(_MyXbee.readable()){ |
ATKINZ117 | 3:602329ee6a01 | 61 | _rssi[message_counter]=_MyXbee.getc(); |
ATKINZ117 | 3:602329ee6a01 | 62 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 63 | message_counter++; |
ATKINZ117 | 3:602329ee6a01 | 64 | temp_counter++; |
ATKINZ117 | 3:602329ee6a01 | 65 | pc.printf("in the while loop.\r\n"); |
ATKINZ117 | 3:602329ee6a01 | 66 | }else{ |
ATKINZ117 | 3:602329ee6a01 | 67 | pc.printf("xbee isn't available.\r\n"); |
ATKINZ117 | 3:602329ee6a01 | 68 | //-----------entering AT Mode--------------- |
ATKINZ117 | 3:602329ee6a01 | 69 | for(int i=0;i<3;i++){ |
ATKINZ117 | 3:602329ee6a01 | 70 | _MyXbee.putc('+'); |
ATKINZ117 | 3:602329ee6a01 | 71 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 72 | } |
ATKINZ117 | 3:602329ee6a01 | 73 | pc.printf("sent +++\r\n"); |
ATKINZ117 | 3:602329ee6a01 | 74 | wait(0.9); |
ATKINZ117 | 3:602329ee6a01 | 75 | //------------------------------------------------ |
ATKINZ117 | 3:602329ee6a01 | 76 | } |
ATKINZ117 | 3:602329ee6a01 | 77 | } |
ATKINZ117 | 3:602329ee6a01 | 78 | //----------------------------------------------- |
ATKINZ117 | 3:602329ee6a01 | 79 | |
ATKINZ117 | 3:602329ee6a01 | 80 | /*while(_rssi[rssi_counter]!='\0'){ |
ATKINZ117 | 1:8cb27d9eec8e | 81 | if(_MyXbee.readable()){ |
ATKINZ117 | 2:befae843036e | 82 | _MyXbee.printf("ATDB\r"); //quering rssi value |
ATKINZ117 | 2:befae843036e | 83 | _rssi=_MyXbee.getc(); |
ATKINZ117 | 2:befae843036e | 84 | //rssi_counter++; |
ATKINZ117 | 2:befae843036e | 85 | pc.printf("sent ATDB!\r\n"); |
ATKINZ117 | 1:8cb27d9eec8e | 86 | }else{ |
ATKINZ117 | 1:8cb27d9eec8e | 87 | pc.printf("couldn't read.\r\n"); |
ATKINZ117 | 2:befae843036e | 88 | //_MyXbee.printf("+++"); |
ATKINZ117 | 2:befae843036e | 89 | //wait(1.0); |
ATKINZ117 | 2:befae843036e | 90 | //pc.printf("+++ again.\r\n"); |
ATKINZ117 | 0:d1ff6ea68ab2 | 91 | } |
ATKINZ117 | 3:602329ee6a01 | 92 | }_rssi[rssi_counter]='\0'; //contain rssi value to _rssi[] |
ATKINZ117 | 3:602329ee6a01 | 93 | ----------the code block above is previous ver-----------------*/ |
ATKINZ117 | 3:602329ee6a01 | 94 | |
ATKINZ117 | 2:befae843036e | 95 | pc.printf("Here is class end!\r\n"); |
ATKINZ117 | 3:602329ee6a01 | 96 | //-----------send ATCN command------------- |
ATKINZ117 | 3:602329ee6a01 | 97 | //_MyXbee.printf("ATCN\r"); |
ATKINZ117 | 3:602329ee6a01 | 98 | _MyXbee.putc('A'); |
ATKINZ117 | 3:602329ee6a01 | 99 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 100 | _MyXbee.putc('T'); |
ATKINZ117 | 3:602329ee6a01 | 101 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 102 | _MyXbee.putc('C'); |
ATKINZ117 | 3:602329ee6a01 | 103 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 104 | _MyXbee.putc('N'); |
ATKINZ117 | 3:602329ee6a01 | 105 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 106 | _MyXbee.putc('\r'); |
ATKINZ117 | 3:602329ee6a01 | 107 | wait_ms(100); |
ATKINZ117 | 3:602329ee6a01 | 108 | //----------------------------------------- |
ATKINZ117 | 1:8cb27d9eec8e | 109 | |
ATKINZ117 | 1:8cb27d9eec8e | 110 | return _rssi; |
ATKINZ117 | 1:8cb27d9eec8e | 111 | |
ATKINZ117 | 0:d1ff6ea68ab2 | 112 | } |
ATKINZ117 | 0:d1ff6ea68ab2 | 113 | |
ATKINZ117 | 1:8cb27d9eec8e | 114 | /*void XBeeGetRssi::_rssiGetter(){ |
ATKINZ117 | 0:d1ff6ea68ab2 | 115 | int message_counter=0; |
ATKINZ117 | 0:d1ff6ea68ab2 | 116 | int rssi_counter=0; |
ATKINZ117 | 0:d1ff6ea68ab2 | 117 | Serial pc(USBTX,USBRX); |
ATKINZ117 | 0:d1ff6ea68ab2 | 118 | Serial _MyXbee(_tx,_rx); |
ATKINZ117 | 0:d1ff6ea68ab2 | 119 | |
ATKINZ117 | 0:d1ff6ea68ab2 | 120 | pc.printf("got some message from xbee.\r\n"); |
ATKINZ117 | 0:d1ff6ea68ab2 | 121 | while(_xbee_message[message_counter]!='\0'){ |
ATKINZ117 | 0:d1ff6ea68ab2 | 122 | _xbee_message[message_counter]=_MyXbee.getc(); |
ATKINZ117 | 0:d1ff6ea68ab2 | 123 | message_counter++; |
ATKINZ117 | 0:d1ff6ea68ab2 | 124 | }_xbee_message[message_counter]='\0'; //get the message from xbee. |
ATKINZ117 | 1:8cb27d9eec8e | 125 | pc.printf("contained some message.\r\n"); |
ATKINZ117 | 0:d1ff6ea68ab2 | 126 | pc.printf(_xbee_message); |
ATKINZ117 | 0:d1ff6ea68ab2 | 127 | |
ATKINZ117 | 0:d1ff6ea68ab2 | 128 | if(strcmp(_xbee_message,"OK\r\n")==0){ |
ATKINZ117 | 0:d1ff6ea68ab2 | 129 | _MyXbee.printf("ATDB\r\n"); //quering rssi value |
ATKINZ117 | 0:d1ff6ea68ab2 | 130 | while(_rssi[rssi_counter]!='\0'){ |
ATKINZ117 | 0:d1ff6ea68ab2 | 131 | _rssi[rssi_counter]=_MyXbee.getc(); |
ATKINZ117 | 0:d1ff6ea68ab2 | 132 | rssi_counter++; |
ATKINZ117 | 0:d1ff6ea68ab2 | 133 | pc.printf("I'm in the while loop!\r\n"); |
ATKINZ117 | 0:d1ff6ea68ab2 | 134 | }_rssi[rssi_counter]='\0'; //contain rssi value to _rssi[] |
ATKINZ117 | 0:d1ff6ea68ab2 | 135 | pc.printf("Ended!\r\n"); |
ATKINZ117 | 0:d1ff6ea68ab2 | 136 | _MyXbee.printf("ATCN\r\n"); |
ATKINZ117 | 0:d1ff6ea68ab2 | 137 | }else{ |
ATKINZ117 | 0:d1ff6ea68ab2 | 138 | pc.printf("There were some error.\r\n"); |
ATKINZ117 | 0:d1ff6ea68ab2 | 139 | } |
ATKINZ117 | 0:d1ff6ea68ab2 | 140 | |
ATKINZ117 | 1:8cb27d9eec8e | 141 | }*/ |