My original post seemed to be thrashed pretty badly, let me revise:
[quote]
but really its almost as simple as Open, Close, Send, Receive
[/quote]
Revised:
[quote]
but really its not much more complicated then opening (including support for hardware filters), closing, sending (11-bit/29bit), and receiving (11-bit/29-bit/error frames). You should add support for error frames and such (including error passive, bus off, etc), and make sure to support hardware filtering, as well as callbacks/notifications and such.
[/quote]
I was just trying to simplify - relative to other busses, its still pretty simple to write your own driver. Adding message distribution should be left to higher layers. Power management is a given, but most of the considerations for that probably lies in the embedded code.