public static Int16 encode11bit(CANHeader header) { Int16 buffer = 0; buffer = (Int16)((buffer << 5) | 0x0); // 5 bit padding buffer = (Int16)((buffer << 11) | header.arbitrationID); return(buffer); }
public static Int32 encode29bit(CANHeader header) { Int32 buffer = 0; buffer = (buffer << 3) | 0x0; // 3 bit padding buffer = (buffer << 3) | header.priorityID; buffer = (buffer << 13) | header.arbitrationID; buffer = (buffer << 13) | header.senderID; return(buffer); }
public static CANHeader decode(Int32 _header) { CANHeader OutputHeader = new CANHeader(); if (_header < 0x800) { // 11-bit header OutputHeader.arbitrationID = (_header >> 0) & 0x7FF; } else { // 29-bit header OutputHeader.priorityID = (_header >> 26) & 0x7; OutputHeader.arbitrationID = (_header >> 13) & 0x1FFF; OutputHeader.senderID = (_header >> 0) & 0x1FFF; } return(OutputHeader); }