Class containing functions usefull to communication between PC and Xbee device

Dependents:   Coordinator_node Router_node

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