Penn Electric Racing / Mbed 2 deprecated SystemManagement

Dependencies:   mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP

Fork of SystemManagement by Martin Deng

Libs/XbeeManager/XbeeManager.cpp

Committer:
pspatel321
Date:
2015-01-06
Revision:
33:6bc82b6b62e5
Child:
34:18bcf276d3bf

File content as of revision 33:6bc82b6b62e5:

#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;
}