Duderino is a CAN and J1850 VPW (Class 2) interface.  It can be used for all typical OBD-II diagnostic tasks, and also reading and writing flash memory on a small set of controllers (currently P01/P59/E38/E67 and E40 coming soon).  More on this project as it develops.