System Management code

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
Parent:
31:7eaa5e881b56
Updated IDs to match AMS, added a constants.h file.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pspatel321 31:7eaa5e881b56 1 #include "XbeeRelay.h"
pspatel321 31:7eaa5e881b56 2 #include "mbed.h"
pspatel321 33:6bc82b6b62e5 3 //#include "MODDMA.h"
pspatel321 33:6bc82b6b62e5 4 //#include "MODSERIAL.h"
pspatel321 31:7eaa5e881b56 5 #include "PERMessage.h"
pspatel321 31:7eaa5e881b56 6
pspatel321 31:7eaa5e881b56 7 #define MOTORCONID 0x181
pspatel321 31:7eaa5e881b56 8 #define PCMIDLOW 0x200
pspatel321 31:7eaa5e881b56 9 #define PCMIDHIGH 0x2FF
pspatel321 31:7eaa5e881b56 10
pspatel321 31:7eaa5e881b56 11 #define MOTORCONSERIALID 0x3
pspatel321 31:7eaa5e881b56 12 #define PCMSERIALID 0x2
pspatel321 31:7eaa5e881b56 13
pspatel321 31:7eaa5e881b56 14 #define DMA_CHANNEL_XBEE_1 0
pspatel321 31:7eaa5e881b56 15 #define DMA_CHANNEL_XBEE_2 1
pspatel321 31:7eaa5e881b56 16
pspatel321 31:7eaa5e881b56 17 XbeeRelay::XbeeRelay() : Xbee_e1(p9,p10), Xbee_e2(p13,p14), counter(0) {
pspatel321 31:7eaa5e881b56 18 Xbee_e1.baud(250000);
pspatel321 31:7eaa5e881b56 19 Xbee_e2.baud(250000);
pspatel321 33:6bc82b6b62e5 20 // Xbee_e1.MODDMA(&dma);
pspatel321 33:6bc82b6b62e5 21 //Xbee_e2.MODDMA(&dma);
pspatel321 31:7eaa5e881b56 22 }
pspatel321 31:7eaa5e881b56 23
pspatel321 31:7eaa5e881b56 24 bool XbeeRelay::receive(CANMessage cm) {
pspatel321 31:7eaa5e881b56 25 this->cm = cm;
pspatel321 31:7eaa5e881b56 26
pspatel321 31:7eaa5e881b56 27 XbeeRelay::parse();
pspatel321 31:7eaa5e881b56 28 return true;//XbeeRelay::send();
pspatel321 31:7eaa5e881b56 29 }
pspatel321 31:7eaa5e881b56 30
pspatel321 31:7eaa5e881b56 31 void XbeeRelay::parseMotorCon () {
pspatel321 31:7eaa5e881b56 32 unsigned char *dataPtr = cm.data;
pspatel321 31:7eaa5e881b56 33 PERMessage pm(*dataPtr, MOTORCONSERIALID, false, cm.len - 1, (dataPtr+1));
pspatel321 31:7eaa5e881b56 34 this->pm = pm;
pspatel321 31:7eaa5e881b56 35 }
pspatel321 31:7eaa5e881b56 36
pspatel321 31:7eaa5e881b56 37 void XbeeRelay::parseNormal () {
pspatel321 31:7eaa5e881b56 38 unsigned char *dataPtr = cm.data;
pspatel321 31:7eaa5e881b56 39 PERMessage pm(cm.id & 0xFF, (cm.id & 0x700) >> 8, false, cm.len, dataPtr);
pspatel321 31:7eaa5e881b56 40 this->pm = pm;
pspatel321 31:7eaa5e881b56 41 }
pspatel321 31:7eaa5e881b56 42
pspatel321 31:7eaa5e881b56 43 void XbeeRelay::parse () {
pspatel321 31:7eaa5e881b56 44 if (cm.id == MOTORCONID) {
pspatel321 31:7eaa5e881b56 45 parseMotorCon();
pspatel321 31:7eaa5e881b56 46 } else {
pspatel321 31:7eaa5e881b56 47 parseNormal();
pspatel321 31:7eaa5e881b56 48 }
pspatel321 31:7eaa5e881b56 49 }
pspatel321 31:7eaa5e881b56 50
pspatel321 31:7eaa5e881b56 51 bool XbeeRelay::send () {
pspatel321 31:7eaa5e881b56 52 char dataarr[pm.getLength() + 2];
pspatel321 31:7eaa5e881b56 53 pm.getDataArray(dataarr);
pspatel321 31:7eaa5e881b56 54
pspatel321 33:6bc82b6b62e5 55 /* if (!dma.Enabled(DMA_CHANNEL_XBEE_1)) {
pspatel321 33:6bc82b6b62e5 56 // Xbee_e1.dmaSend(dataarr, sizeof(dataarr), DMA_CHANNEL_XBEE_1);
pspatel321 31:7eaa5e881b56 57 return true;
pspatel321 31:7eaa5e881b56 58 } else if (!dma.Enabled(DMA_CHANNEL_XBEE_2)) {
pspatel321 33:6bc82b6b62e5 59 // Xbee_e2.dmaSend(dataarr, sizeof(dataarr), DMA_CHANNEL_XBEE_2);
pspatel321 31:7eaa5e881b56 60 return true;
pspatel321 31:7eaa5e881b56 61 }
pspatel321 33:6bc82b6b62e5 62 */
pspatel321 31:7eaa5e881b56 63 return false;
pspatel321 31:7eaa5e881b56 64 }