System Management code

Dependencies:   mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP

Fork of SystemManagement by Martin Deng

Committer:
pspatel321
Date:
Fri Nov 14 06:05:59 2014 +0000
Revision:
31:7eaa5e881b56
Mostly working.  Wrote CAN in/out code.  Xbee still needs work.  My guess is that MODDMA breaks when used with RTOS.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pspatel321 31:7eaa5e881b56 1 #include "PERMessage.h"
pspatel321 31:7eaa5e881b56 2
pspatel321 31:7eaa5e881b56 3 PERMessage::PERMessage() {
pspatel321 31:7eaa5e881b56 4
pspatel321 31:7eaa5e881b56 5 }
pspatel321 31:7eaa5e881b56 6
pspatel321 31:7eaa5e881b56 7 PERMessage::PERMessage(char contentID, char deviceID, bool rtr, char length, unsigned char* data) {
pspatel321 31:7eaa5e881b56 8 dataArray[0] = contentID;
pspatel321 31:7eaa5e881b56 9 dataArray[1] = ((deviceID & 0x7) << 5) | (rtr << 4) | (length & 0xF);
pspatel321 31:7eaa5e881b56 10 for (int i = 0; i < (length & 0xF); i++) {
pspatel321 31:7eaa5e881b56 11 dataArray[i+2] = data[i];
pspatel321 31:7eaa5e881b56 12 }
pspatel321 31:7eaa5e881b56 13 }
pspatel321 31:7eaa5e881b56 14
pspatel321 31:7eaa5e881b56 15 char PERMessage::getContentID() {
pspatel321 31:7eaa5e881b56 16 return dataArray[0];
pspatel321 31:7eaa5e881b56 17 }
pspatel321 31:7eaa5e881b56 18
pspatel321 31:7eaa5e881b56 19 char PERMessage::getDeviceID() {
pspatel321 31:7eaa5e881b56 20 return (dataArray[1] >> 5) & 0x7;
pspatel321 31:7eaa5e881b56 21 }
pspatel321 31:7eaa5e881b56 22
pspatel321 31:7eaa5e881b56 23 bool PERMessage::getRTR() {
pspatel321 31:7eaa5e881b56 24 return dataArray[1] & 0x1F;
pspatel321 31:7eaa5e881b56 25 }
pspatel321 31:7eaa5e881b56 26
pspatel321 31:7eaa5e881b56 27 char PERMessage::getLength() {
pspatel321 31:7eaa5e881b56 28 return dataArray[1] & 0xF;
pspatel321 31:7eaa5e881b56 29 }
pspatel321 31:7eaa5e881b56 30
pspatel321 31:7eaa5e881b56 31 void PERMessage::getDataArray(char* buffer) {
pspatel321 31:7eaa5e881b56 32 for (int i = 0; i < getLength() + 2; i++) {
pspatel321 31:7eaa5e881b56 33 buffer[i] = dataArray[i];
pspatel321 31:7eaa5e881b56 34 }
pspatel321 31:7eaa5e881b56 35 }
pspatel321 31:7eaa5e881b56 36 bool PERMessage::setContentID(char contentID) {
pspatel321 31:7eaa5e881b56 37 dataArray[0] = contentID;
pspatel321 31:7eaa5e881b56 38 return true;
pspatel321 31:7eaa5e881b56 39 }
pspatel321 31:7eaa5e881b56 40
pspatel321 31:7eaa5e881b56 41 bool PERMessage::setDeviceID(char deviceID) {
pspatel321 31:7eaa5e881b56 42 dataArray[1] = dataArray[1] | (deviceID & 0x7) << 5;
pspatel321 31:7eaa5e881b56 43 return true;
pspatel321 31:7eaa5e881b56 44 }
pspatel321 31:7eaa5e881b56 45
pspatel321 31:7eaa5e881b56 46 bool PERMessage::setRTR(bool RTR) {
pspatel321 31:7eaa5e881b56 47 dataArray[1] = dataArray[1] | RTR << 4;
pspatel321 31:7eaa5e881b56 48 return true;
pspatel321 31:7eaa5e881b56 49 }
pspatel321 31:7eaa5e881b56 50
pspatel321 31:7eaa5e881b56 51 bool PERMessage::setLength(char length) {
pspatel321 31:7eaa5e881b56 52 dataArray[1] = dataArray[1] | length & 0xF;
pspatel321 31:7eaa5e881b56 53 return true;
pspatel321 31:7eaa5e881b56 54 }