For getting RSSI value from xbee

Dependents:   XBeeGetRSSISampleProgram Xbee_s2_RX_versao2

Committer:
ATKINZ117
Date:
Tue Aug 06 14:29:39 2013 +0000
Revision:
0:d1ff6ea68ab2
Child:
1:8cb27d9eec8e
this is the latest version at 0806

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 0:d1ff6ea68ab2 11 char* XBeeGetRssi::get(){
ATKINZ117 0:d1ff6ea68ab2 12 /*int message_counter=0;
ATKINZ117 0:d1ff6ea68ab2 13 int rssi_counter=0;
ATKINZ117 0:d1ff6ea68ab2 14 Serial MyXbee(_tx,_rx);*/
ATKINZ117 0:d1ff6ea68ab2 15 Serial pc(USBTX,USBRX); //for debugging.
ATKINZ117 0:d1ff6ea68ab2 16 Serial _MyXbee(_tx,_rx);
ATKINZ117 0:d1ff6ea68ab2 17
ATKINZ117 0:d1ff6ea68ab2 18 pc.printf("At first.\r\n");
ATKINZ117 0:d1ff6ea68ab2 19 while(1){
ATKINZ117 0:d1ff6ea68ab2 20 _MyXbee.printf("+++"); //entering AT command mode.
ATKINZ117 0:d1ff6ea68ab2 21 pc.printf("sent +++\r\n");
ATKINZ117 0:d1ff6ea68ab2 22 _MyXbee.attach(this,&XBeeGetRssi::_rssiGetter,Serial::RxIrq);
ATKINZ117 0:d1ff6ea68ab2 23 pc.printf("waiting for xbee!\r\n");
ATKINZ117 0:d1ff6ea68ab2 24 return _rssi;
ATKINZ117 0:d1ff6ea68ab2 25 }
ATKINZ117 0:d1ff6ea68ab2 26 //MyXbee.printf("ATDB\r\n");
ATKINZ117 0:d1ff6ea68ab2 27 //wait(0.3);
ATKINZ117 0:d1ff6ea68ab2 28 /*if(MyXbee.readable()){
ATKINZ117 0:d1ff6ea68ab2 29 while(_xbee_message!='\0'){
ATKINZ117 0:d1ff6ea68ab2 30 _rssi[message_counter]=MyXbee.getc();
ATKINZ117 0:d1ff6ea68ab2 31 message_counter++;
ATKINZ117 0:d1ff6ea68ab2 32 }
ATKINZ117 0:d1ff6ea68ab2 33 }else{
ATKINZ117 0:d1ff6ea68ab2 34 pc.printf("There is no message.\r\n");
ATKINZ117 0:d1ff6ea68ab2 35 }*/
ATKINZ117 0:d1ff6ea68ab2 36 }
ATKINZ117 0:d1ff6ea68ab2 37
ATKINZ117 0:d1ff6ea68ab2 38 void XBeeGetRssi::_rssiGetter(){
ATKINZ117 0:d1ff6ea68ab2 39 int message_counter=0;
ATKINZ117 0:d1ff6ea68ab2 40 int rssi_counter=0;
ATKINZ117 0:d1ff6ea68ab2 41 Serial pc(USBTX,USBRX);
ATKINZ117 0:d1ff6ea68ab2 42 Serial _MyXbee(_tx,_rx);
ATKINZ117 0:d1ff6ea68ab2 43
ATKINZ117 0:d1ff6ea68ab2 44 pc.printf("got some message from xbee.\r\n");
ATKINZ117 0:d1ff6ea68ab2 45 while(_xbee_message[message_counter]!='\0'){
ATKINZ117 0:d1ff6ea68ab2 46 _xbee_message[message_counter]=_MyXbee.getc();
ATKINZ117 0:d1ff6ea68ab2 47 message_counter++;
ATKINZ117 0:d1ff6ea68ab2 48 }_xbee_message[message_counter]='\0'; //get the message from xbee.
ATKINZ117 0:d1ff6ea68ab2 49 pc.printf("contained OK_message.\r\n");
ATKINZ117 0:d1ff6ea68ab2 50 pc.printf(_xbee_message);
ATKINZ117 0:d1ff6ea68ab2 51
ATKINZ117 0:d1ff6ea68ab2 52 if(strcmp(_xbee_message,"OK\r\n")==0){
ATKINZ117 0:d1ff6ea68ab2 53 _MyXbee.printf("ATDB\r\n"); //quering rssi value
ATKINZ117 0:d1ff6ea68ab2 54 while(_rssi[rssi_counter]!='\0'){
ATKINZ117 0:d1ff6ea68ab2 55 _rssi[rssi_counter]=_MyXbee.getc();
ATKINZ117 0:d1ff6ea68ab2 56 rssi_counter++;
ATKINZ117 0:d1ff6ea68ab2 57 pc.printf("I'm in the while loop!\r\n");
ATKINZ117 0:d1ff6ea68ab2 58 }_rssi[rssi_counter]='\0'; //contain rssi value to _rssi[]
ATKINZ117 0:d1ff6ea68ab2 59 pc.printf("Ended!\r\n");
ATKINZ117 0:d1ff6ea68ab2 60 _MyXbee.printf("ATCN\r\n");
ATKINZ117 0:d1ff6ea68ab2 61 }else{
ATKINZ117 0:d1ff6ea68ab2 62 pc.printf("There were some error.\r\n");
ATKINZ117 0:d1ff6ea68ab2 63 }
ATKINZ117 0:d1ff6ea68ab2 64
ATKINZ117 0:d1ff6ea68ab2 65 }