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:
Wed Feb 11 23:09:57 2015 +0000
Revision:
39:ddf38df9699e
Parent:
38:8efacce315ae
Updated CAN IDs for datalogging.  Changed profile encoding.

Who changed what in which revision?

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