myxbee

Fork of XBEE by GDP 4

Committer:
RobinIsLeg
Date:
Tue Oct 18 03:29:46 2016 +0000
Revision:
0:8cdf90642ef6
Child:
1:ce4058bc0913
Initial Release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RobinIsLeg 0:8cdf90642ef6 1 #include "XBEE.h"
RobinIsLeg 0:8cdf90642ef6 2 #include <string>
RobinIsLeg 0:8cdf90642ef6 3 #include "SwitchCase.h"
RobinIsLeg 0:8cdf90642ef6 4
RobinIsLeg 0:8cdf90642ef6 5
RobinIsLeg 0:8cdf90642ef6 6
RobinIsLeg 0:8cdf90642ef6 7 XBEE::XBEE(Serial* SerialAddress)
RobinIsLeg 0:8cdf90642ef6 8 {
RobinIsLeg 0:8cdf90642ef6 9 //Serial fish3(PTC17, PTC16);
RobinIsLeg 0:8cdf90642ef6 10 cBuffer = new CBuffer(SerialAddress);
RobinIsLeg 0:8cdf90642ef6 11 xbeeSerial = SerialAddress;
RobinIsLeg 0:8cdf90642ef6 12
RobinIsLeg 0:8cdf90642ef6 13 }
RobinIsLeg 0:8cdf90642ef6 14
RobinIsLeg 0:8cdf90642ef6 15 bool XBEE::scanForStartBytes()
RobinIsLeg 0:8cdf90642ef6 16 {
RobinIsLeg 0:8cdf90642ef6 17 startBytes[0] = 0;
RobinIsLeg 0:8cdf90642ef6 18 startBytes[1] = 0;
RobinIsLeg 0:8cdf90642ef6 19 startBytes[2] = 0;
RobinIsLeg 0:8cdf90642ef6 20
RobinIsLeg 0:8cdf90642ef6 21 while(startBytes[0] != STARTBYTE0)
RobinIsLeg 0:8cdf90642ef6 22 {
RobinIsLeg 0:8cdf90642ef6 23 if(cBuffer->available() <=0){return false;}
RobinIsLeg 0:8cdf90642ef6 24 startBytes[0] = cBuffer->read();
RobinIsLeg 0:8cdf90642ef6 25 }
RobinIsLeg 0:8cdf90642ef6 26 if(cBuffer->available() <=0){return false;}
RobinIsLeg 0:8cdf90642ef6 27 startBytes[1] = cBuffer->read();
RobinIsLeg 0:8cdf90642ef6 28 if(startBytes[1] == STARTBYTE1)
RobinIsLeg 0:8cdf90642ef6 29 {
RobinIsLeg 0:8cdf90642ef6 30 if(cBuffer->available() <=0){return false;}
RobinIsLeg 0:8cdf90642ef6 31 startBytes[2] = cBuffer->read();
RobinIsLeg 0:8cdf90642ef6 32 }
RobinIsLeg 0:8cdf90642ef6 33
RobinIsLeg 0:8cdf90642ef6 34 if( (startBytes[0] != STARTBYTE0) || (startBytes[1] != STARTBYTE1) || (startBytes[2] != STARTBYTE2)){return false;}
RobinIsLeg 0:8cdf90642ef6 35 return true;
RobinIsLeg 0:8cdf90642ef6 36 }
RobinIsLeg 0:8cdf90642ef6 37
RobinIsLeg 0:8cdf90642ef6 38
RobinIsLeg 0:8cdf90642ef6 39 void XBEE::checkForCommand()
RobinIsLeg 0:8cdf90642ef6 40 {
RobinIsLeg 0:8cdf90642ef6 41 while(cBuffer->available() > 0)
RobinIsLeg 0:8cdf90642ef6 42 {
RobinIsLeg 0:8cdf90642ef6 43 if(scanForStartBytes() && (cBuffer->available() > 0))
RobinIsLeg 0:8cdf90642ef6 44 {
RobinIsLeg 0:8cdf90642ef6 45
RobinIsLeg 0:8cdf90642ef6 46 switchCase(cBuffer->read());
RobinIsLeg 0:8cdf90642ef6 47
RobinIsLeg 0:8cdf90642ef6 48 }
RobinIsLeg 0:8cdf90642ef6 49
RobinIsLeg 0:8cdf90642ef6 50
RobinIsLeg 0:8cdf90642ef6 51
RobinIsLeg 0:8cdf90642ef6 52 }
RobinIsLeg 0:8cdf90642ef6 53
RobinIsLeg 0:8cdf90642ef6 54 }
RobinIsLeg 0:8cdf90642ef6 55
RobinIsLeg 0:8cdf90642ef6 56 void XBEE::sendCommand(const char* info)
RobinIsLeg 0:8cdf90642ef6 57 {
RobinIsLeg 0:8cdf90642ef6 58 xbeeSerial->putc(STARTBYTE0);
RobinIsLeg 0:8cdf90642ef6 59 xbeeSerial->putc(STARTBYTE1);
RobinIsLeg 0:8cdf90642ef6 60 xbeeSerial->putc(STARTBYTE2);
RobinIsLeg 0:8cdf90642ef6 61 xbeeSerial->putc(STATUSSTRING);
RobinIsLeg 0:8cdf90642ef6 62 xbeeSerial->printf(info);
RobinIsLeg 0:8cdf90642ef6 63 }
RobinIsLeg 0:8cdf90642ef6 64 void XBEE::sendCommand(int info)
RobinIsLeg 0:8cdf90642ef6 65 {
RobinIsLeg 0:8cdf90642ef6 66 xbeeSerial->putc(STARTBYTE0);
RobinIsLeg 0:8cdf90642ef6 67 xbeeSerial->putc(STARTBYTE1);
RobinIsLeg 0:8cdf90642ef6 68 xbeeSerial->putc(STARTBYTE2);
RobinIsLeg 0:8cdf90642ef6 69 xbeeSerial->putc(STATUSSTRING);
RobinIsLeg 0:8cdf90642ef6 70 xbeeSerial->printf("%d",info);
RobinIsLeg 0:8cdf90642ef6 71 }
RobinIsLeg 0:8cdf90642ef6 72
RobinIsLeg 0:8cdf90642ef6 73 void XBEE::sendCommand(float info)
RobinIsLeg 0:8cdf90642ef6 74 {
RobinIsLeg 0:8cdf90642ef6 75 xbeeSerial->putc(STARTBYTE0);
RobinIsLeg 0:8cdf90642ef6 76 xbeeSerial->putc(STARTBYTE1);
RobinIsLeg 0:8cdf90642ef6 77 xbeeSerial->putc(STARTBYTE2);
RobinIsLeg 0:8cdf90642ef6 78 xbeeSerial->putc(STATUSSTRING);
RobinIsLeg 0:8cdf90642ef6 79 xbeeSerial->printf("%f",info);
RobinIsLeg 0:8cdf90642ef6 80 }
RobinIsLeg 0:8cdf90642ef6 81
RobinIsLeg 0:8cdf90642ef6 82 void XBEE::sendCommand(double info)
RobinIsLeg 0:8cdf90642ef6 83 {
RobinIsLeg 0:8cdf90642ef6 84 xbeeSerial->putc(STARTBYTE0);
RobinIsLeg 0:8cdf90642ef6 85 xbeeSerial->putc(STARTBYTE1);
RobinIsLeg 0:8cdf90642ef6 86 xbeeSerial->putc(STARTBYTE2);
RobinIsLeg 0:8cdf90642ef6 87 xbeeSerial->putc(STATUSSTRING);
RobinIsLeg 0:8cdf90642ef6 88 xbeeSerial->printf("%f",info);
RobinIsLeg 0:8cdf90642ef6 89 }
RobinIsLeg 0:8cdf90642ef6 90 void XBEE::sendCommand(char command, int sizeOfPayload,char payload[])
RobinIsLeg 0:8cdf90642ef6 91 {
RobinIsLeg 0:8cdf90642ef6 92 xbeeSerial->putc(STARTBYTE0);
RobinIsLeg 0:8cdf90642ef6 93 xbeeSerial->putc(STARTBYTE1);
RobinIsLeg 0:8cdf90642ef6 94 xbeeSerial->putc(STARTBYTE2);
RobinIsLeg 0:8cdf90642ef6 95 xbeeSerial->putc(command);
RobinIsLeg 0:8cdf90642ef6 96 for(int i=0; i<sizeOfPayload; i++)
RobinIsLeg 0:8cdf90642ef6 97 {
RobinIsLeg 0:8cdf90642ef6 98 xbeeSerial->putc(payload[i]);
RobinIsLeg 0:8cdf90642ef6 99 }
RobinIsLeg 0:8cdf90642ef6 100
RobinIsLeg 0:8cdf90642ef6 101 }
RobinIsLeg 0:8cdf90642ef6 102 void XBEE::sendCommand(char command)
RobinIsLeg 0:8cdf90642ef6 103 {
RobinIsLeg 0:8cdf90642ef6 104 xbeeSerial->putc(STARTBYTE0);
RobinIsLeg 0:8cdf90642ef6 105 xbeeSerial->putc(STARTBYTE1);
RobinIsLeg 0:8cdf90642ef6 106 xbeeSerial->putc(STARTBYTE2);
RobinIsLeg 0:8cdf90642ef6 107 xbeeSerial->putc(command);
RobinIsLeg 0:8cdf90642ef6 108 }
RobinIsLeg 0:8cdf90642ef6 109
RobinIsLeg 0:8cdf90642ef6 110 void XBEE::test()
RobinIsLeg 0:8cdf90642ef6 111 {
RobinIsLeg 0:8cdf90642ef6 112 while(1){
RobinIsLeg 0:8cdf90642ef6 113 if(cBuffer->available()){xbeeSerial->printf("Receiving from 101\n\r");}
RobinIsLeg 0:8cdf90642ef6 114 while(cBuffer->available() > 0){xbeeSerial->putc(cBuffer->read());}
RobinIsLeg 0:8cdf90642ef6 115 xbeeSerial->putc('A');
RobinIsLeg 0:8cdf90642ef6 116 wait(0.5);
RobinIsLeg 0:8cdf90642ef6 117 }
RobinIsLeg 0:8cdf90642ef6 118
RobinIsLeg 0:8cdf90642ef6 119
RobinIsLeg 0:8cdf90642ef6 120 }