For getting RSSI value from xbee

Dependents:   XBeeGetRSSISampleProgram Xbee_s2_RX_versao2

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?

UserRevisionLine numberNew 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 }*/