After transmit was working, the next logical step was receiving CAN messages. This is now working, and the latest firmware is in the Github repo.
One challenge is receiving messages without dropping any. This is something I'm still playing with, but the results so far are pretty good. The device keeps up at moderately high bus loads, but the next step will be testing on a real vehicle network.
Now that the basics are done, I need to get the second CAN bus up and running. After that, I'll be writing some desktop software for dealing with the data. I'm looking at support for SocketCAN, which will allow it to interface with tools such as Wireshark easily.