The project comFramework (comFramework download | SourceForge.net)
presents an open source embedded CAN stack, which covers the software
layers from CAN hardware driver (not including) up to application code.
Although not primarily designed for the Arduino board is one of the major
samples an integration with the ATmega 2560 board; an engine power display
for cars has been implemented.
The proposed CAN interface is flexible and scalable. The full scale
integration with support of complex transmission timing patterns, checksum
and sequence counter validation as shown in the Arduino power display
sample is perhaps not the best best choice for a small platform but just
using the auto-coding for message pack/unpack functions will be benefical
even on the smallest target.
The specification of the CAN network is expected as set of DBC (*.dbc)
files. A powerful and flexible code generator can render the information
in nearly arbitrary textual formats - C source code is just an example.
Meaningful samples show how to let it make data and function oriented APIs
or the mentioned CAN message pack and unpack functions.
The complete interface - concept, tools and APIs - is well documented.
Please start reading at comFramework / Wiki / Home.