Home automation using Xbee radios
Dependencies: EthernetNetIf HTTPServer RPCInterface mbed C12832_lcd
Diff: XbeeCommLib.cpp
- Revision:
- 9:4b1e3531dd00
- Parent:
- 8:e32fcca16102
- Child:
- 10:de0be690b3c0
diff -r e32fcca16102 -r 4b1e3531dd00 XbeeCommLib.cpp --- a/XbeeCommLib.cpp Mon Dec 02 22:25:29 2013 +0000 +++ b/XbeeCommLib.cpp Wed Dec 04 02:35:47 2013 +0000 @@ -118,6 +118,13 @@ if(lengthCalculated && (dataCounter == totalPacketBytes)){ //Do packet handling here... + /*printf("Printing packet - %d bytes:\n", dataCounter); + for(i = 0; i < dataCounter; i++){ + printf("%x\n", data[i]); + } + printf("End of packet\n");*/ + + //Determine source address for(i = 0; i < 4; i++){ addrHigh = addrHigh | (data[4 + i] << (3-i)*8); @@ -125,9 +132,13 @@ //Hijack this loop to initialize the analogPortNumbers array analogPortNumbers[i] = -1; - } + } + if(DEBUG) + printf("\n\nReceived packet from %x %x\n", addrHigh, addrLow); if(analogInBytes){ + if(DEBUG) + printf("Analog Data Present\n"); //Figure out where the analog bytes start if(digitalInBytes) startingPacket = 21; @@ -135,25 +146,37 @@ startingPacket = 19; //Determine how many analog inputs are active, and which pins they use +// printf("Analog inputs "); for(i = 0; i < 4; i++){ if( ((data[18] & 0xF) >> i) & 1 ){ +// printf("%d ", i); analogPortNumbers[analogCount] = i; analogCount++; } } +// printf("active\n"); + + if(DEBUG) + printf("%d Ananlog inputs total\n", analogCount); //Decode analog data and push into appropriate struct for(i = 0; i < analogCount; i++){ analogData = getAnalogVoltage(startingPacket, i, totalPacketBytes); + if(DEBUG) + printf("Analog Data Input Index %d = %f\n", analogPortNumbers[i], analogData); analogInputHandle(root, addrHigh, addrLow, analogPortNumbers[i], analogData); } } if(digitalInBytes){ - //unsigned short digitalMask = (data[16] << 8) | data[17]; + if(DEBUG) + printf("Digital Data Present\n"); +// unsigned short digitalMask = (data[16] << 8) | data[17]; unsigned short digitalData = (data[19] << 8) | data[20]; digitalInputHandle(root, addrHigh, addrLow, digitalData); + //printf("Digital Mask = %x\nDigital Data = %x\n", digitalMask, digitalData); + } dataCounter = 0;