CANMessage is the primitive CAN message object. It supports creation, parsing, formatting of messages. Can be easily integrated with CANPort and CANQueue libraries.
Revision 3:c2a26d9d689b, committed 2019-09-20
- Comitter:
- WiredHome
- Date:
- Fri Sep 20 21:56:43 2019 +0000
- Parent:
- 2:4307b498b508
- Child:
- 4:4ba6856f7b4f
- Commit message:
- Clean up CANMessage implementation.
Changed in this revision
CANMessage.cpp | Show annotated file Show diff for this revision Revisions of this file |
CANMessage.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/CANMessage.cpp Thu Sep 19 21:46:09 2019 +0000 +++ b/CANMessage.cpp Fri Sep 20 21:56:43 2019 +0000 @@ -134,17 +134,29 @@ // 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 ", - (dir == xmt ) ? 't' : 'r', - (format == CANExtended) ? "xtd" : "nrm", - ch + 1, - id, - len); - for (int d=0; d<8; d++) { - if (d < len) - sprintf(buffer + strlen(buffer), "%02X ", data[d]); - else - strcat(buffer, " "); + if (format >= 128) { + sprintf(buffer, "%c %s %02d %8s %02X ", + (dir == xmt ) ? 't' : 'r', + "ERR", + ch + 1, + (format == 128) ? "active" : "passive", + 8); + for (int d=0; d<8; d++) { + sprintf(buffer + strlen(buffer), "%02X ", 0); + } + } else { + sprintf(buffer, "%c %s %02d %08X %02X ", + (dir == xmt ) ? 't' : 'r', + (format == CANExtended) ? "xtd" : "nrm", + ch + 1, + id, + len); + for (int d=0; d<8; d++) { + if (d < len) + sprintf(buffer + strlen(buffer), "%02X ", data[d]); + else + strcat(buffer, " "); + } } uint32_t uSec = timestamp % 1000000; // integer math is faster than float uint32_t Sec = timestamp / 1000000;
--- a/CANMessage.h Thu Sep 19 21:46:09 2019 +0000 +++ b/CANMessage.h Fri Sep 20 21:56:43 2019 +0000 @@ -47,6 +47,14 @@ /// This object is derived from CANMessage, however it adds /// a timestamp and other useful methods. /// +/// the CANMessage format element by default is: +/// - CANStandard = 0, +/// - CANExtended = 1, +/// - CANAny = 2 +/// But for certain purposes it will be convenient to use the CANmsg object, +/// which inherits CANMessage, and overload this item with additional values. +/// - Error = 128 +/// class CANmsg : public CANMessage { public: