CANMessage is the primitive CAN message object. It supports creation, parsing, formatting of messages. Can be easily integrated with CANPort and CANQueue libraries.

Files at this revision

API Documentation at this revision

Comitter:
WiredHome
Date:
Wed Aug 28 22:02:43 2019 +0000
Parent:
0:f0ce97992c5f
Child:
2:4307b498b508
Commit message:
Minor updates based on mbed version.

Changed in this revision

CANMessage.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/CANMessage.cpp	Sun Jul 15 15:15:18 2012 +0000
+++ b/CANMessage.cpp	Wed Aug 28 22:02:43 2019 +0000
@@ -20,13 +20,36 @@
 /// \li Extending timestamp to 64 bits
 ///
 #include <mbed.h>
+
 #include "CANMessage.h"
-#include "Utilities.h"      // mbed <-> Visual Studio
+#include "Utilities.h"      // missing functions...
+
+//#include "FreeRunTimer.h"
+
+static Timer timer;
+static bool timer_on;
 
-#include "FreeRunTimer.h"
+static char mytolower(char a) {
+    if (a >= 'A' && a <= 'Z')
+        return (a - 'A' + 'a');
+    else
+        return a;
+}
+
+static int mystrnicmp(const char *l, const char *r, size_t n) {
+    int result = 0;
 
-static FreeRunTimer timer;
-static bool timer_on;
+    if (n != 0) {
+        do {
+            result = mytolower(*l++) - mytolower(*r++);
+        } while ((result == 0) && (*l != '\0') && (--n > 0));
+    }
+    if (result < -1)
+        result = -1;
+    else if (result > 1)
+        result = 1;
+    return result;
+}
 
 CANmsg::CANmsg() {
     if (!timer_on) {
@@ -110,7 +133,7 @@
 }
 
 // 12345678901234567890123456789012345678901234567890123456789012345
-// r xtd 01 1CF00400 08 11 22 33 44 55 66 77 88 0    0 0012.123456
+// r xtd 01 1CF00400 08 11 22 33 44 55 66 77 88 0    0     12.123456
 void CANmsg::FormatCANMessage(char *buffer, int buflen) {
     if (buflen >= 68) {    // 63+\r+\n+\0+2spare
         sprintf(buffer, "%c %s %02d %08X %02X ",
@@ -127,7 +150,7 @@
         }
         uint32_t uSec = timestamp % 1000000;    // integer math is faster than float
         uint32_t Sec = timestamp / 1000000;
-        sprintf(buffer + strlen(buffer), "0   0 %04u.%06u", Sec, uSec);
+        sprintf(buffer + strlen(buffer), "0   0 %6u.%06u", Sec, uSec);
     } else {
         strcpy(buffer,"ERROR, buf too small");
     }