Libraries to support working with GMLAN - General Motors CAN BUS network in most of their vehicles between 2007-present day. Please note this is a work in progress and not guaranteed to be correct, use at your own risk! Read commit logs / subscribe to see what has been added, it's a work in progress after all ;)
Diff: GMLAN.h
- Revision:
- 0:9266fbfbef88
- Child:
- 1:9dfa8ee351a3
diff -r 000000000000 -r 9266fbfbef88 GMLAN.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GMLAN.h Tue Feb 19 17:12:53 2013 +0000 @@ -0,0 +1,59 @@ +/* +GMLAN.h - Header file for GMLAN Library + +GMLAN is a Controller Area Network Bus used in General Motors vehicles from +roughly 2007-onwards. Its purpose is to allow various Electronic Control Units +(aka ECUs) within a modern vehicle to share information and enact procedures. + +An example of this would be communication between the HU (Head unit) and the +DIC (Dashboard Information Cluster), when you adjust the volume up / down, this +is reported to the cluster to be displayed. + +It is the function of this library to "crack open" this world to allow anyone +with only as little as a few hours of C++ programming under their belt to get +started in what can sometimes seem a daunting world. + +Jason Gaunt, 18th Feb 2013 +*/ + +#ifndef GMLAN_H +#define GMLAN_H + +/* Baud rates of various services */ +#define GMLAN_BAUD_LS_NORMAL 33333 +#define GMLAN_BAUD_LS_FAST 83333 +#define GMLAN_BAUD_MS 95200 +#define GMLAN_BAUD_HS 500000 + +class CANHeader { + // Example header packet for Steering Wheel Switches: + // Hexadecimal: 0x10 0x0D 0x00 0x60 + // Binary: 00010000 00001101 00000000 01100000 + // Priority: --- + // Arbitration: -- -------- --- + // Sending ECU: ----- -------- + + private: + int priorityID, arbitrationID, senderID; + + CANHeader() { } + + public: + //// 29-bit frames + // Methods for getting / setting priority, both integers + int priority(void) { return priorityID; } + void priority(int _priority) { priorityID = _priority; } + // Method for getting / setting arbitration id aka arbid, both integers + int arbitration(void) { return arbitrationID; } + void arbitration(int _arbitration) { arbitrationID = _arbitration; } + // Method for getting / setting sender id, both integers + int sender(void) { return senderID; } + void sender(int _sender) { senderID = _sender; } + + // Function to decode a header packet and store values in respective variables + void decode(int _header); + // Function to encode stored values and return header packet as int + int encode(void); +}; + +#endif \ No newline at end of file