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 ;)

Revision:
0:9266fbfbef88
Child:
3:09fdfec053cd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GMLAN.cpp	Tue Feb 19 17:12:53 2013 +0000
@@ -0,0 +1,33 @@
+/*
+GMLAN.cpp - Source 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
+*/
+
+#include "GMLAN.h"
+
+void CANHeader::decode(int _header) {
+    priorityID = (_header >> 26) & 0x7;
+    arbitrationID = (_header >> 13) & 0x1FFF;
+    senderID = (_header >> 0)  & 0x1FFF;
+}
+int CANHeader::encode(void) {
+    long int buffer = 0;
+    buffer = (buffer << 3) | 0x0; // 3 bit padding
+    buffer = (buffer << 3) | priorityID;
+    buffer = (buffer << 13) | arbitrationID;
+    buffer = (buffer << 13) | senderID;
+    return buffer;
+}
\ No newline at end of file