Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
Diff: Libs/XbeeManager/CAN-xbee/CAN-xbee.cpp
- 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
