Penn Electric Racing / Mbed 2 deprecated SystemManagement

Dependencies:   mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP

Fork of SystemManagement by Martin Deng

Revision:
33:6bc82b6b62e5
Child:
34:18bcf276d3bf
diff -r e70407021ad2 -r 6bc82b6b62e5 Libs/XbeeManager/XbeeManager.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Libs/XbeeManager/XbeeManager.cpp	Tue Jan 06 20:45:26 2015 +0000
@@ -0,0 +1,53 @@
+#include "XbeeManager.h"
+
+XbeeManager::XbeeManager(CANxbee* _x1, CANxbee* _x2)
+{
+    x1 = _x1;
+    x2 = _x2;
+    alternate = false;
+    extraAvail = false;
+    counterX1in = 0;
+    counterX2in = 0;
+    counterX1out = 0;
+    counterX2out = 0;
+}
+
+bool XbeeManager::send(CANMessage &msg)
+{
+    alternate = !alternate;
+    if (alternate) {
+        if (x1->send(msg)) {
+            counterX1out++;
+            return true;   
+        }
+    } else {
+        if (x2->send(msg)) {
+            counterX2out++;
+            return true;   
+        }
+    }
+    return false;
+}
+
+bool XbeeManager::receive(CANMessage &msg)
+{
+    if (extraAvail) {
+        extraAvail = false;
+        memcpy((void*)&msg, (void*)&extra, sizeof(CANMessage));
+        counterX2in++;
+        return true;
+    }
+    if (x1->receive(msg)) {
+        if (x2->receive(extra)) {
+            extraAvail = true;
+        }
+        counterX1in++;
+        return true;
+    } else {
+        if (x2->receive(msg)) {
+            counterX2in++;
+            return true;   
+        }
+    }
+    return false;
+}
\ No newline at end of file