Penn Electric Racing / Mbed 2 deprecated SystemManagement

Dependencies:   mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP

Fork of SystemManagement by Martin Deng

Committer:
pspatel321
Date:
Tue Jan 06 20:45:26 2015 +0000
Revision:
33:6bc82b6b62e5
Child:
34:18bcf276d3bf
Updated IDs to match AMS, added a constants.h file.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pspatel321 33:6bc82b6b62e5 1 #include "XbeeManager.h"
pspatel321 33:6bc82b6b62e5 2
pspatel321 33:6bc82b6b62e5 3 XbeeManager::XbeeManager(CANxbee* _x1, CANxbee* _x2)
pspatel321 33:6bc82b6b62e5 4 {
pspatel321 33:6bc82b6b62e5 5 x1 = _x1;
pspatel321 33:6bc82b6b62e5 6 x2 = _x2;
pspatel321 33:6bc82b6b62e5 7 alternate = false;
pspatel321 33:6bc82b6b62e5 8 extraAvail = false;
pspatel321 33:6bc82b6b62e5 9 counterX1in = 0;
pspatel321 33:6bc82b6b62e5 10 counterX2in = 0;
pspatel321 33:6bc82b6b62e5 11 counterX1out = 0;
pspatel321 33:6bc82b6b62e5 12 counterX2out = 0;
pspatel321 33:6bc82b6b62e5 13 }
pspatel321 33:6bc82b6b62e5 14
pspatel321 33:6bc82b6b62e5 15 bool XbeeManager::send(CANMessage &msg)
pspatel321 33:6bc82b6b62e5 16 {
pspatel321 33:6bc82b6b62e5 17 alternate = !alternate;
pspatel321 33:6bc82b6b62e5 18 if (alternate) {
pspatel321 33:6bc82b6b62e5 19 if (x1->send(msg)) {
pspatel321 33:6bc82b6b62e5 20 counterX1out++;
pspatel321 33:6bc82b6b62e5 21 return true;
pspatel321 33:6bc82b6b62e5 22 }
pspatel321 33:6bc82b6b62e5 23 } else {
pspatel321 33:6bc82b6b62e5 24 if (x2->send(msg)) {
pspatel321 33:6bc82b6b62e5 25 counterX2out++;
pspatel321 33:6bc82b6b62e5 26 return true;
pspatel321 33:6bc82b6b62e5 27 }
pspatel321 33:6bc82b6b62e5 28 }
pspatel321 33:6bc82b6b62e5 29 return false;
pspatel321 33:6bc82b6b62e5 30 }
pspatel321 33:6bc82b6b62e5 31
pspatel321 33:6bc82b6b62e5 32 bool XbeeManager::receive(CANMessage &msg)
pspatel321 33:6bc82b6b62e5 33 {
pspatel321 33:6bc82b6b62e5 34 if (extraAvail) {
pspatel321 33:6bc82b6b62e5 35 extraAvail = false;
pspatel321 33:6bc82b6b62e5 36 memcpy((void*)&msg, (void*)&extra, sizeof(CANMessage));
pspatel321 33:6bc82b6b62e5 37 counterX2in++;
pspatel321 33:6bc82b6b62e5 38 return true;
pspatel321 33:6bc82b6b62e5 39 }
pspatel321 33:6bc82b6b62e5 40 if (x1->receive(msg)) {
pspatel321 33:6bc82b6b62e5 41 if (x2->receive(extra)) {
pspatel321 33:6bc82b6b62e5 42 extraAvail = true;
pspatel321 33:6bc82b6b62e5 43 }
pspatel321 33:6bc82b6b62e5 44 counterX1in++;
pspatel321 33:6bc82b6b62e5 45 return true;
pspatel321 33:6bc82b6b62e5 46 } else {
pspatel321 33:6bc82b6b62e5 47 if (x2->receive(msg)) {
pspatel321 33:6bc82b6b62e5 48 counterX2in++;
pspatel321 33:6bc82b6b62e5 49 return true;
pspatel321 33:6bc82b6b62e5 50 }
pspatel321 33:6bc82b6b62e5 51 }
pspatel321 33:6bc82b6b62e5 52 return false;
pspatel321 33:6bc82b6b62e5 53 }