Class containing functions usefull to communication between PC and Xbee device
Dependents: Coordinator_node Router_node
Diff: xbee.cpp
- Revision:
- 3:4c1dec78117b
- Parent:
- 2:0000443a78fe
- Child:
- 4:e8f4d41c0fbc
--- a/xbee.cpp Tue Feb 14 01:59:49 2017 +0000 +++ b/xbee.cpp Tue Feb 14 02:38:57 2017 +0000 @@ -123,6 +123,10 @@ break; case 0x8A: ModemStatus(len); break; + case 0x8B: ZigBeeTransmitStatus(len); + break; + case 0x90: ZigBeeReceivePacket(len); + break; default: pcPrint("Please implement response of type\0"); //printsHexa(type); pcPrint("\r\n\0"); @@ -199,4 +203,73 @@ { pcPrint("Checksum is wrong\r\n\0"); } +} + +void XBee::ZigBeeTransmitStatus(int len) +{ + char id = comm.getc(); + char msb = comm.getc(); + char lsb = comm.getc(); + char retry = comm.getc(); + char status = comm.getc(); + char discovery = comm.getc(); + + //pcPrint("Response to transmit id %d is : ", id); + pcPrint("Response to transmit id is : "); + + if (status == 0) + { + pcPrint("Success\r\n"); + } + else + { + switch (status){ + case 0x01 : pcPrint("MAC ACK Failure\r\n"); break; + case 0x02 : pcPrint("CCA Failure\r\n"); break; + case 0x15 : pcPrint("Invalid destination endpoint\r\n"); break; + case 0x21 : pcPrint("Network ACK Failure\r\n"); break; + case 0x22 : pcPrint("Not Joined to Network\r\n"); break; + case 0x23 : pcPrint("Self-addressed\r\n"); break; + case 0x24 : pcPrint("Address Not Found\r\n"); break; + case 0x25 : pcPrint("Route Not Found\r\n"); break; + case 0x26 : pcPrint("Broadcast source failed to hear a neighbor relay the message\r\n"); break; + case 0x2B : pcPrint("Invalid binding table index\r\n"); break; + case 0x2C : pcPrint("Resource error lack of free buffers, timers, etc.\r\n"); break; + case 0x2D : pcPrint("Attempted broadcast with APS transmission\r\n"); break; + case 0x2E : pcPrint("Attempted unicast with APS transmission, but EE=0\r\n"); break; + case 0x32 : pcPrint("Resource error lack of free buffers, timers, etc.\r\n"); break; + case 0x74 : pcPrint("Data payload too large\r\n"); break; + default : pcPrint("Unknow error ...\r\n"); break; + } + } +} + +void XBee::ZigBeeReceivePacket(int len) +{ + int i = 0; + char adresse64bit[8]; + char adresse16bit[2]; + char receiveOptions; + + while(i < 8) + { + adresse64bit[i] = comm.getc(); + i++; + } + + adresse16bit[0] = comm.getc(); + adresse16bit[1] = comm.getc(); + + receiveOptions = comm.getc(); + + pcPrint("Data received : "); + + i = 11; + while (i < len) + { + printHexa(comm.getc()); + i++; + } + + // Validate checksum TODO } \ No newline at end of file