For getting RSSI value from xbee

Dependents:   XBeeGetRSSISampleProgram Xbee_s2_RX_versao2

Revision:
4:16396d9ec459
Parent:
2:befae843036e
Child:
5:790675fae748
--- a/XBeeGetRssi.cpp	Sat Aug 17 03:51:52 2013 +0000
+++ b/XBeeGetRssi.cpp	Sat Aug 24 04:12:49 2013 +0000
@@ -1,6 +1,6 @@
 #include "XBeeGetRssi.h"
 #include "mbed.h"
-#include <string.h>
+//#include <string.h>
 
 
 XBeeGetRssi::XBeeGetRssi(PinName tx,PinName rx){
@@ -8,71 +8,80 @@
     _rx=rx;
 }
 
-int XBeeGetRssi::get(){
-    //int message_counter=0;
-    //int rssi_counter=0;
+char XBeeGetRssi::get(int n){
+    //int judge_counter=0;
+    int judge_counter=0;
+    int rssi_counter=0;
+    int xbee_message_counter=0;
+    
     Serial pc(USBTX,USBRX); //for debugging.
     Serial _MyXbee(_tx,_rx);
     
-    _rssi=0; //initial value
+    _rssi[0]='P'; //initial value
+    _xbee_message[0]='P';//initial value;
     
     
-    pc.printf("At the first of xbee class.\r\n");
+//    pc.printf("At the first of xbee class.\r\n");
     _MyXbee.putc('T');
-    if(_MyXbee.readable()){
-        _MyXbee.getc();
-    }else{
-        pc.printf("couldn't get return message.");
-    }
-    wait(1.0);
-    _MyXbee.printf("+++"); //entering AT command mode.
-    pc.printf("sent +++\r\n");
-    wait(1.0);
-    //while(_rssi[rssi_counter]!='\0'){
-        if(_MyXbee.readable()){
-            _MyXbee.printf("ATDB\r"); //quering rssi value
-            _rssi=_MyXbee.getc();
-            //rssi_counter++;
-            pc.printf("sent ATDB!\r\n");
-        }else{
-            pc.printf("couldn't read.\r\n");
-            //_MyXbee.printf("+++");
-            //wait(1.0);
-            //pc.printf("+++ again.\r\n");
-        }
-    //}_rssi[rssi_counter]='\0'; //contain rssi value to _rssi[]
-    pc.printf("Here is class end!\r\n");
-    _MyXbee.printf("ATCN\r");
-    
-    return _rssi;
-    
-}
-
-/*void XBeeGetRssi::_rssiGetter(){
-    int message_counter=0;
-    int rssi_counter=0;
-    Serial pc(USBTX,USBRX);
-    Serial _MyXbee(_tx,_rx);
-    
-    pc.printf("got some message from xbee.\r\n");
-    while(_xbee_message[message_counter]!='\0'){
-        _xbee_message[message_counter]=_MyXbee.getc();
-        message_counter++;
-    }_xbee_message[message_counter]='\0'; //get the message from xbee.
-    pc.printf("contained some message.\r\n");
-    pc.printf(_xbee_message);
-    
-    if(strcmp(_xbee_message,"OK\r\n")==0){
-        _MyXbee.printf("ATDB\r\n"); //quering rssi value
-        while(_rssi[rssi_counter]!='\0'){
-            _rssi[rssi_counter]=_MyXbee.getc();
-            rssi_counter++;
-            pc.printf("I'm in the while loop!\r\n");
-        }_rssi[rssi_counter]='\0'; //contain rssi value to _rssi[]
-        pc.printf("Ended!\r\n");
-        _MyXbee.printf("ATCN\r\n");
-    }else{
-        pc.printf("There were some error.\r\n");
+    while(_MyXbee.readable()){
+        _xbee_message[0]=_MyXbee.getc();
     }
     
-}*/
\ No newline at end of file
+//    pc.printf("first message from xbee;%s\r\n",_xbee_message[0]);
+    wait(1.0);
+    //_MyXbee.printf("+++"); //entering AT command mode.
+    _MyXbee.putc('+');
+    wait_ms(100);
+    _MyXbee.putc('+');
+    wait_ms(100);
+    _MyXbee.putc('+');
+    wait_ms(100);
+//    pc.printf("sent +++\r\n");
+    while(_xbee_message[judge_counter++]!='\r'){
+        while(_MyXbee.readable()){
+            _xbee_message[xbee_message_counter++]=_MyXbee.getc();
+        }
+    }_xbee_message[judge_counter]='\0';
+    judge_counter=0; //reset counter for later use
+    xbee_message_counter=0; //reset counter for later use
+    
+   // while(_xbee_message[judge_counter++]!='\0'){
+//        pc.printf("got xbee message;%s\r\n",_xbee_message[xbee_message_counter++]);
+    //}
+    wait(1.0);
+    judge_counter=0;
+    xbee_message_counter=0;
+    
+    _MyXbee.putc('A');
+    wait_ms(100);
+    _MyXbee.putc('T');
+    wait_ms(100);
+    _MyXbee.putc('D');
+    wait_ms(100);
+    _MyXbee.putc('B');
+    wait_ms(100);
+    _MyXbee.putc('\r');
+    wait_ms(100);
+//    pc.printf("sent ATDB!\r\n");
+    
+    while(_rssi[judge_counter++]!='\r'){
+        while(_MyXbee.readable()){
+            _rssi[rssi_counter++]=_MyXbee.getc();
+            //rssi_counter++;
+        }
+    }//_rssi[rssi_counter]='\0'; //contain rssi value to _rssi[]
+//    pc.printf("Here is class end!\r\n");
+    
+    _MyXbee.putc('A');
+    wait_ms(100);
+    _MyXbee.putc('T');
+    wait_ms(100);
+    _MyXbee.putc('C');
+    wait_ms(100);
+    _MyXbee.putc('N');
+    wait_ms(100);
+    _MyXbee.putc('\r');
+    
+    return _rssi[n];
+    
+}
\ No newline at end of file