System Management code
Dependencies: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
Libs/xbeeRelay/XbeeRelay.cpp@33:6bc82b6b62e5, 2015-01-06 (annotated)
- 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?
User | Revision | Line number | New 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 | } |