Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
Diff: Libs/XbeeManager/XbeeManager.cpp
- Revision:
- 33:6bc82b6b62e5
- Child:
- 34:18bcf276d3bf
--- /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
