For getting RSSI value from xbee

Dependents:   XBeeGetRSSISampleProgram Xbee_s2_RX_versao2

XBeeGetRssi.cpp

Committer:
ATKINZ117
Date:
2013-08-27
Revision:
8:b1313aaddf17
Parent:
6:2e725705db90

File content as of revision 8:b1313aaddf17:

/*----------------------------------------------------------
20130824:Todos:improve the performance of this program.
get only the rssi value.


----------------------------------------------------------*/

#include "XBeeGetRssi.h"
#include "mbed.h"
//#include <string.h>


XBeeGetRssi::XBeeGetRssi(PinName tx,PinName rx){
    _tx=tx;
    _rx=rx;
}

char XBeeGetRssi::getRssi(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);
    
    for(int i=0;i<20;i++){
        _rssi[i]='^'; //initial value
        _xbee_message[i]='^';//initial value;
    }
    
//    pc.printf("At the first of xbee class.\r\n");
    _MyXbee.putc('T');
    while(_MyXbee.readable()){
        _xbee_message[0]=_MyXbee.getc();
    }
    
//    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(1);
    _MyXbee.putc('+');
    wait_ms(1);
    _MyXbee.putc('+');
    wait_ms(1);
//    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(5);
    _MyXbee.putc('T');
    wait_ms(10);
    _MyXbee.putc('D');
    wait_ms(10);
    _MyXbee.putc('B');
    wait_ms(10);
    _MyXbee.putc('\r');
    wait_ms(10);
//    pc.printf("sent ATDB!\r\n");
    
    /*while(_rssi[judge_counter++]!='\0'){
        while(_MyXbee.readable()){
            _rssi[rssi_counter++]=_MyXbee.getc();
            //rssi_counter++;
        }
    }*/
    do{
        while(_MyXbee.readable()){
            _rssi[rssi_counter++]=_MyXbee.getc();
        }
    }while(_rssi[judge_counter++]!='^');
    
    _MyXbee.putc('A');
    wait_ms(5);
    _MyXbee.putc('T');
    wait_ms(5);
    _MyXbee.putc('C');
    wait_ms(5);
    _MyXbee.putc('N');
    wait_ms(5);
    _MyXbee.putc('\r');
    
    return _rssi[n];
    
}