Penn Electric Racing / Mbed 2 deprecated SystemManagement

Dependencies:   mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP

Fork of SystemManagement by Martin Deng

Revision:
38:8efacce315ae
Parent:
34:18bcf276d3bf
diff -r 2207b58b9a7f -r 8efacce315ae Libs/XbeeManager/CAN-xbee/CAN-xbee.cpp
--- a/Libs/XbeeManager/CAN-xbee/CAN-xbee.cpp	Thu Jan 22 07:59:48 2015 +0000
+++ b/Libs/XbeeManager/CAN-xbee/CAN-xbee.cpp	Sat Feb 07 08:54:51 2015 +0000
@@ -10,10 +10,8 @@
     if ((msg.format == CANExtended) && ((msg.id & 0x1FFFFFFF) != msg.id)) return -1;
     
     int i = 0;
-    buff[i] = 'C';      // Start of message
-    i++;
-   /* buff[i] = (msg.format << 0) | (msg.type << 1) | ((msg.len & 0xf) << 2);     // Header byte, message info on ID size, RTR, # data bytes
-    i++;
+    buff[i++] = 'C';      // Start of message
+    buff[i++] = (msg.format << 0) | (msg.type << 1) | ((msg.len & 0xf) << 2);     // Header byte, message info on ID size, RTR, # data bytes
     if (msg.format == CANStandard) {
         buff[i++] = (msg.id & 0x0FF);               // Lower byte of ID
         buff[i++] = (msg.id & 0x700) >> 8;          // Upper byte of ID
@@ -27,7 +25,7 @@
         buff[i++] = msg.data[j];
     }
     buff[i++] = '\n';
-    */return i;
+    return i;
 }
 
 bool convert2msg(CANMessage &msg, char* buff) {
@@ -67,28 +65,20 @@
 }
 
 // Send a CAN message, first reformat it into a char array, then send over Xbees
-bool CANxbee::send(CANMessage &msg) {
+bool CANxbee::send(CANMessage &msg, unsigned int* length) {
     char buff[15];                      // Build the string-ified CAN message here
     int size = convert2array(msg, buff);
+    *length = 0;
     if (size == -1) return false;       // Bad message, string not formed
-    bool success=false;
     
-    size=1;
     int bytesLeft = serial.txBufferGetSize(0) - serial.txBufferGetCount();
-    Timer t;
     
-    // Begin thread-safe section
-    NVIC_DisableIRQ(TIMER3_IRQn);       // Timer3-->RTOS tick
-
     if (bytesLeft >= size) {
         for (int i = 0; i < size; i++) serial.putc(buff[i]);    // Send the message out
-        success = true;
+        *length = size;
+        return true;
     }
-    
-    // End thread-safe section
-    NVIC_EnableIRQ(TIMER3_IRQn);       // Timer3-->RTOS tick
-
-    return success;
+    return false;
 }
 
 // Continuously call this function in main program, when it returns true, it holds a newly received CAN message that came via Xbee