APP3 / Zigbee_communication

Dependents:   Coordinator_node Router_node

Revision:
14:b8d037ec02d3
Parent:
8:ba349a2eeb37
diff -r ba349a2eeb37 -r b8d037ec02d3 xbee.cpp
--- a/xbee.cpp	Tue Feb 14 04:25:55 2017 +0000
+++ b/xbee.cpp	Tue Feb 14 20:34:41 2017 +0000
@@ -1,14 +1,47 @@
 #include "xbee.h"
 
-XBee::XBee(PinName reset, PinName transfer, PinName receive, Mail<char, 250>* m) : 
+XBee::XBee(PinName reset, PinName transfer, PinName receive, Mail<char, 250>* m, Mail<char[256], 16>* w) : 
     rst(reset), comm(transfer, receive)
 {
     // Constructor
     mail = m;
+    webmail = w;
     rst = 0;
     wait(0.4);
     rst = 1;
     wait(3);    // waiting for initiation
+    buff[0] = '\0';
+}
+
+void XBee::sendBuffer()
+{
+    char *c = (char *) webmail->alloc();
+    int i = 0;
+    while(buff[i] != '\0' || i == 255)
+    {
+        c[i] = buff[i];
+        i++;
+    }
+    c[i] = '\0';
+    webmail->put((char(*)[256]) c);
+    
+    buff[0] = '\0';
+}
+
+void XBee::appendBuffer(char* c)
+{
+    int i = 0;
+    char* ptr = c;
+    //find end
+    while (buff[i] != '\0') i++;
+    
+    while (*ptr != '\0')
+    {
+        buff[i] = *ptr;
+        ptr++;
+        i++;
+    }
+    buff[i] = '\0';
 }
 
 void XBee::pcPrint(char* c)
@@ -111,7 +144,6 @@
         
         while (i < paramLen)
         {
-            mail->put(&(optionalParam)[i]);
             cmdtosend[7 + i] = (optionalParam)[i];
             i++;
         }
@@ -166,6 +198,11 @@
                 break;
             case 0x90: ZigBeeReceivePacket(len);
                 break;
+            case 0xff:
+                pcPrint("Tonight at 11. Doooom!");
+                while(comm.readable())
+                    comm.getc();
+                break;
             default: pcPrint("Please implement response of type ");
                 printHexa(type);
                 pcPrint("\r\n\0");