For getting RSSI value from xbee

Dependents:   XBeeGetRSSISampleProgram Xbee_s2_RX_versao2

XBeeGetRssi.cpp

Committer:
ATKINZ117
Date:
2013-08-18
Revision:
3:602329ee6a01
Parent:
2:befae843036e

File content as of revision 3:602329ee6a01:

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


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

char* XBeeGetRssi::get(){

    //------------variables------------------------
    int message_counter=0; //for containing message from xbee.
    int temp_counter=1; //for judging '/r'
    Serial pc(USBTX,USBRX); //for debugging.
    Serial _MyXbee(_tx,_rx);
    
    _rssi[0]='Z'; //initial value
    _rssi[1]='Z';
    //-------------------------------------------
    
    //----sending message to another Xbee for getting RSSI value.------------
    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.\r\n");
    }
    wait(1.0);
    //--------------------------------------------
    
    //_MyXbee.printf("+++"); //entering AT command mode.
    //-----------entering AT Mode---------------
    for(int i=0;i<3;i++){
        _MyXbee.putc('+');
        wait_ms(100);
    }
    pc.printf("sent +++\r\n");
    wait(0.9);
    //------------------------------------------------
    
    //-------------------send ATDB command-----------
    _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");
    //-----------------------------------------------
    
    //------------get RSSI value--------------------
    while(_rssi[temp_counter-1]!='\r'){
        if(_MyXbee.readable()){
            _rssi[message_counter]=_MyXbee.getc();
            wait_ms(100);
            message_counter++;
            temp_counter++;
            pc.printf("in the while loop.\r\n");
        }else{
            pc.printf("xbee isn't available.\r\n");
            //-----------entering AT Mode---------------
            for(int i=0;i<3;i++){
                _MyXbee.putc('+');
                wait_ms(100);
            }
            pc.printf("sent +++\r\n");
            wait(0.9);
            //------------------------------------------------
        }
    }
    //-----------------------------------------------
    
    /*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[]
    ----------the code block above is previous ver-----------------*/
    
    pc.printf("Here is class end!\r\n");
    //-----------send ATCN command-------------
    //_MyXbee.printf("ATCN\r");
    _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');
    wait_ms(100);
    //-----------------------------------------
    
    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");
    }
    
}*/